Socket
Socket
Sign inDemoInstall

@glimmer/compiler

Package Overview
Dependencies
Maintainers
10
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/compiler - npm Package Compare versions

Comparing version 0.23.0-alpha.14 to 0.23.0-alpha.15

27

dist/amd/es5/glimmer-compiler.js

@@ -436,8 +436,4 @@ define('@glimmer/compiler', ['exports', '@glimmer/syntax', '@glimmer/util', '@glimmer/wire-format'], function (exports, _glimmer_syntax, _glimmer_util, _glimmer_wireFormat) { 'use strict';

_this2.named = new _glimmer_util.DictSet();
_this2.prelude = [];
_this2.head = [];
_this2.blocks = [];
_this2.hasEval = false;
_this2.sawElement = false;
_this2.inParams = false;
return _this2;

@@ -447,20 +443,3 @@ }

TemplateBlock.prototype.push = function push(statement) {
if (!this.sawElement) {
if (_glimmer_wireFormat.Statements.isOpenElement(statement)) {
this.sawElement = true;
this.inParams = true;
}
this.prelude.push(statement);
} else if (this.inParams) {
if (_glimmer_wireFormat.Statements.isFlushElement(statement)) {
this.inParams = false;
this.head.push(statement);
} else if (_glimmer_wireFormat.Statements.isInElementHead(statement)) {
this.head.push(statement);
} else {
throw new Error('Compile Error: only parameters allowed before flush-element');
}
} else {
this.statements.push(statement);
}
this.statements.push(statement);
};

@@ -471,5 +450,3 @@

symbols: this.symbolTable.symbols,
prelude: this.sawElement ? this.prelude : null,
head: this.sawElement ? this.head : null,
statements: this.sawElement ? this.statements : this.prelude,
statements: this.statements,
hasEval: this.hasEval

@@ -476,0 +453,0 @@ };

@@ -41,28 +41,7 @@ "use strict";

this.named = new _util.DictSet();
this.prelude = [];
this.head = [];
this.blocks = [];
this.hasEval = false;
this.sawElement = false;
this.inParams = false;
}
push(statement) {
if (!this.sawElement) {
if (_wireFormat.Statements.isOpenElement(statement)) {
this.sawElement = true;
this.inParams = true;
}
this.prelude.push(statement);
} else if (this.inParams) {
if (_wireFormat.Statements.isFlushElement(statement)) {
this.inParams = false;
this.head.push(statement);
} else if (_wireFormat.Statements.isInElementHead(statement)) {
this.head.push(statement);
} else {
throw new Error('Compile Error: only parameters allowed before flush-element');
}
} else {
this.statements.push(statement);
}
this.statements.push(statement);
}

@@ -72,5 +51,3 @@ toJSON() {

symbols: this.symbolTable.symbols,
prelude: this.sawElement ? this.prelude : null,
head: this.sawElement ? this.head : null,
statements: this.sawElement ? this.statements : this.prelude,
statements: this.statements,
hasEval: this.hasEval

@@ -320,2 +297,2 @@ };

exports.default = JavaScriptCompiler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbIkJsb2NrIiwiY29uc3RydWN0b3IiLCJzdGF0ZW1lbnRzIiwicHVzaCIsInN0YXRlbWVudCIsIklubGluZUJsb2NrIiwidGFibGUiLCJ0b0pTT04iLCJwYXJhbWV0ZXJzIiwic2xvdHMiLCJUZW1wbGF0ZUJsb2NrIiwic3ltYm9sVGFibGUiLCJ0eXBlIiwieWllbGRzIiwibmFtZWQiLCJwcmVsdWRlIiwiaGVhZCIsImJsb2NrcyIsImhhc0V2YWwiLCJzYXdFbGVtZW50IiwiaW5QYXJhbXMiLCJpc09wZW5FbGVtZW50IiwiaXNGbHVzaEVsZW1lbnQiLCJpc0luRWxlbWVudEhlYWQiLCJFcnJvciIsInN5bWJvbHMiLCJDb21wb25lbnRCbG9jayIsImF0dHJpYnV0ZXMiLCJhcmd1bWVudHMiLCJwb3NpdGlvbmFscyIsImlzQXJndW1lbnQiLCJpc0F0dHJpYnV0ZSIsImlzTW9kaWZpZXIiLCJhcmdzIiwia2V5cyIsIm1hcCIsImFyZyIsInZhbHVlcyIsIlRlbXBsYXRlIiwibWV0YSIsImJsb2NrIiwiSmF2YVNjcmlwdENvbXBpbGVyIiwib3Bjb2RlcyIsInRlbXBsYXRlIiwicHJvY2VzcyIsImNvbXBpbGVyIiwiY3VycmVudEJsb2NrIiwiY3VycmVudCIsImZvckVhY2giLCJvcGNvZGUiLCJzdGFydEJsb2NrIiwicHJvZ3JhbSIsImVuZEJsb2NrIiwicG9wIiwic3RhcnRQcm9ncmFtIiwiZW5kUHJvZ3JhbSIsInRleHQiLCJjb250ZW50IiwiVGV4dCIsImFwcGVuZCIsInRydXN0ZWQiLCJBcHBlbmQiLCJwb3BWYWx1ZSIsImNvbW1lbnQiLCJ2YWx1ZSIsIkNvbW1lbnQiLCJtb2RpZmllciIsIm5hbWUiLCJwYXJhbXMiLCJoYXNoIiwiTW9kaWZpZXIiLCJpbnZlcnNlIiwib3BlbkVsZW1lbnQiLCJlbGVtZW50IiwidGFnIiwiaW5kZXhPZiIsInN0YXJ0Q29tcG9uZW50IiwiYmxvY2tQYXJhbXMiLCJsZW5ndGgiLCJPcGVuRWxlbWVudCIsImZsdXNoRWxlbWVudCIsIkZsdXNoRWxlbWVudCIsImNsb3NlRWxlbWVudCIsImF0dHJzIiwiZW5kQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiQ2xvc2VFbGVtZW50Iiwic3RhdGljQXR0ciIsIm5hbWVzcGFjZSIsIlN0YXRpY0F0dHIiLCJkeW5hbWljQXR0ciIsIkR5bmFtaWNBdHRyIiwidHJ1c3RpbmdBdHRyIiwiVHJ1c3RpbmdBdHRyIiwic3RhdGljQXJnIiwiU3RhdGljQXJnIiwiZHluYW1pY0FyZyIsIkR5bmFtaWNBcmciLCJ5aWVsZCIsInRvIiwiWWllbGQiLCJkZWJ1Z2dlciIsImV2YWxJbmZvIiwiRGVidWdnZXIiLCJoYXNCbG9jayIsInB1c2hWYWx1ZSIsIkhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJIYXNCbG9ja1BhcmFtcyIsInBhcnRpYWwiLCJQYXJ0aWFsIiwibGl0ZXJhbCIsInVuZGVmaW5lZCIsIlVuZGVmaW5lZCIsInVua25vd24iLCJVbmtub3duIiwiZ2V0IiwicGF0aCIsIkdldCIsIm1heWJlTG9jYWwiLCJNYXliZUxvY2FsIiwiY29uY2F0IiwiQ29uY2F0IiwiaGVscGVyIiwiSGVscGVyIiwiY29tcG9uZW50IiwicHJlcGFyZUFycmF5Iiwic2l6ZSIsImkiLCJwcmVwYXJlT2JqZWN0IiwiQXJyYXkiLCJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDTyxNQUFNQSxLQUFOLENBQVk7QUFDZkMsa0JBQWM7QUFDVixhQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBQ0g7QUFDREMsU0FBS0MsU0FBTCxFQUFnQjtBQUNaLGFBQUtGLFVBQUwsQ0FBZ0JDLElBQWhCLENBQXFCQyxTQUFyQjtBQUNIO0FBTmM7UUFBTkosSyxHQUFBQSxLO0FBUU4sTUFBTUssV0FBTixTQUEwQkwsS0FBMUIsQ0FBZ0M7QUFDbkNDLGdCQUFZSyxLQUFaLEVBQW1CO0FBQ2Y7QUFDQSxhQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDSDtBQUNE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aEIsMEJBQU8sS0FBSzFGLE1BQUwsQ0FBWXlDLE1BQVosSUFBc0JpRCxJQUE3QixFQUFvQyxZQUFXQSxJQUFLLCtCQUE4QixLQUFLMUYsTUFBTCxDQUFZeUMsTUFBTyxFQUFyRztBQUNBLFlBQUk1QyxPQUFPLElBQUlnRyxLQUFKLENBQVVILElBQVYsQ0FBWDtBQUNBLFlBQUkxRixTQUFTLElBQUk2RixLQUFKLENBQVVILElBQVYsQ0FBYjtBQUNBLGFBQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRCxJQUFwQixFQUEwQkMsR0FBMUIsRUFBK0I7QUFDM0I5RixpQkFBSzhGLENBQUwsSUFBVSxLQUFLbEUsUUFBTCxFQUFWO0FBQ0F6QixtQkFBTzJGLENBQVAsSUFBWSxLQUFLbEUsUUFBTCxFQUFaO0FBQ0g7QUFDRCxhQUFLMkMsU0FBTCxDQUFlLENBQUN2RSxJQUFELEVBQU9HLE1BQVAsQ0FBZjtBQUNIO0FBQ0Q7QUFDQWxDLFNBQUs4QixJQUFMLEVBQVc7QUFDUCxlQUFPQSxLQUFLQSxLQUFLNkMsTUFBTCxHQUFjLENBQW5CLE1BQTBCLElBQWpDLEVBQXVDO0FBQ25DN0MsaUJBQUtvQixHQUFMO0FBQ0g7QUFDRCxhQUFLUCxZQUFMLENBQWtCM0MsSUFBbEIsQ0FBdUI4QixJQUF2QjtBQUNIO0FBQ0R3RSxjQUFVMEIsR0FBVixFQUFlO0FBQ1gsYUFBSzlGLE1BQUwsQ0FBWWxDLElBQVosQ0FBaUJnSSxHQUFqQjtBQUNIO0FBQ0RyRSxlQUFXO0FBQ1AsMEJBQU8sS0FBS3pCLE1BQUwsQ0FBWXlDLE1BQW5CLEVBQTJCLDhCQUEzQjtBQUNBLGVBQU8sS0FBS3pDLE1BQUwsQ0FBWWdCLEdBQVosRUFBUDtBQUNIO0FBMUxtQztrQkFBbkJaLGtCIiwiZmlsZSI6ImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IFN0YWNrLCBEaWN0U2V0LCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhdGVtZW50cywgT3BzIH0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuZXhwb3J0IGNsYXNzIEJsb2NrIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzID0gW107XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3ltYm9sVGFibGUgPSBzeW1ib2xUYWJsZTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ0ZW1wbGF0ZVwiO1xuICAgICAgICB0aGlzLnlpZWxkcyA9IG5ldyBEaWN0U2V0KCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgRGljdFNldCgpO1xuICAgICAgICB0aGlzLnByZWx1ZGUgPSBbXTtcbiAgICAgICAgdGhpcy5oZWFkID0gW107XG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNhd0VsZW1lbnQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgIH1cbiAgICBwdXNoKHN0YXRlbWVudCkge1xuICAgICAgICBpZiAoIXRoaXMuc2F3RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKFN0YXRlbWVudHMuaXNPcGVuRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXdFbGVtZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmluUGFyYW1zID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJlbHVkZS5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pblBhcmFtcykge1xuICAgICAgICAgICAgaWYgKFN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5QYXJhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWQucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzSW5FbGVtZW50SGVhZChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWFkLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBvbmx5IHBhcmFtZXRlcnMgYWxsb3dlZCBiZWZvcmUgZmx1c2gtZWxlbWVudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzeW1ib2xzOiB0aGlzLnN5bWJvbFRhYmxlLnN5bWJvbHMsXG4gICAgICAgICAgICBwcmVsdWRlOiB0aGlzLnNhd0VsZW1lbnQgPyB0aGlzLnByZWx1ZGUgOiBudWxsLFxuICAgICAgICAgICAgaGVhZDogdGhpcy5zYXdFbGVtZW50ID8gdGhpcy5oZWFkIDogbnVsbCxcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IHRoaXMuc2F3RWxlbWVudCA/IHRoaXMuc3RhdGVtZW50cyA6IHRoaXMucHJlbHVkZSxcbiAgICAgICAgICAgIGhhc0V2YWw6IHRoaXMuaGFzRXZhbFxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWJsZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnRhYmxlID0gdGFibGU7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB0aGlzLmFyZ3VtZW50cyA9IFtdO1xuICAgICAgICB0aGlzLmluUGFyYW1zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbmFscyA9IFtdO1xuICAgIH1cbiAgICBwdXNoKHN0YXRlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5pblBhcmFtcykge1xuICAgICAgICAgICAgaWYgKFN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5QYXJhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0FyZ3VtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyZ3VtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBdHRyaWJ1dGUoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlcy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNNb2RpZmllcihzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBFbGVtZW50IG1vZGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gY29tcG9uZW50cycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IG9ubHkgcGFyYW1ldGVycyBhbGxvd2VkIGJlZm9yZSBmbHVzaC1lbGVtZW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3VtZW50cztcbiAgICAgICAgbGV0IGtleXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzFdKTtcbiAgICAgICAgbGV0IHZhbHVlcyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMl0pO1xuICAgICAgICByZXR1cm4gW3RoaXMuYXR0cmlidXRlcywgW2tleXMsIHZhbHVlc10sIHtcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICAgICAgfV07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIHtcbiAgICBjb25zdHJ1Y3RvcihzeW1ib2xzLCBtZXRhKSB7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jayhzeW1ib2xzKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmxvY2s6IHRoaXMuYmxvY2sudG9KU09OKCksXG4gICAgICAgICAgICBtZXRhOiB0aGlzLm1ldGFcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKYXZhU2NyaXB0Q29tcGlsZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wY29kZXMsIHN5bWJvbHMsIG1ldGEpIHtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5vcGNvZGVzID0gb3Bjb2RlcztcbiAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShzeW1ib2xzLCBtZXRhKTtcbiAgICB9XG4gICAgc3RhdGljIHByb2Nlc3Mob3Bjb2Rlcywgc3ltYm9scywgbWV0YSkge1xuICAgICAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyKG9wY29kZXMsIHN5bWJvbHMsIG1ldGEpO1xuICAgICAgICByZXR1cm4gY29tcGlsZXIucHJvY2VzcygpO1xuICAgIH1cbiAgICBnZXQgY3VycmVudEJsb2NrKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tzLmN1cnJlbnQsICdFeHBlY3RlZCBhIGJsb2NrIG9uIHRoZSBzdGFjaycpO1xuICAgIH1cbiAgICBwcm9jZXNzKCkge1xuICAgICAgICB0aGlzLm9wY29kZXMuZm9yRWFjaCgoW29wY29kZSwgLi4uYXJnc10pID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpc1tvcGNvZGVdKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmltcGxlbWVudGVkICR7b3Bjb2RlfSBvbiBKYXZhU2NyaXB0Q29tcGlsZXJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXNbb3Bjb2RlXSguLi5hcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRlbXBsYXRlO1xuICAgIH1cbiAgICAvLy8gTmVzdGluZ1xuICAgIHN0YXJ0QmxvY2soW3Byb2dyYW1dKSB7XG4gICAgICAgIGxldCBibG9jayA9IG5ldyBJbmxpbmVCbG9jayhwcm9ncmFtWydzeW1ib2xzJ10pO1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgICB9XG4gICAgZW5kQmxvY2soKSB7XG4gICAgICAgIGxldCB7IHRlbXBsYXRlLCBibG9ja3MgfSA9IHRoaXM7XG4gICAgICAgIGxldCBibG9jayA9IGJsb2Nrcy5wb3AoKTtcbiAgICAgICAgdGVtcGxhdGUuYmxvY2suYmxvY2tzLnB1c2goYmxvY2sudG9KU09OKCkpO1xuICAgIH1cbiAgICBzdGFydFByb2dyYW0oKSB7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gICAgfVxuICAgIGVuZFByb2dyYW0oKSB7fVxuICAgIC8vLyBTdGF0ZW1lbnRzXG4gICAgdGV4dChjb250ZW50KSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlRleHQsIGNvbnRlbnRdKTtcbiAgICB9XG4gICAgYXBwZW5kKHRydXN0ZWQpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuQXBwZW5kLCB0aGlzLnBvcFZhbHVlKCksIHRydXN0ZWRdKTtcbiAgICB9XG4gICAgY29tbWVudCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5Db21tZW50LCB2YWx1ZV0pO1xuICAgIH1cbiAgICBtb2RpZmllcihuYW1lKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5Nb2RpZmllciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gICAgfVxuICAgIGJsb2NrKG5hbWUsIHRlbXBsYXRlLCBpbnZlcnNlKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgYmxvY2tzID0gdGhpcy50ZW1wbGF0ZS5ibG9jay5ibG9ja3M7XG4gICAgICAgIGFzc2VydCh0eXBlb2YgdGVtcGxhdGUgIT09ICdudW1iZXInIHx8IGJsb2Nrc1t0ZW1wbGF0ZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuICAgICAgICBhc3NlcnQodHlwZW9mIGludmVyc2UgIT09ICdudW1iZXInIHx8IGJsb2Nrc1tpbnZlcnNlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkJsb2NrLCBuYW1lLCBwYXJhbXMsIGhhc2gsIGJsb2Nrc1t0ZW1wbGF0ZV0sIGJsb2Nrc1tpbnZlcnNlXV0pO1xuICAgIH1cbiAgICBvcGVuRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcbiAgICAgICAgaWYgKHRhZy5pbmRleE9mKCctJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHVzaChbT3BzLk9wZW5FbGVtZW50LCB0YWddKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkZsdXNoRWxlbWVudF0pO1xuICAgIH1cbiAgICBjbG9zZUVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG4gICAgICAgIGlmICh0YWcuaW5kZXhPZignLScpICE9PSAtMSkge1xuICAgICAgICAgICAgbGV0IFthdHRycywgYXJncywgYmxvY2tdID0gdGhpcy5lbmRDb21wb25lbnQoKTtcbiAgICAgICAgICAgIHRoaXMucHVzaChbT3BzLkNvbXBvbmVudCwgdGFnLCBhdHRycywgYXJncywgYmxvY2tdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHVzaChbT3BzLkNsb3NlRWxlbWVudF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpY0F0dHIobmFtZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICAgIH1cbiAgICBkeW5hbWljQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICAgIH1cbiAgICB0cnVzdGluZ0F0dHIobmFtZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuVHJ1c3RpbmdBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIHN0YXRpY0FyZyhuYW1lKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICAgIH1cbiAgICBkeW5hbWljQXJnKG5hbWUpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICAgIH1cbiAgICB5aWVsZCh0bykge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5ZaWVsZCwgdG8sIHBhcmFtc10pO1xuICAgIH1cbiAgICBkZWJ1Z2dlcihldmFsSW5mbykge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5EZWJ1Z2dlciwgZXZhbEluZm9dKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNFdmFsID0gdHJ1ZTtcbiAgICB9XG4gICAgaGFzQmxvY2sobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkhhc0Jsb2NrLCBuYW1lXSk7XG4gICAgfVxuICAgIGhhc0Jsb2NrUGFyYW1zKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5IYXNCbG9ja1BhcmFtcywgbmFtZV0pO1xuICAgIH1cbiAgICBwYXJ0aWFsKGV2YWxJbmZvKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlBhcnRpYWwsIHBhcmFtc1swXSwgZXZhbEluZm9dKTtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNFdmFsID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8vIEV4cHJlc3Npb25zXG4gICAgbGl0ZXJhbCh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5VbmRlZmluZWRdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHVzaFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1bmtub3duKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5Vbmtub3duLCBuYW1lXSk7XG4gICAgfVxuICAgIGdldChoZWFkLCBwYXRoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuR2V0LCBoZWFkLCBwYXRoXSk7XG4gICAgfVxuICAgIG1heWJlTG9jYWwocGF0aCkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLk1heWJlTG9jYWwsIHBhdGhdKTtcbiAgICB9XG4gICAgY29uY2F0KCkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkNvbmNhdCwgdGhpcy5wb3BWYWx1ZSgpXSk7XG4gICAgfVxuICAgIGhlbHBlcihuYW1lKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkhlbHBlciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gICAgfVxuICAgIC8vLyBTdGFjayBNYW5hZ2VtZW50IE9wY29kZXNcbiAgICBzdGFydENvbXBvbmVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QmxvY2soZWxlbWVudFsnc3ltYm9scyddKTtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChjb21wb25lbnQpO1xuICAgIH1cbiAgICBlbmRDb21wb25lbnQoKSB7XG4gICAgICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmJsb2Nrcy5wb3AoKTtcbiAgICAgICAgYXNzZXJ0KGNvbXBvbmVudCBpbnN0YW5jZW9mIENvbXBvbmVudEJsb2NrLCBcIkNvbXBpbGVyIGJ1ZzogZW5kQ29tcG9uZW50KCkgc2hvdWxkIGVuZCBhIGNvbXBvbmVudFwiKTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC50b0pTT04oKTtcbiAgICB9XG4gICAgcHJlcGFyZUFycmF5KHNpemUpIHtcbiAgICAgICAgbGV0IHZhbHVlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2godGhpcy5wb3BWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hWYWx1ZSh2YWx1ZXMpO1xuICAgIH1cbiAgICBwcmVwYXJlT2JqZWN0KHNpemUpIHtcbiAgICAgICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCA+PSBzaXplLCBgRXhwZWN0ZWQgJHtzaXplfSB2YWx1ZXMgb24gdGhlIHN0YWNrLCBmb3VuZCAke3RoaXMudmFsdWVzLmxlbmd0aH1gKTtcbiAgICAgICAgbGV0IGtleXMgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICAgICAgdmFsdWVzW2ldID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtrZXlzLCB2YWx1ZXNdKTtcbiAgICB9XG4gICAgLy8vIFV0aWxpdGllc1xuICAgIHB1c2goYXJncykge1xuICAgICAgICB3aGlsZSAoYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSBudWxsKSB7XG4gICAgICAgICAgICBhcmdzLnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudEJsb2NrLnB1c2goYXJncyk7XG4gICAgfVxuICAgIHB1c2hWYWx1ZSh2YWwpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMucHVzaCh2YWwpO1xuICAgIH1cbiAgICBwb3BWYWx1ZSgpIHtcbiAgICAgICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCwgXCJObyBleHByZXNzaW9uIGZvdW5kIG9uIHN0YWNrXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMucG9wKCk7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbIkJsb2NrIiwiY29uc3RydWN0b3IiLCJzdGF0ZW1lbnRzIiwicHVzaCIsInN0YXRlbWVudCIsIklubGluZUJsb2NrIiwidGFibGUiLCJ0b0pTT04iLCJwYXJhbWV0ZXJzIiwic2xvdHMiLCJUZW1wbGF0ZUJsb2NrIiwic3ltYm9sVGFibGUiLCJ0eXBlIiwieWllbGRzIiwibmFtZWQiLCJibG9ja3MiLCJoYXNFdmFsIiwic3ltYm9scyIsIkNvbXBvbmVudEJsb2NrIiwiYXR0cmlidXRlcyIsImFyZ3VtZW50cyIsImluUGFyYW1zIiwicG9zaXRpb25hbHMiLCJpc0ZsdXNoRWxlbWVudCIsImlzQXJndW1lbnQiLCJpc0F0dHJpYnV0ZSIsImlzTW9kaWZpZXIiLCJFcnJvciIsImFyZ3MiLCJrZXlzIiwibWFwIiwiYXJnIiwidmFsdWVzIiwiVGVtcGxhdGUiLCJtZXRhIiwiYmxvY2siLCJKYXZhU2NyaXB0Q29tcGlsZXIiLCJvcGNvZGVzIiwidGVtcGxhdGUiLCJwcm9jZXNzIiwiY29tcGlsZXIiLCJjdXJyZW50QmxvY2siLCJjdXJyZW50IiwiZm9yRWFjaCIsIm9wY29kZSIsInN0YXJ0QmxvY2siLCJwcm9ncmFtIiwiZW5kQmxvY2siLCJwb3AiLCJzdGFydFByb2dyYW0iLCJlbmRQcm9ncmFtIiwidGV4dCIsImNvbnRlbnQiLCJUZXh0IiwiYXBwZW5kIiwidHJ1c3RlZCIsIkFwcGVuZCIsInBvcFZhbHVlIiwiY29tbWVudCIsInZhbHVlIiwiQ29tbWVudCIsIm1vZGlmaWVyIiwibmFtZSIsInBhcmFtcyIsImhhc2giLCJNb2RpZmllciIsImludmVyc2UiLCJvcGVuRWxlbWVudCIsImVsZW1lbnQiLCJ0YWciLCJpbmRleE9mIiwic3RhcnRDb21wb25lbnQiLCJibG9ja1BhcmFtcyIsImxlbmd0aCIsIk9wZW5FbGVtZW50IiwiZmx1c2hFbGVtZW50IiwiRmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50IiwiYXR0cnMiLCJlbmRDb21wb25lbnQiLCJDb21wb25lbnQiLCJDbG9zZUVsZW1lbnQiLCJzdGF0aWNBdHRyIiwibmFtZXNwYWNlIiwiU3RhdGljQXR0ciIsImR5bmFtaWNBdHRyIiwiRHluYW1pY0F0dHIiLCJ0cnVzdGluZ0F0dHIiLCJUcnVzdGluZ0F0dHIiLCJzdGF0aWNBcmciLCJTdGF0aWNBcmciLCJkeW5hbWljQXJnIiwiRHluYW1pY0FyZyIsInlpZWxkIiwidG8iLCJZaWVsZCIsImRlYnVnZ2VyIiwiZXZhbEluZm8iLCJEZWJ1Z2dlciIsImhhc0Jsb2NrIiwicHVzaFZhbHVlIiwiSGFzQmxvY2siLCJoYXNCbG9ja1BhcmFtcyIsIkhhc0Jsb2NrUGFyYW1zIiwicGFydGlhbCIsIlBhcnRpYWwiLCJsaXRlcmFsIiwidW5kZWZpbmVkIiwiVW5kZWZpbmVkIiwidW5rbm93biIsIlVua25vd24iLCJnZXQiLCJoZWFkIiwicGF0aCIsIkdldCIsIm1heWJlTG9jYWwiLCJNYXliZUxvY2FsIiwiY29uY2F0IiwiQ29uY2F0IiwiaGVscGVyIiwiSGVscGVyIiwiY29tcG9uZW50IiwicHJlcGFyZUFycmF5Iiwic2l6ZSIsImkiLCJwcmVwYXJlT2JqZWN0IiwiQXJyYXkiLCJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDTyxNQUFNQSxLQUFOLENBQVk7QUFDZkMsa0JBQWM7QUFDVixhQUFLQyxVQUFMLEdBQWtCLEVBQWxCO0FBQ0g7QUFDREMsU0FBS0MsU0FBTCxFQUFnQjtBQUNaLGFBQUtGLFVBQUwsQ0FBZ0JDLElBQWhCLENBQXFCQyxTQUFyQjtBQUNIO0FBTmM7UUFBTkosSyxHQUFBQSxLO0FBUU4sTUFBTUssV0FBTixTQUEwQkwsS0FBMUIsQ0FBZ0M7QUFDbkNDLGdCQUFZSyxLQUFaLEVBQW1CO0FBQ2Y7QUFDQSxhQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDSDtBQUNEQyxhQUFTO0FBQ0wsZUFBTztBQUNITCx3QkFBWSxLQUFLQSxVQURkO0FBRUhNLHdCQUFZLEtBQUtG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Q0g7QUFDRCxhQUFLMkMsU0FBTCxDQUFlcEUsTUFBZjtBQUNIO0FBQ0Q2RixrQkFBY0YsSUFBZCxFQUFvQjtBQUNoQiwwQkFBTyxLQUFLM0YsTUFBTCxDQUFZeUMsTUFBWixJQUFzQmtELElBQTdCLEVBQW9DLFlBQVdBLElBQUssK0JBQThCLEtBQUszRixNQUFMLENBQVl5QyxNQUFPLEVBQXJHO0FBQ0EsWUFBSTVDLE9BQU8sSUFBSWlHLEtBQUosQ0FBVUgsSUFBVixDQUFYO0FBQ0EsWUFBSTNGLFNBQVMsSUFBSThGLEtBQUosQ0FBVUgsSUFBVixDQUFiO0FBQ0EsYUFBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlELElBQXBCLEVBQTBCQyxHQUExQixFQUErQjtBQUMzQi9GLGlCQUFLK0YsQ0FBTCxJQUFVLEtBQUtuRSxRQUFMLEVBQVY7QUFDQXpCLG1CQUFPNEYsQ0FBUCxJQUFZLEtBQUtuRSxRQUFMLEVBQVo7QUFDSDtBQUNELGFBQUsyQyxTQUFMLENBQWUsQ0FBQ3ZFLElBQUQsRUFBT0csTUFBUCxDQUFmO0FBQ0g7QUFDRDtBQUNBN0IsU0FBS3lCLElBQUwsRUFBVztBQUNQLGVBQU9BLEtBQUtBLEtBQUs2QyxNQUFMLEdBQWMsQ0FBbkIsTUFBMEIsSUFBakMsRUFBdUM7QUFDbkM3QyxpQkFBS29CLEdBQUw7QUFDSDtBQUNELGFBQUtQLFlBQUwsQ0FBa0J0QyxJQUFsQixDQUF1QnlCLElBQXZCO0FBQ0g7QUFDRHdFLGNBQVUyQixHQUFWLEVBQWU7QUFDWCxhQUFLL0YsTUFBTCxDQUFZN0IsSUFBWixDQUFpQjRILEdBQWpCO0FBQ0g7QUFDRHRFLGVBQVc7QUFDUCwwQkFBTyxLQUFLekIsTUFBTCxDQUFZeUMsTUFBbkIsRUFBMkIsOEJBQTNCO0FBQ0EsZUFBTyxLQUFLekMsTUFBTCxDQUFZZ0IsR0FBWixFQUFQO0FBQ0g7QUExTG1DO2tCQUFuQlosa0IiLCJmaWxlIjoibGliL2phdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGF0ZW1lbnRzLCBPcHMgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5leHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBbXTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3IodGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3Ioc3ltYm9sVGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInRlbXBsYXRlXCI7XG4gICAgICAgIHRoaXMueWllbGRzID0gbmV3IERpY3RTZXQoKTtcbiAgICAgICAgdGhpcy5uYW1lZCA9IG5ldyBEaWN0U2V0KCk7XG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IGZhbHNlO1xuICAgIH1cbiAgICBwdXNoKHN0YXRlbWVudCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzeW1ib2xzOiB0aGlzLnN5bWJvbFRhYmxlLnN5bWJvbHMsXG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBoYXNFdmFsOiB0aGlzLmhhc0V2YWxcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3IodGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5hcmd1bWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5pblBhcmFtcyA9IHRydWU7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbHMgPSBbXTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5QYXJhbXMpIHtcbiAgICAgICAgICAgIGlmIChTdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluUGFyYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBcmd1bWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmd1bWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXR0cmlidXRlKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogRWxlbWVudCBtb2RpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBvbmVudHMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBvbmx5IHBhcmFtZXRlcnMgYWxsb3dlZCBiZWZvcmUgZmx1c2gtZWxlbWVudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBhcmdzID0gdGhpcy5hcmd1bWVudHM7XG4gICAgICAgIGxldCBrZXlzID0gYXJncy5tYXAoYXJnID0+IGFyZ1sxXSk7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzJdKTtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmF0dHJpYnV0ZXMsIFtrZXlzLCB2YWx1ZXNdLCB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICAgIH1dO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3Ioc3ltYm9scywgbWV0YSkge1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmJsb2NrID0gbmV3IFRlbXBsYXRlQmxvY2soc3ltYm9scyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiB0aGlzLmJsb2NrLnRvSlNPTigpLFxuICAgICAgICAgICAgbWV0YTogdGhpcy5tZXRhXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyIHtcbiAgICBjb25zdHJ1Y3RvcihvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKSB7XG4gICAgICAgIHRoaXMuYmxvY2tzID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMudmFsdWVzID0gW107XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSBuZXcgVGVtcGxhdGUoc3ltYm9scywgbWV0YSk7XG4gICAgfVxuICAgIHN0YXRpYyBwcm9jZXNzKG9wY29kZXMsIHN5bWJvbHMsIG1ldGEpIHtcbiAgICAgICAgbGV0IGNvbXBpbGVyID0gbmV3IEphdmFTY3JpcHRDb21waWxlcihvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKTtcbiAgICAgICAgcmV0dXJuIGNvbXBpbGVyLnByb2Nlc3MoKTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRCbG9jaygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2Nrcy5jdXJyZW50LCAnRXhwZWN0ZWQgYSBibG9jayBvbiB0aGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHJvY2VzcygpIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5pbXBsZW1lbnRlZCAke29wY29kZX0gb24gSmF2YVNjcmlwdENvbXBpbGVyYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgICB9XG4gICAgLy8vIE5lc3RpbmdcbiAgICBzdGFydEJsb2NrKFtwcm9ncmFtXSkge1xuICAgICAgICBsZXQgYmxvY2sgPSBuZXcgSW5saW5lQmxvY2socHJvZ3JhbVsnc3ltYm9scyddKTtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gICAgfVxuICAgIGVuZEJsb2NrKCkge1xuICAgICAgICBsZXQgeyB0ZW1wbGF0ZSwgYmxvY2tzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgYmxvY2sgPSBibG9ja3MucG9wKCk7XG4gICAgICAgIHRlbXBsYXRlLmJsb2NrLmJsb2Nrcy5wdXNoKGJsb2NrLnRvSlNPTigpKTtcbiAgICB9XG4gICAgc3RhcnRQcm9ncmFtKCkge1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKHRoaXMudGVtcGxhdGUuYmxvY2spO1xuICAgIH1cbiAgICBlbmRQcm9ncmFtKCkge31cbiAgICAvLy8gU3RhdGVtZW50c1xuICAgIHRleHQoY29udGVudCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5UZXh0LCBjb250ZW50XSk7XG4gICAgfVxuICAgIGFwcGVuZCh0cnVzdGVkKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkFwcGVuZCwgdGhpcy5wb3BWYWx1ZSgpLCB0cnVzdGVkXSk7XG4gICAgfVxuICAgIGNvbW1lbnQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tbWVudCwgdmFsdWVdKTtcbiAgICB9XG4gICAgbW9kaWZpZXIobmFtZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuTW9kaWZpZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICAgIH1cbiAgICBibG9jayhuYW1lLCB0ZW1wbGF0ZSwgaW52ZXJzZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGJsb2NrcyA9IHRoaXMudGVtcGxhdGUuYmxvY2suYmxvY2tzO1xuICAgICAgICBhc3NlcnQodHlwZW9mIHRlbXBsYXRlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbdGVtcGxhdGVdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBpbnZlcnNlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbaW52ZXJzZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5CbG9jaywgbmFtZSwgcGFyYW1zLCBoYXNoLCBibG9ja3NbdGVtcGxhdGVdLCBibG9ja3NbaW52ZXJzZV1dKTtcbiAgICB9XG4gICAgb3BlbkVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG4gICAgICAgIGlmICh0YWcuaW5kZXhPZignLScpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydENvbXBvbmVudChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmx1c2hFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgICB9XG4gICAgY2xvc2VFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuICAgICAgICBpZiAodGFnLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIGxldCBbYXR0cnMsIGFyZ3MsIGJsb2NrXSA9IHRoaXMuZW5kQ29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLnB1c2goW09wcy5Db21wb25lbnQsIHRhZywgYXR0cnMsIGFyZ3MsIGJsb2NrXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWNBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgZHluYW1pY0F0dHIobmFtZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgdHJ1c3RpbmdBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlRydXN0aW5nQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICAgIH1cbiAgICBzdGF0aWNBcmcobmFtZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgICB9XG4gICAgZHluYW1pY0FyZyhuYW1lKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgICB9XG4gICAgeWllbGQodG8pIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuWWllbGQsIHRvLCBwYXJhbXNdKTtcbiAgICB9XG4gICAgZGVidWdnZXIoZXZhbEluZm8pIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRGVidWdnZXIsIGV2YWxJbmZvXSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gICAgfVxuICAgIGhhc0Jsb2NrKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5IYXNCbG9jaywgbmFtZV0pO1xuICAgIH1cbiAgICBoYXNCbG9ja1BhcmFtcyhuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGFzQmxvY2tQYXJhbXMsIG5hbWVdKTtcbiAgICB9XG4gICAgcGFydGlhbChldmFsSW5mbykge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5QYXJ0aWFsLCBwYXJhbXNbMF0sIGV2YWxJbmZvXSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gICAgfVxuICAgIC8vLyBFeHByZXNzaW9uc1xuICAgIGxpdGVyYWwodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuVW5kZWZpbmVkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdW5rbm93bihuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuVW5rbm93biwgbmFtZV0pO1xuICAgIH1cbiAgICBnZXQoaGVhZCwgcGF0aCkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkdldCwgaGVhZCwgcGF0aF0pO1xuICAgIH1cbiAgICBtYXliZUxvY2FsKHBhdGgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5NYXliZUxvY2FsLCBwYXRoXSk7XG4gICAgfVxuICAgIGNvbmNhdCgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5Db25jYXQsIHRoaXMucG9wVmFsdWUoKV0pO1xuICAgIH1cbiAgICBoZWxwZXIobmFtZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5IZWxwZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICAgIH1cbiAgICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG4gICAgc3RhcnRDb21wb25lbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJsb2NrKGVsZW1lbnRbJ3N5bWJvbHMnXSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gICAgZW5kQ29tcG9uZW50KCkge1xuICAgICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5ibG9ja3MucG9wKCk7XG4gICAgICAgIGFzc2VydChjb21wb25lbnQgaW5zdGFuY2VvZiBDb21wb25lbnRCbG9jaywgXCJDb21waWxlciBidWc6IGVuZENvbXBvbmVudCgpIHNob3VsZCBlbmQgYSBjb21wb25lbnRcIik7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQudG9KU09OKCk7XG4gICAgfVxuICAgIHByZXBhcmVBcnJheShzaXplKSB7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHRoaXMucG9wVmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoVmFsdWUodmFsdWVzKTtcbiAgICB9XG4gICAgcHJlcGFyZU9iamVjdChzaXplKSB7XG4gICAgICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGggPj0gc2l6ZSwgYEV4cGVjdGVkICR7c2l6ZX0gdmFsdWVzIG9uIHRoZSBzdGFjaywgZm91bmQgJHt0aGlzLnZhbHVlcy5sZW5ndGh9YCk7XG4gICAgICAgIGxldCBrZXlzID0gbmV3IEFycmF5KHNpemUpO1xuICAgICAgICBsZXQgdmFsdWVzID0gbmV3IEFycmF5KHNpemUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAga2V5c1tpXSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgICAgIHZhbHVlc1tpXSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hWYWx1ZShba2V5cywgdmFsdWVzXSk7XG4gICAgfVxuICAgIC8vLyBVdGlsaXRpZXNcbiAgICBwdXNoKGFyZ3MpIHtcbiAgICAgICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYXJncy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRCbG9jay5wdXNoKGFyZ3MpO1xuICAgIH1cbiAgICBwdXNoVmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnB1c2godmFsKTtcbiAgICB9XG4gICAgcG9wVmFsdWUoKSB7XG4gICAgICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnBvcCgpO1xuICAgIH1cbn0iXX0=

@@ -94,8 +94,4 @@ "use strict";

_this2.named = new _util.DictSet();
_this2.prelude = [];
_this2.head = [];
_this2.blocks = [];
_this2.hasEval = false;
_this2.sawElement = false;
_this2.inParams = false;
return _this2;

@@ -105,20 +101,3 @@ }

TemplateBlock.prototype.push = function push(statement) {
if (!this.sawElement) {
if (_wireFormat.Statements.isOpenElement(statement)) {
this.sawElement = true;
this.inParams = true;
}
this.prelude.push(statement);
} else if (this.inParams) {
if (_wireFormat.Statements.isFlushElement(statement)) {
this.inParams = false;
this.head.push(statement);
} else if (_wireFormat.Statements.isInElementHead(statement)) {
this.head.push(statement);
} else {
throw new Error('Compile Error: only parameters allowed before flush-element');
}
} else {
this.statements.push(statement);
}
this.statements.push(statement);
};

@@ -129,5 +108,3 @@

symbols: this.symbolTable.symbols,
prelude: this.sawElement ? this.prelude : null,
head: this.sawElement ? this.head : null,
statements: this.sawElement ? this.statements : this.prelude,
statements: this.statements,
hasEval: this.hasEval

@@ -460,2 +437,2 @@ };

exports.default = JavaScriptCompiler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbImFzc2VydCIsIlN0YWNrIiwiRGljdFNldCIsIlN0YXRlbWVudHMiLCJPcHMiLCJCbG9jayIsInN0YXRlbWVudHMiLCJwdXNoIiwic3RhdGVtZW50IiwiSW5saW5lQmxvY2siLCJ0YWJsZSIsInRvSlNPTiIsInBhcmFtZXRlcnMiLCJzbG90cyIsIlRlbXBsYXRlQmxvY2siLCJzeW1ib2xUYWJsZSIsInR5cGUiLCJ5aWVsZHMiLCJuYW1lZCIsInByZWx1ZGUiLCJoZWFkIiwiYmxvY2tzIiwiaGFzRXZhbCIsInNhd0VsZW1lbnQiLCJpblBhcmFtcyIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzSW5FbGVtZW50SGVhZCIsIkVycm9yIiwic3ltYm9scyIsIkNvbXBvbmVudEJsb2NrIiwiYXR0cmlidXRlcyIsImFyZ3VtZW50cyIsInBvc2l0aW9uYWxzIiwiaXNBcmd1bWVudCIsImlzQXR0cmlidXRlIiwiaXNNb2RpZmllciIsImFyZ3MiLCJrZXlzIiwibWFwIiwiYXJnIiwidmFsdWVzIiwiVGVtcGxhdGUiLCJtZXRhIiwiYmxvY2siLCJKYXZhU2NyaXB0Q29tcGlsZXIiLCJvcGNvZGVzIiwidGVtcGxhdGUiLCJwcm9jZXNzIiwiY29tcGlsZXIiLCJmb3JFYWNoIiwib3Bjb2RlIiwic3RhcnRCbG9jayIsInByb2dyYW0iLCJlbmRCbG9jayIsInBvcCIsInN0YXJ0UHJvZ3JhbSIsImVuZFByb2dyYW0iLCJ0ZXh0IiwiY29udGVudCIsIlRleHQiLCJhcHBlbmQiLCJ0cnVzdGVkIiwiQXBwZW5kIiwicG9wVmFsdWUiLCJjb21tZW50IiwidmFsdWUiLCJDb21tZW50IiwibW9kaWZpZXIiLCJuYW1lIiwicGFyYW1zIiwiaGFzaCIsIk1vZGlmaWVyIiwiaW52ZXJzZSIsIm9wZW5FbGVtZW50IiwiZWxlbWVudCIsInRhZyIsImluZGV4T2YiLCJzdGFydENvbXBvbmVudCIsImJsb2NrUGFyYW1zIiwibGVuZ3RoIiwiT3BlbkVsZW1lbnQiLCJmbHVzaEVsZW1lbnQiLCJGbHVzaEVsZW1lbnQiLCJjbG9zZUVsZW1lbnQiLCJlbmRDb21wb25lbnQiLCJhdHRycyIsIkNvbXBvbmVudCIsIkNsb3NlRWxlbWVudCIsInN0YXRpY0F0dHIiLCJuYW1lc3BhY2UiLCJTdGF0aWNBdHRyIiwiZHluYW1pY0F0dHIiLCJEeW5hbWljQXR0ciIsInRydXN0aW5nQXR0ciIsIlRydXN0aW5nQXR0ciIsInN0YXRpY0FyZyIsIlN0YXRpY0FyZyIsImR5bmFtaWNBcmciLCJEeW5hbWljQXJnIiwieWllbGQiLCJ0byIsIllpZWxkIiwiZGVidWdnZXIiLCJldmFsSW5mbyIsIkRlYnVnZ2VyIiwiaGFzQmxvY2siLCJwdXNoVmFsdWUiLCJIYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwiSGFzQmxvY2tQYXJhbXMiLCJwYXJ0aWFsIiwiUGFydGlhbCIsImxpdGVyYWwiLCJ1bmRlZmluZWQiLCJVbmRlZmluZWQiLCJ1bmtub3duIiwiVW5rbm93biIsImdldCIsInBhdGgiLCJHZXQiLCJtYXliZUxvY2FsIiwiTWF5YmVMb2NhbCIsImNvbmNhdCIsIkNvbmNhdCIsImhlbHBlciIsIkhlbHBlciIsImNvbXBvbmVudCIsInByZXBhcmVBcnJheSIsInNpemUiLCJpIiwicHJlcGFyZU9iamVjdCIsIkFycmF5IiwiY3VycmVudEJsb2NrIiwidmFsIiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBYyxBQUN2QixBQUFTLEFBQU8sQUFBdUI7O0FBQ3ZDLEFBQVMsQUFBWSxBQUFXLEFBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLEFBQWEsb0NBQ1Q7cUJBQWM7OEJBQ1Y7O2FBQUEsQUFBSyxhQUFMLEFBQWtCLEFBQ3JCO0FBSEw7O29CQUFBLEFBSUkscUJBSkosQUFJUyxXQUFXLEFBQ1o7YUFBQSxBQUFLLFdBQUwsQUFBZ0IsS0FBaEIsQUFBcUIsQUFDeEI7QUFO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QUFLLEEsTUFBTSxBQUNQO2VBQU8sS0FBSyxLQUFBLEFBQUssU0FBVixBQUFtQixPQUExQixBQUFpQyxNQUFNLEFBQ25DO2lCQUFBLEFBQUssQUFDUjtBQUNEO2FBQUEsQUFBSyxhQUFMLEFBQWtCLEtBQWxCLEFBQXVCLEFBQzFCO0E7O2lDQUNELEEsK0JBQVUsQSxLQUFLLEFBQ1g7YUFBQSxBQUFLLE9BQUwsQUFBWSxLQUFaLEFBQWlCLEFBQ3BCO0E7O2lDQUNELEEsK0JBQVcsQUFDUDswQkFBTyxLQUFBLEFBQUssT0FBWixBQUFtQixRQUFuQixBQUEyQixBQUMzQjtlQUFPLEtBQUEsQUFBSyxPQUFaLEFBQU8sQUFBWSxBQUN0QjtBOzs7O3lCQS9La0IsQUFDZjttQkFBYyxLQUFBLEFBQUssT0FBbkIsQUFBMEIsQUFDN0I7Ozs7Ozs7a0JBYmdCLEEiLCJmaWxlIjoibGliL2phdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGF0ZW1lbnRzLCBPcHMgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5leHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBbXTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3IodGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3Ioc3ltYm9sVGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInRlbXBsYXRlXCI7XG4gICAgICAgIHRoaXMueWllbGRzID0gbmV3IERpY3RTZXQoKTtcbiAgICAgICAgdGhpcy5uYW1lZCA9IG5ldyBEaWN0U2V0KCk7XG4gICAgICAgIHRoaXMucHJlbHVkZSA9IFtdO1xuICAgICAgICB0aGlzLmhlYWQgPSBbXTtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcbiAgICAgICAgdGhpcy5oYXNFdmFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F3RWxlbWVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluUGFyYW1zID0gZmFsc2U7XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5zYXdFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhd0VsZW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5QYXJhbXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmVsdWRlLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZC5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNJbkVsZW1lbnRIZWFkKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWQucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IG9ubHkgcGFyYW1ldGVycyBhbGxvd2VkIGJlZm9yZSBmbHVzaC1lbGVtZW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN5bWJvbHM6IHRoaXMuc3ltYm9sVGFibGUuc3ltYm9scyxcbiAgICAgICAgICAgIHByZWx1ZGU6IHRoaXMuc2F3RWxlbWVudCA/IHRoaXMucHJlbHVkZSA6IG51bGwsXG4gICAgICAgICAgICBoZWFkOiB0aGlzLnNhd0VsZW1lbnQgPyB0aGlzLmhlYWQgOiBudWxsLFxuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zYXdFbGVtZW50ID8gdGhpcy5zdGF0ZW1lbnRzIDogdGhpcy5wcmVsdWRlLFxuICAgICAgICAgICAgaGFzRXZhbDogdGhpcy5oYXNFdmFsXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHRoaXMuYXJndW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuaW5QYXJhbXMgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWxzID0gW107XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXJndW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJndW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0F0dHJpYnV0ZShzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogb25seSBwYXJhbWV0ZXJzIGFsbG93ZWQgYmVmb3JlIGZsdXNoLWVsZW1lbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgICAgICBsZXQga2V5cyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMV0pO1xuICAgICAgICBsZXQgdmFsdWVzID0gYXJncy5tYXAoYXJnID0+IGFyZ1syXSk7XG4gICAgICAgIHJldHVybiBbdGhpcy5hdHRyaWJ1dGVzLCBba2V5cywgdmFsdWVzXSwge1xuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgICB9XTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVGVtcGxhdGUge1xuICAgIGNvbnN0cnVjdG9yKHN5bWJvbHMsIG1ldGEpIHtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5ibG9jayA9IG5ldyBUZW1wbGF0ZUJsb2NrKHN5bWJvbHMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogdGhpcy5ibG9jay50b0pTT04oKSxcbiAgICAgICAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gICAgY29uc3RydWN0b3Iob3Bjb2Rlcywgc3ltYm9scywgbWV0YSkge1xuICAgICAgICB0aGlzLmJsb2NrcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBvcGNvZGVzO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKHN5bWJvbHMsIG1ldGEpO1xuICAgIH1cbiAgICBzdGF0aWMgcHJvY2VzcyhvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKSB7XG4gICAgICAgIGxldCBjb21waWxlciA9IG5ldyBKYXZhU2NyaXB0Q29tcGlsZXIob3Bjb2Rlcywgc3ltYm9scywgbWV0YSk7XG4gICAgICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gICAgfVxuICAgIGdldCBjdXJyZW50QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja3MuY3VycmVudCwgJ0V4cGVjdGVkIGEgYmxvY2sgb24gdGhlIHN0YWNrJyk7XG4gICAgfVxuICAgIHByb2Nlc3MoKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gICAgfVxuICAgIC8vLyBOZXN0aW5nXG4gICAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICAgICAgbGV0IGJsb2NrID0gbmV3IElubGluZUJsb2NrKHByb2dyYW1bJ3N5bWJvbHMnXSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICAgIH1cbiAgICBlbmRCbG9jaygpIHtcbiAgICAgICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGJsb2NrID0gYmxvY2tzLnBvcCgpO1xuICAgICAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9jay50b0pTT04oKSk7XG4gICAgfVxuICAgIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaCh0aGlzLnRlbXBsYXRlLmJsb2NrKTtcbiAgICB9XG4gICAgZW5kUHJvZ3JhbSgpIHt9XG4gICAgLy8vIFN0YXRlbWVudHNcbiAgICB0ZXh0KGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuVGV4dCwgY29udGVudF0pO1xuICAgIH1cbiAgICBhcHBlbmQodHJ1c3RlZCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5BcHBlbmQsIHRoaXMucG9wVmFsdWUoKSwgdHJ1c3RlZF0pO1xuICAgIH1cbiAgICBjb21tZW50KHZhbHVlKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkNvbW1lbnQsIHZhbHVlXSk7XG4gICAgfVxuICAgIG1vZGlmaWVyKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLk1vZGlmaWVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgICB9XG4gICAgYmxvY2sobmFtZSwgdGVtcGxhdGUsIGludmVyc2UpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBibG9ja3MgPSB0aGlzLnRlbXBsYXRlLmJsb2NrLmJsb2NrcztcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiB0ZW1wbGF0ZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW3RlbXBsYXRlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG4gICAgICAgIGFzc2VydCh0eXBlb2YgaW52ZXJzZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW2ludmVyc2VdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuQmxvY2ssIG5hbWUsIHBhcmFtcywgaGFzaCwgYmxvY2tzW3RlbXBsYXRlXSwgYmxvY2tzW2ludmVyc2VdXSk7XG4gICAgfVxuICAgIG9wZW5FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuICAgICAgICBpZiAodGFnLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ10pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZsdXNoRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgfVxuICAgIGNsb3NlRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcbiAgICAgICAgaWYgKHRhZy5pbmRleE9mKCctJykgIT09IC0xKSB7XG4gICAgICAgICAgICBsZXQgW2F0dHJzLCBhcmdzLCBibG9ja10gPSB0aGlzLmVuZENvbXBvbmVudCgpO1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tcG9uZW50LCB0YWcsIGF0dHJzLCBhcmdzLCBibG9ja10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIHRydXN0aW5nQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5UcnVzdGluZ0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgc3RhdGljQXJnKG5hbWUpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIGR5bmFtaWNBcmcobmFtZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIHlpZWxkKHRvKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLllpZWxkLCB0bywgcGFyYW1zXSk7XG4gICAgfVxuICAgIGRlYnVnZ2VyKGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkRlYnVnZ2VyLCBldmFsSW5mb10pO1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICAgIH1cbiAgICBoYXNCbG9jayhuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGFzQmxvY2ssIG5hbWVdKTtcbiAgICB9XG4gICAgaGFzQmxvY2tQYXJhbXMobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkhhc0Jsb2NrUGFyYW1zLCBuYW1lXSk7XG4gICAgfVxuICAgIHBhcnRpYWwoZXZhbEluZm8pIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuUGFydGlhbCwgcGFyYW1zWzBdLCBldmFsSW5mb10pO1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICAgIH1cbiAgICAvLy8gRXhwcmVzc2lvbnNcbiAgICBsaXRlcmFsKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLlVuZGVmaW5lZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVua25vd24obmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLlVua25vd24sIG5hbWVdKTtcbiAgICB9XG4gICAgZ2V0KGhlYWQsIHBhdGgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5HZXQsIGhlYWQsIHBhdGhdKTtcbiAgICB9XG4gICAgbWF5YmVMb2NhbChwYXRoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuTWF5YmVMb2NhbCwgcGF0aF0pO1xuICAgIH1cbiAgICBjb25jYXQoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuQ29uY2F0LCB0aGlzLnBvcFZhbHVlKCldKTtcbiAgICB9XG4gICAgaGVscGVyKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGVscGVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgICB9XG4gICAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuICAgIHN0YXJ0Q29tcG9uZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCbG9jayhlbGVtZW50WydzeW1ib2xzJ10pO1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIGVuZENvbXBvbmVudCgpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuYmxvY2tzLnBvcCgpO1xuICAgICAgICBhc3NlcnQoY29tcG9uZW50IGluc3RhbmNlb2YgQ29tcG9uZW50QmxvY2ssIFwiQ29tcGlsZXIgYnVnOiBlbmRDb21wb25lbnQoKSBzaG91bGQgZW5kIGEgY29tcG9uZW50XCIpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50LnRvSlNPTigpO1xuICAgIH1cbiAgICBwcmVwYXJlQXJyYXkoc2l6ZSkge1xuICAgICAgICBsZXQgdmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKHZhbHVlcyk7XG4gICAgfVxuICAgIHByZXBhcmVPYmplY3Qoc2l6ZSkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuICAgICAgICBsZXQga2V5cyA9IG5ldyBBcnJheShzaXplKTtcbiAgICAgICAgbGV0IHZhbHVlcyA9IG5ldyBBcnJheShzaXplKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIGtleXNbaV0gPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW2tleXMsIHZhbHVlc10pO1xuICAgIH1cbiAgICAvLy8gVXRpbGl0aWVzXG4gICAgcHVzaChhcmdzKSB7XG4gICAgICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGFyZ3MucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50QmxvY2sucHVzaChhcmdzKTtcbiAgICB9XG4gICAgcHVzaFZhbHVlKHZhbCkge1xuICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gICAgfVxuICAgIHBvcFZhbHVlKCkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbImFzc2VydCIsIlN0YWNrIiwiRGljdFNldCIsIlN0YXRlbWVudHMiLCJPcHMiLCJCbG9jayIsInN0YXRlbWVudHMiLCJwdXNoIiwic3RhdGVtZW50IiwiSW5saW5lQmxvY2siLCJ0YWJsZSIsInRvSlNPTiIsInBhcmFtZXRlcnMiLCJzbG90cyIsIlRlbXBsYXRlQmxvY2siLCJzeW1ib2xUYWJsZSIsInR5cGUiLCJ5aWVsZHMiLCJuYW1lZCIsImJsb2NrcyIsImhhc0V2YWwiLCJzeW1ib2xzIiwiQ29tcG9uZW50QmxvY2siLCJhdHRyaWJ1dGVzIiwiYXJndW1lbnRzIiwiaW5QYXJhbXMiLCJwb3NpdGlvbmFscyIsImlzRmx1c2hFbGVtZW50IiwiaXNBcmd1bWVudCIsImlzQXR0cmlidXRlIiwiaXNNb2RpZmllciIsIkVycm9yIiwiYXJncyIsImtleXMiLCJtYXAiLCJhcmciLCJ2YWx1ZXMiLCJUZW1wbGF0ZSIsIm1ldGEiLCJibG9jayIsIkphdmFTY3JpcHRDb21waWxlciIsIm9wY29kZXMiLCJ0ZW1wbGF0ZSIsInByb2Nlc3MiLCJjb21waWxlciIsImZvckVhY2giLCJvcGNvZGUiLCJzdGFydEJsb2NrIiwicHJvZ3JhbSIsImVuZEJsb2NrIiwicG9wIiwic3RhcnRQcm9ncmFtIiwiZW5kUHJvZ3JhbSIsInRleHQiLCJjb250ZW50IiwiVGV4dCIsImFwcGVuZCIsInRydXN0ZWQiLCJBcHBlbmQiLCJwb3BWYWx1ZSIsImNvbW1lbnQiLCJ2YWx1ZSIsIkNvbW1lbnQiLCJtb2RpZmllciIsIm5hbWUiLCJwYXJhbXMiLCJoYXNoIiwiTW9kaWZpZXIiLCJpbnZlcnNlIiwib3BlbkVsZW1lbnQiLCJlbGVtZW50IiwidGFnIiwiaW5kZXhPZiIsInN0YXJ0Q29tcG9uZW50IiwiYmxvY2tQYXJhbXMiLCJsZW5ndGgiLCJPcGVuRWxlbWVudCIsImZsdXNoRWxlbWVudCIsIkZsdXNoRWxlbWVudCIsImNsb3NlRWxlbWVudCIsImVuZENvbXBvbmVudCIsImF0dHJzIiwiQ29tcG9uZW50IiwiQ2xvc2VFbGVtZW50Iiwic3RhdGljQXR0ciIsIm5hbWVzcGFjZSIsIlN0YXRpY0F0dHIiLCJkeW5hbWljQXR0ciIsIkR5bmFtaWNBdHRyIiwidHJ1c3RpbmdBdHRyIiwiVHJ1c3RpbmdBdHRyIiwic3RhdGljQXJnIiwiU3RhdGljQXJnIiwiZHluYW1pY0FyZyIsIkR5bmFtaWNBcmciLCJ5aWVsZCIsInRvIiwiWWllbGQiLCJkZWJ1Z2dlciIsImV2YWxJbmZvIiwiRGVidWdnZXIiLCJoYXNCbG9jayIsInB1c2hWYWx1ZSIsIkhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJIYXNCbG9ja1BhcmFtcyIsInBhcnRpYWwiLCJQYXJ0aWFsIiwibGl0ZXJhbCIsInVuZGVmaW5lZCIsIlVuZGVmaW5lZCIsInVua25vd24iLCJVbmtub3duIiwiZ2V0IiwiaGVhZCIsInBhdGgiLCJHZXQiLCJtYXliZUxvY2FsIiwiTWF5YmVMb2NhbCIsImNvbmNhdCIsIkNvbmNhdCIsImhlbHBlciIsIkhlbHBlciIsImNvbXBvbmVudCIsInByZXBhcmVBcnJheSIsInNpemUiLCJpIiwicHJlcGFyZU9iamVjdCIsIkFycmF5IiwiY3VycmVudEJsb2NrIiwidmFsIiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBYyxBQUN2QixBQUFTLEFBQU8sQUFBdUI7O0FBQ3ZDLEFBQVMsQUFBWSxBQUFXLEFBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLEFBQWEsb0NBQ1Q7cUJBQWM7OEJBQ1Y7O2FBQUEsQUFBSyxhQUFMLEFBQWtCLEFBQ3JCO0FBSEw7O29CQUFBLEFBSUkscUJBSkosQUFJUyxXQUFXLEFBQ1o7YUFBQSxBQUFLLFdBQUwsQUFBZ0IsS0FBaEIsQUFBcUIsQUFDeEI7QUFOTDs7V0FBQTtBQVFBO0lBQUEsQUFBYSxzREFBYjsyQkFDSTs7eUJBQUEsQUFBWSxPQUFPOzhCQUFB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ZjttQkFBQSxBQUFPLEtBQUssS0FBWixBQUFZLEFBQUssQUFDcEI7QUFDRDthQUFBLEFBQUssVUFBVSxDQUFBLEFBQUMsTUFBaEIsQUFBZSxBQUFPLEFBQ3pCO0EsQUFDRDs7OztpQ0FDQSxBLHFCQUFLLEEsTUFBTSxBQUNQO2VBQU8sS0FBSyxLQUFBLEFBQUssU0FBVixBQUFtQixPQUExQixBQUFpQyxNQUFNLEFBQ25DO2lCQUFBLEFBQUssQUFDUjtBQUNEO2FBQUEsQUFBSyxhQUFMLEFBQWtCLEtBQWxCLEFBQXVCLEFBQzFCO0E7O2lDQUNELEEsK0JBQVUsQSxLQUFLLEFBQ1g7YUFBQSxBQUFLLE9BQUwsQUFBWSxLQUFaLEFBQWlCLEFBQ3BCO0E7O2lDQUNELEEsK0JBQVcsQUFDUDswQkFBTyxLQUFBLEFBQUssT0FBWixBQUFtQixRQUFuQixBQUEyQixBQUMzQjtlQUFPLEtBQUEsQUFBSyxPQUFaLEFBQU8sQUFBWSxBQUN0QjtBOzs7O3lCQS9La0IsQUFDZjttQkFBYyxLQUFBLEFBQUssT0FBbkIsQUFBMEIsQUFDN0I7Ozs7Ozs7a0JBYmdCLEEiLCJmaWxlIjoibGliL2phdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGF0ZW1lbnRzLCBPcHMgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5leHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBbXTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3IodGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3Ioc3ltYm9sVGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInRlbXBsYXRlXCI7XG4gICAgICAgIHRoaXMueWllbGRzID0gbmV3IERpY3RTZXQoKTtcbiAgICAgICAgdGhpcy5uYW1lZCA9IG5ldyBEaWN0U2V0KCk7XG4gICAgICAgIHRoaXMuYmxvY2tzID0gW107XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IGZhbHNlO1xuICAgIH1cbiAgICBwdXNoKHN0YXRlbWVudCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzeW1ib2xzOiB0aGlzLnN5bWJvbFRhYmxlLnN5bWJvbHMsXG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBoYXNFdmFsOiB0aGlzLmhhc0V2YWxcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3IodGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5hcmd1bWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5pblBhcmFtcyA9IHRydWU7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbHMgPSBbXTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5QYXJhbXMpIHtcbiAgICAgICAgICAgIGlmIChTdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluUGFyYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBcmd1bWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmd1bWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXR0cmlidXRlKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogRWxlbWVudCBtb2RpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBvbmVudHMnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBvbmx5IHBhcmFtZXRlcnMgYWxsb3dlZCBiZWZvcmUgZmx1c2gtZWxlbWVudCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBhcmdzID0gdGhpcy5hcmd1bWVudHM7XG4gICAgICAgIGxldCBrZXlzID0gYXJncy5tYXAoYXJnID0+IGFyZ1sxXSk7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzJdKTtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmF0dHJpYnV0ZXMsIFtrZXlzLCB2YWx1ZXNdLCB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICAgIH1dO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3Ioc3ltYm9scywgbWV0YSkge1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmJsb2NrID0gbmV3IFRlbXBsYXRlQmxvY2soc3ltYm9scyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJsb2NrOiB0aGlzLmJsb2NrLnRvSlNPTigpLFxuICAgICAgICAgICAgbWV0YTogdGhpcy5tZXRhXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyIHtcbiAgICBjb25zdHJ1Y3RvcihvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKSB7XG4gICAgICAgIHRoaXMuYmxvY2tzID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMudmFsdWVzID0gW107XG4gICAgICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgICAgIHRoaXMudGVtcGxhdGUgPSBuZXcgVGVtcGxhdGUoc3ltYm9scywgbWV0YSk7XG4gICAgfVxuICAgIHN0YXRpYyBwcm9jZXNzKG9wY29kZXMsIHN5bWJvbHMsIG1ldGEpIHtcbiAgICAgICAgbGV0IGNvbXBpbGVyID0gbmV3IEphdmFTY3JpcHRDb21waWxlcihvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKTtcbiAgICAgICAgcmV0dXJuIGNvbXBpbGVyLnByb2Nlc3MoKTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRCbG9jaygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2Nrcy5jdXJyZW50LCAnRXhwZWN0ZWQgYSBibG9jayBvbiB0aGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHJvY2VzcygpIHtcbiAgICAgICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5pbXBsZW1lbnRlZCAke29wY29kZX0gb24gSmF2YVNjcmlwdENvbXBpbGVyYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgICB9XG4gICAgLy8vIE5lc3RpbmdcbiAgICBzdGFydEJsb2NrKFtwcm9ncmFtXSkge1xuICAgICAgICBsZXQgYmxvY2sgPSBuZXcgSW5saW5lQmxvY2socHJvZ3JhbVsnc3ltYm9scyddKTtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gICAgfVxuICAgIGVuZEJsb2NrKCkge1xuICAgICAgICBsZXQgeyB0ZW1wbGF0ZSwgYmxvY2tzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgYmxvY2sgPSBibG9ja3MucG9wKCk7XG4gICAgICAgIHRlbXBsYXRlLmJsb2NrLmJsb2Nrcy5wdXNoKGJsb2NrLnRvSlNPTigpKTtcbiAgICB9XG4gICAgc3RhcnRQcm9ncmFtKCkge1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKHRoaXMudGVtcGxhdGUuYmxvY2spO1xuICAgIH1cbiAgICBlbmRQcm9ncmFtKCkge31cbiAgICAvLy8gU3RhdGVtZW50c1xuICAgIHRleHQoY29udGVudCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5UZXh0LCBjb250ZW50XSk7XG4gICAgfVxuICAgIGFwcGVuZCh0cnVzdGVkKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkFwcGVuZCwgdGhpcy5wb3BWYWx1ZSgpLCB0cnVzdGVkXSk7XG4gICAgfVxuICAgIGNvbW1lbnQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tbWVudCwgdmFsdWVdKTtcbiAgICB9XG4gICAgbW9kaWZpZXIobmFtZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuTW9kaWZpZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICAgIH1cbiAgICBibG9jayhuYW1lLCB0ZW1wbGF0ZSwgaW52ZXJzZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGJsb2NrcyA9IHRoaXMudGVtcGxhdGUuYmxvY2suYmxvY2tzO1xuICAgICAgICBhc3NlcnQodHlwZW9mIHRlbXBsYXRlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbdGVtcGxhdGVdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiBpbnZlcnNlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbaW52ZXJzZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5CbG9jaywgbmFtZSwgcGFyYW1zLCBoYXNoLCBibG9ja3NbdGVtcGxhdGVdLCBibG9ja3NbaW52ZXJzZV1dKTtcbiAgICB9XG4gICAgb3BlbkVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG4gICAgICAgIGlmICh0YWcuaW5kZXhPZignLScpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydENvbXBvbmVudChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZmx1c2hFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgICB9XG4gICAgY2xvc2VFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuICAgICAgICBpZiAodGFnLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIGxldCBbYXR0cnMsIGFyZ3MsIGJsb2NrXSA9IHRoaXMuZW5kQ29tcG9uZW50KCk7XG4gICAgICAgICAgICB0aGlzLnB1c2goW09wcy5Db21wb25lbnQsIHRhZywgYXR0cnMsIGFyZ3MsIGJsb2NrXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWNBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgZHluYW1pY0F0dHIobmFtZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgdHJ1c3RpbmdBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlRydXN0aW5nQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICAgIH1cbiAgICBzdGF0aWNBcmcobmFtZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgICB9XG4gICAgZHluYW1pY0FyZyhuYW1lKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgICB9XG4gICAgeWllbGQodG8pIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuWWllbGQsIHRvLCBwYXJhbXNdKTtcbiAgICB9XG4gICAgZGVidWdnZXIoZXZhbEluZm8pIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRGVidWdnZXIsIGV2YWxJbmZvXSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gICAgfVxuICAgIGhhc0Jsb2NrKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5IYXNCbG9jaywgbmFtZV0pO1xuICAgIH1cbiAgICBoYXNCbG9ja1BhcmFtcyhuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGFzQmxvY2tQYXJhbXMsIG5hbWVdKTtcbiAgICB9XG4gICAgcGFydGlhbChldmFsSW5mbykge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5QYXJ0aWFsLCBwYXJhbXNbMF0sIGV2YWxJbmZvXSk7XG4gICAgICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gICAgfVxuICAgIC8vLyBFeHByZXNzaW9uc1xuICAgIGxpdGVyYWwodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuVW5kZWZpbmVkXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdW5rbm93bihuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuVW5rbm93biwgbmFtZV0pO1xuICAgIH1cbiAgICBnZXQoaGVhZCwgcGF0aCkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkdldCwgaGVhZCwgcGF0aF0pO1xuICAgIH1cbiAgICBtYXliZUxvY2FsKHBhdGgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5NYXliZUxvY2FsLCBwYXRoXSk7XG4gICAgfVxuICAgIGNvbmNhdCgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5Db25jYXQsIHRoaXMucG9wVmFsdWUoKV0pO1xuICAgIH1cbiAgICBoZWxwZXIobmFtZSkge1xuICAgICAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5IZWxwZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICAgIH1cbiAgICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG4gICAgc3RhcnRDb21wb25lbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJsb2NrKGVsZW1lbnRbJ3N5bWJvbHMnXSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goY29tcG9uZW50KTtcbiAgICB9XG4gICAgZW5kQ29tcG9uZW50KCkge1xuICAgICAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5ibG9ja3MucG9wKCk7XG4gICAgICAgIGFzc2VydChjb21wb25lbnQgaW5zdGFuY2VvZiBDb21wb25lbnRCbG9jaywgXCJDb21waWxlciBidWc6IGVuZENvbXBvbmVudCgpIHNob3VsZCBlbmQgYSBjb21wb25lbnRcIik7XG4gICAgICAgIHJldHVybiBjb21wb25lbnQudG9KU09OKCk7XG4gICAgfVxuICAgIHByZXBhcmVBcnJheShzaXplKSB7XG4gICAgICAgIGxldCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHRoaXMucG9wVmFsdWUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoVmFsdWUodmFsdWVzKTtcbiAgICB9XG4gICAgcHJlcGFyZU9iamVjdChzaXplKSB7XG4gICAgICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGggPj0gc2l6ZSwgYEV4cGVjdGVkICR7c2l6ZX0gdmFsdWVzIG9uIHRoZSBzdGFjaywgZm91bmQgJHt0aGlzLnZhbHVlcy5sZW5ndGh9YCk7XG4gICAgICAgIGxldCBrZXlzID0gbmV3IEFycmF5KHNpemUpO1xuICAgICAgICBsZXQgdmFsdWVzID0gbmV3IEFycmF5KHNpemUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAga2V5c1tpXSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgICAgIHZhbHVlc1tpXSA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hWYWx1ZShba2V5cywgdmFsdWVzXSk7XG4gICAgfVxuICAgIC8vLyBVdGlsaXRpZXNcbiAgICBwdXNoKGFyZ3MpIHtcbiAgICAgICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYXJncy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRCbG9jay5wdXNoKGFyZ3MpO1xuICAgIH1cbiAgICBwdXNoVmFsdWUodmFsKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnB1c2godmFsKTtcbiAgICB9XG4gICAgcG9wVmFsdWUoKSB7XG4gICAgICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnBvcCgpO1xuICAgIH1cbn0iXX0=

@@ -31,28 +31,7 @@ import { assert } from "@glimmer/util";

this.named = new DictSet();
this.prelude = [];
this.head = [];
this.blocks = [];
this.hasEval = false;
this.sawElement = false;
this.inParams = false;
}
push(statement) {
if (!this.sawElement) {
if (Statements.isOpenElement(statement)) {
this.sawElement = true;
this.inParams = true;
}
this.prelude.push(statement);
} else if (this.inParams) {
if (Statements.isFlushElement(statement)) {
this.inParams = false;
this.head.push(statement);
} else if (Statements.isInElementHead(statement)) {
this.head.push(statement);
} else {
throw new Error('Compile Error: only parameters allowed before flush-element');
}
} else {
this.statements.push(statement);
}
this.statements.push(statement);
}

@@ -62,5 +41,3 @@ toJSON() {

symbols: this.symbolTable.symbols,
prelude: this.sawElement ? this.prelude : null,
head: this.sawElement ? this.head : null,
statements: this.sawElement ? this.statements : this.prelude,
statements: this.statements,
hasEval: this.hasEval

@@ -67,0 +44,0 @@ };

@@ -60,8 +60,4 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

_this2.named = new DictSet();
_this2.prelude = [];
_this2.head = [];
_this2.blocks = [];
_this2.hasEval = false;
_this2.sawElement = false;
_this2.inParams = false;
return _this2;

@@ -71,20 +67,3 @@ }

TemplateBlock.prototype.push = function push(statement) {
if (!this.sawElement) {
if (Statements.isOpenElement(statement)) {
this.sawElement = true;
this.inParams = true;
}
this.prelude.push(statement);
} else if (this.inParams) {
if (Statements.isFlushElement(statement)) {
this.inParams = false;
this.head.push(statement);
} else if (Statements.isInElementHead(statement)) {
this.head.push(statement);
} else {
throw new Error('Compile Error: only parameters allowed before flush-element');
}
} else {
this.statements.push(statement);
}
this.statements.push(statement);
};

@@ -95,5 +74,3 @@

symbols: this.symbolTable.symbols,
prelude: this.sawElement ? this.prelude : null,
head: this.sawElement ? this.head : null,
statements: this.sawElement ? this.statements : this.prelude,
statements: this.statements,
hasEval: this.hasEval

@@ -426,2 +403,2 @@ };

export default JavaScriptCompiler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbImFzc2VydCIsIlN0YWNrIiwiRGljdFNldCIsIlN0YXRlbWVudHMiLCJPcHMiLCJCbG9jayIsInN0YXRlbWVudHMiLCJwdXNoIiwic3RhdGVtZW50IiwiSW5saW5lQmxvY2siLCJ0YWJsZSIsInRvSlNPTiIsInBhcmFtZXRlcnMiLCJzbG90cyIsIlRlbXBsYXRlQmxvY2siLCJzeW1ib2xUYWJsZSIsInR5cGUiLCJ5aWVsZHMiLCJuYW1lZCIsInByZWx1ZGUiLCJoZWFkIiwiYmxvY2tzIiwiaGFzRXZhbCIsInNhd0VsZW1lbnQiLCJpblBhcmFtcyIsImlzT3BlbkVsZW1lbnQiLCJpc0ZsdXNoRWxlbWVudCIsImlzSW5FbGVtZW50SGVhZCIsIkVycm9yIiwic3ltYm9scyIsIkNvbXBvbmVudEJsb2NrIiwiYXR0cmlidXRlcyIsImFyZ3VtZW50cyIsInBvc2l0aW9uYWxzIiwiaXNBcmd1bWVudCIsImlzQXR0cmlidXRlIiwiaXNNb2RpZmllciIsImFyZ3MiLCJrZXlzIiwibWFwIiwiYXJnIiwidmFsdWVzIiwiVGVtcGxhdGUiLCJtZXRhIiwiYmxvY2siLCJKYXZhU2NyaXB0Q29tcGlsZXIiLCJvcGNvZGVzIiwidGVtcGxhdGUiLCJwcm9jZXNzIiwiY29tcGlsZXIiLCJmb3JFYWNoIiwib3Bjb2RlIiwic3RhcnRCbG9jayIsInByb2dyYW0iLCJlbmRCbG9jayIsInBvcCIsInN0YXJ0UHJvZ3JhbSIsImVuZFByb2dyYW0iLCJ0ZXh0IiwiY29udGVudCIsIlRleHQiLCJhcHBlbmQiLCJ0cnVzdGVkIiwiQXBwZW5kIiwicG9wVmFsdWUiLCJjb21tZW50IiwidmFsdWUiLCJDb21tZW50IiwibW9kaWZpZXIiLCJuYW1lIiwicGFyYW1zIiwiaGFzaCIsIk1vZGlmaWVyIiwiaW52ZXJzZSIsIm9wZW5FbGVtZW50IiwiZWxlbWVudCIsInRhZyIsImluZGV4T2YiLCJzdGFydENvbXBvbmVudCIsImJsb2NrUGFyYW1zIiwibGVuZ3RoIiwiT3BlbkVsZW1lbnQiLCJmbHVzaEVsZW1lbnQiLCJGbHVzaEVsZW1lbnQiLCJjbG9zZUVsZW1lbnQiLCJlbmRDb21wb25lbnQiLCJhdHRycyIsIkNvbXBvbmVudCIsIkNsb3NlRWxlbWVudCIsInN0YXRpY0F0dHIiLCJuYW1lc3BhY2UiLCJTdGF0aWNBdHRyIiwiZHluYW1pY0F0dHIiLCJEeW5hbWljQXR0ciIsInRydXN0aW5nQXR0ciIsIlRydXN0aW5nQXR0ciIsInN0YXRpY0FyZyIsIlN0YXRpY0FyZyIsImR5bmFtaWNBcmciLCJEeW5hbWljQXJnIiwieWllbGQiLCJ0byIsIllpZWxkIiwiZGVidWdnZXIiLCJldmFsSW5mbyIsIkRlYnVnZ2VyIiwiaGFzQmxvY2siLCJwdXNoVmFsdWUiLCJIYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwiSGFzQmxvY2tQYXJhbXMiLCJwYXJ0aWFsIiwiUGFydGlhbCIsImxpdGVyYWwiLCJ1bmRlZmluZWQiLCJVbmRlZmluZWQiLCJ1bmtub3duIiwiVW5rbm93biIsImdldCIsInBhdGgiLCJHZXQiLCJtYXliZUxvY2FsIiwiTWF5YmVMb2NhbCIsImNvbmNhdCIsIkNvbmNhdCIsImhlbHBlciIsIkhlbHBlciIsImNvbXBvbmVudCIsInByZXBhcmVBcnJheSIsInNpemUiLCJpIiwicHJlcGFyZU9iamVjdCIsIkFycmF5IiwiY3VycmVudEJsb2NrIiwidmFsIiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFNBQVNBLE1BQVQsUUFBdUIsZUFBdkI7QUFDQSxTQUFTQyxLQUFULEVBQWdCQyxPQUFoQixRQUF1QyxlQUF2QztBQUNBLFNBQVNDLFVBQVQsRUFBcUJDLEdBQXJCLFFBQWdDLHNCQUFoQztBQUNBLFdBQWFDLEtBQWI7QUFDSSxxQkFBYztBQUFBOztBQUNWLGFBQUtDLFVBQUwsR0FBa0IsRUFBbEI7QUFDSDs7QUFITCxvQkFJSUMsSUFKSixpQkFJU0MsU0FKVCxFQUlvQjtBQUNaLGFBQUtGLFVBQUwsQ0FBZ0JD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YUFBSzhFLFlBQUwsQ0FBa0I5SCxJQUFsQixDQUF1QjhCLElBQXZCO0FBQ0gsSzs7aUNBQ0RzRSxTLHNCQUFVMkIsRyxFQUFLO0FBQ1gsYUFBSzdGLE1BQUwsQ0FBWWxDLElBQVosQ0FBaUIrSCxHQUFqQjtBQUNILEs7O2lDQUNEdEUsUSx1QkFBVztBQUNQaEUsZUFBTyxLQUFLeUMsTUFBTCxDQUFZdUMsTUFBbkIsRUFBMkIsOEJBQTNCO0FBQ0EsZUFBTyxLQUFLdkMsTUFBTCxDQUFZYyxHQUFaLEVBQVA7QUFDSCxLOzs7O3lCQS9La0I7QUFDZixtQkFBYyxLQUFLbEMsTUFBTCxDQUFZa0gsT0FBMUI7QUFDSDs7Ozs7O2VBYmdCMUYsa0IiLCJmaWxlIjoibGliL2phdmFzY3JpcHQtY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGF0ZW1lbnRzLCBPcHMgfSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5leHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMgPSBbXTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3IodGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gICAgY29uc3RydWN0b3Ioc3ltYm9sVGFibGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zeW1ib2xUYWJsZSA9IHN5bWJvbFRhYmxlO1xuICAgICAgICB0aGlzLnR5cGUgPSBcInRlbXBsYXRlXCI7XG4gICAgICAgIHRoaXMueWllbGRzID0gbmV3IERpY3RTZXQoKTtcbiAgICAgICAgdGhpcy5uYW1lZCA9IG5ldyBEaWN0U2V0KCk7XG4gICAgICAgIHRoaXMucHJlbHVkZSA9IFtdO1xuICAgICAgICB0aGlzLmhlYWQgPSBbXTtcbiAgICAgICAgdGhpcy5ibG9ja3MgPSBbXTtcbiAgICAgICAgdGhpcy5oYXNFdmFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2F3RWxlbWVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluUGFyYW1zID0gZmFsc2U7XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5zYXdFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc09wZW5FbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhd0VsZW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5QYXJhbXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmVsdWRlLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZC5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNJbkVsZW1lbnRIZWFkKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWQucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IG9ubHkgcGFyYW1ldGVycyBhbGxvd2VkIGJlZm9yZSBmbHVzaC1lbGVtZW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN5bWJvbHM6IHRoaXMuc3ltYm9sVGFibGUuc3ltYm9scyxcbiAgICAgICAgICAgIHByZWx1ZGU6IHRoaXMuc2F3RWxlbWVudCA/IHRoaXMucHJlbHVkZSA6IG51bGwsXG4gICAgICAgICAgICBoZWFkOiB0aGlzLnNhd0VsZW1lbnQgPyB0aGlzLmhlYWQgOiBudWxsLFxuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zYXdFbGVtZW50ID8gdGhpcy5zdGF0ZW1lbnRzIDogdGhpcy5wcmVsdWRlLFxuICAgICAgICAgICAgaGFzRXZhbDogdGhpcy5oYXNFdmFsXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHRoaXMuYXJndW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuaW5QYXJhbXMgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWxzID0gW107XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXJndW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJndW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0F0dHJpYnV0ZShzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogb25seSBwYXJhbWV0ZXJzIGFsbG93ZWQgYmVmb3JlIGZsdXNoLWVsZW1lbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgICAgICBsZXQga2V5cyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMV0pO1xuICAgICAgICBsZXQgdmFsdWVzID0gYXJncy5tYXAoYXJnID0+IGFyZ1syXSk7XG4gICAgICAgIHJldHVybiBbdGhpcy5hdHRyaWJ1dGVzLCBba2V5cywgdmFsdWVzXSwge1xuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgICB9XTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVGVtcGxhdGUge1xuICAgIGNvbnN0cnVjdG9yKHN5bWJvbHMsIG1ldGEpIHtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5ibG9jayA9IG5ldyBUZW1wbGF0ZUJsb2NrKHN5bWJvbHMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogdGhpcy5ibG9jay50b0pTT04oKSxcbiAgICAgICAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gICAgY29uc3RydWN0b3Iob3Bjb2Rlcywgc3ltYm9scywgbWV0YSkge1xuICAgICAgICB0aGlzLmJsb2NrcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBvcGNvZGVzO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKHN5bWJvbHMsIG1ldGEpO1xuICAgIH1cbiAgICBzdGF0aWMgcHJvY2VzcyhvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKSB7XG4gICAgICAgIGxldCBjb21waWxlciA9IG5ldyBKYXZhU2NyaXB0Q29tcGlsZXIob3Bjb2Rlcywgc3ltYm9scywgbWV0YSk7XG4gICAgICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gICAgfVxuICAgIGdldCBjdXJyZW50QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja3MuY3VycmVudCwgJ0V4cGVjdGVkIGEgYmxvY2sgb24gdGhlIHN0YWNrJyk7XG4gICAgfVxuICAgIHByb2Nlc3MoKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gICAgfVxuICAgIC8vLyBOZXN0aW5nXG4gICAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICAgICAgbGV0IGJsb2NrID0gbmV3IElubGluZUJsb2NrKHByb2dyYW1bJ3N5bWJvbHMnXSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICAgIH1cbiAgICBlbmRCbG9jaygpIHtcbiAgICAgICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGJsb2NrID0gYmxvY2tzLnBvcCgpO1xuICAgICAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9jay50b0pTT04oKSk7XG4gICAgfVxuICAgIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaCh0aGlzLnRlbXBsYXRlLmJsb2NrKTtcbiAgICB9XG4gICAgZW5kUHJvZ3JhbSgpIHt9XG4gICAgLy8vIFN0YXRlbWVudHNcbiAgICB0ZXh0KGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuVGV4dCwgY29udGVudF0pO1xuICAgIH1cbiAgICBhcHBlbmQodHJ1c3RlZCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5BcHBlbmQsIHRoaXMucG9wVmFsdWUoKSwgdHJ1c3RlZF0pO1xuICAgIH1cbiAgICBjb21tZW50KHZhbHVlKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkNvbW1lbnQsIHZhbHVlXSk7XG4gICAgfVxuICAgIG1vZGlmaWVyKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLk1vZGlmaWVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgICB9XG4gICAgYmxvY2sobmFtZSwgdGVtcGxhdGUsIGludmVyc2UpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBibG9ja3MgPSB0aGlzLnRlbXBsYXRlLmJsb2NrLmJsb2NrcztcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiB0ZW1wbGF0ZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW3RlbXBsYXRlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG4gICAgICAgIGFzc2VydCh0eXBlb2YgaW52ZXJzZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW2ludmVyc2VdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuQmxvY2ssIG5hbWUsIHBhcmFtcywgaGFzaCwgYmxvY2tzW3RlbXBsYXRlXSwgYmxvY2tzW2ludmVyc2VdXSk7XG4gICAgfVxuICAgIG9wZW5FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuICAgICAgICBpZiAodGFnLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ10pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZsdXNoRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgfVxuICAgIGNsb3NlRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcbiAgICAgICAgaWYgKHRhZy5pbmRleE9mKCctJykgIT09IC0xKSB7XG4gICAgICAgICAgICBsZXQgW2F0dHJzLCBhcmdzLCBibG9ja10gPSB0aGlzLmVuZENvbXBvbmVudCgpO1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tcG9uZW50LCB0YWcsIGF0dHJzLCBhcmdzLCBibG9ja10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIHRydXN0aW5nQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5UcnVzdGluZ0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgc3RhdGljQXJnKG5hbWUpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIGR5bmFtaWNBcmcobmFtZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIHlpZWxkKHRvKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLllpZWxkLCB0bywgcGFyYW1zXSk7XG4gICAgfVxuICAgIGRlYnVnZ2VyKGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkRlYnVnZ2VyLCBldmFsSW5mb10pO1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICAgIH1cbiAgICBoYXNCbG9jayhuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGFzQmxvY2ssIG5hbWVdKTtcbiAgICB9XG4gICAgaGFzQmxvY2tQYXJhbXMobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkhhc0Jsb2NrUGFyYW1zLCBuYW1lXSk7XG4gICAgfVxuICAgIHBhcnRpYWwoZXZhbEluZm8pIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuUGFydGlhbCwgcGFyYW1zWzBdLCBldmFsSW5mb10pO1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICAgIH1cbiAgICAvLy8gRXhwcmVzc2lvbnNcbiAgICBsaXRlcmFsKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLlVuZGVmaW5lZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVua25vd24obmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLlVua25vd24sIG5hbWVdKTtcbiAgICB9XG4gICAgZ2V0KGhlYWQsIHBhdGgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5HZXQsIGhlYWQsIHBhdGhdKTtcbiAgICB9XG4gICAgbWF5YmVMb2NhbChwYXRoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuTWF5YmVMb2NhbCwgcGF0aF0pO1xuICAgIH1cbiAgICBjb25jYXQoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuQ29uY2F0LCB0aGlzLnBvcFZhbHVlKCldKTtcbiAgICB9XG4gICAgaGVscGVyKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGVscGVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgICB9XG4gICAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuICAgIHN0YXJ0Q29tcG9uZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCbG9jayhlbGVtZW50WydzeW1ib2xzJ10pO1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIGVuZENvbXBvbmVudCgpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuYmxvY2tzLnBvcCgpO1xuICAgICAgICBhc3NlcnQoY29tcG9uZW50IGluc3RhbmNlb2YgQ29tcG9uZW50QmxvY2ssIFwiQ29tcGlsZXIgYnVnOiBlbmRDb21wb25lbnQoKSBzaG91bGQgZW5kIGEgY29tcG9uZW50XCIpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50LnRvSlNPTigpO1xuICAgIH1cbiAgICBwcmVwYXJlQXJyYXkoc2l6ZSkge1xuICAgICAgICBsZXQgdmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKHZhbHVlcyk7XG4gICAgfVxuICAgIHByZXBhcmVPYmplY3Qoc2l6ZSkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuICAgICAgICBsZXQga2V5cyA9IG5ldyBBcnJheShzaXplKTtcbiAgICAgICAgbGV0IHZhbHVlcyA9IG5ldyBBcnJheShzaXplKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIGtleXNbaV0gPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW2tleXMsIHZhbHVlc10pO1xuICAgIH1cbiAgICAvLy8gVXRpbGl0aWVzXG4gICAgcHVzaChhcmdzKSB7XG4gICAgICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGFyZ3MucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50QmxvY2sucHVzaChhcmdzKTtcbiAgICB9XG4gICAgcHVzaFZhbHVlKHZhbCkge1xuICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gICAgfVxuICAgIHBvcFZhbHVlKCkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIl0sIm5hbWVzIjpbImFzc2VydCIsIlN0YWNrIiwiRGljdFNldCIsIlN0YXRlbWVudHMiLCJPcHMiLCJCbG9jayIsInN0YXRlbWVudHMiLCJwdXNoIiwic3RhdGVtZW50IiwiSW5saW5lQmxvY2siLCJ0YWJsZSIsInRvSlNPTiIsInBhcmFtZXRlcnMiLCJzbG90cyIsIlRlbXBsYXRlQmxvY2siLCJzeW1ib2xUYWJsZSIsInR5cGUiLCJ5aWVsZHMiLCJuYW1lZCIsImJsb2NrcyIsImhhc0V2YWwiLCJzeW1ib2xzIiwiQ29tcG9uZW50QmxvY2siLCJhdHRyaWJ1dGVzIiwiYXJndW1lbnRzIiwiaW5QYXJhbXMiLCJwb3NpdGlvbmFscyIsImlzRmx1c2hFbGVtZW50IiwiaXNBcmd1bWVudCIsImlzQXR0cmlidXRlIiwiaXNNb2RpZmllciIsIkVycm9yIiwiYXJncyIsImtleXMiLCJtYXAiLCJhcmciLCJ2YWx1ZXMiLCJUZW1wbGF0ZSIsIm1ldGEiLCJibG9jayIsIkphdmFTY3JpcHRDb21waWxlciIsIm9wY29kZXMiLCJ0ZW1wbGF0ZSIsInByb2Nlc3MiLCJjb21waWxlciIsImZvckVhY2giLCJvcGNvZGUiLCJzdGFydEJsb2NrIiwicHJvZ3JhbSIsImVuZEJsb2NrIiwicG9wIiwic3RhcnRQcm9ncmFtIiwiZW5kUHJvZ3JhbSIsInRleHQiLCJjb250ZW50IiwiVGV4dCIsImFwcGVuZCIsInRydXN0ZWQiLCJBcHBlbmQiLCJwb3BWYWx1ZSIsImNvbW1lbnQiLCJ2YWx1ZSIsIkNvbW1lbnQiLCJtb2RpZmllciIsIm5hbWUiLCJwYXJhbXMiLCJoYXNoIiwiTW9kaWZpZXIiLCJpbnZlcnNlIiwib3BlbkVsZW1lbnQiLCJlbGVtZW50IiwidGFnIiwiaW5kZXhPZiIsInN0YXJ0Q29tcG9uZW50IiwiYmxvY2tQYXJhbXMiLCJsZW5ndGgiLCJPcGVuRWxlbWVudCIsImZsdXNoRWxlbWVudCIsIkZsdXNoRWxlbWVudCIsImNsb3NlRWxlbWVudCIsImVuZENvbXBvbmVudCIsImF0dHJzIiwiQ29tcG9uZW50IiwiQ2xvc2VFbGVtZW50Iiwic3RhdGljQXR0ciIsIm5hbWVzcGFjZSIsIlN0YXRpY0F0dHIiLCJkeW5hbWljQXR0ciIsIkR5bmFtaWNBdHRyIiwidHJ1c3RpbmdBdHRyIiwiVHJ1c3RpbmdBdHRyIiwic3RhdGljQXJnIiwiU3RhdGljQXJnIiwiZHluYW1pY0FyZyIsIkR5bmFtaWNBcmciLCJ5aWVsZCIsInRvIiwiWWllbGQiLCJkZWJ1Z2dlciIsImV2YWxJbmZvIiwiRGVidWdnZXIiLCJoYXNCbG9jayIsInB1c2hWYWx1ZSIsIkhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJIYXNCbG9ja1BhcmFtcyIsInBhcnRpYWwiLCJQYXJ0aWFsIiwibGl0ZXJhbCIsInVuZGVmaW5lZCIsIlVuZGVmaW5lZCIsInVua25vd24iLCJVbmtub3duIiwiZ2V0IiwiaGVhZCIsInBhdGgiLCJHZXQiLCJtYXliZUxvY2FsIiwiTWF5YmVMb2NhbCIsImNvbmNhdCIsIkNvbmNhdCIsImhlbHBlciIsIkhlbHBlciIsImNvbXBvbmVudCIsInByZXBhcmVBcnJheSIsInNpemUiLCJpIiwicHJlcGFyZU9iamVjdCIsIkFycmF5IiwiY3VycmVudEJsb2NrIiwidmFsIiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFNBQVNBLE1BQVQsUUFBdUIsZUFBdkI7QUFDQSxTQUFTQyxLQUFULEVBQWdCQyxPQUFoQixRQUF1QyxlQUF2QztBQUNBLFNBQVNDLFVBQVQsRUFBcUJDLEdBQXJCLFFBQWdDLHNCQUFoQztBQUNBLFdBQWFDLEtBQWI7QUFDSSxxQkFBYztBQUFBOztBQUNWLGFBQUtDLFVBQUwsR0FBa0IsRUFBbEI7QUFDSDs7QUFITCxvQkFJSUMsSUFKSixpQkFJU0MsU0FKVCxFQUlvQjtBQUNaLGFBQUtGLFVBQUwsQ0FBZ0JDLElBQWhCLENBQXFCQyxTQUFyQjtBQUNILEtBTkw7O0FBQUE7QUFBQTtBQVFBLFdBQWFDLFdBQWI7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Q0FBbkIsTUFBMEIsSUFBakMsRUFBdUM7QUFDbkMzQyxpQkFBS2tCLEdBQUw7QUFDSDtBQUNELGFBQUsrRSxZQUFMLENBQWtCMUgsSUFBbEIsQ0FBdUJ5QixJQUF2QjtBQUNILEs7O2lDQUNEc0UsUyxzQkFBVTRCLEcsRUFBSztBQUNYLGFBQUs5RixNQUFMLENBQVk3QixJQUFaLENBQWlCMkgsR0FBakI7QUFDSCxLOztpQ0FDRHZFLFEsdUJBQVc7QUFDUDNELGVBQU8sS0FBS29DLE1BQUwsQ0FBWXVDLE1BQW5CLEVBQTJCLDhCQUEzQjtBQUNBLGVBQU8sS0FBS3ZDLE1BQUwsQ0FBWWMsR0FBWixFQUFQO0FBQ0gsSzs7Ozt5QkEvS2tCO0FBQ2YsbUJBQWMsS0FBSy9CLE1BQUwsQ0FBWWdILE9BQTFCO0FBQ0g7Ozs7OztlQWJnQjNGLGtCIiwiZmlsZSI6ImxpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IFN0YWNrLCBEaWN0U2V0LCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhdGVtZW50cywgT3BzIH0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuZXhwb3J0IGNsYXNzIEJsb2NrIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzID0gW107XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHN5bWJvbFRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3ltYm9sVGFibGUgPSBzeW1ib2xUYWJsZTtcbiAgICAgICAgdGhpcy50eXBlID0gXCJ0ZW1wbGF0ZVwiO1xuICAgICAgICB0aGlzLnlpZWxkcyA9IG5ldyBEaWN0U2V0KCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgRGljdFNldCgpO1xuICAgICAgICB0aGlzLmJsb2NrcyA9IFtdO1xuICAgICAgICB0aGlzLmhhc0V2YWwgPSBmYWxzZTtcbiAgICB9XG4gICAgcHVzaChzdGF0ZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3ltYm9sczogdGhpcy5zeW1ib2xUYWJsZS5zeW1ib2xzLFxuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgaGFzRXZhbDogdGhpcy5oYXNFdmFsXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICAgIGNvbnN0cnVjdG9yKHRhYmxlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHRoaXMuYXJndW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuaW5QYXJhbXMgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWxzID0gW107XG4gICAgfVxuICAgIHB1c2goc3RhdGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXJndW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJndW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0F0dHJpYnV0ZShzdGF0ZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogb25seSBwYXJhbWV0ZXJzIGFsbG93ZWQgYmVmb3JlIGZsdXNoLWVsZW1lbnQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICBsZXQgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgICAgICBsZXQga2V5cyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMV0pO1xuICAgICAgICBsZXQgdmFsdWVzID0gYXJncy5tYXAoYXJnID0+IGFyZ1syXSk7XG4gICAgICAgIHJldHVybiBbdGhpcy5hdHRyaWJ1dGVzLCBba2V5cywgdmFsdWVzXSwge1xuICAgICAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgICB9XTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVGVtcGxhdGUge1xuICAgIGNvbnN0cnVjdG9yKHN5bWJvbHMsIG1ldGEpIHtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5ibG9jayA9IG5ldyBUZW1wbGF0ZUJsb2NrKHN5bWJvbHMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBibG9jazogdGhpcy5ibG9jay50b0pTT04oKSxcbiAgICAgICAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gICAgY29uc3RydWN0b3Iob3Bjb2Rlcywgc3ltYm9scywgbWV0YSkge1xuICAgICAgICB0aGlzLmJsb2NrcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLm9wY29kZXMgPSBvcGNvZGVzO1xuICAgICAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKHN5bWJvbHMsIG1ldGEpO1xuICAgIH1cbiAgICBzdGF0aWMgcHJvY2VzcyhvcGNvZGVzLCBzeW1ib2xzLCBtZXRhKSB7XG4gICAgICAgIGxldCBjb21waWxlciA9IG5ldyBKYXZhU2NyaXB0Q29tcGlsZXIob3Bjb2Rlcywgc3ltYm9scywgbWV0YSk7XG4gICAgICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gICAgfVxuICAgIGdldCBjdXJyZW50QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja3MuY3VycmVudCwgJ0V4cGVjdGVkIGEgYmxvY2sgb24gdGhlIHN0YWNrJyk7XG4gICAgfVxuICAgIHByb2Nlc3MoKSB7XG4gICAgICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gICAgfVxuICAgIC8vLyBOZXN0aW5nXG4gICAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICAgICAgbGV0IGJsb2NrID0gbmV3IElubGluZUJsb2NrKHByb2dyYW1bJ3N5bWJvbHMnXSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICAgIH1cbiAgICBlbmRCbG9jaygpIHtcbiAgICAgICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGJsb2NrID0gYmxvY2tzLnBvcCgpO1xuICAgICAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9jay50b0pTT04oKSk7XG4gICAgfVxuICAgIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICAgICAgdGhpcy5ibG9ja3MucHVzaCh0aGlzLnRlbXBsYXRlLmJsb2NrKTtcbiAgICB9XG4gICAgZW5kUHJvZ3JhbSgpIHt9XG4gICAgLy8vIFN0YXRlbWVudHNcbiAgICB0ZXh0KGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuVGV4dCwgY29udGVudF0pO1xuICAgIH1cbiAgICBhcHBlbmQodHJ1c3RlZCkge1xuICAgICAgICB0aGlzLnB1c2goW09wcy5BcHBlbmQsIHRoaXMucG9wVmFsdWUoKSwgdHJ1c3RlZF0pO1xuICAgIH1cbiAgICBjb21tZW50KHZhbHVlKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkNvbW1lbnQsIHZhbHVlXSk7XG4gICAgfVxuICAgIG1vZGlmaWVyKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLk1vZGlmaWVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgICB9XG4gICAgYmxvY2sobmFtZSwgdGVtcGxhdGUsIGludmVyc2UpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIGxldCBibG9ja3MgPSB0aGlzLnRlbXBsYXRlLmJsb2NrLmJsb2NrcztcbiAgICAgICAgYXNzZXJ0KHR5cGVvZiB0ZW1wbGF0ZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW3RlbXBsYXRlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG4gICAgICAgIGFzc2VydCh0eXBlb2YgaW52ZXJzZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW2ludmVyc2VdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuQmxvY2ssIG5hbWUsIHBhcmFtcywgaGFzaCwgYmxvY2tzW3RlbXBsYXRlXSwgYmxvY2tzW2ludmVyc2VdXSk7XG4gICAgfVxuICAgIG9wZW5FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuICAgICAgICBpZiAodGFnLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb21wb25lbnQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ10pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZsdXNoRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gICAgfVxuICAgIGNsb3NlRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcbiAgICAgICAgaWYgKHRhZy5pbmRleE9mKCctJykgIT09IC0xKSB7XG4gICAgICAgICAgICBsZXQgW2F0dHJzLCBhcmdzLCBibG9ja10gPSB0aGlzLmVuZENvbXBvbmVudCgpO1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tcG9uZW50LCB0YWcsIGF0dHJzLCBhcmdzLCBibG9ja10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyKG5hbWUsIG5hbWVzcGFjZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gICAgfVxuICAgIHRydXN0aW5nQXR0cihuYW1lLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5UcnVzdGluZ0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgICB9XG4gICAgc3RhdGljQXJnKG5hbWUpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZSgpO1xuICAgICAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIGR5bmFtaWNBcmcobmFtZSkge1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gICAgfVxuICAgIHlpZWxkKHRvKSB7XG4gICAgICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLllpZWxkLCB0bywgcGFyYW1zXSk7XG4gICAgfVxuICAgIGRlYnVnZ2VyKGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaChbT3BzLkRlYnVnZ2VyLCBldmFsSW5mb10pO1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICAgIH1cbiAgICBoYXNCbG9jayhuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGFzQmxvY2ssIG5hbWVdKTtcbiAgICB9XG4gICAgaGFzQmxvY2tQYXJhbXMobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLkhhc0Jsb2NrUGFyYW1zLCBuYW1lXSk7XG4gICAgfVxuICAgIHBhcnRpYWwoZXZhbEluZm8pIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgdGhpcy5wdXNoKFtPcHMuUGFydGlhbCwgcGFyYW1zWzBdLCBldmFsSW5mb10pO1xuICAgICAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICAgIH1cbiAgICAvLy8gRXhwcmVzc2lvbnNcbiAgICBsaXRlcmFsKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLlVuZGVmaW5lZF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wdXNoVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVua25vd24obmFtZSkge1xuICAgICAgICB0aGlzLnB1c2hWYWx1ZShbT3BzLlVua25vd24sIG5hbWVdKTtcbiAgICB9XG4gICAgZ2V0KGhlYWQsIHBhdGgpIHtcbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW09wcy5HZXQsIGhlYWQsIHBhdGhdKTtcbiAgICB9XG4gICAgbWF5YmVMb2NhbChwYXRoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuTWF5YmVMb2NhbCwgcGF0aF0pO1xuICAgIH1cbiAgICBjb25jYXQoKSB7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuQ29uY2F0LCB0aGlzLnBvcFZhbHVlKCldKTtcbiAgICB9XG4gICAgaGVscGVyKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWUoKTtcbiAgICAgICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKFtPcHMuSGVscGVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgICB9XG4gICAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuICAgIHN0YXJ0Q29tcG9uZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCbG9jayhlbGVtZW50WydzeW1ib2xzJ10pO1xuICAgICAgICB0aGlzLmJsb2Nrcy5wdXNoKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIGVuZENvbXBvbmVudCgpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuYmxvY2tzLnBvcCgpO1xuICAgICAgICBhc3NlcnQoY29tcG9uZW50IGluc3RhbmNlb2YgQ29tcG9uZW50QmxvY2ssIFwiQ29tcGlsZXIgYnVnOiBlbmRDb21wb25lbnQoKSBzaG91bGQgZW5kIGEgY29tcG9uZW50XCIpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50LnRvSlNPTigpO1xuICAgIH1cbiAgICBwcmVwYXJlQXJyYXkoc2l6ZSkge1xuICAgICAgICBsZXQgdmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaFZhbHVlKHZhbHVlcyk7XG4gICAgfVxuICAgIHByZXBhcmVPYmplY3Qoc2l6ZSkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuICAgICAgICBsZXQga2V5cyA9IG5ldyBBcnJheShzaXplKTtcbiAgICAgICAgbGV0IHZhbHVlcyA9IG5ldyBBcnJheShzaXplKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIGtleXNbaV0gPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoVmFsdWUoW2tleXMsIHZhbHVlc10pO1xuICAgIH1cbiAgICAvLy8gVXRpbGl0aWVzXG4gICAgcHVzaChhcmdzKSB7XG4gICAgICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGFyZ3MucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50QmxvY2sucHVzaChhcmdzKTtcbiAgICB9XG4gICAgcHVzaFZhbHVlKHZhbCkge1xuICAgICAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gICAgfVxuICAgIHBvcFZhbHVlKCkge1xuICAgICAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKTtcbiAgICB9XG59Il19

@@ -26,8 +26,4 @@ import * as WireFormat from '@glimmer/wire-format';

named: any;
prelude: Statement[];
head: Statements.ElementHead[];
blocks: WireFormat.SerializedInlineBlock[];
hasEval: boolean;
private sawElement;
private inParams;
constructor(symbolTable: ProgramSymbolTable);

@@ -34,0 +30,0 @@ push(statement: Statement): void;

10

package.json
{
"name": "@glimmer/compiler",
"version": "0.23.0-alpha.14",
"version": "0.23.0-alpha.15",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/compiler",
"dependencies": {
"@glimmer/syntax": "^0.23.0-alpha.14",
"@glimmer/util": "^0.23.0-alpha.14",
"@glimmer/wire-format": "^0.23.0-alpha.14",
"@glimmer/interfaces": "^0.23.0-alpha.14",
"@glimmer/syntax": "^0.23.0-alpha.15",
"@glimmer/util": "^0.23.0-alpha.15",
"@glimmer/wire-format": "^0.23.0-alpha.15",
"@glimmer/interfaces": "^0.23.0-alpha.15",
"simple-html-tokenizer": "^0.3.0"

@@ -11,0 +11,0 @@ },

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