Socket
Socket
Sign inDemoInstall

htmlbars

Package Overview
Dependencies
Maintainers
5
Versions
108
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

htmlbars - npm Package Compare versions

Comparing version 0.14.2 to 0.14.3

dist/cjs/htmlbars-runtime/node-visitor.js

6

dist/amd/htmlbars-util.amd.js

@@ -118,6 +118,6 @@ define('htmlbars-util', ['exports', './htmlbars-util/safe-string', './htmlbars-util/handlebars/utils', './htmlbars-util/namespaces', './htmlbars-util/morph-utils'], function (exports, _htmlbarsUtilSafeString, _htmlbarsUtilHandlebarsUtils, _htmlbarsUtilNamespaces, _htmlbarsUtilMorphUtils) {

exports.toString = toString;
// Sourced from lodash
// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
/*eslint-disable func-style, no-var */
exports.toString = toString;
var isFunction = function (value) {

@@ -134,6 +134,6 @@ return typeof value === 'function';

var isFunction;
exports.isFunction = isFunction;
/*eslint-enable func-style, no-var */
/* istanbul ignore next */
exports.isFunction = isFunction;
var isArray = Array.isArray || function (value) {

@@ -143,4 +143,4 @@ return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;

exports.isArray = isArray;
// Older IE versions do not directly support indexOf so we must implement our own, sadly.
exports.isArray = isArray;

@@ -147,0 +147,0 @@ function indexOf(array, value) {

@@ -566,2 +566,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,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SUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7R0FDaEQ7O0FBRUQsYUFBVyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7QUFDdkIsU0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDO0NBQzdCLENBQUM7O2tCQUVhLFNBQVMiLCJmaWxlIjoiZG9tLWhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNb3JwaCBmcm9tIFwiLi9odG1sYmFycy1ydW50aW1lL21vcnBoXCI7XG5pbXBvcnQgQXR0ck1vcnBoIGZyb20gXCIuL21vcnBoLWF0dHJcIjtcbmltcG9ydCB7XG4gIGJ1aWxkSFRNTERPTSxcbiAgc3ZnTmFtZXNwYWNlLFxuICBzdmdIVE1MSW50ZWdyYXRpb25Qb2ludHNcbn0gZnJvbSBcIi4vZG9tLWhlbHBlci9idWlsZC1odG1sLWRvbVwiO1xuaW1wb3J0IHtcbiAgYWRkQ2xhc3NlcyxcbiAgcmVtb3ZlQ2xhc3Nlc1xufSBmcm9tIFwiLi9kb20taGVscGVyL2NsYXNzZXNcIjtcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZVByb3BlcnR5XG59IGZyb20gXCIuL2RvbS1oZWxwZXIvcHJvcFwiO1xuaW1wb3J0IHsgaXNBdHRyUmVtb3ZhbFZhbHVlIH0gZnJvbSBcIi4vZG9tLWhlbHBlci9wcm9wXCI7XG5cbnZhciBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiBkb2N1bWVudDtcblxudmFyIGRlbGV0ZXNCbGFua1RleHROb2RlcyA9IGRvYyAmJiAoZnVuY3Rpb24oZG9jdW1lbnQpe1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBlbGVtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykgKTtcbiAgdmFyIGNsb25lZEVsZW1lbnQgPSBlbGVtZW50LmNsb25lTm9kZSh0cnVlKTtcbiAgcmV0dXJuIGNsb25lZEVsZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDA7XG59KShkb2MpO1xuXG52YXIgaWdub3Jlc0NoZWNrZWRBdHRyaWJ1dGUgPSBkb2MgJiYgKGZ1bmN0aW9uKGRvY3VtZW50KXtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICdjaGVja2VkJyk7XG4gIHZhciBjbG9uZWRFbGVtZW50ID0gZWxlbWVudC5jbG9uZU5vZGUoZmFsc2UpO1xuICByZXR1cm4gIWNsb25lZEVsZW1lbnQuY2hlY2tlZDtcbn0pKGRvYyk7XG5cbnZhciBjYW5SZW1vdmVTdmdWaWV3Qm94QXR0cmlidXRlID0gZG9jICYmIChkb2MuY3JlYXRlRWxlbWVudE5TID8gKGZ1bmN0aW9uKGRvY3VtZW50KXtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoc3ZnTmFtZXNwYWNlLCAnc3ZnJyk7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKCd2aWV3Qm94JywgJzAgMCAxMDAgMTAwJyk7XG4gIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd2aWV3Qm94Jyk7XG4gIHJldHVybiAhZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnKTtcbn0pKGRvYykgOiB0cnVlKTtcblxudmFyIGNhbkNsb25lID0gZG9jICYmIChmdW5jdGlvbihkb2N1bWVudCl7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJykpO1xuICBlbGVtZW50LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICcpKTtcbiAgdmFyIGNsb25lZEVsZW1lbnQgPSBlbGVtZW50LmNsb25lTm9kZSh0cnVlKTtcbiAgcmV0dXJuIGNsb25lZEVsZW1lbnQuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWUgPT09ICcgJztcbn0pKGRvYyk7XG5cbi8vIFRoaXMgaXMgbm90IHRoZSBuYW1lc3BhY2Ugb2YgdGhlIGVsZW1lbnQsIGJ1dCBvZlxuLy8gdGhlIGVsZW1lbnRzIGluc2lkZSB0aGF0IGVsZW1lbnRzLlxuZnVuY3Rpb24gaW50ZXJpb3JOYW1lc3BhY2UoZWxlbWVudCl7XG4gIGlmIChcbiAgICBlbGVtZW50ICYmXG4gICAgZWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IHN2Z05hbWVzcGFjZSAmJlxuICAgICFzdmdIVE1MSW50ZWdyYXRpb25Qb2ludHNbZWxlbWVudC50YWdOYW1lXVxuICApIHtcbiAgICByZXR1cm4gc3ZnTmFtZXNwYWNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8vIFRoZSBIVE1MIHNwZWMgYWxsb3dzIGZvciBcIm9taXR0ZWQgc3RhcnQgdGFnc1wiLiBUaGVzZSB0YWdzIGFyZSBvcHRpb25hbFxuLy8gd2hlbiB0aGVpciBpbnRlbmRlZCBjaGlsZCBpcyB0aGUgZmlyc3QgdGhpbmcgaW4gdGhlIHBhcmVudCB0YWcuIEZvclxuLy8gZXhhbXBsZSwgdGhpcyBpcyBhIHRib2R5IHN0YXJ0IHRhZzpcbi8vXG4vLyA8dGFibGU+XG4vLyAgIDx0Ym9keT5cbi8vICAgICA8dHI+XG4vL1xuLy8gVGhlIHRib2R5IG1heSBiZSBvbWl0dGVkLCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBhY2NlcHQgYW5kIHJlbmRlcjpcbi8vXG4vLyA8dGFibGU+XG4vLyAgIDx0cj5cbi8vXG4vLyBIb3dldmVyLCB0aGUgb21pdHRlZCBzdGFydCB0YWcgd2lsbCBzdGlsbCBiZSBhZGRlZCB0byB0aGUgRE9NLiBIZXJlXG4vLyB3ZSB0ZXN0IHRoZSBzdHJpbmcgYW5kIGNvbnRleHQgdG8gc2VlIGlmIHRoZSBicm93c2VyIGlzIGFib3V0IHRvXG4vLyBwZXJmb3JtIHRoaXMgY2xlYW51cC5cbi8vXG4vLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9zeW50YXguaHRtbCNvcHRpb25hbC10YWdzXG4vLyBkZXNjcmliZXMgd2hpY2ggdGFncyBhcmUgb21pdHRhYmxlLiBUaGUgc3BlYyBmb3IgdGJvZHkgYW5kIGNvbGdyb3VwXG4vLyBleHBsYWlucyB0aGlzIGJlaGF2aW9yOlxuLy9cbi8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RhYmxlcy5odG1sI3RoZS10Ym9keS1lbGVtZW50XG4vLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90YWJsZXMuaHRtbCN0aGUtY29sZ3JvdXAtZWxlbWVudFxuLy9cblxudmFyIG9taXR0ZWRTdGFydFRhZ0NoaWxkVGVzdCA9IC88KFtcXHc6XSspLztcbmZ1bmN0aW9uIGRldGVjdE9taXR0ZWRTdGFydFRhZyhzdHJpbmcsIGNvbnRleHR1YWxFbGVtZW50KXtcbiAgLy8gT21pdHRlZCBzdGFydCB0YWdzIGFyZSBvbmx5IGluc2lkZSB0YWJsZSB0YWdzLlxuICBpZiAoY29udGV4dHVhbEVsZW1lbnQudGFnTmFtZSA9PT0gJ1RBQkxFJykge1xuICAgIHZhciBvbWl0dGVkU3RhcnRUYWdDaGlsZE1hdGNoID0gb21pdHRlZFN0YXJ0VGFnQ2hpbGRUZXN0LmV4ZWMoc3RyaW5nKTtcbiAgICBpZiAob21pdHRlZFN0YXJ0VGFnQ2hpbGRNYXRjaCkge1xuICAgICAgdmFyIG9taXR0ZWRTdGFydFRhZ0NoaWxkID0gb21pdHRlZFN0YXJ0VGFnQ2hpbGRNYXRjaFsxXTtcbiAgICAgIC8vIEl0IGlzIGFscmVhZHkgYXNzZXJ0ZWQgdGhhdCB0aGUgY29udGV4dHVhbCBlbGVtZW50IGlzIGEgdGFibGVcbiAgICAgIC8vIGFuZCBub3QgdGhlIHByb3BlciBzdGFydCB0YWcuIEp1c3Qgc2VlIGlmIGEgdGFnIHdhcyBvbWl0dGVkLlxuICAgICAgcmV0dXJuIG9taXR0ZWRTdGFydFRhZ0NoaWxkID09PSAndHInIHx8XG4gICAgICAgICAgICAgb21pdHRlZFN0YXJ0VGFnQ2hpbGQgPT09ICdjb2wnO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZFNWR0RPTShodG1sLCBkb20pe1xuICB2YXIgZGl2ID0gZG9tLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBkaXYuaW5uZXJIVE1MID0gJzxzdmc+JytodG1sKyc8L3N2Zz4nO1xuICByZXR1cm4gZGl2LmZpcnN0Q2hpbGQuY2hpbGROb2Rlcztcbn1cblxudmFyIGd1aWQgPSAxO1xuXG5mdW5jdGlvbiBFbGVtZW50TW9ycGgoZWxlbWVudCwgZG9tLCBuYW1lc3BhY2UpIHtcbiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgdGhpcy5kb20gPSBkb207XG4gIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICB0aGlzLmd1aWQgPSBcImVsZW1lbnRcIiArIGd1aWQrKztcblxuICB0aGlzLnN0YXRlID0ge307XG4gIHRoaXMuaXNEaXJ0eSA9IHRydWU7XG59XG5cbi8vIHJlbmRlckFuZENsZWFudXAgY2FsbHMgYGNsZWFyYCBvbiBhbGwgaXRlbXMgaW4gdGhlIG1vcnBoIG1hcFxuLy8ganVzdCBiZWZvcmUgY2FsbGluZyBgZGVzdHJveWAgb24gdGhlIG1vcnBoLlxuLy9cbi8vIEFzIGEgZnV0dXJlIHJlZmFjdG9yIHRoaXMgY291bGQgYmUgY2hhbmdlZCB0byBzZXQgdGhlIHByb3BlcnR5XG4vLyBiYWNrIHRvIGl0cyBvcmlnaW5hbC9kZWZhdWx0IHZhbHVlLlxuRWxlbWVudE1vcnBoLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeyB9O1xuXG5FbGVtZW50TW9ycGgucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgdGhpcy5kb20gPSBudWxsO1xufTtcblxuXG4vKlxuICogQSBjbGFzcyB3cmFwcGluZyBET00gZnVuY3Rpb25zIHRvIGFkZHJlc3MgZW52aXJvbm1lbnQgY29tcGF0aWJpbGl0eSxcbiAqIG5hbWVzcGFjZXMsIGNvbnRleHR1YWwgZWxlbWVudHMgZm9yIG1vcnBoIHVuLWVzY2FwZWQgY29udGVudFxuICogaW5zZXJ0aW9uLlxuICpcbiAqIFdoZW4gZW50ZXJpbmcgYSB0ZW1wbGF0ZSwgYSBET01IZWxwZXIgc2hvdWxkIGJlIHBhc3NlZDpcbiAqXG4gKiAgIHRlbXBsYXRlKGNvbnRleHQsIHsgaG9va3M6IGhvb2tzLCBkb206IG5ldyBET01IZWxwZXIoKSB9KTtcbiAqXG4gKiBUT0RPOiBzdXBwb3J0IGZvcmVpZ25PYmplY3QgYXMgYSBwYXNzZWQgY29udGV4dHVhbCBlbGVtZW50LiBJdCBoYXNcbiAqIGEgbmFtZXNwYWNlIChzdmcpIHRoYXQgZG9lcyBub3QgbWF0Y2ggaXRzIGludGVybmFsIG5hbWVzcGFjZVxuICogKHhodG1sKS5cbiAqXG4gKiBAY2xhc3MgRE9NSGVscGVyXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7SFRNTERvY3VtZW50fSBfZG9jdW1lbnQgVGhlIGRvY3VtZW50IERPTSBtZXRob2RzIGFyZSBwcm94aWVkIHRvXG4gKi9cbmZ1bmN0aW9uIERPTUhlbHBlcihfZG9jdW1lbnQpe1xuICB0aGlzLmRvY3VtZW50ID0gX2RvY3VtZW50IHx8IGRvY3VtZW50O1xuICBpZiAoIXRoaXMuZG9jdW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGRvY3VtZW50IG9iamVjdCBtdXN0IGJlIHBhc3NlZCB0byB0aGUgRE9NSGVscGVyLCBvciBhdmFpbGFibGUgb24gdGhlIGdsb2JhbCBzY29wZVwiKTtcbiAgfVxuICB0aGlzLmNhbkNsb25lID0gY2FuQ2xvbmU7XG4gIHRoaXMubmFtZXNwYWNlID0gbnVsbDtcbn1cblxudmFyIHByb3RvdHlwZSA9IERPTUhlbHBlci5wcm90b3R5cGU7XG5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01IZWxwZXI7XG5cbnByb3RvdHlwZS5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uKGlkLCByb290Tm9kZSkge1xuICByb290Tm9kZSA9IHJvb3ROb2RlIHx8IHRoaXMuZG9jdW1lbnQ7XG4gIHJldHVybiByb290Tm9kZS5nZXRFbGVtZW50QnlJZChpZCk7XG59O1xuXG5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlID0gZnVuY3Rpb24oZWxlbWVudCwgY2hpbGRFbGVtZW50LCByZWZlcmVuY2VDaGlsZCkge1xuICByZXR1cm4gZWxlbWVudC5pbnNlcnRCZWZvcmUoY2hpbGRFbGVtZW50LCByZWZlcmVuY2VDaGlsZCk7XG59O1xuXG5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbihlbGVtZW50LCBjaGlsZEVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hpbGRFbGVtZW50KTtcbn07XG5cbnZhciBpdGVtQXQ7XG5cbi8vIEl0IGFwcGVhcnMgdGhhdCBzb21ldGltZXMsIGluIHlldCB0byBiZSBpdGVudGlmaWVkIHNjZW5hcmlvcyBQaGFudG9tSlMgMi4wXG4vLyBjcmFzaGVzIG9uIGNoaWxkTm9kZXMuaXRlbShpbmRleCksIGJ1dCB3b3JrcyBhcyBleHBlY3RlZCB3aXRoIGNoaWxkTm9kZXNbaW5kZXhdO1xuLy9cbi8vIEFsdGhvdWdoIGl0IHdvdWxkIGJlIG5pY2UgdG8gbW92ZSB0byBjaGlsZE5vZGVzW2luZGV4XSBpbiBhbGwgc2NlbmFyaW9zLFxuLy8gdGhpcyB3b3VsZCByZXF1aXJlIFNpbXBsZURPTSB0byBtYWludGFpbiB0aGUgY2hpbGROb2RlcyBhcnJheS4gVGhpcyB3b3VsZCBiZVxuLy8gcXVpdGUgY29zdGx5LCBpbiBib3RoIGRldiB0aW1lIGFuZCBydW50aW1lLlxuLy9cbi8vIFNvIGluc3RlYWQsIHdlIGNob29zZSB0aGUgYmVzdCBwb3NzaWJsZSBtZXRob2QgYW5kIGNhbGwgaXQgYSBkYXkuXG4vL1xuLypnbG9iYWwgbmF2aWdhdG9yICovXG5pZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1BoYW50b21KUycpKSB7XG4gIGl0ZW1BdCA9IGZ1bmN0aW9uKG5vZGVzLCBpbmRleCkge1xuICAgIHJldHVybiBub2Rlc1tpbmRleF07XG4gIH07XG59IGVsc2Uge1xuICBpdGVtQXQgPSBmdW5jdGlvbihub2RlcywgaW5kZXgpIHtcbiAgICByZXR1cm4gbm9kZXMuaXRlbShpbmRleCk7XG4gIH07XG59XG5cbnByb3RvdHlwZS5jaGlsZEF0ID0gZnVuY3Rpb24oZWxlbWVudCwgaW5kaWNlcykge1xuICB2YXIgY2hpbGQgPSBlbGVtZW50O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgIGNoaWxkID0gaXRlbUF0KGNoaWxkLmNoaWxkTm9kZXMsIGluZGljZXNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkO1xufTtcblxuLy8gTm90ZSB0byBhIEZlbGxvdyBJbXBsZW1lbnRvcjpcbi8vIEFoaCwgYWNjZXNzaW5nIGEgY2hpbGQgbm9kZSBhdCBhbiBpbmRleC4gU2VlbXMgbGlrZSBpdCBzaG91bGQgYmUgc28gc2ltcGxlLFxuLy8gZG9lc24ndCBpdD8gVW5mb3J0dW5hdGVseSwgdGhpcyBwYXJ0aWN1bGFyIG1ldGhvZCBoYXMgY2F1c2VkIHVzIGEgc3VycHJpc2luZ1xuLy8gYW1vdW50IG9mIHBhaW4uIEFzIHlvdSdsbCBub3RlIGJlbG93LCB0aGlzIG1ldGhvZCBoYXMgYmVlbiBtb2RpZmllZCB0byB3YWxrXG4vLyB0aGUgbGlua2VkIGxpc3Qgb2YgY2hpbGQgbm9kZXMgcmF0aGVyIHRoYW4gYWNjZXNzIHRoZSBjaGlsZCBieSBpbmRleFxuLy8gZGlyZWN0bHksIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZSB0d28gKDIpIEFQSXMgaW4gdGhlIERPTSB0aGF0IGRvIHRoaXMgZm9yIHVzLlxuLy8gSWYgeW91J3JlIHRoaW5raW5nIHRvIHlvdXJzZWxmLCBcIldoYXQgYW4gb3ZlcnNpZ2h0ISBXaGF0IGFuIG9wcG9ydHVuaXR5IHRvXG4vLyBvcHRpbWl6ZSB0aGlzIGNvZGUhXCIgdGhlbiB0byB5b3UgSSBzYXk6IHN0b3AhIEZvciBJIGhhdmUgYSB0YWxlIHRvIHRlbGwuXG4vL1xuLy8gRmlyc3QsIHRoaXMgY29kZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBzaW1wbGUtZG9tIGZvciByZW5kZXJpbmcgb24gdGhlXG4vLyBzZXJ2ZXIgd2hlcmUgdGhlcmUgaXMgbm8gcmVhbCBET00uIFByZXZpb3VzbHksIHdlIGFjY2Vzc2VkIGEgY2hpbGQgbm9kZVxuLy8gZGlyZWN0bHkgdmlhIGBlbGVtZW50LmNoaWxkTm9kZXNbaW5kZXhdYC4gV2hpbGUgd2UgKmNvdWxkKiBpbiB0aGVvcnkgZG8gYVxuLy8gZnVsbC1maWRlbGl0eSBzaW11bGF0aW9uIG9mIGEgbGl2ZSBgY2hpbGROb2Rlc2AgYXJyYXksIHRoaXMgaXMgc2xvdyxcbi8vIGNvbXBsaWNhdGVkIGFuZCBlcnJvci1wcm9uZS5cbi8vXG4vLyBcIk5vIHByb2JsZW0sXCIgd2UgdGhvdWdodCwgXCJ3ZSdsbCBqdXN0IHVzZSB0aGUgc2ltaWxhclxuLy8gYGNoaWxkTm9kZXMuaXRlbShpbmRleClgIEFQSS5cIiBUaGVuLCB3ZSBjb3VsZCBqdXN0IGltcGxlbWVudCBvdXIgb3duIGBpdGVtYFxuLy8gbWV0aG9kIGluIHNpbXBsZS1kb20gYW5kIHdhbGsgdGhlIGNoaWxkIG5vZGUgbGlua2VkIGxpc3QgdGhlcmUsIGFsbG93aW5nXG4vLyB1cyB0byByZXRhaW4gdGhlIHBlcmZvcm1hbmNlIGFkdmFudGFnZXMgb2YgdGhlIChzdXJlbHkgb3B0aW1pemVkKSBgaXRlbSgpYFxuLy8gQVBJIGluIHRoZSBicm93c2VyLlxuLy9cbi8vIFVuZm9ydHVuYXRlbHksIGFuIGVudGVycHJpc2luZyBzb3VsIG5hbWVkIFNhbXkgQWx6YWhyYW5pIGRpc2NvdmVyZWQgdGhhdCBpblxuLy8gSUU4LCBhY2Nlc3NpbmcgYW4gaXRlbSBvdXQtb2YtYm91bmRzIHZpYSBgaXRlbSgpYCBjYXVzZXMgYW4gZXhjZXB0aW9uIHdoZXJlXG4vLyBvdGhlciBicm93c2VycyByZXR1cm4gbnVsbC4gVGhpcyBuZWNlc3NpdGF0ZWQgYS4uLiBjaGVjayBvZlxuLy8gYGNoaWxkTm9kZXMubGVuZ3RoYCwgYnJpbmdpbmcgdXMgYmFjayBhcm91bmQgdG8gaGF2aW5nIHRvIHN1cHBvcnQgYVxuLy8gZnVsbC1maWRlbGl0eSBgY2hpbGROb2Rlc2AgYXJyYXkhXG4vL1xuLy8gV29yc3Qgb2YgYWxsLCBLcmlzIFNlbGRlbiBpbnZlc3RpZ2F0ZWQgaG93IGJyb3dzZXJzIGFyZSBhY3R1YWx5IGltcGxlbWVudGVkXG4vLyBhbmQgZGlzY292ZXJlZCB0aGF0IHRoZXkncmUgYWxsIGxpbmtlZCBsaXN0cyB1bmRlciB0aGUgaG9vZCBhbnl3YXkuIEFjY2Vzc2luZ1xuLy8gYGNoaWxkTm9kZXNgIHJlcXVpcmVzIHRoZW0gdG8gYWxsb2NhdGUgYSBuZXcgbGl2ZSBjb2xsZWN0aW9uIGJhY2tlZCBieSB0aGF0XG4vLyBsaW5rZWQgbGlzdCwgd2hpY2ggaXMgaXRzZWxmIGEgcmF0aGVyIGV4cGVuc2l2ZSBvcGVyYXRpb24uIE91ciBhc3N1bWVkXG4vLyBvcHRpbWl6YXRpb24gaGFkIGJhY2tmaXJlZCEgVGhhdCBpcyB0aGUgZGFuZ2VyIG9mIG1hZ2ljYWwgdGhpbmtpbmcgYWJvdXRcbi8vIHRoZSBwZXJmb3JtYW5jZSBvZiBuYXRpdmUgaW1wbGVtZW50YXRpb25zLlxuLy9cbi8vIEFuZCB0aGlzLCBteSBmcmllbmRzLCBpcyB3aHkgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBqdXN0IHdhbGtzIHRoZVxuLy8gbGlua2VkIGxpc3QsIGFzIHN1cnByaXNlZCBhcyB0aGF0IG1heSBtYWtlIHlvdS4gUGxlYXNlIGVuc3VyZSB5b3UgdW5kZXJzdGFuZFxuLy8gdGhlIGFib3ZlIGJlZm9yZSBjaGFuZ2luZyB0aGlzIGFuZCBzdWJtaXR0aW5nIGEgUFIuXG4vL1xuLy8gVG9tIERhbGUsIEphbnVhcnkgMTh0aCwgMjAxNSwgUG9ydGxhbmQgT1JcbnByb3RvdHlwZS5jaGlsZEF0SW5kZXggPSBmdW5jdGlvbihlbGVtZW50LCBpbmRleCkge1xuICB2YXIgbm9kZSA9IGVsZW1lbnQuZmlyc3RDaGlsZDtcblxuICBmb3IgKHZhciBpZHggPSAwOyBub2RlICYmIGlkeCA8IGluZGV4OyBpZHgrKykge1xuICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG5wcm90b3R5cGUuYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHRleHQpIHtcbiAgcmV0dXJuIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7XG59O1xuXG5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgU3RyaW5nKHZhbHVlKSk7XG59O1xuXG5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSkge1xuICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7XG59O1xuXG5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCBTdHJpbmcodmFsdWUpKTtcbn07XG5cbnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUyA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSkge1xuICByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpO1xufTtcblxuaWYgKGNhblJlbW92ZVN2Z1ZpZXdCb3hBdHRyaWJ1dGUpe1xuICBwcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSkge1xuICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9O1xufSBlbHNlIHtcbiAgcHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUpIHtcbiAgICBpZiAoZWxlbWVudC50YWdOYW1lID09PSAnc3ZnJyAmJiBuYW1lID09PSAndmlld0JveCcpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9XG4gIH07XG59XG5cbnByb3RvdHlwZS5zZXRQcm9wZXJ0eVN0cmljdCA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsdWUgPSBudWxsO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsICYmIChuYW1lID09PSAndmFsdWUnIHx8IG5hbWUgPT09ICd0eXBlJyB8fCBuYW1lID09PSAnc3JjJykpIHtcbiAgICB2YWx1ZSA9ICcnO1xuICB9XG5cbiAgZWxlbWVudFtuYW1lXSA9IHZhbHVlO1xufTtcblxucHJvdG90eXBlLmdldFByb3BlcnR5U3RyaWN0ID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSkge1xuICByZXR1cm4gZWxlbWVudFtuYW1lXTtcbn07XG5cbnByb3RvdHlwZS5zZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJID09PSBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoaXNBdHRyUmVtb3ZhbFZhbHVlKHZhbHVlKSkge1xuICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHsgbm9ybWFsaXplZCAsIHR5cGUgfSA9IG5vcm1hbGl6ZVByb3BlcnR5KGVsZW1lbnQsIG5hbWUpO1xuICAgIGlmICh0eXBlID09PSAncHJvcCcpIHtcbiAgICAgIGVsZW1lbnRbbm9ybWFsaXplZF0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQXR0clJlbW92YWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobmFtZXNwYWNlICYmIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMpIHtcbiAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuaWYgKGRvYyAmJiBkb2MuY3JlYXRlRWxlbWVudE5TKSB7XG4gIC8vIE9ubHkgb3B0IGludG8gbmFtZXNwYWNlIGRldGVjdGlvbiBpZiBhIGNvbnRleHR1YWxFbGVtZW50XG4gIC8vIGlzIHBhc3NlZC5cbiAgcHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbih0YWdOYW1lLCBjb250ZXh0dWFsRWxlbWVudCkge1xuICAgIHZhciBuYW1lc3BhY2UgPSB0aGlzLm5hbWVzcGFjZTtcbiAgICBpZiAoY29udGV4dHVhbEVsZW1lbnQpIHtcbiAgICAgIGlmICh0YWdOYW1lID09PSAnc3ZnJykge1xuICAgICAgICBuYW1lc3BhY2UgPSBzdmdOYW1lc3BhY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYW1lc3BhY2UgPSBpbnRlcmlvck5hbWVzcGFjZShjb250ZXh0dWFsRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZ05hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuICAgIH1cbiAgfTtcbiAgcHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCBTdHJpbmcodmFsdWUpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIHByb3RvdHlwZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24odGFnTmFtZSkge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG4gIH07XG4gIHByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOUyA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCBTdHJpbmcodmFsdWUpKTtcbiAgfTtcbn1cblxucHJvdG90eXBlLmFkZENsYXNzZXMgPSBhZGRDbGFzc2VzO1xucHJvdG90eXBlLnJlbW92ZUNsYXNzZXMgPSByZW1vdmVDbGFzc2VzO1xuXG5wcm90b3R5cGUuc2V0TmFtZXNwYWNlID0gZnVuY3Rpb24obnMpIHtcbiAgdGhpcy5uYW1lc3BhY2UgPSBucztcbn07XG5cbnByb3RvdHlwZS5kZXRlY3ROYW1lc3BhY2UgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gIHRoaXMubmFtZXNwYWNlID0gaW50ZXJpb3JOYW1lc3BhY2UoZWxlbWVudCk7XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA9IGZ1bmN0aW9uKCl7XG4gIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZSA9IGZ1bmN0aW9uKHRleHQpe1xuICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVDb21tZW50ID0gZnVuY3Rpb24odGV4dCl7XG4gIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodGV4dCk7XG59O1xuXG5wcm90b3R5cGUucmVwYWlyQ2xvbmVkTm9kZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGJsYW5rQ2hpbGRUZXh0Tm9kZXMsIGlzQ2hlY2tlZCl7XG4gIGlmIChkZWxldGVzQmxhbmtUZXh0Tm9kZXMgJiYgYmxhbmtDaGlsZFRleHROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgZm9yICh2YXIgaT0wLCBsZW49YmxhbmtDaGlsZFRleHROb2Rlcy5sZW5ndGg7aTxsZW47aSsrKXtcbiAgICAgIHZhciB0ZXh0Tm9kZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLFxuICAgICAgICAgIG9mZnNldCA9IGJsYW5rQ2hpbGRUZXh0Tm9kZXNbaV0sXG4gICAgICAgICAgYmVmb3JlID0gdGhpcy5jaGlsZEF0SW5kZXgoZWxlbWVudCwgb2Zmc2V0KTtcbiAgICAgIGlmIChiZWZvcmUpIHtcbiAgICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUodGV4dE5vZGUsIGJlZm9yZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRleHROb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGlnbm9yZXNDaGVja2VkQXR0cmlidXRlICYmIGlzQ2hlY2tlZCkge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ2NoZWNrZWQnKTtcbiAgfVxufTtcblxucHJvdG90eXBlLmNsb25lTm9kZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGRlZXApe1xuICB2YXIgY2xvbmUgPSBlbGVtZW50LmNsb25lTm9kZSghIWRlZXApO1xuICByZXR1cm4gY2xvbmU7XG59O1xuXG5wcm90b3R5cGUuQXR0ck1vcnBoQ2xhc3MgPSBBdHRyTW9ycGg7XG5cbnByb3RvdHlwZS5jcmVhdGVBdHRyTW9ycGggPSBmdW5jdGlvbihlbGVtZW50LCBhdHRyTmFtZSwgbmFtZXNwYWNlKXtcbiAgcmV0dXJuIG5ldyB0aGlzLkF0dHJNb3JwaENsYXNzKGVsZW1lbnQsIGF0dHJOYW1lLCB0aGlzLCBuYW1lc3BhY2UpO1xufTtcblxucHJvdG90eXBlLkVsZW1lbnRNb3JwaENsYXNzID0gRWxlbWVudE1vcnBoO1xuXG5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE1vcnBoID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZXNwYWNlKXtcbiAgcmV0dXJuIG5ldyB0aGlzLkVsZW1lbnRNb3JwaENsYXNzKGVsZW1lbnQsIHRoaXMsIG5hbWVzcGFjZSk7XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlVW5zYWZlQXR0ck1vcnBoID0gZnVuY3Rpb24oZWxlbWVudCwgYXR0ck5hbWUsIG5hbWVzcGFjZSl7XG4gIHZhciBtb3JwaCA9IHRoaXMuY3JlYXRlQXR0ck1vcnBoKGVsZW1lbnQsIGF0dHJOYW1lLCBuYW1lc3BhY2UpO1xuICBtb3JwaC5lc2NhcGVkID0gZmFsc2U7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbnByb3RvdHlwZS5Nb3JwaENsYXNzID0gTW9ycGg7XG5cbnByb3RvdHlwZS5jcmVhdGVNb3JwaCA9IGZ1bmN0aW9uKHBhcmVudCwgc3RhcnQsIGVuZCwgY29udGV4dHVhbEVsZW1lbnQpe1xuICBpZiAoY29udGV4dHVhbEVsZW1lbnQgJiYgY29udGV4dHVhbEVsZW1lbnQubm9kZVR5cGUgPT09IDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHBhc3MgYSBmcmFnbWVudCBhcyB0aGUgY29udGV4dHVhbCBlbGVtZW50IHRvIGNyZWF0ZU1vcnBoXCIpO1xuICB9XG5cbiAgaWYgKCFjb250ZXh0dWFsRWxlbWVudCAmJiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgY29udGV4dHVhbEVsZW1lbnQgPSBwYXJlbnQ7XG4gIH1cbiAgdmFyIG1vcnBoID0gbmV3IHRoaXMuTW9ycGhDbGFzcyh0aGlzLCBjb250ZXh0dWFsRWxlbWVudCk7XG4gIG1vcnBoLmZpcnN0Tm9kZSA9IHN0YXJ0O1xuICBtb3JwaC5sYXN0Tm9kZSA9IGVuZDtcbiAgcmV0dXJuIG1vcnBoO1xufTtcblxucHJvdG90eXBlLmNyZWF0ZUZyYWdtZW50TW9ycGggPSBmdW5jdGlvbihjb250ZXh0dWFsRWxlbWVudCkge1xuICBpZiAoY29udGV4dHVhbEVsZW1lbnQgJiYgY29udGV4dHVhbEVsZW1lbnQubm9kZVR5cGUgPT09IDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHBhc3MgYSBmcmFnbWVudCBhcyB0aGUgY29udGV4dHVhbCBlbGVtZW50IHRvIGNyZWF0ZU1vcnBoXCIpO1xuICB9XG5cbiAgdmFyIGZyYWdtZW50ID0gdGhpcy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gIHJldHVybiBNb3JwaC5jcmVhdGUodGhpcywgY29udGV4dHVhbEVsZW1lbnQsIGZyYWdtZW50KTtcbn07XG5cbnByb3RvdHlwZS5yZXBsYWNlQ29udGVudFdpdGhNb3JwaCA9IGZ1bmN0aW9uKGVsZW1lbnQpICB7XG4gIHZhciBmaXJzdENoaWxkID0gZWxlbWVudC5maXJzdENoaWxkO1xuXG4gIGlmICghZmlyc3RDaGlsZCkge1xuICAgIHZhciBjb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKTtcbiAgICB0aGlzLmFwcGVuZENoaWxkKGVsZW1lbnQsIGNvbW1lbnQpO1xuICAgIHJldHVybiBNb3JwaC5jcmVhdGUodGhpcywgZWxlbWVudCwgY29tbWVudCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG1vcnBoID0gTW9ycGguYXR0YWNoKHRoaXMsIGVsZW1lbnQsIGZpcnN0Q2hpbGQsIGVsZW1lbnQubGFzdENoaWxkKTtcbiAgICBtb3JwaC5jbGVhcigpO1xuICAgIHJldHVybiBtb3JwaDtcbiAgfVxufTtcblxucHJvdG90eXBlLmNyZWF0ZVVuc2FmZU1vcnBoID0gZnVuY3Rpb24ocGFyZW50LCBzdGFydCwgZW5kLCBjb250ZXh0dWFsRWxlbWVudCl7XG4gIHZhciBtb3JwaCA9IHRoaXMuY3JlYXRlTW9ycGgocGFyZW50LCBzdGFydCwgZW5kLCBjb250ZXh0dWFsRWxlbWVudCk7XG4gIG1vcnBoLnBhcnNlVGV4dEFzSFRNTCA9IHRydWU7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbi8vIFRoaXMgaGVscGVyIGlzIGp1c3QgdG8ga2VlcCB0aGUgdGVtcGxhdGVzIGdvb2QgbG9va2luZyxcbi8vIHBhc3NpbmcgaW50ZWdlcnMgaW5zdGVhZCBvZiBlbGVtZW50IHJlZmVyZW5jZXMuXG5wcm90b3R5cGUuY3JlYXRlTW9ycGhBdCA9IGZ1bmN0aW9uKHBhcmVudCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGNvbnRleHR1YWxFbGVtZW50KXtcbiAgdmFyIHNpbmdsZSA9IHN0YXJ0SW5kZXggPT09IGVuZEluZGV4O1xuICB2YXIgc3RhcnQgPSB0aGlzLmNoaWxkQXRJbmRleChwYXJlbnQsIHN0YXJ0SW5kZXgpO1xuICB2YXIgZW5kID0gc2luZ2xlID8gc3RhcnQgOiB0aGlzLmNoaWxkQXRJbmRleChwYXJlbnQsIGVuZEluZGV4KTtcbiAgcmV0dXJuIHRoaXMuY3JlYXRlTW9ycGgocGFyZW50LCBzdGFydCwgZW5kLCBjb250ZXh0dWFsRWxlbWVudCk7XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlVW5zYWZlTW9ycGhBdCA9IGZ1bmN0aW9uKHBhcmVudCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIHZhciBtb3JwaCA9IHRoaXMuY3JlYXRlTW9ycGhBdChwYXJlbnQsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBjb250ZXh0dWFsRWxlbWVudCk7XG4gIG1vcnBoLnBhcnNlVGV4dEFzSFRNTCA9IHRydWU7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbnByb3RvdHlwZS5pbnNlcnRNb3JwaEJlZm9yZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIHJlZmVyZW5jZUNoaWxkLCBjb250ZXh0dWFsRWxlbWVudCkge1xuICB2YXIgaW5zZXJ0aW9uID0gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKTtcbiAgZWxlbWVudC5pbnNlcnRCZWZvcmUoaW5zZXJ0aW9uLCByZWZlcmVuY2VDaGlsZCk7XG4gIHJldHVybiB0aGlzLmNyZWF0ZU1vcnBoKGVsZW1lbnQsIGluc2VydGlvbiwgaW5zZXJ0aW9uLCBjb250ZXh0dWFsRWxlbWVudCk7XG59O1xuXG5wcm90b3R5cGUuYXBwZW5kTW9ycGggPSBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0dWFsRWxlbWVudCkge1xuICB2YXIgaW5zZXJ0aW9uID0gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKTtcbiAgZWxlbWVudC5hcHBlbmRDaGlsZChpbnNlcnRpb24pO1xuICByZXR1cm4gdGhpcy5jcmVhdGVNb3JwaChlbGVtZW50LCBpbnNlcnRpb24sIGluc2VydGlvbiwgY29udGV4dHVhbEVsZW1lbnQpO1xufTtcblxucHJvdG90eXBlLmluc2VydEJvdW5kYXJ5ID0gZnVuY3Rpb24oZnJhZ21lbnQsIGluZGV4KSB7XG4gIC8vIHRoaXMgd2lsbCBhbHdheXMgYmUgbnVsbCBvciBmaXJzdENoaWxkXG4gIHZhciBjaGlsZCA9IGluZGV4ID09PSBudWxsID8gbnVsbCA6IHRoaXMuY2hpbGRBdEluZGV4KGZyYWdtZW50LCBpbmRleCk7XG4gIHRoaXMuaW5zZXJ0QmVmb3JlKGZyYWdtZW50LCB0aGlzLmNyZWF0ZVRleHROb2RlKCcnKSwgY2hpbGQpO1xufTtcblxucHJvdG90eXBlLnNldE1vcnBoSFRNTCA9IGZ1bmN0aW9uKG1vcnBoLCBodG1sKSB7XG4gIG1vcnBoLnNldEhUTUwoaHRtbCk7XG59O1xuXG5wcm90b3R5cGUucGFyc2VIVE1MID0gZnVuY3Rpb24oaHRtbCwgY29udGV4dHVhbEVsZW1lbnQpIHtcbiAgdmFyIGNoaWxkTm9kZXM7XG5cbiAgaWYgKGludGVyaW9yTmFtZXNwYWNlKGNvbnRleHR1YWxFbGVtZW50KSA9PT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgY2hpbGROb2RlcyA9IGJ1aWxkU1ZHRE9NKGh0bWwsIHRoaXMpO1xuICB9IGVsc2Uge1xuICAgIHZhciBub2RlcyA9IGJ1aWxkSFRNTERPTShodG1sLCBjb250ZXh0dWFsRWxlbWVudCwgdGhpcyk7XG4gICAgaWYgKGRldGVjdE9taXR0ZWRTdGFydFRhZyhodG1sLCBjb250ZXh0dWFsRWxlbWVudCkpIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbMF07XG4gICAgICB3aGlsZSAobm9kZSAmJiBub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgICAgY2hpbGROb2RlcyA9IG5vZGUuY2hpbGROb2RlcztcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGROb2RlcyA9IG5vZGVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgbm9kZSBsaXN0IHRvIGEgZnJhZ21lbnQuXG4gIHZhciBmcmFnbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gIGlmIChjaGlsZE5vZGVzICYmIGNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgIHZhciBjdXJyZW50Tm9kZSA9IGNoaWxkTm9kZXNbMF07XG5cbiAgICAvLyBXZSBwcmVwZW5kIGFuIDxvcHRpb24+IHRvIDxzZWxlY3Q+IGJveGVzIHRvIGFic29yYiBhbnkgYnJvd3NlciBidWdzXG4gICAgLy8gcmVsYXRlZCB0byBhdXRvLXNlbGVjdCBiZWhhdmlvci4gU2tpcCBwYXN0IGl0LlxuICAgIGlmIChjb250ZXh0dWFsRWxlbWVudC50YWdOYW1lID09PSAnU0VMRUNUJykge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0U2libGluZztcbiAgICB9XG5cbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcbiAgICAgIHZhciB0ZW1wTm9kZSA9IGN1cnJlbnROb2RlO1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0U2libGluZztcblxuICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQodGVtcE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmcmFnbWVudDtcbn07XG5cbnZhciBwYXJzaW5nTm9kZTtcblxuLy8gVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIFVSTCBuZWVkcyB0byBiZSBzYW5pdGl6ZWQuXG5wcm90b3R5cGUucHJvdG9jb2xGb3JVUkwgPSBmdW5jdGlvbih1cmwpIHtcbiAgaWYgKCFwYXJzaW5nTm9kZSkge1xuICAgIHBhcnNpbmdOb2RlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIH1cblxuICBwYXJzaW5nTm9kZS5ocmVmID0gdXJsO1xuICByZXR1cm4gcGFyc2luZ05vZGUucHJvdG9jb2w7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBET01IZWxwZXI7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1vcnBoIGZyb20gXCIuL2h0bWxiYXJzLXJ1bnRpbWUvbW9ycGhcIjtcbmltcG9ydCBBdHRyTW9ycGggZnJvbSBcIi4vbW9ycGgtYXR0clwiO1xuaW1wb3J0IHtcbiAgYnVpbGRIVE1MRE9NLFxuICBzdmdOYW1lc3BhY2UsXG4gIHN2Z0hUTUxJbnRlZ3JhdGlvblBvaW50c1xufSBmcm9tIFwiLi9kb20taGVscGVyL2J1aWxkLWh0bWwtZG9tXCI7XG5pbXBvcnQge1xuICBhZGRDbGFzc2VzLFxuICByZW1vdmVDbGFzc2VzXG59IGZyb20gXCIuL2RvbS1oZWxwZXIvY2xhc3Nlc1wiO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplUHJvcGVydHlcbn0gZnJvbSBcIi4vZG9tLWhlbHBlci9wcm9wXCI7XG5pbXBvcnQgeyBpc0F0dHJSZW1vdmFsVmFsdWUgfSBmcm9tIFwiLi9kb20taGVscGVyL3Byb3BcIjtcblxudmFyIGRvYyA9IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IGRvY3VtZW50O1xuXG52YXIgZGVsZXRlc0JsYW5rVGV4dE5vZGVzID0gZG9jICYmIChmdW5jdGlvbihkb2N1bWVudCl7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSApO1xuICB2YXIgY2xvbmVkRWxlbWVudCA9IGVsZW1lbnQuY2xvbmVOb2RlKHRydWUpO1xuICByZXR1cm4gY2xvbmVkRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMDtcbn0pKGRvYyk7XG5cbnZhciBpZ25vcmVzQ2hlY2tlZEF0dHJpYnV0ZSA9IGRvYyAmJiAoZnVuY3Rpb24oZG9jdW1lbnQpe1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ2NoZWNrZWQnKTtcbiAgdmFyIGNsb25lZEVsZW1lbnQgPSBlbGVtZW50LmNsb25lTm9kZShmYWxzZSk7XG4gIHJldHVybiAhY2xvbmVkRWxlbWVudC5jaGVja2VkO1xufSkoZG9jKTtcblxudmFyIGNhblJlbW92ZVN2Z1ZpZXdCb3hBdHRyaWJ1dGUgPSBkb2MgJiYgKGRvYy5jcmVhdGVFbGVtZW50TlMgPyAoZnVuY3Rpb24oZG9jdW1lbnQpe1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3ZpZXdCb3gnLCAnMCAwIDEwMCAxMDAnKTtcbiAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3ZpZXdCb3gnKTtcbiAgcmV0dXJuICFlbGVtZW50LmdldEF0dHJpYnV0ZSgndmlld0JveCcpO1xufSkoZG9jKSA6IHRydWUpO1xuXG52YXIgY2FuQ2xvbmUgPSBkb2MgJiYgKGZ1bmN0aW9uKGRvY3VtZW50KXtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZWxlbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAnKSk7XG4gIGVsZW1lbnQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgJykpO1xuICB2YXIgY2xvbmVkRWxlbWVudCA9IGVsZW1lbnQuY2xvbmVOb2RlKHRydWUpO1xuICByZXR1cm4gY2xvbmVkRWxlbWVudC5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZSA9PT0gJyAnO1xufSkoZG9jKTtcblxuLy8gVGhpcyBpcyBub3QgdGhlIG5hbWVzcGFjZSBvZiB0aGUgZWxlbWVudCwgYnV0IG9mXG4vLyB0aGUgZWxlbWVudHMgaW5zaWRlIHRoYXQgZWxlbWVudHMuXG5mdW5jdGlvbiBpbnRlcmlvck5hbWVzcGFjZShlbGVtZW50KXtcbiAgaWYgKFxuICAgIGVsZW1lbnQgJiZcbiAgICBlbGVtZW50Lm5hbWVzcGFjZVVSSSA9PT0gc3ZnTmFtZXNwYWNlICYmXG4gICAgIXN2Z0hUTUxJbnRlZ3JhdGlvblBvaW50c1tlbGVtZW50LnRhZ05hbWVdXG4gICkge1xuICAgIHJldHVybiBzdmdOYW1lc3BhY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLy8gVGhlIEhUTUwgc3BlYyBhbGxvd3MgZm9yIFwib21pdHRlZCBzdGFydCB0YWdzXCIuIFRoZXNlIHRhZ3MgYXJlIG9wdGlvbmFsXG4vLyB3aGVuIHRoZWlyIGludGVuZGVkIGNoaWxkIGlzIHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgcGFyZW50IHRhZy4gRm9yXG4vLyBleGFtcGxlLCB0aGlzIGlzIGEgdGJvZHkgc3RhcnQgdGFnOlxuLy9cbi8vIDx0YWJsZT5cbi8vICAgPHRib2R5PlxuLy8gICAgIDx0cj5cbi8vXG4vLyBUaGUgdGJvZHkgbWF5IGJlIG9taXR0ZWQsIGFuZCB0aGUgYnJvd3NlciB3aWxsIGFjY2VwdCBhbmQgcmVuZGVyOlxuLy9cbi8vIDx0YWJsZT5cbi8vICAgPHRyPlxuLy9cbi8vIEhvd2V2ZXIsIHRoZSBvbWl0dGVkIHN0YXJ0IHRhZyB3aWxsIHN0aWxsIGJlIGFkZGVkIHRvIHRoZSBET00uIEhlcmVcbi8vIHdlIHRlc3QgdGhlIHN0cmluZyBhbmQgY29udGV4dCB0byBzZWUgaWYgdGhlIGJyb3dzZXIgaXMgYWJvdXQgdG9cbi8vIHBlcmZvcm0gdGhpcyBjbGVhbnVwLlxuLy9cbi8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3N5bnRheC5odG1sI29wdGlvbmFsLXRhZ3Ncbi8vIGRlc2NyaWJlcyB3aGljaCB0YWdzIGFyZSBvbWl0dGFibGUuIFRoZSBzcGVjIGZvciB0Ym9keSBhbmQgY29sZ3JvdXBcbi8vIGV4cGxhaW5zIHRoaXMgYmVoYXZpb3I6XG4vL1xuLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjdGhlLXRib2R5LWVsZW1lbnRcbi8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RhYmxlcy5odG1sI3RoZS1jb2xncm91cC1lbGVtZW50XG4vL1xuXG52YXIgb21pdHRlZFN0YXJ0VGFnQ2hpbGRUZXN0ID0gLzwoW1xcdzpdKykvO1xuZnVuY3Rpb24gZGV0ZWN0T21pdHRlZFN0YXJ0VGFnKHN0cmluZywgY29udGV4dHVhbEVsZW1lbnQpe1xuICAvLyBPbWl0dGVkIHN0YXJ0IHRhZ3MgYXJlIG9ubHkgaW5zaWRlIHRhYmxlIHRhZ3MuXG4gIGlmIChjb250ZXh0dWFsRWxlbWVudC50YWdOYW1lID09PSAnVEFCTEUnKSB7XG4gICAgdmFyIG9taXR0ZWRTdGFydFRhZ0NoaWxkTWF0Y2ggPSBvbWl0dGVkU3RhcnRUYWdDaGlsZFRlc3QuZXhlYyhzdHJpbmcpO1xuICAgIGlmIChvbWl0dGVkU3RhcnRUYWdDaGlsZE1hdGNoKSB7XG4gICAgICB2YXIgb21pdHRlZFN0YXJ0VGFnQ2hpbGQgPSBvbWl0dGVkU3RhcnRUYWdDaGlsZE1hdGNoWzFdO1xuICAgICAgLy8gSXQgaXMgYWxyZWFkeSBhc3NlcnRlZCB0aGF0IHRoZSBjb250ZXh0dWFsIGVsZW1lbnQgaXMgYSB0YWJsZVxuICAgICAgLy8gYW5kIG5vdCB0aGUgcHJvcGVyIHN0YXJ0IHRhZy4gSnVzdCBzZWUgaWYgYSB0YWcgd2FzIG9taXR0ZWQuXG4gICAgICByZXR1cm4gb21pdHRlZFN0YXJ0VGFnQ2hpbGQgPT09ICd0cicgfHxcbiAgICAgICAgICAgICBvbWl0dGVkU3RhcnRUYWdDaGlsZCA9PT0gJ2NvbCc7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkU1ZHRE9NKGh0bWwsIGRvbSl7XG4gIHZhciBkaXYgPSBkb20uZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGRpdi5pbm5lckhUTUwgPSAnPHN2Zz4nK2h0bWwrJzwvc3ZnPic7XG4gIHJldHVybiBkaXYuZmlyc3RDaGlsZC5jaGlsZE5vZGVzO1xufVxuXG52YXIgZ3VpZCA9IDE7XG5cbmZ1bmN0aW9uIEVsZW1lbnRNb3JwaChlbGVtZW50LCBkb20sIG5hbWVzcGFjZSkge1xuICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB0aGlzLmRvbSA9IGRvbTtcbiAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gIHRoaXMuZ3VpZCA9IFwiZWxlbWVudFwiICsgZ3VpZCsrO1xuXG4gIHRoaXMuc3RhdGUgPSB7fTtcbiAgdGhpcy5pc0RpcnR5ID0gdHJ1ZTtcbn1cblxuLy8gcmVuZGVyQW5kQ2xlYW51cCBjYWxscyBgY2xlYXJgIG9uIGFsbCBpdGVtcyBpbiB0aGUgbW9ycGggbWFwXG4vLyBqdXN0IGJlZm9yZSBjYWxsaW5nIGBkZXN0cm95YCBvbiB0aGUgbW9ycGguXG4vL1xuLy8gQXMgYSBmdXR1cmUgcmVmYWN0b3IgdGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHRvIHNldCB0aGUgcHJvcGVydHlcbi8vIGJhY2sgdG8gaXRzIG9yaWdpbmFsL2RlZmF1bHQgdmFsdWUuXG5FbGVtZW50TW9ycGgucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7IH07XG5cbkVsZW1lbnRNb3JwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmVsZW1lbnQgPSBudWxsO1xuICB0aGlzLmRvbSA9IG51bGw7XG59O1xuXG5cbi8qXG4gKiBBIGNsYXNzIHdyYXBwaW5nIERPTSBmdW5jdGlvbnMgdG8gYWRkcmVzcyBlbnZpcm9ubWVudCBjb21wYXRpYmlsaXR5LFxuICogbmFtZXNwYWNlcywgY29udGV4dHVhbCBlbGVtZW50cyBmb3IgbW9ycGggdW4tZXNjYXBlZCBjb250ZW50XG4gKiBpbnNlcnRpb24uXG4gKlxuICogV2hlbiBlbnRlcmluZyBhIHRlbXBsYXRlLCBhIERPTUhlbHBlciBzaG91bGQgYmUgcGFzc2VkOlxuICpcbiAqICAgdGVtcGxhdGUoY29udGV4dCwgeyBob29rczogaG9va3MsIGRvbTogbmV3IERPTUhlbHBlcigpIH0pO1xuICpcbiAqIFRPRE86IHN1cHBvcnQgZm9yZWlnbk9iamVjdCBhcyBhIHBhc3NlZCBjb250ZXh0dWFsIGVsZW1lbnQuIEl0IGhhc1xuICogYSBuYW1lc3BhY2UgKHN2ZykgdGhhdCBkb2VzIG5vdCBtYXRjaCBpdHMgaW50ZXJuYWwgbmFtZXNwYWNlXG4gKiAoeGh0bWwpLlxuICpcbiAqIEBjbGFzcyBET01IZWxwZXJcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtIVE1MRG9jdW1lbnR9IF9kb2N1bWVudCBUaGUgZG9jdW1lbnQgRE9NIG1ldGhvZHMgYXJlIHByb3hpZWQgdG9cbiAqL1xuZnVuY3Rpb24gRE9NSGVscGVyKF9kb2N1bWVudCl7XG4gIHRoaXMuZG9jdW1lbnQgPSBfZG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gIGlmICghdGhpcy5kb2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgZG9jdW1lbnQgb2JqZWN0IG11c3QgYmUgcGFzc2VkIHRvIHRoZSBET01IZWxwZXIsIG9yIGF2YWlsYWJsZSBvbiB0aGUgZ2xvYmFsIHNjb3BlXCIpO1xuICB9XG4gIHRoaXMuY2FuQ2xvbmUgPSBjYW5DbG9uZTtcbiAgdGhpcy5uYW1lc3BhY2UgPSBudWxsO1xufVxuXG52YXIgcHJvdG90eXBlID0gRE9NSGVscGVyLnByb3RvdHlwZTtcbnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUhlbHBlcjtcblxucHJvdG90eXBlLmdldEVsZW1lbnRCeUlkID0gZnVuY3Rpb24oaWQsIHJvb3ROb2RlKSB7XG4gIHJvb3ROb2RlID0gcm9vdE5vZGUgfHwgdGhpcy5kb2N1bWVudDtcbiAgcmV0dXJuIHJvb3ROb2RlLmdldEVsZW1lbnRCeUlkKGlkKTtcbn07XG5cbnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbihlbGVtZW50LCBjaGlsZEVsZW1lbnQsIHJlZmVyZW5jZUNoaWxkKSB7XG4gIHJldHVybiBlbGVtZW50Lmluc2VydEJlZm9yZShjaGlsZEVsZW1lbnQsIHJlZmVyZW5jZUNoaWxkKTtcbn07XG5cbnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNoaWxkRWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZEVsZW1lbnQpO1xufTtcblxudmFyIGl0ZW1BdDtcblxuLy8gSXQgYXBwZWFycyB0aGF0IHNvbWV0aW1lcywgaW4geWV0IHRvIGJlIGl0ZW50aWZpZWQgc2NlbmFyaW9zIFBoYW50b21KUyAyLjBcbi8vIGNyYXNoZXMgb24gY2hpbGROb2Rlcy5pdGVtKGluZGV4KSwgYnV0IHdvcmtzIGFzIGV4cGVjdGVkIHdpdGggY2hpbGROb2Rlc1tpbmRleF07XG4vL1xuLy8gQWx0aG91Z2ggaXQgd291bGQgYmUgbmljZSB0byBtb3ZlIHRvIGNoaWxkTm9kZXNbaW5kZXhdIGluIGFsbCBzY2VuYXJpb3MsXG4vLyB0aGlzIHdvdWxkIHJlcXVpcmUgU2ltcGxlRE9NIHRvIG1haW50YWluIHRoZSBjaGlsZE5vZGVzIGFycmF5LiBUaGlzIHdvdWxkIGJlXG4vLyBxdWl0ZSBjb3N0bHksIGluIGJvdGggZGV2IHRpbWUgYW5kIHJ1bnRpbWUuXG4vL1xuLy8gU28gaW5zdGVhZCwgd2UgY2hvb3NlIHRoZSBiZXN0IHBvc3NpYmxlIG1ldGhvZCBhbmQgY2FsbCBpdCBhIGRheS5cbi8vXG4vKmdsb2JhbCBuYXZpZ2F0b3IgKi9cbmlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignUGhhbnRvbUpTJykpIHtcbiAgaXRlbUF0ID0gZnVuY3Rpb24obm9kZXMsIGluZGV4KSB7XG4gICAgcmV0dXJuIG5vZGVzW2luZGV4XTtcbiAgfTtcbn0gZWxzZSB7XG4gIGl0ZW1BdCA9IGZ1bmN0aW9uKG5vZGVzLCBpbmRleCkge1xuICAgIHJldHVybiBub2Rlcy5pdGVtKGluZGV4KTtcbiAgfTtcbn1cblxucHJvdG90eXBlLmNoaWxkQXQgPSBmdW5jdGlvbihlbGVtZW50LCBpbmRpY2VzKSB7XG4gIHZhciBjaGlsZCA9IGVsZW1lbnQ7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hpbGQgPSBpdGVtQXQoY2hpbGQuY2hpbGROb2RlcywgaW5kaWNlc1tpXSk7XG4gIH1cblxuICByZXR1cm4gY2hpbGQ7XG59O1xuXG4vLyBOb3RlIHRvIGEgRmVsbG93IEltcGxlbWVudG9yOlxuLy8gQWhoLCBhY2Nlc3NpbmcgYSBjaGlsZCBub2RlIGF0IGFuIGluZGV4LiBTZWVtcyBsaWtlIGl0IHNob3VsZCBiZSBzbyBzaW1wbGUsXG4vLyBkb2Vzbid0IGl0PyBVbmZvcnR1bmF0ZWx5LCB0aGlzIHBhcnRpY3VsYXIgbWV0aG9kIGhhcyBjYXVzZWQgdXMgYSBzdXJwcmlzaW5nXG4vLyBhbW91bnQgb2YgcGFpbi4gQXMgeW91J2xsIG5vdGUgYmVsb3csIHRoaXMgbWV0aG9kIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHdhbGtcbi8vIHRoZSBsaW5rZWQgbGlzdCBvZiBjaGlsZCBub2RlcyByYXRoZXIgdGhhbiBhY2Nlc3MgdGhlIGNoaWxkIGJ5IGluZGV4XG4vLyBkaXJlY3RseSwgZXZlbiB0aG91Z2ggdGhlcmUgYXJlIHR3byAoMikgQVBJcyBpbiB0aGUgRE9NIHRoYXQgZG8gdGhpcyBmb3IgdXMuXG4vLyBJZiB5b3UncmUgdGhpbmtpbmcgdG8geW91cnNlbGYsIFwiV2hhdCBhbiBvdmVyc2lnaHQhIFdoYXQgYW4gb3Bwb3J0dW5pdHkgdG9cbi8vIG9wdGltaXplIHRoaXMgY29kZSFcIiB0aGVuIHRvIHlvdSBJIHNheTogc3RvcCEgRm9yIEkgaGF2ZSBhIHRhbGUgdG8gdGVsbC5cbi8vXG4vLyBGaXJzdCwgdGhpcyBjb2RlIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHNpbXBsZS1kb20gZm9yIHJlbmRlcmluZyBvbiB0aGVcbi8vIHNlcnZlciB3aGVyZSB0aGVyZSBpcyBubyByZWFsIERPTS4gUHJldmlvdXNseSwgd2UgYWNjZXNzZWQgYSBjaGlsZCBub2RlXG4vLyBkaXJlY3RseSB2aWEgYGVsZW1lbnQuY2hpbGROb2Rlc1tpbmRleF1gLiBXaGlsZSB3ZSAqY291bGQqIGluIHRoZW9yeSBkbyBhXG4vLyBmdWxsLWZpZGVsaXR5IHNpbXVsYXRpb24gb2YgYSBsaXZlIGBjaGlsZE5vZGVzYCBhcnJheSwgdGhpcyBpcyBzbG93LFxuLy8gY29tcGxpY2F0ZWQgYW5kIGVycm9yLXByb25lLlxuLy9cbi8vIFwiTm8gcHJvYmxlbSxcIiB3ZSB0aG91Z2h0LCBcIndlJ2xsIGp1c3QgdXNlIHRoZSBzaW1pbGFyXG4vLyBgY2hpbGROb2Rlcy5pdGVtKGluZGV4KWAgQVBJLlwiIFRoZW4sIHdlIGNvdWxkIGp1c3QgaW1wbGVtZW50IG91ciBvd24gYGl0ZW1gXG4vLyBtZXRob2QgaW4gc2ltcGxlLWRvbSBhbmQgd2FsayB0aGUgY2hpbGQgbm9kZSBsaW5rZWQgbGlzdCB0aGVyZSwgYWxsb3dpbmdcbi8vIHVzIHRvIHJldGFpbiB0aGUgcGVyZm9ybWFuY2UgYWR2YW50YWdlcyBvZiB0aGUgKHN1cmVseSBvcHRpbWl6ZWQpIGBpdGVtKClgXG4vLyBBUEkgaW4gdGhlIGJyb3dzZXIuXG4vL1xuLy8gVW5mb3J0dW5hdGVseSwgYW4gZW50ZXJwcmlzaW5nIHNvdWwgbmFtZWQgU2FteSBBbHphaHJhbmkgZGlzY292ZXJlZCB0aGF0IGluXG4vLyBJRTgsIGFjY2Vzc2luZyBhbiBpdGVtIG91dC1vZi1ib3VuZHMgdmlhIGBpdGVtKClgIGNhdXNlcyBhbiBleGNlcHRpb24gd2hlcmVcbi8vIG90aGVyIGJyb3dzZXJzIHJldHVybiBudWxsLiBUaGlzIG5lY2Vzc2l0YXRlZCBhLi4uIGNoZWNrIG9mXG4vLyBgY2hpbGROb2Rlcy5sZW5ndGhgLCBicmluZ2luZyB1cyBiYWNrIGFyb3VuZCB0byBoYXZpbmcgdG8gc3VwcG9ydCBhXG4vLyBmdWxsLWZpZGVsaXR5IGBjaGlsZE5vZGVzYCBhcnJheSFcbi8vXG4vLyBXb3JzdCBvZiBhbGwsIEtyaXMgU2VsZGVuIGludmVzdGlnYXRlZCBob3cgYnJvd3NlcnMgYXJlIGFjdHVhbHkgaW1wbGVtZW50ZWRcbi8vIGFuZCBkaXNjb3ZlcmVkIHRoYXQgdGhleSdyZSBhbGwgbGlua2VkIGxpc3RzIHVuZGVyIHRoZSBob29kIGFueXdheS4gQWNjZXNzaW5nXG4vLyBgY2hpbGROb2Rlc2AgcmVxdWlyZXMgdGhlbSB0byBhbGxvY2F0ZSBhIG5ldyBsaXZlIGNvbGxlY3Rpb24gYmFja2VkIGJ5IHRoYXRcbi8vIGxpbmtlZCBsaXN0LCB3aGljaCBpcyBpdHNlbGYgYSByYXRoZXIgZXhwZW5zaXZlIG9wZXJhdGlvbi4gT3VyIGFzc3VtZWRcbi8vIG9wdGltaXphdGlvbiBoYWQgYmFja2ZpcmVkISBUaGF0IGlzIHRoZSBkYW5nZXIgb2YgbWFnaWNhbCB0aGlua2luZyBhYm91dFxuLy8gdGhlIHBlcmZvcm1hbmNlIG9mIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMuXG4vL1xuLy8gQW5kIHRoaXMsIG15IGZyaWVuZHMsIGlzIHdoeSB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGp1c3Qgd2Fsa3MgdGhlXG4vLyBsaW5rZWQgbGlzdCwgYXMgc3VycHJpc2VkIGFzIHRoYXQgbWF5IG1ha2UgeW91LiBQbGVhc2UgZW5zdXJlIHlvdSB1bmRlcnN0YW5kXG4vLyB0aGUgYWJvdmUgYmVmb3JlIGNoYW5naW5nIHRoaXMgYW5kIHN1Ym1pdHRpbmcgYSBQUi5cbi8vXG4vLyBUb20gRGFsZSwgSmFudWFyeSAxOHRoLCAyMDE1LCBQb3J0bGFuZCBPUlxucHJvdG90eXBlLmNoaWxkQXRJbmRleCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGluZGV4KSB7XG4gIHZhciBub2RlID0gZWxlbWVudC5maXJzdENoaWxkO1xuXG4gIGZvciAodmFyIGlkeCA9IDA7IG5vZGUgJiYgaWR4IDwgaW5kZXg7IGlkeCsrKSB7XG4gICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn07XG5cbnByb3RvdHlwZS5hcHBlbmRUZXh0ID0gZnVuY3Rpb24oZWxlbWVudCwgdGV4dCkge1xuICByZXR1cm4gZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpKTtcbn07XG5cbnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCBTdHJpbmcodmFsdWUpKTtcbn07XG5cbnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lKSB7XG4gIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTtcbn07XG5cbnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOUyA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIFN0cmluZyh2YWx1ZSkpO1xufTtcblxucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lKSB7XG4gIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSk7XG59O1xuXG5pZiAoY2FuUmVtb3ZlU3ZnVmlld0JveEF0dHJpYnV0ZSl7XG4gIHByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lKSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH07XG59IGVsc2Uge1xuICBwcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSkge1xuICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdzdmcnICYmIG5hbWUgPT09ICd2aWV3Qm94Jykge1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH1cbiAgfTtcbn1cblxucHJvdG90eXBlLnNldFByb3BlcnR5U3RyaWN0ID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IG51bGw7XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwgJiYgKG5hbWUgPT09ICd2YWx1ZScgfHwgbmFtZSA9PT0gJ3R5cGUnIHx8IG5hbWUgPT09ICdzcmMnKSkge1xuICAgIHZhbHVlID0gJyc7XG4gIH1cblxuICBlbGVtZW50W25hbWVdID0gdmFsdWU7XG59O1xuXG5wcm90b3R5cGUuZ2V0UHJvcGVydHlTdHJpY3QgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lKSB7XG4gIHJldHVybiBlbGVtZW50W25hbWVdO1xufTtcblxucHJvdG90eXBlLnNldFByb3BlcnR5ID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICBpZiAoZWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IHN2Z05hbWVzcGFjZSkge1xuICAgIGlmIChpc0F0dHJSZW1vdmFsVmFsdWUodmFsdWUpKSB7XG4gICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgeyBub3JtYWxpemVkICwgdHlwZSB9ID0gbm9ybWFsaXplUHJvcGVydHkoZWxlbWVudCwgbmFtZSk7XG4gICAgaWYgKHR5cGUgPT09ICdwcm9wJykge1xuICAgICAgZWxlbWVudFtub3JtYWxpemVkXSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNBdHRyUmVtb3ZhbFZhbHVlKHZhbHVlKSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuYW1lc3BhY2UgJiYgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUykge1xuICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5pZiAoZG9jICYmIGRvYy5jcmVhdGVFbGVtZW50TlMpIHtcbiAgLy8gT25seSBvcHQgaW50byBuYW1lc3BhY2UgZGV0ZWN0aW9uIGlmIGEgY29udGV4dHVhbEVsZW1lbnRcbiAgLy8gaXMgcGFzc2VkLlxuICBwcm90b3R5cGUuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gICAgdmFyIG5hbWVzcGFjZSA9IHRoaXMubmFtZXNwYWNlO1xuICAgIGlmIChjb250ZXh0dWFsRWxlbWVudCkge1xuICAgICAgaWYgKHRhZ05hbWUgPT09ICdzdmcnKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IHN2Z05hbWVzcGFjZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IGludGVyaW9yTmFtZXNwYWNlKGNvbnRleHR1YWxFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG4gICAgfVxuICB9O1xuICBwcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIFN0cmluZyh2YWx1ZSkpO1xuICB9O1xufSBlbHNlIHtcbiAgcHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbih0YWdOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcbiAgfTtcbiAgcHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TID0gZnVuY3Rpb24oZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIFN0cmluZyh2YWx1ZSkpO1xuICB9O1xufVxuXG5wcm90b3R5cGUuYWRkQ2xhc3NlcyA9IGFkZENsYXNzZXM7XG5wcm90b3R5cGUucmVtb3ZlQ2xhc3NlcyA9IHJlbW92ZUNsYXNzZXM7XG5cbnByb3RvdHlwZS5zZXROYW1lc3BhY2UgPSBmdW5jdGlvbihucykge1xuICB0aGlzLm5hbWVzcGFjZSA9IG5zO1xufTtcblxucHJvdG90eXBlLmRldGVjdE5hbWVzcGFjZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgdGhpcy5uYW1lc3BhY2UgPSBpbnRlcmlvck5hbWVzcGFjZShlbGVtZW50KTtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24oKXtcbiAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xufTtcblxucHJvdG90eXBlLmNyZWF0ZVRleHROb2RlID0gZnVuY3Rpb24odGV4dCl7XG4gIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpO1xufTtcblxucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbih0ZXh0KXtcbiAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0ZXh0KTtcbn07XG5cbnByb3RvdHlwZS5yZXBhaXJDbG9uZWROb2RlID0gZnVuY3Rpb24oZWxlbWVudCwgYmxhbmtDaGlsZFRleHROb2RlcywgaXNDaGVja2VkKXtcbiAgaWYgKGRlbGV0ZXNCbGFua1RleHROb2RlcyAmJiBibGFua0NoaWxkVGV4dE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKHZhciBpPTAsIGxlbj1ibGFua0NoaWxkVGV4dE5vZGVzLmxlbmd0aDtpPGxlbjtpKyspe1xuICAgICAgdmFyIHRleHROb2RlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyksXG4gICAgICAgICAgb2Zmc2V0ID0gYmxhbmtDaGlsZFRleHROb2Rlc1tpXSxcbiAgICAgICAgICBiZWZvcmUgPSB0aGlzLmNoaWxkQXRJbmRleChlbGVtZW50LCBvZmZzZXQpO1xuICAgICAgaWYgKGJlZm9yZSkge1xuICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZSh0ZXh0Tm9kZSwgYmVmb3JlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoaWdub3Jlc0NoZWNrZWRBdHRyaWJ1dGUgJiYgaXNDaGVja2VkKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NoZWNrZWQnLCAnY2hlY2tlZCcpO1xuICB9XG59O1xuXG5wcm90b3R5cGUuY2xvbmVOb2RlID0gZnVuY3Rpb24oZWxlbWVudCwgZGVlcCl7XG4gIHZhciBjbG9uZSA9IGVsZW1lbnQuY2xvbmVOb2RlKCEhZGVlcCk7XG4gIHJldHVybiBjbG9uZTtcbn07XG5cbnByb3RvdHlwZS5BdHRyTW9ycGhDbGFzcyA9IEF0dHJNb3JwaDtcblxucHJvdG90eXBlLmNyZWF0ZUF0dHJNb3JwaCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGF0dHJOYW1lLCBuYW1lc3BhY2Upe1xuICByZXR1cm4gbmV3IHRoaXMuQXR0ck1vcnBoQ2xhc3MoZWxlbWVudCwgYXR0ck5hbWUsIHRoaXMsIG5hbWVzcGFjZSk7XG59O1xuXG5wcm90b3R5cGUuRWxlbWVudE1vcnBoQ2xhc3MgPSBFbGVtZW50TW9ycGg7XG5cbnByb3RvdHlwZS5jcmVhdGVFbGVtZW50TW9ycGggPSBmdW5jdGlvbihlbGVtZW50LCBuYW1lc3BhY2Upe1xuICByZXR1cm4gbmV3IHRoaXMuRWxlbWVudE1vcnBoQ2xhc3MoZWxlbWVudCwgdGhpcywgbmFtZXNwYWNlKTtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVVbnNhZmVBdHRyTW9ycGggPSBmdW5jdGlvbihlbGVtZW50LCBhdHRyTmFtZSwgbmFtZXNwYWNlKXtcbiAgdmFyIG1vcnBoID0gdGhpcy5jcmVhdGVBdHRyTW9ycGgoZWxlbWVudCwgYXR0ck5hbWUsIG5hbWVzcGFjZSk7XG4gIG1vcnBoLmVzY2FwZWQgPSBmYWxzZTtcbiAgcmV0dXJuIG1vcnBoO1xufTtcblxucHJvdG90eXBlLk1vcnBoQ2xhc3MgPSBNb3JwaDtcblxucHJvdG90eXBlLmNyZWF0ZU1vcnBoID0gZnVuY3Rpb24ocGFyZW50LCBzdGFydCwgZW5kLCBjb250ZXh0dWFsRWxlbWVudCl7XG4gIGlmIChjb250ZXh0dWFsRWxlbWVudCAmJiBjb250ZXh0dWFsRWxlbWVudC5ub2RlVHlwZSA9PT0gMTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcGFzcyBhIGZyYWdtZW50IGFzIHRoZSBjb250ZXh0dWFsIGVsZW1lbnQgdG8gY3JlYXRlTW9ycGhcIik7XG4gIH1cblxuICBpZiAoIWNvbnRleHR1YWxFbGVtZW50ICYmIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgPT09IDEpIHtcbiAgICBjb250ZXh0dWFsRWxlbWVudCA9IHBhcmVudDtcbiAgfVxuICB2YXIgbW9ycGggPSBuZXcgdGhpcy5Nb3JwaENsYXNzKHRoaXMsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgbW9ycGguZmlyc3ROb2RlID0gc3RhcnQ7XG4gIG1vcnBoLmxhc3ROb2RlID0gZW5kO1xuICByZXR1cm4gbW9ycGg7XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlRnJhZ21lbnRNb3JwaCA9IGZ1bmN0aW9uKGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIGlmIChjb250ZXh0dWFsRWxlbWVudCAmJiBjb250ZXh0dWFsRWxlbWVudC5ub2RlVHlwZSA9PT0gMTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcGFzcyBhIGZyYWdtZW50IGFzIHRoZSBjb250ZXh0dWFsIGVsZW1lbnQgdG8gY3JlYXRlTW9ycGhcIik7XG4gIH1cblxuICB2YXIgZnJhZ21lbnQgPSB0aGlzLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgcmV0dXJuIE1vcnBoLmNyZWF0ZSh0aGlzLCBjb250ZXh0dWFsRWxlbWVudCwgZnJhZ21lbnQpO1xufTtcblxucHJvdG90eXBlLnJlcGxhY2VDb250ZW50V2l0aE1vcnBoID0gZnVuY3Rpb24oZWxlbWVudCkgIHtcbiAgdmFyIGZpcnN0Q2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7XG5cbiAgaWYgKCFmaXJzdENoaWxkKSB7XG4gICAgdmFyIGNvbW1lbnQgPSB0aGlzLmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgIHRoaXMuYXBwZW5kQ2hpbGQoZWxlbWVudCwgY29tbWVudCk7XG4gICAgcmV0dXJuIE1vcnBoLmNyZWF0ZSh0aGlzLCBlbGVtZW50LCBjb21tZW50KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbW9ycGggPSBNb3JwaC5hdHRhY2godGhpcywgZWxlbWVudCwgZmlyc3RDaGlsZCwgZWxlbWVudC5sYXN0Q2hpbGQpO1xuICAgIG1vcnBoLmNsZWFyKCk7XG4gICAgcmV0dXJuIG1vcnBoO1xuICB9XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlVW5zYWZlTW9ycGggPSBmdW5jdGlvbihwYXJlbnQsIHN0YXJ0LCBlbmQsIGNvbnRleHR1YWxFbGVtZW50KXtcbiAgdmFyIG1vcnBoID0gdGhpcy5jcmVhdGVNb3JwaChwYXJlbnQsIHN0YXJ0LCBlbmQsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgbW9ycGgucGFyc2VUZXh0QXNIVE1MID0gdHJ1ZTtcbiAgcmV0dXJuIG1vcnBoO1xufTtcblxuLy8gVGhpcyBoZWxwZXIgaXMganVzdCB0byBrZWVwIHRoZSB0ZW1wbGF0ZXMgZ29vZCBsb29raW5nLFxuLy8gcGFzc2luZyBpbnRlZ2VycyBpbnN0ZWFkIG9mIGVsZW1lbnQgcmVmZXJlbmNlcy5cbnByb3RvdHlwZS5jcmVhdGVNb3JwaEF0ID0gZnVuY3Rpb24ocGFyZW50LCBzdGFydEluZGV4LCBlbmRJbmRleCwgY29udGV4dHVhbEVsZW1lbnQpe1xuICB2YXIgc2luZ2xlID0gc3RhcnRJbmRleCA9PT0gZW5kSW5kZXg7XG4gIHZhciBzdGFydCA9IHRoaXMuY2hpbGRBdEluZGV4KHBhcmVudCwgc3RhcnRJbmRleCk7XG4gIHZhciBlbmQgPSBzaW5nbGUgPyBzdGFydCA6IHRoaXMuY2hpbGRBdEluZGV4KHBhcmVudCwgZW5kSW5kZXgpO1xuICByZXR1cm4gdGhpcy5jcmVhdGVNb3JwaChwYXJlbnQsIHN0YXJ0LCBlbmQsIGNvbnRleHR1YWxFbGVtZW50KTtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVVbnNhZmVNb3JwaEF0ID0gZnVuY3Rpb24ocGFyZW50LCBzdGFydEluZGV4LCBlbmRJbmRleCwgY29udGV4dHVhbEVsZW1lbnQpIHtcbiAgdmFyIG1vcnBoID0gdGhpcy5jcmVhdGVNb3JwaEF0KHBhcmVudCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgbW9ycGgucGFyc2VUZXh0QXNIVE1MID0gdHJ1ZTtcbiAgcmV0dXJuIG1vcnBoO1xufTtcblxucHJvdG90eXBlLmluc2VydE1vcnBoQmVmb3JlID0gZnVuY3Rpb24oZWxlbWVudCwgcmVmZXJlbmNlQ2hpbGQsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIHZhciBpbnNlcnRpb24gPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpO1xuICBlbGVtZW50Lmluc2VydEJlZm9yZShpbnNlcnRpb24sIHJlZmVyZW5jZUNoaWxkKTtcbiAgcmV0dXJuIHRoaXMuY3JlYXRlTW9ycGgoZWxlbWVudCwgaW5zZXJ0aW9uLCBpbnNlcnRpb24sIGNvbnRleHR1YWxFbGVtZW50KTtcbn07XG5cbnByb3RvdHlwZS5hcHBlbmRNb3JwaCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIHZhciBpbnNlcnRpb24gPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpO1xuICBlbGVtZW50LmFwcGVuZENoaWxkKGluc2VydGlvbik7XG4gIHJldHVybiB0aGlzLmNyZWF0ZU1vcnBoKGVsZW1lbnQsIGluc2VydGlvbiwgaW5zZXJ0aW9uLCBjb250ZXh0dWFsRWxlbWVudCk7XG59O1xuXG5wcm90b3R5cGUuaW5zZXJ0Qm91bmRhcnkgPSBmdW5jdGlvbihmcmFnbWVudCwgaW5kZXgpIHtcbiAgLy8gdGhpcyB3aWxsIGFsd2F5cyBiZSBudWxsIG9yIGZpcnN0Q2hpbGRcbiAgdmFyIGNoaWxkID0gaW5kZXggPT09IG51bGwgPyBudWxsIDogdGhpcy5jaGlsZEF0SW5kZXgoZnJhZ21lbnQsIGluZGV4KTtcbiAgdGhpcy5pbnNlcnRCZWZvcmUoZnJhZ21lbnQsIHRoaXMuY3JlYXRlVGV4dE5vZGUoJycpLCBjaGlsZCk7XG59O1xuXG5wcm90b3R5cGUuc2V0TW9ycGhIVE1MID0gZnVuY3Rpb24obW9ycGgsIGh0bWwpIHtcbiAgbW9ycGguc2V0SFRNTChodG1sKTtcbn07XG5cbnByb3RvdHlwZS5wYXJzZUhUTUwgPSBmdW5jdGlvbihodG1sLCBjb250ZXh0dWFsRWxlbWVudCkge1xuICB2YXIgY2hpbGROb2RlcztcblxuICBpZiAoaW50ZXJpb3JOYW1lc3BhY2UoY29udGV4dHVhbEVsZW1lbnQpID09PSBzdmdOYW1lc3BhY2UpIHtcbiAgICBjaGlsZE5vZGVzID0gYnVpbGRTVkdET00oaHRtbCwgdGhpcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vZGVzID0gYnVpbGRIVE1MRE9NKGh0bWwsIGNvbnRleHR1YWxFbGVtZW50LCB0aGlzKTtcbiAgICBpZiAoZGV0ZWN0T21pdHRlZFN0YXJ0VGFnKGh0bWwsIGNvbnRleHR1YWxFbGVtZW50KSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1swXTtcbiAgICAgIHdoaWxlIChub2RlICYmIG5vZGUubm9kZVR5cGUgIT09IDEpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgICBjaGlsZE5vZGVzID0gbm9kZS5jaGlsZE5vZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZE5vZGVzID0gbm9kZXM7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29weSBub2RlIGxpc3QgdG8gYSBmcmFnbWVudC5cbiAgdmFyIGZyYWdtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbiAgaWYgKGNoaWxkTm9kZXMgJiYgY2hpbGROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIGN1cnJlbnROb2RlID0gY2hpbGROb2Rlc1swXTtcblxuICAgIC8vIFdlIHByZXBlbmQgYW4gPG9wdGlvbj4gdG8gPHNlbGVjdD4gYm94ZXMgdG8gYWJzb3JiIGFueSBicm93c2VyIGJ1Z3NcbiAgICAvLyByZWxhdGVkIHRvIGF1dG8tc2VsZWN0IGJlaGF2aW9yLiBTa2lwIHBhc3QgaXQuXG4gICAgaWYgKGNvbnRleHR1YWxFbGVtZW50LnRhZ05hbWUgPT09ICdTRUxFQ1QnKSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHRTaWJsaW5nO1xuICAgIH1cblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xuICAgICAgdmFyIHRlbXBOb2RlID0gY3VycmVudE5vZGU7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHRTaWJsaW5nO1xuXG4gICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZCh0ZW1wTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZyYWdtZW50O1xufTtcblxudmFyIHBhcnNpbmdOb2RlO1xuXG4vLyBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgVVJMIG5lZWRzIHRvIGJlIHNhbml0aXplZC5cbnByb3RvdHlwZS5wcm90b2NvbEZvclVSTCA9IGZ1bmN0aW9uKHVybCkge1xuICBpZiAoIXBhcnNpbmdOb2RlKSB7XG4gICAgcGFyc2luZ05vZGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgfVxuXG4gIHBhcnNpbmdOb2RlLmhyZWYgPSB1cmw7XG4gIHJldHVybiBwYXJzaW5nTm9kZS5wcm90b2NvbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERPTUhlbHBlcjtcbiJdfQ==

@@ -8,2 +8,2 @@ exports.__esModule = true;

exports.template = _htmlbarsCompilerCompiler.template;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O3dDQUlPLDhCQUE4Qjs7UUFHbkMsT0FBTyw2QkFOUCxPQUFPO1FBT1AsV0FBVyw2QkFOWCxXQUFXO1FBT1gsUUFBUSw2QkFOUixRQUFRIiwiZmlsZSI6Imh0bWxiYXJzLWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29tcGlsZSxcbiAgY29tcGlsZVNwZWMsXG4gIHRlbXBsYXRlXG59IGZyb20gXCIuL2h0bWxiYXJzLWNvbXBpbGVyL2NvbXBpbGVyXCI7XG5cbmV4cG9ydCB7XG4gIGNvbXBpbGUsXG4gIGNvbXBpbGVTcGVjLFxuICB0ZW1wbGF0ZVxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O3dDQUlPLDhCQUE4Qjs7UUFHbkMsT0FBTztRQUNQLFdBQVc7UUFDWCxRQUFRIiwiZmlsZSI6Imh0bWxiYXJzLWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29tcGlsZSxcbiAgY29tcGlsZVNwZWMsXG4gIHRlbXBsYXRlXG59IGZyb20gXCIuL2h0bWxiYXJzLWNvbXBpbGVyL2NvbXBpbGVyXCI7XG5cbmV4cG9ydCB7XG4gIGNvbXBpbGUsXG4gIGNvbXBpbGVTcGVjLFxuICB0ZW1wbGF0ZVxufTtcbiJdfQ==

@@ -20,2 +20,4 @@ exports.__esModule = true;

var _htmlbarsRuntimeRender2 = _interopRequireDefault(_htmlbarsRuntimeRender);
/*

@@ -37,4 +39,2 @@ * Compile a string into a template spec string. The template spec is a string

var _htmlbarsRuntimeRender2 = _interopRequireDefault(_htmlbarsRuntimeRender);
function compileSpec(string, options) {

@@ -92,2 +92,2 @@ var ast = _htmlbarsSyntaxParser.preprocess(string, options);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztvQ0FDMkIsMkJBQTJCOztnQ0FDekIscUJBQXFCOzs7O29DQUM3QiwyQkFBMkI7O3FDQUM3Qiw0QkFBNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJ4QyxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzNDLE1BQUksR0FBRyxHQUFHLHNCQXJCSCxVQUFVLENBcUJJLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0QyxNQUFJLFFBQVEsR0FBRywrQkFBcUIsT0FBTyxDQUFDLENBQUM7QUFDN0MsTUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxTQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7Ozs7QUFPTSxTQUFTLFFBQVEsQ0FBQyxZQUFZLEVBQUU7QUFDckMsU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztDQUNqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDTSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFNBQU8sc0JBbEVBLElBQUksQ0FrRUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsa0NBQVMsQ0FBQztDQUM3RCIsImZpbGUiOiJodG1sYmFycy1jb21waWxlci9jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qanNoaW50IGV2aWw6dHJ1ZSovXG5pbXBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXN5bnRheC9wYXJzZXJcIjtcbmltcG9ydCBUZW1wbGF0ZUNvbXBpbGVyIGZyb20gXCIuL3RlbXBsYXRlLWNvbXBpbGVyXCI7XG5pbXBvcnQgeyB3cmFwIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXJ1bnRpbWUvaG9va3NcIjtcbmltcG9ydCByZW5kZXIgZnJvbSBcIi4uL2h0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyXCI7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBzcGVjIHN0cmluZy4gVGhlIHRlbXBsYXRlIHNwZWMgaXMgYSBzdHJpbmdcbiAqIHJlcHJlc2VudGF0aW9uIG9mIGEgdGVtcGxhdGUuIFVzdWFsbHksIHlvdSB3b3VsZCB1c2UgY29tcGlsZVNwZWMgZm9yXG4gKiBwcmUtY29tcGlsYXRpb24gb2YgYSB0ZW1wbGF0ZSBvbiB0aGUgc2VydmVyLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKlxuICogICAgIHZhciB0ZW1wbGF0ZVNwZWMgPSBjb21waWxlU3BlYyhcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIC8vIFRoaXMgbmV4dCBzdGVwIGlzIGJhc2ljYWxseSB3aGF0IHBsYWluIGNvbXBpbGUgZG9lc1xuICogICAgIHZhciB0ZW1wbGF0ZSA9IG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlU3BlYykoKTtcbiAqXG4gKiBAbWV0aG9kIGNvbXBpbGVTcGVjXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIEFuIEhUTUxCYXJzIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7VGVtcGxhdGVTcGVjfSBBIHRlbXBsYXRlIHNwZWMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3BlYyhzdHJpbmcsIG9wdGlvbnMpIHtcbiAgdmFyIGFzdCA9IHByZXByb2Nlc3Moc3RyaW5nLCBvcHRpb25zKTtcbiAgdmFyIGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gIHZhciBwcm9ncmFtID0gY29tcGlsZXIuY29tcGlsZShhc3QpO1xuICByZXR1cm4gcHJvZ3JhbTtcbn1cblxuLypcbiAqIEBtZXRob2QgdGVtcGxhdGVcbiAqIEBwYXJhbSB7VGVtcGxhdGVTcGVjfSB0ZW1wbGF0ZVNwZWMgQSBwcmVjb21waWxlZCB0ZW1wbGF0ZVxuICogQHJldHVybiB7VGVtcGxhdGV9IEEgdGVtcGxhdGUgc3BlYyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYykge1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVTcGVjKSgpO1xufVxuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgcmVuZGVyaW5nIGZ1bmN0aW9uXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqXG4gKiAgICAgLy8gVGVtcGxhdGUgaXMgdGhlIGh5ZHJhdGlvbiBwb3J0aW9uIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZVxuICogICAgIHZhciB0ZW1wbGF0ZSA9IGNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqXG4gKiAgICAgLy8gVGVtcGxhdGUgYWNjZXB0cyB0aHJlZSBhcmd1bWVudHM6XG4gKiAgICAgLy9cbiAqICAgICAvLyAgIDEuIEEgY29udGV4dCBvYmplY3RcbiAqICAgICAvLyAgIDIuIEFuIGVudiBvYmplY3RcbiAqICAgICAvLyAgIDMuIEEgY29udGV4dHVhbEVsZW1lbnQgKG9wdGlvbmFsLCBkb2N1bWVudC5ib2R5IGlzIHRoZSBkZWZhdWx0KVxuICogICAgIC8vXG4gKiAgICAgLy8gVGhlIGVudiBvYmplY3QgKm11c3QqIGhhdmUgYXQgbGVhc3QgdGhlc2UgdHdvIHByb3BlcnRpZXM6XG4gKiAgICAgLy9cbiAqICAgICAvLyAgIDEuIGBob29rc2AgLSBCYXNpYyBob29rcyBmb3IgcmVuZGVyaW5nIGEgdGVtcGxhdGVcbiAqICAgICAvLyAgIDIuIGBkb21gIC0gQW4gaW5zdGFuY2Ugb2YgRE9NSGVscGVyXG4gKiAgICAgLy9cbiAqICAgICBpbXBvcnQge2hvb2tzfSBmcm9tICdodG1sYmFycy1ydW50aW1lJztcbiAqICAgICBpbXBvcnQge0RPTUhlbHBlcn0gZnJvbSAnbW9ycGgnO1xuICogICAgIHZhciBjb250ZXh0ID0ge25hbWU6ICd3aGF0ZXZlcid9LFxuICogICAgICAgICBlbnYgPSB7aG9va3M6IGhvb2tzLCBkb206IG5ldyBET01IZWxwZXIoKX0sXG4gKiAgICAgICAgIGNvbnRleHR1YWxFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAqICAgICB2YXIgZG9tRnJhZ21lbnQgPSB0ZW1wbGF0ZShjb250ZXh0LCBlbnYsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAqXG4gKiBAbWV0aG9kIGNvbXBpbGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgQW4gSFRNTEJhcnMgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBBIHNldCBvZiBvcHRpb25zIHRvIHByb3ZpZGUgdG8gdGhlIGNvbXBpbGVyXG4gKiBAcmV0dXJuIHtUZW1wbGF0ZX0gQSBmdW5jdGlvbiBmb3IgcmVuZGVyaW5nIHRoZSB0ZW1wbGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShzdHJpbmcsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHdyYXAodGVtcGxhdGUoY29tcGlsZVNwZWMoc3RyaW5nLCBvcHRpb25zKSksIHJlbmRlcik7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztvQ0FDMkIsMkJBQTJCOztnQ0FDekIscUJBQXFCOzs7O29DQUM3QiwyQkFBMkI7O3FDQUM3Qiw0QkFBNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJ4QyxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzNDLE1BQUksR0FBRyxHQUFHLGlDQUFXLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0QyxNQUFJLFFBQVEsR0FBRywrQkFBcUIsT0FBTyxDQUFDLENBQUM7QUFDN0MsTUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxTQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7Ozs7QUFPTSxTQUFTLFFBQVEsQ0FBQyxZQUFZLEVBQUU7QUFDckMsU0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztDQUNqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDTSxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFNBQU8sMkJBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsa0NBQVMsQ0FBQztDQUM3RCIsImZpbGUiOiJodG1sYmFycy1jb21waWxlci9jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qanNoaW50IGV2aWw6dHJ1ZSovXG5pbXBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXN5bnRheC9wYXJzZXJcIjtcbmltcG9ydCBUZW1wbGF0ZUNvbXBpbGVyIGZyb20gXCIuL3RlbXBsYXRlLWNvbXBpbGVyXCI7XG5pbXBvcnQgeyB3cmFwIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXJ1bnRpbWUvaG9va3NcIjtcbmltcG9ydCByZW5kZXIgZnJvbSBcIi4uL2h0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyXCI7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBzcGVjIHN0cmluZy4gVGhlIHRlbXBsYXRlIHNwZWMgaXMgYSBzdHJpbmdcbiAqIHJlcHJlc2VudGF0aW9uIG9mIGEgdGVtcGxhdGUuIFVzdWFsbHksIHlvdSB3b3VsZCB1c2UgY29tcGlsZVNwZWMgZm9yXG4gKiBwcmUtY29tcGlsYXRpb24gb2YgYSB0ZW1wbGF0ZSBvbiB0aGUgc2VydmVyLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKlxuICogICAgIHZhciB0ZW1wbGF0ZVNwZWMgPSBjb21waWxlU3BlYyhcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIC8vIFRoaXMgbmV4dCBzdGVwIGlzIGJhc2ljYWxseSB3aGF0IHBsYWluIGNvbXBpbGUgZG9lc1xuICogICAgIHZhciB0ZW1wbGF0ZSA9IG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlU3BlYykoKTtcbiAqXG4gKiBAbWV0aG9kIGNvbXBpbGVTcGVjXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyaW5nIEFuIEhUTUxCYXJzIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7VGVtcGxhdGVTcGVjfSBBIHRlbXBsYXRlIHNwZWMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlU3BlYyhzdHJpbmcsIG9wdGlvbnMpIHtcbiAgdmFyIGFzdCA9IHByZXByb2Nlc3Moc3RyaW5nLCBvcHRpb25zKTtcbiAgdmFyIGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gIHZhciBwcm9ncmFtID0gY29tcGlsZXIuY29tcGlsZShhc3QpO1xuICByZXR1cm4gcHJvZ3JhbTtcbn1cblxuLypcbiAqIEBtZXRob2QgdGVtcGxhdGVcbiAqIEBwYXJhbSB7VGVtcGxhdGVTcGVjfSB0ZW1wbGF0ZVNwZWMgQSBwcmVjb21waWxlZCB0ZW1wbGF0ZVxuICogQHJldHVybiB7VGVtcGxhdGV9IEEgdGVtcGxhdGUgc3BlYyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYykge1xuICByZXR1cm4gbmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVTcGVjKSgpO1xufVxuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgcmVuZGVyaW5nIGZ1bmN0aW9uXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqXG4gKiAgICAgLy8gVGVtcGxhdGUgaXMgdGhlIGh5ZHJhdGlvbiBwb3J0aW9uIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZVxuICogICAgIHZhciB0ZW1wbGF0ZSA9IGNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqXG4gKiAgICAgLy8gVGVtcGxhdGUgYWNjZXB0cyB0aHJlZSBhcmd1bWVudHM6XG4gKiAgICAgLy9cbiAqICAgICAvLyAgIDEuIEEgY29udGV4dCBvYmplY3RcbiAqICAgICAvLyAgIDIuIEFuIGVudiBvYmplY3RcbiAqICAgICAvLyAgIDMuIEEgY29udGV4dHVhbEVsZW1lbnQgKG9wdGlvbmFsLCBkb2N1bWVudC5ib2R5IGlzIHRoZSBkZWZhdWx0KVxuICogICAgIC8vXG4gKiAgICAgLy8gVGhlIGVudiBvYmplY3QgKm11c3QqIGhhdmUgYXQgbGVhc3QgdGhlc2UgdHdvIHByb3BlcnRpZXM6XG4gKiAgICAgLy9cbiAqICAgICAvLyAgIDEuIGBob29rc2AgLSBCYXNpYyBob29rcyBmb3IgcmVuZGVyaW5nIGEgdGVtcGxhdGVcbiAqICAgICAvLyAgIDIuIGBkb21gIC0gQW4gaW5zdGFuY2Ugb2YgRE9NSGVscGVyXG4gKiAgICAgLy9cbiAqICAgICBpbXBvcnQge2hvb2tzfSBmcm9tICdodG1sYmFycy1ydW50aW1lJztcbiAqICAgICBpbXBvcnQge0RPTUhlbHBlcn0gZnJvbSAnbW9ycGgnO1xuICogICAgIHZhciBjb250ZXh0ID0ge25hbWU6ICd3aGF0ZXZlcid9LFxuICogICAgICAgICBlbnYgPSB7aG9va3M6IGhvb2tzLCBkb206IG5ldyBET01IZWxwZXIoKX0sXG4gKiAgICAgICAgIGNvbnRleHR1YWxFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAqICAgICB2YXIgZG9tRnJhZ21lbnQgPSB0ZW1wbGF0ZShjb250ZXh0LCBlbnYsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAqXG4gKiBAbWV0aG9kIGNvbXBpbGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmcgQW4gSFRNTEJhcnMgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBBIHNldCBvZiBvcHRpb25zIHRvIHByb3ZpZGUgdG8gdGhlIGNvbXBpbGVyXG4gKiBAcmV0dXJuIHtUZW1wbGF0ZX0gQSBmdW5jdGlvbiBmb3IgcmVuZGVyaW5nIHRoZSB0ZW1wbGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShzdHJpbmcsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHdyYXAodGVtcGxhdGUoY29tcGlsZVNwZWMoc3RyaW5nLCBvcHRpb25zKSksIHJlbmRlcik7XG59XG4iXX0=

@@ -103,2 +103,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2ZyYWdtZW50LWphdmFzY3JpcHQtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7cUJBQStCLFNBQVM7O21DQUNqQiwwQkFBMEI7O0FBRWpELElBQUksWUFBWSxHQUFHLDRCQUE0Qjs7O0FBRTNDLHdCQUF3QixHQUFHLEVBQUMsZUFBZSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxJQUFJLEVBQUMsQ0FBQzs7QUFHakYsU0FBUywwQkFBMEIsR0FBRztBQUNwQyxNQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNqQixNQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2pCOztrQkFFYywwQkFBMEI7O0FBRXpDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3hFLE1BQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLE1BQUksQ0FBQyxNQUFNLEdBQUcsQUFBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSyxFQUFFLENBQUM7QUFDaEQsTUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQzVELE1BQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOztBQUV6QixNQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3BELFNBdkJPLGNBQWMsQ0F1Qk4sSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLE1BQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsR0FBRyxDQUFDLENBQUM7O0FBRWxDLFNBQU8s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RTtBQUN4RSxNQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3RDLENBQUM7O0FBRUYsMEJBQTBCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFlBQVc7QUFDbEUsU0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUM7Q0FDdkMsQ0FBQzs7QUFFRiwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVc7QUFDaEUsTUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDakUsTUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGdCQUFnQixFQUFFO0FBQzFDLFFBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMscUJBQXFCLElBQUUsZ0JBQWdCLEdBQUcscUJBN0ZsRSxNQUFNLENBNkZtRSxnQkFBZ0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQSxBQUFDLEdBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEgsUUFBSSxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQztHQUN0QztDQUNGLENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtY29tcGlsZXIvZnJhZ21lbnQtamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb2Nlc3NPcGNvZGVzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL3F1b3RpbmdcIjtcblxudmFyIHN2Z05hbWVzcGFjZSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbi8vIGh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvZHJhZnRzL2h0bWwvbWFzdGVyL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbiAgICBzdmdIVE1MSW50ZWdyYXRpb25Qb2ludHMgPSB7J2ZvcmVpZ25PYmplY3QnOnRydWUsICdkZXNjJzp0cnVlLCAndGl0bGUnOnRydWV9O1xuXG5cbmZ1bmN0aW9uIEZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyKCkge1xuICB0aGlzLnNvdXJjZSA9IFtdO1xuICB0aGlzLmRlcHRoID0gLTE7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyO1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuY29tcGlsZSA9IGZ1bmN0aW9uKG9wY29kZXMsIG9wdGlvbnMpIHtcbiAgdGhpcy5zb3VyY2UubGVuZ3RoID0gMDtcbiAgdGhpcy5kZXB0aCA9IC0xO1xuICB0aGlzLmluZGVudCA9IChvcHRpb25zICYmIG9wdGlvbnMuaW5kZW50KSB8fCBcIlwiO1xuICB0aGlzLm5hbWVzcGFjZUZyYW1lU3RhY2sgPSBbe25hbWVzcGFjZTogbnVsbCwgZGVwdGg6IG51bGx9XTtcbiAgdGhpcy5kb21OYW1lc3BhY2UgPSBudWxsO1xuXG4gIHRoaXMuc291cmNlLnB1c2goJ2Z1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoZG9tKSB7XFxuJyk7XG4gIHByb2Nlc3NPcGNvZGVzKHRoaXMsIG9wY29kZXMpO1xuICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50Kyd9Jyk7XG5cbiAgcmV0dXJuIHRoaXMuc291cmNlLmpvaW4oJycpO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNyZWF0ZUZyYWdtZW50ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBlbCA9ICdlbCcrKCsrdGhpcy5kZXB0aCk7XG4gIHRoaXMuc291cmNlLnB1c2godGhpcy5pbmRlbnQrJyAgdmFyICcrZWwrJyA9IGRvbS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XFxuJyk7XG59O1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHRhZ05hbWUpIHtcbiAgdmFyIGVsID0gJ2VsJysoKyt0aGlzLmRlcHRoKTtcbiAgaWYgKHRhZ05hbWUgPT09ICdzdmcnKSB7XG4gICAgdGhpcy5wdXNoTmFtZXNwYWNlRnJhbWUoe25hbWVzcGFjZTogc3ZnTmFtZXNwYWNlLCBkZXB0aDogdGhpcy5kZXB0aH0pO1xuICB9XG4gIHRoaXMuZW5zdXJlTmFtZXNwYWNlKCk7XG4gIHRoaXMuc291cmNlLnB1c2godGhpcy5pbmRlbnQrJyAgdmFyICcrZWwrJyA9IGRvbS5jcmVhdGVFbGVtZW50KCcrc3RyaW5nKHRhZ05hbWUpKycpO1xcbicpO1xuICBpZiAoc3ZnSFRNTEludGVncmF0aW9uUG9pbnRzW3RhZ05hbWVdKSB7XG4gICAgdGhpcy5wdXNoTmFtZXNwYWNlRnJhbWUoe25hbWVzcGFjZTogbnVsbCwgZGVwdGg6IHRoaXMuZGVwdGh9KTtcbiAgfVxufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNyZWF0ZVRleHQgPSBmdW5jdGlvbihzdHIpIHtcbiAgdmFyIGVsID0gJ2VsJysoKyt0aGlzLmRlcHRoKTtcbiAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmluZGVudCsnICB2YXIgJytlbCsnID0gZG9tLmNyZWF0ZVRleHROb2RlKCcrc3RyaW5nKHN0cikrJyk7XFxuJyk7XG59O1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uKHN0cikge1xuICB2YXIgZWwgPSAnZWwnKygrK3RoaXMuZGVwdGgpO1xuICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIHZhciAnK2VsKycgPSBkb20uY3JlYXRlQ29tbWVudCgnK3N0cmluZyhzdHIpKycpO1xcbicpO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnJldHVybk5vZGUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGVsID0gJ2VsJyt0aGlzLmRlcHRoO1xuICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIHJldHVybiAnK2VsKyc7XFxuJyk7XG59O1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24obmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICB2YXIgZWwgPSAnZWwnK3RoaXMuZGVwdGg7XG4gIGlmIChuYW1lc3BhY2UpIHtcbiAgICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIGRvbS5zZXRBdHRyaWJ1dGVOUygnK2VsKycsJytzdHJpbmcobmFtZXNwYWNlKSsnLCcrc3RyaW5nKG5hbWUpKycsJytzdHJpbmcodmFsdWUpKycpO1xcbicpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuc291cmNlLnB1c2godGhpcy5pbmRlbnQrJyAgZG9tLnNldEF0dHJpYnV0ZSgnK2VsKycsJytzdHJpbmcobmFtZSkrJywnK3N0cmluZyh2YWx1ZSkrJyk7XFxuJyk7XG4gIH1cbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5kZXB0aCA9PT0gdGhpcy5nZXRDdXJyZW50TmFtZXNwYWNlRnJhbWUoKS5kZXB0aCkge1xuICAgIHRoaXMucG9wTmFtZXNwYWNlRnJhbWUoKTtcbiAgfVxuICB2YXIgY2hpbGQgPSAnZWwnKyh0aGlzLmRlcHRoLS0pO1xuICB2YXIgZWwgPSAnZWwnK3RoaXMuZGVwdGg7XG4gIHRoaXMuc291cmNlLnB1c2godGhpcy5pbmRlbnQrJyAgZG9tLmFwcGVuZENoaWxkKCcrZWwrJywgJytjaGlsZCsnKTtcXG4nKTtcbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5nZXRDdXJyZW50TmFtZXNwYWNlRnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMubmFtZXNwYWNlRnJhbWVTdGFja1t0aGlzLm5hbWVzcGFjZUZyYW1lU3RhY2subGVuZ3RoLTFdO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnB1c2hOYW1lc3BhY2VGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lKSB7XG4gIHRoaXMubmFtZXNwYWNlRnJhbWVTdGFjay5wdXNoKGZyYW1lKTtcbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wb3BOYW1lc3BhY2VGcmFtZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5uYW1lc3BhY2VGcmFtZVN0YWNrLnBvcCgpO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmVuc3VyZU5hbWVzcGFjZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY29ycmVjdE5hbWVzcGFjZSA9IHRoaXMuZ2V0Q3VycmVudE5hbWVzcGFjZUZyYW1lKCkubmFtZXNwYWNlO1xuICBpZiAodGhpcy5kb21OYW1lc3BhY2UgIT09IGNvcnJlY3ROYW1lc3BhY2UpIHtcbiAgICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIGRvbS5zZXROYW1lc3BhY2UoJysoY29ycmVjdE5hbWVzcGFjZSA/IHN0cmluZyhjb3JyZWN0TmFtZXNwYWNlKSA6ICdudWxsJykrJyk7XFxuJyk7XG4gICAgdGhpcy5kb21OYW1lc3BhY2UgPSBjb3JyZWN0TmFtZXNwYWNlO1xuICB9XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2ZyYWdtZW50LWphdmFzY3JpcHQtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7cUJBQStCLFNBQVM7O21DQUNqQiwwQkFBMEI7O0FBRWpELElBQUksWUFBWSxHQUFHLDRCQUE0Qjs7O0FBRTNDLHdCQUF3QixHQUFHLEVBQUMsZUFBZSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxJQUFJLEVBQUMsQ0FBQzs7QUFHakYsU0FBUywwQkFBMEIsR0FBRztBQUNwQyxNQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNqQixNQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0NBQ2pCOztrQkFFYywwQkFBMEI7O0FBRXpDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3hFLE1BQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN2QixNQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLE1BQUksQ0FBQyxNQUFNLEdBQUcsQUFBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSyxFQUFFLENBQUM7QUFDaEQsTUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0FBQzVELE1BQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDOztBQUV6QixNQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3BELHdCQUFlLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM5QixNQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVsQyxTQUFPLElBQUksQ0FBQyxN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QUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUM7Q0FDdkMsQ0FBQzs7QUFFRiwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVc7QUFDaEUsTUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDakUsTUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLGdCQUFnQixFQUFFO0FBQzFDLFFBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMscUJBQXFCLElBQUUsZ0JBQWdCLEdBQUcsNEJBQU8sZ0JBQWdCLENBQUMsR0FBRyxNQUFNLENBQUEsQUFBQyxHQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xILFFBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7R0FDdEM7Q0FDRixDQUFDIiwiZmlsZSI6Imh0bWxiYXJzLWNvbXBpbGVyL2ZyYWdtZW50LWphdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9jZXNzT3Bjb2RlcyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBzdHJpbmcgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC9xdW90aW5nXCI7XG5cbnZhciBzdmdOYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4vLyBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL2RyYWZ0cy9odG1sL21hc3Rlci9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50XG4gICAgc3ZnSFRNTEludGVncmF0aW9uUG9pbnRzID0geydmb3JlaWduT2JqZWN0Jzp0cnVlLCAnZGVzYyc6dHJ1ZSwgJ3RpdGxlJzp0cnVlfTtcblxuXG5mdW5jdGlvbiBGcmFnbWVudEphdmFTY3JpcHRDb21waWxlcigpIHtcbiAgdGhpcy5zb3VyY2UgPSBbXTtcbiAgdGhpcy5kZXB0aCA9IC0xO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGcmFnbWVudEphdmFTY3JpcHRDb21waWxlcjtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGUgPSBmdW5jdGlvbihvcGNvZGVzLCBvcHRpb25zKSB7XG4gIHRoaXMuc291cmNlLmxlbmd0aCA9IDA7XG4gIHRoaXMuZGVwdGggPSAtMTtcbiAgdGhpcy5pbmRlbnQgPSAob3B0aW9ucyAmJiBvcHRpb25zLmluZGVudCkgfHwgXCJcIjtcbiAgdGhpcy5uYW1lc3BhY2VGcmFtZVN0YWNrID0gW3tuYW1lc3BhY2U6IG51bGwsIGRlcHRoOiBudWxsfV07XG4gIHRoaXMuZG9tTmFtZXNwYWNlID0gbnVsbDtcblxuICB0aGlzLnNvdXJjZS5wdXNoKCdmdW5jdGlvbiBidWlsZEZyYWdtZW50KGRvbSkge1xcbicpO1xuICBwcm9jZXNzT3Bjb2Rlcyh0aGlzLCBvcGNvZGVzKTtcbiAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmluZGVudCsnfScpO1xuXG4gIHJldHVybiB0aGlzLnNvdXJjZS5qb2luKCcnKTtcbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5jcmVhdGVGcmFnbWVudCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgZWwgPSAnZWwnKygrK3RoaXMuZGVwdGgpO1xuICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIHZhciAnK2VsKycgPSBkb20uY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xcbicpO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbih0YWdOYW1lKSB7XG4gIHZhciBlbCA9ICdlbCcrKCsrdGhpcy5kZXB0aCk7XG4gIGlmICh0YWdOYW1lID09PSAnc3ZnJykge1xuICAgIHRoaXMucHVzaE5hbWVzcGFjZUZyYW1lKHtuYW1lc3BhY2U6IHN2Z05hbWVzcGFjZSwgZGVwdGg6IHRoaXMuZGVwdGh9KTtcbiAgfVxuICB0aGlzLmVuc3VyZU5hbWVzcGFjZSgpO1xuICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIHZhciAnK2VsKycgPSBkb20uY3JlYXRlRWxlbWVudCgnK3N0cmluZyh0YWdOYW1lKSsnKTtcXG4nKTtcbiAgaWYgKHN2Z0hUTUxJbnRlZ3JhdGlvblBvaW50c1t0YWdOYW1lXSkge1xuICAgIHRoaXMucHVzaE5hbWVzcGFjZUZyYW1lKHtuYW1lc3BhY2U6IG51bGwsIGRlcHRoOiB0aGlzLmRlcHRofSk7XG4gIH1cbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5jcmVhdGVUZXh0ID0gZnVuY3Rpb24oc3RyKSB7XG4gIHZhciBlbCA9ICdlbCcrKCsrdGhpcy5kZXB0aCk7XG4gIHRoaXMuc291cmNlLnB1c2godGhpcy5pbmRlbnQrJyAgdmFyICcrZWwrJyA9IGRvbS5jcmVhdGVUZXh0Tm9kZSgnK3N0cmluZyhzdHIpKycpO1xcbicpO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQgPSBmdW5jdGlvbihzdHIpIHtcbiAgdmFyIGVsID0gJ2VsJysoKyt0aGlzLmRlcHRoKTtcbiAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmluZGVudCsnICB2YXIgJytlbCsnID0gZG9tLmNyZWF0ZUNvbW1lbnQoJytzdHJpbmcoc3RyKSsnKTtcXG4nKTtcbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5yZXR1cm5Ob2RlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBlbCA9ICdlbCcrdGhpcy5kZXB0aDtcbiAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmluZGVudCsnICByZXR1cm4gJytlbCsnO1xcbicpO1xufTtcblxuRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgdmFyIGVsID0gJ2VsJyt0aGlzLmRlcHRoO1xuICBpZiAobmFtZXNwYWNlKSB7XG4gICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmluZGVudCsnICBkb20uc2V0QXR0cmlidXRlTlMoJytlbCsnLCcrc3RyaW5nKG5hbWVzcGFjZSkrJywnK3N0cmluZyhuYW1lKSsnLCcrc3RyaW5nKHZhbHVlKSsnKTtcXG4nKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIGRvbS5zZXRBdHRyaWJ1dGUoJytlbCsnLCcrc3RyaW5nKG5hbWUpKycsJytzdHJpbmcodmFsdWUpKycpO1xcbicpO1xuICB9XG59O1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuZGVwdGggPT09IHRoaXMuZ2V0Q3VycmVudE5hbWVzcGFjZUZyYW1lKCkuZGVwdGgpIHtcbiAgICB0aGlzLnBvcE5hbWVzcGFjZUZyYW1lKCk7XG4gIH1cbiAgdmFyIGNoaWxkID0gJ2VsJysodGhpcy5kZXB0aC0tKTtcbiAgdmFyIGVsID0gJ2VsJyt0aGlzLmRlcHRoO1xuICB0aGlzLnNvdXJjZS5wdXNoKHRoaXMuaW5kZW50KycgIGRvbS5hcHBlbmRDaGlsZCgnK2VsKycsICcrY2hpbGQrJyk7XFxuJyk7XG59O1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUuZ2V0Q3VycmVudE5hbWVzcGFjZUZyYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm5hbWVzcGFjZUZyYW1lU3RhY2tbdGhpcy5uYW1lc3BhY2VGcmFtZVN0YWNrLmxlbmd0aC0xXTtcbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5wdXNoTmFtZXNwYWNlRnJhbWUgPSBmdW5jdGlvbihmcmFtZSkge1xuICB0aGlzLm5hbWVzcGFjZUZyYW1lU3RhY2sucHVzaChmcmFtZSk7XG59O1xuXG5GcmFnbWVudEphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUucG9wTmFtZXNwYWNlRnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMubmFtZXNwYWNlRnJhbWVTdGFjay5wb3AoKTtcbn07XG5cbkZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZS5lbnN1cmVOYW1lc3BhY2UgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcnJlY3ROYW1lc3BhY2UgPSB0aGlzLmdldEN1cnJlbnROYW1lc3BhY2VGcmFtZSgpLm5hbWVzcGFjZTtcbiAgaWYgKHRoaXMuZG9tTmFtZXNwYWNlICE9PSBjb3JyZWN0TmFtZXNwYWNlKSB7XG4gICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmluZGVudCsnICBkb20uc2V0TmFtZXNwYWNlKCcrKGNvcnJlY3ROYW1lc3BhY2UgPyBzdHJpbmcoY29ycmVjdE5hbWVzcGFjZSkgOiAnbnVsbCcpKycpO1xcbicpO1xuICAgIHRoaXMuZG9tTmFtZXNwYWNlID0gY29ycmVjdE5hbWVzcGFjZTtcbiAgfVxufTtcbiJdfQ==

@@ -90,2 +90,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2ZyYWdtZW50LW9wY29kZS1jb21waWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OytCQUE0QixvQkFBb0I7Ozs7cUJBQ2pCLFNBQVM7OzRCQUNQLGtCQUFrQjs7c0NBQzNCLDhCQUE4Qjs7QUFFdEQsU0FBUyxzQkFBc0IsR0FBRztBQUNoQyxNQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztDQUNuQjs7a0JBRWMsc0JBQXNCOztBQUVyQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsR0FBRyxFQUFFO0FBQ3ZELE1BQUksZUFBZSxHQUFHLCtCQUFxQixDQUFDO0FBQzVDLGlCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUUzQixTQWRPLGNBQWMsQ0FjTixJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUU5QyxTQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7Q0FDckIsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUMvRCxNQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQ25DLENBQUM7O0FBRUYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFTLElBQUksRUFBRTtBQUNyRCxNQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLE1BQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDNUIsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQzNELE1BQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUMsTUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUM1QixDQUFDOztBQUVGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDL0QsTUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QywwQkFqQ08sT0FBTyxDQWlDTixPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDbkQsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFlBQVc7QUFDekQsTUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUM1QixDQUFDOztBQUVGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBVztBQUN6RCxNQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEIsTUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQy9CLENBQUM7O0FBRUYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ3ZELE1BQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Q0FDM0IsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVc7QUFDckQsTUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDakMsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVc7QUFDdEQsTUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDakMsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVc7QUFDbEQsTUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDakMsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEdBQUcsWUFBVztBQUNyRSxNQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsTUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUM1QixDQUFDOztBQUVGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBUyxJQUFJLEVBQUU7QUFDMUQsTUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDbEMsUUFBSSxTQUFTLEdBQUcsY0FyRVgsZ0JBQWdCLENBcUVZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxRQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztHQUN2RTtDQUNGLENBQUM7O0FBRUYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFTLFNBQVMsRUFBRTtBQUNsRSxNQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Q0FDMUMsQ0FBQyIsImZpbGUiOiJodG1sYmFycy1jb21waWxlci9mcmFnbWVudC1vcGNvZGUtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVtcGxhdGVWaXNpdG9yIGZyb20gXCIuL3RlbXBsYXRlLXZpc2l0b3JcIjtcbmltcG9ydCB7IHByb2Nlc3NPcGNvZGVzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbFwiO1xuaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG5cbmZ1bmN0aW9uIEZyYWdtZW50T3Bjb2RlQ29tcGlsZXIoKSB7XG4gIHRoaXMub3Bjb2RlcyA9IFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGcmFnbWVudE9wY29kZUNvbXBpbGVyO1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21waWxlID0gZnVuY3Rpb24oYXN0KSB7XG4gIHZhciB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gIHByb2Nlc3NPcGNvZGVzKHRoaXMsIHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcblxuICByZXR1cm4gdGhpcy5vcGNvZGVzO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUub3Bjb2RlID0gZnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHRoaXMub3Bjb2Rlcy5wdXNoKFt0eXBlLCBwYXJhbXNdKTtcbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnRleHQgPSBmdW5jdGlvbih0ZXh0KSB7XG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVUZXh0JywgW3RleHQuY2hhcnNdKTtcbiAgdGhpcy5vcGNvZGUoJ2FwcGVuZENoaWxkJyk7XG59O1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21tZW50ID0gZnVuY3Rpb24oY29tbWVudCkge1xuICB0aGlzLm9wY29kZSgnY3JlYXRlQ29tbWVudCcsIFtjb21tZW50LnZhbHVlXSk7XG4gIHRoaXMub3Bjb2RlKCdhcHBlbmRDaGlsZCcpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUub3BlbkVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVFbGVtZW50JywgW2VsZW1lbnQudGFnXSk7XG4gIGZvckVhY2goZWxlbWVudC5hdHRyaWJ1dGVzLCB0aGlzLmF0dHJpYnV0ZSwgdGhpcyk7XG59O1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jbG9zZUVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5vcGNvZGUoJ2FwcGVuZENoaWxkJyk7XG59O1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5zdGFydFByb2dyYW0gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5vcGNvZGVzLmxlbmd0aCA9IDA7XG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVGcmFnbWVudCcpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUuZW5kUHJvZ3JhbSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLm9wY29kZSgncmV0dXJuTm9kZScpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUubXVzdGFjaGUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoKTtcbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmNvbXBvbmVudCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZSgpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUuYmxvY2sgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoKTtcbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLm9wY29kZSgnY3JlYXRlQ29tbWVudCcsIFtcIlwiXSk7XG4gIHRoaXMub3Bjb2RlKCdhcHBlbmRDaGlsZCcpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUuYXR0cmlidXRlID0gZnVuY3Rpb24oYXR0cikge1xuICBpZiAoYXR0ci52YWx1ZS50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgdmFyIG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UoYXR0ci5uYW1lKTtcbiAgICB0aGlzLm9wY29kZSgnc2V0QXR0cmlidXRlJywgW2F0dHIubmFtZSwgYXR0ci52YWx1ZS5jaGFycywgbmFtZXNwYWNlXSk7XG4gIH1cbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnNldE5hbWVzcGFjZSA9IGZ1bmN0aW9uKG5hbWVzcGFjZSkge1xuICB0aGlzLm9wY29kZSgnc2V0TmFtZXNwYWNlJywgW25hbWVzcGFjZV0pO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2ZyYWdtZW50LW9wY29kZS1jb21waWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OytCQUE0QixvQkFBb0I7Ozs7cUJBQ2pCLFNBQVM7OzRCQUNQLGtCQUFrQjs7c0NBQzNCLDhCQUE4Qjs7QUFFdEQsU0FBUyxzQkFBc0IsR0FBRztBQUNoQyxNQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztDQUNuQjs7a0JBRWMsc0JBQXNCOztBQUVyQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsR0FBRyxFQUFFO0FBQ3ZELE1BQUksZUFBZSxHQUFHLCtCQUFxQixDQUFDO0FBQzVDLGlCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUUzQix3QkFBZSxJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUU5QyxTQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7Q0FDckIsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUMvRCxNQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQ25DLENBQUM7O0FBRUYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFTLElBQUksRUFBRTtBQUNyRCxNQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLE1BQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDNUIsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQzNELE1BQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUMsTUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUM1QixDQUFDOztBQUVGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDL0QsTUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxrQ0FBUSxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDbkQsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFlBQVc7QUFDekQsTUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUM1QixDQUFDOztBQUVGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsWUFBVztBQUN6RCxNQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEIsTUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQy9CLENBQUM7O0FBRUYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ3ZELE1BQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7Q0FDM0IsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVc7QUFDckQsTUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDakMsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVc7QUFDdEQsTUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDakMsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVc7QUFDbEQsTUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Q0FDakMsQ0FBQzs7QUFFRixzQkFBc0IsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEdBQUcsWUFBVztBQUNyRSxNQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsTUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUM1QixDQUFDOztBQUVGLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBUyxJQUFJLEVBQUU7QUFDMUQsTUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDbEMsUUFBSSxTQUFTLEdBQUcsK0JBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxRQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztHQUN2RTtDQUNGLENBQUM7O0FBRUYsc0JBQXNCLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFTLFNBQVMsRUFBRTtBQUNsRSxNQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Q0FDMUMsQ0FBQyIsImZpbGUiOiJodG1sYmFycy1jb21waWxlci9mcmFnbWVudC1vcGNvZGUtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVtcGxhdGVWaXNpdG9yIGZyb20gXCIuL3RlbXBsYXRlLXZpc2l0b3JcIjtcbmltcG9ydCB7IHByb2Nlc3NPcGNvZGVzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbFwiO1xuaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG5cbmZ1bmN0aW9uIEZyYWdtZW50T3Bjb2RlQ29tcGlsZXIoKSB7XG4gIHRoaXMub3Bjb2RlcyA9IFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGcmFnbWVudE9wY29kZUNvbXBpbGVyO1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21waWxlID0gZnVuY3Rpb24oYXN0KSB7XG4gIHZhciB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gIHByb2Nlc3NPcGNvZGVzKHRoaXMsIHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcblxuICByZXR1cm4gdGhpcy5vcGNvZGVzO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUub3Bjb2RlID0gZnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHRoaXMub3Bjb2Rlcy5wdXNoKFt0eXBlLCBwYXJhbXNdKTtcbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnRleHQgPSBmdW5jdGlvbih0ZXh0KSB7XG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVUZXh0JywgW3RleHQuY2hhcnNdKTtcbiAgdGhpcy5vcGNvZGUoJ2FwcGVuZENoaWxkJyk7XG59O1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21tZW50ID0gZnVuY3Rpb24oY29tbWVudCkge1xuICB0aGlzLm9wY29kZSgnY3JlYXRlQ29tbWVudCcsIFtjb21tZW50LnZhbHVlXSk7XG4gIHRoaXMub3Bjb2RlKCdhcHBlbmRDaGlsZCcpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUub3BlbkVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVFbGVtZW50JywgW2VsZW1lbnQudGFnXSk7XG4gIGZvckVhY2goZWxlbWVudC5hdHRyaWJ1dGVzLCB0aGlzLmF0dHJpYnV0ZSwgdGhpcyk7XG59O1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jbG9zZUVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5vcGNvZGUoJ2FwcGVuZENoaWxkJyk7XG59O1xuXG5GcmFnbWVudE9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5zdGFydFByb2dyYW0gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5vcGNvZGVzLmxlbmd0aCA9IDA7XG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVGcmFnbWVudCcpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUuZW5kUHJvZ3JhbSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLm9wY29kZSgncmV0dXJuTm9kZScpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUubXVzdGFjaGUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoKTtcbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmNvbXBvbmVudCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZSgpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUuYmxvY2sgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoKTtcbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLm9wY29kZSgnY3JlYXRlQ29tbWVudCcsIFtcIlwiXSk7XG4gIHRoaXMub3Bjb2RlKCdhcHBlbmRDaGlsZCcpO1xufTtcblxuRnJhZ21lbnRPcGNvZGVDb21waWxlci5wcm90b3R5cGUuYXR0cmlidXRlID0gZnVuY3Rpb24oYXR0cikge1xuICBpZiAoYXR0ci52YWx1ZS50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgdmFyIG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UoYXR0ci5uYW1lKTtcbiAgICB0aGlzLm9wY29kZSgnc2V0QXR0cmlidXRlJywgW2F0dHIubmFtZSwgYXR0ci52YWx1ZS5jaGFycywgbmFtZXNwYWNlXSk7XG4gIH1cbn07XG5cbkZyYWdtZW50T3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnNldE5hbWVzcGFjZSA9IGZ1bmN0aW9uKG5hbWVzcGFjZSkge1xuICB0aGlzLm9wY29kZSgnc2V0TmFtZXNwYWNlJywgW25hbWVzcGFjZV0pO1xufTtcbiJdfQ==

@@ -254,2 +254,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2h5ZHJhdGlvbi1qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O3FCQUErQixTQUFTOzttQ0FDbEIsMEJBQTBCOztBQUVoRCxTQUFTLDJCQUEyQixHQUFHO0FBQ3JDLE1BQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLE1BQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDckIsTUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDakIsTUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztDQUN4Qjs7a0JBRWMsMkJBQTJCOztBQUUxQyxJQUFJLFNBQVMsR0FBRywyQkFBMkIsQ0FBQyxTQUFTLENBQUM7O0FBRXRELFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQzdDLE1BQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUIsTUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QixNQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0IsTUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQUksQ0FBQyxrQkFBa0IsQ0FBQyxN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QUFPLElBQUksQ0FBQztHQUNiOztBQUVELFNBQU8sY0FBYyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Q0FDL0QsQ0FBQzs7QUFFRixTQUFTLENBQUMsVUFBVSxHQUFHLFlBQVc7QUFDaEMsU0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVDLENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtY29tcGlsZXIvaHlkcmF0aW9uLWphdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9jZXNzT3Bjb2RlcyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBhcnJheSB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL3F1b3RpbmdcIjtcblxuZnVuY3Rpb24gSHlkcmF0aW9uSmF2YVNjcmlwdENvbXBpbGVyKCkge1xuICB0aGlzLnN0YWNrID0gW107XG4gIHRoaXMuc291cmNlID0gW107XG4gIHRoaXMubXVzdGFjaGVzID0gW107XG4gIHRoaXMucGFyZW50cyA9IFtbJ2ZyYWdtZW50J11dO1xuICB0aGlzLnBhcmVudENvdW50ID0gMDtcbiAgdGhpcy5tb3JwaHMgPSBbXTtcbiAgdGhpcy5mcmFnbWVudFByb2Nlc3NpbmcgPSBbXTtcbiAgdGhpcy5ob29rcyA9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSHlkcmF0aW9uSmF2YVNjcmlwdENvbXBpbGVyO1xuXG52YXIgcHJvdG90eXBlID0gSHlkcmF0aW9uSmF2YVNjcmlwdENvbXBpbGVyLnByb3RvdHlwZTtcblxucHJvdG90eXBlLmNvbXBpbGUgPSBmdW5jdGlvbihvcGNvZGVzLCBvcHRpb25zKSB7XG4gIHRoaXMuc3RhY2subGVuZ3RoID0gMDtcbiAgdGhpcy5tdXN0YWNoZXMubGVuZ3RoID0gMDtcbiAgdGhpcy5zb3VyY2UubGVuZ3RoID0gMDtcbiAgdGhpcy5wYXJlbnRzLmxlbmd0aCA9IDE7XG4gIHRoaXMucGFyZW50c1swXSA9IFsnZnJhZ21lbnQnXTtcbiAgdGhpcy5tb3JwaHMubGVuZ3RoID0gMDtcbiAgdGhpcy5mcmFnbWVudFByb2Nlc3NpbmcubGVuZ3RoID0gMDtcbiAgdGhpcy5wYXJlbnRDb3VudCA9IDA7XG4gIHRoaXMuaW5kZW50ID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5pbmRlbnQpIHx8IFwiXCI7XG4gIHRoaXMuaG9va3MgPSB7fTtcbiAgdGhpcy5oYXNPcGVuQm91bmRhcnkgPSBmYWxzZTtcbiAgdGhpcy5oYXNDbG9zZUJvdW5kYXJ5ID0gZmFsc2U7XG4gIHRoaXMuc3RhdGVtZW50cyA9IFtdO1xuICB0aGlzLmV4cHJlc3Npb25TdGFjayA9IFtdO1xuICB0aGlzLmxvY2FscyA9IFtdO1xuICB0aGlzLmhhc09wZW5Cb3VuZGFyeSA9IGZhbHNlO1xuICB0aGlzLmhhc0Nsb3NlQm91bmRhcnkgPSBmYWxzZTtcblxuICBwcm9jZXNzT3Bjb2Rlcyh0aGlzLCBvcGNvZGVzKTtcblxuICBpZiAodGhpcy5oYXNPcGVuQm91bmRhcnkpIHtcbiAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMuaW5kZW50K1wiICBkb20uaW5zZXJ0Qm91bmRhcnkoZnJhZ21lbnQsIDApO1xcblwiKTtcbiAgfVxuXG4gIGlmICh0aGlzLmhhc0Nsb3NlQm91bmRhcnkpIHtcbiAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMuaW5kZW50K1wiICBkb20uaW5zZXJ0Qm91bmRhcnkoZnJhZ21lbnQsIG51bGwpO1xcblwiKTtcbiAgfVxuXG4gIHZhciBpLCBsO1xuXG4gIHZhciBpbmRlbnQgPSB0aGlzLmluZGVudDtcblxuICB2YXIgbW9ycGhzO1xuXG4gIHZhciByZXN1bHQgPSB7XG4gICAgY3JlYXRlTW9ycGhzUHJvZ3JhbTogJycsXG4gICAgaHlkcmF0ZU1vcnBoc1Byb2dyYW06ICcnLFxuICAgIGZyYWdtZW50UHJvY2Vzc2luZ1Byb2dyYW06ICcnLFxuICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICBsb2NhbHM6IHRoaXMubG9jYWxzLFxuICAgIGhhc01vcnBoczogZmFsc2VcbiAgfTtcblxuICByZXN1bHQuaHlkcmF0ZU1vcnBoc1Byb2dyYW0gPSB0aGlzLnNvdXJjZS5qb2luKCcnKTtcblxuICBpZiAodGhpcy5tb3JwaHMubGVuZ3RoKSB7XG4gICAgcmVzdWx0Lmhhc01vcnBocyA9IHRydWU7XG4gICAgbW9ycGhzID1cbiAgICAgIGluZGVudCsnICB2YXIgbW9ycGhzID0gbmV3IEFycmF5KCcgKyB0aGlzLm1vcnBocy5sZW5ndGggKyAnKTtcXG4nO1xuXG4gICAgICBmb3IgKGkgPSAwLCBsID0gdGhpcy5tb3JwaHMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgIHZhciBtb3JwaCA9IHRoaXMubW9ycGhzW2ldO1xuICAgICAgICBtb3JwaHMgKz0gaW5kZW50KycgIG1vcnBoc1snK2krJ10gPSAnK21vcnBoKyc7XFxuJztcbiAgICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLmZyYWdtZW50UHJvY2Vzc2luZy5sZW5ndGgpIHtcbiAgICB2YXIgcHJvY2Vzc2luZyA9IFwiXCI7XG4gICAgZm9yIChpID0gMCwgbCA9IHRoaXMuZnJhZ21lbnRQcm9jZXNzaW5nLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgcHJvY2Vzc2luZyArPSB0aGlzLmluZGVudCsnICAnK3RoaXMuZnJhZ21lbnRQcm9jZXNzaW5nW2ldKydcXG4nO1xuICAgIH1cbiAgICByZXN1bHQuZnJhZ21lbnRQcm9jZXNzaW5nUHJvZ3JhbSA9IHByb2Nlc3Npbmc7XG4gIH1cblxuICB2YXIgY3JlYXRlTW9ycGhzUHJvZ3JhbTtcbiAgaWYgKHJlc3VsdC5oYXNNb3JwaHMpIHtcbiAgICBjcmVhdGVNb3JwaHNQcm9ncmFtID1cbiAgICAgICdmdW5jdGlvbiBidWlsZFJlbmRlck5vZGVzKGRvbSwgZnJhZ21lbnQsIGNvbnRleHR1YWxFbGVtZW50KSB7XFxuJyArXG4gICAgICByZXN1bHQuZnJhZ21lbnRQcm9jZXNzaW5nUHJvZ3JhbSArIG1vcnBocztcblxuICAgICAgaWYgKHRoaXMuaGFzT3BlbkJvdW5kYXJ5KSB7XG4gICAgICAgIGNyZWF0ZU1vcnBoc1Byb2dyYW0gKz0gaW5kZW50K1wiICBkb20uaW5zZXJ0Qm91bmRhcnkoZnJhZ21lbnQsIDApO1xcblwiO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oYXNDbG9zZUJvdW5kYXJ5KSB7XG4gICAgICAgIGNyZWF0ZU1vcnBoc1Byb2dyYW0gKz0gaW5kZW50K1wiICBkb20uaW5zZXJ0Qm91bmRhcnkoZnJhZ21lbnQsIG51bGwpO1xcblwiO1xuICAgICAgfVxuXG4gICAgICBjcmVhdGVNb3JwaHNQcm9ncmFtICs9XG4gICAgICBpbmRlbnQgKyAnICByZXR1cm4gbW9ycGhzO1xcbicgK1xuICAgICAgaW5kZW50Kyd9JztcbiAgfSBlbHNlIHtcbiAgICBjcmVhdGVNb3JwaHNQcm9ncmFtID1cbiAgICAgICdmdW5jdGlvbiBidWlsZFJlbmRlck5vZGVzKCkgeyByZXR1cm4gW107IH0nO1xuICB9XG5cbiAgcmVzdWx0LmNyZWF0ZU1vcnBoc1Byb2dyYW0gPSBjcmVhdGVNb3JwaHNQcm9ncmFtO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5wcm90b3R5cGUucHJlcGFyZUFycmF5ID0gZnVuY3Rpb24obGVuZ3RoKSB7XG4gIHZhciB2YWx1ZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFsdWVzLnB1c2godGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCkpO1xuICB9XG5cbiAgdGhpcy5leHByZXNzaW9uU3RhY2sucHVzaCh2YWx1ZXMpO1xufTtcblxucHJvdG90eXBlLnByZXBhcmVPYmplY3QgPSBmdW5jdGlvbihzaXplKSB7XG4gIHZhciBwYWlycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgcGFpcnMucHVzaCh0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSwgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCkpO1xuICB9XG5cbiAgdGhpcy5leHByZXNzaW9uU3RhY2sucHVzaChwYWlycyk7XG59O1xuXG5wcm90b3R5cGUub3BlbkJvdW5kYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuaGFzT3BlbkJvdW5kYXJ5ID0gdHJ1ZTtcbn07XG5cbnByb3RvdHlwZS5jbG9zZUJvdW5kYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuaGFzQ2xvc2VCb3VuZGFyeSA9IHRydWU7XG59O1xuXG5wcm90b3R5cGUucHVzaExpdGVyYWwgPSBmdW5jdGlvbih2YWx1ZSkge1xuICB0aGlzLmV4cHJlc3Npb25TdGFjay5wdXNoKHZhbHVlKTtcbn07XG5cbnByb3RvdHlwZS5wdXNoR2V0SG9vayA9IGZ1bmN0aW9uKHBhdGgsIG1ldGEpIHtcbiAgdGhpcy5leHByZXNzaW9uU3RhY2sucHVzaChbICdnZXQnLCBwYXRoLCBtZXRhIF0pO1xufTtcblxucHJvdG90eXBlLnB1c2hTZXhwckhvb2sgPSBmdW5jdGlvbihtZXRhKSB7XG4gIHRoaXMuZXhwcmVzc2lvblN0YWNrLnB1c2goW1xuICAgICdzdWJleHByJyxcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSxcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSxcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSxcbiAgICBtZXRhXG4gIF0pO1xufTtcblxucHJvdG90eXBlLnB1c2hDb25jYXRIb29rID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuZXhwcmVzc2lvblN0YWNrLnB1c2goWyAnY29uY2F0JywgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCkgXSk7XG59O1xuXG5wcm90b3R5cGUucHJpbnRTZXRIb29rID0gZnVuY3Rpb24obmFtZSkge1xuICB0aGlzLmxvY2Fscy5wdXNoKG5hbWUpO1xufTtcblxucHJvdG90eXBlLnByaW50QmxvY2tIb29rID0gZnVuY3Rpb24odGVtcGxhdGVJZCwgaW52ZXJzZUlkLCBtZXRhKSB7XG4gIHRoaXMuc3RhdGVtZW50cy5wdXNoKFtcbiAgICAnYmxvY2snLFxuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBwYXRoXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIHBhcmFtc1xuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBoYXNoXG4gICAgdGVtcGxhdGVJZCxcbiAgICBpbnZlcnNlSWQsXG4gICAgbWV0YVxuICBdKTtcbn07XG5cbnByb3RvdHlwZS5wcmludElubGluZUhvb2sgPSBmdW5jdGlvbihtZXRhKSB7XG4gIHZhciBwYXRoID0gdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCk7XG4gIHZhciBwYXJhbXMgPSB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKTtcbiAgdmFyIGhhc2ggPSB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKTtcblxuICB0aGlzLnN0YXRlbWVudHMucHVzaChbICdpbmxpbmUnLCBwYXRoLCBwYXJhbXMsIGhhc2gsIG1ldGEgXSk7XG59O1xuXG5wcm90b3R5cGUucHJpbnRDb250ZW50SG9vayA9IGZ1bmN0aW9uKG1ldGEpIHtcbiAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goWyAnY29udGVudCcsIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCBtZXRhXSk7XG59O1xuXG5wcm90b3R5cGUucHJpbnRDb21wb25lbnRIb29rID0gZnVuY3Rpb24odGVtcGxhdGVJZCkge1xuICB0aGlzLnN0YXRlbWVudHMucHVzaChbXG4gICAgJ2NvbXBvbmVudCcsXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIHBhdGhcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSwgLy8gYXR0cnNcbiAgICB0ZW1wbGF0ZUlkXG4gIF0pO1xufTtcblxucHJvdG90eXBlLnByaW50QXR0cmlidXRlSG9vayA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnN0YXRlbWVudHMucHVzaChbXG4gICAgJ2F0dHJpYnV0ZScsXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIG5hbWVcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSAgLy8gdmFsdWU7XG4gIF0pO1xufTtcblxucHJvdG90eXBlLnByaW50RWxlbWVudEhvb2sgPSBmdW5jdGlvbihtZXRhKSB7XG4gIHRoaXMuc3RhdGVtZW50cy5wdXNoKFtcbiAgICAnZWxlbWVudCcsXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIHBhdGhcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSwgLy8gcGFyYW1zXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIGhhc2hcbiAgICBtZXRhXG4gIF0pO1xufTtcblxucHJvdG90eXBlLmNyZWF0ZU1vcnBoID0gZnVuY3Rpb24obW9ycGhOdW0sIHBhcmVudFBhdGgsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBlc2NhcGVkKSB7XG4gIHZhciBpc1Jvb3QgPSBwYXJlbnRQYXRoLmxlbmd0aCA9PT0gMDtcbiAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cbiAgdmFyIG1vcnBoTWV0aG9kID0gZXNjYXBlZCA/ICdjcmVhdGVNb3JwaEF0JyA6ICdjcmVhdGVVbnNhZmVNb3JwaEF0JztcbiAgdmFyIG1vcnBoID0gXCJkb20uXCIrbW9ycGhNZXRob2QrXCIoXCIrcGFyZW50K1xuICAgIFwiLFwiKyhzdGFydEluZGV4ID09PSBudWxsID8gXCItMVwiIDogc3RhcnRJbmRleCkrXG4gICAgXCIsXCIrKGVuZEluZGV4ID09PSBudWxsID8gXCItMVwiIDogZW5kSW5kZXgpK1xuICAgIChpc1Jvb3QgPyBcIixjb250ZXh0dWFsRWxlbWVudClcIiA6IFwiKVwiKTtcblxuICB0aGlzLm1vcnBoc1ttb3JwaE51bV0gPSBtb3JwaDtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVBdHRyTW9ycGggPSBmdW5jdGlvbihhdHRyTW9ycGhOdW0sIGVsZW1lbnROdW0sIG5hbWUsIGVzY2FwZWQsIG5hbWVzcGFjZSkge1xuICB2YXIgbW9ycGhNZXRob2QgPSBlc2NhcGVkID8gJ2NyZWF0ZUF0dHJNb3JwaCcgOiAnY3JlYXRlVW5zYWZlQXR0ck1vcnBoJztcbiAgdmFyIG1vcnBoID0gXCJkb20uXCIrbW9ycGhNZXRob2QrXCIoZWxlbWVudFwiK2VsZW1lbnROdW0rXCIsICdcIituYW1lKyhuYW1lc3BhY2UgPyBcIicsICdcIituYW1lc3BhY2UgOiAnJykrXCInKVwiO1xuICB0aGlzLm1vcnBoc1thdHRyTW9ycGhOdW1dID0gbW9ycGg7XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE1vcnBoID0gZnVuY3Rpb24obW9ycGhOdW0sIGVsZW1lbnROdW0gKSB7XG4gIHZhciBtb3JwaE1ldGhvZCA9ICdjcmVhdGVFbGVtZW50TW9ycGgnO1xuICB2YXIgbW9ycGggPSBcImRvbS5cIittb3JwaE1ldGhvZCtcIihlbGVtZW50XCIrZWxlbWVudE51bStcIilcIjtcbiAgdGhpcy5tb3JwaHNbbW9ycGhOdW1dID0gbW9ycGg7XG59O1xuXG5wcm90b3R5cGUucmVwYWlyQ2xvbmVkTm9kZSA9IGZ1bmN0aW9uKGJsYW5rQ2hpbGRUZXh0Tm9kZXMsIGlzRWxlbWVudENoZWNrZWQpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCksXG4gICAgICBwcm9jZXNzaW5nID0gJ2lmICh0aGlzLmNhY2hlZEZyYWdtZW50KSB7IGRvbS5yZXBhaXJDbG9uZWROb2RlKCcrcGFyZW50KycsJytcbiAgICAgICAgICAgICAgICAgICBhcnJheShibGFua0NoaWxkVGV4dE5vZGVzKStcbiAgICAgICAgICAgICAgICAgICAoIGlzRWxlbWVudENoZWNrZWQgPyAnLHRydWUnIDogJycgKStcbiAgICAgICAgICAgICAgICAgICAnKTsgfSc7XG4gIHRoaXMuZnJhZ21lbnRQcm9jZXNzaW5nLnB1c2goXG4gICAgcHJvY2Vzc2luZ1xuICApO1xufTtcblxucHJvdG90eXBlLnNoYXJlRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnROdW0pe1xuICB2YXIgZWxlbWVudE5vZGVzTmFtZSA9IFwiZWxlbWVudFwiICsgZWxlbWVudE51bTtcbiAgdGhpcy5mcmFnbWVudFByb2Nlc3NpbmcucHVzaCgndmFyICcrZWxlbWVudE5vZGVzTmFtZSsnID0gJyt0aGlzLmdldFBhcmVudCgpKyc7Jyk7XG4gIHRoaXMucGFyZW50c1t0aGlzLnBhcmVudHMubGVuZ3RoLTFdID0gW2VsZW1lbnROb2Rlc05hbWVdO1xufTtcblxucHJvdG90eXBlLmNvbnN1bWVQYXJlbnQgPSBmdW5jdGlvbihpKSB7XG4gIHZhciBuZXdQYXJlbnQgPSB0aGlzLmxhc3RQYXJlbnQoKS5zbGljZSgpO1xuICBuZXdQYXJlbnQucHVzaChpKTtcblxuICB0aGlzLnBhcmVudHMucHVzaChuZXdQYXJlbnQpO1xufTtcblxucHJvdG90eXBlLnBvcFBhcmVudCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnBhcmVudHMucG9wKCk7XG59O1xuXG5wcm90b3R5cGUuZ2V0UGFyZW50ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBsYXN0ID0gdGhpcy5sYXN0UGFyZW50KCkuc2xpY2UoKTtcbiAgdmFyIGZyYWcgPSBsYXN0LnNoaWZ0KCk7XG5cbiAgaWYgKCFsYXN0Lmxlbmd0aCkge1xuICAgIHJldHVybiBmcmFnO1xuICB9XG5cbiAgcmV0dXJuICdkb20uY2hpbGRBdCgnICsgZnJhZyArICcsIFsnICsgbGFzdC5qb2luKCcsICcpICsgJ10pJztcbn07XG5cbnByb3RvdHlwZS5sYXN0UGFyZW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLnBhcmVudHNbdGhpcy5wYXJlbnRzLmxlbmd0aC0xXTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2h5ZHJhdGlvbi1qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O3FCQUErQixTQUFTOzttQ0FDbEIsMEJBQTBCOztBQUVoRCxTQUFTLDJCQUEyQixHQUFHO0FBQ3JDLE1BQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLE1BQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDckIsTUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDakIsTUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztDQUN4Qjs7a0JBRWMsMkJBQTJCOztBQUUxQyxJQUFJLFNBQVMsR0FBRywyQkFBMkIsQ0FBQyxTQUFTLENBQUM7O0FBRXRELFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQzdDLE1BQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUIsTUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QixNQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDL0IsTUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQUksQ0FBQyxrQkFBa0IsQ0FBQyxN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RCxTQUFPLGNBQWMsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQy9ELENBQUM7O0FBRUYsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2hDLFNBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQztDQUM1QyxDQUFDIiwiZmlsZSI6Imh0bWxiYXJzLWNvbXBpbGVyL2h5ZHJhdGlvbi1qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvY2Vzc09wY29kZXMgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgYXJyYXkgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC9xdW90aW5nXCI7XG5cbmZ1bmN0aW9uIEh5ZHJhdGlvbkphdmFTY3JpcHRDb21waWxlcigpIHtcbiAgdGhpcy5zdGFjayA9IFtdO1xuICB0aGlzLnNvdXJjZSA9IFtdO1xuICB0aGlzLm11c3RhY2hlcyA9IFtdO1xuICB0aGlzLnBhcmVudHMgPSBbWydmcmFnbWVudCddXTtcbiAgdGhpcy5wYXJlbnRDb3VudCA9IDA7XG4gIHRoaXMubW9ycGhzID0gW107XG4gIHRoaXMuZnJhZ21lbnRQcm9jZXNzaW5nID0gW107XG4gIHRoaXMuaG9va3MgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEh5ZHJhdGlvbkphdmFTY3JpcHRDb21waWxlcjtcblxudmFyIHByb3RvdHlwZSA9IEh5ZHJhdGlvbkphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGU7XG5cbnByb3RvdHlwZS5jb21waWxlID0gZnVuY3Rpb24ob3Bjb2Rlcywgb3B0aW9ucykge1xuICB0aGlzLnN0YWNrLmxlbmd0aCA9IDA7XG4gIHRoaXMubXVzdGFjaGVzLmxlbmd0aCA9IDA7XG4gIHRoaXMuc291cmNlLmxlbmd0aCA9IDA7XG4gIHRoaXMucGFyZW50cy5sZW5ndGggPSAxO1xuICB0aGlzLnBhcmVudHNbMF0gPSBbJ2ZyYWdtZW50J107XG4gIHRoaXMubW9ycGhzLmxlbmd0aCA9IDA7XG4gIHRoaXMuZnJhZ21lbnRQcm9jZXNzaW5nLmxlbmd0aCA9IDA7XG4gIHRoaXMucGFyZW50Q291bnQgPSAwO1xuICB0aGlzLmluZGVudCA9IChvcHRpb25zICYmIG9wdGlvbnMuaW5kZW50KSB8fCBcIlwiO1xuICB0aGlzLmhvb2tzID0ge307XG4gIHRoaXMuaGFzT3BlbkJvdW5kYXJ5ID0gZmFsc2U7XG4gIHRoaXMuaGFzQ2xvc2VCb3VuZGFyeSA9IGZhbHNlO1xuICB0aGlzLnN0YXRlbWVudHMgPSBbXTtcbiAgdGhpcy5leHByZXNzaW9uU3RhY2sgPSBbXTtcbiAgdGhpcy5sb2NhbHMgPSBbXTtcbiAgdGhpcy5oYXNPcGVuQm91bmRhcnkgPSBmYWxzZTtcbiAgdGhpcy5oYXNDbG9zZUJvdW5kYXJ5ID0gZmFsc2U7XG5cbiAgcHJvY2Vzc09wY29kZXModGhpcywgb3Bjb2Rlcyk7XG5cbiAgaWYgKHRoaXMuaGFzT3BlbkJvdW5kYXJ5KSB7XG4gICAgdGhpcy5zb3VyY2UudW5zaGlmdCh0aGlzLmluZGVudCtcIiAgZG9tLmluc2VydEJvdW5kYXJ5KGZyYWdtZW50LCAwKTtcXG5cIik7XG4gIH1cblxuICBpZiAodGhpcy5oYXNDbG9zZUJvdW5kYXJ5KSB7XG4gICAgdGhpcy5zb3VyY2UudW5zaGlmdCh0aGlzLmluZGVudCtcIiAgZG9tLmluc2VydEJvdW5kYXJ5KGZyYWdtZW50LCBudWxsKTtcXG5cIik7XG4gIH1cblxuICB2YXIgaSwgbDtcblxuICB2YXIgaW5kZW50ID0gdGhpcy5pbmRlbnQ7XG5cbiAgdmFyIG1vcnBocztcblxuICB2YXIgcmVzdWx0ID0ge1xuICAgIGNyZWF0ZU1vcnBoc1Byb2dyYW06ICcnLFxuICAgIGh5ZHJhdGVNb3JwaHNQcm9ncmFtOiAnJyxcbiAgICBmcmFnbWVudFByb2Nlc3NpbmdQcm9ncmFtOiAnJyxcbiAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgbG9jYWxzOiB0aGlzLmxvY2FscyxcbiAgICBoYXNNb3JwaHM6IGZhbHNlXG4gIH07XG5cbiAgcmVzdWx0Lmh5ZHJhdGVNb3JwaHNQcm9ncmFtID0gdGhpcy5zb3VyY2Uuam9pbignJyk7XG5cbiAgaWYgKHRoaXMubW9ycGhzLmxlbmd0aCkge1xuICAgIHJlc3VsdC5oYXNNb3JwaHMgPSB0cnVlO1xuICAgIG1vcnBocyA9XG4gICAgICBpbmRlbnQrJyAgdmFyIG1vcnBocyA9IG5ldyBBcnJheSgnICsgdGhpcy5tb3JwaHMubGVuZ3RoICsgJyk7XFxuJztcblxuICAgICAgZm9yIChpID0gMCwgbCA9IHRoaXMubW9ycGhzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICB2YXIgbW9ycGggPSB0aGlzLm1vcnBoc1tpXTtcbiAgICAgICAgbW9ycGhzICs9IGluZGVudCsnICBtb3JwaHNbJytpKyddID0gJyttb3JwaCsnO1xcbic7XG4gICAgICB9XG4gIH1cblxuICBpZiAodGhpcy5mcmFnbWVudFByb2Nlc3NpbmcubGVuZ3RoKSB7XG4gICAgdmFyIHByb2Nlc3NpbmcgPSBcIlwiO1xuICAgIGZvciAoaSA9IDAsIGwgPSB0aGlzLmZyYWdtZW50UHJvY2Vzc2luZy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgIHByb2Nlc3NpbmcgKz0gdGhpcy5pbmRlbnQrJyAgJyt0aGlzLmZyYWdtZW50UHJvY2Vzc2luZ1tpXSsnXFxuJztcbiAgICB9XG4gICAgcmVzdWx0LmZyYWdtZW50UHJvY2Vzc2luZ1Byb2dyYW0gPSBwcm9jZXNzaW5nO1xuICB9XG5cbiAgdmFyIGNyZWF0ZU1vcnBoc1Byb2dyYW07XG4gIGlmIChyZXN1bHQuaGFzTW9ycGhzKSB7XG4gICAgY3JlYXRlTW9ycGhzUHJvZ3JhbSA9XG4gICAgICAnZnVuY3Rpb24gYnVpbGRSZW5kZXJOb2Rlcyhkb20sIGZyYWdtZW50LCBjb250ZXh0dWFsRWxlbWVudCkge1xcbicgK1xuICAgICAgcmVzdWx0LmZyYWdtZW50UHJvY2Vzc2luZ1Byb2dyYW0gKyBtb3JwaHM7XG5cbiAgICAgIGlmICh0aGlzLmhhc09wZW5Cb3VuZGFyeSkge1xuICAgICAgICBjcmVhdGVNb3JwaHNQcm9ncmFtICs9IGluZGVudCtcIiAgZG9tLmluc2VydEJvdW5kYXJ5KGZyYWdtZW50LCAwKTtcXG5cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGFzQ2xvc2VCb3VuZGFyeSkge1xuICAgICAgICBjcmVhdGVNb3JwaHNQcm9ncmFtICs9IGluZGVudCtcIiAgZG9tLmluc2VydEJvdW5kYXJ5KGZyYWdtZW50LCBudWxsKTtcXG5cIjtcbiAgICAgIH1cblxuICAgICAgY3JlYXRlTW9ycGhzUHJvZ3JhbSArPVxuICAgICAgaW5kZW50ICsgJyAgcmV0dXJuIG1vcnBocztcXG4nICtcbiAgICAgIGluZGVudCsnfSc7XG4gIH0gZWxzZSB7XG4gICAgY3JlYXRlTW9ycGhzUHJvZ3JhbSA9XG4gICAgICAnZnVuY3Rpb24gYnVpbGRSZW5kZXJOb2RlcygpIHsgcmV0dXJuIFtdOyB9JztcbiAgfVxuXG4gIHJlc3VsdC5jcmVhdGVNb3JwaHNQcm9ncmFtID0gY3JlYXRlTW9ycGhzUHJvZ3JhbTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxucHJvdG90eXBlLnByZXBhcmVBcnJheSA9IGZ1bmN0aW9uKGxlbmd0aCkge1xuICB2YXIgdmFsdWVzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhbHVlcy5wdXNoKHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpKTtcbiAgfVxuXG4gIHRoaXMuZXhwcmVzc2lvblN0YWNrLnB1c2godmFsdWVzKTtcbn07XG5cbnByb3RvdHlwZS5wcmVwYXJlT2JqZWN0ID0gZnVuY3Rpb24oc2l6ZSkge1xuICB2YXIgcGFpcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIHBhaXJzLnB1c2godGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpKTtcbiAgfVxuXG4gIHRoaXMuZXhwcmVzc2lvblN0YWNrLnB1c2gocGFpcnMpO1xufTtcblxucHJvdG90eXBlLm9wZW5Cb3VuZGFyeSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmhhc09wZW5Cb3VuZGFyeSA9IHRydWU7XG59O1xuXG5wcm90b3R5cGUuY2xvc2VCb3VuZGFyeSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmhhc0Nsb3NlQm91bmRhcnkgPSB0cnVlO1xufTtcblxucHJvdG90eXBlLnB1c2hMaXRlcmFsID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgdGhpcy5leHByZXNzaW9uU3RhY2sucHVzaCh2YWx1ZSk7XG59O1xuXG5wcm90b3R5cGUucHVzaEdldEhvb2sgPSBmdW5jdGlvbihwYXRoLCBtZXRhKSB7XG4gIHRoaXMuZXhwcmVzc2lvblN0YWNrLnB1c2goWyAnZ2V0JywgcGF0aCwgbWV0YSBdKTtcbn07XG5cbnByb3RvdHlwZS5wdXNoU2V4cHJIb29rID0gZnVuY3Rpb24obWV0YSkge1xuICB0aGlzLmV4cHJlc3Npb25TdGFjay5wdXNoKFtcbiAgICAnc3ViZXhwcicsXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksXG4gICAgbWV0YVxuICBdKTtcbn07XG5cbnByb3RvdHlwZS5wdXNoQ29uY2F0SG9vayA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmV4cHJlc3Npb25TdGFjay5wdXNoKFsgJ2NvbmNhdCcsIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpIF0pO1xufTtcblxucHJvdG90eXBlLnByaW50U2V0SG9vayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdGhpcy5sb2NhbHMucHVzaChuYW1lKTtcbn07XG5cbnByb3RvdHlwZS5wcmludEJsb2NrSG9vayA9IGZ1bmN0aW9uKHRlbXBsYXRlSWQsIGludmVyc2VJZCwgbWV0YSkge1xuICB0aGlzLnN0YXRlbWVudHMucHVzaChbXG4gICAgJ2Jsb2NrJyxcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSwgLy8gcGF0aFxuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBwYXJhbXNcbiAgICB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSwgLy8gaGFzaFxuICAgIHRlbXBsYXRlSWQsXG4gICAgaW52ZXJzZUlkLFxuICAgIG1ldGFcbiAgXSk7XG59O1xuXG5wcm90b3R5cGUucHJpbnRJbmxpbmVIb29rID0gZnVuY3Rpb24obWV0YSkge1xuICB2YXIgcGF0aCA9IHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpO1xuICB2YXIgcGFyYW1zID0gdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCk7XG4gIHZhciBoYXNoID0gdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCk7XG5cbiAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goWyAnaW5saW5lJywgcGF0aCwgcGFyYW1zLCBoYXNoLCBtZXRhIF0pO1xufTtcblxucHJvdG90eXBlLnByaW50Q29udGVudEhvb2sgPSBmdW5jdGlvbihtZXRhKSB7XG4gIHRoaXMuc3RhdGVtZW50cy5wdXNoKFsgJ2NvbnRlbnQnLCB0aGlzLmV4cHJlc3Npb25TdGFjay5wb3AoKSwgbWV0YV0pO1xufTtcblxucHJvdG90eXBlLnByaW50Q29tcG9uZW50SG9vayA9IGZ1bmN0aW9uKHRlbXBsYXRlSWQpIHtcbiAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goW1xuICAgICdjb21wb25lbnQnLFxuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBwYXRoXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIGF0dHJzXG4gICAgdGVtcGxhdGVJZFxuICBdKTtcbn07XG5cbnByb3RvdHlwZS5wcmludEF0dHJpYnV0ZUhvb2sgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goW1xuICAgICdhdHRyaWJ1dGUnLFxuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBuYW1lXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCkgIC8vIHZhbHVlO1xuICBdKTtcbn07XG5cbnByb3RvdHlwZS5wcmludEVsZW1lbnRIb29rID0gZnVuY3Rpb24obWV0YSkge1xuICB0aGlzLnN0YXRlbWVudHMucHVzaChbXG4gICAgJ2VsZW1lbnQnLFxuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBwYXRoXG4gICAgdGhpcy5leHByZXNzaW9uU3RhY2sucG9wKCksIC8vIHBhcmFtc1xuICAgIHRoaXMuZXhwcmVzc2lvblN0YWNrLnBvcCgpLCAvLyBoYXNoXG4gICAgbWV0YVxuICBdKTtcbn07XG5cbnByb3RvdHlwZS5jcmVhdGVNb3JwaCA9IGZ1bmN0aW9uKG1vcnBoTnVtLCBwYXJlbnRQYXRoLCBzdGFydEluZGV4LCBlbmRJbmRleCwgZXNjYXBlZCkge1xuICB2YXIgaXNSb290ID0gcGFyZW50UGF0aC5sZW5ndGggPT09IDA7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXG4gIHZhciBtb3JwaE1ldGhvZCA9IGVzY2FwZWQgPyAnY3JlYXRlTW9ycGhBdCcgOiAnY3JlYXRlVW5zYWZlTW9ycGhBdCc7XG4gIHZhciBtb3JwaCA9IFwiZG9tLlwiK21vcnBoTWV0aG9kK1wiKFwiK3BhcmVudCtcbiAgICBcIixcIisoc3RhcnRJbmRleCA9PT0gbnVsbCA/IFwiLTFcIiA6IHN0YXJ0SW5kZXgpK1xuICAgIFwiLFwiKyhlbmRJbmRleCA9PT0gbnVsbCA/IFwiLTFcIiA6IGVuZEluZGV4KStcbiAgICAoaXNSb290ID8gXCIsY29udGV4dHVhbEVsZW1lbnQpXCIgOiBcIilcIik7XG5cbiAgdGhpcy5tb3JwaHNbbW9ycGhOdW1dID0gbW9ycGg7XG59O1xuXG5wcm90b3R5cGUuY3JlYXRlQXR0ck1vcnBoID0gZnVuY3Rpb24oYXR0ck1vcnBoTnVtLCBlbGVtZW50TnVtLCBuYW1lLCBlc2NhcGVkLCBuYW1lc3BhY2UpIHtcbiAgdmFyIG1vcnBoTWV0aG9kID0gZXNjYXBlZCA/ICdjcmVhdGVBdHRyTW9ycGgnIDogJ2NyZWF0ZVVuc2FmZUF0dHJNb3JwaCc7XG4gIHZhciBtb3JwaCA9IFwiZG9tLlwiK21vcnBoTWV0aG9kK1wiKGVsZW1lbnRcIitlbGVtZW50TnVtK1wiLCAnXCIrbmFtZSsobmFtZXNwYWNlID8gXCInLCAnXCIrbmFtZXNwYWNlIDogJycpK1wiJylcIjtcbiAgdGhpcy5tb3JwaHNbYXR0ck1vcnBoTnVtXSA9IG1vcnBoO1xufTtcblxucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnRNb3JwaCA9IGZ1bmN0aW9uKG1vcnBoTnVtLCBlbGVtZW50TnVtICkge1xuICB2YXIgbW9ycGhNZXRob2QgPSAnY3JlYXRlRWxlbWVudE1vcnBoJztcbiAgdmFyIG1vcnBoID0gXCJkb20uXCIrbW9ycGhNZXRob2QrXCIoZWxlbWVudFwiK2VsZW1lbnROdW0rXCIpXCI7XG4gIHRoaXMubW9ycGhzW21vcnBoTnVtXSA9IG1vcnBoO1xufTtcblxucHJvdG90eXBlLnJlcGFpckNsb25lZE5vZGUgPSBmdW5jdGlvbihibGFua0NoaWxkVGV4dE5vZGVzLCBpc0VsZW1lbnRDaGVja2VkKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpLFxuICAgICAgcHJvY2Vzc2luZyA9ICdpZiAodGhpcy5jYWNoZWRGcmFnbWVudCkgeyBkb20ucmVwYWlyQ2xvbmVkTm9kZSgnK3BhcmVudCsnLCcrXG4gICAgICAgICAgICAgICAgICAgYXJyYXkoYmxhbmtDaGlsZFRleHROb2RlcykrXG4gICAgICAgICAgICAgICAgICAgKCBpc0VsZW1lbnRDaGVja2VkID8gJyx0cnVlJyA6ICcnICkrXG4gICAgICAgICAgICAgICAgICAgJyk7IH0nO1xuICB0aGlzLmZyYWdtZW50UHJvY2Vzc2luZy5wdXNoKFxuICAgIHByb2Nlc3NpbmdcbiAgKTtcbn07XG5cbnByb3RvdHlwZS5zaGFyZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50TnVtKXtcbiAgdmFyIGVsZW1lbnROb2Rlc05hbWUgPSBcImVsZW1lbnRcIiArIGVsZW1lbnROdW07XG4gIHRoaXMuZnJhZ21lbnRQcm9jZXNzaW5nLnB1c2goJ3ZhciAnK2VsZW1lbnROb2Rlc05hbWUrJyA9ICcrdGhpcy5nZXRQYXJlbnQoKSsnOycpO1xuICB0aGlzLnBhcmVudHNbdGhpcy5wYXJlbnRzLmxlbmd0aC0xXSA9IFtlbGVtZW50Tm9kZXNOYW1lXTtcbn07XG5cbnByb3RvdHlwZS5jb25zdW1lUGFyZW50ID0gZnVuY3Rpb24oaSkge1xuICB2YXIgbmV3UGFyZW50ID0gdGhpcy5sYXN0UGFyZW50KCkuc2xpY2UoKTtcbiAgbmV3UGFyZW50LnB1c2goaSk7XG5cbiAgdGhpcy5wYXJlbnRzLnB1c2gobmV3UGFyZW50KTtcbn07XG5cbnByb3RvdHlwZS5wb3BQYXJlbnQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5wYXJlbnRzLnBvcCgpO1xufTtcblxucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgbGFzdCA9IHRoaXMubGFzdFBhcmVudCgpLnNsaWNlKCk7XG4gIHZhciBmcmFnID0gbGFzdC5zaGlmdCgpO1xuXG4gIGlmICghbGFzdC5sZW5ndGgpIHtcbiAgICByZXR1cm4gZnJhZztcbiAgfVxuXG4gIHJldHVybiAnZG9tLmNoaWxkQXQoJyArIGZyYWcgKyAnLCBbJyArIGxhc3Quam9pbignLCAnKSArICddKSc7XG59O1xuXG5wcm90b3R5cGUubGFzdFBhcmVudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnRzW3RoaXMucGFyZW50cy5sZW5ndGgtMV07XG59O1xuIl19

@@ -178,3 +178,3 @@ exports.__esModule = true;

HydrationOpcodeCompiler.prototype.component = function (component, childIndex, childCount) {
this.pushMorphPlaceholderNode(childIndex, childCount);
this.pushMorphPlaceholderNode(childIndex, childCount, component.isStatic);

@@ -254,11 +254,14 @@ var program = component.program || {};

HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function (childIndex, childCount) {
if (this.paths.length === 0) {
if (childIndex === 0) {
this.opcode('openBoundary');
HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function (childIndex, childCount, skipBoundaryNodes) {
if (!skipBoundaryNodes) {
if (this.paths.length === 0) {
if (childIndex === 0) {
this.opcode('openBoundary');
}
if (childIndex === childCount - 1) {
this.opcode('closeBoundary');
}
}
if (childIndex === childCount - 1) {
this.opcode('closeBoundary');
}
}
this.comment();

@@ -364,2 +367,2 @@ };

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2h5ZHJhdGlvbi1vcGNvZGUtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBNEIsb0JBQW9COzs7O3FCQUNqQixTQUFTOzs0QkFDUCxrQkFBa0I7O3NDQUMzQiw4QkFBOEI7O21DQUM3QiwwQkFBMEI7O0FBR25ELFNBQVMsc0JBQXNCLENBQUMsT0FBTyxFQUFDO0FBQ3RDLE9BQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBQyxDQUFDLEdBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3JELFFBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQzVDLGFBQU8sSUFBSSxDQUFDO0tBQ2I7R0FDRjtBQUNELFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyx1QkFBdUIsR0FBRztBQUNqQyxNQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNoQixNQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNwQixNQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLE1BQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdEI7O2tCQUVjLHVCQUF1Qjs7QUFFdEMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFTLEdBQUcsRUFBRTtBQUN4RCxNQUFJLGVBQWUsR0FBRywrQkFBcUIsQ0FBQztBQUM1QyxpQkFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENB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LE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDbkIiLCJmaWxlIjoiaHRtbGJhcnMtY29tcGlsZXIvaHlkcmF0aW9uLW9wY29kZS1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUZW1wbGF0ZVZpc2l0b3IgZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IHsgcHJvY2Vzc09wY29kZXMgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0QXR0ck5hbWVzcGFjZSB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsXCI7XG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvYXJyYXktdXRpbHNcIjtcbmltcG9ydCB7IGlzSGVscGVyIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXN5bnRheC91dGlsc1wiO1xuaW1wb3J0IHsgdW53cmFwTXVzdGFjaGUgfSBmcm9tIFwiLi4vaHRtbGJhcnMtc3ludGF4L3V0aWxzXCI7XG5cbmZ1bmN0aW9uIGRldGVjdElzRWxlbWVudENoZWNrZWQoZWxlbWVudCl7XG4gIGZvciAodmFyIGk9MCwgbGVuPWVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7aTxsZW47aSsrKSB7XG4gICAgaWYgKGVsZW1lbnQuYXR0cmlidXRlc1tpXS5uYW1lID09PSAnY2hlY2tlZCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIEh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyKCkge1xuICB0aGlzLm9wY29kZXMgPSBbXTtcbiAgdGhpcy5wYXRocyA9IFtdO1xuICB0aGlzLnRlbXBsYXRlSWQgPSAwO1xuICB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4ID0gMDtcbiAgdGhpcy5tb3JwaHMgPSBbXTtcbiAgdGhpcy5tb3JwaE51bSA9IDA7XG4gIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gIHRoaXMuZWxlbWVudE51bSA9IC0xO1xufVxuXG5leHBvcnQgZGVmYXVsdCBIeWRyYXRpb25PcGNvZGVDb21waWxlcjtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmNvbXBpbGUgPSBmdW5jdGlvbihhc3QpIHtcbiAgdmFyIHRlbXBsYXRlVmlzaXRvciA9IG5ldyBUZW1wbGF0ZVZpc2l0b3IoKTtcbiAgdGVtcGxhdGVWaXNpdG9yLnZpc2l0KGFzdCk7XG5cbiAgcHJvY2Vzc09wY29kZXModGhpcywgdGVtcGxhdGVWaXNpdG9yLmFjdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLm9wY29kZXM7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzW25vZGUudHlwZV0obm9kZSk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUub3Bjb2RlID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcGFyYW1zID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB0aGlzLm9wY29kZXMucHVzaChbdHlwZSwgcGFyYW1zXSk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuc3RhcnRQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSwgYywgYmxhbmtDaGlsZFRleHROb2Rlcykge1xuICB0aGlzLm9wY29kZXMubGVuZ3RoID0gMDtcbiAgdGhpcy5wYXRocy5sZW5ndGggPSAwO1xuICB0aGlzLm1vcnBocy5sZW5ndGggPSAwO1xuICB0aGlzLnRlbXBsYXRlSWQgPSAwO1xuICB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4ID0gLTE7XG4gIHRoaXMubW9ycGhOdW0gPSAwO1xuXG4gIHZhciBibG9ja1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQYXJhbXMgfHwgW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja1BhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMub3Bjb2RlKCdwcmludFNldEhvb2snLCBibG9ja1BhcmFtc1tpXSwgaSk7XG4gIH1cblxuICBpZiAoYmxhbmtDaGlsZFRleHROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3JlcGFpckNsb25lZE5vZGUnLCBibGFua0NoaWxkVGV4dE5vZGVzKTtcbiAgfVxufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmluc2VydEJvdW5kYXJ5ID0gZnVuY3Rpb24oZmlyc3QpIHtcbiAgdGhpcy5vcGNvZGUoZmlyc3QgPyAnb3BlbkJvdW5kYXJ5JyA6ICdjbG9zZUJvdW5kYXJ5Jyk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuZW5kUHJvZ3JhbSA9IGZ1bmN0aW9uKCkge1xuICBkaXN0cmlidXRlTW9ycGhzKHRoaXMubW9ycGhzLCB0aGlzLm9wY29kZXMpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgKyt0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4O1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmNvbW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgKyt0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4O1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLm9wZW5FbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgcG9zLCBsZW4sIG11c3RhY2hlQ291bnQsIGJsYW5rQ2hpbGRUZXh0Tm9kZXMpIHtcbiAgZGlzdHJpYnV0ZU1vcnBocyh0aGlzLm1vcnBocywgdGhpcy5vcGNvZGVzKTtcbiAgKyt0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4O1xuXG4gIHRoaXMuZWxlbWVudCA9IHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXg7XG5cbiAgdGhpcy5vcGNvZGUoJ2NvbnN1bWVQYXJlbnQnLCB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4KTtcblxuICAvLyBJZiBvdXIgcGFyZW50IHJlZmVyZW5jZSB3aWxsIGJlIHVzZWQgbW9yZSB0aGFuIG9uY2UsIGNhY2hlIGl0cyByZWZlcmVuY2UuXG4gIGlmIChtdXN0YWNoZUNvdW50ID4gMSkge1xuICAgIHNoYXJlRWxlbWVudCh0aGlzKTtcbiAgfVxuXG4gIHZhciBpc0VsZW1lbnRDaGVja2VkID0gZGV0ZWN0SXNFbGVtZW50Q2hlY2tlZChlbGVtZW50KTtcbiAgaWYgKGJsYW5rQ2hpbGRUZXh0Tm9kZXMubGVuZ3RoID4gMCB8fCBpc0VsZW1lbnRDaGVja2VkKSB7XG4gICAgdGhpcy5vcGNvZGUoICdyZXBhaXJDbG9uZWROb2RlJyxcbiAgICAgICAgICAgICAgICAgYmxhbmtDaGlsZFRleHROb2RlcyxcbiAgICAgICAgICAgICAgICAgaXNFbGVtZW50Q2hlY2tlZCApO1xuICB9XG5cbiAgdGhpcy5wYXRocy5wdXNoKHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXgpO1xuICB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4ID0gLTE7XG5cbiAgZm9yRWFjaChlbGVtZW50LmF0dHJpYnV0ZXMsIHRoaXMuYXR0cmlidXRlLCB0aGlzKTtcbiAgZm9yRWFjaChlbGVtZW50Lm1vZGlmaWVycywgdGhpcy5lbGVtZW50TW9kaWZpZXIsIHRoaXMpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmNsb3NlRWxlbWVudCA9IGZ1bmN0aW9uKCkge1xuICBkaXN0cmlidXRlTW9ycGhzKHRoaXMubW9ycGhzLCB0aGlzLm9wY29kZXMpO1xuICB0aGlzLm9wY29kZSgncG9wUGFyZW50Jyk7XG4gIHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXggPSB0aGlzLnBhdGhzLnBvcCgpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLm11c3RhY2hlID0gZnVuY3Rpb24obXVzdGFjaGUsIGNoaWxkSW5kZXgsIGNoaWxkQ291bnQpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoY2hpbGRJbmRleCwgY2hpbGRDb3VudCk7XG5cbiAgdmFyIG9wY29kZTtcblxuICBpZiAoaXNIZWxwZXIobXVzdGFjaGUpKSB7XG4gICAgcHJlcGFyZUhhc2godGhpcywgbXVzdGFjaGUuaGFzaCk7XG4gICAgcHJlcGFyZVBhcmFtcyh0aGlzLCBtdXN0YWNoZS5wYXJhbXMpO1xuICAgIHByZXBhcmVQYXRoKHRoaXMsIG11c3RhY2hlLnBhdGgpO1xuICAgIG9wY29kZSA9ICdwcmludElubGluZUhvb2snO1xuICB9IGVsc2Uge1xuICAgIHByZXBhcmVQYXRoKHRoaXMsIG11c3RhY2hlLnBhdGgpO1xuICAgIG9wY29kZSA9ICdwcmludENvbnRlbnRIb29rJztcbiAgfVxuXG4gIHZhciBtb3JwaE51bSA9IHRoaXMubW9ycGhOdW0rKztcbiAgdmFyIHN0YXJ0ID0gdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbiAgdmFyIGVuZCA9IHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXg7XG4gIHRoaXMubW9ycGhzLnB1c2goW21vcnBoTnVtLCB0aGlzLnBhdGhzLnNsaWNlKCksIHN0YXJ0LCBlbmQsIG11c3RhY2hlLmVzY2FwZWRdKTtcblxuICB0aGlzLm9wY29kZShvcGNvZGUsIG1ldGEobXVzdGFjaGUpKTtcbn07XG5cbmZ1bmN0aW9uIG1ldGEobm9kZSkge1xuICBsZXQgbG9jID0gbm9kZS5sb2M7XG4gIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICByZXR1cm4gWyAnbG9jJywgW3NvdXJjZSB8fCBudWxsLCBbc3RhcnQubGluZSwgc3RhcnQuY29sdW1uXSwgW2VuZC5saW5lLCBlbmQuY29sdW1uXV0gXTtcbn1cblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmJsb2NrID0gZnVuY3Rpb24oYmxvY2ssIGNoaWxkSW5kZXgsIGNoaWxkQ291bnQpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoY2hpbGRJbmRleCwgY2hpbGRDb3VudCk7XG5cbiAgcHJlcGFyZUhhc2godGhpcywgYmxvY2suaGFzaCk7XG4gIHByZXBhcmVQYXJhbXModGhpcywgYmxvY2sucGFyYW1zKTtcbiAgcHJlcGFyZVBhdGgodGhpcywgYmxvY2sucGF0aCk7XG5cbiAgdmFyIG1vcnBoTnVtID0gdGhpcy5tb3JwaE51bSsrO1xuICB2YXIgc3RhcnQgPSB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4O1xuICB2YXIgZW5kID0gdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbiAgdGhpcy5tb3JwaHMucHVzaChbbW9ycGhOdW0sIHRoaXMucGF0aHMuc2xpY2UoKSwgc3RhcnQsIGVuZCwgdHJ1ZV0pO1xuXG4gIHZhciB0ZW1wbGF0ZUlkID0gdGhpcy50ZW1wbGF0ZUlkKys7XG4gIHZhciBpbnZlcnNlSWQgPSBibG9jay5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZCsrO1xuXG4gIHRoaXMub3Bjb2RlKCdwcmludEJsb2NrSG9vaycsIHRlbXBsYXRlSWQsIGludmVyc2VJZCwgbWV0YShibG9jaykpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmNvbXBvbmVudCA9IGZ1bmN0aW9uKGNvbXBvbmVudCwgY2hpbGRJbmRleCwgY2hpbGRDb3VudCkge1xuICB0aGlzLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZShjaGlsZEluZGV4LCBjaGlsZENvdW50KTtcblxuICB2YXIgcHJvZ3JhbSA9IGNvbXBvbmVudC5wcm9ncmFtIHx8IHt9O1xuICB2YXIgYmxvY2tQYXJhbXMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zIHx8IFtdO1xuXG4gIHZhciBhdHRycyA9IGNvbXBvbmVudC5hdHRyaWJ1dGVzO1xuICBmb3IgKHZhciBpID0gYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbmFtZSA9IGF0dHJzW2ldLm5hbWU7XG4gICAgdmFyIHZhbHVlID0gYXR0cnNbaV0udmFsdWU7XG5cbiAgICAvLyBUT0RPOiBJbnRyb2R1Y2UgY29udGV4dCBzcGVjaWZpYyBBU1Qgbm9kZXMgdG8gYXZvaWQgc3dpdGNoaW5nIGhlcmUuXG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIHZhbHVlLmNoYXJzKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgIHRoaXMuYWNjZXB0KHVud3JhcE11c3RhY2hlKHZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnQ29uY2F0U3RhdGVtZW50Jykge1xuICAgICAgcHJlcGFyZVBhcmFtcyh0aGlzLCB2YWx1ZS5wYXJ0cyk7XG4gICAgICB0aGlzLm9wY29kZSgncHVzaENvbmNhdEhvb2snLCB0aGlzLm1vcnBoTnVtKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBuYW1lKTtcbiAgfVxuXG4gIHZhciBtb3JwaE51bSA9IHRoaXMubW9ycGhOdW0rKztcbiAgdmFyIHN0YXJ0ID0gdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbiAgdmFyIGVuZCA9IHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXg7XG4gIHRoaXMubW9ycGhzLnB1c2goW21vcnBoTnVtLCB0aGlzLnBhdGhzLnNsaWNlKCksIHN0YXJ0LCBlbmQsIHRydWVdKTtcblxuICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIGF0dHJzLmxlbmd0aCk7XG4gIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGNvbXBvbmVudC50YWcpO1xuICB0aGlzLm9wY29kZSgncHJpbnRDb21wb25lbnRIb29rJywgdGhpcy50ZW1wbGF0ZUlkKyssIGJsb2NrUGFyYW1zLmxlbmd0aCwgbWV0YShjb21wb25lbnQpKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5hdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyKSB7XG4gIHZhciB2YWx1ZSA9IGF0dHIudmFsdWU7XG4gIHZhciBlc2NhcGVkID0gdHJ1ZTtcbiAgdmFyIG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UoYXR0ci5uYW1lKTtcblxuICAvLyBUT0RPOiBJbnRyb2R1Y2UgY29udGV4dCBzcGVjaWZpYyBBU1Qgbm9kZXMgdG8gYXZvaWQgc3dpdGNoaW5nIGhlcmUuXG4gIGlmICh2YWx1ZS50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICBlc2NhcGVkID0gdmFsdWUuZXNjYXBlZDtcbiAgICB0aGlzLmFjY2VwdCh1bndyYXBNdXN0YWNoZSh2YWx1ZSkpO1xuICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdDb25jYXRTdGF0ZW1lbnQnKSB7XG4gICAgcHJlcGFyZVBhcmFtcyh0aGlzLCB2YWx1ZS5wYXJ0cyk7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hDb25jYXRIb29rJywgdGhpcy5tb3JwaE51bSk7XG4gIH1cblxuICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBhdHRyLm5hbWUpO1xuXG4gIHZhciBhdHRyTW9ycGhOdW0gPSB0aGlzLm1vcnBoTnVtKys7XG5cbiAgaWYgKHRoaXMuZWxlbWVudCAhPT0gbnVsbCkge1xuICAgIHNoYXJlRWxlbWVudCh0aGlzKTtcbiAgfVxuXG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVBdHRyTW9ycGgnLCBhdHRyTW9ycGhOdW0sIHRoaXMuZWxlbWVudE51bSwgYXR0ci5uYW1lLCBlc2NhcGVkLCBuYW1lc3BhY2UpO1xuICB0aGlzLm9wY29kZSgncHJpbnRBdHRyaWJ1dGVIb29rJyk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuZWxlbWVudE1vZGlmaWVyID0gZnVuY3Rpb24obW9kaWZpZXIpIHtcbiAgcHJlcGFyZUhhc2godGhpcywgbW9kaWZpZXIuaGFzaCk7XG4gIHByZXBhcmVQYXJhbXModGhpcywgbW9kaWZpZXIucGFyYW1zKTtcbiAgcHJlcGFyZVBhdGgodGhpcywgbW9kaWZpZXIucGF0aCk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBhIGhlbHBlciBpbiBhIG5vZGUsIGFuZCB0aGlzIGVsZW1lbnQgaGFzIG5vdCBiZWVuIGNhY2hlZCwgY2FjaGUgaXRcbiAgaWYgKHRoaXMuZWxlbWVudCAhPT0gbnVsbCkge1xuICAgIHNoYXJlRWxlbWVudCh0aGlzKTtcbiAgfVxuXG4gIHB1Ymxpc2hFbGVtZW50TW9ycGgodGhpcyk7XG4gIHRoaXMub3Bjb2RlKCdwcmludEVsZW1lbnRIb29rJywgbWV0YShtb2RpZmllcikpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZSA9IGZ1bmN0aW9uKGNoaWxkSW5kZXgsIGNoaWxkQ291bnQpIHtcbiAgaWYgKHRoaXMucGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGNoaWxkSW5kZXggPT09IDApIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuQm91bmRhcnknKTtcbiAgICB9XG4gICAgaWYgKGNoaWxkSW5kZXggPT09IGNoaWxkQ291bnQgLSAxKSB7XG4gICAgICB0aGlzLm9wY29kZSgnY2xvc2VCb3VuZGFyeScpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNvbW1lbnQoKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIHByZXBhcmVIYXNoKHRoaXMsIG11c3RhY2hlLmhhc2gpO1xuICBwcmVwYXJlUGFyYW1zKHRoaXMsIG11c3RhY2hlLnBhcmFtcyk7XG4gIHByZXBhcmVQYXRoKHRoaXMsIG11c3RhY2hlLnBhdGgpO1xuICB0aGlzLm9wY29kZSgncHVzaFNleHBySG9vaycsIG1ldGEobXVzdGFjaGUpKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5TdWJFeHByZXNzaW9uID0gZnVuY3Rpb24oc2V4cHIpIHtcbiAgcHJlcGFyZUhhc2godGhpcywgc2V4cHIuaGFzaCk7XG4gIHByZXBhcmVQYXJhbXModGhpcywgc2V4cHIucGFyYW1zKTtcbiAgcHJlcGFyZVBhdGgodGhpcywgc2V4cHIucGF0aCk7XG4gIHRoaXMub3Bjb2RlKCdwdXNoU2V4cHJIb29rJywgbWV0YShzZXhwcikpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uID0gZnVuY3Rpb24ocGF0aCkge1xuICB0aGlzLm9wY29kZSgncHVzaEdldEhvb2snLCBwYXRoLm9yaWdpbmFsLCBtZXRhKHBhdGgpKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5TdHJpbmdMaXRlcmFsID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBub2RlLnZhbHVlKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5Cb29sZWFuTGl0ZXJhbCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbm9kZS52YWx1ZSk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuTnVtYmVyTGl0ZXJhbCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbm9kZS52YWx1ZSk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbm9kZS52YWx1ZSk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuTnVsbExpdGVyYWwgPSBmdW5jdGlvbihub2RlKSB7XG4gIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIG5vZGUudmFsdWUpO1xufTtcblxuZnVuY3Rpb24gcHJlcGFyZVBhdGgoY29tcGlsZXIsIHBhdGgpIHtcbiAgY29tcGlsZXIub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIHBhdGgub3JpZ2luYWwpO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUGFyYW1zKGNvbXBpbGVyLCBwYXJhbXMpIHtcbiAgZm9yICh2YXIgaSA9IHBhcmFtcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBwYXJhbSA9IHBhcmFtc1tpXTtcbiAgICBjb21waWxlcltwYXJhbS50eXBlXShwYXJhbSk7XG4gIH1cblxuICBjb21waWxlci5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIHBhcmFtcy5sZW5ndGgpO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlSGFzaChjb21waWxlciwgaGFzaCkge1xuICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzO1xuXG4gIGZvciAodmFyIGkgPSBwYWlycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBrZXkgPSBwYWlyc1tpXS5rZXk7XG4gICAgdmFyIHZhbHVlID0gcGFpcnNbaV0udmFsdWU7XG5cbiAgICBjb21waWxlclt2YWx1ZS50eXBlXSh2YWx1ZSk7XG4gICAgY29tcGlsZXIub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGtleSk7XG4gIH1cblxuICBjb21waWxlci5vcGNvZGUoJ3ByZXBhcmVPYmplY3QnLCBwYWlycy5sZW5ndGgpO1xufVxuXG5mdW5jdGlvbiBzaGFyZUVsZW1lbnQoY29tcGlsZXIpIHtcbiAgY29tcGlsZXIub3Bjb2RlKCdzaGFyZUVsZW1lbnQnLCArK2NvbXBpbGVyLmVsZW1lbnROdW0pO1xuICBjb21waWxlci5lbGVtZW50ID0gbnVsbDsgLy8gU2V0IGVsZW1lbnQgdG8gbnVsbCBzbyB3ZSBkb24ndCBjYWNoZSBpdCB0d2ljZVxufVxuXG5mdW5jdGlvbiBwdWJsaXNoRWxlbWVudE1vcnBoKGNvbXBpbGVyKSB7XG4gIHZhciBtb3JwaE51bSA9IGNvbXBpbGVyLm1vcnBoTnVtKys7XG4gIGNvbXBpbGVyLm9wY29kZSgnY3JlYXRlRWxlbWVudE1vcnBoJywgbW9ycGhOdW0sIGNvbXBpbGVyLmVsZW1lbnROdW0pO1xufVxuXG5mdW5jdGlvbiBkaXN0cmlidXRlTW9ycGhzKG1vcnBocywgb3Bjb2Rlcykge1xuICBpZiAobW9ycGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFNwbGljZSBtb3JwaHMgYWZ0ZXIgdGhlIG1vc3QgcmVjZW50IHNoYXJlUGFyZW50L2NvbnN1bWVQYXJlbnQuXG4gIHZhciBvO1xuICBmb3IgKG8gPSBvcGNvZGVzLmxlbmd0aCAtIDE7IG8gPj0gMDsgLS1vKSB7XG4gICAgdmFyIG9wY29kZSA9IG9wY29kZXNbb11bMF07XG4gICAgaWYgKG9wY29kZSA9PT0gJ3NoYXJlRWxlbWVudCcgfHwgb3Bjb2RlID09PSAnY29uc3VtZVBhcmVudCcgIHx8IG9wY29kZSA9PT0gJ3BvcFBhcmVudCcpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzcGxpY2VBcmdzID0gW28gKyAxLCAwXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb3JwaHMubGVuZ3RoOyArK2kpIHtcbiAgICBzcGxpY2VBcmdzLnB1c2goWydjcmVhdGVNb3JwaCcsIG1vcnBoc1tpXS5zbGljZSgpXSk7XG4gIH1cbiAgb3Bjb2Rlcy5zcGxpY2UuYXBwbHkob3Bjb2Rlcywgc3BsaWNlQXJncyk7XG4gIG1vcnBocy5sZW5ndGggPSAwO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL2h5ZHJhdGlvbi1vcGNvZGUtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBNEIsb0JBQW9COzs7O3FCQUNqQixTQUFTOzs0QkFDUCxrQkFBa0I7O3NDQUMzQiw4QkFBOEI7O21DQUM3QiwwQkFBMEI7O0FBR25ELFNBQVMsc0JBQXNCLENBQUMsT0FBTyxFQUFDO0FBQ3RDLE9BQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBQyxDQUFDLEdBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3JELFFBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQzVDLGFBQU8sSUFBSSxDQUFDO0tBQ2I7R0FDRjtBQUNELFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyx1QkFBdUIsR0FBRztBQUNqQyxNQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNsQixNQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNoQixNQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNwQixNQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLE1BQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLE1BQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7Q0FDdEI7O2tCQUVjLHVCQUF1Qjs7QUFFdEMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFTLEdBQUcsRUFBRTtBQUN4RCxNQUFJLGVBQWUsR0FBRywrQkFBcUIsQ0FBQztBQUM1QyxpQkFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENB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QUFDO0NBQ25CIiwiZmlsZSI6Imh0bWxiYXJzLWNvbXBpbGVyL2h5ZHJhdGlvbi1vcGNvZGUtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVtcGxhdGVWaXNpdG9yIGZyb20gXCIuL3RlbXBsYXRlLXZpc2l0b3JcIjtcbmltcG9ydCB7IHByb2Nlc3NPcGNvZGVzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbFwiO1xuaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG5pbXBvcnQgeyBpc0hlbHBlciB9IGZyb20gXCIuLi9odG1sYmFycy1zeW50YXgvdXRpbHNcIjtcbmltcG9ydCB7IHVud3JhcE11c3RhY2hlIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXN5bnRheC91dGlsc1wiO1xuXG5mdW5jdGlvbiBkZXRlY3RJc0VsZW1lbnRDaGVja2VkKGVsZW1lbnQpe1xuICBmb3IgKHZhciBpPTAsIGxlbj1lbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoO2k8bGVuO2krKykge1xuICAgIGlmIChlbGVtZW50LmF0dHJpYnV0ZXNbaV0ubmFtZSA9PT0gJ2NoZWNrZWQnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBIeWRyYXRpb25PcGNvZGVDb21waWxlcigpIHtcbiAgdGhpcy5vcGNvZGVzID0gW107XG4gIHRoaXMucGF0aHMgPSBbXTtcbiAgdGhpcy50ZW1wbGF0ZUlkID0gMDtcbiAgdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleCA9IDA7XG4gIHRoaXMubW9ycGhzID0gW107XG4gIHRoaXMubW9ycGhOdW0gPSAwO1xuICB0aGlzLmVsZW1lbnQgPSBudWxsO1xuICB0aGlzLmVsZW1lbnROdW0gPSAtMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXI7XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21waWxlID0gZnVuY3Rpb24oYXN0KSB7XG4gIHZhciB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gIHByb2Nlc3NPcGNvZGVzKHRoaXMsIHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcblxuICByZXR1cm4gdGhpcy5vcGNvZGVzO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdGhpc1tub2RlLnR5cGVdKG5vZGUpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLm9wY29kZSA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIHBhcmFtcyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgdGhpcy5vcGNvZGVzLnB1c2goW3R5cGUsIHBhcmFtc10pO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnN0YXJ0UHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0sIGMsIGJsYW5rQ2hpbGRUZXh0Tm9kZXMpIHtcbiAgdGhpcy5vcGNvZGVzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGF0aHMubGVuZ3RoID0gMDtcbiAgdGhpcy5tb3JwaHMubGVuZ3RoID0gMDtcbiAgdGhpcy50ZW1wbGF0ZUlkID0gMDtcbiAgdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleCA9IC0xO1xuICB0aGlzLm1vcnBoTnVtID0gMDtcblxuICB2YXIgYmxvY2tQYXJhbXMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zIHx8IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tQYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLm9wY29kZSgncHJpbnRTZXRIb29rJywgYmxvY2tQYXJhbXNbaV0sIGkpO1xuICB9XG5cbiAgaWYgKGJsYW5rQ2hpbGRUZXh0Tm9kZXMubGVuZ3RoID4gMCkge1xuICAgIHRoaXMub3Bjb2RlKCdyZXBhaXJDbG9uZWROb2RlJywgYmxhbmtDaGlsZFRleHROb2Rlcyk7XG4gIH1cbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5pbnNlcnRCb3VuZGFyeSA9IGZ1bmN0aW9uKGZpcnN0KSB7XG4gIHRoaXMub3Bjb2RlKGZpcnN0ID8gJ29wZW5Cb3VuZGFyeScgOiAnY2xvc2VCb3VuZGFyeScpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLmVuZFByb2dyYW0gPSBmdW5jdGlvbigpIHtcbiAgZGlzdHJpYnV0ZU1vcnBocyh0aGlzLm1vcnBocywgdGhpcy5vcGNvZGVzKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICsrdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21tZW50ID0gZnVuY3Rpb24oKSB7XG4gICsrdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5vcGVuRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcywgbGVuLCBtdXN0YWNoZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKSB7XG4gIGRpc3RyaWJ1dGVNb3JwaHModGhpcy5tb3JwaHMsIHRoaXMub3Bjb2Rlcyk7XG4gICsrdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcblxuICB0aGlzLmVsZW1lbnQgPSB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4O1xuXG4gIHRoaXMub3Bjb2RlKCdjb25zdW1lUGFyZW50JywgdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleCk7XG5cbiAgLy8gSWYgb3VyIHBhcmVudCByZWZlcmVuY2Ugd2lsbCBiZSB1c2VkIG1vcmUgdGhhbiBvbmNlLCBjYWNoZSBpdHMgcmVmZXJlbmNlLlxuICBpZiAobXVzdGFjaGVDb3VudCA+IDEpIHtcbiAgICBzaGFyZUVsZW1lbnQodGhpcyk7XG4gIH1cblxuICB2YXIgaXNFbGVtZW50Q2hlY2tlZCA9IGRldGVjdElzRWxlbWVudENoZWNrZWQoZWxlbWVudCk7XG4gIGlmIChibGFua0NoaWxkVGV4dE5vZGVzLmxlbmd0aCA+IDAgfHwgaXNFbGVtZW50Q2hlY2tlZCkge1xuICAgIHRoaXMub3Bjb2RlKCAncmVwYWlyQ2xvbmVkTm9kZScsXG4gICAgICAgICAgICAgICAgIGJsYW5rQ2hpbGRUZXh0Tm9kZXMsXG4gICAgICAgICAgICAgICAgIGlzRWxlbWVudENoZWNrZWQgKTtcbiAgfVxuXG4gIHRoaXMucGF0aHMucHVzaCh0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4KTtcbiAgdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleCA9IC0xO1xuXG4gIGZvckVhY2goZWxlbWVudC5hdHRyaWJ1dGVzLCB0aGlzLmF0dHJpYnV0ZSwgdGhpcyk7XG4gIGZvckVhY2goZWxlbWVudC5tb2RpZmllcnMsIHRoaXMuZWxlbWVudE1vZGlmaWVyLCB0aGlzKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jbG9zZUVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgZGlzdHJpYnV0ZU1vcnBocyh0aGlzLm1vcnBocywgdGhpcy5vcGNvZGVzKTtcbiAgdGhpcy5vcGNvZGUoJ3BvcFBhcmVudCcpO1xuICB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4ID0gdGhpcy5wYXRocy5wb3AoKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5tdXN0YWNoZSA9IGZ1bmN0aW9uKG11c3RhY2hlLCBjaGlsZEluZGV4LCBjaGlsZENvdW50KSB7XG4gIHRoaXMucHVzaE1vcnBoUGxhY2Vob2xkZXJOb2RlKGNoaWxkSW5kZXgsIGNoaWxkQ291bnQpO1xuXG4gIHZhciBvcGNvZGU7XG5cbiAgaWYgKGlzSGVscGVyKG11c3RhY2hlKSkge1xuICAgIHByZXBhcmVIYXNoKHRoaXMsIG11c3RhY2hlLmhhc2gpO1xuICAgIHByZXBhcmVQYXJhbXModGhpcywgbXVzdGFjaGUucGFyYW1zKTtcbiAgICBwcmVwYXJlUGF0aCh0aGlzLCBtdXN0YWNoZS5wYXRoKTtcbiAgICBvcGNvZGUgPSAncHJpbnRJbmxpbmVIb29rJztcbiAgfSBlbHNlIHtcbiAgICBwcmVwYXJlUGF0aCh0aGlzLCBtdXN0YWNoZS5wYXRoKTtcbiAgICBvcGNvZGUgPSAncHJpbnRDb250ZW50SG9vayc7XG4gIH1cblxuICB2YXIgbW9ycGhOdW0gPSB0aGlzLm1vcnBoTnVtKys7XG4gIHZhciBzdGFydCA9IHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXg7XG4gIHZhciBlbmQgPSB0aGlzLmN1cnJlbnRET01DaGlsZEluZGV4O1xuICB0aGlzLm1vcnBocy5wdXNoKFttb3JwaE51bSwgdGhpcy5wYXRocy5zbGljZSgpLCBzdGFydCwgZW5kLCBtdXN0YWNoZS5lc2NhcGVkXSk7XG5cbiAgdGhpcy5vcGNvZGUob3Bjb2RlLCBtZXRhKG11c3RhY2hlKSk7XG59O1xuXG5mdW5jdGlvbiBtZXRhKG5vZGUpIHtcbiAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICBsZXQgeyBzb3VyY2UsIHN0YXJ0LCBlbmQgfSA9IGxvYztcbiAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG59XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5ibG9jayA9IGZ1bmN0aW9uKGJsb2NrLCBjaGlsZEluZGV4LCBjaGlsZENvdW50KSB7XG4gIHRoaXMucHVzaE1vcnBoUGxhY2Vob2xkZXJOb2RlKGNoaWxkSW5kZXgsIGNoaWxkQ291bnQpO1xuXG4gIHByZXBhcmVIYXNoKHRoaXMsIGJsb2NrLmhhc2gpO1xuICBwcmVwYXJlUGFyYW1zKHRoaXMsIGJsb2NrLnBhcmFtcyk7XG4gIHByZXBhcmVQYXRoKHRoaXMsIGJsb2NrLnBhdGgpO1xuXG4gIHZhciBtb3JwaE51bSA9IHRoaXMubW9ycGhOdW0rKztcbiAgdmFyIHN0YXJ0ID0gdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbiAgdmFyIGVuZCA9IHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXg7XG4gIHRoaXMubW9ycGhzLnB1c2goW21vcnBoTnVtLCB0aGlzLnBhdGhzLnNsaWNlKCksIHN0YXJ0LCBlbmQsIHRydWVdKTtcblxuICB2YXIgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZCsrO1xuICB2YXIgaW52ZXJzZUlkID0gYmxvY2suaW52ZXJzZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLnRlbXBsYXRlSWQrKztcblxuICB0aGlzLm9wY29kZSgncHJpbnRCbG9ja0hvb2snLCB0ZW1wbGF0ZUlkLCBpbnZlcnNlSWQsIG1ldGEoYmxvY2spKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5jb21wb25lbnQgPSBmdW5jdGlvbihjb21wb25lbnQsIGNoaWxkSW5kZXgsIGNoaWxkQ291bnQpIHtcbiAgdGhpcy5wdXNoTW9ycGhQbGFjZWhvbGRlck5vZGUoY2hpbGRJbmRleCwgY2hpbGRDb3VudCwgY29tcG9uZW50LmlzU3RhdGljKTtcblxuICB2YXIgcHJvZ3JhbSA9IGNvbXBvbmVudC5wcm9ncmFtIHx8IHt9O1xuICB2YXIgYmxvY2tQYXJhbXMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zIHx8IFtdO1xuXG4gIHZhciBhdHRycyA9IGNvbXBvbmVudC5hdHRyaWJ1dGVzO1xuICBmb3IgKHZhciBpID0gYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbmFtZSA9IGF0dHJzW2ldLm5hbWU7XG4gICAgdmFyIHZhbHVlID0gYXR0cnNbaV0udmFsdWU7XG5cbiAgICAvLyBUT0RPOiBJbnRyb2R1Y2UgY29udGV4dCBzcGVjaWZpYyBBU1Qgbm9kZXMgdG8gYXZvaWQgc3dpdGNoaW5nIGhlcmUuXG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIHZhbHVlLmNoYXJzKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgIHRoaXMuYWNjZXB0KHVud3JhcE11c3RhY2hlKHZhbHVlKSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS50eXBlID09PSAnQ29uY2F0U3RhdGVtZW50Jykge1xuICAgICAgcHJlcGFyZVBhcmFtcyh0aGlzLCB2YWx1ZS5wYXJ0cyk7XG4gICAgICB0aGlzLm9wY29kZSgncHVzaENvbmNhdEhvb2snLCB0aGlzLm1vcnBoTnVtKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBuYW1lKTtcbiAgfVxuXG4gIHZhciBtb3JwaE51bSA9IHRoaXMubW9ycGhOdW0rKztcbiAgdmFyIHN0YXJ0ID0gdGhpcy5jdXJyZW50RE9NQ2hpbGRJbmRleDtcbiAgdmFyIGVuZCA9IHRoaXMuY3VycmVudERPTUNoaWxkSW5kZXg7XG4gIHRoaXMubW9ycGhzLnB1c2goW21vcnBoTnVtLCB0aGlzLnBhdGhzLnNsaWNlKCksIHN0YXJ0LCBlbmQsIHRydWVdKTtcblxuICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIGF0dHJzLmxlbmd0aCk7XG4gIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGNvbXBvbmVudC50YWcpO1xuICB0aGlzLm9wY29kZSgncHJpbnRDb21wb25lbnRIb29rJywgdGhpcy50ZW1wbGF0ZUlkKyssIGJsb2NrUGFyYW1zLmxlbmd0aCwgbWV0YShjb21wb25lbnQpKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5hdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyKSB7XG4gIHZhciB2YWx1ZSA9IGF0dHIudmFsdWU7XG4gIHZhciBlc2NhcGVkID0gdHJ1ZTtcbiAgdmFyIG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UoYXR0ci5uYW1lKTtcblxuICAvLyBUT0RPOiBJbnRyb2R1Y2UgY29udGV4dCBzcGVjaWZpYyBBU1Qgbm9kZXMgdG8gYXZvaWQgc3dpdGNoaW5nIGhlcmUuXG4gIGlmICh2YWx1ZS50eXBlID09PSAnVGV4dE5vZGUnKSB7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICBlc2NhcGVkID0gdmFsdWUuZXNjYXBlZDtcbiAgICB0aGlzLmFjY2VwdCh1bndyYXBNdXN0YWNoZSh2YWx1ZSkpO1xuICB9IGVsc2UgaWYgKHZhbHVlLnR5cGUgPT09ICdDb25jYXRTdGF0ZW1lbnQnKSB7XG4gICAgcHJlcGFyZVBhcmFtcyh0aGlzLCB2YWx1ZS5wYXJ0cyk7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hDb25jYXRIb29rJywgdGhpcy5tb3JwaE51bSk7XG4gIH1cblxuICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBhdHRyLm5hbWUpO1xuXG4gIHZhciBhdHRyTW9ycGhOdW0gPSB0aGlzLm1vcnBoTnVtKys7XG5cbiAgaWYgKHRoaXMuZWxlbWVudCAhPT0gbnVsbCkge1xuICAgIHNoYXJlRWxlbWVudCh0aGlzKTtcbiAgfVxuXG4gIHRoaXMub3Bjb2RlKCdjcmVhdGVBdHRyTW9ycGgnLCBhdHRyTW9ycGhOdW0sIHRoaXMuZWxlbWVudE51bSwgYXR0ci5uYW1lLCBlc2NhcGVkLCBuYW1lc3BhY2UpO1xuICB0aGlzLm9wY29kZSgncHJpbnRBdHRyaWJ1dGVIb29rJyk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuZWxlbWVudE1vZGlmaWVyID0gZnVuY3Rpb24obW9kaWZpZXIpIHtcbiAgcHJlcGFyZUhhc2godGhpcywgbW9kaWZpZXIuaGFzaCk7XG4gIHByZXBhcmVQYXJhbXModGhpcywgbW9kaWZpZXIucGFyYW1zKTtcbiAgcHJlcGFyZVBhdGgodGhpcywgbW9kaWZpZXIucGF0aCk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBhIGhlbHBlciBpbiBhIG5vZGUsIGFuZCB0aGlzIGVsZW1lbnQgaGFzIG5vdCBiZWVuIGNhY2hlZCwgY2FjaGUgaXRcbiAgaWYgKHRoaXMuZWxlbWVudCAhPT0gbnVsbCkge1xuICAgIHNoYXJlRWxlbWVudCh0aGlzKTtcbiAgfVxuXG4gIHB1Ymxpc2hFbGVtZW50TW9ycGgodGhpcyk7XG4gIHRoaXMub3Bjb2RlKCdwcmludEVsZW1lbnRIb29rJywgbWV0YShtb2RpZmllcikpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLnB1c2hNb3JwaFBsYWNlaG9sZGVyTm9kZSA9IGZ1bmN0aW9uKGNoaWxkSW5kZXgsIGNoaWxkQ291bnQsIHNraXBCb3VuZGFyeU5vZGVzKSB7XG4gIGlmICghc2tpcEJvdW5kYXJ5Tm9kZXMpIHtcbiAgICBpZiAodGhpcy5wYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChjaGlsZEluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdvcGVuQm91bmRhcnknKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZEluZGV4ID09PSBjaGlsZENvdW50IC0gMSkge1xuICAgICAgICB0aGlzLm9wY29kZSgnY2xvc2VCb3VuZGFyeScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuY29tbWVudCgpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLk11c3RhY2hlU3RhdGVtZW50ID0gZnVuY3Rpb24obXVzdGFjaGUpIHtcbiAgcHJlcGFyZUhhc2godGhpcywgbXVzdGFjaGUuaGFzaCk7XG4gIHByZXBhcmVQYXJhbXModGhpcywgbXVzdGFjaGUucGFyYW1zKTtcbiAgcHJlcGFyZVBhdGgodGhpcywgbXVzdGFjaGUucGF0aCk7XG4gIHRoaXMub3Bjb2RlKCdwdXNoU2V4cHJIb29rJywgbWV0YShtdXN0YWNoZSkpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLlN1YkV4cHJlc3Npb24gPSBmdW5jdGlvbihzZXhwcikge1xuICBwcmVwYXJlSGFzaCh0aGlzLCBzZXhwci5oYXNoKTtcbiAgcHJlcGFyZVBhcmFtcyh0aGlzLCBzZXhwci5wYXJhbXMpO1xuICBwcmVwYXJlUGF0aCh0aGlzLCBzZXhwci5wYXRoKTtcbiAgdGhpcy5vcGNvZGUoJ3B1c2hTZXhwckhvb2snLCBtZXRhKHNleHByKSk7XG59O1xuXG5IeWRyYXRpb25PcGNvZGVDb21waWxlci5wcm90b3R5cGUuUGF0aEV4cHJlc3Npb24gPSBmdW5jdGlvbihwYXRoKSB7XG4gIHRoaXMub3Bjb2RlKCdwdXNoR2V0SG9vaycsIHBhdGgub3JpZ2luYWwsIG1ldGEocGF0aCkpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwgPSBmdW5jdGlvbihub2RlKSB7XG4gIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIG5vZGUudmFsdWUpO1xufTtcblxuSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIucHJvdG90eXBlLkJvb2xlYW5MaXRlcmFsID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBub2RlLnZhbHVlKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5OdW1iZXJMaXRlcmFsID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBub2RlLnZhbHVlKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5VbmRlZmluZWRMaXRlcmFsID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBub2RlLnZhbHVlKTtcbn07XG5cbkh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbm9kZS52YWx1ZSk7XG59O1xuXG5mdW5jdGlvbiBwcmVwYXJlUGF0aChjb21waWxlciwgcGF0aCkge1xuICBjb21waWxlci5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgcGF0aC5vcmlnaW5hbCk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQYXJhbXMoY29tcGlsZXIsIHBhcmFtcykge1xuICBmb3IgKHZhciBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHBhcmFtID0gcGFyYW1zW2ldO1xuICAgIGNvbXBpbGVyW3BhcmFtLnR5cGVdKHBhcmFtKTtcbiAgfVxuXG4gIGNvbXBpbGVyLm9wY29kZSgncHJlcGFyZUFycmF5JywgcGFyYW1zLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVIYXNoKGNvbXBpbGVyLCBoYXNoKSB7XG4gIHZhciBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgZm9yICh2YXIgaSA9IHBhaXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGtleSA9IHBhaXJzW2ldLmtleTtcbiAgICB2YXIgdmFsdWUgPSBwYWlyc1tpXS52YWx1ZTtcblxuICAgIGNvbXBpbGVyW3ZhbHVlLnR5cGVdKHZhbHVlKTtcbiAgICBjb21waWxlci5vcGNvZGUoJ3B1c2hMaXRlcmFsJywga2V5KTtcbiAgfVxuXG4gIGNvbXBpbGVyLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIHBhaXJzLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHNoYXJlRWxlbWVudChjb21waWxlcikge1xuICBjb21waWxlci5vcGNvZGUoJ3NoYXJlRWxlbWVudCcsICsrY29tcGlsZXIuZWxlbWVudE51bSk7XG4gIGNvbXBpbGVyLmVsZW1lbnQgPSBudWxsOyAvLyBTZXQgZWxlbWVudCB0byBudWxsIHNvIHdlIGRvbid0IGNhY2hlIGl0IHR3aWNlXG59XG5cbmZ1bmN0aW9uIHB1Ymxpc2hFbGVtZW50TW9ycGgoY29tcGlsZXIpIHtcbiAgdmFyIG1vcnBoTnVtID0gY29tcGlsZXIubW9ycGhOdW0rKztcbiAgY29tcGlsZXIub3Bjb2RlKCdjcmVhdGVFbGVtZW50TW9ycGgnLCBtb3JwaE51bSwgY29tcGlsZXIuZWxlbWVudE51bSk7XG59XG5cbmZ1bmN0aW9uIGRpc3RyaWJ1dGVNb3JwaHMobW9ycGhzLCBvcGNvZGVzKSB7XG4gIGlmIChtb3JwaHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gU3BsaWNlIG1vcnBocyBhZnRlciB0aGUgbW9zdCByZWNlbnQgc2hhcmVQYXJlbnQvY29uc3VtZVBhcmVudC5cbiAgdmFyIG87XG4gIGZvciAobyA9IG9wY29kZXMubGVuZ3RoIC0gMTsgbyA+PSAwOyAtLW8pIHtcbiAgICB2YXIgb3Bjb2RlID0gb3Bjb2Rlc1tvXVswXTtcbiAgICBpZiAob3Bjb2RlID09PSAnc2hhcmVFbGVtZW50JyB8fCBvcGNvZGUgPT09ICdjb25zdW1lUGFyZW50JyAgfHwgb3Bjb2RlID09PSAncG9wUGFyZW50Jykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIHNwbGljZUFyZ3MgPSBbbyArIDEsIDBdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1vcnBocy5sZW5ndGg7ICsraSkge1xuICAgIHNwbGljZUFyZ3MucHVzaChbJ2NyZWF0ZU1vcnBoJywgbW9ycGhzW2ldLnNsaWNlKCldKTtcbiAgfVxuICBvcGNvZGVzLnNwbGljZS5hcHBseShvcGNvZGVzLCBzcGxpY2VBcmdzKTtcbiAgbW9ycGhzLmxlbmd0aCA9IDA7XG59XG4iXX0=

@@ -44,8 +44,2 @@ exports.__esModule = true;

var dynamicNodes = {
mustache: true,
block: true,
component: true
};
TemplateCompiler.prototype.compile = function (ast) {

@@ -55,24 +49,4 @@ var templateVisitor = new _templateVisitor2.default();

var normalizedActions = [];
var actions = templateVisitor.actions;
_utils.processOpcodes(this, templateVisitor.actions);
for (var i = 0, l = actions.length - 1; i < l; i++) {
var action = actions[i];
var nextAction = actions[i + 1];
normalizedActions.push(action);
if (action[0] === "startProgram" && nextAction[0] in dynamicNodes) {
normalizedActions.push(['insertBoundary', [true]]);
}
if (nextAction[0] === "endProgram" && action[0] in dynamicNodes) {
normalizedActions.push(['insertBoundary', [false]]);
}
}
normalizedActions.push(actions[actions.length - 1]);
_utils.processOpcodes(this, normalizedActions);
return this.templates.pop();

@@ -150,3 +124,3 @@ };

var template = '(function() {\n' + this.getChildTemplateVars(indent + ' ') + indent + ' return {\n' + this.buildMeta(indent + ' ', program) + indent + ' arity: ' + blockParams.length + ',\n' + indent + ' cachedFragment: null,\n' + indent + ' hasRendered: false,\n' + indent + ' buildFragment: ' + fragmentProgram + ',\n' + indent + ' buildRenderNodes: ' + hydrationPrograms.createMorphsProgram + ',\n' + indent + ' statements: [\n' + statements + '\n' + indent + ' ],\n' + indent + ' locals: ' + locals + ',\n' + indent + ' templates: [' + templates + ']\n' + indent + ' };\n' + indent + '}())';
var template = '(function() {\n' + this.getChildTemplateVars(indent + ' ') + indent + ' return {\n' + this.buildMeta(indent + ' ', program) + indent + ' isEmpty: ' + (program.body.length ? 'false' : 'true') + ',\n' + indent + ' arity: ' + blockParams.length + ',\n' + indent + ' cachedFragment: null,\n' + indent + ' hasRendered: false,\n' + indent + ' buildFragment: ' + fragmentProgram + ',\n' + indent + ' buildRenderNodes: ' + hydrationPrograms.createMorphsProgram + ',\n' + indent + ' statements: [\n' + statements + '\n' + indent + ' ],\n' + indent + ' locals: ' + locals + ',\n' + indent + ' templates: [' + templates + ']\n' + indent + ' };\n' + indent + '}())';

@@ -205,2 +179,2 @@ this.templates.push(template);

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL3RlbXBsYXRlLWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7c0NBQW1DLDRCQUE0Qjs7OzswQ0FDeEIsZ0NBQWdDOzs7O3VDQUNuQyw2QkFBNkI7Ozs7MkNBQ3pCLGlDQUFpQzs7OzsrQkFDN0Msb0JBQW9COzs7O3FCQUNqQixTQUFTOzttQ0FDakIsMEJBQTBCOztzQ0FDN0IsOEJBQThCOztBQUVsRCxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtBQUNqQyxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLFlBQVcsRUFBRSxDQUFDO0FBQ2pFLE1BQUksQ0FBQyxzQkFBc0IsR0FBRyxzQ0FBNEIsQ0FBQztBQUMzRCxNQUFJLENBQUMsZ0JBQWdCLEdBQUcsMENBQWdDLENBQUM7QUFDekQsTUFBSSxDQUFDLHVCQUF1QixHQUFHLHVDQUE2QixDQUFDO0FBQzdELE1BQUksQ0FBQyxpQkFBaUIsR0FBRywyQ0FBaUMsQ0FBQztBQUMzRCxNQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQixNQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztDQUMxQjs7a0JBRWMsZ0JBQWdCOztBQUUvQixJQUFJLFlBQVksR0FBRztBQUNqQixVQUFRLEVBQUUsSUFBSTtBQUNkLE9BQUssRUFBRSxJQUFJO0FBQ1gsV0FBUyxFQUFFLElBQUk7Q0FDaEIsQ0FBQzs7QUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsR0FBRyxFQUFFO0FBQ2pELE1BQUksZUFBZSxHQUFHLCtCQUFxQixDQUFDO0FBQzVDLGlCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUUzQixNQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFJLE9BQU8sR0FB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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNwRCxDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDN0QsTUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxNQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3ZELENBQUM7O0FBRUYsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNqRSxNQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hELE1BQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDMUQsQ0FBQzs7QUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQVMsU0FBUyxFQUFFO0FBQzVELE1BQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDckQsQ0FBQyIsImZpbGUiOiJodG1sYmFycy1jb21waWxlci90ZW1wbGF0ZS1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGcmFnbWVudE9wY29kZUNvbXBpbGVyIGZyb20gJy4vZnJhZ21lbnQtb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCBGcmFnbWVudEphdmFTY3JpcHRDb21waWxlciBmcm9tICcuL2ZyYWdtZW50LWphdmFzY3JpcHQtY29tcGlsZXInO1xuaW1wb3J0IEh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyIGZyb20gJy4vaHlkcmF0aW9uLW9wY29kZS1jb21waWxlcic7XG5pbXBvcnQgSHlkcmF0aW9uSmF2YVNjcmlwdENvbXBpbGVyIGZyb20gJy4vaHlkcmF0aW9uLWphdmFzY3JpcHQtY29tcGlsZXInO1xuaW1wb3J0IFRlbXBsYXRlVmlzaXRvciBmcm9tIFwiLi90ZW1wbGF0ZS12aXNpdG9yXCI7XG5pbXBvcnQgeyBwcm9jZXNzT3Bjb2RlcyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyByZXBlYXQgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC9xdW90aW5nXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC9hcnJheS11dGlsc1wiO1xuXG5mdW5jdGlvbiBUZW1wbGF0ZUNvbXBpbGVyKG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdGhpcy5jb25zdW1lckJ1aWxkTWV0YSA9IHRoaXMub3B0aW9ucy5idWlsZE1ldGEgfHwgZnVuY3Rpb24oKSB7fTtcbiAgdGhpcy5mcmFnbWVudE9wY29kZUNvbXBpbGVyID0gbmV3IEZyYWdtZW50T3Bjb2RlQ29tcGlsZXIoKTtcbiAgdGhpcy5mcmFnbWVudENvbXBpbGVyID0gbmV3IEZyYWdtZW50SmF2YVNjcmlwdENvbXBpbGVyKCk7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIgPSBuZXcgSHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIoKTtcbiAgdGhpcy5oeWRyYXRpb25Db21waWxlciA9IG5ldyBIeWRyYXRpb25KYXZhU2NyaXB0Q29tcGlsZXIoKTtcbiAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcbiAgdGhpcy5jaGlsZFRlbXBsYXRlcyA9IFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUZW1wbGF0ZUNvbXBpbGVyO1xuXG52YXIgZHluYW1pY05vZGVzID0ge1xuICBtdXN0YWNoZTogdHJ1ZSxcbiAgYmxvY2s6IHRydWUsXG4gIGNvbXBvbmVudDogdHJ1ZVxufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuY29tcGlsZSA9IGZ1bmN0aW9uKGFzdCkge1xuICB2YXIgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICB0ZW1wbGF0ZVZpc2l0b3IudmlzaXQoYXN0KTtcblxuICB2YXIgbm9ybWFsaXplZEFjdGlvbnMgPSBbXTtcbiAgdmFyIGFjdGlvbnMgPSB0ZW1wbGF0ZVZpc2l0b3IuYWN0aW9ucztcblxuICBmb3IgKHZhciBpPTAsIGw9YWN0aW9ucy5sZW5ndGggLSAxOyBpPGw7IGkrKykge1xuICAgIHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xuICAgIHZhciBuZXh0QWN0aW9uID0gYWN0aW9uc1tpICsgMV07XG5cbiAgICBub3JtYWxpemVkQWN0aW9ucy5wdXNoKGFjdGlvbik7XG5cbiAgICBpZiAoYWN0aW9uWzBdID09PSBcInN0YXJ0UHJvZ3JhbVwiICYmIG5leHRBY3Rpb25bMF0gaW4gZHluYW1pY05vZGVzKSB7XG4gICAgICBub3JtYWxpemVkQWN0aW9ucy5wdXNoKFsnaW5zZXJ0Qm91bmRhcnknLCBbdHJ1ZV1dKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dEFjdGlvblswXSA9PT0gXCJlbmRQcm9ncmFtXCIgJiYgYWN0aW9uWzBdIGluIGR5bmFtaWNOb2Rlcykge1xuICAgICAgbm9ybWFsaXplZEFjdGlvbnMucHVzaChbJ2luc2VydEJvdW5kYXJ5JywgW2ZhbHNlXV0pO1xuICAgIH1cbiAgfVxuXG4gIG5vcm1hbGl6ZWRBY3Rpb25zLnB1c2goYWN0aW9uc1thY3Rpb25zLmxlbmd0aCAtIDFdKTtcblxuICBwcm9jZXNzT3Bjb2Rlcyh0aGlzLCBub3JtYWxpemVkQWN0aW9ucyk7XG5cbiAgcmV0dXJuIHRoaXMudGVtcGxhdGVzLnBvcCgpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuc3RhcnRQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSwgY2hpbGRUZW1wbGF0ZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5zdGFydFByb2dyYW0ocHJvZ3JhbSwgY2hpbGRUZW1wbGF0ZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKTtcbiAgdGhpcy5oeWRyYXRpb25PcGNvZGVDb21waWxlci5zdGFydFByb2dyYW0ocHJvZ3JhbSwgY2hpbGRUZW1wbGF0ZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKTtcblxuICB0aGlzLmNoaWxkVGVtcGxhdGVzLmxlbmd0aCA9IDA7XG4gIHdoaWxlKGNoaWxkVGVtcGxhdGVDb3VudC0tKSB7XG4gICAgdGhpcy5jaGlsZFRlbXBsYXRlcy5wdXNoKHRoaXMudGVtcGxhdGVzLnBvcCgpKTtcbiAgfVxufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuaW5zZXJ0Qm91bmRhcnkgPSBmdW5jdGlvbihmaXJzdCkge1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLmluc2VydEJvdW5kYXJ5KGZpcnN0KTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLmdldENoaWxkVGVtcGxhdGVWYXJzID0gZnVuY3Rpb24oaW5kZW50KSB7XG4gIHZhciB2YXJzID0gJyc7XG4gIGlmICh0aGlzLmNoaWxkVGVtcGxhdGVzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkVGVtcGxhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXJzICs9IGluZGVudCArICd2YXIgY2hpbGQnICsgaSArICcgPSAnICsgdGhpcy5jaGlsZFRlbXBsYXRlc1tpXSArICc7XFxuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcnM7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5nZXRIeWRyYXRpb25Ib29rcyA9IGZ1bmN0aW9uKGluZGVudCwgaG9va3MpIHtcbiAgdmFyIGhvb2tWYXJzID0gW107XG4gIGZvciAodmFyIGhvb2sgaW4gaG9va3MpIHtcbiAgICBob29rVmFycy5wdXNoKGhvb2sgKyAnID0gaG9va3MuJyArIGhvb2spO1xuICB9XG5cbiAgaWYgKGhvb2tWYXJzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ3ZhciBob29rcyA9IGVudi5ob29rcywgJyArIGhvb2tWYXJzLmpvaW4oJywgJykgKyAnO1xcbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5lbmRQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSwgcHJvZ3JhbURlcHRoKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5lbmRQcm9ncmFtKHByb2dyYW0pO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLmVuZFByb2dyYW0ocHJvZ3JhbSk7XG5cbiAgdmFyIGluZGVudCA9IHJlcGVhdChcIiAgXCIsIHByb2dyYW1EZXB0aCk7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIGluZGVudDogaW5kZW50ICsgXCIgICAgXCJcbiAgfTtcblxuICAvLyBmdW5jdGlvbiBidWlsZChkb20pIHsgcmV0dXJuIGZyYWdtZW50OyB9XG4gIHZhciBmcmFnbWVudFByb2dyYW0gPSB0aGlzLmZyYWdtZW50Q29tcGlsZXIuY29tcGlsZShcbiAgICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIub3Bjb2RlcyxcbiAgICBvcHRpb25zXG4gICk7XG5cbiAgLy8gZnVuY3Rpb24gaHlkcmF0ZShmcmFnbWVudCkgeyByZXR1cm4gbXVzdGFjaGVzOyB9XG4gIHZhciBoeWRyYXRpb25Qcm9ncmFtcyA9IHRoaXMuaHlkcmF0aW9uQ29tcGlsZXIuY29tcGlsZShcbiAgICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLm9wY29kZXMsXG4gICAgb3B0aW9uc1xuICApO1xuXG4gIHZhciBibG9ja1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQYXJhbXMgfHwgW107XG5cbiAgdmFyIHRlbXBsYXRlU2lnbmF0dXJlID0gJ2NvbnRleHQsIHJvb3ROb2RlLCBlbnYsIG9wdGlvbnMnO1xuICBpZiAoYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgIHRlbXBsYXRlU2lnbmF0dXJlICs9ICcsIGJsb2NrQXJndW1lbnRzJztcbiAgfVxuXG4gIHZhciBzdGF0ZW1lbnRzID0gbWFwKGh5ZHJhdGlvblByb2dyYW1zLnN0YXRlbWVudHMsIGZ1bmN0aW9uKHMpIHtcbiAgICByZXR1cm4gaW5kZW50KycgICAgICAnK0pTT04uc3RyaW5naWZ5KHMpO1xuICB9KS5qb2luKFwiLFxcblwiKTtcblxuICB2YXIgbG9jYWxzID0gSlNPTi5zdHJpbmdpZnkoaHlkcmF0aW9uUHJvZ3JhbXMubG9jYWxzKTtcblxuICB2YXIgdGVtcGxhdGVzID0gbWFwKHRoaXMuY2hpbGRUZW1wbGF0ZXMsIGZ1bmN0aW9uKF8sIGluZGV4KSB7XG4gICAgcmV0dXJuICdjaGlsZCcgKyBpbmRleDtcbiAgfSkuam9pbignLCAnKTtcblxuICB2YXIgdGVtcGxhdGUgPVxuICAgICcoZnVuY3Rpb24oKSB7XFxuJyArXG4gICAgdGhpcy5nZXRDaGlsZFRlbXBsYXRlVmFycyhpbmRlbnQgKyAnICAnKSArXG4gICAgaW5kZW50KycgIHJldHVybiB7XFxuJyArXG4gICAgdGhpcy5idWlsZE1ldGEoaW5kZW50KycgICAgJywgcHJvZ3JhbSkgK1xuICAgIGluZGVudCsnICAgIGFyaXR5OiAnICsgYmxvY2tQYXJhbXMubGVuZ3RoICsgJyxcXG4nICtcbiAgICBpbmRlbnQrJyAgICBjYWNoZWRGcmFnbWVudDogbnVsbCxcXG4nICtcbiAgICBpbmRlbnQrJyAgICBoYXNSZW5kZXJlZDogZmFsc2UsXFxuJyArXG4gICAgaW5kZW50KycgICAgYnVpbGRGcmFnbWVudDogJyArIGZyYWdtZW50UHJvZ3JhbSArICcsXFxuJyArXG4gICAgaW5kZW50KycgICAgYnVpbGRSZW5kZXJOb2RlczogJyArIGh5ZHJhdGlvblByb2dyYW1zLmNyZWF0ZU1vcnBoc1Byb2dyYW0gKyAnLFxcbicgK1xuICAgIGluZGVudCsnICAgIHN0YXRlbWVudHM6IFtcXG4nICsgc3RhdGVtZW50cyArICdcXG4nICtcbiAgICBpbmRlbnQrJyAgICBdLFxcbicgK1xuICAgIGluZGVudCsnICAgIGxvY2FsczogJyArIGxvY2FscyArICcsXFxuJyArXG4gICAgaW5kZW50KycgICAgdGVtcGxhdGVzOiBbJyArIHRlbXBsYXRlcyArICddXFxuJyArXG4gICAgaW5kZW50KycgIH07XFxuJyArXG4gICAgaW5kZW50Kyd9KCkpJztcblxuICB0aGlzLnRlbXBsYXRlcy5wdXNoKHRlbXBsYXRlKTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLmJ1aWxkTWV0YSA9IGZ1bmN0aW9uKGluZGVudCwgcHJvZ3JhbSkge1xuICB2YXIgbWV0YSA9IHRoaXMuY29uc3VtZXJCdWlsZE1ldGEocHJvZ3JhbSkgfHwge307XG5cbiAgdmFyIGhlYWQgPSBpbmRlbnQrJ21ldGE6ICc7XG4gIHZhciBzdHJpbmdNZXRhID0gSlNPTi5zdHJpbmdpZnkobWV0YSwgbnVsbCwgMikucmVwbGFjZSgvXFxuL2csICdcXG4nICsgaW5kZW50KTtcbiAgdmFyIHRhaWwgPSAnLFxcbic7XG5cbiAgcmV0dXJuIGhlYWQgKyBzdHJpbmdNZXRhICsgdGFpbDtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLm9wZW5FbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgaSwgbCwgciwgYywgYikge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIub3BlbkVsZW1lbnQoZWxlbWVudCwgaSwgbCwgciwgYywgYik7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIub3BlbkVsZW1lbnQoZWxlbWVudCwgaSwgbCwgciwgYywgYik7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5jbG9zZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50LCBpLCBsLCByKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5jbG9zZUVsZW1lbnQoZWxlbWVudCwgaSwgbCwgcik7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIuY2xvc2VFbGVtZW50KGVsZW1lbnQsIGksIGwsIHIpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuY29tcG9uZW50ID0gZnVuY3Rpb24oY29tcG9uZW50LCBpLCBsLCBzKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5jb21wb25lbnQoY29tcG9uZW50LCBpLCBsLCBzKTtcbiAgdGhpcy5oeWRyYXRpb25PcGNvZGVDb21waWxlci5jb21wb25lbnQoY29tcG9uZW50LCBpLCBsLCBzKTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLmJsb2NrID0gZnVuY3Rpb24oYmxvY2ssIGksIGwsIHMpIHtcbiAgdGhpcy5mcmFnbWVudE9wY29kZUNvbXBpbGVyLmJsb2NrKGJsb2NrLCBpLCBsLCBzKTtcbiAgdGhpcy5oeWRyYXRpb25PcGNvZGVDb21waWxlci5ibG9jayhibG9jaywgaSwgbCwgcyk7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS50ZXh0ID0gZnVuY3Rpb24oc3RyaW5nLCBpLCBsLCByKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci50ZXh0KHN0cmluZywgaSwgbCwgcik7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIudGV4dChzdHJpbmcsIGksIGwsIHIpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuY29tbWVudCA9IGZ1bmN0aW9uKHN0cmluZywgaSwgbCwgcikge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIuY29tbWVudChzdHJpbmcsIGksIGwsIHIpO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLmNvbW1lbnQoc3RyaW5nLCBpLCBsLCByKTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLm11c3RhY2hlID0gZnVuY3Rpb24gKG11c3RhY2hlLCBpLCBsLCBzKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5tdXN0YWNoZShtdXN0YWNoZSwgaSwgbCwgcyk7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIubXVzdGFjaGUobXVzdGFjaGUsIGksIGwsIHMpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuc2V0TmFtZXNwYWNlID0gZnVuY3Rpb24obmFtZXNwYWNlKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5zZXROYW1lc3BhY2UobmFtZXNwYWNlKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLWNvbXBpbGVyL3RlbXBsYXRlLWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7c0NBQW1DLDRCQUE0Qjs7OzswQ0FDeEIsZ0NBQWdDOzs7O3VDQUNuQyw2QkFBNkI7Ozs7MkNBQ3pCLGlDQUFpQzs7OzsrQkFDN0Msb0JBQW9COzs7O3FCQUNqQixTQUFTOzttQ0FDakIsMEJBQTBCOztzQ0FDN0IsOEJBQThCOztBQUVsRCxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtBQUNqQyxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLFlBQVcsRUFBRSxDQUFDO0FBQ2pFLE1BQUksQ0FBQyxzQkFBc0IsR0FBRyxzQ0FBNEIsQ0FBQztBQUMzRCxNQUFJLENBQUMsZ0JBQWdCLEdBQUcsMENBQWdDLENBQUM7QUFDekQsTUFBSSxDQUFDLHVCQUF1QixHQUFHLHVDQUE2QixDQUFDO0FBQzdELE1BQUksQ0FBQyxpQkFBaUIsR0FBRywyQ0FBaUMsQ0FBQztBQUMzRCxNQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQixNQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztDQUMxQjs7a0JBRWMsZ0JBQWdCOztBQUUvQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsR0FBRyxFQUFFO0FBQ2pELE1BQUksZUFBZSxHQUFHLCtCQUFxQixDQUFDO0FBQzVDLGlCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUUzQix3QkFBZSxJQUFJLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUU5QyxTQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Q0FDN0IsQ0FBQzs7QUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFVBQVMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFO0FBQ25HLE1BQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDM0YsTUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQzs7QUFFNUYsTUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLFNBQU0sa0JBQWtCLEVBQUUsRUFBRTtBQUMxQixRQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7R0FDaEQ7Q0FDRixDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBUyxLQUFLLEVBQUU7QUFDMUQsTUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUNwRCxDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsR0FBRyxVQUFTLE1BQU0sRUFBRTtBQUNqRSxNQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDZCxNQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDdkIsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ25ELFVBQUksSUFBSSxNQUFNLEdBQUcsV0FBVyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDM0U7R0FDRjtBQUNELFNBQU8sSUFBSSxDQUFDO0NBQ2IsQ0FBQzs7QUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBUyxNQUFNLEVBQUUsS0FBSyxFQUFFO0FBQ3JFLE1BQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUNsQixPQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtBQUN0QixZQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN2QixXQUFPLE1BQU0sR0FBRyx5QkFBeUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztHQUN6RSxNQUFNO0FBQ0wsV0FBTyxFQUFFLENBQUM7R0FDWDtDQUNGLENBQUM7O0FBRUYsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFTLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDdEUsTUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRCxNQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUVqRCxNQUFJLE1BQU0sR0FBRyw0QkFBTyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDeEMsTUFBSSxPQUFPLEdBQUc7QUFDWixVQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU07R0FDeEIsQ0FBQzs7O0FBR0YsTUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFDbkMsT0FBTyxDQUNSLENBQUM7OztBQUdGLE1BQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FDcEQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFDcEMsT0FBTyxDQUNSLENBQUM7O0FBRUYsTUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7O0FBRTVDLE1BQUksaUJBQWlCLEdBQUcsaUNBQWlDLENBQUM7QUFDMUQsTUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUMxQixxQkFBaUIsSUFBSSxrQkFBa0IsQ0FBQztHQUN6Qzs7QUFFRCxNQUFJLFVBQVUsR0FBRyw0QkFBSSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsVUFBUyxDQUFDLEVBQUU7QUFDN0QsV0FBTyxNQUFNLEdBQUMsUUFBUSxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7R0FDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7QUFFZixNQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDOztBQUV0RCxNQUFJLFNBQVMsR0FBRyw0QkFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRTtBQUMxRCxXQUFPLE9BQU8sR0FBRyxLQUFLLENBQUM7R0FDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFZCxNQUFJLFFBQVEsR0FDVixpQkFBaUIsR0FDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FDeEMsTUFBTSxHQUFDLGNBQWMsR0FDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUN0QyxNQUFNLEdBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sR0FBRyxNQUFNLENBQUEsQUFBQyxHQUFHLEtBQUssR0FDekUsTUFBTSxHQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsTUFBTSxHQUFHLEtBQUssR0FDakQsTUFBTSxHQUFDLDZCQUE2QixHQUNwQyxNQUFNLEdBQUMsMkJBQTJCLEdBQ2xDLE1BQU0sR0FBQyxxQkFBcUIsR0FBRyxlQUFlLEdBQUcsS0FBSyxHQUN0RCxNQUFNLEdBQUMsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxHQUMvRSxNQUFNLEdBQUMscUJBQXFCLEdBQUcsVUFBVSxHQUFHLElBQUksR0FDaEQsTUFBTSxHQUFDLFVBQVUsR0FDakIsTUFBTSxHQUFDLGNBQWMsR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUN0QyxNQUFNLEdBQUMsa0JBQWtCLEdBQUcsU0FBUyxHQUFHLEtBQUssR0FDN0MsTUFBTSxHQUFDLFFBQVEsR0FDZixNQUFNLEdBQUMsTUFBTSxDQUFDOztBQUVoQixNQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUMvQixDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBUyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQy9ELE1BQUksSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7O0FBRWpELE1BQUksSUFBSSxHQUFHLE1BQU0sR0FBQyxRQUFRLENBQUM7QUFDM0IsTUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzdFLE1BQUksSUFBSSxHQUFHLEtBQUssQ0FBQzs7QUFFakIsU0FBTyxJQUFJLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQztDQUNqQyxDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBUyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN4RSxNQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEUsTUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ2xFLENBQUM7O0FBRUYsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFTLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNuRSxNQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELE1BQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDN0QsQ0FBQzs7QUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2xFLE1BQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUQsTUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1RCxDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBUyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDMUQsTUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRCxNQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQ3BELENBQUM7O0FBRUYsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFTLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMxRCxNQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xELE1BQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDcEQsQ0FBQzs7QUFFRixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzdELE1BQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQsTUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN2RCxDQUFDOztBQUVGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDakUsTUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RCxNQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0NBQzFELENBQUM7O0FBRUYsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxVQUFTLFNBQVMsRUFBRTtBQUM1RCxNQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0NBQ3JELENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtY29tcGlsZXIvdGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnJhZ21lbnRPcGNvZGVDb21waWxlciBmcm9tICcuL2ZyYWdtZW50LW9wY29kZS1jb21waWxlcic7XG5pbXBvcnQgRnJhZ21lbnRKYXZhU2NyaXB0Q29tcGlsZXIgZnJvbSAnLi9mcmFnbWVudC1qYXZhc2NyaXB0LWNvbXBpbGVyJztcbmltcG9ydCBIeWRyYXRpb25PcGNvZGVDb21waWxlciBmcm9tICcuL2h5ZHJhdGlvbi1vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IEh5ZHJhdGlvbkphdmFTY3JpcHRDb21waWxlciBmcm9tICcuL2h5ZHJhdGlvbi1qYXZhc2NyaXB0LWNvbXBpbGVyJztcbmltcG9ydCBUZW1wbGF0ZVZpc2l0b3IgZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IHsgcHJvY2Vzc09wY29kZXMgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgcmVwZWF0IH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvcXVvdGluZ1wiO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvYXJyYXktdXRpbHNcIjtcblxuZnVuY3Rpb24gVGVtcGxhdGVDb21waWxlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHRoaXMuY29uc3VtZXJCdWlsZE1ldGEgPSB0aGlzLm9wdGlvbnMuYnVpbGRNZXRhIHx8IGZ1bmN0aW9uKCkge307XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlciA9IG5ldyBGcmFnbWVudE9wY29kZUNvbXBpbGVyKCk7XG4gIHRoaXMuZnJhZ21lbnRDb21waWxlciA9IG5ldyBGcmFnbWVudEphdmFTY3JpcHRDb21waWxlcigpO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyID0gbmV3IEh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyKCk7XG4gIHRoaXMuaHlkcmF0aW9uQ29tcGlsZXIgPSBuZXcgSHlkcmF0aW9uSmF2YVNjcmlwdENvbXBpbGVyKCk7XG4gIHRoaXMudGVtcGxhdGVzID0gW107XG4gIHRoaXMuY2hpbGRUZW1wbGF0ZXMgPSBbXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVDb21waWxlcjtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuY29tcGlsZSA9IGZ1bmN0aW9uKGFzdCkge1xuICB2YXIgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICB0ZW1wbGF0ZVZpc2l0b3IudmlzaXQoYXN0KTtcblxuICBwcm9jZXNzT3Bjb2Rlcyh0aGlzLCB0ZW1wbGF0ZVZpc2l0b3IuYWN0aW9ucyk7XG5cbiAgcmV0dXJuIHRoaXMudGVtcGxhdGVzLnBvcCgpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuc3RhcnRQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSwgY2hpbGRUZW1wbGF0ZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5zdGFydFByb2dyYW0ocHJvZ3JhbSwgY2hpbGRUZW1wbGF0ZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKTtcbiAgdGhpcy5oeWRyYXRpb25PcGNvZGVDb21waWxlci5zdGFydFByb2dyYW0ocHJvZ3JhbSwgY2hpbGRUZW1wbGF0ZUNvdW50LCBibGFua0NoaWxkVGV4dE5vZGVzKTtcblxuICB0aGlzLmNoaWxkVGVtcGxhdGVzLmxlbmd0aCA9IDA7XG4gIHdoaWxlKGNoaWxkVGVtcGxhdGVDb3VudC0tKSB7XG4gICAgdGhpcy5jaGlsZFRlbXBsYXRlcy5wdXNoKHRoaXMudGVtcGxhdGVzLnBvcCgpKTtcbiAgfVxufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuaW5zZXJ0Qm91bmRhcnkgPSBmdW5jdGlvbihmaXJzdCkge1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLmluc2VydEJvdW5kYXJ5KGZpcnN0KTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLmdldENoaWxkVGVtcGxhdGVWYXJzID0gZnVuY3Rpb24oaW5kZW50KSB7XG4gIHZhciB2YXJzID0gJyc7XG4gIGlmICh0aGlzLmNoaWxkVGVtcGxhdGVzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkVGVtcGxhdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXJzICs9IGluZGVudCArICd2YXIgY2hpbGQnICsgaSArICcgPSAnICsgdGhpcy5jaGlsZFRlbXBsYXRlc1tpXSArICc7XFxuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcnM7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5nZXRIeWRyYXRpb25Ib29rcyA9IGZ1bmN0aW9uKGluZGVudCwgaG9va3MpIHtcbiAgdmFyIGhvb2tWYXJzID0gW107XG4gIGZvciAodmFyIGhvb2sgaW4gaG9va3MpIHtcbiAgICBob29rVmFycy5wdXNoKGhvb2sgKyAnID0gaG9va3MuJyArIGhvb2spO1xuICB9XG5cbiAgaWYgKGhvb2tWYXJzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ3ZhciBob29rcyA9IGVudi5ob29rcywgJyArIGhvb2tWYXJzLmpvaW4oJywgJykgKyAnO1xcbic7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5lbmRQcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSwgcHJvZ3JhbURlcHRoKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5lbmRQcm9ncmFtKHByb2dyYW0pO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLmVuZFByb2dyYW0ocHJvZ3JhbSk7XG5cbiAgdmFyIGluZGVudCA9IHJlcGVhdChcIiAgXCIsIHByb2dyYW1EZXB0aCk7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIGluZGVudDogaW5kZW50ICsgXCIgICAgXCJcbiAgfTtcblxuICAvLyBmdW5jdGlvbiBidWlsZChkb20pIHsgcmV0dXJuIGZyYWdtZW50OyB9XG4gIHZhciBmcmFnbWVudFByb2dyYW0gPSB0aGlzLmZyYWdtZW50Q29tcGlsZXIuY29tcGlsZShcbiAgICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIub3Bjb2RlcyxcbiAgICBvcHRpb25zXG4gICk7XG5cbiAgLy8gZnVuY3Rpb24gaHlkcmF0ZShmcmFnbWVudCkgeyByZXR1cm4gbXVzdGFjaGVzOyB9XG4gIHZhciBoeWRyYXRpb25Qcm9ncmFtcyA9IHRoaXMuaHlkcmF0aW9uQ29tcGlsZXIuY29tcGlsZShcbiAgICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLm9wY29kZXMsXG4gICAgb3B0aW9uc1xuICApO1xuXG4gIHZhciBibG9ja1BhcmFtcyA9IHByb2dyYW0uYmxvY2tQYXJhbXMgfHwgW107XG5cbiAgdmFyIHRlbXBsYXRlU2lnbmF0dXJlID0gJ2NvbnRleHQsIHJvb3ROb2RlLCBlbnYsIG9wdGlvbnMnO1xuICBpZiAoYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgIHRlbXBsYXRlU2lnbmF0dXJlICs9ICcsIGJsb2NrQXJndW1lbnRzJztcbiAgfVxuXG4gIHZhciBzdGF0ZW1lbnRzID0gbWFwKGh5ZHJhdGlvblByb2dyYW1zLnN0YXRlbWVudHMsIGZ1bmN0aW9uKHMpIHtcbiAgICByZXR1cm4gaW5kZW50KycgICAgICAnK0pTT04uc3RyaW5naWZ5KHMpO1xuICB9KS5qb2luKFwiLFxcblwiKTtcblxuICB2YXIgbG9jYWxzID0gSlNPTi5zdHJpbmdpZnkoaHlkcmF0aW9uUHJvZ3JhbXMubG9jYWxzKTtcblxuICB2YXIgdGVtcGxhdGVzID0gbWFwKHRoaXMuY2hpbGRUZW1wbGF0ZXMsIGZ1bmN0aW9uKF8sIGluZGV4KSB7XG4gICAgcmV0dXJuICdjaGlsZCcgKyBpbmRleDtcbiAgfSkuam9pbignLCAnKTtcblxuICB2YXIgdGVtcGxhdGUgPVxuICAgICcoZnVuY3Rpb24oKSB7XFxuJyArXG4gICAgdGhpcy5nZXRDaGlsZFRlbXBsYXRlVmFycyhpbmRlbnQgKyAnICAnKSArXG4gICAgaW5kZW50KycgIHJldHVybiB7XFxuJyArXG4gICAgdGhpcy5idWlsZE1ldGEoaW5kZW50KycgICAgJywgcHJvZ3JhbSkgK1xuICAgIGluZGVudCsnICAgIGlzRW1wdHk6ICcgKyAocHJvZ3JhbS5ib2R5Lmxlbmd0aCA/ICdmYWxzZScgOiAndHJ1ZScpICsgJyxcXG4nICtcbiAgICBpbmRlbnQrJyAgICBhcml0eTogJyArIGJsb2NrUGFyYW1zLmxlbmd0aCArICcsXFxuJyArXG4gICAgaW5kZW50KycgICAgY2FjaGVkRnJhZ21lbnQ6IG51bGwsXFxuJyArXG4gICAgaW5kZW50KycgICAgaGFzUmVuZGVyZWQ6IGZhbHNlLFxcbicgK1xuICAgIGluZGVudCsnICAgIGJ1aWxkRnJhZ21lbnQ6ICcgKyBmcmFnbWVudFByb2dyYW0gKyAnLFxcbicgK1xuICAgIGluZGVudCsnICAgIGJ1aWxkUmVuZGVyTm9kZXM6ICcgKyBoeWRyYXRpb25Qcm9ncmFtcy5jcmVhdGVNb3JwaHNQcm9ncmFtICsgJyxcXG4nICtcbiAgICBpbmRlbnQrJyAgICBzdGF0ZW1lbnRzOiBbXFxuJyArIHN0YXRlbWVudHMgKyAnXFxuJyArXG4gICAgaW5kZW50KycgICAgXSxcXG4nICtcbiAgICBpbmRlbnQrJyAgICBsb2NhbHM6ICcgKyBsb2NhbHMgKyAnLFxcbicgK1xuICAgIGluZGVudCsnICAgIHRlbXBsYXRlczogWycgKyB0ZW1wbGF0ZXMgKyAnXVxcbicgK1xuICAgIGluZGVudCsnICB9O1xcbicgK1xuICAgIGluZGVudCsnfSgpKSc7XG5cbiAgdGhpcy50ZW1wbGF0ZXMucHVzaCh0ZW1wbGF0ZSk7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5idWlsZE1ldGEgPSBmdW5jdGlvbihpbmRlbnQsIHByb2dyYW0pIHtcbiAgdmFyIG1ldGEgPSB0aGlzLmNvbnN1bWVyQnVpbGRNZXRhKHByb2dyYW0pIHx8IHt9O1xuXG4gIHZhciBoZWFkID0gaW5kZW50KydtZXRhOiAnO1xuICB2YXIgc3RyaW5nTWV0YSA9IEpTT04uc3RyaW5naWZ5KG1ldGEsIG51bGwsIDIpLnJlcGxhY2UoL1xcbi9nLCAnXFxuJyArIGluZGVudCk7XG4gIHZhciB0YWlsID0gJyxcXG4nO1xuXG4gIHJldHVybiBoZWFkICsgc3RyaW5nTWV0YSArIHRhaWw7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5vcGVuRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGksIGwsIHIsIGMsIGIpIHtcbiAgdGhpcy5mcmFnbWVudE9wY29kZUNvbXBpbGVyLm9wZW5FbGVtZW50KGVsZW1lbnQsIGksIGwsIHIsIGMsIGIpO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLm9wZW5FbGVtZW50KGVsZW1lbnQsIGksIGwsIHIsIGMsIGIpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUuY2xvc2VFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgaSwgbCwgcikge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIuY2xvc2VFbGVtZW50KGVsZW1lbnQsIGksIGwsIHIpO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLmNsb3NlRWxlbWVudChlbGVtZW50LCBpLCBsLCByKTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLmNvbXBvbmVudCA9IGZ1bmN0aW9uKGNvbXBvbmVudCwgaSwgbCwgcykge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIuY29tcG9uZW50KGNvbXBvbmVudCwgaSwgbCwgcyk7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIuY29tcG9uZW50KGNvbXBvbmVudCwgaSwgbCwgcyk7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5ibG9jayA9IGZ1bmN0aW9uKGJsb2NrLCBpLCBsLCBzKSB7XG4gIHRoaXMuZnJhZ21lbnRPcGNvZGVDb21waWxlci5ibG9jayhibG9jaywgaSwgbCwgcyk7XG4gIHRoaXMuaHlkcmF0aW9uT3Bjb2RlQ29tcGlsZXIuYmxvY2soYmxvY2ssIGksIGwsIHMpO1xufTtcblxuVGVtcGxhdGVDb21waWxlci5wcm90b3R5cGUudGV4dCA9IGZ1bmN0aW9uKHN0cmluZywgaSwgbCwgcikge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIudGV4dChzdHJpbmcsIGksIGwsIHIpO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLnRleHQoc3RyaW5nLCBpLCBsLCByKTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLmNvbW1lbnQgPSBmdW5jdGlvbihzdHJpbmcsIGksIGwsIHIpIHtcbiAgdGhpcy5mcmFnbWVudE9wY29kZUNvbXBpbGVyLmNvbW1lbnQoc3RyaW5nLCBpLCBsLCByKTtcbiAgdGhpcy5oeWRyYXRpb25PcGNvZGVDb21waWxlci5jb21tZW50KHN0cmluZywgaSwgbCwgcik7XG59O1xuXG5UZW1wbGF0ZUNvbXBpbGVyLnByb3RvdHlwZS5tdXN0YWNoZSA9IGZ1bmN0aW9uIChtdXN0YWNoZSwgaSwgbCwgcykge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIubXVzdGFjaGUobXVzdGFjaGUsIGksIGwsIHMpO1xuICB0aGlzLmh5ZHJhdGlvbk9wY29kZUNvbXBpbGVyLm11c3RhY2hlKG11c3RhY2hlLCBpLCBsLCBzKTtcbn07XG5cblRlbXBsYXRlQ29tcGlsZXIucHJvdG90eXBlLnNldE5hbWVzcGFjZSA9IGZ1bmN0aW9uKG5hbWVzcGFjZSkge1xuICB0aGlzLmZyYWdtZW50T3Bjb2RlQ29tcGlsZXIuc2V0TmFtZXNwYWNlKG5hbWVzcGFjZSk7XG59O1xuIl19

@@ -17,4 +17,2 @@ exports.__esModule = true;

var _htmlbarsRuntimeExpressionVisitor = require("./htmlbars-runtime/expression-visitor");
var _htmlbarsRuntimeHooks3 = require('htmlbars-runtime/hooks');

@@ -29,3 +27,3 @@

visitChildren: _htmlbarsUtilMorphUtils.visitChildren,
validateChildMorphs: _htmlbarsRuntimeExpressionVisitor.validateChildMorphs,
validateChildMorphs: _htmlbarsUtilMorphUtils.validateChildMorphs,
clearMorph: _htmlbarsUtilTemplateUtils.clearMorph

@@ -37,2 +35,2 @@ };

exports.internal = internal;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztvQ0FBa0IsMEJBQTBCOzs7O3FDQUN6QiwyQkFBMkI7Ozs7c0NBRWhCLDhCQUE4Qjs7eUNBQ3ZCLGlDQUFpQzs7Z0RBQ2xDLHVDQUF1Qzs7cUNBS3BFLHdCQUF3Qjs7QUFHL0IsSUFBSSxRQUFRLEdBQUc7QUFDYixVQUFRLDZCQVZELFFBQVEsQUFVRztBQUNsQixlQUFhLHlCQWJOLGFBQWEsQUFhUTtBQUM1QixXQUFTLHlCQVRULFNBQVMsQUFTVztBQUNwQixlQUFhLHlCQVRiLGFBQWEsQUFTZTtBQUM1Qiw2QkFBMkIseUJBVDNCLDJCQUEyQixBQVM2QjtBQUN4RCxlQUFhLDBCQWhCTixhQUFhLEFBZ0JRO0FBQzVCLHFCQUFtQixvQ0FmWixtQkFBbUIsQUFlYztBQUN4QyxZQUFVLDZCQWpCTyxVQUFVLEFBaUJMO0NBQ3ZCLENBQUM7O1FBR0EsS0FBSztRQUNMLE1BQU07UUFDTixRQUFRLEdBQVIsUUFBUSIsImZpbGUiOiJodG1sYmFycy1ydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGhvb2tzIGZyb20gJy4vaHRtbGJhcnMtcnVudGltZS9ob29rcyc7XG5pbXBvcnQgcmVuZGVyIGZyb20gJy4vaHRtbGJhcnMtcnVudGltZS9yZW5kZXInO1xuaW1wb3J0IHsgbWFudWFsRWxlbWVudCB9IGZyb20gJy4vaHRtbGJhcnMtcnVudGltZS9yZW5kZXInO1xuaW1wb3J0IHsgdmlzaXRDaGlsZHJlbiB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL21vcnBoLXV0aWxzXCI7XG5pbXBvcnQgeyBibG9ja0ZvciwgY2xlYXJNb3JwaCB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL3RlbXBsYXRlLXV0aWxzXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZUNoaWxkTW9ycGhzIH0gZnJvbSBcIi4vaHRtbGJhcnMtcnVudGltZS9leHByZXNzaW9uLXZpc2l0b3JcIjtcbmltcG9ydCB7XG4gIGhvc3RCbG9jayxcbiAgY29udGludWVCbG9jayxcbiAgaG9zdFlpZWxkV2l0aFNoYWRvd1RlbXBsYXRlXG59IGZyb20gJ2h0bWxiYXJzLXJ1bnRpbWUvaG9va3MnO1xuXG5cbnZhciBpbnRlcm5hbCA9IHtcbiAgYmxvY2tGb3I6IGJsb2NrRm9yLFxuICBtYW51YWxFbGVtZW50OiBtYW51YWxFbGVtZW50LFxuICBob3N0QmxvY2s6IGhvc3RCbG9jayxcbiAgY29udGludWVCbG9jazogY29udGludWVCbG9jayxcbiAgaG9zdFlpZWxkV2l0aFNoYWRvd1RlbXBsYXRlOiBob3N0WWllbGRXaXRoU2hhZG93VGVtcGxhdGUsXG4gIHZpc2l0Q2hpbGRyZW46IHZpc2l0Q2hpbGRyZW4sXG4gIHZhbGlkYXRlQ2hpbGRNb3JwaHM6IHZhbGlkYXRlQ2hpbGRNb3JwaHMsXG4gIGNsZWFyTW9ycGg6IGNsZWFyTW9ycGhcbn07XG5cbmV4cG9ydCB7XG4gIGhvb2tzLFxuICByZW5kZXIsXG4gIGludGVybmFsXG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztvQ0FBa0IsMEJBQTBCOzs7O3FDQUN6QiwyQkFBMkI7Ozs7c0NBRUssOEJBQThCOzt5Q0FDNUMsaUNBQWlDOztxQ0FLL0Qsd0JBQXdCOztBQUcvQixJQUFJLFFBQVEsR0FBRztBQUNiLFVBQVEscUNBQVU7QUFDbEIsZUFBYSxzQ0FBZTtBQUM1QixXQUFTLGtDQUFXO0FBQ3BCLGVBQWEsc0NBQWU7QUFDNUIsNkJBQTJCLG9EQUE2QjtBQUN4RCxlQUFhLHVDQUFlO0FBQzVCLHFCQUFtQiw2Q0FBcUI7QUFDeEMsWUFBVSx1Q0FBWTtDQUN2QixDQUFDOztRQUdBLEtBQUs7UUFDTCxNQUFNO1FBQ04sUUFBUSxHQUFSLFFBQVEiLCJmaWxlIjoiaHRtbGJhcnMtcnVudGltZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBob29rcyBmcm9tICcuL2h0bWxiYXJzLXJ1bnRpbWUvaG9va3MnO1xuaW1wb3J0IHJlbmRlciBmcm9tICcuL2h0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyJztcbmltcG9ydCB7IG1hbnVhbEVsZW1lbnQgfSBmcm9tICcuL2h0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyJztcbmltcG9ydCB7IHZhbGlkYXRlQ2hpbGRNb3JwaHMsIHZpc2l0Q2hpbGRyZW4gfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC9tb3JwaC11dGlsc1wiO1xuaW1wb3J0IHsgYmxvY2tGb3IsIGNsZWFyTW9ycGggfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC90ZW1wbGF0ZS11dGlsc1wiO1xuaW1wb3J0IHtcbiAgaG9zdEJsb2NrLFxuICBjb250aW51ZUJsb2NrLFxuICBob3N0WWllbGRXaXRoU2hhZG93VGVtcGxhdGVcbn0gZnJvbSAnaHRtbGJhcnMtcnVudGltZS9ob29rcyc7XG5cblxudmFyIGludGVybmFsID0ge1xuICBibG9ja0ZvcjogYmxvY2tGb3IsXG4gIG1hbnVhbEVsZW1lbnQ6IG1hbnVhbEVsZW1lbnQsXG4gIGhvc3RCbG9jazogaG9zdEJsb2NrLFxuICBjb250aW51ZUJsb2NrOiBjb250aW51ZUJsb2NrLFxuICBob3N0WWllbGRXaXRoU2hhZG93VGVtcGxhdGU6IGhvc3RZaWVsZFdpdGhTaGFkb3dUZW1wbGF0ZSxcbiAgdmlzaXRDaGlsZHJlbjogdmlzaXRDaGlsZHJlbixcbiAgdmFsaWRhdGVDaGlsZE1vcnBoczogdmFsaWRhdGVDaGlsZE1vcnBocyxcbiAgY2xlYXJNb3JwaDogY2xlYXJNb3JwaFxufTtcblxuZXhwb3J0IHtcbiAgaG9va3MsXG4gIHJlbmRlcixcbiAgaW50ZXJuYWxcbn07XG4iXX0=
exports.__esModule = true;
var _htmlbarsUtilObjectUtils = require("../htmlbars-util/object-utils");
var _htmlbarsUtilMorphUtils = require("../htmlbars-util/morph-utils");
exports.acceptParams = acceptParams;
exports.acceptHash = acceptHash;
/**
Node classification:
# Primary Statement Nodes:
These nodes are responsible for a render node that represents a morph-range.
* block
* inline
* content
* element
* component
# Leaf Statement Nodes:
This node is responsible for a render node that represents a morph-attr.
* attribute
# Expression Nodes:

@@ -36,246 +15,76 @@

var base = {
acceptExpression: function (node, env, scope) {
var ret = { value: null };
function acceptParams(nodes, env, scope) {
var array = [];
// Primitive literals are unambiguously non-array representations of
// themselves.
if (typeof node !== 'object' || node === null) {
ret.value = node;
return ret;
}
for (var i = 0, l = nodes.length; i < l; i++) {
array.push(acceptExpression(nodes[i], env, scope).value);
}
switch (node[0]) {
// can be used by manualElement
case 'value':
ret.value = node[1];break;
case 'get':
ret.value = this.get(node, env, scope);break;
case 'subexpr':
ret.value = this.subexpr(node, env, scope);break;
case 'concat':
ret.value = this.concat(node, env, scope);break;
}
return array;
}
return ret;
},
function acceptHash(pairs, env, scope) {
var object = {};
acceptParams: function (nodes, env, scope) {
var arr = new Array(nodes.length);
for (var i = 0, l = pairs.length; i < l; i += 2) {
var key = pairs[i];
var value = pairs[i + 1];
object[key] = acceptExpression(value, env, scope).value;
}
for (var i = 0, l = nodes.length; i < l; i++) {
arr[i] = this.acceptExpression(nodes[i], env, scope).value;
}
return object;
}
return arr;
},
function acceptExpression(node, env, scope) {
var ret = { value: null };
acceptHash: function (pairs, env, scope) {
var object = {};
for (var i = 0, l = pairs.length; i < l; i += 2) {
object[pairs[i]] = this.acceptExpression(pairs[i + 1], env, scope).value;
}
return object;
},
// [ 'get', path ]
get: function (node, env, scope) {
return env.hooks.get(env, scope, node[1]);
},
// [ 'subexpr', path, params, hash ]
subexpr: function (node, env, scope) {
var path = node[1],
params = node[2],
hash = node[3];
return env.hooks.subexpr(env, scope, path, this.acceptParams(params, env, scope), this.acceptHash(hash, env, scope));
},
// [ 'concat', parts ]
concat: function (node, env, scope) {
return env.hooks.concat(env, this.acceptParams(node[1], env, scope));
},
linkParamsAndHash: function (env, scope, morph, path, params, hash) {
if (morph.linkedParams) {
params = morph.linkedParams.params;
hash = morph.linkedParams.hash;
} else {
params = params && this.acceptParams(params, env, scope);
hash = hash && this.acceptHash(hash, env, scope);
}
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, path, params, hash);
return [params, hash];
// Primitive literals are unambiguously non-array representations of
// themselves.
if (typeof node !== 'object' || node === null) {
ret.value = node;
} else {
ret.value = evaluateNode(node, env, scope);
}
};
var AlwaysDirtyVisitor = _htmlbarsUtilObjectUtils.merge(Object.create(base), {
// [ 'block', path, params, hash, templateId, inverseId ]
block: function (node, morph, env, scope, template, visitor) {
var path = node[1],
params = node[2],
hash = node[3],
templateId = node[4],
inverseId = node[5];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
return ret;
}
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.block(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templateId === null ? null : template.templates[templateId], inverseId === null ? null : template.templates[inverseId], visitor);
},
// [ 'inline', path, params, hash ]
inline: function (node, morph, env, scope, visitor) {
var path = node[1],
params = node[2],
hash = node[3];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.inline(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
},
// [ 'content', path ]
content: function (node, morph, env, scope, visitor) {
var path = node[1];
morph.isDirty = morph.isSubtreeDirty = false;
if (isHelper(env, scope, path)) {
env.hooks.inline(morph, env, scope, path, [], {}, visitor);
if (morph.linkedResult) {
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@content-helper', [morph.linkedResult], null);
}
return;
}
var params;
if (morph.linkedParams) {
params = morph.linkedParams.params;
} else {
params = [env.hooks.get(env, scope, path)];
}
_htmlbarsUtilMorphUtils.linkParams(env, scope, morph, '@range', params, null);
env.hooks.range(morph, env, scope, path, params[0], visitor);
},
// [ 'element', path, params, hash ]
element: function (node, morph, env, scope, visitor) {
var path = node[1],
params = node[2],
hash = node[3];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.element(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
},
// [ 'attribute', name, value ]
attribute: function (node, morph, env, scope) {
var name = node[1],
value = node[2];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, '@attribute', [value], null);
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.attribute(morph, env, scope, name, paramsAndHash[0][0]);
},
// [ 'component', path, attrs, templateId, inverseId ]
component: function (node, morph, env, scope, template, visitor) {
var path = node[1],
attrs = node[2],
templateId = node[3],
inverseId = node[4];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, [], attrs);
var templates = {
default: template.templates[templateId],
inverse: template.templates[inverseId]
};
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.component(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], templates, visitor);
},
// [ 'attributes', template ]
attributes: function (node, morph, env, scope, parentMorph, visitor) {
var template = node[1];
env.hooks.attributes(morph, env, scope, template, parentMorph, visitor);
function evaluateNode(node, env, scope) {
switch (node[0]) {
// can be used by manualElement
case 'value':
return node[1];
case 'get':
return evaluateGet(node, env, scope);
case 'subexpr':
return evaluateSubexpr(node, env, scope);
case 'concat':
return evaluateConcat(node, env, scope);
}
});
}
exports.AlwaysDirtyVisitor = AlwaysDirtyVisitor;
exports.default = _htmlbarsUtilObjectUtils.merge(Object.create(base), {
// [ 'block', path, params, hash, templateId, inverseId ]
block: function (node, morph, env, scope, template, visitor) {
dirtyCheck(env, morph, visitor, function (visitor) {
AlwaysDirtyVisitor.block(node, morph, env, scope, template, visitor);
});
},
function evaluateGet(node, env, scope) {
var path = node[1];
// [ 'inline', path, params, hash ]
inline: function (node, morph, env, scope, visitor) {
dirtyCheck(env, morph, visitor, function (visitor) {
AlwaysDirtyVisitor.inline(node, morph, env, scope, visitor);
});
},
return env.hooks.get(env, scope, path);
}
// [ 'content', path ]
content: function (node, morph, env, scope, visitor) {
dirtyCheck(env, morph, visitor, function (visitor) {
AlwaysDirtyVisitor.content(node, morph, env, scope, visitor);
});
},
function evaluateSubexpr(node, env, scope) {
var path = node[1];
var rawParams = node[2];
var rawHash = node[3];
// [ 'element', path, params, hash ]
element: function (node, morph, env, scope, template, visitor) {
dirtyCheck(env, morph, visitor, function (visitor) {
AlwaysDirtyVisitor.element(node, morph, env, scope, template, visitor);
});
},
var params = acceptParams(rawParams, env, scope);
var hash = acceptHash(rawHash, env, scope);
// [ 'attribute', name, value ]
attribute: function (node, morph, env, scope, template) {
dirtyCheck(env, morph, null, function () {
AlwaysDirtyVisitor.attribute(node, morph, env, scope, template);
});
},
return env.hooks.subexpr(env, scope, path, params, hash);
}
// [ 'component', path, attrs, templateId ]
component: function (node, morph, env, scope, template, visitor) {
dirtyCheck(env, morph, visitor, function (visitor) {
AlwaysDirtyVisitor.component(node, morph, env, scope, template, visitor);
});
},
function evaluateConcat(node, env, scope) {
var rawParts = node[1];
// [ 'attributes', template ]
attributes: function (node, morph, env, scope, parentMorph, visitor) {
AlwaysDirtyVisitor.attributes(node, morph, env, scope, parentMorph, visitor);
}
});
var parts = acceptParams(rawParts, env, scope);
function dirtyCheck(_env, morph, visitor, callback) {
var isDirty = morph.isDirty;
var isSubtreeDirty = morph.isSubtreeDirty;
var env = _env;
if (isSubtreeDirty) {
visitor = AlwaysDirtyVisitor;
}
if (isDirty || isSubtreeDirty) {
callback(visitor);
} else {
if (morph.buildChildEnv) {
env = morph.buildChildEnv(morph.state, env);
}
_htmlbarsUtilMorphUtils.validateChildMorphs(env, morph, visitor);
}
return env.hooks.concat(env, parts);
}
function isHelper(env, scope, path) {
return env.hooks.keywords[path] !== undefined || env.hooks.hasHelper(env, scope, path);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUvZXhwcmVzc2lvbi12aXNpdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O3VDQUFzQiwrQkFBK0I7O3NDQUNMLDhCQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCOUUsSUFBSSxJQUFJLEdBQUc7QUFDVCxrQkFBZ0IsRUFBRSxVQUFTLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQzNDLFFBQUksR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzs7O0FBSTFCLFFBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7QUFDN0MsU0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsYUFBTyxHQUFHLENBQUM7S0FDWjs7QUFFRCxZQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7O0FBRVosV0FBSyxPQUFPO0FBQUUsV0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQUFBQyxNQUFNO0FBQUEsQUFDekMsV0FBSyxLQUFLO0FBQUUsV0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQUFBQyxNQUFNO0FBQUEsQUFDMUQsV0FBSyxTQUFTO0FBQUUsV0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQUFBQyxNQUFNO0FBQUEsQUFDbEUsV0FBSyxRQUFRO0FBQUUsV0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQUFBQyxNQUFNO0FBQUEsS0FDakU7O0FBRUQsV0FBTyxHQUFHLENBQUM7R0FDWjs7QUFFRCxjQUFZLEVBQUUsVUFBUyxLQUFLLEVB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QUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDN0M7QUFDRCw0QkEvUEssbUJBQW1CLENBK1BKLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7R0FDMUM7Q0FDRjs7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtBQUNsQyxTQUFPLEFBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDMUYiLCJmaWxlIjoiaHRtbGJhcnMtcnVudGltZS9leHByZXNzaW9uLXZpc2l0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZSB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL29iamVjdC11dGlsc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVDaGlsZE1vcnBocywgbGlua1BhcmFtcyB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL21vcnBoLXV0aWxzXCI7XG5cbi8qKlxuICBOb2RlIGNsYXNzaWZpY2F0aW9uOlxuXG4gICMgUHJpbWFyeSBTdGF0ZW1lbnQgTm9kZXM6XG5cbiAgVGhlc2Ugbm9kZXMgYXJlIHJlc3BvbnNpYmxlIGZvciBhIHJlbmRlciBub2RlIHRoYXQgcmVwcmVzZW50cyBhIG1vcnBoLXJhbmdlLlxuXG4gICogYmxvY2tcbiAgKiBpbmxpbmVcbiAgKiBjb250ZW50XG4gICogZWxlbWVudFxuICAqIGNvbXBvbmVudFxuXG4gICMgTGVhZiBTdGF0ZW1lbnQgTm9kZXM6XG5cbiAgVGhpcyBub2RlIGlzIHJlc3BvbnNpYmxlIGZvciBhIHJlbmRlciBub2RlIHRoYXQgcmVwcmVzZW50cyBhIG1vcnBoLWF0dHIuXG5cbiAgKiBhdHRyaWJ1dGVcblxuICAjIEV4cHJlc3Npb24gTm9kZXM6XG5cbiAgVGhlc2Ugbm9kZXMgYXJlIG5vdCBkaXJlY3RseSByZXNwb25zaWJsZSBmb3IgYW55IHBhcnQgb2YgdGhlIERPTSwgYnV0IGFyZVxuICBldmVudHVhbGx5IHBhc3NlZCB0byBhIFN0YXRlbWVudCBOb2RlLlxuXG4gICogZ2V0XG4gICogc3ViZXhwclxuICAqIGNvbmNhdFxuKi9cblxudmFyIGJhc2UgPSB7XG4gIGFjY2VwdEV4cHJlc3Npb246IGZ1bmN0aW9uKG5vZGUsIGVudiwgc2NvcGUpIHtcbiAgICB2YXIgcmV0ID0geyB2YWx1ZTogbnVsbCB9O1xuXG4gICAgLy8gUHJpbWl0aXZlIGxpdGVyYWxzIGFyZSB1bmFtYmlndW91c2x5IG5vbi1hcnJheSByZXByZXNlbnRhdGlvbnMgb2ZcbiAgICAvLyB0aGVtc2VsdmVzLlxuICAgIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcgfHwgbm9kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0LnZhbHVlID0gbm9kZTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgc3dpdGNoKG5vZGVbMF0pIHtcbiAgICAgIC8vIGNhbiBiZSB1c2VkIGJ5IG1hbnVhbEVsZW1lbnRcbiAgICAgIGNhc2UgJ3ZhbHVlJzogcmV0LnZhbHVlID0gbm9kZVsxXTsgYnJlYWs7XG4gICAgICBjYXNlICdnZXQnOiByZXQudmFsdWUgPSB0aGlzLmdldChub2RlLCBlbnYsIHNjb3BlKTsgYnJlYWs7XG4gICAgICBjYXNlICdzdWJleHByJzogcmV0LnZhbHVlID0gdGhpcy5zdWJleHByKG5vZGUsIGVudiwgc2NvcGUpOyBicmVhaztcbiAgICAgIGNhc2UgJ2NvbmNhdCc6IHJldC52YWx1ZSA9IHRoaXMuY29uY2F0KG5vZGUsIGVudiwgc2NvcGUpOyBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIGFjY2VwdFBhcmFtczogZnVuY3Rpb24obm9kZXMsIGVudiwgc2NvcGUpIHtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KG5vZGVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpPTAsIGw9bm9kZXMubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgICAgYXJyW2ldID0gdGhpcy5hY2NlcHRFeHByZXNzaW9uKG5vZGVzW2ldLCBlbnYsIHNjb3BlKS52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyO1xuICB9LFxuXG4gIGFjY2VwdEhhc2g6IGZ1bmN0aW9uKHBhaXJzLCBlbnYsIHNjb3BlKSB7XG4gICAgdmFyIG9iamVjdCA9IHt9O1xuXG4gICAgZm9yICh2YXIgaT0wLCBsPXBhaXJzLmxlbmd0aDsgaTxsOyBpICs9IDIpIHtcbiAgICAgIG9iamVjdFtwYWlyc1tpXV0gPSB0aGlzLmFjY2VwdEV4cHJlc3Npb24ocGFpcnNbaSsxXSwgZW52LCBzY29wZSkudmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSxcblxuICAvLyBbICdnZXQnLCBwYXRoIF1cbiAgZ2V0OiBmdW5jdGlvbihub2RlLCBlbnYsIHNjb3BlKSB7XG4gICAgcmV0dXJuIGVudi5ob29rcy5nZXQoZW52LCBzY29wZSwgbm9kZVsxXSk7XG4gIH0sXG5cbiAgLy8gWyAnc3ViZXhwcicsIHBhdGgsIHBhcmFtcywgaGFzaCBdXG4gIHN1YmV4cHI6IGZ1bmN0aW9uKG5vZGUsIGVudiwgc2NvcGUpIHtcbiAgICB2YXIgcGF0aCA9IG5vZGVbMV0sIHBhcmFtcyA9IG5vZGVbMl0sIGhhc2ggPSBub2RlWzNdO1xuICAgIHJldHVybiBlbnYuaG9va3Muc3ViZXhwcihlbnYsIHNjb3BlLCBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjY2VwdFBhcmFtcyhwYXJhbXMsIGVudiwgc2NvcGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjY2VwdEhhc2goaGFzaCwgZW52LCBzY29wZSkpO1xuICB9LFxuXG4gIC8vIFsgJ2NvbmNhdCcsIHBhcnRzIF1cbiAgY29uY2F0OiBmdW5jdGlvbihub2RlLCBlbnYsIHNjb3BlKSB7XG4gICAgcmV0dXJuIGVudi5ob29rcy5jb25jYXQoZW52LCB0aGlzLmFjY2VwdFBhcmFtcyhub2RlWzFdLCBlbnYsIHNjb3BlKSk7XG4gIH0sXG5cbiAgbGlua1BhcmFtc0FuZEhhc2g6IGZ1bmN0aW9uKGVudiwgc2NvcGUsIG1vcnBoLCBwYXRoLCBwYXJhbXMsIGhhc2gpIHtcbiAgICBpZiAobW9ycGgubGlua2VkUGFyYW1zKSB7XG4gICAgICBwYXJhbXMgPSBtb3JwaC5saW5rZWRQYXJhbXMucGFyYW1zO1xuICAgICAgaGFzaCA9IG1vcnBoLmxpbmtlZFBhcmFtcy5oYXNoO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMgJiYgdGhpcy5hY2NlcHRQYXJhbXMocGFyYW1zLCBlbnYsIHNjb3BlKTtcbiAgICAgIGhhc2ggPSBoYXNoICYmIHRoaXMuYWNjZXB0SGFzaChoYXNoLCBlbnYsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBsaW5rUGFyYW1zKGVudiwgc2NvcGUsIG1vcnBoLCBwYXRoLCBwYXJhbXMsIGhhc2gpO1xuICAgIHJldHVybiBbcGFyYW1zLCBoYXNoXTtcbiAgfVxufTtcblxuZXhwb3J0IHZhciBBbHdheXNEaXJ0eVZpc2l0b3IgPSBtZXJnZShPYmplY3QuY3JlYXRlKGJhc2UpLCB7XG4gIC8vIFsgJ2Jsb2NrJywgcGF0aCwgcGFyYW1zLCBoYXNoLCB0ZW1wbGF0ZUlkLCBpbnZlcnNlSWQgXVxuICBibG9jazogZnVuY3Rpb24obm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCB2aXNpdG9yKSB7XG4gICAgdmFyIHBhdGggPSBub2RlWzFdLCBwYXJhbXMgPSBub2RlWzJdLCBoYXNoID0gbm9kZVszXSwgdGVtcGxhdGVJZCA9IG5vZGVbNF0sIGludmVyc2VJZCA9IG5vZGVbNV07XG4gICAgdmFyIHBhcmFtc0FuZEhhc2ggPSB0aGlzLmxpbmtQYXJhbXNBbmRIYXNoKGVudiwgc2NvcGUsIG1vcnBoLCBwYXRoLCBwYXJhbXMsIGhhc2gpO1xuXG4gICAgbW9ycGguaXNEaXJ0eSA9IG1vcnBoLmlzU3VidHJlZURpcnR5ID0gZmFsc2U7XG4gICAgZW52Lmhvb2tzLmJsb2NrKG1vcnBoLCBlbnYsIHNjb3BlLCBwYXRoLCBwYXJhbXNBbmRIYXNoWzBdLCBwYXJhbXNBbmRIYXNoWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVJZCA9PT0gbnVsbCA/IG51bGwgOiB0ZW1wbGF0ZS50ZW1wbGF0ZXNbdGVtcGxhdGVJZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlcnNlSWQgPT09IG51bGwgPyBudWxsIDogdGVtcGxhdGUudGVtcGxhdGVzW2ludmVyc2VJZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yKTtcbiAgfSxcblxuICAvLyBbICdpbmxpbmUnLCBwYXRoLCBwYXJhbXMsIGhhc2ggXVxuICBpbmxpbmU6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB2aXNpdG9yKSB7XG4gICAgdmFyIHBhdGggPSBub2RlWzFdLCBwYXJhbXMgPSBub2RlWzJdLCBoYXNoID0gbm9kZVszXTtcbiAgICB2YXIgcGFyYW1zQW5kSGFzaCA9IHRoaXMubGlua1BhcmFtc0FuZEhhc2goZW52LCBzY29wZSwgbW9ycGgsIHBhdGgsIHBhcmFtcywgaGFzaCk7XG5cbiAgICBtb3JwaC5pc0RpcnR5ID0gbW9ycGguaXNTdWJ0cmVlRGlydHkgPSBmYWxzZTtcbiAgICBlbnYuaG9va3MuaW5saW5lKG1vcnBoLCBlbnYsIHNjb3BlLCBwYXRoLCBwYXJhbXNBbmRIYXNoWzBdLCBwYXJhbXNBbmRIYXNoWzFdLCB2aXNpdG9yKTtcbiAgfSxcblxuICAvLyBbICdjb250ZW50JywgcGF0aCBdXG4gIGNvbnRlbnQ6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB2aXNpdG9yKSB7XG4gICAgdmFyIHBhdGggPSBub2RlWzFdO1xuXG4gICAgbW9ycGguaXNEaXJ0eSA9IG1vcnBoLmlzU3VidHJlZURpcnR5ID0gZmFsc2U7XG5cbiAgICBpZiAoaXNIZWxwZXIoZW52LCBzY29wZSwgcGF0aCkpIHtcbiAgICAgIGVudi5ob29rcy5pbmxpbmUobW9ycGgsIGVudiwgc2NvcGUsIHBhdGgsIFtdLCB7fSwgdmlzaXRvcik7XG4gICAgICBpZiAobW9ycGgubGlua2VkUmVzdWx0KSB7XG4gICAgICAgIGxpbmtQYXJhbXMoZW52LCBzY29wZSwgbW9ycGgsICdAY29udGVudC1oZWxwZXInLCBbbW9ycGgubGlua2VkUmVzdWx0XSwgbnVsbCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHBhcmFtcztcbiAgICBpZiAobW9ycGgubGlua2VkUGFyYW1zKSB7XG4gICAgICBwYXJhbXMgPSBtb3JwaC5saW5rZWRQYXJhbXMucGFyYW1zO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBbZW52Lmhvb2tzLmdldChlbnYsIHNjb3BlLCBwYXRoKV07XG4gICAgfVxuXG4gICAgbGlua1BhcmFtcyhlbnYsIHNjb3BlLCBtb3JwaCwgJ0ByYW5nZScsIHBhcmFtcywgbnVsbCk7XG4gICAgZW52Lmhvb2tzLnJhbmdlKG1vcnBoLCBlbnYsIHNjb3BlLCBwYXRoLCBwYXJhbXNbMF0sIHZpc2l0b3IpO1xuICB9LFxuXG4gIC8vIFsgJ2VsZW1lbnQnLCBwYXRoLCBwYXJhbXMsIGhhc2ggXVxuICBlbGVtZW50OiBmdW5jdGlvbihub2RlLCBtb3JwaCwgZW52LCBzY29wZSwgdmlzaXRvcikge1xuICAgIHZhciBwYXRoID0gbm9kZVsxXSwgcGFyYW1zID0gbm9kZVsyXSwgaGFzaCA9IG5vZGVbM107XG4gICAgdmFyIHBhcmFtc0FuZEhhc2ggPSB0aGlzLmxpbmtQYXJhbXNBbmRIYXNoKGVudiwgc2NvcGUsIG1vcnBoLCBwYXRoLCBwYXJhbXMsIGhhc2gpO1xuXG4gICAgbW9ycGguaXNEaXJ0eSA9IG1vcnBoLmlzU3VidHJlZURpcnR5ID0gZmFsc2U7XG4gICAgZW52Lmhvb2tzLmVsZW1lbnQobW9ycGgsIGVudiwgc2NvcGUsIHBhdGgsIHBhcmFtc0FuZEhhc2hbMF0sIHBhcmFtc0FuZEhhc2hbMV0sIHZpc2l0b3IpO1xuICB9LFxuXG4gIC8vIFsgJ2F0dHJpYnV0ZScsIG5hbWUsIHZhbHVlIF1cbiAgYXR0cmlidXRlOiBmdW5jdGlvbihub2RlLCBtb3JwaCwgZW52LCBzY29wZSkge1xuICAgIHZhciBuYW1lID0gbm9kZVsxXSwgdmFsdWUgPSBub2RlWzJdO1xuICAgIHZhciBwYXJhbXNBbmRIYXNoID0gdGhpcy5saW5rUGFyYW1zQW5kSGFzaChlbnYsIHNjb3BlLCBtb3JwaCwgJ0BhdHRyaWJ1dGUnLCBbdmFsdWVdLCBudWxsKTtcblxuICAgIG1vcnBoLmlzRGlydHkgPSBtb3JwaC5pc1N1YnRyZWVEaXJ0eSA9IGZhbHNlO1xuICAgIGVudi5ob29rcy5hdHRyaWJ1dGUobW9ycGgsIGVudiwgc2NvcGUsIG5hbWUsIHBhcmFtc0FuZEhhc2hbMF1bMF0pO1xuICB9LFxuXG4gIC8vIFsgJ2NvbXBvbmVudCcsIHBhdGgsIGF0dHJzLCB0ZW1wbGF0ZUlkLCBpbnZlcnNlSWQgXVxuICBjb21wb25lbnQ6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB0ZW1wbGF0ZSwgdmlzaXRvcikge1xuICAgIHZhciBwYXRoID0gbm9kZVsxXSwgYXR0cnMgPSBub2RlWzJdLCB0ZW1wbGF0ZUlkID0gbm9kZVszXSwgaW52ZXJzZUlkID0gbm9kZVs0XTtcbiAgICB2YXIgcGFyYW1zQW5kSGFzaCA9IHRoaXMubGlua1BhcmFtc0FuZEhhc2goZW52LCBzY29wZSwgbW9ycGgsIHBhdGgsIFtdLCBhdHRycyk7XG4gICAgdmFyIHRlbXBsYXRlcyA9IHtcbiAgICAgIGRlZmF1bHQ6IHRlbXBsYXRlLnRlbXBsYXRlc1t0ZW1wbGF0ZUlkXSxcbiAgICAgIGludmVyc2U6IHRlbXBsYXRlLnRlbXBsYXRlc1tpbnZlcnNlSWRdXG4gICAgfTtcblxuICAgIG1vcnBoLmlzRGlydHkgPSBtb3JwaC5pc1N1YnRyZWVEaXJ0eSA9IGZhbHNlO1xuICAgIGVudi5ob29rcy5jb21wb25lbnQobW9ycGgsIGVudiwgc2NvcGUsIHBhdGgsIHBhcmFtc0FuZEhhc2hbMF0sIHBhcmFtc0FuZEhhc2hbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXMsIHZpc2l0b3IpO1xuICB9LFxuXG4gIC8vIFsgJ2F0dHJpYnV0ZXMnLCB0ZW1wbGF0ZSBdXG4gIGF0dHJpYnV0ZXM6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCBwYXJlbnRNb3JwaCwgdmlzaXRvcikge1xuICAgIGxldCB0ZW1wbGF0ZSA9IG5vZGVbMV07XG4gICAgZW52Lmhvb2tzLmF0dHJpYnV0ZXMobW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCBwYXJlbnRNb3JwaCwgdmlzaXRvcik7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBtZXJnZShPYmplY3QuY3JlYXRlKGJhc2UpLCB7XG4gIC8vIFsgJ2Jsb2NrJywgcGF0aCwgcGFyYW1zLCBoYXNoLCB0ZW1wbGF0ZUlkLCBpbnZlcnNlSWQgXVxuICBibG9jazogZnVuY3Rpb24obm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCB2aXNpdG9yKSB7XG4gICAgZGlydHlDaGVjayhlbnYsIG1vcnBoLCB2aXNpdG9yLCBmdW5jdGlvbih2aXNpdG9yKSB7XG4gICAgICBBbHdheXNEaXJ0eVZpc2l0b3IuYmxvY2sobm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCB2aXNpdG9yKTtcbiAgICB9KTtcbiAgfSxcblxuICAvLyBbICdpbmxpbmUnLCBwYXRoLCBwYXJhbXMsIGhhc2ggXVxuICBpbmxpbmU6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB2aXNpdG9yKSB7XG4gICAgZGlydHlDaGVjayhlbnYsIG1vcnBoLCB2aXNpdG9yLCBmdW5jdGlvbih2aXNpdG9yKSB7XG4gICAgICBBbHdheXNEaXJ0eVZpc2l0b3IuaW5saW5lKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB2aXNpdG9yKTtcbiAgICB9KTtcbiAgfSxcblxuICAvLyBbICdjb250ZW50JywgcGF0aCBdXG4gIGNvbnRlbnQ6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB2aXNpdG9yKSB7XG4gICAgZGlydHlDaGVjayhlbnYsIG1vcnBoLCB2aXNpdG9yLCBmdW5jdGlvbih2aXNpdG9yKSB7XG4gICAgICBBbHdheXNEaXJ0eVZpc2l0b3IuY29udGVudChub2RlLCBtb3JwaCwgZW52LCBzY29wZSwgdmlzaXRvcik7XG4gICAgfSk7XG4gIH0sXG5cbiAgLy8gWyAnZWxlbWVudCcsIHBhdGgsIHBhcmFtcywgaGFzaCBdXG4gIGVsZW1lbnQ6IGZ1bmN0aW9uKG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB0ZW1wbGF0ZSwgdmlzaXRvcikge1xuICAgIGRpcnR5Q2hlY2soZW52LCBtb3JwaCwgdmlzaXRvciwgZnVuY3Rpb24odmlzaXRvcikge1xuICAgICAgQWx3YXlzRGlydHlWaXNpdG9yLmVsZW1lbnQobm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCB2aXNpdG9yKTtcbiAgICB9KTtcbiAgfSxcblxuICAvLyBbICdhdHRyaWJ1dGUnLCBuYW1lLCB2YWx1ZSBdXG4gIGF0dHJpYnV0ZTogZnVuY3Rpb24obm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlKSB7XG4gICAgZGlydHlDaGVjayhlbnYsIG1vcnBoLCBudWxsLCBmdW5jdGlvbigpIHtcbiAgICAgIEFsd2F5c0RpcnR5VmlzaXRvci5hdHRyaWJ1dGUobm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlKTtcbiAgICB9KTtcbiAgfSxcblxuICAvLyBbICdjb21wb25lbnQnLCBwYXRoLCBhdHRycywgdGVtcGxhdGVJZCBdXG4gIGNvbXBvbmVudDogZnVuY3Rpb24obm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCB2aXNpdG9yKSB7XG4gICAgZGlydHlDaGVjayhlbnYsIG1vcnBoLCB2aXNpdG9yLCBmdW5jdGlvbih2aXNpdG9yKSB7XG4gICAgICBBbHdheXNEaXJ0eVZpc2l0b3IuY29tcG9uZW50KG5vZGUsIG1vcnBoLCBlbnYsIHNjb3BlLCB0ZW1wbGF0ZSwgdmlzaXRvcik7XG4gICAgfSk7XG4gIH0sXG5cbiAgLy8gWyAnYXR0cmlidXRlcycsIHRlbXBsYXRlIF1cbiAgYXR0cmlidXRlczogZnVuY3Rpb24obm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHBhcmVudE1vcnBoLCB2aXNpdG9yKSB7XG4gICAgQWx3YXlzRGlydHlWaXNpdG9yLmF0dHJpYnV0ZXMobm9kZSwgbW9ycGgsIGVudiwgc2NvcGUsIHBhcmVudE1vcnBoLCB2aXNpdG9yKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGRpcnR5Q2hlY2soX2VudiwgbW9ycGgsIHZpc2l0b3IsIGNhbGxiYWNrKSB7XG4gIHZhciBpc0RpcnR5ID0gbW9ycGguaXNEaXJ0eTtcbiAgdmFyIGlzU3VidHJlZURpcnR5ID0gbW9ycGguaXNTdWJ0cmVlRGlydHk7XG4gIHZhciBlbnYgPSBfZW52O1xuXG4gIGlmIChpc1N1YnRyZWVEaXJ0eSkge1xuICAgIHZpc2l0b3IgPSBBbHdheXNEaXJ0eVZpc2l0b3I7XG4gIH1cblxuICBpZiAoaXNEaXJ0eSB8fCBpc1N1YnRyZWVEaXJ0eSkge1xuICAgIGNhbGxiYWNrKHZpc2l0b3IpO1xuICB9IGVsc2Uge1xuICAgIGlmIChtb3JwaC5idWlsZENoaWxkRW52KSB7XG4gICAgICBlbnYgPSBtb3JwaC5idWlsZENoaWxkRW52KG1vcnBoLnN0YXRlLCBlbnYpO1xuICAgIH1cbiAgICB2YWxpZGF0ZUNoaWxkTW9ycGhzKGVudiwgbW9ycGgsIHZpc2l0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSGVscGVyKGVudiwgc2NvcGUsIHBhdGgpIHtcbiAgcmV0dXJuIChlbnYuaG9va3Mua2V5d29yZHNbcGF0aF0gIT09IHVuZGVmaW5lZCkgfHwgZW52Lmhvb2tzLmhhc0hlbHBlcihlbnYsIHNjb3BlLCBwYXRoKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUvZXhwcmVzc2lvbi12aXNpdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBV08sU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDOUMsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDOztBQUVmLE9BQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDNUMsU0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0dBQzFEOztBQUVELFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRU0sU0FBUyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDNUMsTUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDOztBQUVoQixPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDL0MsUUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFFBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsVUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO0dBQ3pEOztBQUVELFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUMxQyxNQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7OztBQUkxQixNQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQzdDLE9BQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0dBQ2xCLE1BQU07QUFDTCxPQUFHLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzVDOztBQUVELFNBQU8sR0FBRyxDQUFDO0NBQ1o7O0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDdEMsVUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDOztBQUViLFNBQUssT0FBTztBQUFJLGFBQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUEsQUFDL0IsU0FBSyxLQUFLO0FBQU0sYUFBTyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFBLEFBQ3JELFNBQUssU0FBUztBQUFFLGFBQU8sZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFBQSxBQUN6RCxTQUFLLFFBQVE7QUFBRyxhQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQUEsR0FDekQ7Q0FDRjs7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtNQUM5QixJQUFJLEdBQUksSUFBSTs7QUFFbkIsU0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3hDOztBQUVELFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO01BQ2xDLElBQUksR0FBd0IsSUFBSTtNQUExQixTQUFTLEdBQWEsSUFBSTtNQUFmLE9BQU8sR0FBSSxJQUFJOztBQUV2QyxNQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRCxNQUFJLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQzs7QUFFM0MsU0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDMUQ7O0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7TUFDakMsUUFBUSxHQUFJLElBQUk7O0FBRXZCLE1BQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDOztBQUUvQyxTQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUNyQyIsImZpbGUiOiJodG1sYmFycy1ydW50aW1lL2V4cHJlc3Npb24tdmlzaXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICAjIEV4cHJlc3Npb24gTm9kZXM6XG5cbiAgVGhlc2Ugbm9kZXMgYXJlIG5vdCBkaXJlY3RseSByZXNwb25zaWJsZSBmb3IgYW55IHBhcnQgb2YgdGhlIERPTSwgYnV0IGFyZVxuICBldmVudHVhbGx5IHBhc3NlZCB0byBhIFN0YXRlbWVudCBOb2RlLlxuXG4gICogZ2V0XG4gICogc3ViZXhwclxuICAqIGNvbmNhdFxuKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFjY2VwdFBhcmFtcyhub2RlcywgZW52LCBzY29wZSkge1xuICBsZXQgYXJyYXkgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IG5vZGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGFycmF5LnB1c2goYWNjZXB0RXhwcmVzc2lvbihub2Rlc1tpXSwgZW52LCBzY29wZSkudmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjZXB0SGFzaChwYWlycywgZW52LCBzY29wZSkge1xuICBsZXQgb2JqZWN0ID0ge307XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYWlycy5sZW5ndGg7IGkgPCBsOyBpICs9IDIpIHtcbiAgICBsZXQga2V5ID0gcGFpcnNbaV07XG4gICAgbGV0IHZhbHVlID0gcGFpcnNbaSsxXTtcbiAgICBvYmplY3Rba2V5XSA9IGFjY2VwdEV4cHJlc3Npb24odmFsdWUsIGVudiwgc2NvcGUpLnZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZnVuY3Rpb24gYWNjZXB0RXhwcmVzc2lvbihub2RlLCBlbnYsIHNjb3BlKSB7XG4gIGxldCByZXQgPSB7IHZhbHVlOiBudWxsIH07XG5cbiAgLy8gUHJpbWl0aXZlIGxpdGVyYWxzIGFyZSB1bmFtYmlndW91c2x5IG5vbi1hcnJheSByZXByZXNlbnRhdGlvbnMgb2ZcbiAgLy8gdGhlbXNlbHZlcy5cbiAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCBub2RlID09PSBudWxsKSB7XG4gICAgcmV0LnZhbHVlID0gbm9kZTtcbiAgfSBlbHNlIHtcbiAgICByZXQudmFsdWUgPSBldmFsdWF0ZU5vZGUobm9kZSwgZW52LCBzY29wZSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBldmFsdWF0ZU5vZGUobm9kZSwgZW52LCBzY29wZSkge1xuICBzd2l0Y2ggKG5vZGVbMF0pIHtcbiAgICAvLyBjYW4gYmUgdXNlZCBieSBtYW51YWxFbGVtZW50XG4gICAgY2FzZSAndmFsdWUnOiAgIHJldHVybiBub2RlWzFdO1xuICAgIGNhc2UgJ2dldCc6ICAgICByZXR1cm4gZXZhbHVhdGVHZXQobm9kZSwgZW52LCBzY29wZSk7XG4gICAgY2FzZSAnc3ViZXhwcic6IHJldHVybiBldmFsdWF0ZVN1YmV4cHIobm9kZSwgZW52LCBzY29wZSk7XG4gICAgY2FzZSAnY29uY2F0JzogIHJldHVybiBldmFsdWF0ZUNvbmNhdChub2RlLCBlbnYsIHNjb3BlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBldmFsdWF0ZUdldChub2RlLCBlbnYsIHNjb3BlKSB7XG4gIGxldCBbLCBwYXRoXSA9IG5vZGU7XG5cbiAgcmV0dXJuIGVudi5ob29rcy5nZXQoZW52LCBzY29wZSwgcGF0aCk7XG59XG5cbmZ1bmN0aW9uIGV2YWx1YXRlU3ViZXhwcihub2RlLCBlbnYsIHNjb3BlKSB7XG4gIGxldCBbLCBwYXRoLCByYXdQYXJhbXMsIHJhd0hhc2hdID0gbm9kZTtcblxuICBsZXQgcGFyYW1zID0gYWNjZXB0UGFyYW1zKHJhd1BhcmFtcywgZW52LCBzY29wZSk7XG4gIGxldCBoYXNoID0gYWNjZXB0SGFzaChyYXdIYXNoLCBlbnYsIHNjb3BlKTtcblxuICByZXR1cm4gZW52Lmhvb2tzLnN1YmV4cHIoZW52LCBzY29wZSwgcGF0aCwgcGFyYW1zLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gZXZhbHVhdGVDb25jYXQobm9kZSwgZW52LCBzY29wZSkge1xuICBsZXQgWywgcmF3UGFydHNdID0gbm9kZTtcblxuICBsZXQgcGFydHMgPSBhY2NlcHRQYXJhbXMocmF3UGFydHMsIGVudiwgc2NvcGUpO1xuXG4gIHJldHVybiBlbnYuaG9va3MuY29uY2F0KGVudiwgcGFydHMpO1xufVxuIl19

@@ -14,5 +14,5 @@ exports.__esModule = true;

var _expressionVisitor = require("./expression-visitor");
var _nodeVisitor = require("./node-visitor");
var _expressionVisitor2 = _interopRequireDefault(_expressionVisitor);
var _nodeVisitor2 = _interopRequireDefault(_nodeVisitor);

@@ -107,3 +107,3 @@ var _morph = require("./morph");

function manualElement(tagName, attributes) {
function manualElement(tagName, attributes, _isEmpty) {
var statements = [];

@@ -118,4 +118,8 @@

statements.push(['content', 'yield']);
var isEmpty = _isEmpty || _htmlbarsUtilVoidTagNames2.default[tagName];
if (!isEmpty) {
statements.push(['content', 'yield']);
}
var template = {

@@ -139,3 +143,3 @@ arity: 0,

if (!_htmlbarsUtilVoidTagNames2.default[tagName]) {
if (!isEmpty) {
var el2 = dom.createComment("");

@@ -160,3 +164,6 @@ dom.appendChild(el1, el2);

morphs.push(dom.createMorphAt(element, 0, 0));
if (!isEmpty) {
morphs.push(dom.createMorphAt(element, 0, 0));
}
return morphs;

@@ -231,3 +238,3 @@ },

this.root.rendered = true;
this.populateNodes(_expressionVisitor.AlwaysDirtyVisitor);
this.populateNodes(_nodeVisitor.AlwaysDirtyVisitor);

@@ -246,7 +253,7 @@ if (this.shouldSetContent && this.root.setContent) {

RenderResult.prototype.revalidate = function (env, self, blockArguments, scope) {
this.revalidateWith(env, scope, self, blockArguments, _expressionVisitor2.default);
this.revalidateWith(env, scope, self, blockArguments, _nodeVisitor2.default);
};
RenderResult.prototype.rerender = function (env, self, blockArguments, scope) {
this.revalidateWith(env, scope, self, blockArguments, _expressionVisitor.AlwaysDirtyVisitor);
this.revalidateWith(env, scope, self, blockArguments, _nodeVisitor.AlwaysDirtyVisitor);
};

@@ -380,2 +387,2 @@

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7a0JBVXdCLE1BQU07Ozs7Ozs7O3NDQVZOLDhCQUE4Qjs7c0NBQ3hCLDhCQUE4Qjs7aUNBQzlCLHNCQUFzQjs7OztxQkFFbEMsU0FBUzs7Ozt5Q0FDQSxpQ0FBaUM7O3dDQUN4QyxpQ0FBaUM7Ozs7QUFFckQsSUFBSSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7O0FBRWpDLFNBQVMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM1RCxNQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ2xCLE1BQUksaUJBQWlCLENBQUM7O0FBRXRCLE1BQUksT0FBTyxFQUFFO0FBQ1gsUUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO0FBQ3RCLHVCQUFpQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7S0FDMUQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtBQUNwQyx1QkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7S0FDL0M7R0FDRjs7QUFFRCxLQUFHLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7O0FBRXZDLE1BQUksWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDeEYsY0FBWSxDQUFDLE1BQU0sRUFBRSxDQUFDOztBQUV0QixTQUFPLFlBQVksQ0FBQztDQUNyQjs7QUFFRCxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFO0FBQzNHLE1BQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3JCLE1BQUks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QUU7QUFDL0MsTUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztDQUNyRCxDQUFDOztBQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQ2pELE1BQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkQsQ0FBQzs7QUFFRixZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFTLGNBQWMsRUFBRTtBQUMzRCxNQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzs7QUFFdEMsT0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztHQUNsRjtDQUNGLENBQUM7O0FBRUYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBUyxjQUFjLEVBQUU7QUFDN0QsTUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7O0FBRXRDLE9BQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0MsUUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7R0FDcEY7Q0FDRixDQUFDOztBQUVGLFNBQVMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbkMsTUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Q0FDeEI7O0FBRU0sU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFO0FBQ3BFLE1BQUksS0FBSyxHQUFHLGdCQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDakYsZ0JBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQy9DLE1BQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHO01BQUUsUUFBUSxDQUFDO0FBQzVCLE1BQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7QUFDeEMsUUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtBQUNwQyxjQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxVQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUU7QUFDeEIsZ0JBQVEsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO09BQ3BDLE1BQU07QUFDTCxnQkFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7T0FDN0I7S0FDRjtBQUNELFFBQUksUUFBUSxDQUFDLGNBQWMsRUFBRTtBQUMzQixjQUFRLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3pEO0dBQ0YsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3BCLFlBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0dBQ3hDOztBQUVELFNBQU8sUUFBUSxDQUFDO0NBQ2pCIiwiZmlsZSI6Imh0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG5pbXBvcnQgeyB2aXNpdENoaWxkcmVuIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvbW9ycGgtdXRpbHNcIjtcbmltcG9ydCBFeHByZXNzaW9uVmlzaXRvciBmcm9tIFwiLi9leHByZXNzaW9uLXZpc2l0b3JcIjtcbmltcG9ydCB7IEFsd2F5c0RpcnR5VmlzaXRvciB9IGZyb20gXCIuL2V4cHJlc3Npb24tdmlzaXRvclwiO1xuaW1wb3J0IE1vcnBoIGZyb20gXCIuL21vcnBoXCI7XG5pbXBvcnQgeyBjbGVhck1vcnBoIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHNcIjtcbmltcG9ydCB2b2lkTWFwIGZyb20gJy4uL2h0bWxiYXJzLXV0aWwvdm9pZC10YWctbmFtZXMnO1xuXG52YXIgc3ZnTmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5kZXIodGVtcGxhdGUsIGVudiwgc2NvcGUsIG9wdGlvbnMpIHtcbiAgdmFyIGRvbSA9IGVudi5kb207XG4gIHZhciBjb250ZXh0dWFsRWxlbWVudDtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnJlbmRlck5vZGUpIHtcbiAgICAgIGNvbnRleHR1YWxFbGVtZW50ID0gb3B0aW9ucy5yZW5kZXJOb2RlLmNvbnRleHR1YWxFbGVtZW50O1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5jb250ZXh0dWFsRWxlbWVudCkge1xuICAgICAgY29udGV4dHVhbEVsZW1lbnQgPSBvcHRpb25zLmNvbnRleHR1YWxFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIGRvbS5kZXRlY3ROYW1lc3BhY2UoY29udGV4dHVhbEVsZW1lbnQpO1xuXG4gIHZhciByZW5kZXJSZXN1bHQgPSBSZW5kZXJSZXN1bHQuYnVpbGQoZW52LCBzY29wZSwgdGVtcGxhdGUsIG9wdGlvbnMsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgcmVuZGVyUmVzdWx0LnJlbmRlcigpO1xuXG4gIHJldHVybiByZW5kZXJSZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFJlbmRlclJlc3VsdChlbnYsIHNjb3BlLCBvcHRpb25zLCByb290Tm9kZSwgb3duZXJOb2RlLCBub2RlcywgZnJhZ21lbnQsIHRlbXBsYXRlLCBzaG91bGRTZXRDb250ZW50KSB7XG4gIHRoaXMucm9vdCA9IHJvb3ROb2RlO1xuICB0aGlzLmZyYWdtZW50ID0gZnJhZ21lbnQ7XG5cbiAgdGhpcy5ub2RlcyA9IG5vZGVzO1xuICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIHRoaXMuc3RhdGVtZW50cyA9IHRlbXBsYXRlLnN0YXRlbWVudHMuc2xpY2UoKTtcbiAgdGhpcy5lbnYgPSBlbnY7XG4gIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgdGhpcy5zaG91bGRTZXRDb250ZW50ID0gc2hvdWxkU2V0Q29udGVudDtcblxuICB0aGlzLmJpbmRTY29wZSgpO1xuXG4gIGlmIChvcHRpb25zLmF0dHJpYnV0ZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5vZGVzLnB1c2goeyBzdGF0ZToge30gfSk7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goWydhdHRyaWJ1dGVzJywgYXR0YWNoQXR0cmlidXRlcyhvcHRpb25zLmF0dHJpYnV0ZXMpXSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zZWxmICE9PSB1bmRlZmluZWQpIHsgdGhpcy5iaW5kU2VsZihvcHRpb25zLnNlbGYpOyB9XG4gIGlmIChvcHRpb25zLmJsb2NrQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHsgdGhpcy5iaW5kTG9jYWxzKG9wdGlvbnMuYmxvY2tBcmd1bWVudHMpOyB9XG5cbiAgdGhpcy5pbml0aWFsaXplTm9kZXMob3duZXJOb2RlKTtcbn1cblxuUmVuZGVyUmVzdWx0LmJ1aWxkID0gZnVuY3Rpb24oZW52LCBzY29wZSwgdGVtcGxhdGUsIG9wdGlvbnMsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIHZhciBkb20gPSBlbnYuZG9tO1xuICB2YXIgZnJhZ21lbnQgPSBnZXRDYWNoZWRGcmFnbWVudCh0ZW1wbGF0ZSwgZW52KTtcbiAgdmFyIG5vZGVzID0gdGVtcGxhdGUuYnVpbGRSZW5kZXJOb2Rlcyhkb20sIGZyYWdtZW50LCBjb250ZXh0dWFsRWxlbWVudCk7XG5cbiAgdmFyIHJvb3ROb2RlLCBvd25lck5vZGUsIHNob3VsZFNldENvbnRlbnQ7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZW5kZXJOb2RlKSB7XG4gICAgcm9vdE5vZGUgPSBvcHRpb25zLnJlbmRlck5vZGU7XG4gICAgb3duZXJOb2RlID0gcm9vdE5vZGUub3duZXJOb2RlO1xuICAgIHNob3VsZFNldENvbnRlbnQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJvb3ROb2RlID0gZG9tLmNyZWF0ZU1vcnBoKG51bGwsIGZyYWdtZW50LmZpcnN0Q2hpbGQsIGZyYWdtZW50Lmxhc3RDaGlsZCwgY29udGV4dHVhbEVsZW1lbnQpO1xuICAgIG93bmVyTm9kZSA9IHJvb3ROb2RlO1xuICAgIGluaXRpYWxpemVOb2RlKHJvb3ROb2RlLCBvd25lck5vZGUpO1xuICAgIHNob3VsZFNldENvbnRlbnQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChyb290Tm9kZS5jaGlsZE5vZGVzKSB7XG4gICAgdmlzaXRDaGlsZHJlbihyb290Tm9kZS5jaGlsZE5vZGVzLCBmdW5jdGlvbihub2RlKSB7XG4gICAgICBjbGVhck1vcnBoKG5vZGUsIGVudiwgdHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByb290Tm9kZS5jaGlsZE5vZGVzID0gbm9kZXM7XG4gIHJldHVybiBuZXcgUmVuZGVyUmVzdWx0KGVudiwgc2NvcGUsIG9wdGlvbnMsIHJvb3ROb2RlLCBvd25lck5vZGUsIG5vZGVzLCBmcmFnbWVudCwgdGVtcGxhdGUsIHNob3VsZFNldENvbnRlbnQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1hbnVhbEVsZW1lbnQodGFnTmFtZSwgYXR0cmlidXRlcykge1xuICB2YXIgc3RhdGVtZW50cyA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzW2tleV0gPT09ICdzdHJpbmcnKSB7IGNvbnRpbnVlOyB9XG4gICAgc3RhdGVtZW50cy5wdXNoKFtcImF0dHJpYnV0ZVwiLCBrZXksIGF0dHJpYnV0ZXNba2V5XV0pO1xuICB9XG5cbiAgc3RhdGVtZW50cy5wdXNoKFsnY29udGVudCcsICd5aWVsZCddKTtcblxuICB2YXIgdGVtcGxhdGUgPSB7XG4gICAgYXJpdHk6IDAsXG4gICAgY2FjaGVkRnJhZ21lbnQ6IG51bGwsXG4gICAgaGFzUmVuZGVyZWQ6IGZhbHNlLFxuICAgIGJ1aWxkRnJhZ21lbnQ6IGZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoZG9tKSB7XG4gICAgICB2YXIgZWwwID0gZG9tLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGlmICh0YWdOYW1lID09PSAnc3ZnJykge1xuICAgICAgICBkb20uc2V0TmFtZXNwYWNlKHN2Z05hbWVzcGFjZSk7XG4gICAgICB9XG4gICAgICB2YXIgZWwxID0gZG9tLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRlc1trZXldICE9PSAnc3RyaW5nJykgeyBjb250aW51ZTsgfVxuICAgICAgICBkb20uc2V0QXR0cmlidXRlKGVsMSwga2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZvaWRNYXBbdGFnTmFtZV0pIHtcbiAgICAgICAgdmFyIGVsMiA9IGRvbS5jcmVhdGVDb21tZW50KFwiXCIpO1xuICAgICAgICBkb20uYXBwZW5kQ2hpbGQoZWwxLCBlbDIpO1xuICAgICAgfVxuXG4gICAgICBkb20uYXBwZW5kQ2hpbGQoZWwwLCBlbDEpO1xuXG4gICAgICByZXR1cm4gZWwwO1xuICAgIH0sXG4gICAgYnVpbGRSZW5kZXJOb2RlczogZnVuY3Rpb24gYnVpbGRSZW5kZXJOb2Rlcyhkb20sIGZyYWdtZW50KSB7XG4gICAgICB2YXIgZWxlbWVudCA9IGRvbS5jaGlsZEF0KGZyYWdtZW50LCBbMF0pO1xuICAgICAgdmFyIG1vcnBocyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXNba2V5XSA9PT0gJ3N0cmluZycpIHsgY29udGludWU7IH1cbiAgICAgICAgbW9ycGhzLnB1c2goZG9tLmNyZWF0ZUF0dHJNb3JwaChlbGVtZW50LCBrZXkpKTtcbiAgICAgIH1cblxuICAgICAgbW9ycGhzLnB1c2goZG9tLmNyZWF0ZU1vcnBoQXQoZWxlbWVudCwgMCwgMCkpO1xuICAgICAgcmV0dXJuIG1vcnBocztcbiAgICB9LFxuICAgIHN0YXRlbWVudHM6IHN0YXRlbWVudHMsXG4gICAgbG9jYWxzOiBbXSxcbiAgICB0ZW1wbGF0ZXM6IFtdXG4gIH07XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7XG4gIHZhciBzdGF0ZW1lbnRzID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXNba2V5XSA9PT0gJ3N0cmluZycpIHsgY29udGludWU7IH1cbiAgICBzdGF0ZW1lbnRzLnB1c2goW1wiYXR0cmlidXRlXCIsIGtleSwgYXR0cmlidXRlc1trZXldXSk7XG4gIH1cblxuICB2YXIgdGVtcGxhdGUgPSB7XG4gICAgYXJpdHk6IDAsXG4gICAgY2FjaGVkRnJhZ21lbnQ6IG51bGwsXG4gICAgaGFzUmVuZGVyZWQ6IGZhbHNlLFxuICAgIGJ1aWxkRnJhZ21lbnQ6IGZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoZG9tKSB7XG4gICAgICB2YXIgZWwwID0gdGhpcy5lbGVtZW50O1xuICAgICAgaWYgKGVsMC5uYW1lc3BhY2VVUkkgPT09IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIikge1xuICAgICAgICBkb20uc2V0TmFtZXNwYWNlKHN2Z05hbWVzcGFjZSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXNba2V5XSAhPT0gJ3N0cmluZycpIHsgY29udGludWU7IH1cbiAgICAgICAgZG9tLnNldEF0dHJpYnV0ZShlbDAsIGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVsMDtcbiAgICB9LFxuICAgIGJ1aWxkUmVuZGVyTm9kZXM6IGZ1bmN0aW9uIGJ1aWxkUmVuZGVyTm9kZXMoZG9tKSB7XG4gICAgICB2YXIgZWxlbWVudCA9IHRoaXMuZWxlbWVudDtcbiAgICAgIHZhciBtb3JwaHMgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzW2tleV0gPT09ICdzdHJpbmcnKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIG1vcnBocy5wdXNoKGRvbS5jcmVhdGVBdHRyTW9ycGgoZWxlbWVudCwga2V5KSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb3JwaHM7XG4gICAgfSxcbiAgICBzdGF0ZW1lbnRzOiBzdGF0ZW1lbnRzLFxuICAgIGxvY2FsczogW10sXG4gICAgdGVtcGxhdGVzOiBbXSxcbiAgICBlbGVtZW50OiBudWxsXG4gIH07XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLmluaXRpYWxpemVOb2RlcyA9IGZ1bmN0aW9uKG93bmVyTm9kZSkge1xuICBmb3JFYWNoKHRoaXMucm9vdC5jaGlsZE5vZGVzLCBmdW5jdGlvbihub2RlKSB7XG4gICAgaW5pdGlhbGl6ZU5vZGUobm9kZSwgb3duZXJOb2RlKTtcbiAgfSk7XG59O1xuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnJvb3QubGFzdFJlc3VsdCA9IHRoaXM7XG4gIHRoaXMucm9vdC5yZW5kZXJlZCA9IHRydWU7XG4gIHRoaXMucG9wdWxhdGVOb2RlcyhBbHdheXNEaXJ0eVZpc2l0b3IpO1xuXG4gIGlmICh0aGlzLnNob3VsZFNldENvbnRlbnQgJiYgdGhpcy5yb290LnNldENvbnRlbnQpIHtcbiAgICB0aGlzLnJvb3Quc2V0Q29udGVudCh0aGlzLmZyYWdtZW50KTtcbiAgfVxufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5kaXJ0eSA9IGZ1bmN0aW9uKCkge1xuICB2aXNpdENoaWxkcmVuKFt0aGlzLnJvb3RdLCBmdW5jdGlvbihub2RlKSB7IG5vZGUuaXNEaXJ0eSA9IHRydWU7IH0pO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5yZXZhbGlkYXRlID0gZnVuY3Rpb24oZW52LCBzZWxmLCBibG9ja0FyZ3VtZW50cywgc2NvcGUpIHtcbiAgdGhpcy5yZXZhbGlkYXRlV2l0aChlbnYsIHNjb3BlLCBzZWxmLCBibG9ja0FyZ3VtZW50cywgRXhwcmVzc2lvblZpc2l0b3IpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5yZXJlbmRlciA9IGZ1bmN0aW9uKGVudiwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIHNjb3BlKSB7XG4gIHRoaXMucmV2YWxpZGF0ZVdpdGgoZW52LCBzY29wZSwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIEFsd2F5c0RpcnR5VmlzaXRvcik7XG59O1xuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLnJldmFsaWRhdGVXaXRoID0gZnVuY3Rpb24oZW52LCBzY29wZSwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIHZpc2l0b3IpIHtcbiAgaWYgKGVudiAhPT0gdW5kZWZpbmVkKSB7IHRoaXMuZW52ID0gZW52OyB9XG4gIGlmIChzY29wZSAhPT0gdW5kZWZpbmVkKSB7IHRoaXMuc2NvcGUgPSBzY29wZTsgfVxuICB0aGlzLnVwZGF0ZVNjb3BlKCk7XG5cbiAgaWYgKHNlbGYgIT09IHVuZGVmaW5lZCkgeyB0aGlzLnVwZGF0ZVNlbGYoc2VsZik7IH1cbiAgaWYgKGJsb2NrQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHsgdGhpcy51cGRhdGVMb2NhbHMoYmxvY2tBcmd1bWVudHMpOyB9XG5cbiAgdGhpcy5wb3B1bGF0ZU5vZGVzKHZpc2l0b3IpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gIHZhciByb290Tm9kZSA9IHRoaXMucm9vdDtcbiAgY2xlYXJNb3JwaChyb290Tm9kZSwgdGhpcy5lbnYsIHRydWUpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5wb3B1bGF0ZU5vZGVzID0gZnVuY3Rpb24odmlzaXRvcikge1xuICB2YXIgZW52ID0gdGhpcy5lbnY7XG4gIHZhciBzY29wZSA9IHRoaXMuc2NvcGU7XG4gIHZhciB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGU7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXM7XG4gIHZhciBzdGF0ZW1lbnRzID0gdGhpcy5zdGF0ZW1lbnRzO1xuICB2YXIgaSwgbDtcblxuICBmb3IgKGk9MCwgbD1zdGF0ZW1lbnRzLmxlbmd0aDsgaTxsOyBpKyspIHtcbiAgICB2YXIgc3RhdGVtZW50ID0gc3RhdGVtZW50c1tpXTtcbiAgICB2YXIgbW9ycGggPSBub2Rlc1tpXTtcblxuICAgIGlmIChlbnYuaG9va3Mud2lsbFJlbmRlck5vZGUpIHtcbiAgICAgIGVudi5ob29rcy53aWxsUmVuZGVyTm9kZShtb3JwaCwgZW52LCBzY29wZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChzdGF0ZW1lbnRbMF0pIHtcbiAgICAgIGNhc2UgJ2Jsb2NrJzogdmlzaXRvci5ibG9jayhzdGF0ZW1lbnQsIG1vcnBoLCBlbnYsIHNjb3BlLCB0ZW1wbGF0ZSwgdmlzaXRvcik7IGJyZWFrO1xuICAgICAgY2FzZSAnaW5saW5lJzogdmlzaXRvci5pbmxpbmUoc3RhdGVtZW50LCBtb3JwaCwgZW52LCBzY29wZSwgdmlzaXRvcik7IGJyZWFrO1xuICAgICAgY2FzZSAnY29udGVudCc6IHZpc2l0b3IuY29udGVudChzdGF0ZW1lbnQsIG1vcnBoLCBlbnYsIHNjb3BlLCB2aXNpdG9yKTsgYnJlYWs7XG4gICAgICBjYXNlICdlbGVtZW50JzogdmlzaXRvci5lbGVtZW50KHN0YXRlbWVudCwgbW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCB2aXNpdG9yKTsgYnJlYWs7XG4gICAgICBjYXNlICdhdHRyaWJ1dGUnOiB2aXNpdG9yLmF0dHJpYnV0ZShzdGF0ZW1lbnQsIG1vcnBoLCBlbnYsIHNjb3BlKTsgYnJlYWs7XG4gICAgICBjYXNlICdjb21wb25lbnQnOiB2aXNpdG9yLmNvbXBvbmVudChzdGF0ZW1lbnQsIG1vcnBoLCBlbnYsIHNjb3BlLCB0ZW1wbGF0ZSwgdmlzaXRvcik7IGJyZWFrO1xuICAgICAgY2FzZSAnYXR0cmlidXRlcyc6IHZpc2l0b3IuYXR0cmlidXRlcyhzdGF0ZW1lbnQsIG1vcnBoLCBlbnYsIHNjb3BlLCB0aGlzLmZyYWdtZW50LCB2aXNpdG9yKTsgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGVudi5ob29rcy5kaWRSZW5kZXJOb2RlKSB7XG4gICAgICBlbnYuaG9va3MuZGlkUmVuZGVyTm9kZShtb3JwaCwgZW52LCBzY29wZSk7XG4gICAgfVxuICB9XG59O1xuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLmJpbmRTY29wZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmVudi5ob29rcy5iaW5kU2NvcGUodGhpcy5lbnYsIHRoaXMuc2NvcGUpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS51cGRhdGVTY29wZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmVudi5ob29rcy51cGRhdGVTY29wZSh0aGlzLmVudiwgdGhpcy5zY29wZSk7XG59O1xuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLmJpbmRTZWxmID0gZnVuY3Rpb24oc2VsZikge1xuICB0aGlzLmVudi5ob29rcy5iaW5kU2VsZih0aGlzLmVudiwgdGhpcy5zY29wZSwgc2VsZik7XG59O1xuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLnVwZGF0ZVNlbGYgPSBmdW5jdGlvbihzZWxmKSB7XG4gIHRoaXMuZW52Lmhvb2tzLnVwZGF0ZVNlbGYodGhpcy5lbnYsIHRoaXMuc2NvcGUsIHNlbGYpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5iaW5kTG9jYWxzID0gZnVuY3Rpb24oYmxvY2tBcmd1bWVudHMpIHtcbiAgdmFyIGxvY2FsTmFtZXMgPSB0aGlzLnRlbXBsYXRlLmxvY2FscztcblxuICBmb3IgKHZhciBpPTAsIGw9bG9jYWxOYW1lcy5sZW5ndGg7IGk8bDsgaSsrKSB7XG4gICAgdGhpcy5lbnYuaG9va3MuYmluZExvY2FsKHRoaXMuZW52LCB0aGlzLnNjb3BlLCBsb2NhbE5hbWVzW2ldLCBibG9ja0FyZ3VtZW50c1tpXSk7XG4gIH1cbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUudXBkYXRlTG9jYWxzID0gZnVuY3Rpb24oYmxvY2tBcmd1bWVudHMpIHtcbiAgdmFyIGxvY2FsTmFtZXMgPSB0aGlzLnRlbXBsYXRlLmxvY2FscztcblxuICBmb3IgKHZhciBpPTAsIGw9bG9jYWxOYW1lcy5sZW5ndGg7IGk8bDsgaSsrKSB7XG4gICAgdGhpcy5lbnYuaG9va3MudXBkYXRlTG9jYWwodGhpcy5lbnYsIHRoaXMuc2NvcGUsIGxvY2FsTmFtZXNbaV0sIGJsb2NrQXJndW1lbnRzW2ldKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gaW5pdGlhbGl6ZU5vZGUobm9kZSwgb3duZXIpIHtcbiAgbm9kZS5vd25lck5vZGUgPSBvd25lcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNoaWxkTW9ycGgoZG9tLCBwYXJlbnRNb3JwaCwgY29udGV4dHVhbEVsZW1lbnQpIHtcbiAgdmFyIG1vcnBoID0gTW9ycGguZW1wdHkoZG9tLCBjb250ZXh0dWFsRWxlbWVudCB8fCBwYXJlbnRNb3JwaC5jb250ZXh0dWFsRWxlbWVudCk7XG4gIGluaXRpYWxpemVOb2RlKG1vcnBoLCBwYXJlbnRNb3JwaC5vd25lck5vZGUpO1xuICByZXR1cm4gbW9ycGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZWRGcmFnbWVudCh0ZW1wbGF0ZSwgZW52KSB7XG4gIHZhciBkb20gPSBlbnYuZG9tLCBmcmFnbWVudDtcbiAgaWYgKGVudi51c2VGcmFnbWVudENhY2hlICYmIGRvbS5jYW5DbG9uZSkge1xuICAgIGlmICh0ZW1wbGF0ZS5jYWNoZWRGcmFnbWVudCA9PT0gbnVsbCkge1xuICAgICAgZnJhZ21lbnQgPSB0ZW1wbGF0ZS5idWlsZEZyYWdtZW50KGRvbSk7XG4gICAgICBpZiAodGVtcGxhdGUuaGFzUmVuZGVyZWQpIHtcbiAgICAgICAgdGVtcGxhdGUuY2FjaGVkRnJhZ21lbnQgPSBmcmFnbWVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBsYXRlLmhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlLmNhY2hlZEZyYWdtZW50KSB7XG4gICAgICBmcmFnbWVudCA9IGRvbS5jbG9uZU5vZGUodGVtcGxhdGUuY2FjaGVkRnJhZ21lbnQsIHRydWUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghZnJhZ21lbnQpIHtcbiAgICBmcmFnbWVudCA9IHRlbXBsYXRlLmJ1aWxkRnJhZ21lbnQoZG9tKTtcbiAgfVxuXG4gIHJldHVybiBmcmFnbWVudDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7a0JBVXdCLE1BQU07Ozs7Ozs7O3NDQVZOLDhCQUE4Qjs7c0NBQ3hCLDhCQUE4Qjs7MkJBQzlCLGdCQUFnQjs7OztxQkFFNUIsU0FBUzs7Ozt5Q0FDQSxpQ0FBaUM7O3dDQUN4QyxpQ0FBaUM7Ozs7QUFFckQsSUFBSSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7O0FBRWpDLFNBQVMsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM1RCxNQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ2xCLE1BQUksaUJBQWlCLENBQUM7O0FBRXRCLE1BQUksT0FBTyxFQUFFO0FBQ1gsUUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO0FBQ3RCLHVCQUFpQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7S0FDMUQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtBQUNwQyx1QkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7S0FDL0M7R0FDRjs7QUFFRCxLQUFHLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7O0FBRXZDLE1BQUksWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDeEYsY0FBWSxDQUFDLE1BQU0sRUFBRSxDQUFDOztBQUV0QixTQUFPLFlBQVksQ0FBQztDQUNyQjs7QUFFRCxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFO0FBQzNHLE1BQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3JCLE1BQUks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QyxRQUFRLEdBQUcsVUFBUyxJQUFJLEVBQUU7QUFDL0MsTUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztDQUNyRCxDQUFDOztBQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQ2pELE1BQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDdkQsQ0FBQzs7QUFFRixZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFTLGNBQWMsRUFBRTtBQUMzRCxNQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzs7QUFFdEMsT0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztHQUNsRjtDQUNGLENBQUM7O0FBRUYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBUyxjQUFjLEVBQUU7QUFDN0QsTUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7O0FBRXRDLE9BQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDM0MsUUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7R0FDcEY7Q0FDRixDQUFDOztBQUVGLFNBQVMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDbkMsTUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Q0FDeEI7O0FBRU0sU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFO0FBQ3BFLE1BQUksS0FBSyxHQUFHLGdCQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLElBQUksV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDakYsZ0JBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0FBQy9DLE1BQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHO01BQUUsUUFBUSxDQUFDO0FBQzVCLE1BQUksR0FBRyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUU7QUFDeEMsUUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtBQUNwQyxjQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxVQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUU7QUFDeEIsZ0JBQVEsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO09BQ3BDLE1BQU07QUFDTCxnQkFBUSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7T0FDN0I7S0FDRjtBQUNELFFBQUksUUFBUSxDQUFDLGNBQWMsRUFBRTtBQUMzQixjQUFRLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3pEO0dBQ0YsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3BCLFlBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0dBQ3hDOztBQUVELFNBQU8sUUFBUSxDQUFDO0NBQ2pCIiwiZmlsZSI6Imh0bWxiYXJzLXJ1bnRpbWUvcmVuZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yRWFjaCB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG5pbXBvcnQgeyB2aXNpdENoaWxkcmVuIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvbW9ycGgtdXRpbHNcIjtcbmltcG9ydCBFeHByZXNzaW9uVmlzaXRvciBmcm9tIFwiLi9ub2RlLXZpc2l0b3JcIjtcbmltcG9ydCB7IEFsd2F5c0RpcnR5VmlzaXRvciB9IGZyb20gXCIuL25vZGUtdmlzaXRvclwiO1xuaW1wb3J0IE1vcnBoIGZyb20gXCIuL21vcnBoXCI7XG5pbXBvcnQgeyBjbGVhck1vcnBoIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHNcIjtcbmltcG9ydCB2b2lkTWFwIGZyb20gJy4uL2h0bWxiYXJzLXV0aWwvdm9pZC10YWctbmFtZXMnO1xuXG52YXIgc3ZnTmFtZXNwYWNlID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5kZXIodGVtcGxhdGUsIGVudiwgc2NvcGUsIG9wdGlvbnMpIHtcbiAgdmFyIGRvbSA9IGVudi5kb207XG4gIHZhciBjb250ZXh0dWFsRWxlbWVudDtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnJlbmRlck5vZGUpIHtcbiAgICAgIGNvbnRleHR1YWxFbGVtZW50ID0gb3B0aW9ucy5yZW5kZXJOb2RlLmNvbnRleHR1YWxFbGVtZW50O1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5jb250ZXh0dWFsRWxlbWVudCkge1xuICAgICAgY29udGV4dHVhbEVsZW1lbnQgPSBvcHRpb25zLmNvbnRleHR1YWxFbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIGRvbS5kZXRlY3ROYW1lc3BhY2UoY29udGV4dHVhbEVsZW1lbnQpO1xuXG4gIHZhciByZW5kZXJSZXN1bHQgPSBSZW5kZXJSZXN1bHQuYnVpbGQoZW52LCBzY29wZSwgdGVtcGxhdGUsIG9wdGlvbnMsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgcmVuZGVyUmVzdWx0LnJlbmRlcigpO1xuXG4gIHJldHVybiByZW5kZXJSZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFJlbmRlclJlc3VsdChlbnYsIHNjb3BlLCBvcHRpb25zLCByb290Tm9kZSwgb3duZXJOb2RlLCBub2RlcywgZnJhZ21lbnQsIHRlbXBsYXRlLCBzaG91bGRTZXRDb250ZW50KSB7XG4gIHRoaXMucm9vdCA9IHJvb3ROb2RlO1xuICB0aGlzLmZyYWdtZW50ID0gZnJhZ21lbnQ7XG5cbiAgdGhpcy5ub2RlcyA9IG5vZGVzO1xuICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gIHRoaXMuc3RhdGVtZW50cyA9IHRlbXBsYXRlLnN0YXRlbWVudHMuc2xpY2UoKTtcbiAgdGhpcy5lbnYgPSBlbnY7XG4gIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgdGhpcy5zaG91bGRTZXRDb250ZW50ID0gc2hvdWxkU2V0Q29udGVudDtcblxuICB0aGlzLmJpbmRTY29wZSgpO1xuXG4gIGlmIChvcHRpb25zLmF0dHJpYnV0ZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5vZGVzLnB1c2goeyBzdGF0ZToge30gfSk7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goWydhdHRyaWJ1dGVzJywgYXR0YWNoQXR0cmlidXRlcyhvcHRpb25zLmF0dHJpYnV0ZXMpXSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5zZWxmICE9PSB1bmRlZmluZWQpIHsgdGhpcy5iaW5kU2VsZihvcHRpb25zLnNlbGYpOyB9XG4gIGlmIChvcHRpb25zLmJsb2NrQXJndW1lbnRzICE9PSB1bmRlZmluZWQpIHsgdGhpcy5iaW5kTG9jYWxzKG9wdGlvbnMuYmxvY2tBcmd1bWVudHMpOyB9XG5cbiAgdGhpcy5pbml0aWFsaXplTm9kZXMob3duZXJOb2RlKTtcbn1cblxuUmVuZGVyUmVzdWx0LmJ1aWxkID0gZnVuY3Rpb24oZW52LCBzY29wZSwgdGVtcGxhdGUsIG9wdGlvbnMsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIHZhciBkb20gPSBlbnYuZG9tO1xuICB2YXIgZnJhZ21lbnQgPSBnZXRDYWNoZWRGcmFnbWVudCh0ZW1wbGF0ZSwgZW52KTtcbiAgdmFyIG5vZGVzID0gdGVtcGxhdGUuYnVpbGRSZW5kZXJOb2Rlcyhkb20sIGZyYWdtZW50LCBjb250ZXh0dWFsRWxlbWVudCk7XG5cbiAgdmFyIHJvb3ROb2RlLCBvd25lck5vZGUsIHNob3VsZFNldENvbnRlbnQ7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5yZW5kZXJOb2RlKSB7XG4gICAgcm9vdE5vZGUgPSBvcHRpb25zLnJlbmRlck5vZGU7XG4gICAgb3duZXJOb2RlID0gcm9vdE5vZGUub3duZXJOb2RlO1xuICAgIHNob3VsZFNldENvbnRlbnQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJvb3ROb2RlID0gZG9tLmNyZWF0ZU1vcnBoKG51bGwsIGZyYWdtZW50LmZpcnN0Q2hpbGQsIGZyYWdtZW50Lmxhc3RDaGlsZCwgY29udGV4dHVhbEVsZW1lbnQpO1xuICAgIG93bmVyTm9kZSA9IHJvb3ROb2RlO1xuICAgIGluaXRpYWxpemVOb2RlKHJvb3ROb2RlLCBvd25lck5vZGUpO1xuICAgIHNob3VsZFNldENvbnRlbnQgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChyb290Tm9kZS5jaGlsZE5vZGVzKSB7XG4gICAgdmlzaXRDaGlsZHJlbihyb290Tm9kZS5jaGlsZE5vZGVzLCBmdW5jdGlvbihub2RlKSB7XG4gICAgICBjbGVhck1vcnBoKG5vZGUsIGVudiwgdHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByb290Tm9kZS5jaGlsZE5vZGVzID0gbm9kZXM7XG4gIHJldHVybiBuZXcgUmVuZGVyUmVzdWx0KGVudiwgc2NvcGUsIG9wdGlvbnMsIHJvb3ROb2RlLCBvd25lck5vZGUsIG5vZGVzLCBmcmFnbWVudCwgdGVtcGxhdGUsIHNob3VsZFNldENvbnRlbnQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1hbnVhbEVsZW1lbnQodGFnTmFtZSwgYXR0cmlidXRlcywgX2lzRW1wdHkpIHtcbiAgdmFyIHN0YXRlbWVudHMgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgIGlmICh0eXBlb2YgYXR0cmlidXRlc1trZXldID09PSAnc3RyaW5nJykgeyBjb250aW51ZTsgfVxuICAgIHN0YXRlbWVudHMucHVzaChbXCJhdHRyaWJ1dGVcIiwga2V5LCBhdHRyaWJ1dGVzW2tleV1dKTtcbiAgfVxuXG4gIHZhciBpc0VtcHR5ID0gX2lzRW1wdHkgfHwgdm9pZE1hcFt0YWdOYW1lXTtcblxuICBpZiAoIWlzRW1wdHkpIHtcbiAgICBzdGF0ZW1lbnRzLnB1c2goWydjb250ZW50JywgJ3lpZWxkJ10pO1xuICB9XG5cbiAgdmFyIHRlbXBsYXRlID0ge1xuICAgIGFyaXR5OiAwLFxuICAgIGNhY2hlZEZyYWdtZW50OiBudWxsLFxuICAgIGhhc1JlbmRlcmVkOiBmYWxzZSxcbiAgICBidWlsZEZyYWdtZW50OiBmdW5jdGlvbiBidWlsZEZyYWdtZW50KGRvbSkge1xuICAgICAgdmFyIGVsMCA9IGRvbS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBpZiAodGFnTmFtZSA9PT0gJ3N2ZycpIHtcbiAgICAgICAgZG9tLnNldE5hbWVzcGFjZShzdmdOYW1lc3BhY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGVsMSA9IGRvbS5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gYXR0cmlidXRlcykge1xuICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXNba2V5XSAhPT0gJ3N0cmluZycpIHsgY29udGludWU7IH1cbiAgICAgICAgZG9tLnNldEF0dHJpYnV0ZShlbDEsIGtleSwgYXR0cmlidXRlc1trZXldKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICAgIHZhciBlbDIgPSBkb20uY3JlYXRlQ29tbWVudChcIlwiKTtcbiAgICAgICAgZG9tLmFwcGVuZENoaWxkKGVsMSwgZWwyKTtcbiAgICAgIH1cblxuICAgICAgZG9tLmFwcGVuZENoaWxkKGVsMCwgZWwxKTtcblxuICAgICAgcmV0dXJuIGVsMDtcbiAgICB9LFxuICAgIGJ1aWxkUmVuZGVyTm9kZXM6IGZ1bmN0aW9uIGJ1aWxkUmVuZGVyTm9kZXMoZG9tLCBmcmFnbWVudCkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBkb20uY2hpbGRBdChmcmFnbWVudCwgWzBdKTtcbiAgICAgIHZhciBtb3JwaHMgPSBbXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzW2tleV0gPT09ICdzdHJpbmcnKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIG1vcnBocy5wdXNoKGRvbS5jcmVhdGVBdHRyTW9ycGgoZWxlbWVudCwga2V5KSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFbXB0eSkge1xuICAgICAgICBtb3JwaHMucHVzaChkb20uY3JlYXRlTW9ycGhBdChlbGVtZW50LCAwLCAwKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtb3JwaHM7XG4gICAgfSxcbiAgICBzdGF0ZW1lbnRzOiBzdGF0ZW1lbnRzLFxuICAgIGxvY2FsczogW10sXG4gICAgdGVtcGxhdGVzOiBbXVxuICB9O1xuXG4gIHJldHVybiB0ZW1wbGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaEF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICB2YXIgc3RhdGVtZW50cyA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzW2tleV0gPT09ICdzdHJpbmcnKSB7IGNvbnRpbnVlOyB9XG4gICAgc3RhdGVtZW50cy5wdXNoKFtcImF0dHJpYnV0ZVwiLCBrZXksIGF0dHJpYnV0ZXNba2V5XV0pO1xuICB9XG5cbiAgdmFyIHRlbXBsYXRlID0ge1xuICAgIGFyaXR5OiAwLFxuICAgIGNhY2hlZEZyYWdtZW50OiBudWxsLFxuICAgIGhhc1JlbmRlcmVkOiBmYWxzZSxcbiAgICBidWlsZEZyYWdtZW50OiBmdW5jdGlvbiBidWlsZEZyYWdtZW50KGRvbSkge1xuICAgICAgdmFyIGVsMCA9IHRoaXMuZWxlbWVudDtcbiAgICAgIGlmIChlbDAubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIpIHtcbiAgICAgICAgZG9tLnNldE5hbWVzcGFjZShzdmdOYW1lc3BhY2UpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzW2tleV0gIT09ICdzdHJpbmcnKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgIGRvbS5zZXRBdHRyaWJ1dGUoZWwwLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbDA7XG4gICAgfSxcbiAgICBidWlsZFJlbmRlck5vZGVzOiBmdW5jdGlvbiBidWlsZFJlbmRlck5vZGVzKGRvbSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICB2YXIgbW9ycGhzID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRlc1trZXldID09PSAnc3RyaW5nJykgeyBjb250aW51ZTsgfVxuICAgICAgICBtb3JwaHMucHVzaChkb20uY3JlYXRlQXR0ck1vcnBoKGVsZW1lbnQsIGtleSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbW9ycGhzO1xuICAgIH0sXG4gICAgc3RhdGVtZW50czogc3RhdGVtZW50cyxcbiAgICBsb2NhbHM6IFtdLFxuICAgIHRlbXBsYXRlczogW10sXG4gICAgZWxlbWVudDogbnVsbFxuICB9O1xuXG4gIHJldHVybiB0ZW1wbGF0ZTtcbn1cblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5pbml0aWFsaXplTm9kZXMgPSBmdW5jdGlvbihvd25lck5vZGUpIHtcbiAgZm9yRWFjaCh0aGlzLnJvb3QuY2hpbGROb2RlcywgZnVuY3Rpb24obm9kZSkge1xuICAgIGluaXRpYWxpemVOb2RlKG5vZGUsIG93bmVyTm9kZSk7XG4gIH0pO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yb290Lmxhc3RSZXN1bHQgPSB0aGlzO1xuICB0aGlzLnJvb3QucmVuZGVyZWQgPSB0cnVlO1xuICB0aGlzLnBvcHVsYXRlTm9kZXMoQWx3YXlzRGlydHlWaXNpdG9yKTtcblxuICBpZiAodGhpcy5zaG91bGRTZXRDb250ZW50ICYmIHRoaXMucm9vdC5zZXRDb250ZW50KSB7XG4gICAgdGhpcy5yb290LnNldENvbnRlbnQodGhpcy5mcmFnbWVudCk7XG4gIH1cbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUuZGlydHkgPSBmdW5jdGlvbigpIHtcbiAgdmlzaXRDaGlsZHJlbihbdGhpcy5yb290XSwgZnVuY3Rpb24obm9kZSkgeyBub2RlLmlzRGlydHkgPSB0cnVlOyB9KTtcbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUucmV2YWxpZGF0ZSA9IGZ1bmN0aW9uKGVudiwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIHNjb3BlKSB7XG4gIHRoaXMucmV2YWxpZGF0ZVdpdGgoZW52LCBzY29wZSwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIEV4cHJlc3Npb25WaXNpdG9yKTtcbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUucmVyZW5kZXIgPSBmdW5jdGlvbihlbnYsIHNlbGYsIGJsb2NrQXJndW1lbnRzLCBzY29wZSkge1xuICB0aGlzLnJldmFsaWRhdGVXaXRoKGVudiwgc2NvcGUsIHNlbGYsIGJsb2NrQXJndW1lbnRzLCBBbHdheXNEaXJ0eVZpc2l0b3IpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5yZXZhbGlkYXRlV2l0aCA9IGZ1bmN0aW9uKGVudiwgc2NvcGUsIHNlbGYsIGJsb2NrQXJndW1lbnRzLCB2aXNpdG9yKSB7XG4gIGlmIChlbnYgIT09IHVuZGVmaW5lZCkgeyB0aGlzLmVudiA9IGVudjsgfVxuICBpZiAoc2NvcGUgIT09IHVuZGVmaW5lZCkgeyB0aGlzLnNjb3BlID0gc2NvcGU7IH1cbiAgdGhpcy51cGRhdGVTY29wZSgpO1xuXG4gIGlmIChzZWxmICE9PSB1bmRlZmluZWQpIHsgdGhpcy51cGRhdGVTZWxmKHNlbGYpOyB9XG4gIGlmIChibG9ja0FyZ3VtZW50cyAhPT0gdW5kZWZpbmVkKSB7IHRoaXMudXBkYXRlTG9jYWxzKGJsb2NrQXJndW1lbnRzKTsgfVxuXG4gIHRoaXMucG9wdWxhdGVOb2Rlcyh2aXNpdG9yKTtcbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcm9vdE5vZGUgPSB0aGlzLnJvb3Q7XG4gIGNsZWFyTW9ycGgocm9vdE5vZGUsIHRoaXMuZW52LCB0cnVlKTtcbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUucG9wdWxhdGVOb2RlcyA9IGZ1bmN0aW9uKHZpc2l0b3IpIHtcbiAgdmFyIGVudiA9IHRoaXMuZW52O1xuICB2YXIgc2NvcGUgPSB0aGlzLnNjb3BlO1xuICB2YXIgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlO1xuICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzO1xuICB2YXIgc3RhdGVtZW50cyA9IHRoaXMuc3RhdGVtZW50cztcbiAgdmFyIGksIGw7XG5cbiAgZm9yIChpPTAsIGw9c3RhdGVtZW50cy5sZW5ndGg7IGk8bDsgaSsrKSB7XG4gICAgdmFyIHN0YXRlbWVudCA9IHN0YXRlbWVudHNbaV07XG4gICAgdmFyIG1vcnBoID0gbm9kZXNbaV07XG5cbiAgICBpZiAoZW52Lmhvb2tzLndpbGxSZW5kZXJOb2RlKSB7XG4gICAgICBlbnYuaG9va3Mud2lsbFJlbmRlck5vZGUobW9ycGgsIGVudiwgc2NvcGUpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoc3RhdGVtZW50WzBdKSB7XG4gICAgICBjYXNlICdibG9jayc6IHZpc2l0b3IuYmxvY2soc3RhdGVtZW50LCBtb3JwaCwgZW52LCBzY29wZSwgdGVtcGxhdGUsIHZpc2l0b3IpOyBicmVhaztcbiAgICAgIGNhc2UgJ2lubGluZSc6IHZpc2l0b3IuaW5saW5lKHN0YXRlbWVudCwgbW9ycGgsIGVudiwgc2NvcGUsIHZpc2l0b3IpOyBicmVhaztcbiAgICAgIGNhc2UgJ2NvbnRlbnQnOiB2aXNpdG9yLmNvbnRlbnQoc3RhdGVtZW50LCBtb3JwaCwgZW52LCBzY29wZSwgdmlzaXRvcik7IGJyZWFrO1xuICAgICAgY2FzZSAnZWxlbWVudCc6IHZpc2l0b3IuZWxlbWVudChzdGF0ZW1lbnQsIG1vcnBoLCBlbnYsIHNjb3BlLCB0ZW1wbGF0ZSwgdmlzaXRvcik7IGJyZWFrO1xuICAgICAgY2FzZSAnYXR0cmlidXRlJzogdmlzaXRvci5hdHRyaWJ1dGUoc3RhdGVtZW50LCBtb3JwaCwgZW52LCBzY29wZSk7IGJyZWFrO1xuICAgICAgY2FzZSAnY29tcG9uZW50JzogdmlzaXRvci5jb21wb25lbnQoc3RhdGVtZW50LCBtb3JwaCwgZW52LCBzY29wZSwgdGVtcGxhdGUsIHZpc2l0b3IpOyBicmVhaztcbiAgICAgIGNhc2UgJ2F0dHJpYnV0ZXMnOiB2aXNpdG9yLmF0dHJpYnV0ZXMoc3RhdGVtZW50LCBtb3JwaCwgZW52LCBzY29wZSwgdGhpcy5mcmFnbWVudCwgdmlzaXRvcik7IGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChlbnYuaG9va3MuZGlkUmVuZGVyTm9kZSkge1xuICAgICAgZW52Lmhvb2tzLmRpZFJlbmRlck5vZGUobW9ycGgsIGVudiwgc2NvcGUpO1xuICAgIH1cbiAgfVxufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5iaW5kU2NvcGUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5lbnYuaG9va3MuYmluZFNjb3BlKHRoaXMuZW52LCB0aGlzLnNjb3BlKTtcbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUudXBkYXRlU2NvcGUgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5lbnYuaG9va3MudXBkYXRlU2NvcGUodGhpcy5lbnYsIHRoaXMuc2NvcGUpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS5iaW5kU2VsZiA9IGZ1bmN0aW9uKHNlbGYpIHtcbiAgdGhpcy5lbnYuaG9va3MuYmluZFNlbGYodGhpcy5lbnYsIHRoaXMuc2NvcGUsIHNlbGYpO1xufTtcblxuUmVuZGVyUmVzdWx0LnByb3RvdHlwZS51cGRhdGVTZWxmID0gZnVuY3Rpb24oc2VsZikge1xuICB0aGlzLmVudi5ob29rcy51cGRhdGVTZWxmKHRoaXMuZW52LCB0aGlzLnNjb3BlLCBzZWxmKTtcbn07XG5cblJlbmRlclJlc3VsdC5wcm90b3R5cGUuYmluZExvY2FscyA9IGZ1bmN0aW9uKGJsb2NrQXJndW1lbnRzKSB7XG4gIHZhciBsb2NhbE5hbWVzID0gdGhpcy50ZW1wbGF0ZS5sb2NhbHM7XG5cbiAgZm9yICh2YXIgaT0wLCBsPWxvY2FsTmFtZXMubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIHRoaXMuZW52Lmhvb2tzLmJpbmRMb2NhbCh0aGlzLmVudiwgdGhpcy5zY29wZSwgbG9jYWxOYW1lc1tpXSwgYmxvY2tBcmd1bWVudHNbaV0pO1xuICB9XG59O1xuXG5SZW5kZXJSZXN1bHQucHJvdG90eXBlLnVwZGF0ZUxvY2FscyA9IGZ1bmN0aW9uKGJsb2NrQXJndW1lbnRzKSB7XG4gIHZhciBsb2NhbE5hbWVzID0gdGhpcy50ZW1wbGF0ZS5sb2NhbHM7XG5cbiAgZm9yICh2YXIgaT0wLCBsPWxvY2FsTmFtZXMubGVuZ3RoOyBpPGw7IGkrKykge1xuICAgIHRoaXMuZW52Lmhvb2tzLnVwZGF0ZUxvY2FsKHRoaXMuZW52LCB0aGlzLnNjb3BlLCBsb2NhbE5hbWVzW2ldLCBibG9ja0FyZ3VtZW50c1tpXSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGluaXRpYWxpemVOb2RlKG5vZGUsIG93bmVyKSB7XG4gIG5vZGUub3duZXJOb2RlID0gb3duZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGlsZE1vcnBoKGRvbSwgcGFyZW50TW9ycGgsIGNvbnRleHR1YWxFbGVtZW50KSB7XG4gIHZhciBtb3JwaCA9IE1vcnBoLmVtcHR5KGRvbSwgY29udGV4dHVhbEVsZW1lbnQgfHwgcGFyZW50TW9ycGguY29udGV4dHVhbEVsZW1lbnQpO1xuICBpbml0aWFsaXplTm9kZShtb3JwaCwgcGFyZW50TW9ycGgub3duZXJOb2RlKTtcbiAgcmV0dXJuIG1vcnBoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FjaGVkRnJhZ21lbnQodGVtcGxhdGUsIGVudikge1xuICB2YXIgZG9tID0gZW52LmRvbSwgZnJhZ21lbnQ7XG4gIGlmIChlbnYudXNlRnJhZ21lbnRDYWNoZSAmJiBkb20uY2FuQ2xvbmUpIHtcbiAgICBpZiAodGVtcGxhdGUuY2FjaGVkRnJhZ21lbnQgPT09IG51bGwpIHtcbiAgICAgIGZyYWdtZW50ID0gdGVtcGxhdGUuYnVpbGRGcmFnbWVudChkb20pO1xuICAgICAgaWYgKHRlbXBsYXRlLmhhc1JlbmRlcmVkKSB7XG4gICAgICAgIHRlbXBsYXRlLmNhY2hlZEZyYWdtZW50ID0gZnJhZ21lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0ZW1wbGF0ZS5oYXNSZW5kZXJlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZS5jYWNoZWRGcmFnbWVudCkge1xuICAgICAgZnJhZ21lbnQgPSBkb20uY2xvbmVOb2RlKHRlbXBsYXRlLmNhY2hlZEZyYWdtZW50LCB0cnVlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWZyYWdtZW50KSB7XG4gICAgZnJhZ21lbnQgPSB0ZW1wbGF0ZS5idWlsZEZyYWdtZW50KGRvbSk7XG4gIH1cblxuICByZXR1cm4gZnJhZ21lbnQ7XG59XG4iXX0=

@@ -100,3 +100,10 @@ exports.__esModule = true;

program: program,
loc: buildLoc(loc)
loc: buildLoc(loc),
// this should be true only if this component node is guaranteed
// to produce start and end points that can never change after the
// initial render, regardless of changes to dynamic inputs. If
// a component represents a "fragment" (any number of top-level nodes),
// this will usually not be true.
isStatic: false
};

@@ -267,2 +274,2 @@ }

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9idWlsZGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDMUQsU0FBTztBQUNMLFFBQUksRUFBRSxtQkFBbUI7QUFDekIsUUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsVUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FBQ3BCLFFBQUksRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUMzQixXQUFPLEVBQUUsQ0FBQyxHQUFHO0FBQ2IsT0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7R0FDbkIsQ0FBQztDQUNIOztBQUVNLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0FBQ3BFLFNBQU87QUFDTCxRQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFFBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3JCLFVBQU0sRUFBRSxNQUFNLElBQUksRUFBRTtBQUNwQixRQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsV0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJO0FBQ3hCLFdBQU8sRUFBRSxPQUFPLElBQUksSUFBSTtBQUN4QixPQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztHQUNuQixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDNUQsU0FBTztBQUNMLFFBQUksRUFBRSwwQkFBMEI7QUFDaEMsUUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsVUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FB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QUFDO0tBQ3ZDLENBQUM7R0FDSDtDQUNGOztrQkFFYztBQUNiLFVBQVEsRUFBRSxhQUFhO0FBQ3ZCLE9BQUssRUFBRSxVQUFVO0FBQ2pCLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLGlCQUFlLEVBQUUsb0JBQW9CO0FBQ3JDLFdBQVMsRUFBRSxjQUFjO0FBQ3pCLE1BQUksRUFBRSxTQUFTO0FBQ2YsTUFBSSxFQUFFLFNBQVM7QUFDZixPQUFLLEVBQUUsVUFBVTtBQUNqQixNQUFJLEVBQUUsU0FBUztBQUNmLFFBQU0sRUFBRSxXQUFXO0FBQ25CLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLFFBQU0sRUFBRSxXQUFXO0FBQ25CLFdBQVMsRUFBRSxjQUFjO0FBQ3pCLE1BQUksRUFBRSxTQUFTO0FBQ2YsUUFBTSxFQUFFLFdBQVc7QUFDbkIsTUFBSSxFQUFFLFNBQVM7QUFDZixNQUFJLEVBQUUsU0FBUztBQUNmLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLGFBQWE7Q0FDbkIiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L2J1aWxkZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhdGVtZW50c1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIHJhdywgbG9jKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJNdXN0YWNoZVN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgZXNjYXBlZDogIXJhdyxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQmxvY2socGF0aCwgcGFyYW1zLCBoYXNoLCBwcm9ncmFtLCBpbnZlcnNlLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkJsb2NrU3RhdGVtZW50XCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBwcm9ncmFtOiBwcm9ncmFtIHx8IG51bGwsXG4gICAgaW52ZXJzZTogaW52ZXJzZSB8fCBudWxsLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkVsZW1lbnRNb2RpZmllclN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgbG9jOiBidWlsZExvYyhsb2MpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhcnRpYWwobmFtZSwgcGFyYW1zLCBoYXNoLCBpbmRlbnQpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlBhcnRpYWxTdGF0ZW1lbnRcIixcbiAgICBuYW1lOiBuYW1lLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBpbmRlbnQ6IGluZGVudFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb21tZW50KHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb21tZW50U3RhdGVtZW50XCIsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbmNhdChwYXJ0cykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQ29uY2F0U3RhdGVtZW50XCIsXG4gICAgcGFydHM6IHBhcnRzIHx8IFtdXG4gIH07XG59XG5cbi8vIE5vZGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVsZW1lbnQodGFnLCBhdHRyaWJ1dGVzLCBtb2RpZmllcnMsIGNoaWxkcmVuLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkVsZW1lbnROb2RlXCIsXG4gICAgdGFnOiB0YWcgfHwgXCJcIixcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzIHx8IFtdLFxuICAgIG1vZGlmaWVyczogbW9kaWZpZXJzIHx8IFtdLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50KHRhZywgYXR0cmlidXRlcywgcHJvZ3JhbSwgbG9jKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb21wb25lbnROb2RlXCIsXG4gICAgdGFnOiB0YWcsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICBwcm9ncmFtOiBwcm9ncmFtLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBdHRyKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJBdHRyTm9kZVwiLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRleHQoY2hhcnMsIGxvYykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiVGV4dE5vZGVcIixcbiAgICBjaGFyczogY2hhcnMgfHwgXCJcIixcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuLy8gRXhwcmVzc2lvbnNcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2V4cHIocGF0aCwgcGFyYW1zLCBoYXNoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJTdWJFeHByZXNzaW9uXCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYXRoKG9yaWdpbmFsKSB7XG4gIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiUGF0aEV4cHJlc3Npb25cIixcbiAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbCxcbiAgICAgIHBhcnRzOiBvcmlnaW5hbC5zcGxpdCgnLicpXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gb3JpZ2luYWw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJTdHJpbmdMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9yaWdpbmFsOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRCb29sZWFuKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJCb29sZWFuTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvcmlnaW5hbDogdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJOdW1iZXJMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9yaWdpbmFsOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROdWxsKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiTnVsbExpdGVyYWxcIixcbiAgICB2YWx1ZTogbnVsbCxcbiAgICBvcmlnaW5hbDogbnVsbFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVbmRlZmluZWQoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJVbmRlZmluZWRMaXRlcmFsXCIsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICBvcmlnaW5hbDogdW5kZWZpbmVkXG4gIH07XG59XG5cbi8vIE1pc2NlbGxhbmVvdXNcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSGFzaChwYWlycykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiSGFzaFwiLFxuICAgIHBhaXJzOiBwYWlycyB8fCBbXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQYWlyKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkhhc2hQYWlyXCIsXG4gICAga2V5OiBrZXksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFByb2dyYW0oYm9keSwgYmxvY2tQYXJhbXMsIGxvYykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiUHJvZ3JhbVwiLFxuICAgIGJvZHk6IGJvZHkgfHwgW10sXG4gICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zIHx8IFtdLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFNvdXJjZShzb3VyY2UpIHtcbiAgcmV0dXJuIHNvdXJjZSB8fCBudWxsO1xufVxuXG5mdW5jdGlvbiBidWlsZFBvc2l0aW9uKGxpbmUsIGNvbHVtbikge1xuICByZXR1cm4ge1xuICAgIGxpbmU6ICh0eXBlb2YgbGluZSA9PT0gJ251bWJlcicpID8gbGluZSA6IG51bGwsXG4gICAgY29sdW1uOiAodHlwZW9mIGNvbHVtbiA9PT0gJ251bWJlcicpID8gY29sdW1uIDogbnVsbFxuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZExvYyhzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIHNvdXJjZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHZhciBsb2MgPSBzdGFydExpbmU7XG5cbiAgICBpZiAodHlwZW9mIGxvYyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogYnVpbGRTb3VyY2UobG9jLnNvdXJjZSksXG4gICAgICAgIHN0YXJ0OiBidWlsZFBvc2l0aW9uKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uKSxcbiAgICAgICAgZW5kOiBidWlsZFBvc2l0aW9uKGxvYy5lbmQubGluZSwgbG9jLmVuZC5jb2x1bW4pXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogYnVpbGRTb3VyY2Uoc291cmNlKSxcbiAgICAgIHN0YXJ0OiBidWlsZFBvc2l0aW9uKHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pLFxuICAgICAgZW5kOiBidWlsZFBvc2l0aW9uKGVuZExpbmUsIGVuZENvbHVtbilcbiAgICB9OyBcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG11c3RhY2hlOiBidWlsZE11c3RhY2hlLFxuICBibG9jazogYnVpbGRCbG9jayxcbiAgcGFydGlhbDogYnVpbGRQYXJ0aWFsLFxuICBjb21tZW50OiBidWlsZENvbW1lbnQsXG4gIGVsZW1lbnQ6IGJ1aWxkRWxlbWVudCxcbiAgZWxlbWVudE1vZGlmaWVyOiBidWlsZEVsZW1lbnRNb2RpZmllcixcbiAgY29tcG9uZW50OiBidWlsZENvbXBvbmVudCxcbiAgYXR0cjogYnVpbGRBdHRyLFxuICB0ZXh0OiBidWlsZFRleHQsXG4gIHNleHByOiBidWlsZFNleHByLFxuICBwYXRoOiBidWlsZFBhdGgsXG4gIHN0cmluZzogYnVpbGRTdHJpbmcsXG4gIGJvb2xlYW46IGJ1aWxkQm9vbGVhbixcbiAgbnVtYmVyOiBidWlsZE51bWJlcixcbiAgdW5kZWZpbmVkOiBidWlsZFVuZGVmaW5lZCxcbiAgbnVsbDogYnVpbGROdWxsLFxuICBjb25jYXQ6IGJ1aWxkQ29uY2F0LFxuICBoYXNoOiBidWlsZEhhc2gsXG4gIHBhaXI6IGJ1aWxkUGFpcixcbiAgcHJvZ3JhbTogYnVpbGRQcm9ncmFtLFxuICBsb2M6IGJ1aWxkTG9jLFxuICBwb3M6IGJ1aWxkUG9zaXRpb25cbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9idWlsZGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDMUQsU0FBTztBQUNMLFFBQUksRUFBRSxtQkFBbUI7QUFDekIsUUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsVUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FBQ3BCLFFBQUksRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUMzQixXQUFPLEVBQUUsQ0FBQyxHQUFHO0FBQ2IsT0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUM7R0FDbkIsQ0FBQztDQUNIOztBQUVNLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0FBQ3BFLFNBQU87QUFDTCxRQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFFBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3JCLFVBQU0sRUFBRSxNQUFNLElBQUksRUFBRTtBQUNwQixRQUFJLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDM0IsV0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJO0FBQ3hCLFdBQU8sRUFBRSxPQUFPLElBQUksSUFBSTtBQUN4QixPQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztHQUNuQixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDNUQsU0FBTztBQUNMLFFBQUksRUFBRSwwQkFBMEI7QUFDaEMsUUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsVUFBTSxFQUFFLE1BQU0sSUFBSSxFQUFFO0FB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LGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0tBQ3ZDLENBQUM7R0FDSDtDQUNGOztrQkFFYztBQUNiLFVBQVEsRUFBRSxhQUFhO0FBQ3ZCLE9BQUssRUFBRSxVQUFVO0FBQ2pCLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLGlCQUFlLEVBQUUsb0JBQW9CO0FBQ3JDLFdBQVMsRUFBRSxjQUFjO0FBQ3pCLE1BQUksRUFBRSxTQUFTO0FBQ2YsTUFBSSxFQUFFLFNBQVM7QUFDZixPQUFLLEVBQUUsVUFBVTtBQUNqQixNQUFJLEVBQUUsU0FBUztBQUNmLFFBQU0sRUFBRSxXQUFXO0FBQ25CLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLFFBQU0sRUFBRSxXQUFXO0FBQ25CLFdBQVMsRUFBRSxjQUFjO0FBQ3pCLE1BQUksRUFBRSxTQUFTO0FBQ2YsUUFBTSxFQUFFLFdBQVc7QUFDbkIsTUFBSSxFQUFFLFNBQVM7QUFDZixNQUFJLEVBQUUsU0FBUztBQUNmLFNBQU8sRUFBRSxZQUFZO0FBQ3JCLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLGFBQWE7Q0FDbkIiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L2J1aWxkZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhdGVtZW50c1xuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIHJhdywgbG9jKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJNdXN0YWNoZVN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgZXNjYXBlZDogIXJhdyxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQmxvY2socGF0aCwgcGFyYW1zLCBoYXNoLCBwcm9ncmFtLCBpbnZlcnNlLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkJsb2NrU3RhdGVtZW50XCIsXG4gICAgcGF0aDogYnVpbGRQYXRoKHBhdGgpLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBwcm9ncmFtOiBwcm9ncmFtIHx8IG51bGwsXG4gICAgaW52ZXJzZTogaW52ZXJzZSB8fCBudWxsLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRFbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkVsZW1lbnRNb2RpZmllclN0YXRlbWVudFwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSksXG4gICAgbG9jOiBidWlsZExvYyhsb2MpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFBhcnRpYWwobmFtZSwgcGFyYW1zLCBoYXNoLCBpbmRlbnQpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlBhcnRpYWxTdGF0ZW1lbnRcIixcbiAgICBuYW1lOiBuYW1lLFxuICAgIHBhcmFtczogcGFyYW1zIHx8IFtdLFxuICAgIGhhc2g6IGhhc2ggfHwgYnVpbGRIYXNoKFtdKSxcbiAgICBpbmRlbnQ6IGluZGVudFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb21tZW50KHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb21tZW50U3RhdGVtZW50XCIsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbmNhdChwYXJ0cykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQ29uY2F0U3RhdGVtZW50XCIsXG4gICAgcGFydHM6IHBhcnRzIHx8IFtdXG4gIH07XG59XG5cbi8vIE5vZGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVsZW1lbnQodGFnLCBhdHRyaWJ1dGVzLCBtb2RpZmllcnMsIGNoaWxkcmVuLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkVsZW1lbnROb2RlXCIsXG4gICAgdGFnOiB0YWcgfHwgXCJcIixcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzIHx8IFtdLFxuICAgIG1vZGlmaWVyczogbW9kaWZpZXJzIHx8IFtdLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50KHRhZywgYXR0cmlidXRlcywgcHJvZ3JhbSwgbG9jKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJDb21wb25lbnROb2RlXCIsXG4gICAgdGFnOiB0YWcsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcyxcbiAgICBwcm9ncmFtOiBwcm9ncmFtLFxuICAgIGxvYzogYnVpbGRMb2MobG9jKSxcblxuICAgIC8vIHRoaXMgc2hvdWxkIGJlIHRydWUgb25seSBpZiB0aGlzIGNvbXBvbmVudCBub2RlIGlzIGd1YXJhbnRlZWRcbiAgICAvLyB0byBwcm9kdWNlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHRoYXQgY2FuIG5ldmVyIGNoYW5nZSBhZnRlciB0aGVcbiAgICAvLyBpbml0aWFsIHJlbmRlciwgcmVnYXJkbGVzcyBvZiBjaGFuZ2VzIHRvIGR5bmFtaWMgaW5wdXRzLiBJZlxuICAgIC8vIGEgY29tcG9uZW50IHJlcHJlc2VudHMgYSBcImZyYWdtZW50XCIgKGFueSBudW1iZXIgb2YgdG9wLWxldmVsIG5vZGVzKSxcbiAgICAvLyB0aGlzIHdpbGwgdXN1YWxseSBub3QgYmUgdHJ1ZS5cbiAgICBpc1N0YXRpYzogZmFsc2VcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXR0cihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQXR0ck5vZGVcIixcbiAgICBuYW1lOiBuYW1lLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRUZXh0KGNoYXJzLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlRleHROb2RlXCIsXG4gICAgY2hhcnM6IGNoYXJzIHx8IFwiXCIsXG4gICAgbG9jOiBidWlsZExvYyhsb2MpXG4gIH07XG59XG5cbi8vIEV4cHJlc3Npb25zXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNleHByKHBhdGgsIHBhcmFtcywgaGFzaCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiU3ViRXhwcmVzc2lvblwiLFxuICAgIHBhdGg6IGJ1aWxkUGF0aChwYXRoKSxcbiAgICBwYXJhbXM6IHBhcmFtcyB8fCBbXSxcbiAgICBoYXNoOiBoYXNoIHx8IGJ1aWxkSGFzaChbXSlcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGF0aChvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBcIlBhdGhFeHByZXNzaW9uXCIsXG4gICAgICBvcmlnaW5hbDogb3JpZ2luYWwsXG4gICAgICBwYXJ0czogb3JpZ2luYWwuc3BsaXQoJy4nKVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9yaWdpbmFsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN0cmluZyh2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiU3RyaW5nTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvcmlnaW5hbDogdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiQm9vbGVhbkxpdGVyYWxcIixcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgb3JpZ2luYWw6IHZhbHVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE51bWJlcih2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiTnVtYmVyTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvcmlnaW5hbDogdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTnVsbCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIk51bGxMaXRlcmFsXCIsXG4gICAgdmFsdWU6IG51bGwsXG4gICAgb3JpZ2luYWw6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVW5kZWZpbmVkKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiVW5kZWZpbmVkTGl0ZXJhbFwiLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgb3JpZ2luYWw6IHVuZGVmaW5lZFxuICB9O1xufVxuXG4vLyBNaXNjZWxsYW5lb3VzXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEhhc2gocGFpcnMpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIkhhc2hcIixcbiAgICBwYWlyczogcGFpcnMgfHwgW11cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUGFpcihrZXksIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJIYXNoUGFpclwiLFxuICAgIGtleToga2V5LFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQcm9ncmFtKGJvZHksIGJsb2NrUGFyYW1zLCBsb2MpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBcIlByb2dyYW1cIixcbiAgICBib2R5OiBib2R5IHx8IFtdLFxuICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyB8fCBbXSxcbiAgICBsb2M6IGJ1aWxkTG9jKGxvYylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRTb3VyY2Uoc291cmNlKSB7XG4gIHJldHVybiBzb3VyY2UgfHwgbnVsbDtcbn1cblxuZnVuY3Rpb24gYnVpbGRQb3NpdGlvbihsaW5lLCBjb2x1bW4pIHtcbiAgcmV0dXJuIHtcbiAgICBsaW5lOiAodHlwZW9mIGxpbmUgPT09ICdudW1iZXInKSA/IGxpbmUgOiBudWxsLFxuICAgIGNvbHVtbjogKHR5cGVvZiBjb2x1bW4gPT09ICdudW1iZXInKSA/IGNvbHVtbiA6IG51bGxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRMb2Moc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3VyY2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICB2YXIgbG9jID0gc3RhcnRMaW5lO1xuXG4gICAgaWYgKHR5cGVvZiBsb2MgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IGJ1aWxkU291cmNlKGxvYy5zb3VyY2UpLFxuICAgICAgICBzdGFydDogYnVpbGRQb3NpdGlvbihsb2Muc3RhcnQubGluZSwgbG9jLnN0YXJ0LmNvbHVtbiksXG4gICAgICAgIGVuZDogYnVpbGRQb3NpdGlvbihsb2MuZW5kLmxpbmUsIGxvYy5lbmQuY29sdW1uKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IGJ1aWxkU291cmNlKHNvdXJjZSksXG4gICAgICBzdGFydDogYnVpbGRQb3NpdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uKSxcbiAgICAgIGVuZDogYnVpbGRQb3NpdGlvbihlbmRMaW5lLCBlbmRDb2x1bW4pXG4gICAgfTsgXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBtdXN0YWNoZTogYnVpbGRNdXN0YWNoZSxcbiAgYmxvY2s6IGJ1aWxkQmxvY2ssXG4gIHBhcnRpYWw6IGJ1aWxkUGFydGlhbCxcbiAgY29tbWVudDogYnVpbGRDb21tZW50LFxuICBlbGVtZW50OiBidWlsZEVsZW1lbnQsXG4gIGVsZW1lbnRNb2RpZmllcjogYnVpbGRFbGVtZW50TW9kaWZpZXIsXG4gIGNvbXBvbmVudDogYnVpbGRDb21wb25lbnQsXG4gIGF0dHI6IGJ1aWxkQXR0cixcbiAgdGV4dDogYnVpbGRUZXh0LFxuICBzZXhwcjogYnVpbGRTZXhwcixcbiAgcGF0aDogYnVpbGRQYXRoLFxuICBzdHJpbmc6IGJ1aWxkU3RyaW5nLFxuICBib29sZWFuOiBidWlsZEJvb2xlYW4sXG4gIG51bWJlcjogYnVpbGROdW1iZXIsXG4gIHVuZGVmaW5lZDogYnVpbGRVbmRlZmluZWQsXG4gIG51bGw6IGJ1aWxkTnVsbCxcbiAgY29uY2F0OiBidWlsZENvbmNhdCxcbiAgaGFzaDogYnVpbGRIYXNoLFxuICBwYWlyOiBidWlsZFBhaXIsXG4gIHByb2dyYW06IGJ1aWxkUHJvZ3JhbSxcbiAgbG9jOiBidWlsZExvYyxcbiAgcG9zOiBidWlsZFBvc2l0aW9uXG59O1xuIl19

@@ -47,2 +47,2 @@ exports.__esModule = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztzQkFBbUIsVUFBVTs7OzttQkFDYixPQUFPOzs7O2lDQUNPLHNCQUFzQjs7Ozt1QkFDM0IsV0FBVzs7SUFBeEIsT0FBTzs7cUJBQ0ksVUFBVTs7UUFFeEIsTUFBTTs7QUFFZixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDWixPQUxTLE1BQU0sQ0FLUixFQUFFLEVBQUUsT0FBTyxnQkFBTSxDQUFDOztBQUVsQixTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFOztBQUVwQyxNQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQUUsV0FBTyxLQUFLLENBQUM7R0FBRTs7QUFFL0MsbUJBQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQzs7O0FBR2YsSUFBRSxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUM3QixXQUFPLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNuRSxDQUFDOztBQUVGLE1BQUksS0FBSyxHQUFHLGlDQUF1QixDQUFDO0FBQ3BDLFNBQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztDQUMxQyIsImZpbGUiOiJodG1sYmFycy1zeW50YXgvaGFuZGxlYmFycy9jb21waWxlci9iYXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcnNlciBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgQVNUIGZyb20gJy4vYXN0JztcbmltcG9ydCBXaGl0ZXNwYWNlQ29udHJvbCBmcm9tICcuL3doaXRlc3BhY2UtY29udHJvbCc7XG5pbXBvcnQgKiBhcyBIZWxwZXJzIGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBleHRlbmQgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCB7IHBhcnNlciB9O1xuXG5sZXQgeXkgPSB7fTtcbmV4dGVuZCh5eSwgSGVscGVycywgQVNUKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIC8vIEp1c3QgcmV0dXJuIGlmIGFuIGFscmVhZHktY29tcGlsZWQgQVNUIHdhcyBwYXNzZWQgaW4uXG4gIGlmIChpbnB1dC50eXBlID09PSAnUHJvZ3JhbScpIHsgcmV0dXJuIGlucHV0OyB9XG5cbiAgcGFyc2VyLnl5ID0geXk7XG5cbiAgLy8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBvYmplY3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEgc3luYyBvcGVyYXRpb25cbiAgeXkubG9jSW5mbyA9IGZ1bmN0aW9uKGxvY0luZm8pIHtcbiAgICByZXR1cm4gbmV3IHl5LlNvdXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTtcbiAgfTtcblxuICBsZXQgc3RyaXAgPSBuZXcgV2hpdGVzcGFjZUNvbnRyb2woKTtcbiAgcmV0dXJuIHN0cmlwLmFjY2VwdChwYXJzZXIucGFyc2UoaW5wdXQpKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztzQkFBbUIsVUFBVTs7OzttQkFDYixPQUFPOzs7O2lDQUNPLHNCQUFzQjs7Ozt1QkFDM0IsV0FBVzs7SUFBeEIsT0FBTzs7cUJBQ0ksVUFBVTs7UUFFeEIsTUFBTTs7QUFFZixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDWixjQUFPLEVBQUUsRUFBRSxPQUFPLGdCQUFNLENBQUM7O0FBRWxCLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7O0FBRXBDLE1BQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7QUFBRSxXQUFPLEtBQUssQ0FBQztHQUFFOztBQUUvQyxtQkFBTyxFQUFFLEdBQUcsRUFBRSxDQUFDOzs7QUFHZixJQUFFLENBQUMsT0FBTyxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQzdCLFdBQU8sSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ25FLENBQUM7O0FBRUYsTUFBSSxLQUFLLEdBQUcsaUNBQXVCLENBQUM7QUFDcEMsU0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQzFDIiwiZmlsZSI6Imh0bWxiYXJzLXN5bnRheC9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VyIGZyb20gJy4vcGFyc2VyJztcbmltcG9ydCBBU1QgZnJvbSAnLi9hc3QnO1xuaW1wb3J0IFdoaXRlc3BhY2VDb250cm9sIGZyb20gJy4vd2hpdGVzcGFjZS1jb250cm9sJztcbmltcG9ydCAqIGFzIEhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IHsgcGFyc2VyIH07XG5cbmxldCB5eSA9IHt9O1xuZXh0ZW5kKHl5LCBIZWxwZXJzLCBBU1QpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgLy8gSnVzdCByZXR1cm4gaWYgYW4gYWxyZWFkeS1jb21waWxlZCBBU1Qgd2FzIHBhc3NlZCBpbi5cbiAgaWYgKGlucHV0LnR5cGUgPT09ICdQcm9ncmFtJykgeyByZXR1cm4gaW5wdXQ7IH1cblxuICBwYXJzZXIueXkgPSB5eTtcblxuICAvLyBBbHRlcmluZyB0aGUgc2hhcmVkIG9iamVjdCBoZXJlLCBidXQgdGhpcyBpcyBvayBhcyBwYXJzZXIgaXMgYSBzeW5jIG9wZXJhdGlvblxuICB5eS5sb2NJbmZvID0gZnVuY3Rpb24obG9jSW5mbykge1xuICAgIHJldHVybiBuZXcgeXkuU291cmNlTG9jYXRpb24ob3B0aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pO1xuICB9O1xuXG4gIGxldCBzdHJpcCA9IG5ldyBXaGl0ZXNwYWNlQ29udHJvbCgpO1xuICByZXR1cm4gc3RyaXAuYWNjZXB0KHBhcnNlci5wYXJzZShpbnB1dCkpO1xufVxuIl19

@@ -38,6 +38,6 @@ exports.__esModule = true;

exports.toString = toString;
// Sourced from lodash
// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
/*eslint-disable func-style, no-var */
exports.toString = toString;
var isFunction = function (value) {

@@ -54,6 +54,6 @@ return typeof value === 'function';

var isFunction;
exports.isFunction = isFunction;
/*eslint-enable func-style, no-var */
/* istanbul ignore next */
exports.isFunction = isFunction;
var isArray = Array.isArray || function (value) {

@@ -63,4 +63,4 @@ return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;

exports.isArray = isArray;
// Older IE versions do not directly support indexOf so we must implement our own, sadly.
exports.isArray = isArray;

@@ -67,0 +67,0 @@ function indexOf(array, value) {

@@ -117,2 +117,2 @@ exports.__esModule = true;

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9wYXJzZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7c0NBQXNCLDRCQUE0Qjs7OEJBQzFCLG9CQUFvQjs7SUFBaEMsTUFBTTs7bURBQ1csNENBQTRDOzs7OytDQUNoRCx3Q0FBd0M7Ozs7K0NBQ3hDLHlDQUF5Qzs7Ozs0Q0FDL0IsbUNBQW1DOzs7OzRDQUNuQyxtQ0FBbUM7Ozs7QUFFL0QsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUN4QyxNQUFJLEdBQUcsR0FBRyxBQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsR0FBSSxJQUFJLEdBQUcsd0JBVHZDLEtBQUssQ0FTd0MsSUFBSSxDQUFDLENBQUM7QUFDMUQsTUFBSSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFekQsTUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNyRCxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUQsVUFBSSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFakQsWUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7O0FBRXZCLGNBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3ZDO0dBQ0Y7O0FBRUQsU0FBTyxRQUFRLENBQUM7Q0FDakI7O2tCQUVjLFVBQVU7O0FBRXpCLElBQU0sWUFBWSxHQUFHLHdGQUE4QixDQUFDOztBQUU3QyxTQUFTLE1BQU0s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SSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ25CO0dBQ0Y7O0FBRUQsU0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzFCLENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L3BhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIi4vaGFuZGxlYmFycy9jb21waWxlci9iYXNlXCI7XG5pbXBvcnQgKiBhcyBzeW50YXggZnJvbSBcIi4uL2h0bWxiYXJzLXN5bnRheFwiO1xuaW1wb3J0IEV2ZW50ZWRUb2tlbml6ZXIgZnJvbSBcIi4uL3NpbXBsZS1odG1sLXRva2VuaXplci9ldmVudGVkLXRva2VuaXplclwiO1xuaW1wb3J0IEVudGl0eVBhcnNlciBmcm9tIFwiLi4vc2ltcGxlLWh0bWwtdG9rZW5pemVyL2VudGl0eS1wYXJzZXJcIjtcbmltcG9ydCBmdWxsQ2hhclJlZnMgZnJvbSBcIi4uL3NpbXBsZS1odG1sLXRva2VuaXplci9jaGFyLXJlZnMvZnVsbFwiO1xuaW1wb3J0IGhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgZnJvbSBcIi4vcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9yc1wiO1xuaW1wb3J0IHRva2VuaXplckV2ZW50SGFuZGxlcnMgZnJvbSBcIi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcyhodG1sLCBvcHRpb25zKSB7XG4gIHZhciBhc3QgPSAodHlwZW9mIGh0bWwgPT09ICdvYmplY3QnKSA/IGh0bWwgOiBwYXJzZShodG1sKTtcbiAgdmFyIGNvbWJpbmVkID0gbmV3IFBhcnNlcihodG1sLCBvcHRpb25zKS5hY2NlcHROb2RlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5wbHVnaW5zICYmIG9wdGlvbnMucGx1Z2lucy5hc3QpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9wdGlvbnMucGx1Z2lucy5hc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgcGx1Z2luID0gbmV3IG9wdGlvbnMucGx1Z2lucy5hc3RbaV0ob3B0aW9ucyk7XG5cbiAgICAgIHBsdWdpbi5zeW50YXggPSBzeW50YXg7XG5cbiAgICAgIGNvbWJpbmVkID0gcGx1Z2luLnRyYW5zZm9ybShjb21iaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbWJpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBwcmVwcm9jZXNzO1xuXG5jb25zdCBlbnRpdHlQYXJzZXIgPSBuZXcgRW50aXR5UGFyc2VyKGZ1bGxDaGFyUmVmcyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBQYXJzZXIoc291cmNlLCBvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHRoaXMuZWxlbWVudFN0YWNrID0gW107XG4gIHRoaXMudG9rZW5pemVyID0gbmV3IEV2ZW50ZWRUb2tlbml6ZXIodGhpcywgZW50aXR5UGFyc2VyKTtcblxuICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0gbnVsbDtcblxuICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZS5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICB9XG59XG5cbmZvciAobGV0IGtleSBpbiBoYW5kbGViYXJzTm9kZVZpc2l0b3JzKSB7XG4gIFBhcnNlci5wcm90b3R5cGVba2V5XSA9IGhhbmRsZWJhcnNOb2RlVmlzaXRvcnNba2V5XTtcbn1cblxuZm9yIChsZXQga2V5IGluIHRva2VuaXplckV2ZW50SGFuZGxlcnMpIHtcbiAgUGFyc2VyLnByb3RvdHlwZVtrZXldID0gdG9rZW5pemVyRXZlbnRIYW5kbGVyc1trZXldO1xufVxuXG5QYXJzZXIucHJvdG90eXBlLmFjY2VwdE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gIHJldHVybiB0aGlzW25vZGUudHlwZV0obm9kZSk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLmN1cnJlbnRFbGVtZW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVsZW1lbnRTdGFja1t0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggLSAxXTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuc291cmNlRm9yTXVzdGFjaGUgPSBmdW5jdGlvbihtdXN0YWNoZSkge1xuICB2YXIgZmlyc3RMaW5lID0gbXVzdGFjaGUubG9jLnN0YXJ0LmxpbmUgLSAxO1xuICB2YXIgbGFzdExpbmUgPSBtdXN0YWNoZS5sb2MuZW5kLmxpbmUgLSAxO1xuICB2YXIgY3VycmVudExpbmUgPSBmaXJzdExpbmUgLSAxO1xuICB2YXIgZmlyc3RDb2x1bW4gPSBtdXN0YWNoZS5sb2Muc3RhcnQuY29sdW1uICsgMjtcbiAgdmFyIGxhc3RDb2x1bW4gPSBtdXN0YWNoZS5sb2MuZW5kLmNvbHVtbiAtIDI7XG4gIHZhciBzdHJpbmcgPSBbXTtcbiAgdmFyIGxpbmU7XG5cbiAgaWYgKCF0aGlzLnNvdXJjZSkge1xuICAgIHJldHVybiAne3snICsgbXVzdGFjaGUucGF0aC5pZC5vcmlnaW5hbCArICd9fSc7XG4gIH1cblxuICB3aGlsZSAoY3VycmVudExpbmUgPCBsYXN0TGluZSkge1xuICAgIGN1cnJlbnRMaW5lKys7XG4gICAgbGluZSA9IHRoaXMuc291cmNlW2N1cnJlbnRMaW5lXTtcblxuICAgIGlmIChjdXJyZW50TGluZSA9PT0gZmlyc3RMaW5lKSB7XG4gICAgICBpZiAoZmlyc3RMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uLCBsYXN0Q29sdW1uKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50TGluZSA9PT0gbGFzdExpbmUpIHtcbiAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoMCwgbGFzdENvbHVtbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyaW5nLmpvaW4oJ1xcbicpO1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9wYXJzZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7c0NBQXNCLDRCQUE0Qjs7OEJBQzFCLG9CQUFvQjs7SUFBaEMsTUFBTTs7bURBQ1csNENBQTRDOzs7OytDQUNoRCx3Q0FBd0M7Ozs7K0NBQ3hDLHlDQUF5Qzs7Ozs0Q0FDL0IsbUNBQW1DOzs7OzRDQUNuQyxtQ0FBbUM7Ozs7QUFFL0QsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUN4QyxNQUFJLEdBQUcsR0FBRyxBQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsR0FBSSxJQUFJLEdBQUcsOEJBQU0sSUFBSSxDQUFDLENBQUM7QUFDMUQsTUFBSSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFekQsTUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNyRCxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUQsVUFBSSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFakQsWUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7O0FBRXZCLGNBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3ZDO0dBQ0Y7O0FBRUQsU0FBTyxRQUFRLENBQUM7Q0FDakI7O2tCQUVjLFVBQVU7O0FBRXpCLElBQU0sWUFBWSxHQUFHLHdGQUE4QixDQUFDOztBQUU3QyxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVB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Q0FBQyxDQUFDO0tBQ25CO0dBQ0Y7O0FBRUQsU0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzFCLENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L3BhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIi4vaGFuZGxlYmFycy9jb21waWxlci9iYXNlXCI7XG5pbXBvcnQgKiBhcyBzeW50YXggZnJvbSBcIi4uL2h0bWxiYXJzLXN5bnRheFwiO1xuaW1wb3J0IEV2ZW50ZWRUb2tlbml6ZXIgZnJvbSBcIi4uL3NpbXBsZS1odG1sLXRva2VuaXplci9ldmVudGVkLXRva2VuaXplclwiO1xuaW1wb3J0IEVudGl0eVBhcnNlciBmcm9tIFwiLi4vc2ltcGxlLWh0bWwtdG9rZW5pemVyL2VudGl0eS1wYXJzZXJcIjtcbmltcG9ydCBmdWxsQ2hhclJlZnMgZnJvbSBcIi4uL3NpbXBsZS1odG1sLXRva2VuaXplci9jaGFyLXJlZnMvZnVsbFwiO1xuaW1wb3J0IGhhbmRsZWJhcnNOb2RlVmlzaXRvcnMgZnJvbSBcIi4vcGFyc2VyL2hhbmRsZWJhcnMtbm9kZS12aXNpdG9yc1wiO1xuaW1wb3J0IHRva2VuaXplckV2ZW50SGFuZGxlcnMgZnJvbSBcIi4vcGFyc2VyL3Rva2VuaXplci1ldmVudC1oYW5kbGVyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2VzcyhodG1sLCBvcHRpb25zKSB7XG4gIHZhciBhc3QgPSAodHlwZW9mIGh0bWwgPT09ICdvYmplY3QnKSA/IGh0bWwgOiBwYXJzZShodG1sKTtcbiAgdmFyIGNvbWJpbmVkID0gbmV3IFBhcnNlcihodG1sLCBvcHRpb25zKS5hY2NlcHROb2RlKGFzdCk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5wbHVnaW5zICYmIG9wdGlvbnMucGx1Z2lucy5hc3QpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9wdGlvbnMucGx1Z2lucy5hc3QubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgcGx1Z2luID0gbmV3IG9wdGlvbnMucGx1Z2lucy5hc3RbaV0ob3B0aW9ucyk7XG5cbiAgICAgIHBsdWdpbi5zeW50YXggPSBzeW50YXg7XG5cbiAgICAgIGNvbWJpbmVkID0gcGx1Z2luLnRyYW5zZm9ybShjb21iaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbWJpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBwcmVwcm9jZXNzO1xuXG5jb25zdCBlbnRpdHlQYXJzZXIgPSBuZXcgRW50aXR5UGFyc2VyKGZ1bGxDaGFyUmVmcyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBQYXJzZXIoc291cmNlLCBvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHRoaXMuZWxlbWVudFN0YWNrID0gW107XG4gIHRoaXMudG9rZW5pemVyID0gbmV3IEV2ZW50ZWRUb2tlbml6ZXIodGhpcywgZW50aXR5UGFyc2VyKTtcblxuICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0gbnVsbDtcblxuICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZS5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICB9XG59XG5cbmZvciAobGV0IGtleSBpbiBoYW5kbGViYXJzTm9kZVZpc2l0b3JzKSB7XG4gIFBhcnNlci5wcm90b3R5cGVba2V5XSA9IGhhbmRsZWJhcnNOb2RlVmlzaXRvcnNba2V5XTtcbn1cblxuZm9yIChsZXQga2V5IGluIHRva2VuaXplckV2ZW50SGFuZGxlcnMpIHtcbiAgUGFyc2VyLnByb3RvdHlwZVtrZXldID0gdG9rZW5pemVyRXZlbnRIYW5kbGVyc1trZXldO1xufVxuXG5QYXJzZXIucHJvdG90eXBlLmFjY2VwdE5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gIHJldHVybiB0aGlzW25vZGUudHlwZV0obm9kZSk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLmN1cnJlbnRFbGVtZW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVsZW1lbnRTdGFja1t0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggLSAxXTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuc291cmNlRm9yTXVzdGFjaGUgPSBmdW5jdGlvbihtdXN0YWNoZSkge1xuICB2YXIgZmlyc3RMaW5lID0gbXVzdGFjaGUubG9jLnN0YXJ0LmxpbmUgLSAxO1xuICB2YXIgbGFzdExpbmUgPSBtdXN0YWNoZS5sb2MuZW5kLmxpbmUgLSAxO1xuICB2YXIgY3VycmVudExpbmUgPSBmaXJzdExpbmUgLSAxO1xuICB2YXIgZmlyc3RDb2x1bW4gPSBtdXN0YWNoZS5sb2Muc3RhcnQuY29sdW1uICsgMjtcbiAgdmFyIGxhc3RDb2x1bW4gPSBtdXN0YWNoZS5sb2MuZW5kLmNvbHVtbiAtIDI7XG4gIHZhciBzdHJpbmcgPSBbXTtcbiAgdmFyIGxpbmU7XG5cbiAgaWYgKCF0aGlzLnNvdXJjZSkge1xuICAgIHJldHVybiAne3snICsgbXVzdGFjaGUucGF0aC5pZC5vcmlnaW5hbCArICd9fSc7XG4gIH1cblxuICB3aGlsZSAoY3VycmVudExpbmUgPCBsYXN0TGluZSkge1xuICAgIGN1cnJlbnRMaW5lKys7XG4gICAgbGluZSA9IHRoaXMuc291cmNlW2N1cnJlbnRMaW5lXTtcblxuICAgIGlmIChjdXJyZW50TGluZSA9PT0gZmlyc3RMaW5lKSB7XG4gICAgICBpZiAoZmlyc3RMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uLCBsYXN0Q29sdW1uKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50TGluZSA9PT0gbGFzdExpbmUpIHtcbiAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoMCwgbGFzdENvbHVtbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJpbmcucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyaW5nLmpvaW4oJ1xcbicpO1xufTtcbiJdfQ==

@@ -215,2 +215,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7d0JBQWMsYUFBYTs7OztxQkFDQyxVQUFVOztrQkFFdkI7O0FBRWIsU0FBTyxFQUFFLFVBQVMsT0FBTyxFQUFFO0FBQ3pCLFFBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNkLFFBQUksSUFBSSxHQUFHLG1CQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsUUFBSSxDQUFDO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOztBQUUvQixRQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFN0IsUUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQUU7O0FBRWhELFNBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RCLFVBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xDOzs7QUFHRCxRQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLFFBQUksVUFBVSxLQUFLLElBQUksRUFBRTtBQUN2QixZQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztLQUMzRzs7QUFFRCxXQUFPLElBQUksQ0FBQztHQUNiOztBQUVELGdCQUFjLEVBQUUsVUFBUyxLQUFLLEVBQUU7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QUFRLENBQWhCLEdBQUc7O0FBQzdCLE1BQUksUUFBUSxHQUFHLG1CQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRCxTQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUNsQzs7QUFFRCxTQUFTLCtCQUErQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7QUFDeEQsV0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDM0IsV0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDNUIiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L3BhcnNlci9oYW5kbGViYXJzLW5vZGUtdmlzaXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYiBmcm9tIFwiLi4vYnVpbGRlcnNcIjtcbmltcG9ydCB7IGFwcGVuZENoaWxkIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblxuICBQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7XG4gICAgdmFyIGJvZHkgPSBbXTtcbiAgICB2YXIgbm9kZSA9IGIucHJvZ3JhbShib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmxvYyk7XG4gICAgdmFyIGksIGwgPSBwcm9ncmFtLmJvZHkubGVuZ3RoO1xuXG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChub2RlKTtcblxuICAgIGlmIChsID09PSAwKSB7IHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTsgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHROb2RlKHByb2dyYW0uYm9keVtpXSk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhhdCB0aGUgZWxlbWVudCBzdGFjayBpcyBiYWxhbmNlZCBwcm9wZXJseS5cbiAgICB2YXIgcG9wcGVkTm9kZSA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIGlmIChwb3BwZWROb2RlICE9PSBub2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmNsb3NlZCBlbGVtZW50IGBcIiArIHBvcHBlZE5vZGUudGFnICsgXCJgIChvbiBsaW5lIFwiICsgcG9wcGVkTm9kZS5sb2Muc3RhcnQubGluZSArIFwiKS5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH0sXG5cbiAgQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uKGJsb2NrKSB7XG4gICAgZGVsZXRlIGJsb2NrLmludmVyc2VTdHJpcDtcbiAgICBkZWxldGUgYmxvY2sub3BlblN0cmluZztcbiAgICBkZWxldGUgYmxvY2suY2xvc2VTdHJpcDtcblxuICAgIGlmICh0aGlzLnRva2VuaXplci5zdGF0ZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEoJ3t7JyArIHRoaXMuc291cmNlRm9yTXVzdGFjaGUoYmxvY2spICsgJ319Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSAnY29tbWVudCcgJiYgdGhpcy50b2tlbml6ZXIuc3RhdGUgIT09ICdkYXRhJyAmJiB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gJ2JlZm9yZURhdGEnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGJsb2NrIG1heSBvbmx5IGJlIHVzZWQgaW5zaWRlIGFuIEhUTUwgZWxlbWVudCBvciBhbm90aGVyIGJsb2NrLlwiKTtcbiAgICB9XG5cbiAgICBibG9jayA9IGFjY2VwdENvbW1vbk5vZGVzKHRoaXMsIGJsb2NrKTtcbiAgICB2YXIgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0gPyB0aGlzLmFjY2VwdE5vZGUoYmxvY2sucHJvZ3JhbSkgOiBudWxsO1xuICAgIHZhciBpbnZlcnNlID0gYmxvY2suaW52ZXJzZSA/IHRoaXMuYWNjZXB0Tm9kZShibG9jay5pbnZlcnNlKSA6IG51bGw7XG5cbiAgICB2YXIgbm9kZSA9IGIuYmxvY2soYmxvY2sucGF0aCwgYmxvY2sucGFyYW1zLCBibG9jay5oYXNoLCBwcm9ncmFtLCBpbnZlcnNlLCBibG9jay5sb2MpO1xuICAgIHZhciBwYXJlbnRQcm9ncmFtID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuICAgIGFwcGVuZENoaWxkKHBhcmVudFByb2dyYW0sIG5vZGUpO1xuICB9LFxuXG4gIE11c3RhY2hlU3RhdGVtZW50OiBmdW5jdGlvbihyYXdNdXN0YWNoZSkge1xuICAgIGxldCB0b2tlbml6ZXIgPSB0aGlzLnRva2VuaXplcjtcbiAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gcmF3TXVzdGFjaGU7XG4gICAgbGV0IG11c3RhY2hlID0gYi5tdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsICFlc2NhcGVkLCBsb2MpO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEoJ3t7JyArIHRoaXMuc291cmNlRm9yTXVzdGFjaGUobXVzdGFjaGUpICsgJ319Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYWNjZXB0Q29tbW9uTm9kZXModGhpcywgbXVzdGFjaGUpO1xuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIC8vIFRhZyBoZWxwZXJzXG4gICAgICBjYXNlIFwidGFnTmFtZVwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVOYW1lXCI6XG4gICAgICBjYXNlIFwiYWZ0ZXJBdHRyaWJ1dGVOYW1lXCI6XG4gICAgICAgIHRoaXMuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudE5vZGUsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnN0YXRlID0gXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRcIjpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudE5vZGUsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnN0YXRlID0gXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBBdHRyaWJ1dGUgdmFsdWVzXG4gICAgICBjYXNlIFwiYmVmb3JlQXR0cmlidXRlVmFsdWVcIjpcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnN0YXRlID0gJ2F0dHJpYnV0ZVZhbHVlVW5xdW90ZWQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFwiOlxuICAgICAgY2FzZSBcImF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkXCI6XG4gICAgICBjYXNlIFwiYXR0cmlidXRlVmFsdWVVbnF1b3RlZFwiOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVE9ETzogT25seSBhcHBlbmQgY2hpbGQgd2hlbiB0aGUgdG9rZW5pemVyIHN0YXRlIG1ha2VzXG4gICAgICAvLyBzZW5zZSB0byBkbyBzbywgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBtdXN0YWNoZSk7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIHZhciBjaGFuZ2VMaW5lcyA9IDA7XG4gICAgaWYgKGNvbnRlbnQucmlnaHRTdHJpcHBlZCkge1xuICAgICAgY2hhbmdlTGluZXMgPSBsZWFkaW5nTmV3bGluZURpZmZlcmVuY2UoY29udGVudC5vcmlnaW5hbCwgY29udGVudC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbml6ZXIubGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmUgKyBjaGFuZ2VMaW5lcztcbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZVBhcnQoY29udGVudC52YWx1ZSk7XG4gICAgdGhpcy50b2tlbml6ZXIuZmx1c2hEYXRhKCk7XG4gIH0sXG5cbiAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24oY29tbWVudCkge1xuICAgIHJldHVybiBjb21tZW50O1xuICB9LFxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhcnRpYWwpIHtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHBhcnRpYWwpO1xuICAgIHJldHVybiBwYXJ0aWFsO1xuICB9LFxuXG4gIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uKHNleHByKSB7XG4gICAgcmV0dXJuIGFjY2VwdENvbW1vbk5vZGVzKHRoaXMsIHNleHByKTtcbiAgfSxcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24ocGF0aCkge1xuICAgIGRlbGV0ZSBwYXRoLmRhdGE7XG4gICAgZGVsZXRlIHBhdGguZGVwdGg7XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBIYXNoOiBmdW5jdGlvbihoYXNoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYXNoLnBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUoaGFzaC5wYWlyc1tpXS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG4gIH0sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbigpIHt9XG59O1xuXG5mdW5jdGlvbiBsZWFkaW5nTmV3bGluZURpZmZlcmVuY2Uob3JpZ2luYWwsIHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAvLyBpZiBpdCBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIGNvdW50IG9mIG5ld2xpbmVzXG4gICAgLy8gaW4gb3JpZ2luYWxcbiAgICByZXR1cm4gb3JpZ2luYWwuc3BsaXQoXCJcXG5cIikubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3bGluZXMgcHJpb3IgdG9cbiAgLy8gYHZhbHVlYFxuICB2YXIgZGlmZmVyZW5jZSA9IG9yaWdpbmFsLnNwbGl0KHZhbHVlKVswXTtcbiAgdmFyIGxpbmVzID0gZGlmZmVyZW5jZS5zcGxpdCgvXFxuLyk7XG5cbiAgcmV0dXJuIGxpbmVzLmxlbmd0aCAtIDE7XG59XG5cbmZ1bmN0aW9uIGFjY2VwdENvbW1vbk5vZGVzKGNvbXBpbGVyLCBub2RlKSB7XG4gIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5wYXRoKTtcblxuICBpZiAobm9kZS5wYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUucGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb21waWxlci5hY2NlcHROb2RlKG5vZGUucGFyYW1zW2ldKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5wYXJhbXMgPSBbXTtcbiAgfVxuXG4gIGlmIChub2RlLmhhc2gpIHtcbiAgICBjb21waWxlci5hY2NlcHROb2RlKG5vZGUuaGFzaCk7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5oYXNoID0gYi5oYXNoKCk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudE1vZGlmaWVyKGVsZW1lbnQsIG11c3RhY2hlKSB7XG4gIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jIH0gPSBtdXN0YWNoZTtcbiAgbGV0IG1vZGlmaWVyID0gYi5lbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpO1xuICBlbGVtZW50Lm1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChhdHRyaWJ1dGUsIHBhcnQpIHtcbiAgYXR0cmlidXRlLmlzRHluYW1pYyA9IHRydWU7XG4gIGF0dHJpYnV0ZS5wYXJ0cy5wdXNoKHBhcnQpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9wYXJzZXIvaGFuZGxlYmFycy1ub2RlLXZpc2l0b3JzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7d0JBQWMsYUFBYTs7OztxQkFDQyxVQUFVOztrQkFFdkI7O0FBRWIsU0FBTyxFQUFFLFVBQVMsT0FBTyxFQUFFO0FBQ3pCLFFBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNkLFFBQUksSUFBSSxHQUFHLG1CQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsUUFBSSxDQUFDO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOztBQUUvQixRQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFN0IsUUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQUUsYUFBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQUU7O0FBRWhELFNBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RCLFVBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xDOzs7QUFHRCxRQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pDLFFBQUksVUFBVSxLQUFLLElBQUksRUFBRTtBQUN2QixZQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztLQUMzRzs7QUFFRCxXQUFPLElBQUksQ0FBQztHQUNiOztBQUVELGdCQUFjLEVBQUUsVUFBUyxLQUFLLEVBQUU7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QUFHLG1CQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRCxTQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztDQUNsQzs7QUFFRCxTQUFTLCtCQUErQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7QUFDeEQsV0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDM0IsV0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDNUIiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L3BhcnNlci9oYW5kbGViYXJzLW5vZGUtdmlzaXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYiBmcm9tIFwiLi4vYnVpbGRlcnNcIjtcbmltcG9ydCB7IGFwcGVuZENoaWxkIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblxuICBQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7XG4gICAgdmFyIGJvZHkgPSBbXTtcbiAgICB2YXIgbm9kZSA9IGIucHJvZ3JhbShib2R5LCBwcm9ncmFtLmJsb2NrUGFyYW1zLCBwcm9ncmFtLmxvYyk7XG4gICAgdmFyIGksIGwgPSBwcm9ncmFtLmJvZHkubGVuZ3RoO1xuXG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChub2RlKTtcblxuICAgIGlmIChsID09PSAwKSB7IHJldHVybiB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTsgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHROb2RlKHByb2dyYW0uYm9keVtpXSk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgdGhhdCB0aGUgZWxlbWVudCBzdGFjayBpcyBiYWxhbmNlZCBwcm9wZXJseS5cbiAgICB2YXIgcG9wcGVkTm9kZSA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIGlmIChwb3BwZWROb2RlICE9PSBub2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmNsb3NlZCBlbGVtZW50IGBcIiArIHBvcHBlZE5vZGUudGFnICsgXCJgIChvbiBsaW5lIFwiICsgcG9wcGVkTm9kZS5sb2Muc3RhcnQubGluZSArIFwiKS5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH0sXG5cbiAgQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uKGJsb2NrKSB7XG4gICAgZGVsZXRlIGJsb2NrLmludmVyc2VTdHJpcDtcbiAgICBkZWxldGUgYmxvY2sub3BlblN0cmluZztcbiAgICBkZWxldGUgYmxvY2suY2xvc2VTdHJpcDtcblxuICAgIGlmICh0aGlzLnRva2VuaXplci5zdGF0ZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEoJ3t7JyArIHRoaXMuc291cmNlRm9yTXVzdGFjaGUoYmxvY2spICsgJ319Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5pemVyLnN0YXRlICE9PSAnY29tbWVudCcgJiYgdGhpcy50b2tlbml6ZXIuc3RhdGUgIT09ICdkYXRhJyAmJiB0aGlzLnRva2VuaXplci5zdGF0ZSAhPT0gJ2JlZm9yZURhdGEnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGJsb2NrIG1heSBvbmx5IGJlIHVzZWQgaW5zaWRlIGFuIEhUTUwgZWxlbWVudCBvciBhbm90aGVyIGJsb2NrLlwiKTtcbiAgICB9XG5cbiAgICBibG9jayA9IGFjY2VwdENvbW1vbk5vZGVzKHRoaXMsIGJsb2NrKTtcbiAgICB2YXIgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0gPyB0aGlzLmFjY2VwdE5vZGUoYmxvY2sucHJvZ3JhbSkgOiBudWxsO1xuICAgIHZhciBpbnZlcnNlID0gYmxvY2suaW52ZXJzZSA/IHRoaXMuYWNjZXB0Tm9kZShibG9jay5pbnZlcnNlKSA6IG51bGw7XG5cbiAgICB2YXIgbm9kZSA9IGIuYmxvY2soYmxvY2sucGF0aCwgYmxvY2sucGFyYW1zLCBibG9jay5oYXNoLCBwcm9ncmFtLCBpbnZlcnNlLCBibG9jay5sb2MpO1xuICAgIHZhciBwYXJlbnRQcm9ncmFtID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuICAgIGFwcGVuZENoaWxkKHBhcmVudFByb2dyYW0sIG5vZGUpO1xuICB9LFxuXG4gIE11c3RhY2hlU3RhdGVtZW50OiBmdW5jdGlvbihyYXdNdXN0YWNoZSkge1xuICAgIGxldCB0b2tlbml6ZXIgPSB0aGlzLnRva2VuaXplcjtcbiAgICBsZXQgeyBwYXRoLCBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gcmF3TXVzdGFjaGU7XG4gICAgbGV0IG11c3RhY2hlID0gYi5tdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsICFlc2NhcGVkLCBsb2MpO1xuXG4gICAgaWYgKHRva2VuaXplci5zdGF0ZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZFRvQ29tbWVudERhdGEoJ3t7JyArIHRoaXMuc291cmNlRm9yTXVzdGFjaGUobXVzdGFjaGUpICsgJ319Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYWNjZXB0Q29tbW9uTm9kZXModGhpcywgbXVzdGFjaGUpO1xuXG4gICAgc3dpdGNoICh0b2tlbml6ZXIuc3RhdGUpIHtcbiAgICAgIC8vIFRhZyBoZWxwZXJzXG4gICAgICBjYXNlIFwidGFnTmFtZVwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBcImJlZm9yZUF0dHJpYnV0ZU5hbWVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYmVmb3JlQXR0cmlidXRlTmFtZVwiOlxuICAgICAgICBhZGRFbGVtZW50TW9kaWZpZXIodGhpcy5jdXJyZW50Tm9kZSwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVOYW1lXCI6XG4gICAgICBjYXNlIFwiYWZ0ZXJBdHRyaWJ1dGVOYW1lXCI6XG4gICAgICAgIHRoaXMuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudE5vZGUsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnN0YXRlID0gXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRcIjpcbiAgICAgICAgYWRkRWxlbWVudE1vZGlmaWVyKHRoaXMuY3VycmVudE5vZGUsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnN0YXRlID0gXCJiZWZvcmVBdHRyaWJ1dGVOYW1lXCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBBdHRyaWJ1dGUgdmFsdWVzXG4gICAgICBjYXNlIFwiYmVmb3JlQXR0cmlidXRlVmFsdWVcIjpcbiAgICAgICAgYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydCh0aGlzLmN1cnJlbnRBdHRyaWJ1dGUsIG11c3RhY2hlKTtcbiAgICAgICAgdG9rZW5pemVyLnN0YXRlID0gJ2F0dHJpYnV0ZVZhbHVlVW5xdW90ZWQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFwiOlxuICAgICAgY2FzZSBcImF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkXCI6XG4gICAgICBjYXNlIFwiYXR0cmlidXRlVmFsdWVVbnF1b3RlZFwiOlxuICAgICAgICBhcHBlbmREeW5hbWljQXR0cmlidXRlVmFsdWVQYXJ0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSwgbXVzdGFjaGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVE9ETzogT25seSBhcHBlbmQgY2hpbGQgd2hlbiB0aGUgdG9rZW5pemVyIHN0YXRlIG1ha2VzXG4gICAgICAvLyBzZW5zZSB0byBkbyBzbywgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCBtdXN0YWNoZSk7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIHZhciBjaGFuZ2VMaW5lcyA9IDA7XG4gICAgaWYgKGNvbnRlbnQucmlnaHRTdHJpcHBlZCkge1xuICAgICAgY2hhbmdlTGluZXMgPSBsZWFkaW5nTmV3bGluZURpZmZlcmVuY2UoY29udGVudC5vcmlnaW5hbCwgY29udGVudC52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbml6ZXIubGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmUgKyBjaGFuZ2VMaW5lcztcbiAgICB0aGlzLnRva2VuaXplci50b2tlbml6ZVBhcnQoY29udGVudC52YWx1ZSk7XG4gICAgdGhpcy50b2tlbml6ZXIuZmx1c2hEYXRhKCk7XG4gIH0sXG5cbiAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24oY29tbWVudCkge1xuICAgIHJldHVybiBjb21tZW50O1xuICB9LFxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhcnRpYWwpIHtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHBhcnRpYWwpO1xuICAgIHJldHVybiBwYXJ0aWFsO1xuICB9LFxuXG4gIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uKHNleHByKSB7XG4gICAgcmV0dXJuIGFjY2VwdENvbW1vbk5vZGVzKHRoaXMsIHNleHByKTtcbiAgfSxcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24ocGF0aCkge1xuICAgIGRlbGV0ZSBwYXRoLmRhdGE7XG4gICAgZGVsZXRlIHBhdGguZGVwdGg7XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfSxcblxuICBIYXNoOiBmdW5jdGlvbihoYXNoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYXNoLnBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdE5vZGUoaGFzaC5wYWlyc1tpXS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG4gIH0sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oKSB7fSxcbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uKCkge30sXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbigpIHt9XG59O1xuXG5mdW5jdGlvbiBsZWFkaW5nTmV3bGluZURpZmZlcmVuY2Uob3JpZ2luYWwsIHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAvLyBpZiBpdCBpcyBlbXB0eSwganVzdCByZXR1cm4gdGhlIGNvdW50IG9mIG5ld2xpbmVzXG4gICAgLy8gaW4gb3JpZ2luYWxcbiAgICByZXR1cm4gb3JpZ2luYWwuc3BsaXQoXCJcXG5cIikubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3bGluZXMgcHJpb3IgdG9cbiAgLy8gYHZhbHVlYFxuICB2YXIgZGlmZmVyZW5jZSA9IG9yaWdpbmFsLnNwbGl0KHZhbHVlKVswXTtcbiAgdmFyIGxpbmVzID0gZGlmZmVyZW5jZS5zcGxpdCgvXFxuLyk7XG5cbiAgcmV0dXJuIGxpbmVzLmxlbmd0aCAtIDE7XG59XG5cbmZ1bmN0aW9uIGFjY2VwdENvbW1vbk5vZGVzKGNvbXBpbGVyLCBub2RlKSB7XG4gIGNvbXBpbGVyLmFjY2VwdE5vZGUobm9kZS5wYXRoKTtcblxuICBpZiAobm9kZS5wYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUucGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb21waWxlci5hY2NlcHROb2RlKG5vZGUucGFyYW1zW2ldKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5wYXJhbXMgPSBbXTtcbiAgfVxuXG4gIGlmIChub2RlLmhhc2gpIHtcbiAgICBjb21waWxlci5hY2NlcHROb2RlKG5vZGUuaGFzaCk7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5oYXNoID0gYi5oYXNoKCk7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudE1vZGlmaWVyKGVsZW1lbnQsIG11c3RhY2hlKSB7XG4gIGxldCB7IHBhdGgsIHBhcmFtcywgaGFzaCwgbG9jIH0gPSBtdXN0YWNoZTtcbiAgbGV0IG1vZGlmaWVyID0gYi5lbGVtZW50TW9kaWZpZXIocGF0aCwgcGFyYW1zLCBoYXNoLCBsb2MpO1xuICBlbGVtZW50Lm1vZGlmaWVycy5wdXNoKG1vZGlmaWVyKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kRHluYW1pY0F0dHJpYnV0ZVZhbHVlUGFydChhdHRyaWJ1dGUsIHBhcnQpIHtcbiAgYXR0cmlidXRlLmlzRHluYW1pYyA9IHRydWU7XG4gIGF0dHJpYnV0ZS5wYXJ0cy5wdXNoKHBhcnQpO1xufVxuIl19

@@ -240,2 +240,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7d0NBQW9CLG9DQUFvQzs7Ozt3QkFDMUMsYUFBYTs7OztxQkFDNEMsVUFBVTs7a0JBRWxFO0FBQ2IsT0FBSyxFQUFFLFlBQVc7QUFDaEIsUUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7R0FDekI7Ozs7QUFJRCxjQUFZLEVBQUUsWUFBVztBQUN2QixRQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztHQUNsQzs7QUFFRCxxQkFBbUIsRUFBRSxVQUFTLElBQUksRUFBRTtBQUNsQyxRQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7R0FDaEM7O0FBRUQsZUFBYSxFQUFFLFlBQVc7QUFDeEIsV0FsQkssV0FBVyxDQWtCSixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0dBQ3REOzs7O0FBS0QsV0FBUyxFQUFFLFlBQVc7QUFDcEIsUUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBRSxJQUFJLEVBQUUsQ0FBQztHQUM3Qjs7QUFFRCxjQUFZLEVBQUUsVUFBUyxJQUFJLEVBQUU7QUFDM0IsUUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO0dBQ2hDOztBQUVELFlBQVUsRUFBRSxZQUFXO0FBQ3JCLFdBakNLLFdBQVcsQ0FpQ0osSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztHQUN0RDs7OztBQUlELGVBQWEsRUFBRSxZQUFXO0FBQ3hCLFFBQUksQ0FBQyxXQUFXLEdBQUc7QUFDakIsVUFBSSxFQUFFLFVBQVU7QUFDaEIsVUFBSSxFQUFFLEVBQUU7QUFDUixnQkFBVSxFQUFFLEVBQUU7QUFDZCxlQUFTLEVBQUUsRUFBRTtBQUNiLGlCQUFXLEVBQUUsS0FB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QUcsY0FBYyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLHVCQUF1QixDQUFDO0dBQzFFLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUU7QUFDbkMsU0FBSyxHQUFHLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQ0FBZ0MsR0FBRyxPQUFPLENBQUMsR0FBRyxHQUFHLGFBQWEsR0FDdkcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztHQUN2Qzs7QUFFRCxNQUFJLEtBQUssRUFBRTtBQUFFLFVBQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7R0FBRTtDQUN2Qzs7QUFFRCxTQUFTLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtBQUM3QixTQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLGFBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0NBQ2hFIiwiZmlsZSI6Imh0bWxiYXJzLXN5bnRheC9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZvaWRNYXAgZnJvbSAnLi4vLi4vaHRtbGJhcnMtdXRpbC92b2lkLXRhZy1uYW1lcyc7XG5pbXBvcnQgYiBmcm9tIFwiLi4vYnVpbGRlcnNcIjtcbmltcG9ydCB7IGFwcGVuZENoaWxkLCBwYXJzZUNvbXBvbmVudEJsb2NrUGFyYW1zLCB1bndyYXBNdXN0YWNoZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gbnVsbDtcbiAgfSxcblxuICAvLyBDb21tZW50XG5cbiAgYmVnaW5Db21tZW50OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0gYi5jb21tZW50KFwiXCIpO1xuICB9LFxuXG4gIGFwcGVuZFRvQ29tbWVudERhdGE6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLnZhbHVlICs9IGNoYXI7XG4gIH0sXG5cbiAgZmluaXNoQ29tbWVudDogZnVuY3Rpb24oKSB7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnROb2RlKTtcbiAgfSxcblxuXG4gIC8vIERhdGFcblxuICBiZWdpbkRhdGE6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLnRleHQoKTtcbiAgfSxcblxuICBhcHBlbmRUb0RhdGE6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLmNoYXJzICs9IGNoYXI7XG4gIH0sXG5cbiAgZmluaXNoRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgYXBwZW5kQ2hpbGQodGhpcy5jdXJyZW50RWxlbWVudCgpLCB0aGlzLmN1cnJlbnROb2RlKTtcbiAgfSxcblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICBiZWdpblN0YXJ0VGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ1N0YXJ0VGFnJyxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGJlZ2luRW5kVGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlID0ge1xuICAgICAgdHlwZTogJ0VuZFRhZycsXG4gICAgICBuYW1lOiBcIlwiLFxuICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICBtb2RpZmllcnM6IFtdLFxuICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgbG9jOiBudWxsXG4gICAgfTtcbiAgfSxcblxuICBmaW5pc2hUYWc6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB7IHRhZ0xpbmUsIHRhZ0NvbHVtbiwgbGluZSwgY29sdW1uIH0gPSB0aGlzLnRva2VuaXplcjtcblxuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgIHRhZy5sb2MgPSBiLmxvYyh0YWdMaW5lLCB0YWdDb2x1bW4sIGxpbmUsIGNvbHVtbik7XG4gICAgXG4gICAgaWYgKHRhZy50eXBlID09PSAnU3RhcnRUYWcnKSB7XG4gICAgICB0aGlzLmZpbmlzaFN0YXJ0VGFnKCk7XG5cbiAgICAgIGlmICh2b2lkTWFwLmhhc093blByb3BlcnR5KHRhZy5uYW1lKSB8fCB0YWcuc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgdGhpcy5maW5pc2hFbmRUYWcodHJ1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoRW5kVGFnKGZhbHNlKTtcbiAgICB9XG4gIH0sXG5cbiAgZmluaXNoU3RhcnRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB7IG5hbWUsIGF0dHJpYnV0ZXMsIG1vZGlmaWVycyB9ID0gdGhpcy5jdXJyZW50Tm9kZTtcblxuICAgIGxldCBsb2MgPSBiLmxvYyh0aGlzLnRva2VuaXplci50YWdMaW5lLCB0aGlzLnRva2VuaXplci50YWdDb2x1bW4pO1xuICAgIGxldCBlbGVtZW50ID0gYi5lbGVtZW50KG5hbWUsIGF0dHJpYnV0ZXMsIG1vZGlmaWVycywgW10sIGxvYyk7XG4gICAgdGhpcy5lbGVtZW50U3RhY2sucHVzaChlbGVtZW50KTtcbiAgfSxcblxuICBmaW5pc2hFbmRUYWc6IGZ1bmN0aW9uKGlzVm9pZCkge1xuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnROb2RlO1xuXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRTdGFjay5wb3AoKTtcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5jdXJyZW50RWxlbWVudCgpO1xuICAgIGxldCBkaXNhYmxlQ29tcG9uZW50R2VuZXJhdGlvbiA9ICh0aGlzLm9wdGlvbnMuZGlzYWJsZUNvbXBvbmVudEdlbmVyYXRpb24gPT09IHRydWUpO1xuXG4gICAgdmFsaWRhdGVFbmRUYWcodGFnLCBlbGVtZW50LCBpc1ZvaWQpO1xuXG4gICAgZWxlbWVudC5sb2MuZW5kLmxpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIGVsZW1lbnQubG9jLmVuZC5jb2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG5cbiAgICBpZiAoZGlzYWJsZUNvbXBvbmVudEdlbmVyYXRpb24gfHwgZWxlbWVudC50YWcuaW5kZXhPZihcIi1cIikgPT09IC0xKSB7XG4gICAgICBhcHBlbmRDaGlsZChwYXJlbnQsIGVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcHJvZ3JhbSA9IGIucHJvZ3JhbShlbGVtZW50LmNoaWxkcmVuKTtcbiAgICAgIHBhcnNlQ29tcG9uZW50QmxvY2tQYXJhbXMoZWxlbWVudCwgcHJvZ3JhbSk7XG4gICAgICBsZXQgY29tcG9uZW50ID0gYi5jb21wb25lbnQoZWxlbWVudC50YWcsIGVsZW1lbnQuYXR0cmlidXRlcywgcHJvZ3JhbSwgZWxlbWVudC5sb2MpO1xuICAgICAgYXBwZW5kQ2hpbGQocGFyZW50LCBjb21wb25lbnQpO1xuICAgIH1cbiAgfSxcblxuICBtYXJrVGFnQXNTZWxmQ2xvc2luZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZS5zZWxmQ2xvc2luZyA9IHRydWU7XG4gIH0sXG5cbiAgLy8gVGFncyAtIG5hbWVcblxuICBhcHBlbmRUb1RhZ05hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLm5hbWUgKz0gY2hhcjtcbiAgfSxcblxuICAvLyBUYWdzIC0gYXR0cmlidXRlc1xuXG4gIGJlZ2luQXR0cmlidXRlOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgdGFnID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBpZiAodGFnLnR5cGUgPT09ICdFbmRUYWcnKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBlbmQgdGFnOiBjbG9zaW5nIHRhZyBtdXN0IG5vdCBoYXZlIGF0dHJpYnV0ZXMsIGAgK1xuICAgICAgICBgaW4gXFxgJHt0YWcubmFtZX1cXGAgKG9uIGxpbmUgJHt0aGlzLnRva2VuaXplci5saW5lfSkuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUgPSB7XG4gICAgICBuYW1lOiBcIlwiLFxuICAgICAgcGFydHM6IFtdLFxuICAgICAgaXNRdW90ZWQ6IGZhbHNlLFxuICAgICAgaXNEeW5hbWljOiBmYWxzZVxuICAgIH07XG4gIH0sXG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLm5hbWUgKz0gY2hhcjtcbiAgfSxcblxuICBiZWdpbkF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbihpc1F1b3RlZCkge1xuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZS5pc1F1b3RlZCA9IGlzUXVvdGVkO1xuICB9LFxuXG4gIGFwcGVuZFRvQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICBsZXQgcGFydHMgPSB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUucGFydHM7XG5cbiAgICBpZiAodHlwZW9mIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdID09PSAnc3RyaW5nJykge1xuICAgICAgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gKz0gY2hhcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMucHVzaChjaGFyKTtcbiAgICB9XG4gIH0sXG5cbiAgZmluaXNoQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB7IG5hbWUsIHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljIH0gPSB0aGlzLmN1cnJlbnRBdHRyaWJ1dGU7XG4gICAgbGV0IHZhbHVlID0gYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgdGhpcy50b2tlbml6ZXIubGluZSk7XG5cbiAgICB0aGlzLmN1cnJlbnROb2RlLmF0dHJpYnV0ZXMucHVzaChiLmF0dHIobmFtZSwgdmFsdWUpKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYXNzZW1ibGVBdHRyaWJ1dGVWYWx1ZShwYXJ0cywgaXNRdW90ZWQsIGlzRHluYW1pYywgbGluZSkge1xuICBpZiAoaXNEeW5hbWljKSB7XG4gICAgaWYgKGlzUXVvdGVkKSB7XG4gICAgICByZXR1cm4gYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShwYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHBhcnRzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBhIG11c3RhY2hlLCBgICtcbiAgICAgICAgICBgcHJlY2VlZGVkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPScgY2hhcmFjdGVyLCBhbmQgYCArXG4gICAgICAgICAgYGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2Ugb3IgYSAnPicgY2hhcmFjdGVyIChvbiBsaW5lICR7bGluZX0pYFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYi50ZXh0KChwYXJ0cy5sZW5ndGggPiAwKSA/IHBhcnRzWzBdIDogXCJcIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZW1ibGVDb25jYXRlbmF0ZWRWYWx1ZShwYXJ0cykge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgIGlmICh0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBhcnRzW2ldID0gYi5zdHJpbmcocGFydHNbaV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGFydC50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHBhcnRzW2ldID0gdW53cmFwTXVzdGFjaGUocGFydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBub2RlIGluIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWU6IFwiICsgcGFydC50eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYi5jb25jYXQocGFydHMpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIHNlbGZDbG9zaW5nKSB7XG4gIHZhciBlcnJvcjtcblxuICBpZiAodm9pZE1hcFt0YWcubmFtZV0gJiYgIXNlbGZDbG9zaW5nKSB7XG4gICAgLy8gRW5nVGFnIGlzIGFsc28gY2FsbGVkIGJ5IFN0YXJ0VGFnIGZvciB2b2lkIGFuZCBzZWxmLWNsb3NpbmcgdGFncyAoaS5lLlxuICAgIC8vIDxpbnB1dD4gb3IgPGJyIC8+LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IGhlcmUuIE90aGVyd2lzZSwgd2Ugd291bGRcbiAgICAvLyB0aHJvdyBhbiBlcnJvciBmb3IgdGhvc2UgY2FzZXMuXG4gICAgZXJyb3IgPSBcIkludmFsaWQgZW5kIHRhZyBcIiArIGZvcm1hdEVuZFRhZ0luZm8odGFnKSArIFwiICh2b2lkIGVsZW1lbnRzIGNhbm5vdCBoYXZlIGVuZCB0YWdzKS5cIjtcbiAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyb3IgPSBcIkNsb3NpbmcgdGFnIFwiICsgZm9ybWF0RW5kVGFnSW5mbyh0YWcpICsgXCIgd2l0aG91dCBhbiBvcGVuIHRhZy5cIjtcbiAgfSBlbHNlIGlmIChlbGVtZW50LnRhZyAhPT0gdGFnLm5hbWUpIHtcbiAgICBlcnJvciA9IFwiQ2xvc2luZyB0YWcgXCIgKyBmb3JtYXRFbmRUYWdJbmZvKHRhZykgKyBcIiBkaWQgbm90IG1hdGNoIGxhc3Qgb3BlbiB0YWcgYFwiICsgZWxlbWVudC50YWcgKyBcImAgKG9uIGxpbmUgXCIgK1xuICAgICAgICAgICAgZWxlbWVudC5sb2Muc3RhcnQubGluZSArIFwiKS5cIjtcbiAgfVxuXG4gIGlmIChlcnJvcikgeyB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpOyB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEVuZFRhZ0luZm8odGFnKSB7XG4gIHJldHVybiBcImBcIiArIHRhZy5uYW1lICsgXCJgIChvbiBsaW5lIFwiICsgdGFnLmxvYy5lbmQubGluZSArIFwiKVwiO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC9wYXJzZXIvdG9rZW5pemVyLWV2ZW50LWhhbmRsZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7d0NBQW9CLG9DQUFvQzs7Ozt3QkFDMUMsYUFBYTs7OztxQkFDNEMsVUFBVTs7a0JBRWxFO0FBQ2IsT0FBSyxFQUFFLFlBQVc7QUFDaEIsUUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7R0FDekI7Ozs7QUFJRCxjQUFZLEVBQUUsWUFBVztBQUN2QixRQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztHQUNsQzs7QUFFRCxxQkFBbUIsRUFBRSxVQUFTLElBQUksRUFBRTtBQUNsQyxRQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7R0FDaEM7O0FBRUQsZUFBYSxFQUFFLFlBQVc7QUFDeEIsdUJBQVksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztHQUN0RDs7OztBQUtELFdBQVMsRUFBRSxZQUFXO0FBQ3BCLFFBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQUUsSUFBSSxFQUFFLENBQUM7R0FDN0I7O0FBRUQsY0FBWSxFQUFFLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFFBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQztHQUNoQzs7QUFFRCxZQUFVLEVBQUUsWUFBVztBQUNyQix1QkFBWSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0dBQ3REOzs7O0FBSUQsZUFBYSxFQUFFLFlBQVc7QUFDeEIsUUFBSSxDQUFDLFdBQVcsR0FBRztBQUNqQixVQUFJLEVBQUUsVUFBVTtBQUNoQixVQUFJLEVBQUUsRUFBRTtBQUNSLGdCQUFVLEVBQUUsRUFBRTtBQUNkLGVBQVMsRUFBRSxFQUFFO0FBQ2IsaUJBQVcsRUFBRSxLQUFLO0FBQ2xCLFNBQUcsRUFBRSxJQUFJO0tBQ1YsQ0FBQztHQUNIOztBQUVELGFBQVcsRUFBRSxZQUFXO0FBQ3RCLFFBQUksQ0FBQyxXQUFXLEdBQUc7QUFDakIsVUFBSSxFQUFFLFFBQVE7QUFDZCxVQUFJLEVBQUUsRUFBRTtBQUNSLGdCQUFVLEVBQUUsRUFBRTtBQUNkLGVBQVMsRUFBRSxFQUFFO0FBQ2IsaUJBQVcsRUFBRSxLQUFLO0FBQ2xCLFNBQUcsRUFBRSxJQUFJO0tBQ1YsQ0FBQztHQUNIOztBQUVELFdBQVMsRUFBRSxZQUFXO3FCQUN1QixJQUFJLENBQUMsU0FBUztRQUFuRCxPQUFPLGNBQVAsT0FBTztRQUFFLFNBQVMsY0FBVCxTQUFTO1FBQUUsSUFBSSxjQUFKLElBQUk7UUFBRSxNQUFNLGNBQU4sTUFBTTs7QUFFdEMsUUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUMzQixPQUFHLENBQUMsR0FBRyxHQUFHLG1CQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzs7QUFFbEQsUUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtBQUMzQixVQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7O0FBRXRCLFVBQUksbUNBQVEsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO0FBQ3ZELFlBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDekI7S0FDRixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDaEMsVUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMxQjtHQUNGOztBQUVELGdCQUFjLEVBQUUsWUFBVzt1QkFDYSxJQUFJLENBQUMsV0FBVztRQUFoRCxJQUFJLGdCQUFKLElBQUk7UUFBRSxVQUFVLGdCQUFWLFVBQVU7UUFBRSxTQUFTLGdCQUFULFNBQVM7O0FBRWpDLFFBQUksR0FBRyxHQUFHLG1CQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2xFLFFBQUksT0FBTyxHQUFHLG1CQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDOUQsUUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDakM7O0FBRUQsY0FBWSxFQUFFLFVBQVMsTUFBTSxFQUFFO0FBQzdCLFFBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7O0FBRTNCLFFBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdEMsUUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ25DLFFBQUksMEJBQTBCLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsS0FBSyxJQUFJLEFBQUMsQ0FBQzs7QUFFcEYsa0JBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDOztBQUVyQyxXQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDM0MsV0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDOztBQUUvQyxRQUFJLDBCQUEwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ2pFLHlCQUFZLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUM5QixNQUFNO0FBQ0wsVUFBSSxPQUFPLEdBQUcsbUJBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyx1Q0FBMEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLFVBQUksU0FBUyxHQUFHLG1CQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRix5QkFBWSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7S0FDaEM7R0FDRjs7QUFFRCxzQkFBb0IsRUFBRSxZQUFXO0FBQy9CLFFBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztHQUNyQzs7OztBQUlELGlCQUFlLEVBQUUsVUFBUyxJQUFJLEVBQUU7QUFDOUIsUUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO0dBQy9COzs7O0FBSUQsZ0JBQWMsRUFBRSxZQUFXO0FBQ3pCLFFBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDM0IsUUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUN4QixZQUFNLElBQUksS0FBSyxDQUNkLHNFQUNRLEdBQUcsQ0FBQyxJQUFJLG1CQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFJLENBQ3ZELENBQUM7S0FDSDs7QUFFRCxRQUFJLENBQUMsZ0JBQWdCLEdBQUc7QUFDdEIsVUFBSSxFQUFFLEVBQUU7QUFDUixXQUFLLEVBQUUsRUFBRTtBQUNULGNBQVEsRUFBRSxLQUFLO0FBQ2YsZUFBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQztHQUNIOztBQUVELHVCQUFxQixFQUFFLFVBQVMsSUFBSSxFQUFFO0FBQ3BDLFFBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO0dBQ3BDOztBQUVELHFCQUFtQixFQUFFLFVBQVMsUUFBUSxFQUFFO0FBQ3RDLFFBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0dBQzNDOztBQUVELHdCQUFzQixFQUFFLFVBQVMsSUFBSSxFQUFFO0FBQ3JDLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7O0FBRXhDLFFBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7QUFDL0MsV0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0tBQ2pDLE1BQU07QUFDTCxXQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xCO0dBQ0Y7O0FBRUQsc0JBQW9CLEVBQUUsWUFBVzs0QkFDWSxJQUFJLENBQUMsZ0JBQWdCO1FBQTFELElBQUkscUJBQUosSUFBSTtRQUFFLEtBQUsscUJBQUwsS0FBSztRQUFFLFFBQVEscUJBQVIsUUFBUTtRQUFFLFNBQVMscUJBQVQsU0FBUzs7QUFDdEMsUUFBSSxLQUFLLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFcEYsUUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztHQUN2RDtDQUNGOztBQUVELFNBQVMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0FBQ2hFLE1BQUksU0FBUyxFQUFFO0FBQ2IsUUFBSSxRQUFRLEVBQUU7QUFDWixhQUFPLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3pDLE1BQU07QUFDTCxVQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3RCLGVBQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO09BQ2pCLE1BQU07QUFDTCxjQUFNLElBQUksS0FBSyxDQUNiLG1IQUNrRCw0REFDSSxJQUFJLE9BQUcsQ0FDOUQsQ0FBQztPQUNIO0tBQ0Y7R0FDRixNQUFNO0FBQ0wsV0FBTyxtQkFBRSxJQUFJLENBQUMsQUFBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7R0FDbkQ7Q0FDRjs7QUFFRCxTQUFTLHlCQUF5QixDQUFDLEtBQUssRUFBRTtBQUN4QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxRQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXBCLFFBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO0FBQzVCLFdBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0IsTUFBTTtBQUNMLFVBQUksSUFBSSxDQUFDLElBQUksS0FBSyxtQkFBbUIsRUFBRTtBQUNyQyxhQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQWUsSUFBSSxDQUFDLENBQUM7T0FDakMsTUFBTTtBQUNMLGNBQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO09BQzdFO0tBQ0Y7R0FDRjs7QUFFRCxTQUFPLG1CQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUN4Qjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtBQUNqRCxNQUFJLEtBQUssQ0FBQzs7QUFFVixNQUFJLG1DQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTs7OztBQUlyQyxTQUFLLEdBQUcsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsd0NBQXdDLENBQUM7R0FDL0YsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQ3BDLFNBQUssR0FBRyxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLENBQUM7R0FDMUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRTtBQUNuQyxTQUFLLEdBQUcsY0FBYyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdDQUFnQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUN2RyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0dBQ3ZDOztBQUVELE1BQUksS0FBSyxFQUFFO0FBQUUsVUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUFFO0NBQ3ZDOztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO0FBQzdCLFNBQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7Q0FDaEUiLCJmaWxlIjoiaHRtbGJhcnMtc3ludGF4L3BhcnNlci90b2tlbml6ZXItZXZlbnQtaGFuZGxlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdm9pZE1hcCBmcm9tICcuLi8uLi9odG1sYmFycy11dGlsL3ZvaWQtdGFnLW5hbWVzJztcbmltcG9ydCBiIGZyb20gXCIuLi9idWlsZGVyc1wiO1xuaW1wb3J0IHsgYXBwZW5kQ2hpbGQsIHBhcnNlQ29tcG9uZW50QmxvY2tQYXJhbXMsIHVud3JhcE11c3RhY2hlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBudWxsO1xuICB9LFxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSBiLmNvbW1lbnQoXCJcIik7XG4gIH0sXG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudE5vZGUudmFsdWUgKz0gY2hhcjtcbiAgfSxcblxuICBmaW5pc2hDb21tZW50OiBmdW5jdGlvbigpIHtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuY3VycmVudE5vZGUpO1xuICB9LFxuXG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jdXJyZW50Tm9kZSA9IGIudGV4dCgpO1xuICB9LFxuXG4gIGFwcGVuZFRvRGF0YTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudE5vZGUuY2hhcnMgKz0gY2hhcjtcbiAgfSxcblxuICBmaW5pc2hEYXRhOiBmdW5jdGlvbigpIHtcbiAgICBhcHBlbmRDaGlsZCh0aGlzLmN1cnJlbnRFbGVtZW50KCksIHRoaXMuY3VycmVudE5vZGUpO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBiYXNpY1xuXG4gIGJlZ2luU3RhcnRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnU3RhcnRUYWcnLFxuICAgICAgbmFtZTogXCJcIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgbW9kaWZpZXJzOiBbXSxcbiAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgIGxvYzogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgYmVnaW5FbmRUYWc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY3VycmVudE5vZGUgPSB7XG4gICAgICB0eXBlOiAnRW5kVGFnJyxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgIG1vZGlmaWVyczogW10sXG4gICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICBsb2M6IG51bGxcbiAgICB9O1xuICB9LFxuXG4gIGZpbmlzaFRhZzogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHsgdGFnTGluZSwgdGFnQ29sdW1uLCBsaW5lLCBjb2x1bW4gfSA9IHRoaXMudG9rZW5pemVyO1xuXG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgdGFnLmxvYyA9IGIubG9jKHRhZ0xpbmUsIHRhZ0NvbHVtbiwgbGluZSwgY29sdW1uKTtcbiAgICBcbiAgICBpZiAodGFnLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRoaXMuZmluaXNoU3RhcnRUYWcoKTtcblxuICAgICAgaWYgKHZvaWRNYXAuaGFzT3duUHJvcGVydHkodGFnLm5hbWUpIHx8IHRhZy5zZWxmQ2xvc2luZykge1xuICAgICAgICB0aGlzLmZpbmlzaEVuZFRhZyh0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRhZy50eXBlID09PSAnRW5kVGFnJykge1xuICAgICAgdGhpcy5maW5pc2hFbmRUYWcoZmFsc2UpO1xuICAgIH1cbiAgfSxcblxuICBmaW5pc2hTdGFydFRhZzogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHsgbmFtZSwgYXR0cmlidXRlcywgbW9kaWZpZXJzIH0gPSB0aGlzLmN1cnJlbnROb2RlO1xuXG4gICAgbGV0IGxvYyA9IGIubG9jKHRoaXMudG9rZW5pemVyLnRhZ0xpbmUsIHRoaXMudG9rZW5pemVyLnRhZ0NvbHVtbik7XG4gICAgbGV0IGVsZW1lbnQgPSBiLmVsZW1lbnQobmFtZSwgYXR0cmlidXRlcywgbW9kaWZpZXJzLCBbXSwgbG9jKTtcbiAgICB0aGlzLmVsZW1lbnRTdGFjay5wdXNoKGVsZW1lbnQpO1xuICB9LFxuXG4gIGZpbmlzaEVuZFRhZzogZnVuY3Rpb24oaXNWb2lkKSB7XG4gICAgbGV0IHRhZyA9IHRoaXMuY3VycmVudE5vZGU7XG5cbiAgICBsZXQgZWxlbWVudCA9IHRoaXMuZWxlbWVudFN0YWNrLnBvcCgpO1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLmN1cnJlbnRFbGVtZW50KCk7XG4gICAgbGV0IGRpc2FibGVDb21wb25lbnRHZW5lcmF0aW9uID0gKHRoaXMub3B0aW9ucy5kaXNhYmxlQ29tcG9uZW50R2VuZXJhdGlvbiA9PT0gdHJ1ZSk7XG5cbiAgICB2YWxpZGF0ZUVuZFRhZyh0YWcsIGVsZW1lbnQsIGlzVm9pZCk7XG5cbiAgICBlbGVtZW50LmxvYy5lbmQubGluZSA9IHRoaXMudG9rZW5pemVyLmxpbmU7XG4gICAgZWxlbWVudC5sb2MuZW5kLmNvbHVtbiA9IHRoaXMudG9rZW5pemVyLmNvbHVtbjtcblxuICAgIGlmIChkaXNhYmxlQ29tcG9uZW50R2VuZXJhdGlvbiB8fCBlbGVtZW50LnRhZy5pbmRleE9mKFwiLVwiKSA9PT0gLTEpIHtcbiAgICAgIGFwcGVuZENoaWxkKHBhcmVudCwgZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwcm9ncmFtID0gYi5wcm9ncmFtKGVsZW1lbnQuY2hpbGRyZW4pO1xuICAgICAgcGFyc2VDb21wb25lbnRCbG9ja1BhcmFtcyhlbGVtZW50LCBwcm9ncmFtKTtcbiAgICAgIGxldCBjb21wb25lbnQgPSBiLmNvbXBvbmVudChlbGVtZW50LnRhZywgZWxlbWVudC5hdHRyaWJ1dGVzLCBwcm9ncmFtLCBlbGVtZW50LmxvYyk7XG4gICAgICBhcHBlbmRDaGlsZChwYXJlbnQsIGNvbXBvbmVudCk7XG4gICAgfVxuICB9LFxuXG4gIG1hcmtUYWdBc1NlbGZDbG9zaW5nOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmN1cnJlbnROb2RlLnNlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgfSxcblxuICAvLyBUYWdzIC0gbmFtZVxuXG4gIGFwcGVuZFRvVGFnTmFtZTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuY3VycmVudE5vZGUubmFtZSArPSBjaGFyO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBhdHRyaWJ1dGVzXG5cbiAgYmVnaW5BdHRyaWJ1dGU6IGZ1bmN0aW9uKCkge1xuICAgIGxldCB0YWcgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgIGlmICh0YWcudHlwZSA9PT0gJ0VuZFRhZycpIHtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIGVuZCB0YWc6IGNsb3NpbmcgdGFnIG11c3Qgbm90IGhhdmUgYXR0cmlidXRlcywgYCArXG4gICAgICAgIGBpbiBcXGAke3RhZy5uYW1lfVxcYCAob24gbGluZSAke3RoaXMudG9rZW5pemVyLmxpbmV9KS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEF0dHJpYnV0ZSA9IHtcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBwYXJ0czogW10sXG4gICAgICBpc1F1b3RlZDogZmFsc2UsXG4gICAgICBpc0R5bmFtaWM6IGZhbHNlXG4gICAgfTtcbiAgfSxcblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLmN1cnJlbnRBdHRyaWJ1dGUubmFtZSArPSBjaGFyO1xuICB9LFxuXG4gIGJlZ2luQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKGlzUXVvdGVkKSB7XG4gICAgdGhpcy5jdXJyZW50QXR0cmlidXRlLmlzUXVvdGVkID0gaXNRdW90ZWQ7XG4gIH0sXG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oY2hhcikge1xuICAgIGxldCBwYXJ0cyA9IHRoaXMuY3VycmVudEF0dHJpYnV0ZS5wYXJ0cztcblxuICAgIGlmICh0eXBlb2YgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSArPSBjaGFyO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKGNoYXIpO1xuICAgIH1cbiAgfSxcblxuICBmaW5pc2hBdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHsgbmFtZSwgcGFydHMsIGlzUXVvdGVkLCBpc0R5bmFtaWMgfSA9IHRoaXMuY3VycmVudEF0dHJpYnV0ZTtcbiAgICBsZXQgdmFsdWUgPSBhc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCB0aGlzLnRva2VuaXplci5saW5lKTtcblxuICAgIHRoaXMuY3VycmVudE5vZGUuYXR0cmlidXRlcy5wdXNoKGIuYXR0cihuYW1lLCB2YWx1ZSkpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhc3NlbWJsZUF0dHJpYnV0ZVZhbHVlKHBhcnRzLCBpc1F1b3RlZCwgaXNEeW5hbWljLCBsaW5lKSB7XG4gIGlmIChpc0R5bmFtaWMpIHtcbiAgICBpZiAoaXNRdW90ZWQpIHtcbiAgICAgIHJldHVybiBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcGFydHNbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEFuIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgbXVzdGFjaGUsIGAgK1xuICAgICAgICAgIGBwcmVjZWVkZWQgYnkgd2hpdGVzcGFjZSBvciBhICc9JyBjaGFyYWN0ZXIsIGFuZCBgICtcbiAgICAgICAgICBgZm9sbG93ZWQgYnkgd2hpdGVzcGFjZSBvciBhICc+JyBjaGFyYWN0ZXIgKG9uIGxpbmUgJHtsaW5lfSlgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiLnRleHQoKHBhcnRzLmxlbmd0aCA+IDApID8gcGFydHNbMF0gOiBcIlwiKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlbWJsZUNvbmNhdGVuYXRlZFZhbHVlKHBhcnRzKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgcGFydCA9IHBhcnRzW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgcGFydHNbaV0gPSBiLnN0cmluZyhwYXJ0c1tpXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgcGFydHNbaV0gPSB1bndyYXBNdXN0YWNoZShwYXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIG5vZGUgaW4gcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZTogXCIgKyBwYXJ0LnR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBiLmNvbmNhdChwYXJ0cyk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRW5kVGFnKHRhZywgZWxlbWVudCwgc2VsZkNsb3NpbmcpIHtcbiAgdmFyIGVycm9yO1xuXG4gIGlmICh2b2lkTWFwW3RhZy5uYW1lXSAmJiAhc2VsZkNsb3NpbmcpIHtcbiAgICAvLyBFbmdUYWcgaXMgYWxzbyBjYWxsZWQgYnkgU3RhcnRUYWcgZm9yIHZvaWQgYW5kIHNlbGYtY2xvc2luZyB0YWdzIChpLmUuXG4gICAgLy8gPGlucHV0PiBvciA8YnIgLz4sIHNvIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgaGVyZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZFxuICAgIC8vIHRocm93IGFuIGVycm9yIGZvciB0aG9zZSBjYXNlcy5cbiAgICBlcnJvciA9IFwiSW52YWxpZCBlbmQgdGFnIFwiICsgZm9ybWF0RW5kVGFnSW5mbyh0YWcpICsgXCIgKHZvaWQgZWxlbWVudHMgY2Fubm90IGhhdmUgZW5kIHRhZ3MpLlwiO1xuICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnID09PSB1bmRlZmluZWQpIHtcbiAgICBlcnJvciA9IFwiQ2xvc2luZyB0YWcgXCIgKyBmb3JtYXRFbmRUYWdJbmZvKHRhZykgKyBcIiB3aXRob3V0IGFuIG9wZW4gdGFnLlwiO1xuICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnICE9PSB0YWcubmFtZSkge1xuICAgIGVycm9yID0gXCJDbG9zaW5nIHRhZyBcIiArIGZvcm1hdEVuZFRhZ0luZm8odGFnKSArIFwiIGRpZCBub3QgbWF0Y2ggbGFzdCBvcGVuIHRhZyBgXCIgKyBlbGVtZW50LnRhZyArIFwiYCAob24gbGluZSBcIiArXG4gICAgICAgICAgICBlbGVtZW50LmxvYy5zdGFydC5saW5lICsgXCIpLlwiO1xuICB9XG5cbiAgaWYgKGVycm9yKSB7IHRocm93IG5ldyBFcnJvcihlcnJvcik7IH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0RW5kVGFnSW5mbyh0YWcpIHtcbiAgcmV0dXJuIFwiYFwiICsgdGFnLm5hbWUgKyBcImAgKG9uIGxpbmUgXCIgKyB0YWcubG9jLmVuZC5saW5lICsgXCIpXCI7XG59XG4iXX0=

@@ -155,2 +155,2 @@ exports.__esModule = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC90cmF2ZXJzYWwvdHJhdmVyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtrQkFxR3dCLFFBQVE7Ozs7O2dDQXJHUix1QkFBdUI7Ozs7c0JBS3hDLFVBQVU7O0FBRWpCLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDaEMsTUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hELE1BQUksTUFBTSxZQUFBLENBQUM7O0FBRVgsTUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QixVQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0dBQ3pDOztBQUVELE1BQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtBQUN4QixRQUFJLElBQUksR0FBRywyQkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRWxDLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLGNBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQzs7QUFFRCxRQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQzNCLFlBQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDeEM7R0FDRjs7QUFFRCxTQUFPLE1BQU0sQ0FBQztDQUNmOztBQUVELFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtBQUM3QyxNQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7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LFFBQVEsRUFBRTtBQUNsQywwQkFBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3BCLG1CQUFLLEVBQUUsQUFBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssVUFBVSxHQUFJLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSTtBQUN6RSxrQkFBSSxFQUFFLEFBQUMsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVUsR0FBSSxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUk7YUFDdkUsQ0FBQztXQUNILE1BQU0sSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDM0MsMEJBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRztBQUNwQixtQkFBSyxFQUFFLFVBQVU7QUFDakIsa0JBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQztXQUNIO1NBQ0Y7T0FDRjs7QUFFRCx1QkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4QixhQUFLLEVBQUUsQUFBQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxHQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSTtBQUNuRSxZQUFJLEVBQUUsQUFBQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxHQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSTtBQUNoRSxZQUFJLEVBQUUsY0FBYztPQUNyQixDQUFDO0tBQ0gsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUN4Qyx1QkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4QixhQUFLLEVBQUUsT0FBTztBQUNkLFlBQUksRUFBRSxJQUFJO0FBQ1YsWUFBSSxFQUFFLGNBQWM7T0FDckIsQ0FBQztLQUNIO0dBQ0Y7O0FBRUQsU0FBTyxpQkFBaUIsQ0FBQztDQUMxQiIsImZpbGUiOiJodG1sYmFycy1zeW50YXgvdHJhdmVyc2FsL3RyYXZlcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZpc2l0b3JLZXlzIGZyb20gJy4uL3R5cGVzL3Zpc2l0b3Ita2V5cyc7XG5pbXBvcnQge1xuICBjYW5ub3RSZW1vdmVOb2RlLFxuICBjYW5ub3RSZXBsYWNlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0XG59IGZyb20gJy4vZXJyb3JzJztcblxuZnVuY3Rpb24gdmlzaXROb2RlKHZpc2l0b3IsIG5vZGUpIHtcbiAgbGV0IGhhbmRsZXIgPSB2aXNpdG9yW25vZGUudHlwZV0gfHwgdmlzaXRvci5BbGw7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5lbnRlcikge1xuICAgIHJlc3VsdCA9IGhhbmRsZXIuZW50ZXIuY2FsbChudWxsLCBub2RlKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBrZXlzID0gdmlzaXRvcktleXNbbm9kZS50eXBlXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmlzaXRLZXkodmlzaXRvciwgaGFuZGxlciwgbm9kZSwga2V5c1tpXSk7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5leGl0KSB7XG4gICAgICByZXN1bHQgPSBoYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB2aXNpdEtleSh2aXNpdG9yLCBoYW5kbGVyLCBub2RlLCBrZXkpIHtcbiAgbGV0IHZhbHVlID0gbm9kZVtrZXldO1xuICBpZiAoIXZhbHVlKSB7IHJldHVybjsgfVxuXG4gIGxldCBrZXlIYW5kbGVyID0gaGFuZGxlciAmJiAoaGFuZGxlci5rZXlzW2tleV0gfHwgaGFuZGxlci5rZXlzLkFsbCk7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKGtleUhhbmRsZXIgJiYga2V5SGFuZGxlci5lbnRlcikge1xuICAgIHJlc3VsdCA9IGtleUhhbmRsZXIuZW50ZXIuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmlzaXRBcnJheSh2aXNpdG9yLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdCA9IHZpc2l0Tm9kZSh2aXNpdG9yLCB2YWx1ZSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NpZ25LZXkobm9kZSwga2V5LCByZXN1bHQpOyBcbiAgICB9XG4gIH1cblxuICBpZiAoa2V5SGFuZGxlciAmJiBrZXlIYW5kbGVyLmV4aXQpIHtcbiAgICByZXN1bHQgPSBrZXlIYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZpc2l0QXJyYXkodmlzaXRvciwgYXJyYXkpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGxldCByZXN1bHQgPSB2aXNpdE5vZGUodmlzaXRvciwgYXJyYXlbaV0pO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaSArPSBzcGxpY2VBcnJheShhcnJheSwgaSwgcmVzdWx0KSAtIDE7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbktleShub2RlLCBrZXksIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgY2Fubm90UmVtb3ZlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5vZGVba2V5XSA9IHJlc3VsdFswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgY2Fubm90UmVtb3ZlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBjYW5ub3RSZXBsYWNlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5vZGVba2V5XSA9IHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzcGxpY2VBcnJheShhcnJheSwgaW5kZXgsIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEsIC4uLnJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxLCByZXN1bHQpO1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYXZlcnNlKG5vZGUsIHZpc2l0b3IpIHtcbiAgdmlzaXROb2RlKG5vcm1hbGl6ZVZpc2l0b3IodmlzaXRvciksIG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVmlzaXRvcih2aXNpdG9yKSB7XG4gIGxldCBub3JtYWxpemVkVmlzaXRvciA9IHt9O1xuXG4gIGZvciAobGV0IHR5cGUgaW4gdmlzaXRvcikge1xuICAgIGxldCBoYW5kbGVyID0gdmlzaXRvclt0eXBlXSB8fCB2aXNpdG9yLkFsbDtcbiAgICBsZXQgbm9ybWFsaXplZEtleXMgPSB7fTtcblxuICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGxldCBrZXlzID0gaGFuZGxlci5rZXlzO1xuICAgICAgaWYgKGtleXMpIHtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGtleXMpIHtcbiAgICAgICAgICBsZXQga2V5SGFuZGxlciA9IGtleXNba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIGtleUhhbmRsZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkS2V5c1trZXldID0ge1xuICAgICAgICAgICAgICBlbnRlcjogKHR5cGVvZiBrZXlIYW5kbGVyLmVudGVyID09PSAnZnVuY3Rpb24nKSA/IGtleUhhbmRsZXIuZW50ZXIgOiBudWxsLFxuICAgICAgICAgICAgICBleGl0OiAodHlwZW9mIGtleUhhbmRsZXIuZXhpdCA9PT0gJ2Z1bmN0aW9uJykgPyBrZXlIYW5kbGVyLmV4aXQgOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleUhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRLZXlzW2tleV0gPSB7XG4gICAgICAgICAgICAgIGVudGVyOiBrZXlIYW5kbGVyLFxuICAgICAgICAgICAgICBleGl0OiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBub3JtYWxpemVkVmlzaXRvclt0eXBlXSA9IHtcbiAgICAgICAgZW50ZXI6ICh0eXBlb2YgaGFuZGxlci5lbnRlciA9PT0gJ2Z1bmN0aW9uJykgPyBoYW5kbGVyLmVudGVyIDogbnVsbCxcbiAgICAgICAgZXhpdDogKHR5cGVvZiBoYW5kbGVyLmV4aXQgPT09ICdmdW5jdGlvbicpID8gaGFuZGxlci5leGl0IDogbnVsbCxcbiAgICAgICAga2V5czogbm9ybWFsaXplZEtleXNcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbm9ybWFsaXplZFZpc2l0b3JbdHlwZV0gPSB7XG4gICAgICAgIGVudGVyOiBoYW5kbGVyLFxuICAgICAgICBleGl0OiBudWxsLFxuICAgICAgICBrZXlzOiBub3JtYWxpemVkS2V5c1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZFZpc2l0b3I7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC90cmF2ZXJzYWwvdHJhdmVyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtrQkFxR3dCLFFBQVE7Ozs7O2dDQXJHUix1QkFBdUI7Ozs7c0JBS3hDLFVBQVU7O0FBRWpCLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDaEMsTUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hELE1BQUksTUFBTSxZQUFBLENBQUM7O0FBRVgsTUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtBQUM1QixVQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0dBQ3pDOztBQUVELE1BQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtBQUN4QixRQUFJLElBQUksR0FBRywyQkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRWxDLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3BDLGNBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzQzs7QUFFRCxRQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQzNCLFlBQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDeEM7R0FDRjs7QUFFRCxTQUFPLE1BQU0sQ0FBQztDQUNmOztBQUVELFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtBQUM3QyxNQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7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QUFBQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEtBQUssVUFBVSxHQUFJLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSTtBQUN6RSxrQkFBSSxFQUFFLEFBQUMsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVUsR0FBSSxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUk7YUFDdkUsQ0FBQztXQUNILE1BQU0sSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDM0MsMEJBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRztBQUNwQixtQkFBSyxFQUFFLFVBQVU7QUFDakIsa0JBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQztXQUNIO1NBQ0Y7T0FDRjs7QUFFRCx1QkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4QixhQUFLLEVBQUUsQUFBQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssVUFBVSxHQUFJLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSTtBQUNuRSxZQUFJLEVBQUUsQUFBQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxHQUFJLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSTtBQUNoRSxZQUFJLEVBQUUsY0FBYztPQUNyQixDQUFDO0tBQ0gsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtBQUN4Qyx1QkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRztBQUN4QixhQUFLLEVBQUUsT0FBTztBQUNkLFlBQUksRUFBRSxJQUFJO0FBQ1YsWUFBSSxFQUFFLGNBQWM7T0FDckIsQ0FBQztLQUNIO0dBQ0Y7O0FBRUQsU0FBTyxpQkFBaUIsQ0FBQztDQUMxQiIsImZpbGUiOiJodG1sYmFycy1zeW50YXgvdHJhdmVyc2FsL3RyYXZlcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZpc2l0b3JLZXlzIGZyb20gJy4uL3R5cGVzL3Zpc2l0b3Ita2V5cyc7XG5pbXBvcnQge1xuICBjYW5ub3RSZW1vdmVOb2RlLFxuICBjYW5ub3RSZXBsYWNlTm9kZSxcbiAgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0XG59IGZyb20gJy4vZXJyb3JzJztcblxuZnVuY3Rpb24gdmlzaXROb2RlKHZpc2l0b3IsIG5vZGUpIHtcbiAgbGV0IGhhbmRsZXIgPSB2aXNpdG9yW25vZGUudHlwZV0gfHwgdmlzaXRvci5BbGw7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5lbnRlcikge1xuICAgIHJlc3VsdCA9IGhhbmRsZXIuZW50ZXIuY2FsbChudWxsLCBub2RlKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBrZXlzID0gdmlzaXRvcktleXNbbm9kZS50eXBlXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmlzaXRLZXkodmlzaXRvciwgaGFuZGxlciwgbm9kZSwga2V5c1tpXSk7XG4gICAgfVxuXG4gICAgaWYgKGhhbmRsZXIgJiYgaGFuZGxlci5leGl0KSB7XG4gICAgICByZXN1bHQgPSBoYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB2aXNpdEtleSh2aXNpdG9yLCBoYW5kbGVyLCBub2RlLCBrZXkpIHtcbiAgbGV0IHZhbHVlID0gbm9kZVtrZXldO1xuICBpZiAoIXZhbHVlKSB7IHJldHVybjsgfVxuXG4gIGxldCBrZXlIYW5kbGVyID0gaGFuZGxlciAmJiAoaGFuZGxlci5rZXlzW2tleV0gfHwgaGFuZGxlci5rZXlzLkFsbCk7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKGtleUhhbmRsZXIgJiYga2V5SGFuZGxlci5lbnRlcikge1xuICAgIHJlc3VsdCA9IGtleUhhbmRsZXIuZW50ZXIuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmlzaXRBcnJheSh2aXNpdG9yLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdCA9IHZpc2l0Tm9kZSh2aXNpdG9yLCB2YWx1ZSk7XG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NpZ25LZXkobm9kZSwga2V5LCByZXN1bHQpOyBcbiAgICB9XG4gIH1cblxuICBpZiAoa2V5SGFuZGxlciAmJiBrZXlIYW5kbGVyLmV4aXQpIHtcbiAgICByZXN1bHQgPSBrZXlIYW5kbGVyLmV4aXQuY2FsbChudWxsLCBub2RlLCBrZXkpO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgY2Fubm90UmVwbGFjZU9yUmVtb3ZlSW5LZXlIYW5kbGVyWWV0KG5vZGUsIGtleSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZpc2l0QXJyYXkodmlzaXRvciwgYXJyYXkpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGxldCByZXN1bHQgPSB2aXNpdE5vZGUodmlzaXRvciwgYXJyYXlbaV0pO1xuICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaSArPSBzcGxpY2VBcnJheShhcnJheSwgaSwgcmVzdWx0KSAtIDE7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2lnbktleShub2RlLCBrZXksIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgY2Fubm90UmVtb3ZlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgIG5vZGVba2V5XSA9IHJlc3VsdFswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgY2Fubm90UmVtb3ZlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBjYW5ub3RSZXBsYWNlTm9kZShub2RlW2tleV0sIG5vZGUsIGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5vZGVba2V5XSA9IHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzcGxpY2VBcnJheShhcnJheSwgaW5kZXgsIHJlc3VsdCkge1xuICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEsIC4uLnJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7XG4gIH0gZWxzZSB7XG4gICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxLCByZXN1bHQpO1xuICAgIHJldHVybiAxO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYXZlcnNlKG5vZGUsIHZpc2l0b3IpIHtcbiAgdmlzaXROb2RlKG5vcm1hbGl6ZVZpc2l0b3IodmlzaXRvciksIG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVmlzaXRvcih2aXNpdG9yKSB7XG4gIGxldCBub3JtYWxpemVkVmlzaXRvciA9IHt9O1xuXG4gIGZvciAobGV0IHR5cGUgaW4gdmlzaXRvcikge1xuICAgIGxldCBoYW5kbGVyID0gdmlzaXRvclt0eXBlXSB8fCB2aXNpdG9yLkFsbDtcbiAgICBsZXQgbm9ybWFsaXplZEtleXMgPSB7fTtcblxuICAgIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGxldCBrZXlzID0gaGFuZGxlci5rZXlzO1xuICAgICAgaWYgKGtleXMpIHtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIGtleXMpIHtcbiAgICAgICAgICBsZXQga2V5SGFuZGxlciA9IGtleXNba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIGtleUhhbmRsZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkS2V5c1trZXldID0ge1xuICAgICAgICAgICAgICBlbnRlcjogKHR5cGVvZiBrZXlIYW5kbGVyLmVudGVyID09PSAnZnVuY3Rpb24nKSA/IGtleUhhbmRsZXIuZW50ZXIgOiBudWxsLFxuICAgICAgICAgICAgICBleGl0OiAodHlwZW9mIGtleUhhbmRsZXIuZXhpdCA9PT0gJ2Z1bmN0aW9uJykgPyBrZXlIYW5kbGVyLmV4aXQgOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleUhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRLZXlzW2tleV0gPSB7XG4gICAgICAgICAgICAgIGVudGVyOiBrZXlIYW5kbGVyLFxuICAgICAgICAgICAgICBleGl0OiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBub3JtYWxpemVkVmlzaXRvclt0eXBlXSA9IHtcbiAgICAgICAgZW50ZXI6ICh0eXBlb2YgaGFuZGxlci5lbnRlciA9PT0gJ2Z1bmN0aW9uJykgPyBoYW5kbGVyLmVudGVyIDogbnVsbCxcbiAgICAgICAgZXhpdDogKHR5cGVvZiBoYW5kbGVyLmV4aXQgPT09ICdmdW5jdGlvbicpID8gaGFuZGxlci5leGl0IDogbnVsbCxcbiAgICAgICAga2V5czogbm9ybWFsaXplZEtleXNcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbm9ybWFsaXplZFZpc2l0b3JbdHlwZV0gPSB7XG4gICAgICAgIGVudGVyOiBoYW5kbGVyLFxuICAgICAgICBleGl0OiBudWxsLFxuICAgICAgICBrZXlzOiBub3JtYWxpemVkS2V5c1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZFZpc2l0b3I7XG59XG4iXX0=

@@ -80,2 +80,2 @@ exports.__esModule = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXN5bnRheC91dGlscy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3NDQUE2Qiw4QkFBOEI7Ozs7O0FBSTNELElBQUksa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7Ozs7OztBQU0vQyxTQUFTLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDMUQsTUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDbEMsTUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDOztBQUVuQixPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLGFBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM1Qzs7QUFFRCxNQUFJLE9BQU8sR0FBRyx3QkFsQlAsWUFBWSxDQWtCUSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRTVDLE1BQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFOztBQUU3RSxRQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxRQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ2xHLFlBQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQzlFOztBQUVELFFBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixTQUFLLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsVUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsVUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO0FBQ2hCLFlBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xDLGdCQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxHQUFHLEtBQUssR0FBRyxVQUFVLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQzNHO0FBQ0QsY0FBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUNwQjtLQUNGOztBQUVELFFBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDdkIsWUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDL0U7O0FBRUQsV0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQsV0FBTyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7R0FDOUI7Q0FDRjs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxJQUFJLEVBQUU7QUFDaEMsTUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtBQUMzQixXQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7R0FDbEI7QUFDRCxNQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztHQUN0QjtDQUNGOztBQUVNLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFDeEMsYUFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUNoQzs7QUFFTSxTQUFTLFFBQVEsQ0FBQyxRQUFRLEVBQUU7QUFDakMsU0FBTyxBQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUNsRCxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEFBQUMsQ0FBQztDQUNyRDs7QUFFTSxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUU7QUFDdkMsTUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdEIsV0FBTyxRQUFRLENBQUM7R0FDakIsTUFBTTtBQUNMLFdBQU8sUUFBUSxDQUFDLElBQUksQ0FBQztHQUN0QjtDQUNGIiwiZmlsZSI6Imh0bWxiYXJzLXN5bnRheC91dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluZGV4T2ZBcnJheSB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG4vLyBSZWdleCB0byB2YWxpZGF0ZSB0aGUgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycy4gXG4vLyBCYXNlZCBvbiB0aGUgSUQgdmFsaWRhdGlvbiByZWdleCBpbiBIYW5kbGViYXJzLlxuXG52YXIgSURfSU5WRVJTRV9QQVRURVJOID0gL1shXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dLztcblxuLy8gQ2hlY2tzIHRoZSBjb21wb25lbnQncyBhdHRyaWJ1dGVzIHRvIHNlZSBpZiBpdCB1c2VzIGJsb2NrIHBhcmFtcy5cbi8vIElmIGl0IGRvZXMsIHJlZ2lzdGVycyB0aGUgYmxvY2sgcGFyYW1zIHdpdGggdGhlIHByb2dyYW0gYW5kXG4vLyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZWxlbWVudC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29tcG9uZW50QmxvY2tQYXJhbXMoZWxlbWVudCwgcHJvZ3JhbSkge1xuICB2YXIgbCA9IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7XG4gIHZhciBhdHRyTmFtZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgIGF0dHJOYW1lcy5wdXNoKGVsZW1lbnQuYXR0cmlidXRlc1tpXS5uYW1lKTtcbiAgfVxuXG4gIHZhciBhc0luZGV4ID0gaW5kZXhPZkFycmF5KGF0dHJOYW1lcywgJ2FzJyk7XG5cbiAgaWYgKGFzSW5kZXggIT09IC0xICYmIGwgPiBhc0luZGV4ICYmIGF0dHJOYW1lc1thc0luZGV4ICsgMV0uY2hhckF0KDApID09PSAnfCcpIHtcbiAgICAvLyBTb21lIGJhc2ljIHZhbGlkYXRpb24sIHNpbmNlIHdlJ3JlIGRvaW5nIHRoZSBwYXJzaW5nIG91cnNlbHZlc1xuICAgIHZhciBwYXJhbXNTdHJpbmcgPSBhdHRyTmFtZXMuc2xpY2UoYXNJbmRleCkuam9pbignICcpO1xuICAgIGlmIChwYXJhbXNTdHJpbmcuY2hhckF0KHBhcmFtc1N0cmluZy5sZW5ndGggLSAxKSAhPT0gJ3wnIHx8IHBhcmFtc1N0cmluZy5tYXRjaCgvXFx8L2cpLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJsb2NrIHBhcmFtZXRlcnMgc3ludGF4OiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSBbXTtcbiAgICBmb3IgKGkgPSBhc0luZGV4ICsgMTsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIHBhcmFtID0gYXR0ck5hbWVzW2ldLnJlcGxhY2UoL1xcfC9nLCAnJyk7XG4gICAgICBpZiAocGFyYW0gIT09ICcnKSB7XG4gICAgICAgIGlmIChJRF9JTlZFUlNFX1BBVFRFUk4udGVzdChwYXJhbSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtICsgJ1xcJyBpbiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIHplcm8gYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICB9XG5cbiAgICBlbGVtZW50LmF0dHJpYnV0ZXMgPSBlbGVtZW50LmF0dHJpYnV0ZXMuc2xpY2UoMCwgYXNJbmRleCk7XG4gICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IHBhcmFtcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRyZW5Gb3Iobm9kZSkge1xuICBpZiAobm9kZS50eXBlID09PSAnUHJvZ3JhbScpIHtcbiAgICByZXR1cm4gbm9kZS5ib2R5O1xuICB9XG4gIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGQocGFyZW50LCBub2RlKSB7XG4gIGNoaWxkcmVuRm9yKHBhcmVudCkucHVzaChub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGVscGVyKG11c3RhY2hlKSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBNdXN0YWNoZShtdXN0YWNoZSkge1xuICBpZiAoaXNIZWxwZXIobXVzdGFjaGUpKSB7XG4gICAgcmV0dXJuIG11c3RhY2hlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtdXN0YWNoZS5wYXRoO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,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QUFJLENBQUMsQ0FBQztDQUNoQzs7QUFFTSxTQUFTLFFBQVEsQ0FBQyxRQUFRLEVBQUU7QUFDakMsU0FBTyxBQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUNsRCxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEFBQUMsQ0FBQztDQUNyRDs7QUFFTSxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUU7QUFDdkMsTUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDdEIsV0FBTyxRQUFRLENBQUM7R0FDakIsTUFBTTtBQUNMLFdBQU8sUUFBUSxDQUFDLElBQUksQ0FBQztHQUN0QjtDQUNGIiwiZmlsZSI6Imh0bWxiYXJzLXN5bnRheC91dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluZGV4T2ZBcnJheSB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL2FycmF5LXV0aWxzXCI7XG4vLyBSZWdleCB0byB2YWxpZGF0ZSB0aGUgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVycy4gXG4vLyBCYXNlZCBvbiB0aGUgSUQgdmFsaWRhdGlvbiByZWdleCBpbiBIYW5kbGViYXJzLlxuXG52YXIgSURfSU5WRVJTRV9QQVRURVJOID0gL1shXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dLztcblxuLy8gQ2hlY2tzIHRoZSBjb21wb25lbnQncyBhdHRyaWJ1dGVzIHRvIHNlZSBpZiBpdCB1c2VzIGJsb2NrIHBhcmFtcy5cbi8vIElmIGl0IGRvZXMsIHJlZ2lzdGVycyB0aGUgYmxvY2sgcGFyYW1zIHdpdGggdGhlIHByb2dyYW0gYW5kXG4vLyByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZWxlbWVudC5cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29tcG9uZW50QmxvY2tQYXJhbXMoZWxlbWVudCwgcHJvZ3JhbSkge1xuICB2YXIgbCA9IGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGg7XG4gIHZhciBhdHRyTmFtZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgIGF0dHJOYW1lcy5wdXNoKGVsZW1lbnQuYXR0cmlidXRlc1tpXS5uYW1lKTtcbiAgfVxuXG4gIHZhciBhc0luZGV4ID0gaW5kZXhPZkFycmF5KGF0dHJOYW1lcywgJ2FzJyk7XG5cbiAgaWYgKGFzSW5kZXggIT09IC0xICYmIGwgPiBhc0luZGV4ICYmIGF0dHJOYW1lc1thc0luZGV4ICsgMV0uY2hhckF0KDApID09PSAnfCcpIHtcbiAgICAvLyBTb21lIGJhc2ljIHZhbGlkYXRpb24sIHNpbmNlIHdlJ3JlIGRvaW5nIHRoZSBwYXJzaW5nIG91cnNlbHZlc1xuICAgIHZhciBwYXJhbXNTdHJpbmcgPSBhdHRyTmFtZXMuc2xpY2UoYXNJbmRleCkuam9pbignICcpO1xuICAgIGlmIChwYXJhbXNTdHJpbmcuY2hhckF0KHBhcmFtc1N0cmluZy5sZW5ndGggLSAxKSAhPT0gJ3wnIHx8IHBhcmFtc1N0cmluZy5tYXRjaCgvXFx8L2cpLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJsb2NrIHBhcmFtZXRlcnMgc3ludGF4OiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSBbXTtcbiAgICBmb3IgKGkgPSBhc0luZGV4ICsgMTsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIHBhcmFtID0gYXR0ck5hbWVzW2ldLnJlcGxhY2UoL1xcfC9nLCAnJyk7XG4gICAgICBpZiAocGFyYW0gIT09ICcnKSB7XG4gICAgICAgIGlmIChJRF9JTlZFUlNFX1BBVFRFUk4udGVzdChwYXJhbSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtICsgJ1xcJyBpbiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIHplcm8gYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICB9XG5cbiAgICBlbGVtZW50LmF0dHJpYnV0ZXMgPSBlbGVtZW50LmF0dHJpYnV0ZXMuc2xpY2UoMCwgYXNJbmRleCk7XG4gICAgcHJvZ3JhbS5ibG9ja1BhcmFtcyA9IHBhcmFtcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRyZW5Gb3Iobm9kZSkge1xuICBpZiAobm9kZS50eXBlID09PSAnUHJvZ3JhbScpIHtcbiAgICByZXR1cm4gbm9kZS5ib2R5O1xuICB9XG4gIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGQocGFyZW50LCBub2RlKSB7XG4gIGNoaWxkcmVuRm9yKHBhcmVudCkucHVzaChub2RlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGVscGVyKG11c3RhY2hlKSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBNdXN0YWNoZShtdXN0YWNoZSkge1xuICBpZiAoaXNIZWxwZXIobXVzdGFjaGUpKSB7XG4gICAgcmV0dXJuIG11c3RhY2hlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtdXN0YWNoZS5wYXRoO1xuICB9XG59XG4iXX0=

@@ -129,2 +129,2 @@ exports.__esModule = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXRlc3QtaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzttQ0FBeUIsMEJBQTBCOztzQ0FDM0IsOEJBQThCOztBQUUvQyxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFO0FBQzdDLE1BQUksVUFBVSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4RCxPQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ25EOztBQUVNLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEMsTUFBSSxRQUFRLENBQUM7QUFDYixNQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2pDLFlBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQUM3QyxXQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNkLGNBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0I7R0FDRixNQUFNO0FBQ0wsWUFBUSxHQUFHLElBQUksQ0FBQztHQUNqQjs7QUFFRCxNQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLEtBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOztBQUUxQyxnQkFBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztDQUMzQjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxjQUFjLEVBQUU7QUFDdEMsTUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxNQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRTtBQUN0QyxPQUFHLENBQUMsU0FB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LENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO0tBQzdELENBQUMsQ0FBQztHQUNKOztBQUVELFNBQU8sVUFBVSxDQUFDO0NBQ25COzs7QUFHRCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELElBQUksa0JBQWtCLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQzs7QUFDekMsU0FBUyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7QUFDMUMsT0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztDQUM5Qzs7O0FBR0QsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEtBQUssU0FBUyxHQUFHLFdBQVcsR0FBRyxhQUFhLENBQUM7O0FBQ2xHLFNBQVMsY0FBYyxDQUFDLEVBQUUsRUFBRTs7QUFFakMsTUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtBQUNyQixXQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7R0FDckIsTUFBTTtBQUNMLFdBQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0dBQ3pCO0NBQ0YiLCJmaWxlIjoiaHRtbGJhcnMtdGVzdC1oZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9rZW5pemUgfSBmcm9tIFwiLi4vc2ltcGxlLWh0bWwtdG9rZW5pemVyXCI7XG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvYXJyYXktdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsSW5uZXJIVE1MKGZyYWdtZW50LCBodG1sKSB7XG4gIHZhciBhY3R1YWxIVE1MID0gbm9ybWFsaXplSW5uZXJIVE1MKGZyYWdtZW50LmlubmVySFRNTCk7XG4gIFFVbml0LnB1c2goYWN0dWFsSFRNTCA9PT0gaHRtbCwgYWN0dWFsSFRNTCwgaHRtbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbEhUTUwobm9kZSwgaHRtbCkge1xuICB2YXIgZnJhZ21lbnQ7XG4gIGlmICghbm9kZS5ub2RlVHlwZSAmJiBub2RlLmxlbmd0aCkge1xuICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIHdoaWxlIChub2RlWzBdKSB7XG4gICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChub2RlWzBdKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZnJhZ21lbnQgPSBub2RlO1xuICB9XG5cbiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGRpdi5hcHBlbmRDaGlsZChmcmFnbWVudC5jbG9uZU5vZGUodHJ1ZSkpO1xuXG4gIGVxdWFsSW5uZXJIVE1MKGRpdiwgaHRtbCk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVG9rZW5zKGZyYWdtZW50T3JIdG1sKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBpZiAodHlwZW9mIGZyYWdtZW50T3JIdG1sID09PSAnc3RyaW5nJykge1xuICAgIGRpdi5pbm5lckhUTUwgPSBmcmFnbWVudE9ySHRtbDtcbiAgfSBlbHNlIHtcbiAgICBkaXYuYXBwZW5kQ2hpbGQoZnJhZ21lbnRPckh0bWwuY2xvbmVOb2RlKHRydWUpKTtcbiAgfVxuXG4gIHJldHVybiB7IHRva2VuczogdG9rZW5pemUoZGl2LmlubmVySFRNTCksIGh0bWw6IGRpdi5pbm5lckhUTUwgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsVG9rZW5zKGZyYWdtZW50LCBodG1sLCBtZXNzYWdlKSB7XG4gIGlmIChmcmFnbWVudC5mcmFnbWVudCkgeyBmcmFnbWVudCA9IGZyYWdtZW50LmZyYWdtZW50OyB9XG4gIGlmIChodG1sLmZyYWdtZW50KSB7IGh0bWwgPSBodG1sLmZyYWdtZW50OyB9XG5cbiAgdmFyIGZyYWdUb2tlbnMgPSBnZW5lcmF0ZVRva2VucyhmcmFnbWVudCk7XG4gIHZhciBodG1sVG9rZW5zID0gZ2VuZXJhdGVUb2tlbnMoaHRtbCk7XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplVG9rZW5zKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRva2VuLmF0dHJpYnV0ZXMgPSB0b2tlbi5hdHRyaWJ1dGVzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgICBpZiAoYVswXSA+IGJbMF0pIHsgcmV0dXJuIDE7IH1cbiAgICAgICAgaWYgKGFbMF0gPCBiWzBdKSB7IHJldHVybiAtMTsgfVxuICAgICAgICByZXR1cm4gMDsgICAgXG4gICAgICB9KTsgICAgXG4gICAgfSAgICBcbiAgfSAgICBcbiAgIFxuICBmb3JFYWNoKGZyYWdUb2tlbnMudG9rZW5zLCBub3JtYWxpemVUb2tlbnMpOyAgIFxuICBmb3JFYWNoKGh0bWxUb2tlbnMudG9rZW5zLCBub3JtYWxpemVUb2tlbnMpOyAgIFxuXG4gIHZhciBtc2cgPSBcIkV4cGVjdGVkOiBcIiArIGh0bWwgKyBcIjsgQWN0dWFsOiBcIiArIGZyYWdUb2tlbnMuaHRtbDtcblxuICBpZiAobWVzc2FnZSkgeyBtc2cgKz0gXCIgKFwiICsgbWVzc2FnZSArIFwiKVwiOyB9XG5cbiAgZGVlcEVxdWFsKGZyYWdUb2tlbnMudG9rZW5zLCBodG1sVG9rZW5zLnRva2VucywgbXNnKTtcbn1cblxuLy8gZGV0ZWN0IHNpZGUtZWZmZWN0cyBvZiBjbG9uaW5nIHN2ZyBlbGVtZW50cyBpbiBJRTktMTFcbnZhciBpZVNWR0lubmVySFRNTCA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICghZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpO1xuICBkaXYuYXBwZW5kQ2hpbGQobm9kZSk7XG4gIHZhciBjbG9uZSA9IGRpdi5jbG9uZU5vZGUodHJ1ZSk7XG4gIHJldHVybiBjbG9uZS5pbm5lckhUTUwgPT09ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAvPic7XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSW5uZXJIVE1MKGFjdHVhbEhUTUwpIHtcbiAgaWYgKGllU1ZHSW5uZXJIVE1MKSB7XG4gICAgLy8gUmVwbGFjZSBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiNTAlXCIgLz5gIHdpdGggYDxzdmcgaGVpZ2h0PVwiNTAlXCI+PC9zdmc+YCwgZXRjLlxuICAgIC8vIGRyb3AgbmFtZXNwYWNlIGF0dHJpYnV0ZVxuICAgIGFjdHVhbEhUTUwgPSBhY3R1YWxIVE1MLnJlcGxhY2UoLyB4bWxucz1cIlteXCJdK1wiLywgJycpO1xuICAgIC8vIHJlcGxhY2Ugc2VsZi1jbG9zaW5nIGVsZW1lbnRzXG4gICAgYWN0dWFsSFRNTCA9IGFjdHVhbEhUTUwucmVwbGFjZSgvPChbXiA+XSspIFteXFwvPl0qXFwvPi9naSwgZnVuY3Rpb24odGFnLCB0YWdOYW1lKSB7XG4gICAgICByZXR1cm4gdGFnLnNsaWNlKDAsIHRhZy5sZW5ndGggLSAzKSArICc+PC8nICsgdGFnTmFtZSArICc+JztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhY3R1YWxIVE1MO1xufVxuXG4vLyBkZXRlY3Qgd2VpcmQgSUU4IGNoZWNrZWQgZWxlbWVudCBzdHJpbmdcbnZhciBjaGVja2VkSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuY2hlY2tlZElucHV0LnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICdjaGVja2VkJyk7XG52YXIgY2hlY2tlZElucHV0U3RyaW5nID0gY2hlY2tlZElucHV0Lm91dGVySFRNTDtcbmV4cG9ydCBmdW5jdGlvbiBpc0NoZWNrZWRJbnB1dEhUTUwoZWxlbWVudCkge1xuICBlcXVhbChlbGVtZW50Lm91dGVySFRNTCwgY2hlY2tlZElucHV0U3RyaW5nKTtcbn1cblxuLy8gY2hlY2sgd2hpY2ggcHJvcGVydHkgaGFzIHRoZSBub2RlJ3MgdGV4dCBjb250ZW50XG52YXIgdGV4dFByb3BlcnR5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykudGV4dENvbnRlbnQgPT09IHVuZGVmaW5lZCA/ICdpbm5lclRleHQnIDogJ3RleHRDb250ZW50JztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29udGVudChlbCkge1xuICAvLyB0ZXh0Tm9kZVxuICBpZiAoZWwubm9kZVR5cGUgPT09IDMpIHtcbiAgICByZXR1cm4gZWwubm9kZVZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBlbFt0ZXh0UHJvcGVydHldO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXRlc3QtaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OzttQ0FBeUIsMEJBQTBCOztzQ0FDM0IsOEJBQThCOztBQUUvQyxTQUFTLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFO0FBQzdDLE1BQUksVUFBVSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4RCxPQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ25EOztBQUVNLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDcEMsTUFBSSxRQUFRLENBQUM7QUFDYixNQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2pDLFlBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQUM3QyxXQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNkLGNBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0I7R0FDRixNQUFNO0FBQ0wsWUFBUSxHQUFHLElBQUksQ0FBQztHQUNqQjs7QUFFRCxNQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLEtBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOztBQUUxQyxnQkFBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztDQUMzQjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxjQUFjLEVBQUU7QUFDdEMsTUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxNQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRTtBQUN0QyxPQUFHLENBQUMsU0FB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TUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO0tBQzdELENBQUMsQ0FBQztHQUNKOztBQUVELFNBQU8sVUFBVSxDQUFDO0NBQ25COzs7QUFHRCxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELElBQUksa0JBQWtCLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQzs7QUFDekMsU0FBUyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7QUFDMUMsT0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztDQUM5Qzs7O0FBR0QsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEtBQUssU0FBUyxHQUFHLFdBQVcsR0FBRyxhQUFhLENBQUM7O0FBQ2xHLFNBQVMsY0FBYyxDQUFDLEVBQUUsRUFBRTs7QUFFakMsTUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtBQUNyQixXQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7R0FDckIsTUFBTTtBQUNMLFdBQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0dBQ3pCO0NBQ0YiLCJmaWxlIjoiaHRtbGJhcnMtdGVzdC1oZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9rZW5pemUgfSBmcm9tIFwiLi4vc2ltcGxlLWh0bWwtdG9rZW5pemVyXCI7XG5pbXBvcnQgeyBmb3JFYWNoIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvYXJyYXktdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsSW5uZXJIVE1MKGZyYWdtZW50LCBodG1sKSB7XG4gIHZhciBhY3R1YWxIVE1MID0gbm9ybWFsaXplSW5uZXJIVE1MKGZyYWdtZW50LmlubmVySFRNTCk7XG4gIFFVbml0LnB1c2goYWN0dWFsSFRNTCA9PT0gaHRtbCwgYWN0dWFsSFRNTCwgaHRtbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbEhUTUwobm9kZSwgaHRtbCkge1xuICB2YXIgZnJhZ21lbnQ7XG4gIGlmICghbm9kZS5ub2RlVHlwZSAmJiBub2RlLmxlbmd0aCkge1xuICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIHdoaWxlIChub2RlWzBdKSB7XG4gICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChub2RlWzBdKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZnJhZ21lbnQgPSBub2RlO1xuICB9XG5cbiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGRpdi5hcHBlbmRDaGlsZChmcmFnbWVudC5jbG9uZU5vZGUodHJ1ZSkpO1xuXG4gIGVxdWFsSW5uZXJIVE1MKGRpdiwgaHRtbCk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVG9rZW5zKGZyYWdtZW50T3JIdG1sKSB7XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICBpZiAodHlwZW9mIGZyYWdtZW50T3JIdG1sID09PSAnc3RyaW5nJykge1xuICAgIGRpdi5pbm5lckhUTUwgPSBmcmFnbWVudE9ySHRtbDtcbiAgfSBlbHNlIHtcbiAgICBkaXYuYXBwZW5kQ2hpbGQoZnJhZ21lbnRPckh0bWwuY2xvbmVOb2RlKHRydWUpKTtcbiAgfVxuXG4gIHJldHVybiB7IHRva2VuczogdG9rZW5pemUoZGl2LmlubmVySFRNTCksIGh0bWw6IGRpdi5pbm5lckhUTUwgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsVG9rZW5zKGZyYWdtZW50LCBodG1sLCBtZXNzYWdlKSB7XG4gIGlmIChmcmFnbWVudC5mcmFnbWVudCkgeyBmcmFnbWVudCA9IGZyYWdtZW50LmZyYWdtZW50OyB9XG4gIGlmIChodG1sLmZyYWdtZW50KSB7IGh0bWwgPSBodG1sLmZyYWdtZW50OyB9XG5cbiAgdmFyIGZyYWdUb2tlbnMgPSBnZW5lcmF0ZVRva2VucyhmcmFnbWVudCk7XG4gIHZhciBodG1sVG9rZW5zID0gZ2VuZXJhdGVUb2tlbnMoaHRtbCk7XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplVG9rZW5zKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdTdGFydFRhZycpIHtcbiAgICAgIHRva2VuLmF0dHJpYnV0ZXMgPSB0b2tlbi5hdHRyaWJ1dGVzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgICBpZiAoYVswXSA+IGJbMF0pIHsgcmV0dXJuIDE7IH1cbiAgICAgICAgaWYgKGFbMF0gPCBiWzBdKSB7IHJldHVybiAtMTsgfVxuICAgICAgICByZXR1cm4gMDsgICAgXG4gICAgICB9KTsgICAgXG4gICAgfSAgICBcbiAgfSAgICBcbiAgIFxuICBmb3JFYWNoKGZyYWdUb2tlbnMudG9rZW5zLCBub3JtYWxpemVUb2tlbnMpOyAgIFxuICBmb3JFYWNoKGh0bWxUb2tlbnMudG9rZW5zLCBub3JtYWxpemVUb2tlbnMpOyAgIFxuXG4gIHZhciBtc2cgPSBcIkV4cGVjdGVkOiBcIiArIGh0bWwgKyBcIjsgQWN0dWFsOiBcIiArIGZyYWdUb2tlbnMuaHRtbDtcblxuICBpZiAobWVzc2FnZSkgeyBtc2cgKz0gXCIgKFwiICsgbWVzc2FnZSArIFwiKVwiOyB9XG5cbiAgZGVlcEVxdWFsKGZyYWdUb2tlbnMudG9rZW5zLCBodG1sVG9rZW5zLnRva2VucywgbXNnKTtcbn1cblxuLy8gZGV0ZWN0IHNpZGUtZWZmZWN0cyBvZiBjbG9uaW5nIHN2ZyBlbGVtZW50cyBpbiBJRTktMTFcbnZhciBpZVNWR0lubmVySFRNTCA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICghZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpO1xuICBkaXYuYXBwZW5kQ2hpbGQobm9kZSk7XG4gIHZhciBjbG9uZSA9IGRpdi5jbG9uZU5vZGUodHJ1ZSk7XG4gIHJldHVybiBjbG9uZS5pbm5lckhUTUwgPT09ICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiAvPic7XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSW5uZXJIVE1MKGFjdHVhbEhUTUwpIHtcbiAgaWYgKGllU1ZHSW5uZXJIVE1MKSB7XG4gICAgLy8gUmVwbGFjZSBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiNTAlXCIgLz5gIHdpdGggYDxzdmcgaGVpZ2h0PVwiNTAlXCI+PC9zdmc+YCwgZXRjLlxuICAgIC8vIGRyb3AgbmFtZXNwYWNlIGF0dHJpYnV0ZVxuICAgIGFjdHVhbEhUTUwgPSBhY3R1YWxIVE1MLnJlcGxhY2UoLyB4bWxucz1cIlteXCJdK1wiLywgJycpO1xuICAgIC8vIHJlcGxhY2Ugc2VsZi1jbG9zaW5nIGVsZW1lbnRzXG4gICAgYWN0dWFsSFRNTCA9IGFjdHVhbEhUTUwucmVwbGFjZSgvPChbXiA+XSspIFteXFwvPl0qXFwvPi9naSwgZnVuY3Rpb24odGFnLCB0YWdOYW1lKSB7XG4gICAgICByZXR1cm4gdGFnLnNsaWNlKDAsIHRhZy5sZW5ndGggLSAzKSArICc+PC8nICsgdGFnTmFtZSArICc+JztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBhY3R1YWxIVE1MO1xufVxuXG4vLyBkZXRlY3Qgd2VpcmQgSUU4IGNoZWNrZWQgZWxlbWVudCBzdHJpbmdcbnZhciBjaGVja2VkSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuY2hlY2tlZElucHV0LnNldEF0dHJpYnV0ZSgnY2hlY2tlZCcsICdjaGVja2VkJyk7XG52YXIgY2hlY2tlZElucHV0U3RyaW5nID0gY2hlY2tlZElucHV0Lm91dGVySFRNTDtcbmV4cG9ydCBmdW5jdGlvbiBpc0NoZWNrZWRJbnB1dEhUTUwoZWxlbWVudCkge1xuICBlcXVhbChlbGVtZW50Lm91dGVySFRNTCwgY2hlY2tlZElucHV0U3RyaW5nKTtcbn1cblxuLy8gY2hlY2sgd2hpY2ggcHJvcGVydHkgaGFzIHRoZSBub2RlJ3MgdGV4dCBjb250ZW50XG52YXIgdGV4dFByb3BlcnR5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykudGV4dENvbnRlbnQgPT09IHVuZGVmaW5lZCA/ICdpbm5lclRleHQnIDogJ3RleHRDb250ZW50JztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0Q29udGVudChlbCkge1xuICAvLyB0ZXh0Tm9kZVxuICBpZiAoZWwubm9kZVR5cGUgPT09IDMpIHtcbiAgICByZXR1cm4gZWwubm9kZVZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBlbFt0ZXh0UHJvcGVydHldO1xuICB9XG59XG4iXX0=

@@ -21,2 +21,2 @@ exports.__esModule = true;

exports.dump = _htmlbarsUtilMorphUtils.dump;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXV0aWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztzQ0FBdUIsNkJBQTZCOzs7OzJDQUNuQixrQ0FBa0M7O3NDQUNsQyw0QkFBNEI7O3NDQUNQLDZCQUE2Qjs7UUFHakYsVUFBVTtRQUNWLGdCQUFnQixnQ0FOVCxnQkFBZ0I7UUFPdkIsZ0JBQWdCLDJCQU5ULGdCQUFnQjtRQU92QixtQkFBbUIsMkJBTlosbUJBQW1CO1FBTzFCLFVBQVUsMkJBUGtCLFVBQVU7UUFRdEMsSUFBSSwyQkFSb0MsSUFBSSIsImZpbGUiOiJodG1sYmFycy11dGlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNhZmVTdHJpbmcgZnJvbSAnLi9odG1sYmFycy11dGlsL3NhZmUtc3RyaW5nJztcbmltcG9ydCB7IGVzY2FwZUV4cHJlc3Npb24gfSBmcm9tICcuL2h0bWxiYXJzLXV0aWwvaGFuZGxlYmFycy91dGlscyc7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSAnLi9odG1sYmFycy11dGlsL25hbWVzcGFjZXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVDaGlsZE1vcnBocywgbGlua1BhcmFtcywgZHVtcCB9IGZyb20gJy4vaHRtbGJhcnMtdXRpbC9tb3JwaC11dGlscyc7XG5cbmV4cG9ydCB7XG4gIFNhZmVTdHJpbmcsXG4gIGVzY2FwZUV4cHJlc3Npb24sXG4gIGdldEF0dHJOYW1lc3BhY2UsXG4gIHZhbGlkYXRlQ2hpbGRNb3JwaHMsXG4gIGxpbmtQYXJhbXMsXG4gIGR1bXBcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXV0aWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztzQ0FBdUIsNkJBQTZCOzs7OzJDQUNuQixrQ0FBa0M7O3NDQUNsQyw0QkFBNEI7O3NDQUNQLDZCQUE2Qjs7UUFHakYsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixJQUFJIiwiZmlsZSI6Imh0bWxiYXJzLXV0aWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2FmZVN0cmluZyBmcm9tICcuL2h0bWxiYXJzLXV0aWwvc2FmZS1zdHJpbmcnO1xuaW1wb3J0IHsgZXNjYXBlRXhwcmVzc2lvbiB9IGZyb20gJy4vaHRtbGJhcnMtdXRpbC9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tICcuL2h0bWxiYXJzLXV0aWwvbmFtZXNwYWNlcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZUNoaWxkTW9ycGhzLCBsaW5rUGFyYW1zLCBkdW1wIH0gZnJvbSAnLi9odG1sYmFycy11dGlsL21vcnBoLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgU2FmZVN0cmluZyxcbiAgZXNjYXBlRXhwcmVzc2lvbixcbiAgZ2V0QXR0ck5hbWVzcGFjZSxcbiAgdmFsaWRhdGVDaGlsZE1vcnBocyxcbiAgbGlua1BhcmFtcyxcbiAgZHVtcFxufTtcbiJdfQ==

@@ -38,6 +38,6 @@ exports.__esModule = true;

exports.toString = toString;
// Sourced from lodash
// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
/*eslint-disable func-style, no-var */
exports.toString = toString;
var isFunction = function (value) {

@@ -54,6 +54,6 @@ return typeof value === 'function';

var isFunction;
exports.isFunction = isFunction;
/*eslint-enable func-style, no-var */
/* istanbul ignore next */
exports.isFunction = isFunction;
var isArray = Array.isArray || function (value) {

@@ -63,4 +63,4 @@ return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;

exports.isArray = isArray;
// Older IE versions do not directly support indexOf so we must implement our own, sadly.
exports.isArray = isArray;

@@ -67,0 +67,0 @@ function indexOf(array, value) {

@@ -191,2 +191,2 @@ exports.__esModule = true;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztzQ0FBOEIsOEJBQThCOztBQUVyRCxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFOzs7QUFHakQsTUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQzs7OztBQUlsQyxNQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDOzs7OztBQUs3QixNQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzs7Ozs7OztBQU81QixNQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQzs7QUFFL0IsTUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Q0FDM0I7O0FBRU0sU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7QUFDdkQsTUFBSSxLQUFLLEdBQUcsVUFBUyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUNoRixRQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7QUFDekIsZ0JBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNyRixNQUFNO0FBQ0wsVUFBSSxPQUFPLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQzs7QUFFM0QsVUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztBQUMvQixVQUFJLFdBQVcsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDM0YsVUFBSSxVQUFV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QUM7R0FBRTtBQUNoQyxNQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7QUFBRSxXQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7R0FBRTs7QUFFL0MsMEJBaEpPLGFBQWEsQ0FnSk4sS0FBSyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzs7O0FBRzdDLE9BQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNkLE1BQUksVUFBVSxFQUFFO0FBQUUsY0FBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7R0FBRTs7QUFFeEQsT0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDeEIsT0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsT0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Q0FDekI7O0FBRU0sU0FBUyxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDcEQsTUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQzs7QUFFckMsU0FBTyxJQUFJLEVBQUU7QUFDWCxRQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQzFCLFdBQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsY0FBVSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUIsUUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDOztBQUVmLFFBQUksR0FBRyxJQUFJLENBQUM7R0FDYjs7O0FBR0QsV0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xCLE9BQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0NBQ3hCIiwiZmlsZSI6Imh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2aXNpdENoaWxkcmVuIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvbW9ycGgtdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFJlbmRlclN0YXRlKHJlbmRlck5vZGUsIG1vcnBoTGlzdCkge1xuICAvLyBUaGUgbW9ycGggbGlzdCB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGNhbiBiZVxuICAvLyBkZXN0cm95ZWQuXG4gIHRoaXMubW9ycGhMaXN0VG9DbGVhciA9IG1vcnBoTGlzdDtcblxuICAvLyBUaGUgbW9ycGggbGlzdCB0aGF0IG5lZWRzIHRvIGJlIHBydW5lZCBvZiBhbnkgaXRlbXNcbiAgLy8gdGhhdCB3ZXJlIG5vdCB5aWVsZGVkIG9uIGEgc3Vic2VxdWVudCByZW5kZXIuXG4gIHRoaXMubW9ycGhMaXN0VG9QcnVuZSA9IG51bGw7XG5cbiAgLy8gQSBtYXAgb2YgbW9ycGhzIGZvciBlYWNoIGl0ZW0geWllbGRlZCBpbiBkdXJpbmcgdGhpc1xuICAvLyByZW5kZXJpbmcgcGFzcy4gQW55IG1vcnBocyBpbiB0aGUgRE9NIGJ1dCBub3QgaW4gdGhpcyBtYXBcbiAgLy8gd2lsbCBiZSBwcnVuZWQgZHVyaW5nIGNsZWFudXAuXG4gIHRoaXMuaGFuZGxlZE1vcnBocyA9IHt9O1xuICB0aGlzLmNvbGxpc2lvbnMgPSB1bmRlZmluZWQ7XG5cbiAgLy8gVGhlIG1vcnBoIHRvIGNsZWFyIG9uY2UgcmVuZGVyaW5nIGlzIGNvbXBsZXRlLiBCeVxuICAvLyBkZWZhdWx0LCB3ZSBzZXQgdGhpcyB0byB0aGUgcHJldmlvdXMgbW9ycGggKHRvIGNhdGNoXG4gIC8vIHRoZSBjYXNlIHdoZXJlIG5vdGhpbmcgaXMgeWllbGRlZDsgaW4gdGhhdCBjYXNlLCB3ZVxuICAvLyBzaG91bGQganVzdCBjbGVhciB0aGUgbW9ycGgpLiBPdGhlcndpc2UgdGhpcyBnZXRzIHNldFxuICAvLyB0byBudWxsIGlmIGFueXRoaW5nIGlzIHJlbmRlcmVkLlxuICB0aGlzLm1vcnBoVG9DbGVhciA9IHJlbmRlck5vZGU7XG5cbiAgdGhpcy5zaGFkb3dPcHRpb25zID0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrRm9yKHJlbmRlciwgdGVtcGxhdGUsIGJsb2NrT3B0aW9ucykge1xuICB2YXIgYmxvY2sgPSBmdW5jdGlvbihlbnYsIGJsb2NrQXJndW1lbnRzLCBzZWxmLCByZW5kZXJOb2RlLCBwYXJlbnRTY29wZSwgdmlzaXRvcikge1xuICAgIGlmIChyZW5kZXJOb2RlLmxhc3RSZXN1bHQpIHtcbiAgICAgIHJlbmRlck5vZGUubGFzdFJlc3VsdC5yZXZhbGlkYXRlV2l0aChlbnYsIHVuZGVmaW5lZCwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIHZpc2l0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHsgcmVuZGVyU3RhdGU6IG5ldyBSZW5kZXJTdGF0ZShyZW5kZXJOb2RlKSB9O1xuXG4gICAgICB2YXIgc2NvcGUgPSBibG9ja09wdGlvbnMuc2NvcGU7XG4gICAgICB2YXIgc2hhZG93U2NvcGUgPSBzY29wZSA/IGVudi5ob29rcy5jcmVhdGVDaGlsZFNjb3BlKHNjb3BlKSA6IGVudi5ob29rcy5jcmVhdGVGcmVzaFNjb3BlKCk7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IGJsb2NrT3B0aW9ucy5hdHRyaWJ1dGVzO1xuXG4gICAgICBlbnYuaG9va3MuYmluZFNoYWRvd1Njb3BlKGVudiwgcGFyZW50U2NvcGUsIHNoYWRvd1Njb3BlLCBibG9ja09wdGlvbnMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChzZWxmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW52Lmhvb2tzLmJpbmRTZWxmKGVudiwgc2hhZG93U2NvcGUsIHNlbGYpO1xuICAgICAgfSBlbHNlIGlmIChibG9ja09wdGlvbnMuc2VsZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVudi5ob29rcy5iaW5kU2VsZihlbnYsIHNoYWRvd1Njb3BlLCBibG9ja09wdGlvbnMuc2VsZik7XG4gICAgICB9XG5cbiAgICAgIGJpbmRCbG9ja3MoZW52LCBzaGFkb3dTY29wZSwgYmxvY2tPcHRpb25zLnlpZWxkVG8pO1xuXG4gICAgICByZW5kZXJBbmRDbGVhbnVwKHJlbmRlck5vZGUsIGVudiwgb3B0aW9ucywgbnVsbCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIG9wdGlvbnMucmVuZGVyU3RhdGUubW9ycGhUb0NsZWFyID0gbnVsbDtcbiAgICAgICAgcmVuZGVyKHRlbXBsYXRlLCBlbnYsIHNoYWRvd1Njb3BlLCB7IHJlbmRlck5vZGUsIGJsb2NrQXJndW1lbnRzLCBhdHRyaWJ1dGVzIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGJsb2NrLmFyaXR5ID0gdGVtcGxhdGUuYXJpdHk7XG5cbiAgcmV0dXJuIGJsb2NrO1xufVxuXG5mdW5jdGlvbiBiaW5kQmxvY2tzKGVudiwgc2hhZG93U2NvcGUsIGJsb2Nrcykge1xuICBpZiAoIWJsb2Nrcykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodHlwZW9mIGJsb2NrcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGVudi5ob29rcy5iaW5kQmxvY2soZW52LCBzaGFkb3dTY29wZSwgYmxvY2tzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIGJsb2Nrcykge1xuICAgICAgaWYgKGJsb2Nrcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBlbnYuaG9va3MuYmluZEJsb2NrKGVudiwgc2hhZG93U2NvcGUsIGJsb2Nrc1tuYW1lXSwgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJBbmRDbGVhbnVwKG1vcnBoLCBlbnYsIG9wdGlvbnMsIHNoYWRvd09wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIC8vIFRoZSBSZW5kZXJTdGF0ZSBvYmplY3QgaXMgdXNlZCB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlXG4gIC8vIGhlbHBlciBvciBob29rIGJlaW5nIGludm9rZWQgaGFzIHlpZWxkZWQuIE9uY2UgaXQgaGFzIGZpbmlzaGVkIGVpdGhlclxuICAvLyB5aWVsZGluZyBtdWx0aXBsZSBpdGVtcyAodmlhIHlpZWxkSXRlbSkgb3IgYSBzaW5nbGUgdGVtcGxhdGUgKHZpYVxuICAvLyB5aWVsZFRlbXBsYXRlKSwgd2UgZGV0ZWN0IHdoYXQgd2FzIHJlbmRlcmVkIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tXG4gIC8vIHRoZSBwcmV2aW91cyByZW5kZXIsIGNsZWFuaW5nIHVwIG9sZCBzdGF0ZSBpbiBET00gYXMgYXBwcm9wcmlhdGUuXG4gIHZhciByZW5kZXJTdGF0ZSA9IG9wdGlvbnMucmVuZGVyU3RhdGU7XG4gIHJlbmRlclN0YXRlLmNvbGxpc2lvbnMgPSB1bmRlZmluZWQ7XG4gIHJlbmRlclN0YXRlLnNoYWRvd09wdGlvbnMgPSBzaGFkb3dPcHRpb25zO1xuXG4gIC8vIEludm9rZSB0aGUgY2FsbGJhY2ssIGluc3RydWN0aW5nIGl0IHRvIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpdFxuICAvLyByZW5kZXJzIGludG8gUmVuZGVyU3RhdGUuXG4gIHZhciByZXN1bHQgPSBjYWxsYmFjayhvcHRpb25zKTtcblxuICAvLyBUaGUgaG9vayBjYW4gb3B0LW91dCBvZiBjbGVhbnVwIGlmIGl0IGhhbmRsZWQgY2xlYW51cCBpdHNlbGYuXG4gIGlmIChyZXN1bHQgJiYgcmVzdWx0LmhhbmRsZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgbW9ycGhNYXAgPSBtb3JwaC5tb3JwaE1hcDtcblxuICAvLyBXYWxrIHRoZSBtb3JwaCBsaXN0LCBjbGVhcmluZyBhbnkgaXRlbXMgdGhhdCB3ZXJlIHlpZWxkZWQgaW4gYSBwcmV2aW91c1xuICAvLyByZW5kZXIgYnV0IHdlcmUgbm90IHlpZWxkZWQgZHVyaW5nIHRoaXMgcmVuZGVyLlxuICBsZXQgbW9ycGhMaXN0ID0gcmVuZGVyU3RhdGUubW9ycGhMaXN0VG9QcnVuZTtcbiAgaWYgKG1vcnBoTGlzdCkge1xuICAgIGxldCBoYW5kbGVkTW9ycGhzID0gcmVuZGVyU3RhdGUuaGFuZGxlZE1vcnBocztcbiAgICBsZXQgaXRlbSA9IG1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGg7XG5cbiAgICB3aGlsZSAoaXRlbSkge1xuICAgICAgbGV0IG5leHQgPSBpdGVtLm5leHRNb3JwaDtcblxuICAgICAgLy8gSWYgd2UgZG9uJ3Qgc2VlIHRoZSBrZXkgaW4gaGFuZGxlZE1vcnBocywgaXQgd2Fzbid0XG4gICAgICAvLyB5aWVsZGVkIGluIGFuZCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBpdCBmcm9tIERPTS5cbiAgICAgIGlmICghKGl0ZW0ua2V5IGluIGhhbmRsZWRNb3JwaHMpKSB7XG4gICAgICAgIGRlbGV0ZSBtb3JwaE1hcFtpdGVtLmtleV07XG4gICAgICAgIGNsZWFyTW9ycGgoaXRlbSwgZW52LCB0cnVlKTtcbiAgICAgICAgaXRlbS5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0gPSBuZXh0O1xuICAgIH1cbiAgfVxuXG4gIG1vcnBoTGlzdCA9IHJlbmRlclN0YXRlLm1vcnBoTGlzdFRvQ2xlYXI7XG4gIGlmIChtb3JwaExpc3QpIHtcbiAgICBjbGVhck1vcnBoTGlzdChtb3JwaExpc3QsIG1vcnBoLCBlbnYpO1xuICB9XG5cbiAgbGV0IHRvQ2xlYXIgPSByZW5kZXJTdGF0ZS5tb3JwaFRvQ2xlYXI7XG4gIGlmICh0b0NsZWFyKSB7XG4gICAgY2xlYXJNb3JwaCh0b0NsZWFyLCBlbnYpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck1vcnBoKG1vcnBoLCBlbnYsIGRlc3Ryb3lTZWxmKSB7XG4gIHZhciBjbGVhbnVwID0gZW52Lmhvb2tzLmNsZWFudXBSZW5kZXJOb2RlO1xuICB2YXIgZGVzdHJveSA9IGVudi5ob29rcy5kZXN0cm95UmVuZGVyTm9kZTtcbiAgdmFyIHdpbGxDbGVhbnVwID0gZW52Lmhvb2tzLndpbGxDbGVhbnVwVHJlZTtcbiAgdmFyIGRpZENsZWFudXAgPSBlbnYuaG9va3MuZGlkQ2xlYW51cFRyZWU7XG5cbiAgZnVuY3Rpb24gZGVzdHJveU5vZGUobm9kZSkge1xuICAgIGlmIChjbGVhbnVwKSB7IGNsZWFudXAobm9kZSk7IH1cbiAgICBpZiAoZGVzdHJveSkgeyBkZXN0cm95KG5vZGUpOyB9XG4gIH1cblxuICBpZiAod2lsbENsZWFudXApIHsgd2lsbENsZWFudXAoZW52LCBtb3JwaCwgZGVzdHJveVNlbGYpOyB9XG4gIGlmIChjbGVhbnVwKSB7IGNsZWFudXAobW9ycGgpOyB9XG4gIGlmIChkZXN0cm95U2VsZiAmJiBkZXN0cm95KSB7IGRlc3Ryb3kobW9ycGgpOyB9XG5cbiAgdmlzaXRDaGlsZHJlbihtb3JwaC5jaGlsZE5vZGVzLCBkZXN0cm95Tm9kZSk7XG5cbiAgLy8gVE9ETzogRGVhbCB3aXRoIGxvZ2ljYWwgY2hpbGRyZW4gdGhhdCBhcmUgbm90IGluIHRoZSBET00gdHJlZVxuICBtb3JwaC5jbGVhcigpO1xuICBpZiAoZGlkQ2xlYW51cCkgeyBkaWRDbGVhbnVwKGVudiwgbW9ycGgsIGRlc3Ryb3lTZWxmKTsgfVxuXG4gIG1vcnBoLmxhc3RSZXN1bHQgPSBudWxsO1xuICBtb3JwaC5sYXN0WWllbGRlZCA9IG51bGw7XG4gIG1vcnBoLmNoaWxkTm9kZXMgPSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb3JwaExpc3QobW9ycGhMaXN0LCBtb3JwaCwgZW52KSB7XG4gIGxldCBpdGVtID0gbW9ycGhMaXN0LmZpcnN0Q2hpbGRNb3JwaDtcblxuICB3aGlsZSAoaXRlbSkge1xuICAgIGxldCBuZXh0ID0gaXRlbS5uZXh0TW9ycGg7XG4gICAgZGVsZXRlIG1vcnBoLm1vcnBoTWFwW2l0ZW0ua2V5XTtcbiAgICBjbGVhck1vcnBoKGl0ZW0sIGVudiwgdHJ1ZSk7XG4gICAgaXRlbS5kZXN0cm95KCk7XG5cbiAgICBpdGVtID0gbmV4dDtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgTW9ycGhMaXN0IGZyb20gdGhlIG1vcnBoLlxuICBtb3JwaExpc3QuY2xlYXIoKTtcbiAgbW9ycGgubW9ycGhMaXN0ID0gbnVsbDtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztzQ0FBOEIsOEJBQThCOztBQUVyRCxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFOzs7QUFHakQsTUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQzs7OztBQUlsQyxNQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDOzs7OztBQUs3QixNQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QixNQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQzs7Ozs7OztBQU81QixNQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQzs7QUFFL0IsTUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Q0FDM0I7O0FBRU0sU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7QUFDdkQsTUFBSSxLQUFLLEdBQUcsVUFBUyxHQUFHLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUNoRixRQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7QUFDekIsZ0JBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNyRixNQUFNO0FBQ0wsVUFBSSxPQUFPLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQzs7QUFFM0QsVUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztBQUMvQixVQUFJLFdBQVcsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7QUFDM0YsVUFBSSxVQUFV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QUM7R0FBRTtBQUNoQyxNQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7QUFBRSxXQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7R0FBRTs7QUFFL0Msd0NBQWMsS0FBSyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzs7O0FBRzdDLE9BQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNkLE1BQUksVUFBVSxFQUFFO0FBQUUsY0FBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7R0FBRTs7QUFFeEQsT0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDeEIsT0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDekIsT0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Q0FDekI7O0FBRU0sU0FBUyxjQUFjLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDcEQsTUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQzs7QUFFckMsU0FBTyxJQUFJLEVBQUU7QUFDWCxRQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQzFCLFdBQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsY0FBVSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUIsUUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDOztBQUVmLFFBQUksR0FBRyxJQUFJLENBQUM7R0FDYjs7O0FBR0QsV0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xCLE9BQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0NBQ3hCIiwiZmlsZSI6Imh0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2aXNpdENoaWxkcmVuIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvbW9ycGgtdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFJlbmRlclN0YXRlKHJlbmRlck5vZGUsIG1vcnBoTGlzdCkge1xuICAvLyBUaGUgbW9ycGggbGlzdCB0aGF0IGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGNhbiBiZVxuICAvLyBkZXN0cm95ZWQuXG4gIHRoaXMubW9ycGhMaXN0VG9DbGVhciA9IG1vcnBoTGlzdDtcblxuICAvLyBUaGUgbW9ycGggbGlzdCB0aGF0IG5lZWRzIHRvIGJlIHBydW5lZCBvZiBhbnkgaXRlbXNcbiAgLy8gdGhhdCB3ZXJlIG5vdCB5aWVsZGVkIG9uIGEgc3Vic2VxdWVudCByZW5kZXIuXG4gIHRoaXMubW9ycGhMaXN0VG9QcnVuZSA9IG51bGw7XG5cbiAgLy8gQSBtYXAgb2YgbW9ycGhzIGZvciBlYWNoIGl0ZW0geWllbGRlZCBpbiBkdXJpbmcgdGhpc1xuICAvLyByZW5kZXJpbmcgcGFzcy4gQW55IG1vcnBocyBpbiB0aGUgRE9NIGJ1dCBub3QgaW4gdGhpcyBtYXBcbiAgLy8gd2lsbCBiZSBwcnVuZWQgZHVyaW5nIGNsZWFudXAuXG4gIHRoaXMuaGFuZGxlZE1vcnBocyA9IHt9O1xuICB0aGlzLmNvbGxpc2lvbnMgPSB1bmRlZmluZWQ7XG5cbiAgLy8gVGhlIG1vcnBoIHRvIGNsZWFyIG9uY2UgcmVuZGVyaW5nIGlzIGNvbXBsZXRlLiBCeVxuICAvLyBkZWZhdWx0LCB3ZSBzZXQgdGhpcyB0byB0aGUgcHJldmlvdXMgbW9ycGggKHRvIGNhdGNoXG4gIC8vIHRoZSBjYXNlIHdoZXJlIG5vdGhpbmcgaXMgeWllbGRlZDsgaW4gdGhhdCBjYXNlLCB3ZVxuICAvLyBzaG91bGQganVzdCBjbGVhciB0aGUgbW9ycGgpLiBPdGhlcndpc2UgdGhpcyBnZXRzIHNldFxuICAvLyB0byBudWxsIGlmIGFueXRoaW5nIGlzIHJlbmRlcmVkLlxuICB0aGlzLm1vcnBoVG9DbGVhciA9IHJlbmRlck5vZGU7XG5cbiAgdGhpcy5zaGFkb3dPcHRpb25zID0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2NrRm9yKHJlbmRlciwgdGVtcGxhdGUsIGJsb2NrT3B0aW9ucykge1xuICB2YXIgYmxvY2sgPSBmdW5jdGlvbihlbnYsIGJsb2NrQXJndW1lbnRzLCBzZWxmLCByZW5kZXJOb2RlLCBwYXJlbnRTY29wZSwgdmlzaXRvcikge1xuICAgIGlmIChyZW5kZXJOb2RlLmxhc3RSZXN1bHQpIHtcbiAgICAgIHJlbmRlck5vZGUubGFzdFJlc3VsdC5yZXZhbGlkYXRlV2l0aChlbnYsIHVuZGVmaW5lZCwgc2VsZiwgYmxvY2tBcmd1bWVudHMsIHZpc2l0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHsgcmVuZGVyU3RhdGU6IG5ldyBSZW5kZXJTdGF0ZShyZW5kZXJOb2RlKSB9O1xuXG4gICAgICB2YXIgc2NvcGUgPSBibG9ja09wdGlvbnMuc2NvcGU7XG4gICAgICB2YXIgc2hhZG93U2NvcGUgPSBzY29wZSA/IGVudi5ob29rcy5jcmVhdGVDaGlsZFNjb3BlKHNjb3BlKSA6IGVudi5ob29rcy5jcmVhdGVGcmVzaFNjb3BlKCk7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IGJsb2NrT3B0aW9ucy5hdHRyaWJ1dGVzO1xuXG4gICAgICBlbnYuaG9va3MuYmluZFNoYWRvd1Njb3BlKGVudiwgcGFyZW50U2NvcGUsIHNoYWRvd1Njb3BlLCBibG9ja09wdGlvbnMub3B0aW9ucyk7XG5cbiAgICAgIGlmIChzZWxmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW52Lmhvb2tzLmJpbmRTZWxmKGVudiwgc2hhZG93U2NvcGUsIHNlbGYpO1xuICAgICAgfSBlbHNlIGlmIChibG9ja09wdGlvbnMuc2VsZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVudi5ob29rcy5iaW5kU2VsZihlbnYsIHNoYWRvd1Njb3BlLCBibG9ja09wdGlvbnMuc2VsZik7XG4gICAgICB9XG5cbiAgICAgIGJpbmRCbG9ja3MoZW52LCBzaGFkb3dTY29wZSwgYmxvY2tPcHRpb25zLnlpZWxkVG8pO1xuXG4gICAgICByZW5kZXJBbmRDbGVhbnVwKHJlbmRlck5vZGUsIGVudiwgb3B0aW9ucywgbnVsbCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIG9wdGlvbnMucmVuZGVyU3RhdGUubW9ycGhUb0NsZWFyID0gbnVsbDtcbiAgICAgICAgcmVuZGVyKHRlbXBsYXRlLCBlbnYsIHNoYWRvd1Njb3BlLCB7IHJlbmRlck5vZGUsIGJsb2NrQXJndW1lbnRzLCBhdHRyaWJ1dGVzIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGJsb2NrLmFyaXR5ID0gdGVtcGxhdGUuYXJpdHk7XG5cbiAgcmV0dXJuIGJsb2NrO1xufVxuXG5mdW5jdGlvbiBiaW5kQmxvY2tzKGVudiwgc2hhZG93U2NvcGUsIGJsb2Nrcykge1xuICBpZiAoIWJsb2Nrcykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodHlwZW9mIGJsb2NrcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGVudi5ob29rcy5iaW5kQmxvY2soZW52LCBzaGFkb3dTY29wZSwgYmxvY2tzKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIGJsb2Nrcykge1xuICAgICAgaWYgKGJsb2Nrcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBlbnYuaG9va3MuYmluZEJsb2NrKGVudiwgc2hhZG93U2NvcGUsIGJsb2Nrc1tuYW1lXSwgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJBbmRDbGVhbnVwKG1vcnBoLCBlbnYsIG9wdGlvbnMsIHNoYWRvd09wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIC8vIFRoZSBSZW5kZXJTdGF0ZSBvYmplY3QgaXMgdXNlZCB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlXG4gIC8vIGhlbHBlciBvciBob29rIGJlaW5nIGludm9rZWQgaGFzIHlpZWxkZWQuIE9uY2UgaXQgaGFzIGZpbmlzaGVkIGVpdGhlclxuICAvLyB5aWVsZGluZyBtdWx0aXBsZSBpdGVtcyAodmlhIHlpZWxkSXRlbSkgb3IgYSBzaW5nbGUgdGVtcGxhdGUgKHZpYVxuICAvLyB5aWVsZFRlbXBsYXRlKSwgd2UgZGV0ZWN0IHdoYXQgd2FzIHJlbmRlcmVkIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tXG4gIC8vIHRoZSBwcmV2aW91cyByZW5kZXIsIGNsZWFuaW5nIHVwIG9sZCBzdGF0ZSBpbiBET00gYXMgYXBwcm9wcmlhdGUuXG4gIHZhciByZW5kZXJTdGF0ZSA9IG9wdGlvbnMucmVuZGVyU3RhdGU7XG4gIHJlbmRlclN0YXRlLmNvbGxpc2lvbnMgPSB1bmRlZmluZWQ7XG4gIHJlbmRlclN0YXRlLnNoYWRvd09wdGlvbnMgPSBzaGFkb3dPcHRpb25zO1xuXG4gIC8vIEludm9rZSB0aGUgY2FsbGJhY2ssIGluc3RydWN0aW5nIGl0IHRvIHNhdmUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBpdFxuICAvLyByZW5kZXJzIGludG8gUmVuZGVyU3RhdGUuXG4gIHZhciByZXN1bHQgPSBjYWxsYmFjayhvcHRpb25zKTtcblxuICAvLyBUaGUgaG9vayBjYW4gb3B0LW91dCBvZiBjbGVhbnVwIGlmIGl0IGhhbmRsZWQgY2xlYW51cCBpdHNlbGYuXG4gIGlmIChyZXN1bHQgJiYgcmVzdWx0LmhhbmRsZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgbW9ycGhNYXAgPSBtb3JwaC5tb3JwaE1hcDtcblxuICAvLyBXYWxrIHRoZSBtb3JwaCBsaXN0LCBjbGVhcmluZyBhbnkgaXRlbXMgdGhhdCB3ZXJlIHlpZWxkZWQgaW4gYSBwcmV2aW91c1xuICAvLyByZW5kZXIgYnV0IHdlcmUgbm90IHlpZWxkZWQgZHVyaW5nIHRoaXMgcmVuZGVyLlxuICBsZXQgbW9ycGhMaXN0ID0gcmVuZGVyU3RhdGUubW9ycGhMaXN0VG9QcnVuZTtcbiAgaWYgKG1vcnBoTGlzdCkge1xuICAgIGxldCBoYW5kbGVkTW9ycGhzID0gcmVuZGVyU3RhdGUuaGFuZGxlZE1vcnBocztcbiAgICBsZXQgaXRlbSA9IG1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGg7XG5cbiAgICB3aGlsZSAoaXRlbSkge1xuICAgICAgbGV0IG5leHQgPSBpdGVtLm5leHRNb3JwaDtcblxuICAgICAgLy8gSWYgd2UgZG9uJ3Qgc2VlIHRoZSBrZXkgaW4gaGFuZGxlZE1vcnBocywgaXQgd2Fzbid0XG4gICAgICAvLyB5aWVsZGVkIGluIGFuZCB3ZSBjYW4gc2FmZWx5IHJlbW92ZSBpdCBmcm9tIERPTS5cbiAgICAgIGlmICghKGl0ZW0ua2V5IGluIGhhbmRsZWRNb3JwaHMpKSB7XG4gICAgICAgIGRlbGV0ZSBtb3JwaE1hcFtpdGVtLmtleV07XG4gICAgICAgIGNsZWFyTW9ycGgoaXRlbSwgZW52LCB0cnVlKTtcbiAgICAgICAgaXRlbS5kZXN0cm95KCk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW0gPSBuZXh0O1xuICAgIH1cbiAgfVxuXG4gIG1vcnBoTGlzdCA9IHJlbmRlclN0YXRlLm1vcnBoTGlzdFRvQ2xlYXI7XG4gIGlmIChtb3JwaExpc3QpIHtcbiAgICBjbGVhck1vcnBoTGlzdChtb3JwaExpc3QsIG1vcnBoLCBlbnYpO1xuICB9XG5cbiAgbGV0IHRvQ2xlYXIgPSByZW5kZXJTdGF0ZS5tb3JwaFRvQ2xlYXI7XG4gIGlmICh0b0NsZWFyKSB7XG4gICAgY2xlYXJNb3JwaCh0b0NsZWFyLCBlbnYpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck1vcnBoKG1vcnBoLCBlbnYsIGRlc3Ryb3lTZWxmKSB7XG4gIHZhciBjbGVhbnVwID0gZW52Lmhvb2tzLmNsZWFudXBSZW5kZXJOb2RlO1xuICB2YXIgZGVzdHJveSA9IGVudi5ob29rcy5kZXN0cm95UmVuZGVyTm9kZTtcbiAgdmFyIHdpbGxDbGVhbnVwID0gZW52Lmhvb2tzLndpbGxDbGVhbnVwVHJlZTtcbiAgdmFyIGRpZENsZWFudXAgPSBlbnYuaG9va3MuZGlkQ2xlYW51cFRyZWU7XG5cbiAgZnVuY3Rpb24gZGVzdHJveU5vZGUobm9kZSkge1xuICAgIGlmIChjbGVhbnVwKSB7IGNsZWFudXAobm9kZSk7IH1cbiAgICBpZiAoZGVzdHJveSkgeyBkZXN0cm95KG5vZGUpOyB9XG4gIH1cblxuICBpZiAod2lsbENsZWFudXApIHsgd2lsbENsZWFudXAoZW52LCBtb3JwaCwgZGVzdHJveVNlbGYpOyB9XG4gIGlmIChjbGVhbnVwKSB7IGNsZWFudXAobW9ycGgpOyB9XG4gIGlmIChkZXN0cm95U2VsZiAmJiBkZXN0cm95KSB7IGRlc3Ryb3kobW9ycGgpOyB9XG5cbiAgdmlzaXRDaGlsZHJlbihtb3JwaC5jaGlsZE5vZGVzLCBkZXN0cm95Tm9kZSk7XG5cbiAgLy8gVE9ETzogRGVhbCB3aXRoIGxvZ2ljYWwgY2hpbGRyZW4gdGhhdCBhcmUgbm90IGluIHRoZSBET00gdHJlZVxuICBtb3JwaC5jbGVhcigpO1xuICBpZiAoZGlkQ2xlYW51cCkgeyBkaWRDbGVhbnVwKGVudiwgbW9ycGgsIGRlc3Ryb3lTZWxmKTsgfVxuXG4gIG1vcnBoLmxhc3RSZXN1bHQgPSBudWxsO1xuICBtb3JwaC5sYXN0WWllbGRlZCA9IG51bGw7XG4gIG1vcnBoLmNoaWxkTm9kZXMgPSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJNb3JwaExpc3QobW9ycGhMaXN0LCBtb3JwaCwgZW52KSB7XG4gIGxldCBpdGVtID0gbW9ycGhMaXN0LmZpcnN0Q2hpbGRNb3JwaDtcblxuICB3aGlsZSAoaXRlbSkge1xuICAgIGxldCBuZXh0ID0gaXRlbS5uZXh0TW9ycGg7XG4gICAgZGVsZXRlIG1vcnBoLm1vcnBoTWFwW2l0ZW0ua2V5XTtcbiAgICBjbGVhck1vcnBoKGl0ZW0sIGVudiwgdHJ1ZSk7XG4gICAgaXRlbS5kZXN0cm95KCk7XG5cbiAgICBpdGVtID0gbmV4dDtcbiAgfVxuXG4gIC8vIFJlbW92ZSB0aGUgTW9ycGhMaXN0IGZyb20gdGhlIG1vcnBoLlxuICBtb3JwaExpc3QuY2xlYXIoKTtcbiAgbW9ycGgubW9ycGhMaXN0ID0gbnVsbDtcbn1cbiJdfQ==

@@ -18,2 +18,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXV0aWwvdm9pZC10YWctbmFtZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7MEJBQXdCLGVBQWU7Ozs7OztBQU12QyxJQUFJLFlBQVksR0FBRyxxRkFBcUYsQ0FBQztBQUN6RyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7O0FBRWpCLFlBVFMsT0FBTyxDQVNSLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBUyxPQUFPLEVBQUU7QUFDakQsU0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztDQUN6QixDQUFDLENBQUM7O2tCQUVZLE9BQU8iLCJmaWxlIjoiaHRtbGJhcnMtdXRpbC92b2lkLXRhZy1uYW1lcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvckVhY2ggfSBmcm9tIFwiLi9hcnJheS11dGlsc1wiO1xuXG4vLyBUaGUgSFRNTCBlbGVtZW50cyBpbiB0aGlzIGxpc3QgYXJlIHNwZWNlZCBieVxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1tYXJrdXAvc3ludGF4Lmh0bWwjc3ludGF4LWVsZW1lbnRzLFxuLy8gYW5kIHdpbGwgYmUgZm9yY2VkIHRvIGNsb3NlIHJlZ2FyZGxlc3Mgb2YgaWYgdGhleSBoYXZlIGFcbi8vIHNlbGYtY2xvc2luZyAvPiBhdCB0aGUgZW5kLlxudmFyIHZvaWRUYWdOYW1lcyA9IFwiYXJlYSBiYXNlIGJyIGNvbCBjb21tYW5kIGVtYmVkIGhyIGltZyBpbnB1dCBrZXlnZW4gbGluayBtZXRhIHBhcmFtIHNvdXJjZSB0cmFjayB3YnJcIjtcbnZhciB2b2lkTWFwID0ge307XG5cbmZvckVhY2godm9pZFRhZ05hbWVzLnNwbGl0KFwiIFwiKSwgZnVuY3Rpb24odGFnTmFtZSkge1xuICB2b2lkTWFwW3RhZ05hbWVdID0gdHJ1ZTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB2b2lkTWFwO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXV0aWwvdm9pZC10YWctbmFtZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7MEJBQXdCLGVBQWU7Ozs7OztBQU12QyxJQUFJLFlBQVksR0FBRyxxRkFBcUYsQ0FBQztBQUN6RyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7O0FBRWpCLG9CQUFRLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBUyxPQUFPLEVBQUU7QUFDakQsU0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztDQUN6QixDQUFDLENBQUM7O2tCQUVZLE9BQU8iLCJmaWxlIjoiaHRtbGJhcnMtdXRpbC92b2lkLXRhZy1uYW1lcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvckVhY2ggfSBmcm9tIFwiLi9hcnJheS11dGlsc1wiO1xuXG4vLyBUaGUgSFRNTCBlbGVtZW50cyBpbiB0aGlzIGxpc3QgYXJlIHNwZWNlZCBieVxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1tYXJrdXAvc3ludGF4Lmh0bWwjc3ludGF4LWVsZW1lbnRzLFxuLy8gYW5kIHdpbGwgYmUgZm9yY2VkIHRvIGNsb3NlIHJlZ2FyZGxlc3Mgb2YgaWYgdGhleSBoYXZlIGFcbi8vIHNlbGYtY2xvc2luZyAvPiBhdCB0aGUgZW5kLlxudmFyIHZvaWRUYWdOYW1lcyA9IFwiYXJlYSBiYXNlIGJyIGNvbCBjb21tYW5kIGVtYmVkIGhyIGltZyBpbnB1dCBrZXlnZW4gbGluayBtZXRhIHBhcmFtIHNvdXJjZSB0cmFjayB3YnJcIjtcbnZhciB2b2lkTWFwID0ge307XG5cbmZvckVhY2godm9pZFRhZ05hbWVzLnNwbGl0KFwiIFwiKSwgZnVuY3Rpb24odGFnTmFtZSkge1xuICB2b2lkTWFwW3RhZ05hbWVdID0gdHJ1ZTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB2b2lkTWFwO1xuIl19

@@ -7,3 +7,3 @@ exports.__esModule = true;

* See https://raw.githubusercontent.com/tildeio/htmlbars/master/LICENSE
* @version 0.14.2.b6a7b310
* @version v0.14.3
*/

@@ -19,2 +19,2 @@

exports.compileSpec = _htmlbarsCompilerCompiler.compileSpec;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBU08sbUJBQW1COzt3Q0FLbkIsOEJBQThCOztRQUduQyxPQUFPLDZCQUxQLE9BQU87UUFNUCxXQUFXLDZCQUxYLFdBQVciLCJmaWxlIjoiaHRtbGJhcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQG92ZXJ2aWV3ICBIVE1MQmFyc1xuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAxMS0yMDE0IFRpbGRlIEluYy4gYW5kIGNvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBMaWNlbnNlZCB1bmRlciBNSVQgbGljZW5zZVxuICogICAgICAgICAgICBTZWUgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RpbGRlaW8vaHRtbGJhcnMvbWFzdGVyL0xJQ0VOU0VcbiAqIEB2ZXJzaW9uICAgVkVSU0lPTl9TVFJJTkdfUExBQ0VIT0xERVJcbiAqL1xuXG4vLyBCcmVhayBjeWNsZXMgaW4gdGhlIG1vZHVsZSBsb2FkZXIuXG5pbXBvcnQgXCIuL2h0bWxiYXJzLXN5bnRheFwiO1xuXG5pbXBvcnQge1xuICBjb21waWxlLFxuICBjb21waWxlU3BlY1xufSBmcm9tIFwiLi9odG1sYmFycy1jb21waWxlci9jb21waWxlclwiO1xuXG5leHBvcnQge1xuICBjb21waWxlLFxuICBjb21waWxlU3BlY1xufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O1FBU08sbUJBQW1COzt3Q0FLbkIsOEJBQThCOztRQUduQyxPQUFPO1FBQ1AsV0FBVyIsImZpbGUiOiJodG1sYmFycy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAb3ZlcnZpZXcgIEhUTUxCYXJzXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAyMDExLTIwMTQgVGlsZGUgSW5jLiBhbmQgY29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIExpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlXG4gKiAgICAgICAgICAgIFNlZSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGlsZGVpby9odG1sYmFycy9tYXN0ZXIvTElDRU5TRVxuICogQHZlcnNpb24gICBWRVJTSU9OX1NUUklOR19QTEFDRUhPTERFUlxuICovXG5cbi8vIEJyZWFrIGN5Y2xlcyBpbiB0aGUgbW9kdWxlIGxvYWRlci5cbmltcG9ydCBcIi4vaHRtbGJhcnMtc3ludGF4XCI7XG5cbmltcG9ydCB7XG4gIGNvbXBpbGUsXG4gIGNvbXBpbGVTcGVjXG59IGZyb20gXCIuL2h0bWxiYXJzLWNvbXBpbGVyL2NvbXBpbGVyXCI7XG5cbmV4cG9ydCB7XG4gIGNvbXBpbGUsXG4gIGNvbXBpbGVTcGVjXG59O1xuIl19

@@ -126,2 +126,2 @@ exports.__esModule = true;

exports.sanitizeAttributeValue = _morphAttrSanitizeAttributeValue.sanitizeAttributeValue;
//# sourceMappingURL=data:application/json;base64,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QUFFO0tBQzdCO0dBQ0Y7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLEtBQUssRUFBRTtBQUNoRCxNQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO0FBQUUsV0FBTztHQUFFO0FBQ3pDLE1BQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOztBQUV2QixNQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsUUFBSSxTQUFTLEdBQUcsaUNBMUZYLHNCQUFzQixDQTBGWSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMzRixRQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7R0FDekMsTUFBTTtBQUNMLFFBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztHQUNyQztDQUNGLENBQUM7O0FBRUYsU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsWUFBWTtBQUMzQyxNQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxTQUFPLEtBQUssQ0FBQztDQUNkLENBQUM7Ozs7Ozs7QUFPRixTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFXLEVBQUcsQ0FBQzs7QUFFM0MsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBVztBQUN2QyxNQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQixNQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztDQUN2QixDQUFDOztrQkFFYSxTQUFTO1FBRWYsc0JBQXNCLG9DQXBIdEIsc0JBQXNCIiwiZmlsZSI6Im1vcnBoLWF0dHIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlIH0gZnJvbSBcIi4vbW9ycGgtYXR0ci9zYW5pdGl6ZS1hdHRyaWJ1dGUtdmFsdWVcIjtcbmltcG9ydCB7IGlzQXR0clJlbW92YWxWYWx1ZSwgbm9ybWFsaXplUHJvcGVydHkgfSBmcm9tIFwiLi9kb20taGVscGVyL3Byb3BcIjtcbmltcG9ydCB7IHN2Z05hbWVzcGFjZSB9IGZyb20gXCIuL2RvbS1oZWxwZXIvYnVpbGQtaHRtbC1kb21cIjtcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tIFwiLi9odG1sYmFycy11dGlsXCI7XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5KCkge1xuICByZXR1cm4gdGhpcy5kb21IZWxwZXIuZ2V0UHJvcGVydHlTdHJpY3QodGhpcy5lbGVtZW50LCB0aGlzLmF0dHJOYW1lKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlUHJvcGVydHkodmFsdWUpIHtcbiAgaWYgKHRoaXMuX3JlbmRlcmVkSW5pdGlhbGx5ID09PSB0cnVlIHx8ICFpc0F0dHJSZW1vdmFsVmFsdWUodmFsdWUpKSB7XG4gICAgLy8gZG8gbm90IHJlbmRlciBpZiBpbml0aWFsIHZhbHVlIGlzIHVuZGVmaW5lZCBvciBudWxsXG4gICAgdGhpcy5kb21IZWxwZXIuc2V0UHJvcGVydHlTdHJpY3QodGhpcy5lbGVtZW50LCB0aGlzLmF0dHJOYW1lLCB2YWx1ZSk7XG4gIH1cblxuICB0aGlzLl9yZW5kZXJlZEluaXRpYWxseSA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZSgpIHtcbiAgcmV0dXJuIHRoaXMuZG9tSGVscGVyLmdldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMuYXR0ck5hbWUpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGUodmFsdWUpIHtcbiAgaWYgKGlzQXR0clJlbW92YWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICB0aGlzLmRvbUhlbHBlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLmF0dHJOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmRvbUhlbHBlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLmF0dHJOYW1lLCB2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXR0cmlidXRlTlMoKSB7XG4gIHJldHVybiB0aGlzLmRvbUhlbHBlci5nZXRBdHRyaWJ1dGVOUyh0aGlzLmVsZW1lbnQsIHRoaXMubmFtZXNwYWNlLCB0aGlzLmF0dHJOYW1lKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQXR0cmlidXRlTlModmFsdWUpIHtcbiAgaWYgKGlzQXR0clJlbW92YWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICB0aGlzLmRvbUhlbHBlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLmF0dHJOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmRvbUhlbHBlci5zZXRBdHRyaWJ1dGVOUyh0aGlzLmVsZW1lbnQsIHRoaXMubmFtZXNwYWNlLCB0aGlzLmF0dHJOYW1lLCB2YWx1ZSk7XG4gIH1cbn1cblxudmFyIFVOU0VUID0geyB1bnNldDogdHJ1ZSB9O1xuXG52YXIgZ3VpZCA9IDE7XG5cbmZ1bmN0aW9uIEF0dHJNb3JwaChlbGVtZW50LCBhdHRyTmFtZSwgZG9tSGVscGVyLCBuYW1lc3BhY2UpIHtcbiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgdGhpcy5kb21IZWxwZXIgPSBkb21IZWxwZXI7XG4gIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlICE9PSB1bmRlZmluZWQgPyBuYW1lc3BhY2UgOiBnZXRBdHRyTmFtZXNwYWNlKGF0dHJOYW1lKTtcbiAgdGhpcy5zdGF0ZSA9IHt9O1xuICB0aGlzLmlzRGlydHkgPSBmYWxzZTtcbiAgdGhpcy5pc1N1YnRyZWVEaXJ0eSA9IGZhbHNlO1xuICB0aGlzLmVzY2FwZWQgPSB0cnVlO1xuICB0aGlzLmxhc3RWYWx1ZSA9IFVOU0VUO1xuICB0aGlzLmxhc3RSZXN1bHQgPSBudWxsO1xuICB0aGlzLmxhc3RZaWVsZGVkID0gbnVsbDtcbiAgdGhpcy5jaGlsZE5vZGVzID0gbnVsbDtcbiAgdGhpcy5saW5rZWRQYXJhbXMgPSBudWxsO1xuICB0aGlzLmxpbmtlZFJlc3VsdCA9IG51bGw7XG4gIHRoaXMuZ3VpZCA9IFwiYXR0clwiICsgZ3VpZCsrO1xuICB0aGlzLm93bmVyTm9kZSA9IG51bGw7XG4gIHRoaXMucmVuZGVyZWQgPSBmYWxzZTtcbiAgdGhpcy5fcmVuZGVyZWRJbml0aWFsbHkgPSBmYWxzZTtcblxuXG4gIGlmICh0aGlzLm5hbWVzcGFjZSkge1xuICAgIHRoaXMuX3VwZGF0ZSA9IHVwZGF0ZUF0dHJpYnV0ZU5TO1xuICAgIHRoaXMuX2dldCA9IGdldEF0dHJpYnV0ZU5TO1xuICAgIHRoaXMuYXR0ck5hbWUgPSBhdHRyTmFtZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgeyBub3JtYWxpemVkLCB0eXBlIH0gPSBub3JtYWxpemVQcm9wZXJ0eSh0aGlzLmVsZW1lbnQsIGF0dHJOYW1lKTtcblxuICAgIGlmIChlbGVtZW50Lm5hbWVzcGFjZVVSSSA9PT0gc3ZnTmFtZXNwYWNlIHx8IGF0dHJOYW1lID09PSAnc3R5bGUnIHx8IHR5cGUgPT09ICdhdHRyJykge1xuICAgICAgdGhpcy5fdXBkYXRlID0gdXBkYXRlQXR0cmlidXRlO1xuICAgICAgdGhpcy5fZ2V0ID0gZ2V0QXR0cmlidXRlO1xuICAgICAgdGhpcy5hdHRyTmFtZSA9IG5vcm1hbGl6ZWQgO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl91cGRhdGUgPSB1cGRhdGVQcm9wZXJ0eTtcbiAgICAgIHRoaXMuX2dldCA9IGdldFByb3BlcnR5O1xuICAgICAgdGhpcy5hdHRyTmFtZSA9IG5vcm1hbGl6ZWQgO1xuICAgIH1cbiAgfVxufVxuXG5BdHRyTW9ycGgucHJvdG90eXBlLnNldENvbnRlbnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHRoaXMubGFzdFZhbHVlID09PSB2YWx1ZSkgeyByZXR1cm47IH1cbiAgdGhpcy5sYXN0VmFsdWUgPSB2YWx1ZTtcblxuICBpZiAodGhpcy5lc2NhcGVkKSB7XG4gICAgdmFyIHNhbml0aXplZCA9IHNhbml0aXplQXR0cmlidXRlVmFsdWUodGhpcy5kb21IZWxwZXIsIHRoaXMuZWxlbWVudCwgdGhpcy5hdHRyTmFtZSwgdmFsdWUpO1xuICAgIHRoaXMuX3VwZGF0ZShzYW5pdGl6ZWQsIHRoaXMubmFtZXNwYWNlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl91cGRhdGUodmFsdWUsIHRoaXMubmFtZXNwYWNlKTtcbiAgfVxufTtcblxuQXR0ck1vcnBoLnByb3RvdHlwZS5nZXRDb250ZW50ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdmFsdWUgPSB0aGlzLmxhc3RWYWx1ZSA9IHRoaXMuX2dldCgpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyByZW5kZXJBbmRDbGVhbnVwIGNhbGxzIGBjbGVhcmAgb24gYWxsIGl0ZW1zIGluIHRoZSBtb3JwaCBtYXBcbi8vIGp1c3QgYmVmb3JlIGNhbGxpbmcgYGRlc3Ryb3lgIG9uIHRoZSBtb3JwaC5cbi8vXG4vLyBBcyBhIGZ1dHVyZSByZWZhY3RvciB0aGlzIGNvdWxkIGJlIGNoYW5nZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eVxuLy8gYmFjayB0byBpdHMgb3JpZ2luYWwvZGVmYXVsdCB2YWx1ZS5cbkF0dHJNb3JwaC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHsgfTtcblxuQXR0ck1vcnBoLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gIHRoaXMuZG9tSGVscGVyID0gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dHJNb3JwaDtcblxuZXhwb3J0IHsgc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZSB9O1xuIl19
//# sourceMappingURL=data:application/json;base64,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RCxNQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxFQUFFO0FBQUUsV0FBTztHQUFFO0FBQ3pDLE1BQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOztBQUV2QixNQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDaEIsUUFBSSxTQUFTLEdBQUcsd0RBQXVCLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNGLFFBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztHQUN6QyxNQUFNO0FBQ0wsUUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0dBQ3JDO0NBQ0YsQ0FBQzs7QUFFRixTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQzNDLE1BQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDLFNBQU8sS0FBSyxDQUFDO0NBQ2QsQ0FBQzs7Ozs7OztBQU9GLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVcsRUFBRyxDQUFDOztBQUUzQyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFXO0FBQ3ZDLE1BQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0NBQ3ZCLENBQUM7O2tCQUVhLFNBQVM7UUFFZixzQkFBc0IiLCJmaWxlIjoibW9ycGgtYXR0ci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNhbml0aXplQXR0cmlidXRlVmFsdWUgfSBmcm9tIFwiLi9tb3JwaC1hdHRyL3Nhbml0aXplLWF0dHJpYnV0ZS12YWx1ZVwiO1xuaW1wb3J0IHsgaXNBdHRyUmVtb3ZhbFZhbHVlLCBub3JtYWxpemVQcm9wZXJ0eSB9IGZyb20gXCIuL2RvbS1oZWxwZXIvcHJvcFwiO1xuaW1wb3J0IHsgc3ZnTmFtZXNwYWNlIH0gZnJvbSBcIi4vZG9tLWhlbHBlci9idWlsZC1odG1sLWRvbVwiO1xuaW1wb3J0IHsgZ2V0QXR0ck5hbWVzcGFjZSB9IGZyb20gXCIuL2h0bWxiYXJzLXV0aWxcIjtcblxuZnVuY3Rpb24gZ2V0UHJvcGVydHkoKSB7XG4gIHJldHVybiB0aGlzLmRvbUhlbHBlci5nZXRQcm9wZXJ0eVN0cmljdCh0aGlzLmVsZW1lbnQsIHRoaXMuYXR0ck5hbWUpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVQcm9wZXJ0eSh2YWx1ZSkge1xuICBpZiAodGhpcy5fcmVuZGVyZWRJbml0aWFsbHkgPT09IHRydWUgfHwgIWlzQXR0clJlbW92YWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAvLyBkbyBub3QgcmVuZGVyIGlmIGluaXRpYWwgdmFsdWUgaXMgdW5kZWZpbmVkIG9yIG51bGxcbiAgICB0aGlzLmRvbUhlbHBlci5zZXRQcm9wZXJ0eVN0cmljdCh0aGlzLmVsZW1lbnQsIHRoaXMuYXR0ck5hbWUsIHZhbHVlKTtcbiAgfVxuXG4gIHRoaXMuX3JlbmRlcmVkSW5pdGlhbGx5ID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0QXR0cmlidXRlKCkge1xuICByZXR1cm4gdGhpcy5kb21IZWxwZXIuZ2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgdGhpcy5hdHRyTmFtZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUF0dHJpYnV0ZSh2YWx1ZSkge1xuICBpZiAoaXNBdHRyUmVtb3ZhbFZhbHVlKHZhbHVlKSkge1xuICAgIHRoaXMuZG9tSGVscGVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMuYXR0ck5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZG9tSGVscGVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMuYXR0ck5hbWUsIHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBdHRyaWJ1dGVOUygpIHtcbiAgcmV0dXJuIHRoaXMuZG9tSGVscGVyLmdldEF0dHJpYnV0ZU5TKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lc3BhY2UsIHRoaXMuYXR0ck5hbWUpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVBdHRyaWJ1dGVOUyh2YWx1ZSkge1xuICBpZiAoaXNBdHRyUmVtb3ZhbFZhbHVlKHZhbHVlKSkge1xuICAgIHRoaXMuZG9tSGVscGVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIHRoaXMuYXR0ck5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZG9tSGVscGVyLnNldEF0dHJpYnV0ZU5TKHRoaXMuZWxlbWVudCwgdGhpcy5uYW1lc3BhY2UsIHRoaXMuYXR0ck5hbWUsIHZhbHVlKTtcbiAgfVxufVxuXG52YXIgVU5TRVQgPSB7IHVuc2V0OiB0cnVlIH07XG5cbnZhciBndWlkID0gMTtcblxuZnVuY3Rpb24gQXR0ck1vcnBoKGVsZW1lbnQsIGF0dHJOYW1lLCBkb21IZWxwZXIsIG5hbWVzcGFjZSkge1xuICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB0aGlzLmRvbUhlbHBlciA9IGRvbUhlbHBlcjtcbiAgdGhpcy5uYW1lc3BhY2UgPSBuYW1lc3BhY2UgIT09IHVuZGVmaW5lZCA/IG5hbWVzcGFjZSA6IGdldEF0dHJOYW1lc3BhY2UoYXR0ck5hbWUpO1xuICB0aGlzLnN0YXRlID0ge307XG4gIHRoaXMuaXNEaXJ0eSA9IGZhbHNlO1xuICB0aGlzLmlzU3VidHJlZURpcnR5ID0gZmFsc2U7XG4gIHRoaXMuZXNjYXBlZCA9IHRydWU7XG4gIHRoaXMubGFzdFZhbHVlID0gVU5TRVQ7XG4gIHRoaXMubGFzdFJlc3VsdCA9IG51bGw7XG4gIHRoaXMubGFzdFlpZWxkZWQgPSBudWxsO1xuICB0aGlzLmNoaWxkTm9kZXMgPSBudWxsO1xuICB0aGlzLmxpbmtlZFBhcmFtcyA9IG51bGw7XG4gIHRoaXMubGlua2VkUmVzdWx0ID0gbnVsbDtcbiAgdGhpcy5ndWlkID0gXCJhdHRyXCIgKyBndWlkKys7XG4gIHRoaXMub3duZXJOb2RlID0gbnVsbDtcbiAgdGhpcy5yZW5kZXJlZCA9IGZhbHNlO1xuICB0aGlzLl9yZW5kZXJlZEluaXRpYWxseSA9IGZhbHNlO1xuXG5cbiAgaWYgKHRoaXMubmFtZXNwYWNlKSB7XG4gICAgdGhpcy5fdXBkYXRlID0gdXBkYXRlQXR0cmlidXRlTlM7XG4gICAgdGhpcy5fZ2V0ID0gZ2V0QXR0cmlidXRlTlM7XG4gICAgdGhpcy5hdHRyTmFtZSA9IGF0dHJOYW1lO1xuICB9IGVsc2Uge1xuICAgIHZhciB7IG5vcm1hbGl6ZWQsIHR5cGUgfSA9IG5vcm1hbGl6ZVByb3BlcnR5KHRoaXMuZWxlbWVudCwgYXR0ck5hbWUpO1xuXG4gICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJID09PSBzdmdOYW1lc3BhY2UgfHwgYXR0ck5hbWUgPT09ICdzdHlsZScgfHwgdHlwZSA9PT0gJ2F0dHInKSB7XG4gICAgICB0aGlzLl91cGRhdGUgPSB1cGRhdGVBdHRyaWJ1dGU7XG4gICAgICB0aGlzLl9nZXQgPSBnZXRBdHRyaWJ1dGU7XG4gICAgICB0aGlzLmF0dHJOYW1lID0gbm9ybWFsaXplZCA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3VwZGF0ZSA9IHVwZGF0ZVByb3BlcnR5O1xuICAgICAgdGhpcy5fZ2V0ID0gZ2V0UHJvcGVydHk7XG4gICAgICB0aGlzLmF0dHJOYW1lID0gbm9ybWFsaXplZCA7XG4gICAgfVxuICB9XG59XG5cbkF0dHJNb3JwaC5wcm90b3R5cGUuc2V0Q29udGVudCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAodGhpcy5sYXN0VmFsdWUgPT09IHZhbHVlKSB7IHJldHVybjsgfVxuICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xuXG4gIGlmICh0aGlzLmVzY2FwZWQpIHtcbiAgICB2YXIgc2FuaXRpemVkID0gc2FuaXRpemVBdHRyaWJ1dGVWYWx1ZSh0aGlzLmRvbUhlbHBlciwgdGhpcy5lbGVtZW50LCB0aGlzLmF0dHJOYW1lLCB2YWx1ZSk7XG4gICAgdGhpcy5fdXBkYXRlKHNhbml0aXplZCwgdGhpcy5uYW1lc3BhY2UpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3VwZGF0ZSh2YWx1ZSwgdGhpcy5uYW1lc3BhY2UpO1xuICB9XG59O1xuXG5BdHRyTW9ycGgucHJvdG90eXBlLmdldENvbnRlbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB2YWx1ZSA9IHRoaXMubGFzdFZhbHVlID0gdGhpcy5fZ2V0KCk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbi8vIHJlbmRlckFuZENsZWFudXAgY2FsbHMgYGNsZWFyYCBvbiBhbGwgaXRlbXMgaW4gdGhlIG1vcnBoIG1hcFxuLy8ganVzdCBiZWZvcmUgY2FsbGluZyBgZGVzdHJveWAgb24gdGhlIG1vcnBoLlxuLy9cbi8vIEFzIGEgZnV0dXJlIHJlZmFjdG9yIHRoaXMgY291bGQgYmUgY2hhbmdlZCB0byBzZXQgdGhlIHByb3BlcnR5XG4vLyBiYWNrIHRvIGl0cyBvcmlnaW5hbC9kZWZhdWx0IHZhbHVlLlxuQXR0ck1vcnBoLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkgeyB9O1xuXG5BdHRyTW9ycGgucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgdGhpcy5kb21IZWxwZXIgPSBudWxsO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ck1vcnBoO1xuXG5leHBvcnQgeyBzYW5pdGl6ZUF0dHJpYnV0ZVZhbHVlIH07XG4iXX0=

@@ -266,2 +266,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vcnBoLXJhbmdlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OytCQUFvQyxxQkFBcUI7Ozs7QUFJekQsU0FBUyxLQUFLLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFO0FBQzNDLE1BQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDOztBQUUzQixNQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7OztBQUczQyxNQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUN0QixNQUFJLENBQUMsUUFBUSxHQUFJLElBQUksQ0FBQzs7O0FBR3RCLE1BQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDOzs7QUFHN0IsTUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDNUIsTUFBSSxDQUFDLGFBQWEsR0FBSyxJQUFJLENBQUM7QUFDNUIsTUFBSSxDQUFDLFNBQVMsR0FBUyxJQUFJLENBQUM7Q0FDN0I7O0FBRUQsS0FBSyxDQUFDLEtBQUssR0FBRyxVQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtBQUNwRCxNQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUNwRCxPQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDZCxTQUFPLEtBQUssQ0FBQztDQUNkLENBQUM7O0FBRUYsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUU7QUFDM0QsTUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDcEQsT0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixTQUFPLEtBQUssQ0FBQztDQUNkLENBQUM7O0FBRUYsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFO0FBQzFFLE1BQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3BELE9BQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLFNBQU8sS0FBSyxDQUFDO0NBQ2QsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtBQUM5RCxNQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRTtBQUM3QyxXQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztHQUNyQjs7QUFFRCxNQUFJLElBQUksR0FBRyxPQUFPLE9BQU8sQ0FBQztBQUMxQixVQUFRLElBQUk7QUFDVixTQUFLLFFBQVE7QUFDWCxVQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7QUFDeEIsZUFBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7T0FDbkQ7QUFDRCxhQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFBQSxBQUMvQixTQUFLLFFBQVE7QUFDWCxVQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDeEMsZUFBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO09BQzlCOztBQUVELFVBQUksT0FBTyxPQUFPLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtBQUN0QyxlQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO09BQ3JDO0FBQ0QsVUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQ3hCLGVBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztPQUN6QztBQUFBO0FBRUgsU0FBSyxTQUFTLENBQUM7QUFDZixTQUFLLFFBQVE7QUFDWCxhQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFBQSxBQUMxQztBQUNFLFlBQU0sSUFBSSxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUFBLEdBQzlDO0NBQ0YsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLFdBQVcsR0FBRztBQUM3QyxNQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUQsU0FBTyxJQUFJLENBQUM7Q0FDYixDQUFDOztBQUVGLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRTtBQUNyRCxNQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQy9CLE1BQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7O0FBRTdCLE1BQUksU0FBUyxJQUNULFFBQVEsS0FBSyxTQUFTLElBQ3RCLFNBQVMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO0FBQzVCLGFBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFdBQU8sU0FBUyxDQUFDO0dBQ2xCOztBQUVELFNBQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUM5RSxDQUFDO0NBQ0gsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLGFBQWEsQ0FBQyxPQUFPLEVBQUU7QUFDeEQsTUFBSSxTQUFTLEVBQUUsUUFBUSxDQUFDO0FBQ3hCLFVBQVEsT0FBTyxDQUFDLFFBQVE7QUFDdEIsU0FBSyxDQUFDO0FBQ0osZUFBUyxHQUFHLE9BQU8sQ0FBQztBQUNwQixjQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ25CLFlBQU07QUFBQSxBQUNSLFNBQUssRUFBRTtBQUNMLGVBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQy9CLGNBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQzdCLFVBQUksU0FBUyxLQUFLLElBQUksRUFBRTtBQUN0QixpQkFBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLGVBQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0IsZ0JBQVEsR0FBRyxTQUFTLENBQUM7T0FDdEI7QUFDRCxZQUFNO0FBQUEsQUFDUjtBQUNFLGVBQVMsR0FBRyxPQUFPLENBQUM7QUFDcEIsY0FBUSxHQUFHLE9BQU8sQ0FBQztBQUNuQixZQUFNO0FBQUEsR0FDVDs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQzs7QUFFbkMsU0FBTyxPQUFPLENBQUM7Q0FDaEIsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLFNBQVMsRUFBRSxRQUFRLEVBQUU7QUFDeEQsTUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3ZDLE1BQUksaUJBQWlCLEtBQUssSUFBSSxFQUFFOztBQUU5QixRQUFJLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7QUFDOUMsUUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFO0FBQ3ZCLHVCQTlIVSxZQUFZLENBOEhULFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDakUsdUJBL0hHLEtBQUssQ0ErSEYsVUFBVSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNyRDtHQUNGOztBQUVELE1BQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDOztBQUV6QixNQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7QUFDeEIsUUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RCLFFBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztHQUN0QjtDQUNGLENBQUM7O0FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxhQUFhLEdBQUc7QUFDakQsTUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOztBQUVkLE1BQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7QUFDL0IsTUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM3QixNQUFJLFVBQVUsR0FBRyxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQzs7QUFFbkQsTUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDdEIsTUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7O0FBRXJCLG1CQXRKTyxLQUFLLENBc0pOLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDeEMsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLFlBQVksR0FBRztBQUMvQyxNQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQzNDLE1BQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDdkMsTUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7QUFFL0IsTUFBSSxhQUFhLEVBQUU7QUFDakIsUUFBSSxTQUFTLEVBQUU7QUFDYixtQkFBYSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDcEMsZUFBUyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7S0FDekMsTUFBTTtBQUNMLG1CQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUMvQixxQkFBZSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7S0FDaEQ7R0FDRixNQUFNO0FBQ0wsUUFBSSxTQUFTLEVBQUU7QUFDYixlQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztBQUMvQixxQkFBZSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7S0FDN0MsTUFBTSxJQUFJLGVBQWUsRUFBRTtBQUMxQixxQkFBZSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztLQUN6RTtHQUNGOztBQUVELE1BQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE1BQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLE1BQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDOztBQUUxQixNQUFJLGVBQWUsSUFBSSxlQUFlLENBQUMsWUFBWSxFQUFFO0FBQ25ELFFBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFOztBQUVwQyxxQkFBZSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQyxhQUFPO0tBQ1IsTUFBTTtBQUNMLHFCQUFlLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ2pELHFCQUFlLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQ2hEO0dBQ0Y7Q0FDRixDQUFDOztBQUVGLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQ3ZDLE1BQUksUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0RSxTQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Q0FDL0IsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLHFCQUFxQixDQUFDLFNBQVMsRUFBRTtBQUN2RSxXQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUM5QixNQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7O0FBRWIsTUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDOztBQUV2QyxNQUFJLFNBQVMsQ0FBQyxlQUFlLEVBQUU7QUFDN0IsUUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztBQUNyRCxRQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDOztBQUVsRCxRQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDOztBQUV4QyxXQUFPLE9BQU8sRUFBRTtBQUNkLFVBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDN0IsYUFBTyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xELGFBQU8sR0FBRyxJQUFJLENBQUM7S0FDaEI7QUFDRCxxQkFBaUIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7R0FDN0Q7Q0FDRixDQUFDOztBQUVGLEtBQUssQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFNBQVMsbUJBQW1CLEdBQUc7QUFDOUQsTUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLE1BQUksZUFBZSxDQUFDO0FBQ3BCLFNBQU8sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUU7QUFDOUMsUUFBSSxlQUFlLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtBQUN6QyxZQUFNO0tBQ1A7QUFDRCxRQUFJLEtBQUssS0FBSyxlQUFlLENBQUMsZUFBZSxFQUFFO0FBQzdDLFlBQU07S0FDUDtBQUNELFFBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtBQUM5RCxZQUFNO0tBQ1A7O0FBRUQsbUJBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7O0FBRXpELFNBQUssR0FBRyxlQUFlLENBQUMsWUFBWSxDQUFDO0dBQ3RDO0NBQ0YsQ0FBQzs7QUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLGtCQUFrQixHQUFHO0FBQzVELE1BQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQixNQUFJLGVBQWUsQ0FBQztBQUNwQixTQUFPLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFO0FBQzlDLFFBQUksZUFBZSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7QUFDekMsWUFBTTtLQUNQO0FBQ0QsUUFBSSxLQUFLLEtBQUssZUFBZSxDQUFDLGNBQWMsRUFBRTtBQUM1QyxZQUFNO0tBQ1A7QUFDRCxRQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7QUFDNUQsWUFBTTtLQUNQOztBQUVELG1CQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDOztBQUV2RCxTQUFLLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztHQUN0QztDQUNGLENBQUM7O0FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUU7QUFDdEYsbUJBbFFjLFlBQVksQ0FrUWIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNsRSxDQUFDOztBQUVGLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsa0JBQWtCLENBQUMsVUFBVSxFQUFFO0FBQ3JFLG1CQXRRYyxZQUFZLENBc1FiLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDL0QsQ0FBQzs7a0JBRWEsS0FBSyIsImZpbGUiOiJtb3JwaC1yYW5nZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsZWFyLCBpbnNlcnRCZWZvcmUgfSBmcm9tICcuL21vcnBoLXJhbmdlL3V0aWxzJztcblxuLy8gY29uc3RydWN0b3IganVzdCBpbml0aWFsaXplcyB0aGUgZmllbGRzXG4vLyB1c2Ugb25lIG9mIHRoZSBzdGF0aWMgaW5pdGlhbGl6ZXJzIHRvIGNyZWF0ZSBhIHZhbGlkIG1vcnBoLlxuZnVuY3Rpb24gTW9ycGgoZG9tSGVscGVyLCBjb250ZXh0dWFsRWxlbWVudCkge1xuICB0aGlzLmRvbUhlbHBlciA9IGRvbUhlbHBlcjtcbiAgLy8gY29udGV4dCBpZiBjb250ZW50IGlmIGN1cnJlbnQgY29udGVudCBpcyBkZXRhY2hlZFxuICB0aGlzLmNvbnRleHR1YWxFbGVtZW50ID0gY29udGV4dHVhbEVsZW1lbnQ7XG4gIC8vIGluY2x1c2l2ZSByYW5nZSBvZiBtb3JwaFxuICAvLyB0aGVzZSBzaG91bGQgYmUgbm9kZVR5cGUgMSwgMywgb3IgOFxuICB0aGlzLmZpcnN0Tm9kZSA9IG51bGw7XG4gIHRoaXMubGFzdE5vZGUgID0gbnVsbDtcblxuICAvLyBmbGFnIHRvIGZvcmNlIHRleHQgdG8gc2V0Q29udGVudCB0byBiZSB0cmVhdGVkIGFzIGh0bWxcbiAgdGhpcy5wYXJzZVRleHRBc0hUTUwgPSBmYWxzZTtcblxuICAvLyBtb3JwaCBsaXN0IGdyYXBoXG4gIHRoaXMucGFyZW50TW9ycGhMaXN0ID0gbnVsbDtcbiAgdGhpcy5wcmV2aW91c01vcnBoICAgPSBudWxsO1xuICB0aGlzLm5leHRNb3JwaCAgICAgICA9IG51bGw7XG59XG5cbk1vcnBoLmVtcHR5ID0gZnVuY3Rpb24gKGRvbUhlbHBlciwgY29udGV4dHVhbEVsZW1lbnQpIHtcbiAgdmFyIG1vcnBoID0gbmV3IE1vcnBoKGRvbUhlbHBlciwgY29udGV4dHVhbEVsZW1lbnQpO1xuICBtb3JwaC5jbGVhcigpO1xuICByZXR1cm4gbW9ycGg7XG59O1xuXG5Nb3JwaC5jcmVhdGUgPSBmdW5jdGlvbiAoZG9tSGVscGVyLCBjb250ZXh0dWFsRWxlbWVudCwgbm9kZSkge1xuICB2YXIgbW9ycGggPSBuZXcgTW9ycGgoZG9tSGVscGVyLCBjb250ZXh0dWFsRWxlbWVudCk7XG4gIG1vcnBoLnNldE5vZGUobm9kZSk7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbk1vcnBoLmF0dGFjaCA9IGZ1bmN0aW9uIChkb21IZWxwZXIsIGNvbnRleHR1YWxFbGVtZW50LCBmaXJzdE5vZGUsIGxhc3ROb2RlKSB7XG4gIHZhciBtb3JwaCA9IG5ldyBNb3JwaChkb21IZWxwZXIsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgbW9ycGguc2V0UmFuZ2UoZmlyc3ROb2RlLCBsYXN0Tm9kZSk7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbk1vcnBoLnByb3RvdHlwZS5zZXRDb250ZW50ID0gZnVuY3Rpb24gTW9ycGgkc2V0Q29udGVudChjb250ZW50KSB7XG4gIGlmIChjb250ZW50ID09PSBudWxsIHx8IGNvbnRlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICB2YXIgdHlwZSA9IHR5cGVvZiBjb250ZW50O1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgaWYgKHRoaXMucGFyc2VUZXh0QXNIVE1MKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvbUhlbHBlci5zZXRNb3JwaEhUTUwodGhpcywgY29udGVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zZXRUZXh0KGNvbnRlbnQpO1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBpZiAodHlwZW9mIGNvbnRlbnQubm9kZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldE5vZGUoY29udGVudCk7XG4gICAgICB9XG4gICAgICAvKiBIYW5kbGViYXJzLlNhZmVTdHJpbmcgKi9cbiAgICAgIGlmICh0eXBlb2YgY29udGVudC5zdHJpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldEhUTUwoY29udGVudC5zdHJpbmcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGFyc2VUZXh0QXNIVE1MKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldEhUTUwoY29udGVudC50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIHRoaXMuc2V0VGV4dChjb250ZW50LnRvU3RyaW5nKCkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCBjb250ZW50Jyk7XG4gIH1cbn07XG5cbk1vcnBoLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIE1vcnBoJGNsZWFyKCkge1xuICB2YXIgbm9kZSA9IHRoaXMuc2V0Tm9kZSh0aGlzLmRvbUhlbHBlci5jcmVhdGVDb21tZW50KCcnKSk7XG4gIHJldHVybiBub2RlO1xufTtcblxuTW9ycGgucHJvdG90eXBlLnNldFRleHQgPSBmdW5jdGlvbiBNb3JwaCRzZXRUZXh0KHRleHQpIHtcbiAgdmFyIGZpcnN0Tm9kZSA9IHRoaXMuZmlyc3ROb2RlO1xuICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuXG4gIGlmIChmaXJzdE5vZGUgJiZcbiAgICAgIGxhc3ROb2RlID09PSBmaXJzdE5vZGUgJiZcbiAgICAgIGZpcnN0Tm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgIGZpcnN0Tm9kZS5ub2RlVmFsdWUgPSB0ZXh0O1xuICAgIHJldHVybiBmaXJzdE5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5zZXROb2RlKFxuICAgIHRleHQgPyB0aGlzLmRvbUhlbHBlci5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSA6IHRoaXMuZG9tSGVscGVyLmNyZWF0ZUNvbW1lbnQoJycpXG4gICk7XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uIE1vcnBoJHNldE5vZGUobmV3Tm9kZSkge1xuICB2YXIgZmlyc3ROb2RlLCBsYXN0Tm9kZTtcbiAgc3dpdGNoIChuZXdOb2RlLm5vZGVUeXBlKSB7XG4gICAgY2FzZSAzOlxuICAgICAgZmlyc3ROb2RlID0gbmV3Tm9kZTtcbiAgICAgIGxhc3ROb2RlID0gbmV3Tm9kZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBmaXJzdE5vZGUgPSBuZXdOb2RlLmZpcnN0Q2hpbGQ7XG4gICAgICBsYXN0Tm9kZSA9IG5ld05vZGUubGFzdENoaWxkO1xuICAgICAgaWYgKGZpcnN0Tm9kZSA9PT0gbnVsbCkge1xuICAgICAgICBmaXJzdE5vZGUgPSB0aGlzLmRvbUhlbHBlci5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgICAgbmV3Tm9kZS5hcHBlbmRDaGlsZChmaXJzdE5vZGUpO1xuICAgICAgICBsYXN0Tm9kZSA9IGZpcnN0Tm9kZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmaXJzdE5vZGUgPSBuZXdOb2RlO1xuICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICB0aGlzLnNldFJhbmdlKGZpcnN0Tm9kZSwgbGFzdE5vZGUpO1xuXG4gIHJldHVybiBuZXdOb2RlO1xufTtcblxuTW9ycGgucHJvdG90eXBlLnNldFJhbmdlID0gZnVuY3Rpb24gKGZpcnN0Tm9kZSwgbGFzdE5vZGUpIHtcbiAgdmFyIHByZXZpb3VzRmlyc3ROb2RlID0gdGhpcy5maXJzdE5vZGU7XG4gIGlmIChwcmV2aW91c0ZpcnN0Tm9kZSAhPT0gbnVsbCkge1xuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBwcmV2aW91c0ZpcnN0Tm9kZS5wYXJlbnROb2RlO1xuICAgIGlmIChwYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgZmlyc3ROb2RlLCBsYXN0Tm9kZSwgcHJldmlvdXNGaXJzdE5vZGUpO1xuICAgICAgY2xlYXIocGFyZW50Tm9kZSwgcHJldmlvdXNGaXJzdE5vZGUsIHRoaXMubGFzdE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuZmlyc3ROb2RlID0gZmlyc3ROb2RlO1xuICB0aGlzLmxhc3ROb2RlID0gbGFzdE5vZGU7XG5cbiAgaWYgKHRoaXMucGFyZW50TW9ycGhMaXN0KSB7XG4gICAgdGhpcy5fc3luY0ZpcnN0Tm9kZSgpO1xuICAgIHRoaXMuX3N5bmNMYXN0Tm9kZSgpO1xuICB9XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIE1vcnBoJGRlc3Ryb3koKSB7XG4gIHRoaXMudW5saW5rKCk7XG5cbiAgdmFyIGZpcnN0Tm9kZSA9IHRoaXMuZmlyc3ROb2RlO1xuICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuICB2YXIgcGFyZW50Tm9kZSA9IGZpcnN0Tm9kZSAmJiBmaXJzdE5vZGUucGFyZW50Tm9kZTtcblxuICB0aGlzLmZpcnN0Tm9kZSA9IG51bGw7XG4gIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuXG4gIGNsZWFyKHBhcmVudE5vZGUsIGZpcnN0Tm9kZSwgbGFzdE5vZGUpO1xufTtcblxuTW9ycGgucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uIE1vcnBoJHVubGluaygpIHtcbiAgdmFyIHBhcmVudE1vcnBoTGlzdCA9IHRoaXMucGFyZW50TW9ycGhMaXN0O1xuICB2YXIgcHJldmlvdXNNb3JwaCA9IHRoaXMucHJldmlvdXNNb3JwaDtcbiAgdmFyIG5leHRNb3JwaCA9IHRoaXMubmV4dE1vcnBoO1xuXG4gIGlmIChwcmV2aW91c01vcnBoKSB7XG4gICAgaWYgKG5leHRNb3JwaCkge1xuICAgICAgcHJldmlvdXNNb3JwaC5uZXh0TW9ycGggPSBuZXh0TW9ycGg7XG4gICAgICBuZXh0TW9ycGgucHJldmlvdXNNb3JwaCA9IHByZXZpb3VzTW9ycGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXZpb3VzTW9ycGgubmV4dE1vcnBoID0gbnVsbDtcbiAgICAgIHBhcmVudE1vcnBoTGlzdC5sYXN0Q2hpbGRNb3JwaCA9IHByZXZpb3VzTW9ycGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChuZXh0TW9ycGgpIHtcbiAgICAgIG5leHRNb3JwaC5wcmV2aW91c01vcnBoID0gbnVsbDtcbiAgICAgIHBhcmVudE1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGggPSBuZXh0TW9ycGg7XG4gICAgfSBlbHNlIGlmIChwYXJlbnRNb3JwaExpc3QpIHtcbiAgICAgIHBhcmVudE1vcnBoTGlzdC5sYXN0Q2hpbGRNb3JwaCA9IHBhcmVudE1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGggPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMucGFyZW50TW9ycGhMaXN0ID0gbnVsbDtcbiAgdGhpcy5uZXh0TW9ycGggPSBudWxsO1xuICB0aGlzLnByZXZpb3VzTW9ycGggPSBudWxsO1xuXG4gIGlmIChwYXJlbnRNb3JwaExpc3QgJiYgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaCkge1xuICAgIGlmICghcGFyZW50TW9ycGhMaXN0LmZpcnN0Q2hpbGRNb3JwaCkge1xuICAgICAgLy8gbGlzdCBpcyBlbXB0eVxuICAgICAgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRNb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoLl9zeW5jRmlyc3ROb2RlKCk7XG4gICAgICBwYXJlbnRNb3JwaExpc3QubGFzdENoaWxkTW9ycGguX3N5bmNMYXN0Tm9kZSgpO1xuICAgIH1cbiAgfVxufTtcblxuTW9ycGgucHJvdG90eXBlLnNldEhUTUwgPSBmdW5jdGlvbih0ZXh0KSB7XG4gIHZhciBmcmFnbWVudCA9IHRoaXMuZG9tSGVscGVyLnBhcnNlSFRNTCh0ZXh0LCB0aGlzLmNvbnRleHR1YWxFbGVtZW50KTtcbiAgcmV0dXJuIHRoaXMuc2V0Tm9kZShmcmFnbWVudCk7XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuc2V0TW9ycGhMaXN0ID0gZnVuY3Rpb24gTW9ycGgkYXBwZW5kTW9ycGhMaXN0KG1vcnBoTGlzdCkge1xuICBtb3JwaExpc3QubW91bnRlZE1vcnBoID0gdGhpcztcbiAgdGhpcy5jbGVhcigpO1xuXG4gIHZhciBvcmlnaW5hbEZpcnN0Tm9kZSA9IHRoaXMuZmlyc3ROb2RlO1xuXG4gIGlmIChtb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoKSB7XG4gICAgdGhpcy5maXJzdE5vZGUgPSBtb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoLmZpcnN0Tm9kZTtcbiAgICB0aGlzLmxhc3ROb2RlID0gbW9ycGhMaXN0Lmxhc3RDaGlsZE1vcnBoLmxhc3ROb2RlO1xuXG4gICAgdmFyIGN1cnJlbnQgPSBtb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIHZhciBuZXh0ID0gY3VycmVudC5uZXh0TW9ycGg7XG4gICAgICBjdXJyZW50Lmluc2VydEJlZm9yZU5vZGUob3JpZ2luYWxGaXJzdE5vZGUsIG51bGwpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuICAgIG9yaWdpbmFsRmlyc3ROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3JpZ2luYWxGaXJzdE5vZGUpO1xuICB9XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuX3N5bmNGaXJzdE5vZGUgPSBmdW5jdGlvbiBNb3JwaCRzeW5jRmlyc3ROb2RlKCkge1xuICB2YXIgbW9ycGggPSB0aGlzO1xuICB2YXIgcGFyZW50TW9ycGhMaXN0O1xuICB3aGlsZSAocGFyZW50TW9ycGhMaXN0ID0gbW9ycGgucGFyZW50TW9ycGhMaXN0KSB7XG4gICAgaWYgKHBhcmVudE1vcnBoTGlzdC5tb3VudGVkTW9ycGggPT09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobW9ycGggIT09IHBhcmVudE1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGgpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobW9ycGguZmlyc3ROb2RlID09PSBwYXJlbnRNb3JwaExpc3QubW91bnRlZE1vcnBoLmZpcnN0Tm9kZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5maXJzdE5vZGUgPSBtb3JwaC5maXJzdE5vZGU7XG5cbiAgICBtb3JwaCA9IHBhcmVudE1vcnBoTGlzdC5tb3VudGVkTW9ycGg7XG4gIH1cbn07XG5cbk1vcnBoLnByb3RvdHlwZS5fc3luY0xhc3ROb2RlID0gZnVuY3Rpb24gTW9ycGgkc3luY0xhc3ROb2RlKCkge1xuICB2YXIgbW9ycGggPSB0aGlzO1xuICB2YXIgcGFyZW50TW9ycGhMaXN0O1xuICB3aGlsZSAocGFyZW50TW9ycGhMaXN0ID0gbW9ycGgucGFyZW50TW9ycGhMaXN0KSB7XG4gICAgaWYgKHBhcmVudE1vcnBoTGlzdC5tb3VudGVkTW9ycGggPT09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobW9ycGggIT09IHBhcmVudE1vcnBoTGlzdC5sYXN0Q2hpbGRNb3JwaCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChtb3JwaC5sYXN0Tm9kZSA9PT0gcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5sYXN0Tm9kZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5sYXN0Tm9kZSA9IG1vcnBoLmxhc3ROb2RlO1xuXG4gICAgbW9ycGggPSBwYXJlbnRNb3JwaExpc3QubW91bnRlZE1vcnBoO1xuICB9XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlTm9kZSA9IGZ1bmN0aW9uIE1vcnBoJGluc2VydEJlZm9yZU5vZGUocGFyZW50Tm9kZSwgcmVmTm9kZSkge1xuICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgdGhpcy5maXJzdE5vZGUsIHRoaXMubGFzdE5vZGUsIHJlZk5vZGUpO1xufTtcblxuTW9ycGgucHJvdG90eXBlLmFwcGVuZFRvTm9kZSA9IGZ1bmN0aW9uIE1vcnBoJGFwcGVuZFRvTm9kZShwYXJlbnROb2RlKSB7XG4gIGluc2VydEJlZm9yZShwYXJlbnROb2RlLCB0aGlzLmZpcnN0Tm9kZSwgdGhpcy5sYXN0Tm9kZSwgbnVsbCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb3JwaDtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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ZSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7QUFDekMsWUFBTTtLQUNQO0FBQ0QsUUFBSSxLQUFLLEtBQUssZUFBZSxDQUFDLGNBQWMsRUFBRTtBQUM1QyxZQUFNO0tBQ1A7QUFDRCxRQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7QUFDNUQsWUFBTTtLQUNQOztBQUVELG1CQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDOztBQUV2RCxTQUFLLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztHQUN0QztDQUNGLENBQUM7O0FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUU7QUFDdEYsZ0NBQWEsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUNsRSxDQUFDOztBQUVGLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsa0JBQWtCLENBQUMsVUFBVSxFQUFFO0FBQ3JFLGdDQUFhLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Q0FDL0QsQ0FBQzs7a0JBRWEsS0FBSyIsImZpbGUiOiJtb3JwaC1yYW5nZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsZWFyLCBpbnNlcnRCZWZvcmUgfSBmcm9tICcuL21vcnBoLXJhbmdlL3V0aWxzJztcblxuLy8gY29uc3RydWN0b3IganVzdCBpbml0aWFsaXplcyB0aGUgZmllbGRzXG4vLyB1c2Ugb25lIG9mIHRoZSBzdGF0aWMgaW5pdGlhbGl6ZXJzIHRvIGNyZWF0ZSBhIHZhbGlkIG1vcnBoLlxuZnVuY3Rpb24gTW9ycGgoZG9tSGVscGVyLCBjb250ZXh0dWFsRWxlbWVudCkge1xuICB0aGlzLmRvbUhlbHBlciA9IGRvbUhlbHBlcjtcbiAgLy8gY29udGV4dCBpZiBjb250ZW50IGlmIGN1cnJlbnQgY29udGVudCBpcyBkZXRhY2hlZFxuICB0aGlzLmNvbnRleHR1YWxFbGVtZW50ID0gY29udGV4dHVhbEVsZW1lbnQ7XG4gIC8vIGluY2x1c2l2ZSByYW5nZSBvZiBtb3JwaFxuICAvLyB0aGVzZSBzaG91bGQgYmUgbm9kZVR5cGUgMSwgMywgb3IgOFxuICB0aGlzLmZpcnN0Tm9kZSA9IG51bGw7XG4gIHRoaXMubGFzdE5vZGUgID0gbnVsbDtcblxuICAvLyBmbGFnIHRvIGZvcmNlIHRleHQgdG8gc2V0Q29udGVudCB0byBiZSB0cmVhdGVkIGFzIGh0bWxcbiAgdGhpcy5wYXJzZVRleHRBc0hUTUwgPSBmYWxzZTtcblxuICAvLyBtb3JwaCBsaXN0IGdyYXBoXG4gIHRoaXMucGFyZW50TW9ycGhMaXN0ID0gbnVsbDtcbiAgdGhpcy5wcmV2aW91c01vcnBoICAgPSBudWxsO1xuICB0aGlzLm5leHRNb3JwaCAgICAgICA9IG51bGw7XG59XG5cbk1vcnBoLmVtcHR5ID0gZnVuY3Rpb24gKGRvbUhlbHBlciwgY29udGV4dHVhbEVsZW1lbnQpIHtcbiAgdmFyIG1vcnBoID0gbmV3IE1vcnBoKGRvbUhlbHBlciwgY29udGV4dHVhbEVsZW1lbnQpO1xuICBtb3JwaC5jbGVhcigpO1xuICByZXR1cm4gbW9ycGg7XG59O1xuXG5Nb3JwaC5jcmVhdGUgPSBmdW5jdGlvbiAoZG9tSGVscGVyLCBjb250ZXh0dWFsRWxlbWVudCwgbm9kZSkge1xuICB2YXIgbW9ycGggPSBuZXcgTW9ycGgoZG9tSGVscGVyLCBjb250ZXh0dWFsRWxlbWVudCk7XG4gIG1vcnBoLnNldE5vZGUobm9kZSk7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbk1vcnBoLmF0dGFjaCA9IGZ1bmN0aW9uIChkb21IZWxwZXIsIGNvbnRleHR1YWxFbGVtZW50LCBmaXJzdE5vZGUsIGxhc3ROb2RlKSB7XG4gIHZhciBtb3JwaCA9IG5ldyBNb3JwaChkb21IZWxwZXIsIGNvbnRleHR1YWxFbGVtZW50KTtcbiAgbW9ycGguc2V0UmFuZ2UoZmlyc3ROb2RlLCBsYXN0Tm9kZSk7XG4gIHJldHVybiBtb3JwaDtcbn07XG5cbk1vcnBoLnByb3RvdHlwZS5zZXRDb250ZW50ID0gZnVuY3Rpb24gTW9ycGgkc2V0Q29udGVudChjb250ZW50KSB7XG4gIGlmIChjb250ZW50ID09PSBudWxsIHx8IGNvbnRlbnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICB2YXIgdHlwZSA9IHR5cGVvZiBjb250ZW50O1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgaWYgKHRoaXMucGFyc2VUZXh0QXNIVE1MKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvbUhlbHBlci5zZXRNb3JwaEhUTUwodGhpcywgY29udGVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zZXRUZXh0KGNvbnRlbnQpO1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBpZiAodHlwZW9mIGNvbnRlbnQubm9kZVR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldE5vZGUoY29udGVudCk7XG4gICAgICB9XG4gICAgICAvKiBIYW5kbGViYXJzLlNhZmVTdHJpbmcgKi9cbiAgICAgIGlmICh0eXBlb2YgY29udGVudC5zdHJpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldEhUTUwoY29udGVudC5zdHJpbmcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGFyc2VUZXh0QXNIVE1MKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldEhUTUwoY29udGVudC50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIHRoaXMuc2V0VGV4dChjb250ZW50LnRvU3RyaW5nKCkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCBjb250ZW50Jyk7XG4gIH1cbn07XG5cbk1vcnBoLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIE1vcnBoJGNsZWFyKCkge1xuICB2YXIgbm9kZSA9IHRoaXMuc2V0Tm9kZSh0aGlzLmRvbUhlbHBlci5jcmVhdGVDb21tZW50KCcnKSk7XG4gIHJldHVybiBub2RlO1xufTtcblxuTW9ycGgucHJvdG90eXBlLnNldFRleHQgPSBmdW5jdGlvbiBNb3JwaCRzZXRUZXh0KHRleHQpIHtcbiAgdmFyIGZpcnN0Tm9kZSA9IHRoaXMuZmlyc3ROb2RlO1xuICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuXG4gIGlmIChmaXJzdE5vZGUgJiZcbiAgICAgIGxhc3ROb2RlID09PSBmaXJzdE5vZGUgJiZcbiAgICAgIGZpcnN0Tm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgIGZpcnN0Tm9kZS5ub2RlVmFsdWUgPSB0ZXh0O1xuICAgIHJldHVybiBmaXJzdE5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5zZXROb2RlKFxuICAgIHRleHQgPyB0aGlzLmRvbUhlbHBlci5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSA6IHRoaXMuZG9tSGVscGVyLmNyZWF0ZUNvbW1lbnQoJycpXG4gICk7XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uIE1vcnBoJHNldE5vZGUobmV3Tm9kZSkge1xuICB2YXIgZmlyc3ROb2RlLCBsYXN0Tm9kZTtcbiAgc3dpdGNoIChuZXdOb2RlLm5vZGVUeXBlKSB7XG4gICAgY2FzZSAzOlxuICAgICAgZmlyc3ROb2RlID0gbmV3Tm9kZTtcbiAgICAgIGxhc3ROb2RlID0gbmV3Tm9kZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBmaXJzdE5vZGUgPSBuZXdOb2RlLmZpcnN0Q2hpbGQ7XG4gICAgICBsYXN0Tm9kZSA9IG5ld05vZGUubGFzdENoaWxkO1xuICAgICAgaWYgKGZpcnN0Tm9kZSA9PT0gbnVsbCkge1xuICAgICAgICBmaXJzdE5vZGUgPSB0aGlzLmRvbUhlbHBlci5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgICAgbmV3Tm9kZS5hcHBlbmRDaGlsZChmaXJzdE5vZGUpO1xuICAgICAgICBsYXN0Tm9kZSA9IGZpcnN0Tm9kZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBmaXJzdE5vZGUgPSBuZXdOb2RlO1xuICAgICAgbGFzdE5vZGUgPSBuZXdOb2RlO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICB0aGlzLnNldFJhbmdlKGZpcnN0Tm9kZSwgbGFzdE5vZGUpO1xuXG4gIHJldHVybiBuZXdOb2RlO1xufTtcblxuTW9ycGgucHJvdG90eXBlLnNldFJhbmdlID0gZnVuY3Rpb24gKGZpcnN0Tm9kZSwgbGFzdE5vZGUpIHtcbiAgdmFyIHByZXZpb3VzRmlyc3ROb2RlID0gdGhpcy5maXJzdE5vZGU7XG4gIGlmIChwcmV2aW91c0ZpcnN0Tm9kZSAhPT0gbnVsbCkge1xuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBwcmV2aW91c0ZpcnN0Tm9kZS5wYXJlbnROb2RlO1xuICAgIGlmIChwYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgZmlyc3ROb2RlLCBsYXN0Tm9kZSwgcHJldmlvdXNGaXJzdE5vZGUpO1xuICAgICAgY2xlYXIocGFyZW50Tm9kZSwgcHJldmlvdXNGaXJzdE5vZGUsIHRoaXMubGFzdE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuZmlyc3ROb2RlID0gZmlyc3ROb2RlO1xuICB0aGlzLmxhc3ROb2RlID0gbGFzdE5vZGU7XG5cbiAgaWYgKHRoaXMucGFyZW50TW9ycGhMaXN0KSB7XG4gICAgdGhpcy5fc3luY0ZpcnN0Tm9kZSgpO1xuICAgIHRoaXMuX3N5bmNMYXN0Tm9kZSgpO1xuICB9XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIE1vcnBoJGRlc3Ryb3koKSB7XG4gIHRoaXMudW5saW5rKCk7XG5cbiAgdmFyIGZpcnN0Tm9kZSA9IHRoaXMuZmlyc3ROb2RlO1xuICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuICB2YXIgcGFyZW50Tm9kZSA9IGZpcnN0Tm9kZSAmJiBmaXJzdE5vZGUucGFyZW50Tm9kZTtcblxuICB0aGlzLmZpcnN0Tm9kZSA9IG51bGw7XG4gIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuXG4gIGNsZWFyKHBhcmVudE5vZGUsIGZpcnN0Tm9kZSwgbGFzdE5vZGUpO1xufTtcblxuTW9ycGgucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uIE1vcnBoJHVubGluaygpIHtcbiAgdmFyIHBhcmVudE1vcnBoTGlzdCA9IHRoaXMucGFyZW50TW9ycGhMaXN0O1xuICB2YXIgcHJldmlvdXNNb3JwaCA9IHRoaXMucHJldmlvdXNNb3JwaDtcbiAgdmFyIG5leHRNb3JwaCA9IHRoaXMubmV4dE1vcnBoO1xuXG4gIGlmIChwcmV2aW91c01vcnBoKSB7XG4gICAgaWYgKG5leHRNb3JwaCkge1xuICAgICAgcHJldmlvdXNNb3JwaC5uZXh0TW9ycGggPSBuZXh0TW9ycGg7XG4gICAgICBuZXh0TW9ycGgucHJldmlvdXNNb3JwaCA9IHByZXZpb3VzTW9ycGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXZpb3VzTW9ycGgubmV4dE1vcnBoID0gbnVsbDtcbiAgICAgIHBhcmVudE1vcnBoTGlzdC5sYXN0Q2hpbGRNb3JwaCA9IHByZXZpb3VzTW9ycGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChuZXh0TW9ycGgpIHtcbiAgICAgIG5leHRNb3JwaC5wcmV2aW91c01vcnBoID0gbnVsbDtcbiAgICAgIHBhcmVudE1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGggPSBuZXh0TW9ycGg7XG4gICAgfSBlbHNlIGlmIChwYXJlbnRNb3JwaExpc3QpIHtcbiAgICAgIHBhcmVudE1vcnBoTGlzdC5sYXN0Q2hpbGRNb3JwaCA9IHBhcmVudE1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGggPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMucGFyZW50TW9ycGhMaXN0ID0gbnVsbDtcbiAgdGhpcy5uZXh0TW9ycGggPSBudWxsO1xuICB0aGlzLnByZXZpb3VzTW9ycGggPSBudWxsO1xuXG4gIGlmIChwYXJlbnRNb3JwaExpc3QgJiYgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaCkge1xuICAgIGlmICghcGFyZW50TW9ycGhMaXN0LmZpcnN0Q2hpbGRNb3JwaCkge1xuICAgICAgLy8gbGlzdCBpcyBlbXB0eVxuICAgICAgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRNb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoLl9zeW5jRmlyc3ROb2RlKCk7XG4gICAgICBwYXJlbnRNb3JwaExpc3QubGFzdENoaWxkTW9ycGguX3N5bmNMYXN0Tm9kZSgpO1xuICAgIH1cbiAgfVxufTtcblxuTW9ycGgucHJvdG90eXBlLnNldEhUTUwgPSBmdW5jdGlvbih0ZXh0KSB7XG4gIHZhciBmcmFnbWVudCA9IHRoaXMuZG9tSGVscGVyLnBhcnNlSFRNTCh0ZXh0LCB0aGlzLmNvbnRleHR1YWxFbGVtZW50KTtcbiAgcmV0dXJuIHRoaXMuc2V0Tm9kZShmcmFnbWVudCk7XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuc2V0TW9ycGhMaXN0ID0gZnVuY3Rpb24gTW9ycGgkYXBwZW5kTW9ycGhMaXN0KG1vcnBoTGlzdCkge1xuICBtb3JwaExpc3QubW91bnRlZE1vcnBoID0gdGhpcztcbiAgdGhpcy5jbGVhcigpO1xuXG4gIHZhciBvcmlnaW5hbEZpcnN0Tm9kZSA9IHRoaXMuZmlyc3ROb2RlO1xuXG4gIGlmIChtb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoKSB7XG4gICAgdGhpcy5maXJzdE5vZGUgPSBtb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoLmZpcnN0Tm9kZTtcbiAgICB0aGlzLmxhc3ROb2RlID0gbW9ycGhMaXN0Lmxhc3RDaGlsZE1vcnBoLmxhc3ROb2RlO1xuXG4gICAgdmFyIGN1cnJlbnQgPSBtb3JwaExpc3QuZmlyc3RDaGlsZE1vcnBoO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIHZhciBuZXh0ID0gY3VycmVudC5uZXh0TW9ycGg7XG4gICAgICBjdXJyZW50Lmluc2VydEJlZm9yZU5vZGUob3JpZ2luYWxGaXJzdE5vZGUsIG51bGwpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuICAgIG9yaWdpbmFsRmlyc3ROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3JpZ2luYWxGaXJzdE5vZGUpO1xuICB9XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuX3N5bmNGaXJzdE5vZGUgPSBmdW5jdGlvbiBNb3JwaCRzeW5jRmlyc3ROb2RlKCkge1xuICB2YXIgbW9ycGggPSB0aGlzO1xuICB2YXIgcGFyZW50TW9ycGhMaXN0O1xuICB3aGlsZSAocGFyZW50TW9ycGhMaXN0ID0gbW9ycGgucGFyZW50TW9ycGhMaXN0KSB7XG4gICAgaWYgKHBhcmVudE1vcnBoTGlzdC5tb3VudGVkTW9ycGggPT09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobW9ycGggIT09IHBhcmVudE1vcnBoTGlzdC5maXJzdENoaWxkTW9ycGgpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobW9ycGguZmlyc3ROb2RlID09PSBwYXJlbnRNb3JwaExpc3QubW91bnRlZE1vcnBoLmZpcnN0Tm9kZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5maXJzdE5vZGUgPSBtb3JwaC5maXJzdE5vZGU7XG5cbiAgICBtb3JwaCA9IHBhcmVudE1vcnBoTGlzdC5tb3VudGVkTW9ycGg7XG4gIH1cbn07XG5cbk1vcnBoLnByb3RvdHlwZS5fc3luY0xhc3ROb2RlID0gZnVuY3Rpb24gTW9ycGgkc3luY0xhc3ROb2RlKCkge1xuICB2YXIgbW9ycGggPSB0aGlzO1xuICB2YXIgcGFyZW50TW9ycGhMaXN0O1xuICB3aGlsZSAocGFyZW50TW9ycGhMaXN0ID0gbW9ycGgucGFyZW50TW9ycGhMaXN0KSB7XG4gICAgaWYgKHBhcmVudE1vcnBoTGlzdC5tb3VudGVkTW9ycGggPT09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAobW9ycGggIT09IHBhcmVudE1vcnBoTGlzdC5sYXN0Q2hpbGRNb3JwaCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChtb3JwaC5sYXN0Tm9kZSA9PT0gcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5sYXN0Tm9kZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcGFyZW50TW9ycGhMaXN0Lm1vdW50ZWRNb3JwaC5sYXN0Tm9kZSA9IG1vcnBoLmxhc3ROb2RlO1xuXG4gICAgbW9ycGggPSBwYXJlbnRNb3JwaExpc3QubW91bnRlZE1vcnBoO1xuICB9XG59O1xuXG5Nb3JwaC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlTm9kZSA9IGZ1bmN0aW9uIE1vcnBoJGluc2VydEJlZm9yZU5vZGUocGFyZW50Tm9kZSwgcmVmTm9kZSkge1xuICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgdGhpcy5maXJzdE5vZGUsIHRoaXMubGFzdE5vZGUsIHJlZk5vZGUpO1xufTtcblxuTW9ycGgucHJvdG90eXBlLmFwcGVuZFRvTm9kZSA9IGZ1bmN0aW9uIE1vcnBoJGFwcGVuZFRvTm9kZShwYXJlbnROb2RlKSB7XG4gIGluc2VydEJlZm9yZShwYXJlbnROb2RlLCB0aGlzLmZpcnN0Tm9kZSwgdGhpcy5sYXN0Tm9kZSwgbnVsbCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNb3JwaDtcbiJdfQ==

@@ -89,2 +89,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vcnBoLXJhbmdlL21vcnBoLWxpc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7cUJBQW9DLFNBQVM7O0FBRTdDLFNBQVMsU0FBUyxHQUFHOztBQUVuQixNQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUM1QixNQUFJLENBQUMsY0FBYyxHQUFJLElBQUksQ0FBQzs7QUFFNUIsTUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Q0FDMUI7O0FBRUQsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQzs7QUFFcEMsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLGVBQWUsR0FBRztBQUMzQyxNQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDOztBQUVuQyxTQUFPLE9BQU8sRUFBRTtBQUNkLFFBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDN0IsV0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDN0IsV0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDekIsV0FBTyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDL0IsV0FBTyxHQUFHLElBQUksQ0FBQztHQUNoQjs7QUFFRCxNQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0NBQ25ELENBQUM7O0FBRUYsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLGlCQUFpQixHQUFHLEVBQ2hELENBQUM7O0FBRUYsU0FBUyxDQUFDLFdBQVcsR0FBRyxTQUFTLHFCQUFxQixDQUFDLEtBQUssRUFBRTtBQUM1RCxNQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3JDLENBQUM7O0FBRUYsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFNBQVMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtBQUN4RixNQUFJLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO0FBQ2xDLFNBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztHQUNoQjtBQUNELE1BQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO0FBQzdELFVBQU0sSUFBSSxLQUFLLENBQUMsc0ZBQXNGLENBQUMsQ0FBQztHQUN6Rzs7QUFFRCxNQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDOztBQUVyQyxNQUFJLFlBQVksRUFBRTs7QUFFaEIsUUFBSSxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7QUFDbkQsUUFBSSxhQUFhLEdBQUcsY0FBYyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7O0FBRWxHLFdBaERZLFlBQVksQ0FpRHRCLFVBQVUsRUFDVixLQUFLLENBQUMsU0FBUyxFQUNmLEtBQUssQ0FBQyxRQUFRLEVBQ2QsYUFBYSxDQUNkLENBQUM7OztBQUdGLFFBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQ3pCLGFBekRHLEtBQUssQ0F5REYsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNuQztHQUNGOztBQUVELE9BQUssQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDOztBQUU3QixNQUFJLGFBQWEsR0FBRyxjQUFjLEdBQUcsY0FBYyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQ3hGLE1BQUksYUFBYSxFQUFFO0FBQ2pCLGlCQUFhLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUNoQyxTQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztHQUNyQyxNQUFNO0FBQ0wsUUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7R0FDOUI7O0FBRUQsTUFBSSxjQUFjLEVBQUU7QUFDbEIsa0JBQWMsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBQ3JDLFNBQUssQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO0dBQ2xDLE1BQU07QUFDTCxRQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztHQUM3Qjs7QUFFRCxNQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RDLE1BQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7Q0FDckMsQ0FBQzs7QUFFRixTQUFTLENBQUMsZ0JBQWdCLEdBQUcsU0FBUywwQkFBMEIsQ0FBQyxLQUFLLEVBQUU7QUFDdEUsTUFBSSxLQUFLLENBQUMsZUFBZSxLQUFLLElBQUksRUFBRTtBQUNsQyxVQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7R0FDNUU7O0FBRUQsT0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0NBQ2pCLENBQUM7O2tCQUVhLFNBQVMiLCJmaWxlIjoibW9ycGgtcmFuZ2UvbW9ycGgtbGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsZWFyLCBpbnNlcnRCZWZvcmUgfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gTW9ycGhMaXN0KCkge1xuICAvLyBtb3JwaCBncmFwaFxuICB0aGlzLmZpcnN0Q2hpbGRNb3JwaCA9IG51bGw7XG4gIHRoaXMubGFzdENoaWxkTW9ycGggID0gbnVsbDtcblxuICB0aGlzLm1vdW50ZWRNb3JwaCA9IG51bGw7XG59XG5cbnZhciBwcm90b3R5cGUgPSBNb3JwaExpc3QucHJvdG90eXBlO1xuXG5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBNb3JwaExpc3QkY2xlYXIoKSB7XG4gIHZhciBjdXJyZW50ID0gdGhpcy5maXJzdENoaWxkTW9ycGg7XG5cbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICB2YXIgbmV4dCA9IGN1cnJlbnQubmV4dE1vcnBoO1xuICAgIGN1cnJlbnQucHJldmlvdXNNb3JwaCA9IG51bGw7XG4gICAgY3VycmVudC5uZXh0TW9ycGggPSBudWxsO1xuICAgIGN1cnJlbnQucGFyZW50TW9ycGhMaXN0ID0gbnVsbDtcbiAgICBjdXJyZW50ID0gbmV4dDtcbiAgfVxuXG4gIHRoaXMuZmlyc3RDaGlsZE1vcnBoID0gdGhpcy5sYXN0Q2hpbGRNb3JwaCA9IG51bGw7XG59O1xuXG5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uIE1vcnBoTGlzdCRkZXN0cm95KCkge1xufTtcblxucHJvdG90eXBlLmFwcGVuZE1vcnBoID0gZnVuY3Rpb24gTW9ycGhMaXN0JGFwcGVuZE1vcnBoKG1vcnBoKSB7XG4gIHRoaXMuaW5zZXJ0QmVmb3JlTW9ycGgobW9ycGgsIG51bGwpO1xufTtcblxucHJvdG90eXBlLmluc2VydEJlZm9yZU1vcnBoID0gZnVuY3Rpb24gTW9ycGhMaXN0JGluc2VydEJlZm9yZU1vcnBoKG1vcnBoLCByZWZlcmVuY2VNb3JwaCkge1xuICBpZiAobW9ycGgucGFyZW50TW9ycGhMaXN0ICE9PSBudWxsKSB7XG4gICAgbW9ycGgudW5saW5rKCk7XG4gIH1cbiAgaWYgKHJlZmVyZW5jZU1vcnBoICYmIHJlZmVyZW5jZU1vcnBoLnBhcmVudE1vcnBoTGlzdCAhPT0gdGhpcykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIG1vcnBoIGJlZm9yZSB3aGljaCB0aGUgbmV3IG1vcnBoIGlzIHRvIGJlIGluc2VydGVkIGlzIG5vdCBhIGNoaWxkIG9mIHRoaXMgbW9ycGguJyk7XG4gIH1cblxuICB2YXIgbW91bnRlZE1vcnBoID0gdGhpcy5tb3VudGVkTW9ycGg7XG5cbiAgaWYgKG1vdW50ZWRNb3JwaCkge1xuXG4gICAgdmFyIHBhcmVudE5vZGUgPSBtb3VudGVkTW9ycGguZmlyc3ROb2RlLnBhcmVudE5vZGU7XG4gICAgdmFyIHJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2VNb3JwaCA/IHJlZmVyZW5jZU1vcnBoLmZpcnN0Tm9kZSA6IG1vdW50ZWRNb3JwaC5sYXN0Tm9kZS5uZXh0U2libGluZztcblxuICAgIGluc2VydEJlZm9yZShcbiAgICAgIHBhcmVudE5vZGUsXG4gICAgICBtb3JwaC5maXJzdE5vZGUsXG4gICAgICBtb3JwaC5sYXN0Tm9kZSxcbiAgICAgIHJlZmVyZW5jZU5vZGVcbiAgICApO1xuXG4gICAgLy8gd2FzIG5vdCBpbiBsaXN0IG1vZGUgcmVwbGFjZSBjdXJyZW50IGNvbnRlbnRcbiAgICBpZiAoIXRoaXMuZmlyc3RDaGlsZE1vcnBoKSB7XG4gICAgICBjbGVhcih0aGlzLm1vdW50ZWRNb3JwaC5maXJzdE5vZGUucGFyZW50Tm9kZSxcbiAgICAgICAgICAgIHRoaXMubW91bnRlZE1vcnBoLmZpcnN0Tm9kZSxcbiAgICAgICAgICAgIHRoaXMubW91bnRlZE1vcnBoLmxhc3ROb2RlKTtcbiAgICB9XG4gIH1cblxuICBtb3JwaC5wYXJlbnRNb3JwaExpc3QgPSB0aGlzO1xuXG4gIHZhciBwcmV2aW91c01vcnBoID0gcmVmZXJlbmNlTW9ycGggPyByZWZlcmVuY2VNb3JwaC5wcmV2aW91c01vcnBoIDogdGhpcy5sYXN0Q2hpbGRNb3JwaDtcbiAgaWYgKHByZXZpb3VzTW9ycGgpIHtcbiAgICBwcmV2aW91c01vcnBoLm5leHRNb3JwaCA9IG1vcnBoO1xuICAgIG1vcnBoLnByZXZpb3VzTW9ycGggPSBwcmV2aW91c01vcnBoO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZmlyc3RDaGlsZE1vcnBoID0gbW9ycGg7XG4gIH1cblxuICBpZiAocmVmZXJlbmNlTW9ycGgpIHtcbiAgICByZWZlcmVuY2VNb3JwaC5wcmV2aW91c01vcnBoID0gbW9ycGg7XG4gICAgbW9ycGgubmV4dE1vcnBoID0gcmVmZXJlbmNlTW9ycGg7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hpbGRNb3JwaCA9IG1vcnBoO1xuICB9XG5cbiAgdGhpcy5maXJzdENoaWxkTW9ycGguX3N5bmNGaXJzdE5vZGUoKTtcbiAgdGhpcy5sYXN0Q2hpbGRNb3JwaC5fc3luY0xhc3ROb2RlKCk7XG59O1xuXG5wcm90b3R5cGUucmVtb3ZlQ2hpbGRNb3JwaCA9IGZ1bmN0aW9uIE1vcnBoTGlzdCRyZW1vdmVDaGlsZE1vcnBoKG1vcnBoKSB7XG4gIGlmIChtb3JwaC5wYXJlbnRNb3JwaExpc3QgIT09IHRoaXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmVtb3ZlIGEgbW9ycGggZnJvbSBhIHBhcmVudCBpdCBpcyBub3QgaW5zaWRlIG9mXCIpO1xuICB9XG5cbiAgbW9ycGguZGVzdHJveSgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9ycGhMaXN0O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vcnBoLXJhbmdlL21vcnBoLWxpc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7cUJBQW9DLFNBQVM7O0FBRTdDLFNBQVMsU0FBUyxHQUFHOztBQUVuQixNQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUM1QixNQUFJLENBQUMsY0FBYyxHQUFJLElBQUksQ0FBQzs7QUFFNUIsTUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Q0FDMUI7O0FBRUQsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQzs7QUFFcEMsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLGVBQWUsR0FBRztBQUMzQyxNQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDOztBQUVuQyxTQUFPLE9BQU8sRUFBRTtBQUNkLFFBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDN0IsV0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDN0IsV0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDekIsV0FBTyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDL0IsV0FBTyxHQUFHLElBQUksQ0FBQztHQUNoQjs7QUFFRCxNQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0NBQ25ELENBQUM7O0FBRUYsU0FBUyxDQUFDLE9BQU8sR0FBRyxTQUFTLGlCQUFpQixHQUFHLEVBQ2hELENBQUM7O0FBRUYsU0FBUyxDQUFDLFdBQVcsR0FBRyxTQUFTLHFCQUFxQixDQUFDLEtBQUssRUFBRTtBQUM1RCxNQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0NBQ3JDLENBQUM7O0FBRUYsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFNBQVMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtBQUN4RixNQUFJLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO0FBQ2xDLFNBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztHQUNoQjtBQUNELE1BQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO0FBQzdELFVBQU0sSUFBSSxLQUFLLENBQUMsc0ZBQXNGLENBQUMsQ0FBQztHQUN6Rzs7QUFFRCxNQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDOztBQUVyQyxNQUFJLFlBQVksRUFBRTs7QUFFaEIsUUFBSSxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7QUFDbkQsUUFBSSxhQUFhLEdBQUcsY0FBYyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7O0FBRWxHLHdCQUNFLFVBQVUsRUFDVixLQUFLLENBQUMsU0FBUyxFQUNmLEtBQUssQ0FBQyxRQUFRLEVBQ2QsYUFBYSxDQUNkLENBQUM7OztBQUdGLFFBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQ3pCLG1CQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkM7R0FDRjs7QUFFRCxPQUFLLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzs7QUFFN0IsTUFBSSxhQUFhLEdBQUcsY0FBYyxHQUFHLGNBQWMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztBQUN4RixNQUFJLGFBQWEsRUFBRTtBQUNqQixpQkFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDaEMsU0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7R0FDckMsTUFBTTtBQUNMLFFBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0dBQzlCOztBQUVELE1BQUksY0FBYyxFQUFFO0FBQ2xCLGtCQUFjLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztBQUNyQyxTQUFLLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztHQUNsQyxNQUFNO0FBQ0wsUUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7R0FDN0I7O0FBRUQsTUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUN0QyxNQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO0NBQ3JDLENBQUM7O0FBRUYsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsMEJBQTBCLENBQUMsS0FBSyxFQUFFO0FBQ3RFLE1BQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUU7QUFDbEMsVUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0dBQzVFOztBQUVELE9BQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztDQUNqQixDQUFDOztrQkFFYSxTQUFTIiwiZmlsZSI6Im1vcnBoLXJhbmdlL21vcnBoLWxpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGVhciwgaW5zZXJ0QmVmb3JlIH0gZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIE1vcnBoTGlzdCgpIHtcbiAgLy8gbW9ycGggZ3JhcGhcbiAgdGhpcy5maXJzdENoaWxkTW9ycGggPSBudWxsO1xuICB0aGlzLmxhc3RDaGlsZE1vcnBoICA9IG51bGw7XG5cbiAgdGhpcy5tb3VudGVkTW9ycGggPSBudWxsO1xufVxuXG52YXIgcHJvdG90eXBlID0gTW9ycGhMaXN0LnByb3RvdHlwZTtcblxucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gTW9ycGhMaXN0JGNsZWFyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuZmlyc3RDaGlsZE1vcnBoO1xuXG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgdmFyIG5leHQgPSBjdXJyZW50Lm5leHRNb3JwaDtcbiAgICBjdXJyZW50LnByZXZpb3VzTW9ycGggPSBudWxsO1xuICAgIGN1cnJlbnQubmV4dE1vcnBoID0gbnVsbDtcbiAgICBjdXJyZW50LnBhcmVudE1vcnBoTGlzdCA9IG51bGw7XG4gICAgY3VycmVudCA9IG5leHQ7XG4gIH1cblxuICB0aGlzLmZpcnN0Q2hpbGRNb3JwaCA9IHRoaXMubGFzdENoaWxkTW9ycGggPSBudWxsO1xufTtcblxucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiBNb3JwaExpc3QkZGVzdHJveSgpIHtcbn07XG5cbnByb3RvdHlwZS5hcHBlbmRNb3JwaCA9IGZ1bmN0aW9uIE1vcnBoTGlzdCRhcHBlbmRNb3JwaChtb3JwaCkge1xuICB0aGlzLmluc2VydEJlZm9yZU1vcnBoKG1vcnBoLCBudWxsKTtcbn07XG5cbnByb3RvdHlwZS5pbnNlcnRCZWZvcmVNb3JwaCA9IGZ1bmN0aW9uIE1vcnBoTGlzdCRpbnNlcnRCZWZvcmVNb3JwaChtb3JwaCwgcmVmZXJlbmNlTW9ycGgpIHtcbiAgaWYgKG1vcnBoLnBhcmVudE1vcnBoTGlzdCAhPT0gbnVsbCkge1xuICAgIG1vcnBoLnVubGluaygpO1xuICB9XG4gIGlmIChyZWZlcmVuY2VNb3JwaCAmJiByZWZlcmVuY2VNb3JwaC5wYXJlbnRNb3JwaExpc3QgIT09IHRoaXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBtb3JwaCBiZWZvcmUgd2hpY2ggdGhlIG5ldyBtb3JwaCBpcyB0byBiZSBpbnNlcnRlZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG1vcnBoLicpO1xuICB9XG5cbiAgdmFyIG1vdW50ZWRNb3JwaCA9IHRoaXMubW91bnRlZE1vcnBoO1xuXG4gIGlmIChtb3VudGVkTW9ycGgpIHtcblxuICAgIHZhciBwYXJlbnROb2RlID0gbW91bnRlZE1vcnBoLmZpcnN0Tm9kZS5wYXJlbnROb2RlO1xuICAgIHZhciByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTW9ycGggPyByZWZlcmVuY2VNb3JwaC5maXJzdE5vZGUgOiBtb3VudGVkTW9ycGgubGFzdE5vZGUubmV4dFNpYmxpbmc7XG5cbiAgICBpbnNlcnRCZWZvcmUoXG4gICAgICBwYXJlbnROb2RlLFxuICAgICAgbW9ycGguZmlyc3ROb2RlLFxuICAgICAgbW9ycGgubGFzdE5vZGUsXG4gICAgICByZWZlcmVuY2VOb2RlXG4gICAgKTtcblxuICAgIC8vIHdhcyBub3QgaW4gbGlzdCBtb2RlIHJlcGxhY2UgY3VycmVudCBjb250ZW50XG4gICAgaWYgKCF0aGlzLmZpcnN0Q2hpbGRNb3JwaCkge1xuICAgICAgY2xlYXIodGhpcy5tb3VudGVkTW9ycGguZmlyc3ROb2RlLnBhcmVudE5vZGUsXG4gICAgICAgICAgICB0aGlzLm1vdW50ZWRNb3JwaC5maXJzdE5vZGUsXG4gICAgICAgICAgICB0aGlzLm1vdW50ZWRNb3JwaC5sYXN0Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgbW9ycGgucGFyZW50TW9ycGhMaXN0ID0gdGhpcztcblxuICB2YXIgcHJldmlvdXNNb3JwaCA9IHJlZmVyZW5jZU1vcnBoID8gcmVmZXJlbmNlTW9ycGgucHJldmlvdXNNb3JwaCA6IHRoaXMubGFzdENoaWxkTW9ycGg7XG4gIGlmIChwcmV2aW91c01vcnBoKSB7XG4gICAgcHJldmlvdXNNb3JwaC5uZXh0TW9ycGggPSBtb3JwaDtcbiAgICBtb3JwaC5wcmV2aW91c01vcnBoID0gcHJldmlvdXNNb3JwaDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpcnN0Q2hpbGRNb3JwaCA9IG1vcnBoO1xuICB9XG5cbiAgaWYgKHJlZmVyZW5jZU1vcnBoKSB7XG4gICAgcmVmZXJlbmNlTW9ycGgucHJldmlvdXNNb3JwaCA9IG1vcnBoO1xuICAgIG1vcnBoLm5leHRNb3JwaCA9IHJlZmVyZW5jZU1vcnBoO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubGFzdENoaWxkTW9ycGggPSBtb3JwaDtcbiAgfVxuXG4gIHRoaXMuZmlyc3RDaGlsZE1vcnBoLl9zeW5jRmlyc3ROb2RlKCk7XG4gIHRoaXMubGFzdENoaWxkTW9ycGguX3N5bmNMYXN0Tm9kZSgpO1xufTtcblxucHJvdG90eXBlLnJlbW92ZUNoaWxkTW9ycGggPSBmdW5jdGlvbiBNb3JwaExpc3QkcmVtb3ZlQ2hpbGRNb3JwaChtb3JwaCkge1xuICBpZiAobW9ycGgucGFyZW50TW9ycGhMaXN0ICE9PSB0aGlzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHJlbW92ZSBhIG1vcnBoIGZyb20gYSBwYXJlbnQgaXQgaXMgbm90IGluc2lkZSBvZlwiKTtcbiAgfVxuXG4gIG1vcnBoLmRlc3Ryb3koKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1vcnBoTGlzdDtcbiJdfQ==

@@ -38,2 +38,2 @@ exports.__esModule = true;

exports.Comment = _simpleHtmlTokenizerTokens.Comment;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7bURBQzZCLDJDQUEyQzs7Ozs0Q0FDbEQsbUNBQW1DOzs7OzJDQUNwQyxrQ0FBa0M7Ozs7NENBQ2pDLG1DQUFtQzs7OzsyQ0FDcEMsa0NBQWtDOzs7O3lDQUNOLGdDQUFnQzs7UUFFeEUsZ0JBQWdCO1FBQUUsU0FBUztRQUFFLFFBQVE7UUFBRSxTQUFTO1FBQUUsUUFBUTtRQUFFLFFBQVEsOEJBRnBFLFFBQVE7UUFFOEQsTUFBTSw4QkFGbEUsTUFBTTtRQUU4RCxLQUFLLDhCQUZqRSxLQUFLO1FBRThELE9BQU8sOEJBRm5FLE9BQU8iLCJmaWxlIjoic2ltcGxlLWh0bWwtdG9rZW5pemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypqc2hpbnQgYm9zczp0cnVlKi9cbmltcG9ydCBFdmVudGVkVG9rZW5pemVyIGZyb20gJy4vc2ltcGxlLWh0bWwtdG9rZW5pemVyL2V2ZW50ZWQtdG9rZW5pemVyJztcbmltcG9ydCBUb2tlbml6ZXIgZnJvbSAnLi9zaW1wbGUtaHRtbC10b2tlbml6ZXIvdG9rZW5pemVyJztcbmltcG9ydCB0b2tlbml6ZSBmcm9tICcuL3NpbXBsZS1odG1sLXRva2VuaXplci90b2tlbml6ZSc7XG5pbXBvcnQgR2VuZXJhdG9yIGZyb20gJy4vc2ltcGxlLWh0bWwtdG9rZW5pemVyL2dlbmVyYXRvcic7XG5pbXBvcnQgZ2VuZXJhdGUgZnJvbSAnLi9zaW1wbGUtaHRtbC10b2tlbml6ZXIvZ2VuZXJhdGUnO1xuaW1wb3J0IHsgU3RhcnRUYWcsIEVuZFRhZywgQ2hhcnMsIENvbW1lbnQgfSBmcm9tICcuL3NpbXBsZS1odG1sLXRva2VuaXplci90b2tlbnMnO1xuXG5leHBvcnQgeyBFdmVudGVkVG9rZW5pemVyLCBUb2tlbml6ZXIsIHRva2VuaXplLCBHZW5lcmF0b3IsIGdlbmVyYXRlLCBTdGFydFRhZywgRW5kVGFnLCBDaGFycywgQ29tbWVudCB9O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7bURBQzZCLDJDQUEyQzs7Ozs0Q0FDbEQsbUNBQW1DOzs7OzJDQUNwQyxrQ0FBa0M7Ozs7NENBQ2pDLG1DQUFtQzs7OzsyQ0FDcEMsa0NBQWtDOzs7O3lDQUNOLGdDQUFnQzs7UUFFeEUsZ0JBQWdCO1FBQUUsU0FBUztRQUFFLFFBQVE7UUFBRSxTQUFTO1FBQUUsUUFBUTtRQUFFLFFBQVE7UUFBRSxNQUFNO1FBQUUsS0FBSztRQUFFLE9BQU8iLCJmaWxlIjoic2ltcGxlLWh0bWwtdG9rZW5pemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypqc2hpbnQgYm9zczp0cnVlKi9cbmltcG9ydCBFdmVudGVkVG9rZW5pemVyIGZyb20gJy4vc2ltcGxlLWh0bWwtdG9rZW5pemVyL2V2ZW50ZWQtdG9rZW5pemVyJztcbmltcG9ydCBUb2tlbml6ZXIgZnJvbSAnLi9zaW1wbGUtaHRtbC10b2tlbml6ZXIvdG9rZW5pemVyJztcbmltcG9ydCB0b2tlbml6ZSBmcm9tICcuL3NpbXBsZS1odG1sLXRva2VuaXplci90b2tlbml6ZSc7XG5pbXBvcnQgR2VuZXJhdG9yIGZyb20gJy4vc2ltcGxlLWh0bWwtdG9rZW5pemVyL2dlbmVyYXRvcic7XG5pbXBvcnQgZ2VuZXJhdGUgZnJvbSAnLi9zaW1wbGUtaHRtbC10b2tlbml6ZXIvZ2VuZXJhdGUnO1xuaW1wb3J0IHsgU3RhcnRUYWcsIEVuZFRhZywgQ2hhcnMsIENvbW1lbnQgfSBmcm9tICcuL3NpbXBsZS1odG1sLXRva2VuaXplci90b2tlbnMnO1xuXG5leHBvcnQgeyBFdmVudGVkVG9rZW5pemVyLCBUb2tlbml6ZXIsIHRva2VuaXplLCBHZW5lcmF0b3IsIGdlbmVyYXRlLCBTdGFydFRhZywgRW5kVGFnLCBDaGFycywgQ29tbWVudCB9O1xuIl19

@@ -26,2 +26,2 @@ /* global define:false, module:false */

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci51bWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7bUNBR08seUJBQXlCOztBQUVoQyxBQUFDLENBQUEsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3hCLE1BQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUU7QUFDOUMsVUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNyQixNQUFNLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQ3RDLFVBQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7R0FDNUIsTUFBTTtBQUNMLFFBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxFQUFFLENBQUM7R0FDakM7Q0FDRixDQUFBLENBQUMsSUFBSSxFQUFFLFlBQVk7QUFDbEIsU0FBTztBQUNMLG9CQUFnQix1QkFibEIsZ0JBQWdCLEFBYW9CO0FBQ2xDLGFBQVMsdUJBZE8sU0FBUyxBQWNMO0FBQ3BCLFlBQVEsdUJBZm1CLFFBQVEsQUFlakI7QUFDbEIsYUFBUyx1QkFoQjRCLFNBQVMsQUFnQjFCO0FBQ3BCLFlBQVEsdUJBakJ3QyxRQUFRLEFBaUJ0QztBQUNsQixZQUFRLHVCQWxCa0QsUUFBUSxBQWtCaEQ7QUFDbEIsVUFBTSx1QkFuQjhELE1BQU0sQUFtQjVEO0FBQ2QsU0FBSyx1QkFwQnVFLEtBQUssQUFvQnJFO0FBQ1osV0FBTyx1QkFyQjRFLE9BQU8sQUFxQjFFO0dBQ2pCLENBQUM7Q0FDSCxDQUFDLENBQUUiLCJmaWxlIjoic2ltcGxlLWh0bWwtdG9rZW5pemVyLnVtZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBkZWZpbmU6ZmFsc2UsIG1vZHVsZTpmYWxzZSAqL1xuaW1wb3J0IHtcbiAgRXZlbnRlZFRva2VuaXplciwgVG9rZW5pemVyLCB0b2tlbml6ZSwgR2VuZXJhdG9yLCBnZW5lcmF0ZSwgU3RhcnRUYWcsIEVuZFRhZywgQ2hhcnMsIENvbW1lbnRcbn0gZnJvbSAnLi9zaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG4oZnVuY3Rpb24gKHJvb3QsIGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIGRlZmluZShbXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5IVE1MNVRva2VuaXplciA9IGZhY3RvcnkoKTtcbiAgfVxufSh0aGlzLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB7XG4gICAgRXZlbnRlZFRva2VuaXplcjogRXZlbnRlZFRva2VuaXplcixcbiAgICBUb2tlbml6ZXI6IFRva2VuaXplcixcbiAgICB0b2tlbml6ZTogdG9rZW5pemUsXG4gICAgR2VuZXJhdG9yOiBHZW5lcmF0b3IsXG4gICAgZ2VuZXJhdGU6IGdlbmVyYXRlLFxuICAgIFN0YXJ0VGFnOiBTdGFydFRhZyxcbiAgICBFbmRUYWc6IEVuZFRhZyxcbiAgICBDaGFyczogQ2hhcnMsXG4gICAgQ29tbWVudDogQ29tbWVudFxuICB9O1xufSkpO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci51bWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7bUNBR08seUJBQXlCOztBQUVoQyxBQUFDLENBQUEsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3hCLE1BQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUU7QUFDOUMsVUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNyQixNQUFNLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQ3RDLFVBQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7R0FDNUIsTUFBTTtBQUNMLFFBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxFQUFFLENBQUM7R0FDakM7Q0FDRixDQUFBLENBQUMsSUFBSSxFQUFFLFlBQVk7QUFDbEIsU0FBTztBQUNMLG9CQUFnQix1Q0FBa0I7QUFDbEMsYUFBUyxnQ0FBVztBQUNwQixZQUFRLCtCQUFVO0FBQ2xCLGFBQVMsZ0NBQVc7QUFDcEIsWUFBUSwrQkFBVTtBQUNsQixZQUFRLCtCQUFVO0FBQ2xCLFVBQU0sNkJBQVE7QUFDZCxTQUFLLDRCQUFPO0FBQ1osV0FBTyw4QkFBUztHQUNqQixDQUFDO0NBQ0gsQ0FBQyxDQUFFIiwiZmlsZSI6InNpbXBsZS1odG1sLXRva2VuaXplci51bWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgZGVmaW5lOmZhbHNlLCBtb2R1bGU6ZmFsc2UgKi9cbmltcG9ydCB7XG4gIEV2ZW50ZWRUb2tlbml6ZXIsIFRva2VuaXplciwgdG9rZW5pemUsIEdlbmVyYXRvciwgZ2VuZXJhdGUsIFN0YXJ0VGFnLCBFbmRUYWcsIENoYXJzLCBDb21tZW50XG59IGZyb20gJy4vc2ltcGxlLWh0bWwtdG9rZW5pemVyJztcblxuKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICBkZWZpbmUoW10sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICB9IGVsc2Uge1xuICAgIHJvb3QuSFRNTDVUb2tlbml6ZXIgPSBmYWN0b3J5KCk7XG4gIH1cbn0odGhpcywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4ge1xuICAgIEV2ZW50ZWRUb2tlbml6ZXI6IEV2ZW50ZWRUb2tlbml6ZXIsXG4gICAgVG9rZW5pemVyOiBUb2tlbml6ZXIsXG4gICAgdG9rZW5pemU6IHRva2VuaXplLFxuICAgIEdlbmVyYXRvcjogR2VuZXJhdG9yLFxuICAgIGdlbmVyYXRlOiBnZW5lcmF0ZSxcbiAgICBTdGFydFRhZzogU3RhcnRUYWcsXG4gICAgRW5kVGFnOiBFbmRUYWcsXG4gICAgQ2hhcnM6IENoYXJzLFxuICAgIENvbW1lbnQ6IENvbW1lbnRcbiAgfTtcbn0pKTtcbiJdfQ==

@@ -388,2 +388,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci9ldmVudGVkLXRva2VuaXplci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztxQkFBa0QsU0FBUzs7QUFFM0QsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFO0FBQ2hELE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDOztBQUVqQyxNQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNsQixNQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7QUFFbEIsTUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQixNQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2YsTUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQixNQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLE1BQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRXBCLE1BQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUNkOztBQUVELGdCQUFnQixDQUFDLFNBQVMsR0FBRztBQUMzQixPQUFLLEVBQUUsWUFBVztBQUNoQixRQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztBQUMxQixRQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzs7QUFFaEIsUUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZixRQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNkLFFBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOztBQUVoQixRQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLFFBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRXBCLFFBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7R0FDdkI7O0FB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QkFBb0IsRUFBRSxDQUFDO0FBQ3JDLFlBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDMUIsWUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7T0FDM0IsTUFBTTtBQUNMLFlBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUM7T0FDcEM7S0FDRjs7QUFFRCxjQUFVLEVBQUUsWUFBVztBQUNyQixVQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7O0FBRTFCLFVBQUksT0F2WGdCLE9BQU8sQ0F1WGYsSUFBSSxDQUFDLEVBQUU7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7QUFDdkIsWUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM1QixZQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztPQUNuRDtLQUNGO0dBQ0Y7Q0FDRixDQUFDOztrQkFFYSxnQkFBZ0IiLCJmaWxlIjoic2ltcGxlLWh0bWwtdG9rZW5pemVyL2V2ZW50ZWQtdG9rZW5pemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJlcHJvY2Vzc0lucHV0LCBpc0FscGhhLCBpc1NwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmZ1bmN0aW9uIEV2ZW50ZWRUb2tlbml6ZXIoZGVsZWdhdGUsIGVudGl0eVBhcnNlcikge1xuICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7XG4gIHRoaXMuZW50aXR5UGFyc2VyID0gZW50aXR5UGFyc2VyO1xuXG4gIHRoaXMuc3RhdGUgPSBudWxsO1xuICB0aGlzLmlucHV0ID0gbnVsbDtcblxuICB0aGlzLmluZGV4ID0gLTE7XG4gIHRoaXMubGluZSA9IC0xO1xuICB0aGlzLmNvbHVtbiA9IC0xO1xuICB0aGlzLnRhZ0xpbmUgPSAtMTtcbiAgdGhpcy50YWdDb2x1bW4gPSAtMTtcblxuICB0aGlzLnJlc2V0KCk7XG59XG5cbkV2ZW50ZWRUb2tlbml6ZXIucHJvdG90eXBlID0ge1xuICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICB0aGlzLmlucHV0ID0gJyc7XG5cbiAgICB0aGlzLmluZGV4ID0gMDtcbiAgICB0aGlzLmxpbmUgPSAxO1xuICAgIHRoaXMuY29sdW1uID0gMDtcblxuICAgIHRoaXMudGFnTGluZSA9IC0xO1xuICAgIHRoaXMudGFnQ29sdW1uID0gLTE7XG5cbiAgICB0aGlzLmRlbGVnYXRlLnJlc2V0KCk7XG4gIH0sXG5cbiAgdG9rZW5pemU6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMudG9rZW5pemVQYXJ0KGlucHV0KTtcbiAgICB0aGlzLnRva2VuaXplRU9GKCk7XG4gIH0sXG5cbiAgdG9rZW5pemVQYXJ0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgIHRoaXMuaW5wdXQgKz0gcHJlcHJvY2Vzc0lucHV0KGlucHV0KTtcblxuICAgIHdoaWxlICh0aGlzLmluZGV4IDwgdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RhdGVzW3RoaXMuc3RhdGVdLmNhbGwodGhpcyk7XG4gICAgfVxuICB9LFxuXG4gIHRva2VuaXplRU9GOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmZsdXNoRGF0YSgpO1xuICB9LFxuXG4gIGZsdXNoRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdkYXRhJykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hEYXRhKCk7XG4gICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgIH1cbiAgfSxcblxuICBwZWVrOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5jaGFyQXQodGhpcy5pbmRleCk7XG4gIH0sXG5cbiAgY29uc3VtZTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgIHRoaXMuaW5kZXgrKztcblxuICAgIGlmIChjaGFyID09PSBcIlxcblwiKSB7XG4gICAgICB0aGlzLmxpbmUrKztcbiAgICAgIHRoaXMuY29sdW1uID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2x1bW4rKztcbiAgICB9XG5cbiAgICByZXR1cm4gY2hhcjtcbiAgfSxcblxuICBjb25zdW1lQ2hhclJlZjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXR5UGFyc2VyLnBhcnNlKHRoaXMpO1xuICB9LFxuXG4gIG1hcmtUYWdTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50YWdMaW5lID0gdGhpcy5saW5lO1xuICAgIHRoaXMudGFnQ29sdW1uID0gdGhpcy5jb2x1bW47XG4gIH0sXG5cbiAgc3RhdGVzOiB7XG4gICAgYmVmb3JlRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCI8XCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdPcGVuJztcbiAgICAgICAgdGhpcy5tYXJrVGFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2RhdGEnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luRGF0YSgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBkYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIjxcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaERhdGEoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdPcGVuJztcbiAgICAgICAgdGhpcy5tYXJrVGFnU3RhcnQoKTtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7wqBcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCImXCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9EYXRhKHRoaXMuY29uc3VtZUNoYXJSZWYoKSB8fCBcIiZcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RhdGEoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHRhZ09wZW46IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiIVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnbWFya3VwRGVjbGFyYXRpb24nO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2VuZFRhZ09wZW4nO1xuICAgICAgfSBlbHNlIGlmIChpc0FscGhhKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAndGFnTmFtZSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5TdGFydFRhZygpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvVGFnTmFtZShjaGFyLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBtYXJrdXBEZWNsYXJhdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIgJiYgdGhpcy5pbnB1dC5jaGFyQXQodGhpcy5pbmRleCkgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50U3RhcnQnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQ29tbWVudCgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21tZW50U3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudFN0YXJ0RGFzaCc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQ29tbWVudCgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKGNoYXIpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnQnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21tZW50U3RhcnREYXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIi1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRFbmQnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShcIi1cIik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudEVuZERhc2gnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21tZW50RW5kRGFzaDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50RW5kJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShcIi1cIiArIGNoYXIpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnQnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBjb21tZW50RW5kOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaENvbW1lbnQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9Db21tZW50RGF0YShcIi0tXCIgKyBjaGFyKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50JztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdGFnTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZU5hbWUnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb1RhZ05hbWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGJlZm9yZUF0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhdHRyaWJ1dGVOYW1lJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXR0cmlidXRlTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2FmdGVyQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlVmFsdWUnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWZ0ZXJBdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCIvXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdzZWxmQ2xvc2luZ1N0YXJ0VGFnJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI9XCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVWYWx1ZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhdHRyaWJ1dGVOYW1lJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYmVmb3JlQXR0cmlidXRlVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJ1wiJykge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZVZhbHVlVW5xdW90ZWQnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUoZmFsc2UpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdhZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCImXCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHRoaXMuY29uc3VtZUNoYXJSZWYoJ1wiJykgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCInXCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2FmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZihcIidcIikgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVWYWx1ZVVucXVvdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVOYW1lJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCImXCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKHRoaXMuY29uc3VtZUNoYXJSZWYoXCI+XCIpIHx8IFwiJlwiKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZU5hbWUnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdzZWxmQ2xvc2luZ1N0YXJ0VGFnJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZU5hbWUnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBzZWxmQ2xvc2luZ1N0YXJ0VGFnOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5tYXJrVGFnQXNTZWxmQ2xvc2luZygpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVOYW1lJztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgZW5kVGFnT3BlbjogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoaXNBbHBoYShjaGFyKSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3RhZ05hbWUnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luRW5kVGFnKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9UYWdOYW1lKGNoYXIudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudGVkVG9rZW5pemVyO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci9ldmVudGVkLXRva2VuaXplci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztxQkFBa0QsU0FBUzs7QUFFM0QsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFO0FBQ2hELE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDOztBQUVqQyxNQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNsQixNQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzs7QUFFbEIsTUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQixNQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2YsTUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQixNQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLE1BQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRXBCLE1BQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUNkOztBQUVELGdCQUFnQixDQUFDLFNBQVMsR0FBRztBQUMzQixPQUFLLEVBQUUsWUFBVztBQUNoQixRQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztBQUMxQixRQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzs7QUFFaEIsUUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZixRQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNkLFFBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOztBQUVoQixRQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLFFBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRXBCLFFBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7R0FDdkI7O0FB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QUFLLEdBQUcscUJBQXFCLENBQUM7T0FDcEM7S0FDRjs7QUFFRCxjQUFVLEVBQUUsWUFBVztBQUNyQixVQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7O0FBRTFCLFVBQUksZUFBUSxJQUFJLENBQUMsRUFBRTtBQUNqQixZQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUN2QixZQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzVCLFlBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO09BQ25EO0tBQ0Y7R0FDRjtDQUNGLENBQUM7O2tCQUVhLGdCQUFnQiIsImZpbGUiOiJzaW1wbGUtaHRtbC10b2tlbml6ZXIvZXZlbnRlZC10b2tlbml6ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwcm9jZXNzSW5wdXQsIGlzQWxwaGEsIGlzU3BhY2UgfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gRXZlbnRlZFRva2VuaXplcihkZWxlZ2F0ZSwgZW50aXR5UGFyc2VyKSB7XG4gIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTtcbiAgdGhpcy5lbnRpdHlQYXJzZXIgPSBlbnRpdHlQYXJzZXI7XG5cbiAgdGhpcy5zdGF0ZSA9IG51bGw7XG4gIHRoaXMuaW5wdXQgPSBudWxsO1xuXG4gIHRoaXMuaW5kZXggPSAtMTtcbiAgdGhpcy5saW5lID0gLTE7XG4gIHRoaXMuY29sdW1uID0gLTE7XG4gIHRoaXMudGFnTGluZSA9IC0xO1xuICB0aGlzLnRhZ0NvbHVtbiA9IC0xO1xuXG4gIHRoaXMucmVzZXQoKTtcbn1cblxuRXZlbnRlZFRva2VuaXplci5wcm90b3R5cGUgPSB7XG4gIHJlc2V0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgIHRoaXMuaW5wdXQgPSAnJztcblxuICAgIHRoaXMuaW5kZXggPSAwO1xuICAgIHRoaXMubGluZSA9IDE7XG4gICAgdGhpcy5jb2x1bW4gPSAwO1xuXG4gICAgdGhpcy50YWdMaW5lID0gLTE7XG4gICAgdGhpcy50YWdDb2x1bW4gPSAtMTtcblxuICAgIHRoaXMuZGVsZWdhdGUucmVzZXQoKTtcbiAgfSxcblxuICB0b2tlbml6ZTogZnVuY3Rpb24oaW5wdXQpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgdGhpcy50b2tlbml6ZVBhcnQoaW5wdXQpO1xuICAgIHRoaXMudG9rZW5pemVFT0YoKTtcbiAgfSxcblxuICB0b2tlbml6ZVBhcnQ6IGZ1bmN0aW9uKGlucHV0KSB7XG4gICAgdGhpcy5pbnB1dCArPSBwcmVwcm9jZXNzSW5wdXQoaW5wdXQpO1xuXG4gICAgd2hpbGUgKHRoaXMuaW5kZXggPCB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zdGF0ZXNbdGhpcy5zdGF0ZV0uY2FsbCh0aGlzKTtcbiAgICB9XG4gIH0sXG5cbiAgdG9rZW5pemVFT0Y6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZmx1c2hEYXRhKCk7XG4gIH0sXG5cbiAgZmx1c2hEYXRhOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2RhdGEnKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaERhdGEoKTtcbiAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgfVxuICB9LFxuXG4gIHBlZWs6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0LmNoYXJBdCh0aGlzLmluZGV4KTtcbiAgfSxcblxuICBjb25zdW1lOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY2hhciA9IHRoaXMucGVlaygpO1xuXG4gICAgdGhpcy5pbmRleCsrO1xuXG4gICAgaWYgKGNoYXIgPT09IFwiXFxuXCIpIHtcbiAgICAgIHRoaXMubGluZSsrO1xuICAgICAgdGhpcy5jb2x1bW4gPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtbisrO1xuICAgIH1cblxuICAgIHJldHVybiBjaGFyO1xuICB9LFxuXG4gIGNvbnN1bWVDaGFyUmVmOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlQYXJzZXIucGFyc2UodGhpcyk7XG4gIH0sXG5cbiAgbWFya1RhZ1N0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRhZ0xpbmUgPSB0aGlzLmxpbmU7XG4gICAgdGhpcy50YWdDb2x1bW4gPSB0aGlzLmNvbHVtbjtcbiAgfSxcblxuICBzdGF0ZXM6IHtcbiAgICBiZWZvcmVEYXRhOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIjxcIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3RhZ09wZW4nO1xuICAgICAgICB0aGlzLm1hcmtUYWdTdGFydCgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnZGF0YSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5EYXRhKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiPFwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoRGF0YSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3RhZ09wZW4nO1xuICAgICAgICB0aGlzLm1hcmtUYWdTdGFydCgpO1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTvCoFxuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0RhdGEodGhpcy5jb25zdW1lQ2hhclJlZigpIHx8IFwiJlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvRGF0YShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgdGFnT3BlbjogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCIhXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdtYXJrdXBEZWNsYXJhdGlvbic7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnZW5kVGFnT3Blbic7XG4gICAgICB9IGVsc2UgaWYgKGlzQWxwaGEoY2hhcikpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICd0YWdOYW1lJztcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpblN0YXJ0VGFnKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9UYWdOYW1lKGNoYXIudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG1hcmt1cERlY2xhcmF0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIi1cIiAmJiB0aGlzLmlucHV0LmNoYXJBdCh0aGlzLmluZGV4KSA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRTdGFydCc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5Db21tZW50KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50U3RhcnREYXNoJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hDb21tZW50KCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoY2hhcik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRTdGFydERhc2g6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiLVwiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudEVuZCc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQ29tbWVudCgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLVwiKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50JztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY29tbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoY2hhciA9PT0gXCItXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdjb21tZW50RW5kRGFzaCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQ29tbWVudERhdGEoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRFbmREYXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIi1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnRFbmQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLVwiICsgY2hhcik7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNvbW1lbnRFbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQ29tbWVudCgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb0NvbW1lbnREYXRhKFwiLS1cIiArIGNoYXIpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2NvbW1lbnQnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICB0YWdOYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvVGFnTmFtZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYmVmb3JlQXR0cmlidXRlTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnc2VsZkNsb3NpbmdTdGFydFRhZyc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZU5hbWUnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhdHRyaWJ1dGVOYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc1NwYWNlKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYWZ0ZXJBdHRyaWJ1dGVOYW1lJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCIvXCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdzZWxmQ2xvc2luZ1N0YXJ0VGFnJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI9XCIpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVBdHRyaWJ1dGVWYWx1ZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhZnRlckF0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj1cIikge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZVZhbHVlJztcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaFRhZygpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZURhdGEnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5iZWdpbkF0dHJpYnV0ZVZhbHVlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2F0dHJpYnV0ZU5hbWUnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNoYXIpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBiZWZvcmVBdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2hhciA9IHRoaXMuY29uc3VtZSgpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaGFyKSkge1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQnO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmJlZ2luQXR0cmlidXRlVmFsdWUodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoQXR0cmlidXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYXR0cmlidXRlVmFsdWVVbnF1b3RlZCc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5BdHRyaWJ1dGVWYWx1ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjaGFyKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGNoYXIgPT09ICdcIicpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2FmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZignXCInKSB8fCBcIiZcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChjaGFyID09PSBcIidcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZCc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiJlwiKSB7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh0aGlzLmNvbnN1bWVDaGFyUmVmKFwiJ1wiKSB8fCBcIiZcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLmNvbnN1bWUoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hBdHRyaWJ1dGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZU5hbWUnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIiZcIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodGhpcy5jb25zdW1lQ2hhclJlZihcIj5cIikgfHwgXCImXCIpO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlbGVnYXRlLmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2hhcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGlzU3BhY2UoY2hhcikpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLnN0YXRlID0gJ3NlbGZDbG9zaW5nU3RhcnRUYWcnO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBcIj5cIikge1xuICAgICAgICB0aGlzLmNvbnN1bWUoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5maW5pc2hUYWcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9ICdiZWZvcmVEYXRhJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlQXR0cmlidXRlTmFtZSc7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNlbGZDbG9zaW5nU3RhcnRUYWc6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNoYXIgPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKGNoYXIgPT09IFwiPlwiKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZSgpO1xuICAgICAgICB0aGlzLmRlbGVnYXRlLm1hcmtUYWdBc1NlbGZDbG9zaW5nKCk7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuZmluaXNoVGFnKCk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAnYmVmb3JlRGF0YSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXRlID0gJ2JlZm9yZUF0dHJpYnV0ZU5hbWUnO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBlbmRUYWdPcGVuOiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaGFyID0gdGhpcy5jb25zdW1lKCk7XG5cbiAgICAgIGlmIChpc0FscGhhKGNoYXIpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSAndGFnTmFtZSc7XG4gICAgICAgIHRoaXMuZGVsZWdhdGUuYmVnaW5FbmRUYWcoKTtcbiAgICAgICAgdGhpcy5kZWxlZ2F0ZS5hcHBlbmRUb1RhZ05hbWUoY2hhci50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50ZWRUb2tlbml6ZXI7XG4iXX0=

@@ -143,2 +143,2 @@ exports.__esModule = true;

module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci90b2tlbml6ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztnQ0FBNkIscUJBQXFCOzs7O3NCQU0zQyxVQUFVOztBQUVqQixTQUFTLFNBQVMsQ0FBQyxZQUFZLEVBQUU7QUFDL0IsTUFBSSxDQUFDLFNBQVMsR0FBRywrQkFBcUIsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDOztBQUUxRCxNQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNsQixNQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRXRCLE1BQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUNkOztBQUVELFNBQVMsQ0FBQyxTQUFTLEdBQUc7QUFDcEIsVUFBUSxFQUFFLFVBQVMsS0FBSyxFQUFFO0FBQ3hCLFFBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFFBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztHQUNwQjs7QUFFRCxjQUFZLEVBQUUsVUFBUyxLQUFLLEVBQUU7QUFDNUIsUUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDakIsUUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0dBQ3BCOztBQUVELGFBQVcsRUFBRSxZQUFXO0FBQ3RCLFFBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFFBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0IsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0dBQ3ZCOztBQUVELE9BQUssRUFBRSxZQUFXO0FBQ2hCLFFBQUksQ0FBQyxLQUFLLEdBQUcsSUFB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USxFQUFFO0FBQ3RDLFFBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7R0FDdEM7O0FBRUQsd0JBQXNCLEVBQUUsVUFBUyxJQUFJLEVBQUU7QUFDckMsUUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDNUQsUUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztHQUNuQzs7QUFFRCxzQkFBb0IsRUFBRSxZQUFXLEVBQ2hDO0NBQ0YsQ0FBQzs7a0JBRWEsU0FBUyIsImZpbGUiOiJzaW1wbGUtaHRtbC10b2tlbml6ZXIvdG9rZW5pemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50ZWRUb2tlbml6ZXIgZnJvbSAnLi9ldmVudGVkLXRva2VuaXplcic7XG5pbXBvcnQge1xuICBTdGFydFRhZyxcbiAgRW5kVGFnLFxuICBDaGFycyxcbiAgQ29tbWVudFxufSBmcm9tICcuL3Rva2Vucyc7XG5cbmZ1bmN0aW9uIFRva2VuaXplcihlbnRpdHlQYXJzZXIpIHtcbiAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIpO1xuXG4gIHRoaXMudG9rZW4gPSBudWxsO1xuICB0aGlzLnN0YXJ0TGluZSA9IC0xO1xuICB0aGlzLnN0YXJ0Q29sdW1uID0gLTE7XG5cbiAgdGhpcy5yZXNldCgpO1xufVxuXG5Ub2tlbml6ZXIucHJvdG90eXBlID0ge1xuICB0b2tlbml6ZTogZnVuY3Rpb24oaW5wdXQpIHtcbiAgICB0aGlzLnRva2VucyA9IFtdO1xuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplKGlucHV0KTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH0sXG5cbiAgdG9rZW5pemVQYXJ0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgIHRoaXMudG9rZW5zID0gW107XG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KGlucHV0KTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH0sXG5cbiAgdG9rZW5pemVFT0Y6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW5zID0gW107XG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVFT0YoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnNbMF07XG4gIH0sXG5cbiAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4gPSBudWxsO1xuICAgIHRoaXMuc3RhcnRMaW5lID0gMTtcbiAgICB0aGlzLnN0YXJ0Q29sdW1uID0gMDtcbiAgfSxcblxuICBhZGRMb2NJbmZvOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRva2VuLmxvYyA9IHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGxpbmU6IHRoaXMuc3RhcnRMaW5lLFxuICAgICAgICBjb2x1bW46IHRoaXMuc3RhcnRDb2x1bW5cbiAgICAgIH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogdGhpcy50b2tlbml6ZXIubGluZSxcbiAgICAgICAgY29sdW1uOiB0aGlzLnRva2VuaXplci5jb2x1bW5cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5zdGFydExpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMuc3RhcnRDb2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG4gIH0sXG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBDaGFycygpO1xuICAgIHRoaXMudG9rZW5zLnB1c2godGhpcy50b2tlbik7XG4gIH0sXG5cbiAgYXBwZW5kVG9EYXRhOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy50b2tlbi5jaGFycyArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaERhdGE6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuYWRkTG9jSW5mbygpO1xuICB9LFxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgQ29tbWVudCgpO1xuICAgIHRoaXMudG9rZW5zLnB1c2godGhpcy50b2tlbik7XG4gIH0sXG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMudG9rZW4uY2hhcnMgKz0gY2hhcjtcbiAgfSxcblxuICBmaW5pc2hDb21tZW50OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmFkZExvY0luZm8oKTtcbiAgfSxcblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICBiZWdpblN0YXJ0VGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN0YXJ0VGFnKCk7XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfSxcblxuICBiZWdpbkVuZFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBFbmRUYWcoKTtcbiAgICB0aGlzLnRva2Vucy5wdXNoKHRoaXMudG9rZW4pO1xuICB9LFxuXG4gIGZpbmlzaFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5hZGRMb2NJbmZvKCk7XG4gIH0sXG5cbiAgbWFya1RhZ0FzU2VsZkNsb3Npbmc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4uc2VsZkNsb3NpbmcgPSB0cnVlO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBuYW1lXG5cbiAgYXBwZW5kVG9UYWdOYW1lOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy50b2tlbi50YWdOYW1lICs9IGNoYXI7XG4gIH0sXG5cbiAgLy8gVGFncyAtIGF0dHJpYnV0ZXNcblxuICBiZWdpbkF0dHJpYnV0ZTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VycmVudEF0dHJpYnV0ZSA9IFtcIlwiLCBcIlwiLCBudWxsXTtcbiAgICB0aGlzLnRva2VuLmF0dHJpYnV0ZXMucHVzaCh0aGlzLl9jdXJyZW50QXR0cmlidXRlKTtcbiAgfSxcblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzBdICs9IGNoYXI7XG4gIH0sXG5cbiAgYmVnaW5BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oaXNRdW90ZWQpIHtcbiAgICB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzJdID0gaXNRdW90ZWQ7XG4gIH0sXG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVbMV0gPSB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzFdIHx8IFwiXCI7XG4gICAgdGhpcy5fY3VycmVudEF0dHJpYnV0ZVsxXSArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaEF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbigpIHtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVG9rZW5pemVyO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbXBsZS1odG1sLXRva2VuaXplci90b2tlbml6ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztnQ0FBNkIscUJBQXFCOzs7O3NCQU0zQyxVQUFVOztBQUVqQixTQUFTLFNBQVMsQ0FBQyxZQUFZLEVBQUU7QUFDL0IsTUFBSSxDQUFDLFNBQVMsR0FBRywrQkFBcUIsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDOztBQUUxRCxNQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNsQixNQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLE1BQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRXRCLE1BQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztDQUNkOztBQUVELFNBQVMsQ0FBQyxTQUFTLEdBQUc7QUFDcEIsVUFBUSxFQUFFLFVBQVMsS0FBSyxFQUFFO0FBQ3hCLFFBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFFBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztHQUNwQjs7QUFFRCxjQUFZLEVBQUUsVUFBUyxLQUFLLEVBQUU7QUFDNUIsUUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDakIsUUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0dBQ3BCOztBQUVELGFBQVcsRUFBRSxZQUFXO0FBQ3RCLFFBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFFBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0IsV0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0dBQ3ZCOztBQUVELE9BQUssRUFBRSxZQUFXO0FBQ2hCLFFBQUksQ0FBQyxLQUFLLEdBQUcsSUFB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RyxRQUFRLENBQUM7R0FDdEM7O0FBRUQsd0JBQXNCLEVBQUUsVUFBUyxJQUFJLEVBQUU7QUFDckMsUUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDNUQsUUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztHQUNuQzs7QUFFRCxzQkFBb0IsRUFBRSxZQUFXLEVBQ2hDO0NBQ0YsQ0FBQzs7a0JBRWEsU0FBUyIsImZpbGUiOiJzaW1wbGUtaHRtbC10b2tlbml6ZXIvdG9rZW5pemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50ZWRUb2tlbml6ZXIgZnJvbSAnLi9ldmVudGVkLXRva2VuaXplcic7XG5pbXBvcnQge1xuICBTdGFydFRhZyxcbiAgRW5kVGFnLFxuICBDaGFycyxcbiAgQ29tbWVudFxufSBmcm9tICcuL3Rva2Vucyc7XG5cbmZ1bmN0aW9uIFRva2VuaXplcihlbnRpdHlQYXJzZXIpIHtcbiAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIpO1xuXG4gIHRoaXMudG9rZW4gPSBudWxsO1xuICB0aGlzLnN0YXJ0TGluZSA9IC0xO1xuICB0aGlzLnN0YXJ0Q29sdW1uID0gLTE7XG5cbiAgdGhpcy5yZXNldCgpO1xufVxuXG5Ub2tlbml6ZXIucHJvdG90eXBlID0ge1xuICB0b2tlbml6ZTogZnVuY3Rpb24oaW5wdXQpIHtcbiAgICB0aGlzLnRva2VucyA9IFtdO1xuICAgIHRoaXMudG9rZW5pemVyLnRva2VuaXplKGlucHV0KTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH0sXG5cbiAgdG9rZW5pemVQYXJ0OiBmdW5jdGlvbihpbnB1dCkge1xuICAgIHRoaXMudG9rZW5zID0gW107XG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVQYXJ0KGlucHV0KTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH0sXG5cbiAgdG9rZW5pemVFT0Y6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW5zID0gW107XG4gICAgdGhpcy50b2tlbml6ZXIudG9rZW5pemVFT0YoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbnNbMF07XG4gIH0sXG5cbiAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4gPSBudWxsO1xuICAgIHRoaXMuc3RhcnRMaW5lID0gMTtcbiAgICB0aGlzLnN0YXJ0Q29sdW1uID0gMDtcbiAgfSxcblxuICBhZGRMb2NJbmZvOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRva2VuLmxvYyA9IHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIGxpbmU6IHRoaXMuc3RhcnRMaW5lLFxuICAgICAgICBjb2x1bW46IHRoaXMuc3RhcnRDb2x1bW5cbiAgICAgIH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgbGluZTogdGhpcy50b2tlbml6ZXIubGluZSxcbiAgICAgICAgY29sdW1uOiB0aGlzLnRva2VuaXplci5jb2x1bW5cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5zdGFydExpbmUgPSB0aGlzLnRva2VuaXplci5saW5lO1xuICAgIHRoaXMuc3RhcnRDb2x1bW4gPSB0aGlzLnRva2VuaXplci5jb2x1bW47XG4gIH0sXG5cbiAgLy8gRGF0YVxuXG4gIGJlZ2luRGF0YTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBDaGFycygpO1xuICAgIHRoaXMudG9rZW5zLnB1c2godGhpcy50b2tlbik7XG4gIH0sXG5cbiAgYXBwZW5kVG9EYXRhOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy50b2tlbi5jaGFycyArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaERhdGE6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuYWRkTG9jSW5mbygpO1xuICB9LFxuXG4gIC8vIENvbW1lbnRcblxuICBiZWdpbkNvbW1lbnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4gPSBuZXcgQ29tbWVudCgpO1xuICAgIHRoaXMudG9rZW5zLnB1c2godGhpcy50b2tlbik7XG4gIH0sXG5cbiAgYXBwZW5kVG9Db21tZW50RGF0YTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMudG9rZW4uY2hhcnMgKz0gY2hhcjtcbiAgfSxcblxuICBmaW5pc2hDb21tZW50OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmFkZExvY0luZm8oKTtcbiAgfSxcblxuICAvLyBUYWdzIC0gYmFzaWNcblxuICBiZWdpblN0YXJ0VGFnOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN0YXJ0VGFnKCk7XG4gICAgdGhpcy50b2tlbnMucHVzaCh0aGlzLnRva2VuKTtcbiAgfSxcblxuICBiZWdpbkVuZFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBFbmRUYWcoKTtcbiAgICB0aGlzLnRva2Vucy5wdXNoKHRoaXMudG9rZW4pO1xuICB9LFxuXG4gIGZpbmlzaFRhZzogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5hZGRMb2NJbmZvKCk7XG4gIH0sXG5cbiAgbWFya1RhZ0FzU2VsZkNsb3Npbmc6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudG9rZW4uc2VsZkNsb3NpbmcgPSB0cnVlO1xuICB9LFxuXG4gIC8vIFRhZ3MgLSBuYW1lXG5cbiAgYXBwZW5kVG9UYWdOYW1lOiBmdW5jdGlvbihjaGFyKSB7XG4gICAgdGhpcy50b2tlbi50YWdOYW1lICs9IGNoYXI7XG4gIH0sXG5cbiAgLy8gVGFncyAtIGF0dHJpYnV0ZXNcblxuICBiZWdpbkF0dHJpYnV0ZTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VycmVudEF0dHJpYnV0ZSA9IFtcIlwiLCBcIlwiLCBudWxsXTtcbiAgICB0aGlzLnRva2VuLmF0dHJpYnV0ZXMucHVzaCh0aGlzLl9jdXJyZW50QXR0cmlidXRlKTtcbiAgfSxcblxuICBhcHBlbmRUb0F0dHJpYnV0ZU5hbWU6IGZ1bmN0aW9uKGNoYXIpIHtcbiAgICB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzBdICs9IGNoYXI7XG4gIH0sXG5cbiAgYmVnaW5BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oaXNRdW90ZWQpIHtcbiAgICB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzJdID0gaXNRdW90ZWQ7XG4gIH0sXG5cbiAgYXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZTogZnVuY3Rpb24oY2hhcikge1xuICAgIHRoaXMuX2N1cnJlbnRBdHRyaWJ1dGVbMV0gPSB0aGlzLl9jdXJyZW50QXR0cmlidXRlWzFdIHx8IFwiXCI7XG4gICAgdGhpcy5fY3VycmVudEF0dHJpYnV0ZVsxXSArPSBjaGFyO1xuICB9LFxuXG4gIGZpbmlzaEF0dHJpYnV0ZVZhbHVlOiBmdW5jdGlvbigpIHtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVG9rZW5pemVyO1xuIl19

@@ -166,3 +166,3 @@ import TemplateVisitor from "./template-visitor";

HydrationOpcodeCompiler.prototype.component = function(component, childIndex, childCount) {
this.pushMorphPlaceholderNode(childIndex, childCount);
this.pushMorphPlaceholderNode(childIndex, childCount, component.isStatic);

@@ -242,11 +242,14 @@ var program = component.program || {};

HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function(childIndex, childCount) {
if (this.paths.length === 0) {
if (childIndex === 0) {
this.opcode('openBoundary');
HydrationOpcodeCompiler.prototype.pushMorphPlaceholderNode = function(childIndex, childCount, skipBoundaryNodes) {
if (!skipBoundaryNodes) {
if (this.paths.length === 0) {
if (childIndex === 0) {
this.opcode('openBoundary');
}
if (childIndex === childCount - 1) {
this.opcode('closeBoundary');
}
}
if (childIndex === childCount - 1) {
this.opcode('closeBoundary');
}
}
this.comment();

@@ -253,0 +256,0 @@ };

@@ -23,8 +23,2 @@ import FragmentOpcodeCompiler from './fragment-opcode-compiler';

var dynamicNodes = {
mustache: true,
block: true,
component: true
};
TemplateCompiler.prototype.compile = function(ast) {

@@ -34,24 +28,4 @@ var templateVisitor = new TemplateVisitor();

var normalizedActions = [];
var actions = templateVisitor.actions;
processOpcodes(this, templateVisitor.actions);
for (var i=0, l=actions.length - 1; i<l; i++) {
var action = actions[i];
var nextAction = actions[i + 1];
normalizedActions.push(action);
if (action[0] === "startProgram" && nextAction[0] in dynamicNodes) {
normalizedActions.push(['insertBoundary', [true]]);
}
if (nextAction[0] === "endProgram" && action[0] in dynamicNodes) {
normalizedActions.push(['insertBoundary', [false]]);
}
}
normalizedActions.push(actions[actions.length - 1]);
processOpcodes(this, normalizedActions);
return this.templates.pop();

@@ -140,2 +114,3 @@ };

this.buildMeta(indent+' ', program) +
indent+' isEmpty: ' + (program.body.length ? 'false' : 'true') + ',\n' +
indent+' arity: ' + blockParams.length + ',\n' +

@@ -142,0 +117,0 @@ indent+' cachedFragment: null,\n' +

import hooks from './htmlbars-runtime/hooks';
import render from './htmlbars-runtime/render';
import { manualElement } from './htmlbars-runtime/render';
import { visitChildren } from "../htmlbars-util/morph-utils";
import { validateChildMorphs, visitChildren } from "../htmlbars-util/morph-utils";
import { blockFor, clearMorph } from "../htmlbars-util/template-utils";
import { validateChildMorphs } from "./htmlbars-runtime/expression-visitor";
import {

@@ -8,0 +7,0 @@ hostBlock,

@@ -1,23 +0,2 @@

import { merge } from "../htmlbars-util/object-utils";
import { validateChildMorphs, linkParams } from "../htmlbars-util/morph-utils";
/**
Node classification:
# Primary Statement Nodes:
These nodes are responsible for a render node that represents a morph-range.
* block
* inline
* content
* element
* component
# Leaf Statement Nodes:
This node is responsible for a render node that represents a morph-attr.
* attribute
# Expression Nodes:

@@ -33,232 +12,69 @@

var base = {
acceptExpression: function(node, env, scope) {
var ret = { value: null };
export function acceptParams(nodes, env, scope) {
let array = [];
// Primitive literals are unambiguously non-array representations of
// themselves.
if (typeof node !== 'object' || node === null) {
ret.value = node;
return ret;
}
for (let i = 0, l = nodes.length; i < l; i++) {
array.push(acceptExpression(nodes[i], env, scope).value);
}
switch(node[0]) {
// can be used by manualElement
case 'value': ret.value = node[1]; break;
case 'get': ret.value = this.get(node, env, scope); break;
case 'subexpr': ret.value = this.subexpr(node, env, scope); break;
case 'concat': ret.value = this.concat(node, env, scope); break;
}
return array;
}
return ret;
},
export function acceptHash(pairs, env, scope) {
let object = {};
acceptParams: function(nodes, env, scope) {
var arr = new Array(nodes.length);
for (let i = 0, l = pairs.length; i < l; i += 2) {
let key = pairs[i];
let value = pairs[i+1];
object[key] = acceptExpression(value, env, scope).value;
}
for (var i=0, l=nodes.length; i<l; i++) {
arr[i] = this.acceptExpression(nodes[i], env, scope).value;
}
return object;
}
return arr;
},
function acceptExpression(node, env, scope) {
let ret = { value: null };
acceptHash: function(pairs, env, scope) {
var object = {};
for (var i=0, l=pairs.length; i<l; i += 2) {
object[pairs[i]] = this.acceptExpression(pairs[i+1], env, scope).value;
}
return object;
},
// [ 'get', path ]
get: function(node, env, scope) {
return env.hooks.get(env, scope, node[1]);
},
// [ 'subexpr', path, params, hash ]
subexpr: function(node, env, scope) {
var path = node[1], params = node[2], hash = node[3];
return env.hooks.subexpr(env, scope, path,
this.acceptParams(params, env, scope),
this.acceptHash(hash, env, scope));
},
// [ 'concat', parts ]
concat: function(node, env, scope) {
return env.hooks.concat(env, this.acceptParams(node[1], env, scope));
},
linkParamsAndHash: function(env, scope, morph, path, params, hash) {
if (morph.linkedParams) {
params = morph.linkedParams.params;
hash = morph.linkedParams.hash;
} else {
params = params && this.acceptParams(params, env, scope);
hash = hash && this.acceptHash(hash, env, scope);
}
linkParams(env, scope, morph, path, params, hash);
return [params, hash];
// Primitive literals are unambiguously non-array representations of
// themselves.
if (typeof node !== 'object' || node === null) {
ret.value = node;
} else {
ret.value = evaluateNode(node, env, scope);
}
};
export var AlwaysDirtyVisitor = merge(Object.create(base), {
// [ 'block', path, params, hash, templateId, inverseId ]
block: function(node, morph, env, scope, template, visitor) {
var path = node[1], params = node[2], hash = node[3], templateId = node[4], inverseId = node[5];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
return ret;
}
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.block(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1],
templateId === null ? null : template.templates[templateId],
inverseId === null ? null : template.templates[inverseId],
visitor);
},
// [ 'inline', path, params, hash ]
inline: function(node, morph, env, scope, visitor) {
var path = node[1], params = node[2], hash = node[3];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.inline(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
},
// [ 'content', path ]
content: function(node, morph, env, scope, visitor) {
var path = node[1];
morph.isDirty = morph.isSubtreeDirty = false;
if (isHelper(env, scope, path)) {
env.hooks.inline(morph, env, scope, path, [], {}, visitor);
if (morph.linkedResult) {
linkParams(env, scope, morph, '@content-helper', [morph.linkedResult], null);
}
return;
}
var params;
if (morph.linkedParams) {
params = morph.linkedParams.params;
} else {
params = [env.hooks.get(env, scope, path)];
}
linkParams(env, scope, morph, '@range', params, null);
env.hooks.range(morph, env, scope, path, params[0], visitor);
},
// [ 'element', path, params, hash ]
element: function(node, morph, env, scope, visitor) {
var path = node[1], params = node[2], hash = node[3];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, params, hash);
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.element(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1], visitor);
},
// [ 'attribute', name, value ]
attribute: function(node, morph, env, scope) {
var name = node[1], value = node[2];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, '@attribute', [value], null);
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.attribute(morph, env, scope, name, paramsAndHash[0][0]);
},
// [ 'component', path, attrs, templateId, inverseId ]
component: function(node, morph, env, scope, template, visitor) {
var path = node[1], attrs = node[2], templateId = node[3], inverseId = node[4];
var paramsAndHash = this.linkParamsAndHash(env, scope, morph, path, [], attrs);
var templates = {
default: template.templates[templateId],
inverse: template.templates[inverseId]
};
morph.isDirty = morph.isSubtreeDirty = false;
env.hooks.component(morph, env, scope, path, paramsAndHash[0], paramsAndHash[1],
templates, visitor);
},
// [ 'attributes', template ]
attributes: function(node, morph, env, scope, parentMorph, visitor) {
let template = node[1];
env.hooks.attributes(morph, env, scope, template, parentMorph, visitor);
function evaluateNode(node, env, scope) {
switch (node[0]) {
// can be used by manualElement
case 'value': return node[1];
case 'get': return evaluateGet(node, env, scope);
case 'subexpr': return evaluateSubexpr(node, env, scope);
case 'concat': return evaluateConcat(node, env, scope);
}
});
}
export default merge(Object.create(base), {
// [ 'block', path, params, hash, templateId, inverseId ]
block: function(node, morph, env, scope, template, visitor) {
dirtyCheck(env, morph, visitor, function(visitor) {
AlwaysDirtyVisitor.block(node, morph, env, scope, template, visitor);
});
},
function evaluateGet(node, env, scope) {
let [, path] = node;
// [ 'inline', path, params, hash ]
inline: function(node, morph, env, scope, visitor) {
dirtyCheck(env, morph, visitor, function(visitor) {
AlwaysDirtyVisitor.inline(node, morph, env, scope, visitor);
});
},
return env.hooks.get(env, scope, path);
}
// [ 'content', path ]
content: function(node, morph, env, scope, visitor) {
dirtyCheck(env, morph, visitor, function(visitor) {
AlwaysDirtyVisitor.content(node, morph, env, scope, visitor);
});
},
function evaluateSubexpr(node, env, scope) {
let [, path, rawParams, rawHash] = node;
// [ 'element', path, params, hash ]
element: function(node, morph, env, scope, template, visitor) {
dirtyCheck(env, morph, visitor, function(visitor) {
AlwaysDirtyVisitor.element(node, morph, env, scope, template, visitor);
});
},
let params = acceptParams(rawParams, env, scope);
let hash = acceptHash(rawHash, env, scope);
// [ 'attribute', name, value ]
attribute: function(node, morph, env, scope, template) {
dirtyCheck(env, morph, null, function() {
AlwaysDirtyVisitor.attribute(node, morph, env, scope, template);
});
},
return env.hooks.subexpr(env, scope, path, params, hash);
}
// [ 'component', path, attrs, templateId ]
component: function(node, morph, env, scope, template, visitor) {
dirtyCheck(env, morph, visitor, function(visitor) {
AlwaysDirtyVisitor.component(node, morph, env, scope, template, visitor);
});
},
function evaluateConcat(node, env, scope) {
let [, rawParts] = node;
// [ 'attributes', template ]
attributes: function(node, morph, env, scope, parentMorph, visitor) {
AlwaysDirtyVisitor.attributes(node, morph, env, scope, parentMorph, visitor);
}
});
let parts = acceptParams(rawParts, env, scope);
function dirtyCheck(_env, morph, visitor, callback) {
var isDirty = morph.isDirty;
var isSubtreeDirty = morph.isSubtreeDirty;
var env = _env;
if (isSubtreeDirty) {
visitor = AlwaysDirtyVisitor;
}
if (isDirty || isSubtreeDirty) {
callback(visitor);
} else {
if (morph.buildChildEnv) {
env = morph.buildChildEnv(morph.state, env);
}
validateChildMorphs(env, morph, visitor);
}
return env.hooks.concat(env, parts);
}
function isHelper(env, scope, path) {
return (env.hooks.keywords[path] !== undefined) || env.hooks.hasHelper(env, scope, path);
}

@@ -454,2 +454,4 @@ import render from "./render";

scope.locals = Object.create(parent.locals);
scope.localPresent = Object.create(parent.localPresent);
scope.blocks = Object.create(parent.blocks);
return scope;

@@ -456,0 +458,0 @@ }

import { forEach } from "../htmlbars-util/array-utils";
import { visitChildren } from "../htmlbars-util/morph-utils";
import ExpressionVisitor from "./expression-visitor";
import { AlwaysDirtyVisitor } from "./expression-visitor";
import ExpressionVisitor from "./node-visitor";
import { AlwaysDirtyVisitor } from "./node-visitor";
import Morph from "./morph";

@@ -83,3 +83,3 @@ import { clearMorph } from "../htmlbars-util/template-utils";

export function manualElement(tagName, attributes) {
export function manualElement(tagName, attributes, _isEmpty) {
var statements = [];

@@ -92,4 +92,8 @@

statements.push(['content', 'yield']);
var isEmpty = _isEmpty || voidMap[tagName];
if (!isEmpty) {
statements.push(['content', 'yield']);
}
var template = {

@@ -111,3 +115,3 @@ arity: 0,

if (!voidMap[tagName]) {
if (!isEmpty) {
var el2 = dom.createComment("");

@@ -130,3 +134,6 @@ dom.appendChild(el1, el2);

morphs.push(dom.createMorphAt(element, 0, 0));
if (!isEmpty) {
morphs.push(dom.createMorphAt(element, 0, 0));
}
return morphs;

@@ -133,0 +140,0 @@ },

@@ -79,3 +79,10 @@ // Statements

program: program,
loc: buildLoc(loc)
loc: buildLoc(loc),
// this should be true only if this component node is guaranteed
// to produce start and end points that can never change after the
// initial render, regardless of changes to dynamic inputs. If
// a component represents a "fragment" (any number of top-level nodes),
// this will usually not be true.
isStatic: false
};

@@ -82,0 +89,0 @@ }

@@ -6,3 +6,3 @@ /*

* See https://raw.githubusercontent.com/tildeio/htmlbars/master/LICENSE
* @version 0.14.2.b6a7b310
* @version v0.14.3
*/

@@ -9,0 +9,0 @@

@@ -1,15 +0,14 @@

/* global QUnit */
/* global QUnit, after */
window.global_test_results = null;
var exportTestResultsForSauce = function(testResults) {
window.global_test_results = testResults;
};
if (typeof QUnit !== 'undefined') {
QUnit.done(exportTestResultsForSauce);
window.exportTestResultsForSauce = function (testResults) {
window.global_test_results = testResults;
};
QUnit.done(window.exportTestResultsForSauce);
} else if (typeof Mocha !== 'undefined') {
// Mocha stats reporting requires access to the mocha runner
// Issue: https://github.com/switchfly/ember-cli-mocha/issues/52
// after(exportTestResultsForSauce);
delete window.global_test_results;
after(function() {
window.global_test_results = window.mochaRunner.stats;
window.global_test_results.reports = [];
});
}

@@ -65,2 +65,17 @@ define("htmlbars-runtime-tests/hooks-test", ["exports", "../htmlbars-runtime", "../htmlbars-util/object-utils", "../htmlbars-compiler/compiler", "../htmlbars-test-helpers", "../dom-helper"], function (exports, _htmlbarsRuntime, _htmlbarsUtilObjectUtils, _htmlbarsCompilerCompiler, _htmlbarsTestHelpers, _domHelper) {

});
test("createChildScope hook creates a new object for `blocks`", function () {
var scope = env.hooks.createFreshScope();
var child = env.hooks.createChildScope(scope);
var parentBlock = function () {};
env.hooks.bindBlock(env, scope, parentBlock, 'inherited');
strictEqual(scope.blocks.inherited, parentBlock);
strictEqual(child.blocks.inherited, parentBlock);
var childBlock = function () {};
env.hooks.bindBlock(env, child, childBlock, 'notInherited');
strictEqual(scope.blocks.notInherited, undefined);
strictEqual(child.blocks.notInherited, childBlock);
});
});

@@ -71,3 +86,3 @@

// import { hostBlock } from "../htmlbars-runtime/hooks";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaG9va3MtdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLE1BQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDOztBQUVsQyxXQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ3RDLFdBQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7R0FDMUI7O0FBRUQsV0FBUyxXQUFXLEdBQUc7QUFDckIsU0FBSyxHQUFHLHlCQWRELEtBQUssQ0FjRSxFQUFFLG1CQWZULEtBQUssQ0FlbUIsQ0FBQztBQUNoQyxTQUFLLENBQUMsUUFBUSxHQUFHLHlCQWZWLEtBQUssQ0FlVyxFQUFFLEVBQUUsaUJBaEJwQixLQUFLLENBZ0I0QixRQUFRLENBQUMsQ0FBQztBQUNsRCxXQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2IsWUFBUSxHQUFHLEVBQUUsQ0FBQzs7QUFFZCxPQUFHLEdBQUc7QUFDSixTQUFHLEVBQUUsd0JBQWU7QUFDcEIsV0FBSyxFQUFFLEtBQUs7QUFDWixhQUFPLEVBQUUsT0FBTztBQUNoQixjQUFRLEVBQUUsUUFBUTtBQUNsQixzQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCLENBQUM7R0FDSDs7QUFFRCxPQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFO0FBQ3RDLGNBQVUsRUFBRSxXQUFXO0dBQ3hCLENBQUMsQ0FBQzs7QUFFSCxNQUFJLENBQUMsaURBQWlELEVBQUUsWUFBVzs7QUFFakUsa0JBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBUyxNQUFNLEVBQUU7QUFDckMsYUFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbEIsQ0FBQyxDQUFDOztBQUVILFFBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlCLFFBQUksUUFBUSxHQUFHLDBCQXJDUixPQUFPLENBcUNTLHdCQUF3QixDQUFDLENBQUM7QUFDakQsUUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7O0FBRTFDLHlCQXRDTyxXQUFXLENBc0NOLE1BQU0sQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzs7QUFFakQsVUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7O0FBRWhCLFVBQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7QUFFbEIseUJBNUNPLFdBQVcsQ0E0Q04sTUFBTSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztHQUU3QyxDQUFDLENBQUM7O0FBRUgsTUFBSSxDQUFDLGlEQUFpRCxFQUFFLFlBQVc7O0FBRWpFLGtCQUFjLENBQUMsS0FBSyxFQUFFLFVBQVMsTUFBTSxFQUFFO0FBQ3JDLGFBQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xCLENBQUMsQ0FBQzs7QUFFSCxRQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM5QixRQUFJLFFBQVEsR0FBRywwQkF6RFIsT0FBTyxDQXlEUyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ2pELFFBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDOztBQUUxQyx5QkExRE8sV0FBVyxDQTBETixNQUFNLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7O0FBRWpELFVBQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDOztBQUVoQixVQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7O0FBRWxCLHlCQWhFTyxXQUFXLENBZ0VOLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7R0FFN0MsQ0FBQyxDQUFDIiwiZmlsZSI6Imh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaG9va3MtdGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhvb2tzIGFzIGRlZmF1bHRIb29rcyB9IGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCIuLi9odG1sYmFycy11dGlsL29iamVjdC11dGlsc1wiO1xuLy8gaW1wb3J0IHsgbWFudWFsRWxlbWVudCB9IGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lL3JlbmRlclwiO1xuaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gXCIuLi9odG1sYmFycy1jb21waWxlci9jb21waWxlclwiO1xuLy8gaW1wb3J0IHsgaG9zdEJsb2NrIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXJ1bnRpbWUvaG9va3NcIjtcbmltcG9ydCB7IGVxdWFsVG9rZW5zIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXRlc3QtaGVscGVyc1wiO1xuaW1wb3J0IERPTUhlbHBlciBmcm9tIFwiLi4vZG9tLWhlbHBlclwiO1xuXG52YXIgaG9va3MsIGhlbHBlcnMsIHBhcnRpYWxzLCBlbnY7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVySGVscGVyKG5hbWUsIGNhbGxiYWNrKSB7XG4gIGhlbHBlcnNbbmFtZV0gPSBjYWxsYmFjaztcbn1cblxuZnVuY3Rpb24gY29tbW9uU2V0dXAoKSB7XG4gIGhvb2tzID0gbWVyZ2Uoe30sIGRlZmF1bHRIb29rcyk7XG4gIGhvb2tzLmtleXdvcmRzID0gbWVyZ2Uoe30sIGRlZmF1bHRIb29rcy5rZXl3b3Jkcyk7XG4gIGhlbHBlcnMgPSB7fTtcbiAgcGFydGlhbHMgPSB7fTtcblxuICBlbnYgPSB7XG4gICAgZG9tOiBuZXcgRE9NSGVscGVyKCksXG4gICAgaG9va3M6IGhvb2tzLFxuICAgIGhlbHBlcnM6IGhlbHBlcnMsXG4gICAgcGFydGlhbHM6IHBhcnRpYWxzLFxuICAgIHVzZUZyYWdtZW50Q2FjaGU6IHRydWVcbiAgfTtcbn1cblxuUVVuaXQubW9kdWxlKFwiaHRtbGJhcnMtcnVudGltZTogaG9va3NcIiwge1xuICBiZWZvcmVFYWNoOiBjb21tb25TZXR1cFxufSk7XG5cbnRlc3QoXCJpbmxpbmUgaG9vayBjb3JyZWN0bHkgaGFuZGxlcyBmYWxzZS1saWtlIHZhbHVlc1wiLCBmdW5jdGlvbigpIHtcblxuICByZWdpc3RlckhlbHBlcignZ2V0JywgZnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgcmV0dXJuIHBhcmFtc1swXTtcbiAgfSk7XG5cbiAgdmFyIG9iamVjdCA9IHsgdmFsOiAnaGVsbG8nIH07XG4gIHZhciB0ZW1wbGF0ZSA9IGNvbXBpbGUoJzxkaXY+e3tnZXQgdmFsfX08L2Rpdj4nKTtcbiAgdmFyIHJlc3VsdCA9IHRlbXBsYXRlLnJlbmRlcihvYmplY3QsIGVudik7XG5cbiAgZXF1YWxUb2tlbnMocmVzdWx0LmZyYWdtZW50LCAnPGRpdj5oZWxsbzwvZGl2PicpO1xuXG4gIG9iamVjdC52YWwgPSAnJztcblxuICByZXN1bHQucmVyZW5kZXIoKTtcblxuICBlcXVhbFRva2VucyhyZXN1bHQuZnJhZ21lbnQsICc8ZGl2PjwvZGl2PicpO1xuXG59KTtcblxudGVzdChcImlubGluZSBob29rIGNvcnJlY3RseSBoYW5kbGVzIGZhbHNlLWxpa2UgdmFsdWVzXCIsIGZ1bmN0aW9uKCkge1xuXG4gIHJlZ2lzdGVySGVscGVyKCdnZXQnLCBmdW5jdGlvbihwYXJhbXMpIHtcbiAgICByZXR1cm4gcGFyYW1zWzBdO1xuICB9KTtcblxuICB2YXIgb2JqZWN0ID0geyB2YWw6ICdoZWxsbycgfTtcbiAgdmFyIHRlbXBsYXRlID0gY29tcGlsZSgnPGRpdj57e2dldCB2YWx9fTwvZGl2PicpO1xuICB2YXIgcmVzdWx0ID0gdGVtcGxhdGUucmVuZGVyKG9iamVjdCwgZW52KTtcblxuICBlcXVhbFRva2VucyhyZXN1bHQuZnJhZ21lbnQsICc8ZGl2PmhlbGxvPC9kaXY+Jyk7XG5cbiAgb2JqZWN0LnZhbCA9ICcnO1xuXG4gIHJlc3VsdC5yZXJlbmRlcigpO1xuXG4gIGVxdWFsVG9rZW5zKHJlc3VsdC5mcmFnbWVudCwgJzxkaXY+PC9kaXY+Jyk7XG5cbn0pO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaG9va3MtdGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLE1BQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDOztBQUVsQyxXQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ3RDLFdBQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUM7R0FDMUI7O0FBRUQsV0FBUyxXQUFXLEdBQUc7QUFDckIsU0FBSyxHQUFHLHlCQWRELEtBQUssQ0FjRSxFQUFFLG1CQWZULEtBQUssQ0FlbUIsQ0FBQztBQUNoQyxTQUFLLENBQUMsUUFBUSxHQUFHLHlCQWZWLEtBQUssQ0FlVyxFQUFFLEVBQUUsaUJBaEJwQixLQUFLLENBZ0I0QixRQUFRLENBQUMsQ0FBQztBQUNsRCxXQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2IsWUFBUSxHQUFHLEVBQUUsQ0FBQzs7QUFFZCxPQUFHLEdBQUc7QUFDSixTQUFHLEVBQUUsd0JBQWU7QUFDcEIsV0FBSyxFQUFFLEtBQUs7QUFDWixhQUFPLEVBQUUsT0FBTztBQUNoQixjQUFRLEVBQUUsUUFBUTtBQUNsQixzQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCLENBQUM7R0FDSDs7QUFFRCxPQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixFQUFFO0FBQ3RDLGNBQVUsRUFBRSxXQUFXO0dBQ3hCLENBQUMsQ0FBQzs7QUFFSCxNQUFJLENBQUMsaURBQWlELEVBQUUsWUFBVzs7QUFFakUsa0JBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBUyxNQUFNLEVBQUU7QUFDckMsYUFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbEIsQ0FBQyxDQUFDOztBQUVILFFBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlCLFFBQUksUUFBUSxHQUFHLDBCQXJDUixPQUFPLENBcUNTLHdCQUF3QixDQUFDLENBQUM7QUFDakQsUUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7O0FBRTFDLHlCQXRDTyxXQUFXLENBc0NOLE1BQU0sQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzs7QUFFakQsVUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7O0FBRWhCLFVBQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7QUFFbEIseUJBNUNPLFdBQVcsQ0E0Q04sTUFBTSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztHQUU3QyxDQUFDLENBQUM7O0FBRUgsTUFBSSxDQUFDLGlEQUFpRCxFQUFFLFlBQVc7O0FBRWpFLGtCQUFjLENBQUMsS0FBSyxFQUFFLFVBQVMsTUFBTSxFQUFFO0FBQ3JDLGFBQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2xCLENBQUMsQ0FBQzs7QUFFSCxRQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM5QixRQUFJLFFBQVEsR0FBRywwQkF6RFIsT0FBTyxDQXlEUyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ2pELFFBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDOztBQUUxQyx5QkExRE8sV0FBVyxDQTBETixNQUFNLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7O0FBRWpELFVBQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDOztBQUVoQixVQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7O0FBRWxCLHlCQWhFTyxXQUFXLENBZ0VOLE1BQU0sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7R0FFN0MsQ0FBQyxDQUFDOztBQUVILE1BQUksQ0FBQyx5REFBeUQsRUFBRSxZQUFXO0FBQ3pFLFFBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN6QyxRQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUU5QyxRQUFJLFdBQVcsR0FBRyxZQUFXLEVBQUUsQ0FBQztBQUNoQyxPQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxRCxlQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDakQsZUFBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDOztBQUVqRCxRQUFJLFVBQVUsR0FBRyxZQUFXLEVBQUUsQ0FBQztBQUMvQixPQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUM1RCxlQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEQsZUFBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0dBQ3BELENBQUMsQ0FBQyIsImZpbGUiOiJodG1sYmFycy1ydW50aW1lLXRlc3RzL2hvb2tzLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBob29rcyBhcyBkZWZhdWx0SG9va3MgfSBmcm9tIFwiLi4vaHRtbGJhcnMtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC9vYmplY3QtdXRpbHNcIjtcbi8vIGltcG9ydCB7IG1hbnVhbEVsZW1lbnQgfSBmcm9tIFwiLi4vaHRtbGJhcnMtcnVudGltZS9yZW5kZXJcIjtcbmltcG9ydCB7IGNvbXBpbGUgfSBmcm9tIFwiLi4vaHRtbGJhcnMtY29tcGlsZXIvY29tcGlsZXJcIjtcbi8vIGltcG9ydCB7IGhvc3RCbG9jayB9IGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lL2hvb2tzXCI7XG5pbXBvcnQgeyBlcXVhbFRva2VucyB9IGZyb20gXCIuLi9odG1sYmFycy10ZXN0LWhlbHBlcnNcIjtcbmltcG9ydCBET01IZWxwZXIgZnJvbSBcIi4uL2RvbS1oZWxwZXJcIjtcblxudmFyIGhvb2tzLCBoZWxwZXJzLCBwYXJ0aWFscywgZW52O1xuXG5mdW5jdGlvbiByZWdpc3RlckhlbHBlcihuYW1lLCBjYWxsYmFjaykge1xuICBoZWxwZXJzW25hbWVdID0gY2FsbGJhY2s7XG59XG5cbmZ1bmN0aW9uIGNvbW1vblNldHVwKCkge1xuICBob29rcyA9IG1lcmdlKHt9LCBkZWZhdWx0SG9va3MpO1xuICBob29rcy5rZXl3b3JkcyA9IG1lcmdlKHt9LCBkZWZhdWx0SG9va3Mua2V5d29yZHMpO1xuICBoZWxwZXJzID0ge307XG4gIHBhcnRpYWxzID0ge307XG5cbiAgZW52ID0ge1xuICAgIGRvbTogbmV3IERPTUhlbHBlcigpLFxuICAgIGhvb2tzOiBob29rcyxcbiAgICBoZWxwZXJzOiBoZWxwZXJzLFxuICAgIHBhcnRpYWxzOiBwYXJ0aWFscyxcbiAgICB1c2VGcmFnbWVudENhY2hlOiB0cnVlXG4gIH07XG59XG5cblFVbml0Lm1vZHVsZShcImh0bWxiYXJzLXJ1bnRpbWU6IGhvb2tzXCIsIHtcbiAgYmVmb3JlRWFjaDogY29tbW9uU2V0dXBcbn0pO1xuXG50ZXN0KFwiaW5saW5lIGhvb2sgY29ycmVjdGx5IGhhbmRsZXMgZmFsc2UtbGlrZSB2YWx1ZXNcIiwgZnVuY3Rpb24oKSB7XG5cbiAgcmVnaXN0ZXJIZWxwZXIoJ2dldCcsIGZ1bmN0aW9uKHBhcmFtcykge1xuICAgIHJldHVybiBwYXJhbXNbMF07XG4gIH0pO1xuXG4gIHZhciBvYmplY3QgPSB7IHZhbDogJ2hlbGxvJyB9O1xuICB2YXIgdGVtcGxhdGUgPSBjb21waWxlKCc8ZGl2Pnt7Z2V0IHZhbH19PC9kaXY+Jyk7XG4gIHZhciByZXN1bHQgPSB0ZW1wbGF0ZS5yZW5kZXIob2JqZWN0LCBlbnYpO1xuXG4gIGVxdWFsVG9rZW5zKHJlc3VsdC5mcmFnbWVudCwgJzxkaXY+aGVsbG88L2Rpdj4nKTtcblxuICBvYmplY3QudmFsID0gJyc7XG5cbiAgcmVzdWx0LnJlcmVuZGVyKCk7XG5cbiAgZXF1YWxUb2tlbnMocmVzdWx0LmZyYWdtZW50LCAnPGRpdj48L2Rpdj4nKTtcblxufSk7XG5cbnRlc3QoXCJpbmxpbmUgaG9vayBjb3JyZWN0bHkgaGFuZGxlcyBmYWxzZS1saWtlIHZhbHVlc1wiLCBmdW5jdGlvbigpIHtcblxuICByZWdpc3RlckhlbHBlcignZ2V0JywgZnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgcmV0dXJuIHBhcmFtc1swXTtcbiAgfSk7XG5cbiAgdmFyIG9iamVjdCA9IHsgdmFsOiAnaGVsbG8nIH07XG4gIHZhciB0ZW1wbGF0ZSA9IGNvbXBpbGUoJzxkaXY+e3tnZXQgdmFsfX08L2Rpdj4nKTtcbiAgdmFyIHJlc3VsdCA9IHRlbXBsYXRlLnJlbmRlcihvYmplY3QsIGVudik7XG5cbiAgZXF1YWxUb2tlbnMocmVzdWx0LmZyYWdtZW50LCAnPGRpdj5oZWxsbzwvZGl2PicpO1xuXG4gIG9iamVjdC52YWwgPSAnJztcblxuICByZXN1bHQucmVyZW5kZXIoKTtcblxuICBlcXVhbFRva2VucyhyZXN1bHQuZnJhZ21lbnQsICc8ZGl2PjwvZGl2PicpO1xuXG59KTtcblxudGVzdChcImNyZWF0ZUNoaWxkU2NvcGUgaG9vayBjcmVhdGVzIGEgbmV3IG9iamVjdCBmb3IgYGJsb2Nrc2BcIiwgZnVuY3Rpb24oKSB7XG4gIGxldCBzY29wZSA9IGVudi5ob29rcy5jcmVhdGVGcmVzaFNjb3BlKCk7XG4gIGxldCBjaGlsZCA9IGVudi5ob29rcy5jcmVhdGVDaGlsZFNjb3BlKHNjb3BlKTtcblxuICBsZXQgcGFyZW50QmxvY2sgPSBmdW5jdGlvbigpIHt9O1xuICBlbnYuaG9va3MuYmluZEJsb2NrKGVudiwgc2NvcGUsIHBhcmVudEJsb2NrLCAnaW5oZXJpdGVkJyk7XG4gIHN0cmljdEVxdWFsKHNjb3BlLmJsb2Nrcy5pbmhlcml0ZWQsIHBhcmVudEJsb2NrKTtcbiAgc3RyaWN0RXF1YWwoY2hpbGQuYmxvY2tzLmluaGVyaXRlZCwgcGFyZW50QmxvY2spO1xuXG4gIGxldCBjaGlsZEJsb2NrID0gZnVuY3Rpb24oKSB7fTtcbiAgZW52Lmhvb2tzLmJpbmRCbG9jayhlbnYsIGNoaWxkLCBjaGlsZEJsb2NrLCAnbm90SW5oZXJpdGVkJyk7XG4gIHN0cmljdEVxdWFsKHNjb3BlLmJsb2Nrcy5ub3RJbmhlcml0ZWQsIHVuZGVmaW5lZCk7XG4gIHN0cmljdEVxdWFsKGNoaWxkLmJsb2Nrcy5ub3RJbmhlcml0ZWQsIGNoaWxkQmxvY2spO1xufSk7XG4iXX0=
define('htmlbars-runtime-tests/hooks-test.jshint', ['exports'], function (exports) {

@@ -184,2 +199,9 @@ module('JSHint - htmlbars-runtime-tests');

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaHRtbGJhcnMtcnVudGltZS9tb3JwaC5qc2hpbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0FBQzNELE1BQUksQ0FBQyxxRUFBcUUsRUFBRSxZQUFXO0FBQ3JGLE1BQUUsQ0FBQyxJQUFJLEVBQUUsc0VBQXNFLENBQUMsQ0FBQztHQUNsRixDQUFDLENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtcnVudGltZS10ZXN0cy9odG1sYmFycy1ydW50aW1lL21vcnBoLmpzaGludC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZSgnSlNIaW50IC0gaHRtbGJhcnMtcnVudGltZS10ZXN0cy9odG1sYmFycy1ydW50aW1lJyk7XG50ZXN0KCdodG1sYmFycy1ydW50aW1lLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbW9ycGguanMgc2hvdWxkIHBhc3MganNoaW50JywgZnVuY3Rpb24oKSB7IFxuICBvayh0cnVlLCAnaHRtbGJhcnMtcnVudGltZS10ZXN0cy9odG1sYmFycy1ydW50aW1lL21vcnBoLmpzIHNob3VsZCBwYXNzIGpzaGludC4nKTsgXG59KTtcbiJdfQ==
define('htmlbars-runtime-tests/htmlbars-runtime/node-visitor.jshint', ['exports'], function (exports) {
module('JSHint - htmlbars-runtime-tests/htmlbars-runtime');
test('htmlbars-runtime-tests/htmlbars-runtime/node-visitor.js should pass jshint', function () {
ok(true, 'htmlbars-runtime-tests/htmlbars-runtime/node-visitor.js should pass jshint.');
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaHRtbGJhcnMtcnVudGltZS9ub2RlLXZpc2l0b3IuanNoaW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFNLENBQUMsa0RBQWtELENBQUMsQ0FBQztBQUMzRCxNQUFJLENBQUMsNEVBQTRFLEVBQUUsWUFBVztBQUM1RixNQUFFLENBQUMsSUFBSSxFQUFFLDZFQUE2RSxDQUFDLENBQUM7R0FDekYsQ0FBQyxDQUFDIiwiZmlsZSI6Imh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaHRtbGJhcnMtcnVudGltZS9ub2RlLXZpc2l0b3IuanNoaW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlKCdKU0hpbnQgLSBodG1sYmFycy1ydW50aW1lLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUnKTtcbnRlc3QoJ2h0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvaHRtbGJhcnMtcnVudGltZS9ub2RlLXZpc2l0b3IuanMgc2hvdWxkIHBhc3MganNoaW50JywgZnVuY3Rpb24oKSB7IFxuICBvayh0cnVlLCAnaHRtbGJhcnMtcnVudGltZS10ZXN0cy9odG1sYmFycy1ydW50aW1lL25vZGUtdmlzaXRvci5qcyBzaG91bGQgcGFzcyBqc2hpbnQuJyk7IFxufSk7XG4iXX0=
define('htmlbars-runtime-tests/htmlbars-runtime/render.jshint', ['exports'], function (exports) {

@@ -208,23 +230,2 @@ module('JSHint - htmlbars-runtime-tests/htmlbars-runtime');

function keys(obj) {
var ownKeys = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
ownKeys.push(key);
}
}
return ownKeys;
}
test("hooks are present", function () {
var hookNames = ["keywords", "linkRenderNode", "createScope", "classify", "createFreshScope", "createChildScope", "bindShadowScope", "bindScope", "bindSelf", "bindLocal", "bindBlock", "updateScope", "updateSelf", "updateLocal", "lookupHelper", "hasHelper", "invokeHelper", "range", "block", "inline", "keyword", "partial", "component", "element", "attribute", "subexpr", "concat", "get", "getRoot", "getChild", "getValue", "cleanupRenderNode", "destroyRenderNode", "willCleanupTree", "didCleanupTree", "getCellOrValue", "didRenderNode", "willRenderNode"];
for (var i = 0; i < hookNames.length; i++) {
var hook = _htmlbarsRuntime.hooks[hookNames[i]];
ok(hook !== undefined, "hook " + hookNames[i] + " is present");
}
equal(keys(_htmlbarsRuntime.hooks).length, hookNames.length, "Hooks length match");
});
test("manualElement function honors namespaces", function () {

@@ -338,3 +339,3 @@ _htmlbarsRuntime.hooks.keywords['manual-element'] = {

/*globals SVGElement, SVGLinearGradientElement */
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvbWFpbi10ZXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsTUFBSSxHQUFHLFlBQUEsQ0FBQzs7QUFFUixPQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO0FBQy9CLFNBQUssRUFBQSxZQUFHO0FBQ04sU0FBRyxHQUFHO0FBQ0osV0FBRyxFQUFFLHdCQUFlO0FBQ3BCLGFBQUssbUJBZkYsS0FBSyxBQWVJO0FBQ1osZUFBTyxFQUFFLEVBQUU7QUFDWCxnQkFBUSxFQUFFLEVBQUU7QUFDWix3QkFBZ0IsRUFBRSxJQUFJO09BQ3ZCLENBQUM7S0FDSDtHQUNGLENBQUMsQ0FBQzs7QUFFSCxXQUFTLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDakIsUUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLFNBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO0FBQ25CLFVBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMzQixlQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQ25CO0tBQ0Y7QUFDRCxXQUFPLE9BQU8sQ0FBQztHQUNoQjs7QUFFRCxNQUFJLENBQUMsbUJBQW1CLEVBQUUsWUFBWTtBQUNwQyxRQUFJLFNBQVMsR0FBRyxDQUNkLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLFdBQVcsRUFDWCxjQUFjLEVBQ2QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFD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QU8sQ0FzS1Msa0JBQWtCLENBQUMsQ0FBQzs7QUFFM0MsUUFBSSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDOUIsUUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFWLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDeEQsUUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzs7QUFFNUQseUJBMUtPLFdBQVcsQ0EwS04sTUFBTSxDQUFDLFFBQVEsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDOztBQUUvRSxRQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztBQUN0QixVQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7O0FBRWxCLHlCQS9LTyxXQUFXLENBK0tOLE1BQU0sQ0FBQyxRQUFRLEVBQUUsaURBQWlELENBQUMsQ0FBQzs7QUFFaEYsUUFBSSxRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsK0JBakxPLFVBQVUsQ0FpTE4sTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7O0FBRW5DLGFBQVMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7R0FDckMsQ0FBQyxDQUFDIiwiZmlsZSI6Imh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvbWFpbi10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypnbG9iYWxzIFNWR0VsZW1lbnQsIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqL1xuaW1wb3J0IHsgaG9va3MgfSBmcm9tIFwiLi4vaHRtbGJhcnMtcnVudGltZVwiO1xuaW1wb3J0IHJlbmRlciBmcm9tIFwiLi4vaHRtbGJhcnMtcnVudGltZS9yZW5kZXJcIjtcbmltcG9ydCB7IG1hbnVhbEVsZW1lbnQsIGF0dGFjaEF0dHJpYnV0ZXMgfSBmcm9tIFwiLi4vaHRtbGJhcnMtcnVudGltZS9yZW5kZXJcIjtcbmltcG9ydCB7IGNvbXBpbGUgfSBmcm9tIFwiLi4vaHRtbGJhcnMtY29tcGlsZXIvY29tcGlsZXJcIjtcbmltcG9ydCB7IGhvc3RCbG9jaywgd3JhcCB9IGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lL2hvb2tzXCI7XG5pbXBvcnQgeyBlcXVhbFRva2VucyB9IGZyb20gXCIuLi9odG1sYmFycy10ZXN0LWhlbHBlcnNcIjtcbmltcG9ydCB7IGNsZWFyTW9ycGgsIGJsb2NrRm9yIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXV0aWwvdGVtcGxhdGUtdXRpbHNcIjtcbmltcG9ydCBET01IZWxwZXIgZnJvbSBcIi4uL2RvbS1oZWxwZXJcIjtcblxubGV0IGVudjtcblxuUVVuaXQubW9kdWxlKFwiaHRtbGJhcnMtcnVudGltZVwiLCB7XG4gIHNldHVwKCkge1xuICAgIGVudiA9IHtcbiAgICAgIGRvbTogbmV3IERPTUhlbHBlcigpLFxuICAgICAgaG9va3M6IGhvb2tzLFxuICAgICAgaGVscGVyczoge30sXG4gICAgICBwYXJ0aWFsczoge30sXG4gICAgICB1c2VGcmFnbWVudENhY2hlOiB0cnVlXG4gICAgfTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGtleXMob2JqKSB7XG4gIHZhciBvd25LZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIG93bktleXMucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3duS2V5cztcbn1cblxudGVzdChcImhvb2tzIGFyZSBwcmVzZW50XCIsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvb2tOYW1lcyA9IFtcbiAgICBcImtleXdvcmRzXCIsXG4gICAgXCJsaW5rUmVuZGVyTm9kZVwiLFxuICAgIFwiY3JlYXRlU2NvcGVcIixcbiAgICBcImNsYXNzaWZ5XCIsXG4gICAgXCJjcmVhdGVGcmVzaFNjb3BlXCIsXG4gICAgXCJjcmVhdGVDaGlsZFNjb3BlXCIsXG4gICAgXCJiaW5kU2hhZG93U2NvcGVcIixcbiAgICBcImJpbmRTY29wZVwiLFxuICAgIFwiYmluZFNlbGZcIixcbiAgICBcImJpbmRMb2NhbFwiLFxuICAgIFwiYmluZEJsb2NrXCIsXG4gICAgXCJ1cGRhdGVTY29wZVwiLFxuICAgIFwidXBkYXRlU2VsZlwiLFxuICAgIFwidXBkYXRlTG9jYWxcIixcbiAgICBcImxvb2t1cEhlbHBlclwiLFxuICAgIFwiaGFzSGVscGVyXCIsXG4gICAgXCJpbnZva2VIZWxwZXJcIixcbiAgICBcInJhbmdlXCIsXG4gICAgXCJibG9ja1wiLFxuICAgIFwiaW5saW5lXCIsXG4gICAgXCJrZXl3b3JkXCIsXG4gICAgXCJwYXJ0aWFsXCIsXG4gICAgXCJjb21wb25lbnRcIixcbiAgICBcImVsZW1lbnRcIixcbiAgICBcImF0dHJpYnV0ZVwiLFxuICAgIFwic3ViZXhwclwiLFxuICAgIFwiY29uY2F0XCIsXG4gICAgXCJnZXRcIixcbiAgICBcImdldFJvb3RcIixcbiAgICBcImdldENoaWxkXCIsXG4gICAgXCJnZXRWYWx1ZVwiLFxuICAgIFwiY2xlYW51cFJlbmRlck5vZGVcIixcbiAgICBcImRlc3Ryb3lSZW5kZXJOb2RlXCIsXG4gICAgXCJ3aWxsQ2xlYW51cFRyZWVcIixcbiAgICBcImRpZENsZWFudXBUcmVlXCIsXG4gICAgXCJnZXRDZWxsT3JWYWx1ZVwiLFxuICAgIFwiZGlkUmVuZGVyTm9kZVwiLFxuICAgIFwid2lsbFJlbmRlck5vZGVcIlxuICBdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va05hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGhvb2sgPSBob29rc1tob29rTmFtZXNbaV1dO1xuICAgIG9rKGhvb2sgIT09IHVuZGVmaW5lZCwgXCJob29rIFwiICsgaG9va05hbWVzW2ldICsgXCIgaXMgcHJlc2VudFwiKTtcbiAgfVxuXG4gIGVxdWFsKGtleXMoaG9va3MpLmxlbmd0aCwgaG9va05hbWVzLmxlbmd0aCwgXCJIb29rcyBsZW5ndGggbWF0Y2hcIik7XG59KTtcblxudGVzdChcIm1hbnVhbEVsZW1lbnQgZnVuY3Rpb24gaG9ub3JzIG5hbWVzcGFjZXNcIiwgZnVuY3Rpb24oKSB7XG4gIGhvb2tzLmtleXdvcmRzWydtYW51YWwtZWxlbWVudCddID0ge1xuICAgICAgcmVuZGVyOiBmdW5jdGlvbihtb3JwaCwgZW52LCBzY29wZSwgcGFyYW1zLCBoYXNoLCB0ZW1wbGF0ZSwgaW52ZXJzZSwgdmlzaXRvcikge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICB2ZXJzaW9uOiAnMS4xJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBsYXlvdXQgPSBtYW51YWxFbGVtZW50KCdzdmcnLCBhdHRyaWJ1dGVzKTtcblxuICAgICAgICBob3N0QmxvY2sobW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCBpbnZlcnNlLCBudWxsLCB2aXNpdG9yLCBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgb3B0aW9ucy50ZW1wbGF0ZXMudGVtcGxhdGUueWllbGRJbih7IHJhdzogbGF5b3V0IH0sIGhhc2gpO1xuICAgICAgICB9KTtcblxuICAgICAgICBtYW51YWxFbGVtZW50KGVudiwgc2NvcGUsICdzcGFuJywgYXR0cmlidXRlcywgbW9ycGgpO1xuICAgICAgfSxcblxuICAgICAgaXNTdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIH07XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBjb21waWxlKCd7eyNtYW51YWwtZWxlbWVudH19PGxpbmVhckdyYWRpZW50PjxzdG9wIG9mZnNldD1cInt7c3RhcnRPZmZzZXR9fVwiPjwvc3RvcD48c3RvcCBvZmZzZXQ9XCJ7e3N0b3BPZmZzZXR9fVwiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50Pnt7L21hbnVhbC1lbGVtZW50fX0nKTtcbiAgICB2YXIgcmVzdWx0ID0gdGVtcGxhdGUucmVuZGVyKHtzdGFydE9mZnNldDowLjEsIHN0b3BPZmZzZXQ6MC42fSwgZW52KTtcbiAgICBvayhyZXN1bHQuZnJhZ21lbnQuY2hpbGROb2Rlc1sxXSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpO1xuICAgIG9rKHJlc3VsdC5mcmFnbWVudC5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMF0gaW5zdGFuY2VvZiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpO1xuICAgIGVxdWFsVG9rZW5zKHJlc3VsdC5mcmFnbWVudCwgJzxzdmcgdmVyc2lvbj1cIjEuMVwiPjxsaW5lYXJHcmFkaWVudD48c3RvcCBvZmZzZXQ9XCIwLjFcIj48L3N0b3A+PHN0b3Agb2Zmc2V0PVwiMC42XCI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PC9zdmc+Jyk7XG59KTtcblxudGVzdChcIm1hbnVhbEVsZW1lbnQgZnVuY3Rpb24gaG9ub3JzIHZvaWQgZWxlbWVudHNcIiwgZnVuY3Rpb24oKSB7XG4gIHZhciBhdHRyaWJ1dGVzID0ge1xuICAgIGNsYXNzOiAnZm9vLWJhcidcbiAgfTtcbiAgdmFyIGxheW91dCA9IG1hbnVhbEVsZW1lbnQoJ2lucHV0JywgYXR0cmlidXRlcyk7XG4gIHZhciBmcmFnbWVudCA9IGxheW91dC5idWlsZEZyYWdtZW50KG5ldyBET01IZWxwZXIoKSk7XG5cbiAgZXF1YWwoZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICdpbmNsdWRlcyBhIHNpbmdsZSBlbGVtZW50Jyk7XG4gIGVxdWFsKGZyYWdtZW50LmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGgsIDAsICdubyBjaGlsZCBub2RlcyB3ZXJlIGFkZGVkIHRvIGA8aW5wdXQ+YCBiZWNhdXNlIGl0IGlzIGEgdm9pZCB0YWcnKTtcbiAgZXF1YWxUb2tlbnMoZnJhZ21lbnQsICc8aW5wdXQgY2xhc3M9XCJmb28tYmFyXCI+Jyk7XG59KTtcblxudGVzdChcImF0dGFjaEF0dHJpYnV0ZXMgZnVuY3Rpb24gYXR0YWNoZXMgYXR0cmlidXRlcyB0byBhbiBleGlzdGluZyBlbGVtZW50XCIsIGZ1bmN0aW9uKCkge1xuICB2YXIgYXR0cmlidXRlcyA9IHtcbiAgICBjbGFzczogJ2Zvby1iYXInLFxuICAgIG90aGVyOiBbJ2dldCcsICdvdGhlciddXG4gIH07XG5cbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbGV0IHJhdyA9IGF0dGFjaEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7XG4gIHJhdy5lbGVtZW50ID0gZWxlbWVudDtcblxuICBsZXQgdGVtcGxhdGUgPSB3cmFwKHJhdyk7XG5cbiAgbGV0IHNlbGYgPSB7IG90aGVyOiBcImZpcnN0XCIgfTtcbiAgbGV0IHJlc3VsdCA9IHRlbXBsYXRlLnJlbmRlcihzZWxmLCBlbnYpO1xuXG4gIGVxdWFsKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpLCBcImZvby1iYXJcIiwgXCJ0aGUgYXR0cmlidXRlIHdhcyBhc3NpZ25lZFwiKTtcbiAgZXF1YWwoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ290aGVyJyksIFwiZmlyc3RcIiwgXCJ0aGUgYXR0cmlidXRlIHdhcyBhc3NpZ25lZFwiKTtcblxuICBzZWxmLm90aGVyID0gXCJzZWNvbmRcIjtcbiAgcmVzdWx0LnJlcmVuZGVyKCk7XG5cbiAgZXF1YWwoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksIFwiZm9vLWJhclwiLCBcInRoZSBhdHRyaWJ1dGUgd2FzIGFzc2lnbmVkXCIpO1xuICBlcXVhbChlbGVtZW50LmdldEF0dHJpYnV0ZSgnb3RoZXInKSwgXCJzZWNvbmRcIiwgXCJ0aGUgYXR0cmlidXRlIHdhcyBhc3NpZ25lZFwiKTtcbn0pO1xuXG50ZXN0KFwidGhlICdhdHRyaWJ1dGVzJyBzdGF0ZW1lbnQgYXR0YWNoZXMgYW4gYXR0cmlidXRlcyB0ZW1wbGF0ZSB0byBhIHBhcmVudFwiLCBmdW5jdGlvbigpIHtcbiAgZW52Lmhvb2tzLmF0dHJpYnV0ZXMgPSBmdW5jdGlvbihtb3JwaCwgZW52LCBzY29wZSwgdGVtcGxhdGUsIGZyYWdtZW50LCB2aXNpdG9yKSB7XG4gICAgbGV0IGJsb2NrID0gbW9ycGguc3RhdGUuYmxvY2s7XG5cbiAgICBpZiAoIWJsb2NrKSB7XG4gICAgICBsZXQgZWxlbWVudCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG4gICAgICB0ZW1wbGF0ZS5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGJsb2NrID0gbW9ycGguc3RhdGUuYmxvY2sgPSBibG9ja0ZvcihyZW5kZXIsIHRlbXBsYXRlLCB7IHNjb3BlOiBzY29wZSB9KTtcbiAgICB9XG5cbiAgICBibG9jayhlbnYsIFtdLCB1bmRlZmluZWQsIG1vcnBoLCB1bmRlZmluZWQsIHZpc2l0b3IpO1xuICB9O1xuXG4gIGxldCBjbGVhbmVkVXBOb2RlcyA9IFtdO1xuICBlbnYuaG9va3MuY2xlYW51cFJlbmRlck5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgY2xlYW5lZFVwTm9kZXMucHVzaChub2RlKTtcbiAgfTtcblxuICB2YXIgYXR0cmlidXRlcyA9IHtcbiAgICBjbGFzczogJ2Zvby1iYXInLFxuICAgIG90aGVyOiBbJ2dldCcsICdvdGhlciddXG4gIH07XG5cbiAgbGV0IHRlbXBsYXRlID0gY29tcGlsZShcIjxkaXY+aGVsbG88L2Rpdj5cIik7XG5cbiAgbGV0IHNlbGYgPSB7IG90aGVyOiBcImZpcnN0XCIgfTtcbiAgbGV0IHJlc3VsdCA9IHRlbXBsYXRlLnJlbmRlcihzZWxmLCBlbnYsIHsgYXR0cmlidXRlcyB9KTtcbiAgbGV0IGF0dHJpYnV0ZXNNb3JwaCA9IHJlc3VsdC5ub2Rlc1tyZXN1bHQubm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgZXF1YWxUb2tlbnMocmVzdWx0LmZyYWdtZW50LCBcIjxkaXYgY2xhc3M9J2Zvby1iYXInIG90aGVyPSdmaXJzdCc+aGVsbG88L2Rpdj5cIik7XG5cbiAgc2VsZi5vdGhlciA9IFwic2Vjb25kXCI7XG4gIHJlc3VsdC5yZXJlbmRlcigpO1xuXG4gIGVxdWFsVG9rZW5zKHJlc3VsdC5mcmFnbWVudCwgXCI8ZGl2IGNsYXNzPSdmb28tYmFyJyBvdGhlcj0nc2Vjb25kJz5oZWxsbzwvZGl2PlwiKTtcblxuICBsZXQgZXhwZWN0ZWQgPSBbcmVzdWx0LnJvb3QsIGF0dHJpYnV0ZXNNb3JwaCwgYXR0cmlidXRlc01vcnBoLmNoaWxkTm9kZXNbMF1dO1xuICBjbGVhck1vcnBoKHJlc3VsdC5yb290LCBlbnYsIHRydWUpO1xuXG4gIGRlZXBFcXVhbChjbGVhbmVkVXBOb2RlcywgZXhwZWN0ZWQpO1xufSk7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXJ1bnRpbWUtdGVzdHMvbWFpbi10ZXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsTUFBSSxHQUFHLFlBQUEsQ0FBQzs7QUFFUixPQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFO0FBQy9CLFNBQUssRUFBQSxZQUFHO0FBQ04sU0FBRyxHQUFHO0FBQ0osV0FBRyxFQUFFLHdCQUFlO0FBQ3BCLGFBQUssbUJBZkYsS0FBSyxBQWVJO0FBQ1osZUFBTyxFQUFFLEVBQUU7QUFDWCxnQkFBUSxFQUFFLEVBQUU7QUFDWix3QkFBZ0IsRUFBRSxJQUFJO09BQ3ZCLENBQUM7S0FDSDtHQUNGLENBQUMsQ0FBQzs7QUFFSCxNQUFJLENBQUMsMENBQTBDLEVBQUUsWUFBVztBQUMxRCxxQkF4Qk8sS0FBSyxDQXdCTixRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRztBQUMvQixZQUFNLEVBQUUsVUFBUyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQzVFLFlBQUksVUFBVSxHQUFHO0FBQ2YsaUJBQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQzs7QUFFRixZQUFJLE1BQU0sR0FBRyx1QkE1QlosYUFBYSxDQTRCYSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7O0FBRTlDLDhCQTVCQyxTQUFTLENBNEJBLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFTLE9BQU8sRUFBRTtBQUMvRSxpQkFBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNELENBQUMsQ0FBQzs7QUFFSCwrQkFsQ0MsYUFBYSxDQWtDQSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFB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QUFVLEVBQVYsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN4RCxRQUFJLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUU1RCx5QkE5R08sV0FBVyxDQThHTixNQUFNLENBQUMsUUFBUSxFQUFFLGdEQUFnRCxDQUFDLENBQUM7O0FBRS9FLFFBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0FBQ3RCLFVBQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQzs7QUFFbEIseUJBbkhPLFdBQVcsQ0FtSE4sTUFBTSxDQUFDLFFBQVEsRUFBRSxpREFBaUQsQ0FBQyxDQUFDOztBQUVoRixRQUFJLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RSwrQkFySE8sVUFBVSxDQXFITixNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFbkMsYUFBUyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztHQUNyQyxDQUFDLENBQUMiLCJmaWxlIjoiaHRtbGJhcnMtcnVudGltZS10ZXN0cy9tYWluLXRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKmdsb2JhbHMgU1ZHRWxlbWVudCwgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICovXG5pbXBvcnQgeyBob29rcyB9IGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lXCI7XG5pbXBvcnQgcmVuZGVyIGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lL3JlbmRlclwiO1xuaW1wb3J0IHsgbWFudWFsRWxlbWVudCwgYXR0YWNoQXR0cmlidXRlcyB9IGZyb20gXCIuLi9odG1sYmFycy1ydW50aW1lL3JlbmRlclwiO1xuaW1wb3J0IHsgY29tcGlsZSB9IGZyb20gXCIuLi9odG1sYmFycy1jb21waWxlci9jb21waWxlclwiO1xuaW1wb3J0IHsgaG9zdEJsb2NrLCB3cmFwIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXJ1bnRpbWUvaG9va3NcIjtcbmltcG9ydCB7IGVxdWFsVG9rZW5zIH0gZnJvbSBcIi4uL2h0bWxiYXJzLXRlc3QtaGVscGVyc1wiO1xuaW1wb3J0IHsgY2xlYXJNb3JwaCwgYmxvY2tGb3IgfSBmcm9tIFwiLi4vaHRtbGJhcnMtdXRpbC90ZW1wbGF0ZS11dGlsc1wiO1xuaW1wb3J0IERPTUhlbHBlciBmcm9tIFwiLi4vZG9tLWhlbHBlclwiO1xuXG5sZXQgZW52O1xuXG5RVW5pdC5tb2R1bGUoXCJodG1sYmFycy1ydW50aW1lXCIsIHtcbiAgc2V0dXAoKSB7XG4gICAgZW52ID0ge1xuICAgICAgZG9tOiBuZXcgRE9NSGVscGVyKCksXG4gICAgICBob29rczogaG9va3MsXG4gICAgICBoZWxwZXJzOiB7fSxcbiAgICAgIHBhcnRpYWxzOiB7fSxcbiAgICAgIHVzZUZyYWdtZW50Q2FjaGU6IHRydWVcbiAgICB9O1xuICB9XG59KTtcblxudGVzdChcIm1hbnVhbEVsZW1lbnQgZnVuY3Rpb24gaG9ub3JzIG5hbWVzcGFjZXNcIiwgZnVuY3Rpb24oKSB7XG4gIGhvb2tzLmtleXdvcmRzWydtYW51YWwtZWxlbWVudCddID0ge1xuICAgICAgcmVuZGVyOiBmdW5jdGlvbihtb3JwaCwgZW52LCBzY29wZSwgcGFyYW1zLCBoYXNoLCB0ZW1wbGF0ZSwgaW52ZXJzZSwgdmlzaXRvcikge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICB2ZXJzaW9uOiAnMS4xJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBsYXlvdXQgPSBtYW51YWxFbGVtZW50KCdzdmcnLCBhdHRyaWJ1dGVzKTtcblxuICAgICAgICBob3N0QmxvY2sobW9ycGgsIGVudiwgc2NvcGUsIHRlbXBsYXRlLCBpbnZlcnNlLCBudWxsLCB2aXNpdG9yLCBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgb3B0aW9ucy50ZW1wbGF0ZXMudGVtcGxhdGUueWllbGRJbih7IHJhdzogbGF5b3V0IH0sIGhhc2gpO1xuICAgICAgICB9KTtcblxuICAgICAgICBtYW51YWxFbGVtZW50KGVudiwgc2NvcGUsICdzcGFuJywgYXR0cmlidXRlcywgbW9ycGgpO1xuICAgICAgfSxcblxuICAgICAgaXNTdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIH07XG5cbiAgICB2YXIgdGVtcGxhdGUgPSBjb21waWxlKCd7eyNtYW51YWwtZWxlbWVudH19PGxpbmVhckdyYWRpZW50PjxzdG9wIG9mZnNldD1cInt7c3RhcnRPZmZzZXR9fVwiPjwvc3RvcD48c3RvcCBvZmZzZXQ9XCJ7e3N0b3BPZmZzZXR9fVwiPjwvc3RvcD48L2xpbmVhckdyYWRpZW50Pnt7L21hbnVhbC1lbGVtZW50fX0nKTtcbiAgICB2YXIgcmVzdWx0ID0gdGVtcGxhdGUucmVuZGVyKHtzdGFydE9mZnNldDowLjEsIHN0b3BPZmZzZXQ6MC42fSwgZW52KTtcbiAgICBvayhyZXN1bHQuZnJhZ21lbnQuY2hpbGROb2Rlc1sxXSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpO1xuICAgIG9rKHJlc3VsdC5mcmFnbWVudC5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMF0gaW5zdGFuY2VvZiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQpO1xuICAgIGVxdWFsVG9rZW5zKHJlc3VsdC5mcmFnbWVudCwgJzxzdmcgdmVyc2lvbj1cIjEuMVwiPjxsaW5lYXJHcmFkaWVudD48c3RvcCBvZmZzZXQ9XCIwLjFcIj48L3N0b3A+PHN0b3Agb2Zmc2V0PVwiMC42XCI+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PC9zdmc+Jyk7XG59KTtcblxudGVzdChcIm1hbnVhbEVsZW1lbnQgZnVuY3Rpb24gaG9ub3JzIHZvaWQgZWxlbWVudHNcIiwgZnVuY3Rpb24oKSB7XG4gIHZhciBhdHRyaWJ1dGVzID0ge1xuICAgIGNsYXNzOiAnZm9vLWJhcidcbiAgfTtcbiAgdmFyIGxheW91dCA9IG1hbnVhbEVsZW1lbnQoJ2lucHV0JywgYXR0cmlidXRlcyk7XG4gIHZhciBmcmFnbWVudCA9IGxheW91dC5idWlsZEZyYWdtZW50KG5ldyBET01IZWxwZXIoKSk7XG5cbiAgZXF1YWwoZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICdpbmNsdWRlcyBhIHNpbmdsZSBlbGVtZW50Jyk7XG4gIGVxdWFsKGZyYWdtZW50LmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGgsIDAsICdubyBjaGlsZCBub2RlcyB3ZXJlIGFkZGVkIHRvIGA8aW5wdXQ+YCBiZWNhdXNlIGl0IGlzIGEgdm9pZCB0YWcnKTtcbiAgZXF1YWxUb2tlbnMoZnJhZ21lbnQsICc8aW5wdXQgY2xhc3M9XCJmb28tYmFyXCI+Jyk7XG59KTtcblxudGVzdChcImF0dGFjaEF0dHJpYnV0ZXMgZnVuY3Rpb24gYXR0YWNoZXMgYXR0cmlidXRlcyB0byBhbiBleGlzdGluZyBlbGVtZW50XCIsIGZ1bmN0aW9uKCkge1xuICB2YXIgYXR0cmlidXRlcyA9IHtcbiAgICBjbGFzczogJ2Zvby1iYXInLFxuICAgIG90aGVyOiBbJ2dldCcsICdvdGhlciddXG4gIH07XG5cbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbGV0IHJhdyA9IGF0dGFjaEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7XG4gIHJhdy5lbGVtZW50ID0gZWxlbWVudDtcblxuICBsZXQgdGVtcGxhdGUgPSB3cmFwKHJhdyk7XG5cbiAgbGV0IHNlbGYgPSB7IG90aGVyOiBcImZpcnN0XCIgfTtcbiAgbGV0IHJlc3VsdCA9IHRlbXBsYXRlLnJlbmRlcihzZWxmLCBlbnYpO1xuXG4gIGVxdWFsKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpLCBcImZvby1iYXJcIiwgXCJ0aGUgYXR0cmlidXRlIHdhcyBhc3NpZ25lZFwiKTtcbiAgZXF1YWwoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ290aGVyJyksIFwiZmlyc3RcIiwgXCJ0aGUgYXR0cmlidXRlIHdhcyBhc3NpZ25lZFwiKTtcblxuICBzZWxmLm90aGVyID0gXCJzZWNvbmRcIjtcbiAgcmVzdWx0LnJlcmVuZGVyKCk7XG5cbiAgZXF1YWwoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksIFwiZm9vLWJhclwiLCBcInRoZSBhdHRyaWJ1dGUgd2FzIGFzc2lnbmVkXCIpO1xuICBlcXVhbChlbGVtZW50LmdldEF0dHJpYnV0ZSgnb3RoZXInKSwgXCJzZWNvbmRcIiwgXCJ0aGUgYXR0cmlidXRlIHdhcyBhc3NpZ25lZFwiKTtcbn0pO1xuXG50ZXN0KFwidGhlICdhdHRyaWJ1dGVzJyBzdGF0ZW1lbnQgYXR0YWNoZXMgYW4gYXR0cmlidXRlcyB0ZW1wbGF0ZSB0byBhIHBhcmVudFwiLCBmdW5jdGlvbigpIHtcbiAgZW52Lmhvb2tzLmF0dHJpYnV0ZXMgPSBmdW5jdGlvbihtb3JwaCwgZW52LCBzY29wZSwgdGVtcGxhdGUsIGZyYWdtZW50LCB2aXNpdG9yKSB7XG4gICAgbGV0IGJsb2NrID0gbW9ycGguc3RhdGUuYmxvY2s7XG5cbiAgICBpZiAoIWJsb2NrKSB7XG4gICAgICBsZXQgZWxlbWVudCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7XG4gICAgICB0ZW1wbGF0ZS5lbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGJsb2NrID0gbW9ycGguc3RhdGUuYmxvY2sgPSBibG9ja0ZvcihyZW5kZXIsIHRlbXBsYXRlLCB7IHNjb3BlOiBzY29wZSB9KTtcbiAgICB9XG5cbiAgICBibG9jayhlbnYsIFtdLCB1bmRlZmluZWQsIG1vcnBoLCB1bmRlZmluZWQsIHZpc2l0b3IpO1xuICB9O1xuXG4gIGxldCBjbGVhbmVkVXBOb2RlcyA9IFtdO1xuICBlbnYuaG9va3MuY2xlYW51cFJlbmRlck5vZGUgPSBmdW5jdGlvbihub2RlKSB7XG4gICAgY2xlYW5lZFVwTm9kZXMucHVzaChub2RlKTtcbiAgfTtcblxuICB2YXIgYXR0cmlidXRlcyA9IHtcbiAgICBjbGFzczogJ2Zvby1iYXInLFxuICAgIG90aGVyOiBbJ2dldCcsICdvdGhlciddXG4gIH07XG5cbiAgbGV0IHRlbXBsYXRlID0gY29tcGlsZShcIjxkaXY+aGVsbG88L2Rpdj5cIik7XG5cbiAgbGV0IHNlbGYgPSB7IG90aGVyOiBcImZpcnN0XCIgfTtcbiAgbGV0IHJlc3VsdCA9IHRlbXBsYXRlLnJlbmRlcihzZWxmLCBlbnYsIHsgYXR0cmlidXRlcyB9KTtcbiAgbGV0IGF0dHJpYnV0ZXNNb3JwaCA9IHJlc3VsdC5ub2Rlc1tyZXN1bHQubm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgZXF1YWxUb2tlbnMocmVzdWx0LmZyYWdtZW50LCBcIjxkaXYgY2xhc3M9J2Zvby1iYXInIG90aGVyPSdmaXJzdCc+aGVsbG88L2Rpdj5cIik7XG5cbiAgc2VsZi5vdGhlciA9IFwic2Vjb25kXCI7XG4gIHJlc3VsdC5yZXJlbmRlcigpO1xuXG4gIGVxdWFsVG9rZW5zKHJlc3VsdC5mcmFnbWVudCwgXCI8ZGl2IGNsYXNzPSdmb28tYmFyJyBvdGhlcj0nc2Vjb25kJz5oZWxsbzwvZGl2PlwiKTtcblxuICBsZXQgZXhwZWN0ZWQgPSBbcmVzdWx0LnJvb3QsIGF0dHJpYnV0ZXNNb3JwaCwgYXR0cmlidXRlc01vcnBoLmNoaWxkTm9kZXNbMF1dO1xuICBjbGVhck1vcnBoKHJlc3VsdC5yb290LCBlbnYsIHRydWUpO1xuXG4gIGRlZXBFcXVhbChjbGVhbmVkVXBOb2RlcywgZXhwZWN0ZWQpO1xufSk7XG4iXX0=
define('htmlbars-runtime-tests/main-test.jshint', ['exports'], function (exports) {

@@ -341,0 +342,0 @@ module('JSHint - htmlbars-runtime-tests');

@@ -108,2 +108,9 @@ define('htmlbars-tests/htmlbars-compiler.jshint', ['exports'], function (exports) {

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbW9ycGguanNoaW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQztBQUNuRCxNQUFJLENBQUMsNkRBQTZELEVBQUUsWUFBVztBQUM3RSxNQUFFLENBQUMsSUFBSSxFQUFFLDhEQUE4RCxDQUFDLENBQUM7R0FDMUUsQ0FBQyxDQUFDIiwiZmlsZSI6Imh0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbW9ycGguanNoaW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlKCdKU0hpbnQgLSBodG1sYmFycy10ZXN0cy9odG1sYmFycy1ydW50aW1lJyk7XG50ZXN0KCdodG1sYmFycy10ZXN0cy9odG1sYmFycy1ydW50aW1lL21vcnBoLmpzIHNob3VsZCBwYXNzIGpzaGludCcsIGZ1bmN0aW9uKCkgeyBcbiAgb2sodHJ1ZSwgJ2h0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbW9ycGguanMgc2hvdWxkIHBhc3MganNoaW50LicpOyBcbn0pO1xuIl19
define('htmlbars-tests/htmlbars-runtime/node-visitor.jshint', ['exports'], function (exports) {
module('JSHint - htmlbars-tests/htmlbars-runtime');
test('htmlbars-tests/htmlbars-runtime/node-visitor.js should pass jshint', function () {
ok(true, 'htmlbars-tests/htmlbars-runtime/node-visitor.js should pass jshint.');
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbm9kZS12aXNpdG9yLmpzaGludC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUFDbkQsTUFBSSxDQUFDLG9FQUFvRSxFQUFFLFlBQVc7QUFDcEYsTUFBRSxDQUFDLElBQUksRUFBRSxxRUFBcUUsQ0FBQyxDQUFDO0dBQ2pGLENBQUMsQ0FBQyIsImZpbGUiOiJodG1sYmFycy10ZXN0cy9odG1sYmFycy1ydW50aW1lL25vZGUtdmlzaXRvci5qc2hpbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUoJ0pTSGludCAtIGh0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUnKTtcbnRlc3QoJ2h0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbm9kZS12aXNpdG9yLmpzIHNob3VsZCBwYXNzIGpzaGludCcsIGZ1bmN0aW9uKCkgeyBcbiAgb2sodHJ1ZSwgJ2h0bWxiYXJzLXRlc3RzL2h0bWxiYXJzLXJ1bnRpbWUvbm9kZS12aXNpdG9yLmpzIHNob3VsZCBwYXNzIGpzaGludC4nKTsgXG59KTtcbiJdfQ==
define('htmlbars-tests/htmlbars-runtime/render.jshint', ['exports'], function (exports) {

@@ -110,0 +117,0 @@ module('JSHint - htmlbars-tests/htmlbars-runtime');

var packagesConfig = {
"version": "0.14.2",
"revision": "b6a7b310bc3c8577b074a24645aab585176c9ec2",
"version": "0.14.3",
"revision": "a5bb78d179d8126f5c622d00e98ca1e00c0322dc",
"vendored": {},

@@ -5,0 +5,0 @@ "dependencies": {

{
"name": "htmlbars",
"version": "0.14.2",
"version": "0.14.3",
"description": "HTMLBars compiles Handlebars templates into document fragments rather than string buffers",

@@ -40,3 +40,3 @@ "main": "dist/cjs/htmlbars.js",

"chalk": "~0.4.0",
"ember-cli": "^0.2.7",
"ember-cli": "^1.13.0",
"ember-cli-release": "^0.2.2",

@@ -43,0 +43,0 @@ "ember-cli-sauce": "^1.3.0",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc