Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@glimmer/compiler

Package Overview
Dependencies
Maintainers
12
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.76.0 to 0.77.0

8

dist/commonjs/es2017/index.js

@@ -6,2 +6,8 @@ "use strict";

});
Object.defineProperty(exports, "defaultId", {
enumerable: true,
get: function () {
return _compiler.defaultId;
}
});
Object.defineProperty(exports, "precompile", {

@@ -75,2 +81,2 @@ enumerable: true,

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQVlBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcHJlY29tcGlsZSwgcHJlY29tcGlsZUpTT04sIFByZWNvbXBpbGVPcHRpb25zIH0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuZXhwb3J0IHtcbiAgUHJvZ3JhbVN5bWJvbHMsXG4gIGJ1aWxkU3RhdGVtZW50LFxuICBidWlsZFN0YXRlbWVudHMsXG4gIHMsXG4gIGMsXG4gIHVuaWNvZGUsXG4gIE5FV0xJTkUsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvYnVpbGRlcic7XG5leHBvcnQgeyBCdWlsZGVyU3RhdGVtZW50LCBCdWlsZGVyIH0gZnJvbSAnLi9saWIvYnVpbGRlci9idWlsZGVyLWludGVyZmFjZSc7XG5cbi8vIGV4cG9ydGVkIG9ubHkgZm9yIHRlc3RzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFdpcmVGb3JtYXREZWJ1Z2dlciB9IGZyb20gJy4vbGliL3dpcmUtZm9ybWF0LWRlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQVlBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdElkLCBwcmVjb21waWxlLCBwcmVjb21waWxlSlNPTiwgUHJlY29tcGlsZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9jb21waWxlcic7XG5leHBvcnQge1xuICBQcm9ncmFtU3ltYm9scyxcbiAgYnVpbGRTdGF0ZW1lbnQsXG4gIGJ1aWxkU3RhdGVtZW50cyxcbiAgcyxcbiAgYyxcbiAgdW5pY29kZSxcbiAgTkVXTElORSxcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9idWlsZGVyJztcbmV4cG9ydCB7IEJ1aWxkZXJTdGF0ZW1lbnQsIEJ1aWxkZXIgfSBmcm9tICcuL2xpYi9idWlsZGVyL2J1aWxkZXItaW50ZXJmYWNlJztcblxuLy8gZXhwb3J0ZWQgb25seSBmb3IgdGVzdHNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2lyZUZvcm1hdERlYnVnZ2VyIH0gZnJvbSAnLi9saWIvd2lyZS1mb3JtYXQtZGVidWcnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -8,2 +8,3 @@ "use strict";

exports.precompile = precompile;
exports.defaultId = void 0;

@@ -20,2 +21,30 @@ var _syntax = require("@glimmer/syntax");

const defaultId = (() => {
let req = typeof module === 'object' && typeof module.require === 'function' ? module.require : require;
if (req) {
try {
const crypto = req('crypto');
let idFn = src => {
let hash = crypto.createHash('sha1');
hash.update(src, 'utf8'); // trim to 6 bytes of data (2^48 - 1)
return hash.digest('base64').substring(0, 8);
};
idFn('test');
return idFn;
} catch (e) {}
}
return function idFn() {
return null;
};
})();
exports.defaultId = defaultId;
const defaultOptions = {
id: defaultId
};
/*

@@ -35,3 +64,4 @@ * Compile a string into a template javascript string.

*/
function precompileJSON(string, options = {}) {
function precompileJSON(string, options = defaultOptions) {
var _a, _b;

@@ -76,3 +106,3 @@

function precompile(source, options = {}) {
function precompile(source, options = defaultOptions) {
var _a, _b;

@@ -82,4 +112,6 @@

let moduleName = (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName;
let idFn = options.id || defaultId;
let blockJSON = JSON.stringify(block);
let templateJSONObject = {
id: idFn(JSON.stringify(options.meta) + blockJSON),
block: blockJSON,

@@ -109,2 +141,2 @@ moduleName: moduleName !== null && moduleName !== void 0 ? moduleName : '(unknown template module)',

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQU1BOztBQUNBOztBQUVBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxjQUFBLENBQUEsTUFBQSxFQUVKLE9BQUEsR0FGSSxFQUFBLEVBRTJCOzs7QUFFL0IsTUFBSSxNQUFNLEdBQUcsSUFBQSxjQUFBLENBQUEsTUFBQSxFQUFpQixDQUFBLEVBQUEsR0FBRSxPQUFPLENBQVQsSUFBQSxNQUFBLElBQUEsSUFBYyxFQUFBLEtBQUEsS0FBZCxDQUFBLEdBQWMsS0FBZCxDQUFBLEdBQWMsRUFBQSxDQUE1QyxVQUFhLENBQWI7QUFDQSxNQUFJLENBQUEsR0FBQSxFQUFBLE1BQUEsSUFBZ0IsdUJBQVMsTUFBVCxFQUFwQixPQUFvQixDQUFwQjtBQUNBLE1BQUksS0FBSyxHQUFHLG9CQUFLLE1BQUwsRUFBSyxHQUFMLEVBQWlCLENBQUEsRUFBQSxHQUFFLE9BQU8sQ0FBVCxVQUFBLE1BQUEsSUFBQSxJQUFvQixFQUFBLEtBQUEsS0FBcEIsQ0FBQSxHQUFBLEVBQUEsR0FBakIsS0FBQSxFQUFBLEtBQUEsQ0FBdUQsT0FBRCxJQUFZO0FBQzVFLFdBQU8sbUJBQVAsT0FBTyxDQUFQO0FBREYsR0FBWSxDQUFaOztBQUlBLE1BQUE7QUFBQTtBQUFBLElBQXNCO0FBQ3BCLHlCQUFBLEdBQUEsQ0FBQSxhQUFBLEVBQUEsS0FBQTtBQUNEOztBQUVELE1BQUksS0FBSyxDQUFULElBQUEsRUFBZ0I7QUFDZCxXQUFPLENBQUMsS0FBSyxDQUFOLEtBQUEsRUFBUCxNQUFPLENBQVA7QUFERixHQUFBLE1BRU87QUFDTCxVQUFNLEtBQUssQ0FBWCxNQUFBO0FBQ0Q7RUFHSDtBQUNBOzs7QUFDQSxNQUFNLGlCQUFpQixHQUF2QixzQ0FBQTtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7QUFjTSxTQUFBLFVBQUEsQ0FBQSxNQUFBLEVBQXFDLE9BQUEsR0FBckMsRUFBQSxFQUFvRTs7O0FBQ3hFLE1BQUksQ0FBQSxLQUFBLEVBQUEsVUFBQSxJQUFzQixjQUFjLENBQUEsTUFBQSxFQUF4QyxPQUF3QyxDQUF4QztBQUVBLE1BQUksVUFBVSxHQUFBLENBQUEsRUFBQSxHQUFHLE9BQU8sQ0FBVixJQUFBLE1BQUEsSUFBQSxJQUFlLEVBQUEsS0FBQSxLQUFmLENBQUEsR0FBZSxLQUFmLENBQUEsR0FBZSxFQUFBLENBQTdCLFVBQUE7QUFDQSxNQUFJLFNBQVMsR0FBRyxJQUFJLENBQUosU0FBQSxDQUFoQixLQUFnQixDQUFoQjtBQUNBLE1BQUksa0JBQWtCLEdBQW9DO0FBQ3hELElBQUEsS0FBSyxFQURtRCxTQUFBO0FBRXhELElBQUEsVUFBVSxFQUFFLFVBQVUsS0FBVixJQUFBLElBQUEsVUFBVSxLQUFBLEtBQVYsQ0FBQSxHQUFBLFVBQUEsR0FGNEMsMkJBQUE7QUFHeEQ7QUFDQTtBQUNBLElBQUEsS0FBSyxFQUxtRCxpQkFBQTtBQU14RCxJQUFBLFlBQVksRUFBQSxDQUFBLEVBQUEsR0FBRSxPQUFPLENBQVQsVUFBQSxNQUFBLElBQUEsSUFBb0IsRUFBQSxLQUFBLEtBQXBCLENBQUEsR0FBQSxFQUFBLEdBQXdCO0FBTm9CLEdBQTFEOztBQVNBLE1BQUksQ0FBQyxPQUFPLENBQVosVUFBQSxFQUF5QjtBQUN2QixXQUFPLGtCQUFrQixDQUF6QixLQUFBO0FBZnNFLEdBQUEsQ0FrQnhFOzs7QUFDQSxNQUFJLFdBQVcsR0FBRyxJQUFJLENBQUosU0FBQSxDQUFsQixrQkFBa0IsQ0FBbEI7O0FBRUEsTUFBSSxPQUFPLENBQVAsVUFBQSxJQUFzQixVQUFVLENBQVYsTUFBQSxHQUExQixDQUFBLEVBQWlEO0FBQy9DLFFBQUksT0FBTyxHQUFHLFFBQVEsVUFBVSxDQUFWLElBQUEsQ0FBQSxHQUFBLENBQXRCLEdBQUE7QUFFQSxJQUFBLFdBQVcsR0FBRyxXQUFXLENBQVgsT0FBQSxDQUFvQixJQUFJLGlCQUF4QixHQUFBLEVBQWQsT0FBYyxDQUFkO0FBSEYsR0FBQSxNQUlPO0FBQ0wsSUFBQSxXQUFXLEdBQUcsV0FBVyxDQUFYLE9BQUEsQ0FBb0IsSUFBSSxpQkFBeEIsR0FBQSxFQUFkLE1BQWMsQ0FBZDtBQUNEOztBQUVELFNBQUEsV0FBQTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssXG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2ssXG4gIFRlbXBsYXRlSmF2YXNjcmlwdCxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMT0NBTF9TSE9VTERfTE9HIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgbm9ybWFsaXplLCBQcmVjb21waWxlT3B0aW9ucywgU291cmNlIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IExPQ0FMX0xPR0dFUiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgcGFzczAgZnJvbSAnLi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2luZGV4JztcbmltcG9ydCB7IHZpc2l0IGFzIHBhc3MyIH0gZnJvbSAnLi9wYXNzZXMvMi1lbmNvZGluZy9pbmRleCc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGVKU09OKFxuICBzdHJpbmc6IHN0cmluZyxcbiAgb3B0aW9uczogUHJlY29tcGlsZU9wdGlvbnMgPSB7fVxuKTogW2Jsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgdXNlZExvY2Fsczogc3RyaW5nW11dIHtcbiAgbGV0IHNvdXJjZSA9IG5ldyBTb3VyY2Uoc3RyaW5nLCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuICBsZXQgW2FzdCwgbG9jYWxzXSA9IG5vcm1hbGl6ZShzb3VyY2UsIG9wdGlvbnMpO1xuICBsZXQgYmxvY2sgPSBwYXNzMChzb3VyY2UsIGFzdCwgb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlKS5tYXBPaygocGFzczJJbikgPT4ge1xuICAgIHJldHVybiBwYXNzMihwYXNzMkluKTtcbiAgfSk7XG5cbiAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICBMT0NBTF9MT0dHRVIubG9nKGBUZW1wbGF0ZSAtPmAsIGJsb2NrKTtcbiAgfVxuXG4gIGlmIChibG9jay5pc09rKSB7XG4gICAgcmV0dXJuIFtibG9jay52YWx1ZSwgbG9jYWxzXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBibG9jay5yZWFzb247XG4gIH1cbn1cblxuLy8gVVVJRCB1c2VkIGFzIGEgdW5pcXVlIHBsYWNlaG9sZGVyIGZvciBwbGFjaW5nIGEgc25pcHBldCBvZiBKUyBjb2RlIGludG9cbi8vIHRoZSBvdGhlcndpc2UgSlNPTiBzdHJpbmdpZmllZCB2YWx1ZSBiZWxvdy5cbmNvbnN0IFNDT1BFX1BMQUNFSE9MREVSID0gJzc5NmQyNGU2LTI0NTAtNGZiMC04Y2RmLWI2NTYzOGI1ZWY3MCc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge30pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgW2Jsb2NrLCB1c2VkTG9jYWxzXSA9IHByZWNvbXBpbGVKU09OKHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgbGV0IG1vZHVsZU5hbWUgPSBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWU7XG4gIGxldCBibG9ja0pTT04gPSBKU09OLnN0cmluZ2lmeShibG9jayk7XG4gIGxldCB0ZW1wbGF0ZUpTT05PYmplY3Q6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgPSB7XG4gICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICBtb2R1bGVOYW1lOiBtb2R1bGVOYW1lID8/ICcodW5rbm93biB0ZW1wbGF0ZSBtb2R1bGUpJyxcbiAgICAvLyBseWluZyB0byB0aGUgdHlwZSBjaGVja2VyIGhlcmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0b1xuICAgIC8vIHJlcGxhY2UgaXQganVzdCBiZWxvdywgYWZ0ZXIgc3RyaW5naWZpY2F0aW9uXG4gICAgc2NvcGU6IChTQ09QRV9QTEFDRUhPTERFUiBhcyB1bmtub3duKSBhcyBudWxsLFxuICAgIGlzU3RyaWN0TW9kZTogb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlLFxuICB9O1xuXG4gIGlmICghb3B0aW9ucy5zdHJpY3RNb2RlKSB7XG4gICAgZGVsZXRlIHRlbXBsYXRlSlNPTk9iamVjdC5zY29wZTtcbiAgfVxuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICBsZXQgc3RyaW5naWZpZWQgPSBKU09OLnN0cmluZ2lmeSh0ZW1wbGF0ZUpTT05PYmplY3QpO1xuXG4gIGlmIChvcHRpb25zLnN0cmljdE1vZGUgJiYgdXNlZExvY2Fscy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHNjb3BlRm4gPSBgKCk9Plske3VzZWRMb2NhbHMuam9pbignLCcpfV1gO1xuXG4gICAgc3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZC5yZXBsYWNlKGBcIiR7U0NPUEVfUExBQ0VIT0xERVJ9XCJgLCBzY29wZUZuKTtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmdpZmllZCA9IHN0cmluZ2lmaWVkLnJlcGxhY2UoYFwiJHtTQ09QRV9QTEFDRUhPTERFUn1cImAsICdudWxsJyk7XG4gIH1cblxuICByZXR1cm4gc3RyaW5naWZpZWQ7XG59XG5cbmV4cG9ydCB7IFByZWNvbXBpbGVPcHRpb25zIH07XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFNQTs7QUFDQTs7QUFFQTs7QUFDQTs7OztBQWNPLE1BQU0sU0FBUyxHQUFpQixDQUFDLE1BQUs7QUFDM0MsTUFBSSxHQUFHLEdBQ0wsT0FBQSxNQUFBLEtBQUEsUUFBQSxJQUE4QixPQUFPLE1BQU0sQ0FBYixPQUFBLEtBQTlCLFVBQUEsR0FBcUUsTUFBTSxDQUEzRSxPQUFBLEdBREYsT0FBQTs7QUFHQSxNQUFBLEdBQUEsRUFBUztBQUNQLFFBQUk7QUFDRixZQUFNLE1BQU0sR0FBRyxHQUFHLENBQWxCLFFBQWtCLENBQWxCOztBQUVBLFVBQUksSUFBSSxHQUFrQixHQUFELElBQVE7QUFDL0IsWUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFOLFVBQUEsQ0FBWCxNQUFXLENBQVg7QUFDQSxRQUFBLElBQUksQ0FBSixNQUFBLENBQUEsR0FBQSxFQUYrQixNQUUvQixFQUYrQixDQUcvQjs7QUFDQSxlQUFPLElBQUksQ0FBSixNQUFBLENBQUEsUUFBQSxFQUFBLFNBQUEsQ0FBQSxDQUFBLEVBQVAsQ0FBTyxDQUFQO0FBSkYsT0FBQTs7QUFPQSxNQUFBLElBQUksQ0FBSixNQUFJLENBQUo7QUFFQSxhQUFBLElBQUE7QUFaRixLQUFBLENBYUUsT0FBQSxDQUFBLEVBQVUsQ0FBRTtBQUNmOztBQUVELFNBQU8sU0FBQSxJQUFBLEdBQWE7QUFDbEIsV0FBQSxJQUFBO0FBREYsR0FBQTtBQXJCSyxDQUFnQyxHQUFoQzs7O0FBMEJQLE1BQU0sY0FBYyxHQUFzQjtBQUN4QyxFQUFBLEVBQUUsRUFBRTtBQURvQyxDQUExQztBQUlBOzs7Ozs7Ozs7Ozs7Ozs7QUFjTSxTQUFBLGNBQUEsQ0FBQSxNQUFBLEVBRUosT0FBQSxHQUZJLGNBQUEsRUFFdUM7OztBQUUzQyxNQUFJLE1BQU0sR0FBRyxJQUFBLGNBQUEsQ0FBQSxN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Q0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayxcbiAgVGVtcGxhdGVKYXZhc2NyaXB0LFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExPQ0FMX1NIT1VMRF9MT0cgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBub3JtYWxpemUsIFByZWNvbXBpbGVPcHRpb25zLCBTb3VyY2UsIFRlbXBsYXRlSWRGbiB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBMT0NBTF9MT0dHRVIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHBhc3MwIGZyb20gJy4vcGFzc2VzLzEtbm9ybWFsaXphdGlvbi9pbmRleCc7XG5pbXBvcnQgeyB2aXNpdCBhcyBwYXNzMiB9IGZyb20gJy4vcGFzc2VzLzItZW5jb2RpbmcvaW5kZXgnO1xuXG5kZWNsYXJlIGZ1bmN0aW9uIHJlcXVpcmUoaWQ6ICdjcnlwdG8nKTogQ3J5cHRvO1xuZGVjbGFyZSBmdW5jdGlvbiByZXF1aXJlKGlkOiBzdHJpbmcpOiB1bmtub3duO1xuXG5pbnRlcmZhY2UgQ3J5cHRvIHtcbiAgY3JlYXRlSGFzaChcbiAgICBhbGc6ICdzaGExJ1xuICApOiB7XG4gICAgdXBkYXRlKHNyYzogc3RyaW5nLCBlbmNvZGluZzogJ3V0ZjgnKTogdm9pZDtcbiAgICBkaWdlc3QoZW5jb2Rpbmc6ICdiYXNlNjQnKTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdElkOiBUZW1wbGF0ZUlkRm4gPSAoKCkgPT4ge1xuICBsZXQgcmVxOiB0eXBlb2YgcmVxdWlyZSB8IHVuZGVmaW5lZCA9XG4gICAgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZS5yZXF1aXJlID09PSAnZnVuY3Rpb24nID8gbW9kdWxlLnJlcXVpcmUgOiByZXF1aXJlO1xuXG4gIGlmIChyZXEpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3J5cHRvID0gcmVxKCdjcnlwdG8nKTtcblxuICAgICAgbGV0IGlkRm46IFRlbXBsYXRlSWRGbiA9IChzcmMpID0+IHtcbiAgICAgICAgbGV0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgICBoYXNoLnVwZGF0ZShzcmMsICd1dGY4Jyk7XG4gICAgICAgIC8vIHRyaW0gdG8gNiBieXRlcyBvZiBkYXRhICgyXjQ4IC0gMSlcbiAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdiYXNlNjQnKS5zdWJzdHJpbmcoMCwgOCk7XG4gICAgICB9O1xuXG4gICAgICBpZEZuKCd0ZXN0Jyk7XG5cbiAgICAgIHJldHVybiBpZEZuO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gaWRGbigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0pKCk7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IHtcbiAgaWQ6IGRlZmF1bHRJZCxcbn07XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGVKU09OKFxuICBzdHJpbmc6IHN0cmluZyxcbiAgb3B0aW9uczogUHJlY29tcGlsZU9wdGlvbnMgPSBkZWZhdWx0T3B0aW9uc1xuKTogW2Jsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgdXNlZExvY2Fsczogc3RyaW5nW11dIHtcbiAgbGV0IHNvdXJjZSA9IG5ldyBTb3VyY2Uoc3RyaW5nLCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuICBsZXQgW2FzdCwgbG9jYWxzXSA9IG5vcm1hbGl6ZShzb3VyY2UsIG9wdGlvbnMpO1xuICBsZXQgYmxvY2sgPSBwYXNzMChzb3VyY2UsIGFzdCwgb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlKS5tYXBPaygocGFzczJJbikgPT4ge1xuICAgIHJldHVybiBwYXNzMihwYXNzMkluKTtcbiAgfSk7XG5cbiAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICBMT0NBTF9MT0dHRVIubG9nKGBUZW1wbGF0ZSAtPmAsIGJsb2NrKTtcbiAgfVxuXG4gIGlmIChibG9jay5pc09rKSB7XG4gICAgcmV0dXJuIFtibG9jay52YWx1ZSwgbG9jYWxzXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBibG9jay5yZWFzb247XG4gIH1cbn1cblxuLy8gVVVJRCB1c2VkIGFzIGEgdW5pcXVlIHBsYWNlaG9sZGVyIGZvciBwbGFjaW5nIGEgc25pcHBldCBvZiBKUyBjb2RlIGludG9cbi8vIHRoZSBvdGhlcndpc2UgSlNPTiBzdHJpbmdpZmllZCB2YWx1ZSBiZWxvdy5cbmNvbnN0IFNDT1BFX1BMQUNFSE9MREVSID0gJzc5NmQyNGU2LTI0NTAtNGZiMC04Y2RmLWI2NTYzOGI1ZWY3MCc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoXG4gIHNvdXJjZTogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zXG4pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgW2Jsb2NrLCB1c2VkTG9jYWxzXSA9IHByZWNvbXBpbGVKU09OKHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgbGV0IG1vZHVsZU5hbWUgPSBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWU7XG4gIGxldCBpZEZuID0gb3B0aW9ucy5pZCB8fCBkZWZhdWx0SWQ7XG4gIGxldCBibG9ja0pTT04gPSBKU09OLnN0cmluZ2lmeShibG9jayk7XG4gIGxldCB0ZW1wbGF0ZUpTT05PYmplY3Q6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgPSB7XG4gICAgaWQ6IGlkRm4oSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5tZXRhKSArIGJsb2NrSlNPTiksXG4gICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICBtb2R1bGVOYW1lOiBtb2R1bGVOYW1lID8/ICcodW5rbm93biB0ZW1wbGF0ZSBtb2R1bGUpJyxcbiAgICAvLyBseWluZyB0byB0aGUgdHlwZSBjaGVja2VyIGhlcmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0b1xuICAgIC8vIHJlcGxhY2UgaXQganVzdCBiZWxvdywgYWZ0ZXIgc3RyaW5naWZpY2F0aW9uXG4gICAgc2NvcGU6IChTQ09QRV9QTEFDRUhPTERFUiBhcyB1bmtub3duKSBhcyBudWxsLFxuICAgIGlzU3RyaWN0TW9kZTogb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlLFxuICB9O1xuXG4gIGlmICghb3B0aW9ucy5zdHJpY3RNb2RlKSB7XG4gICAgZGVsZXRlIHRlbXBsYXRlSlNPTk9iamVjdC5zY29wZTtcbiAgfVxuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICBsZXQgc3RyaW5naWZpZWQgPSBKU09OLnN0cmluZ2lmeSh0ZW1wbGF0ZUpTT05PYmplY3QpO1xuXG4gIGlmIChvcHRpb25zLnN0cmljdE1vZGUgJiYgdXNlZExvY2Fscy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHNjb3BlRm4gPSBgKCk9Plske3VzZWRMb2NhbHMuam9pbignLCcpfV1gO1xuXG4gICAgc3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZC5yZXBsYWNlKGBcIiR7U0NPUEVfUExBQ0VIT0xERVJ9XCJgLCBzY29wZUZuKTtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmdpZmllZCA9IHN0cmluZ2lmaWVkLnJlcGxhY2UoYFwiJHtTQ09QRV9QTEFDRUhPTERFUn1cImAsICdudWxsJyk7XG4gIH1cblxuICByZXR1cm4gc3RyaW5naWZpZWQ7XG59XG5cbmV4cG9ydCB7IFByZWNvbXBpbGVPcHRpb25zIH07XG4iXSwic291cmNlUm9vdCI6IiJ9

20

dist/commonjs/es2017/lib/passes/1-normalization/keywords/impl.js

@@ -53,5 +53,5 @@ "use strict";

let path = getPathExpression(node);
let path = getCalleeExpression(node);
if (path !== null && path.ref.type === 'Free') {
if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {
if (path.tail.length > 0) {

@@ -73,5 +73,5 @@ if (path.ref.resolution.serialize() === 'Loose') {

if (this.match(node)) {
let path = getPathExpression(node);
let path = getCalleeExpression(node);
if (path !== null && path.tail.length > 0) {
if (path !== null && path.type === 'Path' && path.tail.length > 0) {
return (0, _result.Err)((0, _syntax.generateSyntaxError)(`The \`${this.keyword}\` keyword was used incorrectly. It was used as \`${path.loc.asString()}\`, but it cannot be used with additional path segments. \n\nError caused by`, node.loc));

@@ -104,3 +104,3 @@ }

function getPathExpression(node) {
function getCalleeExpression(node) {
switch (node.type) {

@@ -113,3 +113,3 @@ // This covers the inside of attributes and expressions, as well as the callee

case 'AppendContent':
return getPathExpression(node.value);
return getCalleeExpression(node.value);

@@ -119,3 +119,3 @@ case 'Call':

case 'ElementModifier':
return getPathExpression(node.callee);
return node.callee;

@@ -151,5 +151,5 @@ default:

let path = getPathExpression(node);
let path = getCalleeExpression(node);
if (path && path.ref.type === 'Free' && (0, _syntax.isKeyword)(path.ref.name)) {
if (path && path.type === 'Path' && path.ref.type === 'Free' && (0, _syntax.isKeyword)(path.ref.name)) {
let {

@@ -288,2 +288,2 @@ name

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxNQUFBLFdBQUEsQ0FBaUI7QUFRZixFQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFLLElBQUwsUUFBQSxJQUFxQixhQUFhLENBQWxDLElBQWtDLENBQWxDLEVBQTBDO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOztBQUVTLEVBQUEsS0FBSyxDQUFBLElBQUEsRUFBMkI7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBNUIsSUFBNEIsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBckIsTUFBQSxFQUErQztBQUM3QyxVQUFJLElBQUksQ0FBSixJQUFBLENBQUEsTUFBQSxHQUFKLENBQUEsRUFBMEI7QUFDeEIsWUFBSSxJQUFJLENBQUosR0FBQSxDQUFBLFVBQUEsQ0FBQSxTQUFBLE9BQUosT0FBQSxFQUFpRDtBQUMvQztBQUNBO0FBQ0EsaUJBQUEsS0FBQTtBQUNEO0FBQ0Y7O0FBRUQsYUFBTyxJQUFJLENBQUosR0FBQSxDQUFBLElB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RixXQUFBLE1BQUE7QUFDRSxlQUFPLCtCQUErQixJQUF0QyxHQUFBOztBQUNGLFdBQUEsVUFBQTtBQUNFLGVBQU8sa0NBQWtDLElBQXpDLFdBQUE7O0FBQ0Y7QUFDRSxlQUFPLHFCQUFQLElBQU8sQ0FBUDtBQVZKO0FBRkcsR0FBQSxFQUFBLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRk0sU0FBQSxRQUFBLENBQUEsSUFBQSxFQUFpRDtBQUNyRCxTQUFPLElBQUEsUUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVNUdjIsXG4gIGdlbmVyYXRlU3ludGF4RXJyb3IsXG4gIGlzS2V5d29yZCxcbiAgS0VZV09SRFNfVFlQRVMsXG4gIEtleXdvcmRUeXBlLFxufSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgZXhoYXVzdGVkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEVyciwgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgeyBOb3JtYWxpemF0aW9uU3RhdGUgfSBmcm9tICcuLi9jb250ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkRGVsZWdhdGU8TWF0Y2ggZXh0ZW5kcyBLZXl3b3JkTWF0Y2gsIFYsIE91dD4ge1xuICBhc3NlcnQob3B0aW9uczogTWF0Y2gsIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8Vj47XG4gIHRyYW5zbGF0ZShvcHRpb25zOiB7IG5vZGU6IE1hdGNoOyBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlIH0sIHBhcmFtOiBWKTogUmVzdWx0PE91dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZDxLIGV4dGVuZHMgS2V5d29yZFR5cGUgPSBLZXl3b3JkVHlwZSwgT3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tLZXl3b3JkPE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLkludm9rZUJsb2NrLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5jbGFzcyBLZXl3b3JkSW1wbDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBQYXJhbSA9IHVua25vd24sXG4gIE91dCA9IHVua25vd25cbj4ge1xuICBwcm90ZWN0ZWQgdHlwZXM6IFNldDxLZXl3b3JkQ2FuZGlkYXRlc1tLXVsndHlwZSddPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQga2V5d29yZDogUyxcbiAgICB0eXBlOiBLZXl3b3JkVHlwZSxcbiAgICBwcml2YXRlIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIFBhcmFtLCBPdXQ+XG4gICkge1xuICAgIGxldCBub2RlcyA9IG5ldyBTZXQ8S2V5d29yZE5vZGVbJ3R5cGUnXT4oKTtcbiAgICBmb3IgKGxldCBub2RlVHlwZSBvZiBLRVlXT1JEX05PREVTW3R5cGVdKSB7XG4gICAgICBub2Rlcy5hZGQobm9kZVR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZXMgPSBub2RlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRjaChub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSk6IG5vZGUgaXMgS2V5d29yZE1hdGNoZXNbS10ge1xuICAgIGlmICghdGhpcy50eXBlcy5oYXMobm9kZS50eXBlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScpIHtcbiAgICAgIGlmIChwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAocGF0aC5yZWYucmVzb2x1dGlvbi5zZXJpYWxpemUoKSA9PT0gJ0xvb3NlJykge1xuICAgICAgICAgIC8vIGNhbm5vdCBiZSBhIGtleXdvcmQgcmVmZXJlbmNlLCBrZXl3b3JkcyBkbyBub3QgYWxsb3cgcGF0aHMgKG11c3QgYmVcbiAgICAgICAgICAvLyByZWx5aW5nIG9uIGltcGxpY2l0IHRoaXMgZmFsbGJhY2spXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXRoLnJlZi5uYW1lID09PSB0aGlzLmtleXdvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZE1hdGNoZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGwge1xuICAgIGlmICh0aGlzLm1hdGNoKG5vZGUpKSB7XG4gICAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7XG4gICAgICAgICAgICAgIHRoaXMua2V5d29yZFxuICAgICAgICAgICAgfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyBcXGAke3BhdGgubG9jLmFzU3RyaW5nKCl9XFxgLCBidXQgaXQgY2Fubm90IGJlIHVzZWQgd2l0aCBhZGRpdGlvbmFsIHBhdGggc2VnbWVudHMuIFxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcmFtID0gdGhpcy5kZWxlZ2F0ZS5hc3NlcnQobm9kZSwgc3RhdGUpO1xuICAgICAgcmV0dXJuIHBhcmFtLmFuZFRoZW4oKHBhcmFtKSA9PiB0aGlzLmRlbGVnYXRlLnRyYW5zbGF0ZSh7IG5vZGUsIHN0YXRlIH0sIHBhcmFtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZU5vZGUgPVxuICB8IEFTVHYyLlBhdGhFeHByZXNzaW9uXG4gIHwgQVNUdjIuQXBwZW5kQ29udGVudFxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2s7XG5cbmV4cG9ydCBjb25zdCBLRVlXT1JEX05PREVTID0ge1xuICBDYWxsOiBbJ0NhbGwnXSxcbiAgQmxvY2s6IFsnSW52b2tlQmxvY2snXSxcbiAgQXBwZW5kOiBbJ0FwcGVuZENvbnRlbnQnXSxcbiAgTW9kaWZpZXI6IFsnRWxlbWVudE1vZGlmaWVyJ10sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRDYW5kaWRhdGVzIHtcbiAgQ2FsbDogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkQ2FuZGlkYXRlID0gS2V5d29yZENhbmRpZGF0ZXNba2V5b2YgS2V5d29yZENhbmRpZGF0ZXNdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRNYXRjaGVzIHtcbiAgQ2FsbDogQVNUdjIuQ2FsbEV4cHJlc3Npb247XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkTWF0Y2ggPSBLZXl3b3JkTWF0Y2hlc1trZXlvZiBLZXl3b3JkTWF0Y2hlc107XG5cbi8qKlxuICogQSBcImdlbmVyaWNcIiBrZXl3b3JkIGlzIHNvbWV0aGluZyBsaWtlIGBoYXMtYmxvY2tgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dFxuICogb2Ygc3ViLWV4cHJlc3Npb24gb3IgYXBwZW5kXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNLZXl3b3JkTm9kZSA9IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcblxuZXhwb3J0IHR5cGUgS2V5d29yZE5vZGUgPVxuICB8IEdlbmVyaWNLZXl3b3JkTm9kZVxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2tcbiAgfCBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIEQgZXh0ZW5kcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD4sXG4gIE91dCA9IHVua25vd25cbj4oa2V5d29yZDogc3RyaW5nLCB0eXBlOiBLLCBkZWxlZ2F0ZTogRCk6IEtleXdvcmQ8SywgT3V0PiB7XG4gIHJldHVybiBuZXcgS2V5d29yZEltcGwoa2V5d29yZCwgdHlwZSwgZGVsZWdhdGUgYXMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaCwgdW5rbm93biwgT3V0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlS2V5d29yZCA9IEtleXdvcmROb2RlO1xudHlwZSBPdXRGb3I8SyBleHRlbmRzIEtleXdvcmQgfCBCbG9ja0tleXdvcmQ+ID0gSyBleHRlbmRzIEJsb2NrS2V5d29yZDxpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogSyBleHRlbmRzIEtleXdvcmQ8S2V5d29yZFR5cGUsIGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBuZXZlcjtcblxuZnVuY3Rpb24gZ2V0UGF0aEV4cHJlc3Npb24obm9kZTogS2V5d29yZE5vZGUgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZSk6IEFTVHYyLlBhdGhFeHByZXNzaW9uIHwgbnVsbCB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgLy8gVGhpcyBjb3ZlcnMgdGhlIGluc2lkZSBvZiBhdHRyaWJ1dGVzIGFuZCBleHByZXNzaW9ucywgYXMgd2VsbCBhcyB0aGUgY2FsbGVlXG4gICAgLy8gb2YgY2FsbCBub2Rlc1xuICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgY2FzZSAnQXBwZW5kQ29udGVudCc6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS52YWx1ZSk7XG4gICAgY2FzZSAnQ2FsbCc6XG4gICAgY2FzZSAnSW52b2tlQmxvY2snOlxuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllcic6XG4gICAgICByZXR1cm4gZ2V0UGF0aEV4cHJlc3Npb24obm9kZS5jYWxsZWUpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlLCBLZXl3b3JkTGlzdCBleHRlbmRzIEtleXdvcmQ8Sz4gPSBuZXZlcj5cbiAgaW1wbGVtZW50cyBLZXl3b3JkPEssIE91dEZvcjxLZXl3b3JkTGlzdD4+IHtcbiAgI2tleXdvcmRzOiBLZXl3b3JkW10gPSBbXTtcbiAgI3R5cGU6IEs7XG5cbiAgY29uc3RydWN0b3IodHlwZTogSykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAga3c8UyBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgT3V0ID0gdW5rbm93bj4oXG4gICAgbmFtZTogUyxcbiAgICBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+XG4gICk6IEtleXdvcmRzPEssIEtleXdvcmRMaXN0IHwgS2V5d29yZDxLLCBPdXQ+PiB7XG4gICAgdGhpcy4ja2V5d29yZHMucHVzaChrZXl3b3JkKG5hbWUsIHRoaXMuI3R5cGUsIGRlbGVnYXRlKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRyYW5zbGF0ZShcbiAgICBub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSxcbiAgICBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlXG4gICk6IFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PiB8IG51bGwge1xuICAgIGZvciAobGV0IGtleXdvcmQgb2YgdGhpcy4ja2V5d29yZHMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBrZXl3b3JkLnRyYW5zbGF0ZShub2RlLCBzdGF0ZSkgYXMgUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+O1xuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScgJiYgaXNLZXl3b3JkKHBhdGgucmVmLm5hbWUpKSB7XG4gICAgICBsZXQgeyBuYW1lIH0gPSBwYXRoLnJlZjtcblxuICAgICAgbGV0IHVzZWRUeXBlID0gdGhpcy4jdHlwZTtcbiAgICAgIGxldCB2YWxpZFR5cGVzID0gS0VZV09SRFNfVFlQRVNbbmFtZV07XG5cbiAgICAgIGlmICh2YWxpZFR5cGVzLmluZGV4T2YodXNlZFR5cGUpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7bmFtZX1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgJHtcbiAgICAgICAgICAgICAgdHlwZXNUb1JlYWRhYmxlTmFtZVt1c2VkVHlwZV1cbiAgICAgICAgICAgIH0sIGJ1dCBpdHMgdmFsaWQgdXNhZ2VzIGFyZTpcXG5cXG4ke2dlbmVyYXRlVHlwZXNNZXNzYWdlKFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWxpZFR5cGVzXG4gICAgICAgICAgICApfVxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCB0eXBlc1RvUmVhZGFibGVOYW1lID0ge1xuICBBcHBlbmQ6ICdhbiBhcHBlbmQgc3RhdGVtZW50JyxcbiAgQmxvY2s6ICdhIGJsb2NrIHN0YXRlbWVudCcsXG4gIENhbGw6ICdhIGNhbGwgZXhwcmVzc2lvbicsXG4gIE1vZGlmaWVyOiAnYSBtb2RpZmllcicsXG59O1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVR5cGVzTWVzc2FnZShuYW1lOiBzdHJpbmcsIHR5cGVzOiBLZXl3b3JkVHlwZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVzXG4gICAgLm1hcCgodHlwZSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0FwcGVuZCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGFwcGVuZCBzdGF0ZW1lbnQsIGFzIGluOiB7eyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBibG9jayBzdGF0ZW1lbnQsIGFzIGluOiB7eyMke25hbWV9fX17ey8ke25hbWV9fX1gO1xuICAgICAgICBjYXNlICdDYWxsJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gZXhwcmVzc2lvbiwgYXMgaW46ICgke25hbWV9KWA7XG4gICAgICAgIGNhc2UgJ01vZGlmaWVyJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBtb2RpZmllciwgYXMgaW46IDxkaXYge3ske25hbWV9fX0+PC9kaXY+YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXhoYXVzdGVkKHR5cGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yIGEgcGFydGljdWxhciB0eXBlIG9mIEFTVCBub2RlIChgS2V5d29yZFR5cGVgKS5cbiAqXG4gKiBZb3UgY2FuIGJ1aWxkIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yOlxuICpcbiAqIC0gYEV4cHJgOiBBIGBTdWJFeHByZXNzaW9uYCBvciBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBCbG9ja2A6IEEgYEJsb2NrU3RhdGVtZW50YFxuICogICAtIEEgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGFcbiAqICAgICBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBBcHBlbmRgOiBBbiBgQXBwZW5kU3RhdGVtZW50YFxuICpcbiAqIEEgbm9kZSBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmOlxuICpcbiAqIC0gQSBgUGF0aEV4cHJlc3Npb25gIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXQgaGFzIG5vIHRhaWwsIGFuZCBpdHNcbiAqICAgaGVhZCBleHByZXNzaW9uIGlzIGEgYExvY2FsVmFySGVhZGAgb3IgYEZyZWVWYXJIZWFkYCB3aG9zZSBuYW1lIGlzXG4gKiAgIHRoZSBrZXl3b3JkJ3MgbmFtZS5cbiAqIC0gQSBgU3ViRXhwcmVzc2lvbmAsIGBBcHBlbmRTdGF0ZW1lbnRgLCBvciBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZFxuICogICBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZS5cbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBndWFyYW50ZWVzIHRoYXQ6XG4gKlxuICogLSBJZiBhIG5vZGUgaXMgbm90IGEga2V5d29yZCBjYW5kaWRhdGUsIGl0IGlzIG5ldmVyIHBhc3NlZCB0byBhbnkga2V5d29yZCdzXG4gKiAgIGBhc3NlcnRgIG1ldGhvZC5cbiAqIC0gSWYgYSBub2RlIGlzIG5vdCB0aGUgYEtleXdvcmRUeXBlYCBmb3IgYSBwYXJ0aWN1bGFyIGtleXdvcmQsIGl0IHdpbGwgbm90XG4gKiAgIGJlIHBhc3NlZCB0byB0aGUga2V5d29yZCdzIGBhc3NlcnRgIG1ldGhvZC5cbiAqXG4gKiBgRXhwcmAga2V5d29yZHMgYXJlIHVzZWQgaW4gZXhwcmVzc2lvbiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSXG4gKiBleHByZXNzaW9ucy4gYEJsb2NrYCBhbmQgYEFwcGVuZGAga2V5d29yZHMgYXJlIHVzZWQgaW4gc3RhdGVtZW50XG4gKiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSIHN0YXRlbWVudHMuXG4gKlxuICogQSBrZXl3b3JkIGRlZmluaXRpb24gaGFzIHR3byBwYXJ0czpcbiAqXG4gKiAtIGBtYXRjaGAsIHdoaWNoIGRldGVybWluZXMgd2hldGhlciBhbiBBU1Qgbm9kZSBtYXRjaGVzIHRoZSBrZXl3b3JkLCBhbmQgY2FuXG4gKiAgIG9wdGlvbmFsbHkgcmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gdGhlIEFTVCBub2RlLlxuICogLSBgdHJhbnNsYXRlYCwgd2hpY2ggdGFrZXMgYSBtYXRjaGluZyBBU1Qgbm9kZSBhcyB3ZWxsIGFzIHRoZSBleHRyYWN0ZWRcbiAqICAgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgSElSIGluc3RydWN0aW9uLlxuICpcbiAqICMgRXhhbXBsZVxuICpcbiAqIFRoaXMga2V5d29yZDpcbiAqXG4gKiAtIHR1cm5zIGAoaGVsbG8pYCBpbnRvIGBcImhlbGxvXCJgXG4gKiAgIC0gYXMgbG9uZyBhcyBgaGVsbG9gIGlzIG5vdCBpbiBzY29wZVxuICogLSBtYWtlcyBpdCBhbiBlcnJvciB0byBwYXNzIGFueSBhcmd1bWVudHMgKHN1Y2ggYXMgYChoZWxsbyB3b3JsZClgKVxuICpcbiAqIGBgYHRzXG4gKiBrZXl3b3JkcygnU3ViRXhwcicpLmt3KCdoZWxsbycsIHtcbiAqICAgYXNzZXJ0KG5vZGU6IEV4cHJLZXl3b3JkTm9kZSk6IFJlc3VsdDx2b2lkPiB8IGZhbHNlIHtcbiAqICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHRyYW5zZm9ybSBgaGVsbG9gIGFzIGEgYFBhdGhFeHByZXNzaW9uYFxuICogICAgIGlmIChub2RlLnR5cGUgIT09ICdTdWJFeHByZXNzaW9uJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgLy8gbm9kZS5oZWFkIHdvdWxkIGJlIGBMb2NhbFZhckhlYWRgIGlmIGBoZWxsb2Agd2FzIGluIHNjb3BlXG4gKiAgICAgaWYgKG5vZGUuaGVhZC50eXBlICE9PSAnRnJlZVZhckhlYWQnKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCkge1xuICogICAgICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoaGVsbG8pIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50c2ApLCBub2RlLmxvYyk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHJldHVybiBPaygpO1xuICogICAgIH1cbiAqICAgfSxcbiAqXG4gKiAgIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5TdWJFeHByZXNzaW9uKTogaGlyLkV4cHJlc3Npb24ge1xuICogICAgIHJldHVybiBBU1R2Mi5idWlsZGVycy5saXRlcmFsKFwiaGVsbG9cIiwgbm9kZS5sb2MpXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgaXMgdGhlIHJpZ2h0XG4gKiB0eXBlIGJlZm9yZSBjYWxsaW5nIGBhc3NlcnRgLCBzbyB5b3Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIGBTdWJFeHByZXNzaW9uYFxuICogYW5kIGBQYXRoRXhwcmVzc2lvbmAgaGVyZS4gSXQgYWxzbyBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgcGFzc2VkXG4gKiB0byBgYXNzZXJ0YCBoYXMgdGhlIGtleXdvcmQgbmFtZSBpbiB0aGUgcmlnaHQgcGxhY2UuXG4gKlxuICogTm90ZSB0aGUgaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbiByZXR1cm5pbmcgYGZhbHNlYCBmcm9tIGBhc3NlcnRgLFxuICogd2hpY2gganVzdCBtZWFucyB0aGF0IHRoZSBub2RlIGRpZG4ndCBtYXRjaCwgYW5kIHJldHVybmluZyBgRXJyYCwgd2hpY2hcbiAqIG1lYW5zIHRoYXQgdGhlIG5vZGUgbWF0Y2hlZCwgYnV0IHRoZXJlIHdhcyBhIGtleXdvcmQtc3BlY2lmaWMgc3ludGF4XG4gKiBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZT4odHlwZTogSyk6IEtleXdvcmRzPEs+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3Jkcyh0eXBlKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxNQUFBLFdBQUEsQ0FBaUI7QUFRZixFQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFLLElBQUwsUUFBQSxJQUFxQixhQUFhLENBQWxDLElBQWtDLENBQWxDLEVBQTBDO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOztBQUVTLEVBQUEsS0FBSyxDQUFBLElBQUEsRUFBMkI7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxtQkFBbUIsQ0FBOUIsSUFBOEIsQ0FBOUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosSUFBQSxLQUFqQixNQUFBLElBQXlDLElBQUksQ0FBSixHQUFBLENBQUEsSUFBQSxLQUE3QyxNQUFBLEVBQXVFO0FBQ3JFLFVBQUksSUFBSSxDQUFKLElBQUEsQ0FBQSxNQUFBLEdBQUosQ0FBQSxFQUEwQjtBQUN4QixZQUFJLElBQUksQ0FBSixHQUFBLENBQUEsVUFBQSxDQUFBLFNBQUEsT0FBSixPQUFBLEVBQWlEO0FBQy9DO0FBQ0E7QUFDQSxpQkFBQSxLQUFBO0FBQ0Q7QUFDRjs7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c0NBQXNDLElBQTdDLElBQUE7O0FBQ0YsV0FBQSxPQUFBO0FBQ0UsZUFBTyxxQ0FBcUMsSUFBSSxRQUFRLElBQXhELElBQUE7O0FBQ0YsV0FBQSxNQUFBO0FBQ0UsZUFBTywrQkFBK0IsSUFBdEMsR0FBQTs7QUFDRixXQUFBLFVBQUE7QUFDRSxlQUFPLGtDQUFrQyxJQUF6QyxXQUFBOztBQUNGO0FBQ0UsZUFBTyxxQkFBUCxJQUFPLENBQVA7QUFWSjtBQUZHLEdBQUEsRUFBQSxJQUFBLENBQVAsTUFBTyxDQUFQO0FBZ0JEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUZNLFNBQUEsUUFBQSxDQUFBLElBQUEsRUFBaUQ7QUFDckQsU0FBTyxJQUFBLFFBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFTVHYyLFxuICBnZW5lcmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldENhbGxlZUV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnR5cGUgPT09ICdQYXRoJyAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScpIHtcbiAgICAgIGlmIChwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAocGF0aC5yZWYucmVzb2x1dGlvbi5zZXJpYWxpemUoKSA9PT0gJ0xvb3NlJykge1xuICAgICAgICAgIC8vIGNhbm5vdCBiZSBhIGtleXdvcmQgcmVmZXJlbmNlLCBrZXl3b3JkcyBkbyBub3QgYWxsb3cgcGF0aHMgKG11c3QgYmVcbiAgICAgICAgICAvLyByZWx5aW5nIG9uIGltcGxpY2l0IHRoaXMgZmFsbGJhY2spXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXRoLnJlZi5uYW1lID09PSB0aGlzLmtleXdvcmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZE1hdGNoZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGwge1xuICAgIGlmICh0aGlzLm1hdGNoKG5vZGUpKSB7XG4gICAgICBsZXQgcGF0aCA9IGdldENhbGxlZUV4cHJlc3Npb24obm9kZSk7XG5cbiAgICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgudHlwZSA9PT0gJ1BhdGgnICYmIHBhdGgudGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtcbiAgICAgICAgICAgICAgdGhpcy5rZXl3b3JkXG4gICAgICAgICAgICB9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzIFxcYCR7cGF0aC5sb2MuYXNTdHJpbmcoKX1cXGAsIGJ1dCBpdCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFkZGl0aW9uYWwgcGF0aCBzZWdtZW50cy4gXFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmRlbGVnYXRlLmFzc2VydChub2RlLCBzdGF0ZSk7XG4gICAgICByZXR1cm4gcGFyYW0uYW5kVGhlbigocGFyYW0pID0+IHRoaXMuZGVsZWdhdGUudHJhbnNsYXRlKHsgbm9kZSwgc3RhdGUgfSwgcGFyYW0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlTm9kZSA9XG4gIHwgQVNUdjIuUGF0aEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5BcHBlbmRDb250ZW50XG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9jaztcblxuZXhwb3J0IGNvbnN0IEtFWVdPUkRfTk9ERVMgPSB7XG4gIENhbGw6IFsnQ2FsbCddLFxuICBCbG9jazogWydJbnZva2VCbG9jayddLFxuICBBcHBlbmQ6IFsnQXBwZW5kQ29udGVudCddLFxuICBNb2RpZmllcjogWydFbGVtZW50TW9kaWZpZXInXSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZENhbmRpZGF0ZXMge1xuICBDYWxsOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRDYW5kaWRhdGUgPSBLZXl3b3JkQ2FuZGlkYXRlc1trZXlvZiBLZXl3b3JkQ2FuZGlkYXRlc107XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZE1hdGNoZXMge1xuICBDYWxsOiBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRNYXRjaCA9IEtleXdvcmRNYXRjaGVzW2tleW9mIEtleXdvcmRNYXRjaGVzXTtcblxuLyoqXG4gKiBBIFwiZ2VuZXJpY1wiIGtleXdvcmQgaXMgc29tZXRoaW5nIGxpa2UgYGhhcy1ibG9ja2AsIHdoaWNoIG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0XG4gKiBvZiBzdWItZXhwcmVzc2lvbiBvciBhcHBlbmRcbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0tleXdvcmROb2RlID0gQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuXG5leHBvcnQgdHlwZSBLZXl3b3JkTm9kZSA9XG4gIHwgR2VuZXJpY0tleXdvcmROb2RlXG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9ja1xuICB8IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmQ8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgRCBleHRlbmRzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PixcbiAgT3V0ID0gdW5rbm93blxuPihrZXl3b3JkOiBzdHJpbmcsIHR5cGU6IEssIGRlbGVnYXRlOiBEKTogS2V5d29yZDxLLCBPdXQ+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3JkSW1wbChrZXl3b3JkLCB0eXBlLCBkZWxlZ2F0ZSBhcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoLCB1bmtub3duLCBPdXQ+KTtcbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVLZXl3b3JkID0gS2V5d29yZE5vZGU7XG50eXBlIE91dEZvcjxLIGV4dGVuZHMgS2V5d29yZCB8IEJsb2NrS2V5d29yZD4gPSBLIGV4dGVuZHMgQmxvY2tLZXl3b3JkPGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBLIGV4dGVuZHMgS2V5d29yZDxLZXl3b3JkVHlwZSwgaW5mZXIgT3V0PlxuICA/IE91dFxuICA6IG5ldmVyO1xuXG5mdW5jdGlvbiBnZXRDYWxsZWVFeHByZXNzaW9uKFxuICBub2RlOiBLZXl3b3JkTm9kZSB8IEFTVHYyLkV4cHJlc3Npb25Ob2RlXG4pOiBBU1R2Mi5FeHByZXNzaW9uTm9kZSB8IG51bGwge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIC8vIFRoaXMgY292ZXJzIHRoZSBpbnNpZGUgb2YgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgdGhlIGNhbGxlZVxuICAgIC8vIG9mIGNhbGwgbm9kZXNcbiAgICBjYXNlICdQYXRoJzpcbiAgICAgIHJldHVybiBub2RlO1xuICAgIGNhc2UgJ0FwcGVuZENvbnRlbnQnOlxuICAgICAgcmV0dXJuIGdldENhbGxlZUV4cHJlc3Npb24obm9kZS52YWx1ZSk7XG4gICAgY2FzZSAnQ2FsbCc6XG4gICAgY2FzZSAnSW52b2tlQmxvY2snOlxuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllcic6XG4gICAgICByZXR1cm4gbm9kZS5jYWxsZWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGUsIEtleXdvcmRMaXN0IGV4dGVuZHMgS2V5d29yZDxLPiA9IG5ldmVyPlxuICBpbXBsZW1lbnRzIEtleXdvcmQ8SywgT3V0Rm9yPEtleXdvcmRMaXN0Pj4ge1xuICAja2V5d29yZHM6IEtleXdvcmRbXSA9IFtdO1xuICAjdHlwZTogSztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBLKSB7XG4gICAgdGhpcy4jdHlwZSA9IHR5cGU7XG4gIH1cblxuICBrdzxTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBPdXQgPSB1bmtub3duPihcbiAgICBuYW1lOiBTLFxuICAgIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD5cbiAgKTogS2V5d29yZHM8SywgS2V5d29yZExpc3QgfCBLZXl3b3JkPEssIE91dD4+IHtcbiAgICB0aGlzLiNrZXl3b3Jkcy5wdXNoKGtleXdvcmQobmFtZSwgdGhpcy4jdHlwZSwgZGVsZWdhdGUpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdHJhbnNsYXRlKFxuICAgIG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLFxuICAgIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGVcbiAgKTogUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+IHwgbnVsbCB7XG4gICAgZm9yIChsZXQga2V5d29yZCBvZiB0aGlzLiNrZXl3b3Jkcykge1xuICAgICAgbGV0IHJlc3VsdCA9IGtleXdvcmQudHJhbnNsYXRlKG5vZGUsIHN0YXRlKSBhcyBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj47XG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggJiYgcGF0aC50eXBlID09PSAnUGF0aCcgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnICYmIGlzS2V5d29yZChwYXRoLnJlZi5uYW1lKSkge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gcGF0aC5yZWY7XG5cbiAgICAgIGxldCB1c2VkVHlwZSA9IHRoaXMuI3R5cGU7XG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IEtFWVdPUkRTX1RZUEVTW25hbWVdO1xuXG4gICAgICBpZiAodmFsaWRUeXBlcy5pbmRleE9mKHVzZWRUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke25hbWV9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzICR7XG4gICAgICAgICAgICAgIHR5cGVzVG9SZWFkYWJsZU5hbWVbdXNlZFR5cGVdXG4gICAgICAgICAgICB9LCBidXQgaXRzIHZhbGlkIHVzYWdlcyBhcmU6XFxuXFxuJHtnZW5lcmF0ZVR5cGVzTWVzc2FnZShcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsaWRUeXBlc1xuICAgICAgICAgICAgKX1cXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgdHlwZXNUb1JlYWRhYmxlTmFtZSA9IHtcbiAgQXBwZW5kOiAnYW4gYXBwZW5kIHN0YXRlbWVudCcsXG4gIEJsb2NrOiAnYSBibG9jayBzdGF0ZW1lbnQnLFxuICBDYWxsOiAnYSBjYWxsIGV4cHJlc3Npb24nLFxuICBNb2RpZmllcjogJ2EgbW9kaWZpZXInLFxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVUeXBlc01lc3NhZ2UobmFtZTogc3RyaW5nLCB0eXBlczogS2V5d29yZFR5cGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBcHBlbmQnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBhcHBlbmQgc3RhdGVtZW50LCBhcyBpbjoge3ske25hbWV9fX1gO1xuICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgYmxvY2sgc3RhdGVtZW50LCBhcyBpbjoge3sjJHtuYW1lfX19e3svJHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQ2FsbCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGV4cHJlc3Npb24sIGFzIGluOiAoJHtuYW1lfSlgO1xuICAgICAgICBjYXNlICdNb2RpZmllcic6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgbW9kaWZpZXIsIGFzIGluOiA8ZGl2IHt7JHtuYW1lfX19PjwvZGl2PmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGV4aGF1c3RlZCh0eXBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBrZXl3b3JkIGRlZmluaXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBBU1Qgbm9kZSAoYEtleXdvcmRUeXBlYCkuXG4gKlxuICogWW91IGNhbiBidWlsZCBrZXl3b3JkIGRlZmluaXRpb25zIGZvcjpcbiAqXG4gKiAtIGBFeHByYDogQSBgU3ViRXhwcmVzc2lvbmAgb3IgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQmxvY2tgOiBBIGBCbG9ja1N0YXRlbWVudGBcbiAqICAgLSBBIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhXG4gKiAgICAgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQXBwZW5kYDogQW4gYEFwcGVuZFN0YXRlbWVudGBcbiAqXG4gKiBBIG5vZGUgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZjpcbiAqXG4gKiAtIEEgYFBhdGhFeHByZXNzaW9uYCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0IGhhcyBubyB0YWlsLCBhbmQgaXRzXG4gKiAgIGhlYWQgZXhwcmVzc2lvbiBpcyBhIGBMb2NhbFZhckhlYWRgIG9yIGBGcmVlVmFySGVhZGAgd2hvc2UgbmFtZSBpc1xuICogICB0aGUga2V5d29yZCdzIG5hbWUuXG4gKiAtIEEgYFN1YkV4cHJlc3Npb25gLCBgQXBwZW5kU3RhdGVtZW50YCwgb3IgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmRcbiAqICAgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGEga2V5d29yZCBjYW5kaWRhdGUuXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgZ3VhcmFudGVlcyB0aGF0OlxuICpcbiAqIC0gSWYgYSBub2RlIGlzIG5vdCBhIGtleXdvcmQgY2FuZGlkYXRlLCBpdCBpcyBuZXZlciBwYXNzZWQgdG8gYW55IGtleXdvcmQnc1xuICogICBgYXNzZXJ0YCBtZXRob2QuXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgdGhlIGBLZXl3b3JkVHlwZWAgZm9yIGEgcGFydGljdWxhciBrZXl3b3JkLCBpdCB3aWxsIG5vdFxuICogICBiZSBwYXNzZWQgdG8gdGhlIGtleXdvcmQncyBgYXNzZXJ0YCBtZXRob2QuXG4gKlxuICogYEV4cHJgIGtleXdvcmRzIGFyZSB1c2VkIGluIGV4cHJlc3Npb24gcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUlxuICogZXhwcmVzc2lvbnMuIGBCbG9ja2AgYW5kIGBBcHBlbmRgIGtleXdvcmRzIGFyZSB1c2VkIGluIHN0YXRlbWVudFxuICogcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUiBzdGF0ZW1lbnRzLlxuICpcbiAqIEEga2V5d29yZCBkZWZpbml0aW9uIGhhcyB0d28gcGFydHM6XG4gKlxuICogLSBgbWF0Y2hgLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gQVNUIG5vZGUgbWF0Y2hlcyB0aGUga2V5d29yZCwgYW5kIGNhblxuICogICBvcHRpb25hbGx5IHJldHVybiBzb21lIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSBBU1Qgbm9kZS5cbiAqIC0gYHRyYW5zbGF0ZWAsIHdoaWNoIHRha2VzIGEgbWF0Y2hpbmcgQVNUIG5vZGUgYXMgd2VsbCBhcyB0aGUgZXh0cmFjdGVkXG4gKiAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIEhJUiBpbnN0cnVjdGlvbi5cbiAqXG4gKiAjIEV4YW1wbGVcbiAqXG4gKiBUaGlzIGtleXdvcmQ6XG4gKlxuICogLSB0dXJucyBgKGhlbGxvKWAgaW50byBgXCJoZWxsb1wiYFxuICogICAtIGFzIGxvbmcgYXMgYGhlbGxvYCBpcyBub3QgaW4gc2NvcGVcbiAqIC0gbWFrZXMgaXQgYW4gZXJyb3IgdG8gcGFzcyBhbnkgYXJndW1lbnRzIChzdWNoIGFzIGAoaGVsbG8gd29ybGQpYClcbiAqXG4gKiBgYGB0c1xuICoga2V5d29yZHMoJ1N1YkV4cHInKS5rdygnaGVsbG8nLCB7XG4gKiAgIGFzc2VydChub2RlOiBFeHByS2V5d29yZE5vZGUpOiBSZXN1bHQ8dm9pZD4gfCBmYWxzZSB7XG4gKiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmFuc2Zvcm0gYGhlbGxvYCBhcyBhIGBQYXRoRXhwcmVzc2lvbmBcbiAqICAgICBpZiAobm9kZS50eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIC8vIG5vZGUuaGVhZCB3b3VsZCBiZSBgTG9jYWxWYXJIZWFkYCBpZiBgaGVsbG9gIHdhcyBpbiBzY29wZVxuICogICAgIGlmIChub2RlLmhlYWQudHlwZSAhPT0gJ0ZyZWVWYXJIZWFkJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpIHtcbiAqICAgICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKGhlbGxvKSBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHNgKSwgbm9kZS5sb2MpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICByZXR1cm4gT2soKTtcbiAqICAgICB9XG4gKiAgIH0sXG4gKlxuICogICB0cmFuc2xhdGUobm9kZTogQVNUdjIuU3ViRXhwcmVzc2lvbik6IGhpci5FeHByZXNzaW9uIHtcbiAqICAgICByZXR1cm4gQVNUdjIuYnVpbGRlcnMubGl0ZXJhbChcImhlbGxvXCIsIG5vZGUubG9jKVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGlzIHRoZSByaWdodFxuICogdHlwZSBiZWZvcmUgY2FsbGluZyBgYXNzZXJ0YCwgc28geW91IG9ubHkgbmVlZCB0byBjb25zaWRlciBgU3ViRXhwcmVzc2lvbmBcbiAqIGFuZCBgUGF0aEV4cHJlc3Npb25gIGhlcmUuIEl0IGFsc28gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIHBhc3NlZFxuICogdG8gYGFzc2VydGAgaGFzIHRoZSBrZXl3b3JkIG5hbWUgaW4gdGhlIHJpZ2h0IHBsYWNlLlxuICpcbiAqIE5vdGUgdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gcmV0dXJuaW5nIGBmYWxzZWAgZnJvbSBgYXNzZXJ0YCxcbiAqIHdoaWNoIGp1c3QgbWVhbnMgdGhhdCB0aGUgbm9kZSBkaWRuJ3QgbWF0Y2gsIGFuZCByZXR1cm5pbmcgYEVycmAsIHdoaWNoXG4gKiBtZWFucyB0aGF0IHRoZSBub2RlIG1hdGNoZWQsIGJ1dCB0aGVyZSB3YXMgYSBrZXl3b3JkLXNwZWNpZmljIHN5bnRheFxuICogZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGU+KHR5cGU6IEspOiBLZXl3b3JkczxLPiB7XG4gIHJldHVybiBuZXcgS2V5d29yZHModHlwZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -6,2 +6,8 @@ "use strict";

});
Object.defineProperty(exports, "defaultId", {
enumerable: true,
get: function () {
return _compiler.defaultId;
}
});
Object.defineProperty(exports, "precompile", {

@@ -75,2 +81,2 @@ enumerable: true,

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQVlBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcHJlY29tcGlsZSwgcHJlY29tcGlsZUpTT04sIFByZWNvbXBpbGVPcHRpb25zIH0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuZXhwb3J0IHtcbiAgUHJvZ3JhbVN5bWJvbHMsXG4gIGJ1aWxkU3RhdGVtZW50LFxuICBidWlsZFN0YXRlbWVudHMsXG4gIHMsXG4gIGMsXG4gIHVuaWNvZGUsXG4gIE5FV0xJTkUsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvYnVpbGRlcic7XG5leHBvcnQgeyBCdWlsZGVyU3RhdGVtZW50LCBCdWlsZGVyIH0gZnJvbSAnLi9saWIvYnVpbGRlci9idWlsZGVyLWludGVyZmFjZSc7XG5cbi8vIGV4cG9ydGVkIG9ubHkgZm9yIHRlc3RzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFdpcmVGb3JtYXREZWJ1Z2dlciB9IGZyb20gJy4vbGliL3dpcmUtZm9ybWF0LWRlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQVlBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdElkLCBwcmVjb21waWxlLCBwcmVjb21waWxlSlNPTiwgUHJlY29tcGlsZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9jb21waWxlcic7XG5leHBvcnQge1xuICBQcm9ncmFtU3ltYm9scyxcbiAgYnVpbGRTdGF0ZW1lbnQsXG4gIGJ1aWxkU3RhdGVtZW50cyxcbiAgcyxcbiAgYyxcbiAgdW5pY29kZSxcbiAgTkVXTElORSxcbn0gZnJvbSAnLi9saWIvYnVpbGRlci9idWlsZGVyJztcbmV4cG9ydCB7IEJ1aWxkZXJTdGF0ZW1lbnQsIEJ1aWxkZXIgfSBmcm9tICcuL2xpYi9idWlsZGVyL2J1aWxkZXItaW50ZXJmYWNlJztcblxuLy8gZXhwb3J0ZWQgb25seSBmb3IgdGVzdHNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2lyZUZvcm1hdERlYnVnZ2VyIH0gZnJvbSAnLi9saWIvd2lyZS1mb3JtYXQtZGVidWcnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -8,2 +8,3 @@ "use strict";

exports.precompile = precompile;
exports.defaultId = void 0;

@@ -20,2 +21,30 @@ var _syntax = require("@glimmer/syntax");

var defaultId = function () {
var req = typeof module === 'object' && typeof module.require === 'function' ? module.require : require;
if (req) {
try {
var crypto = req('crypto');
var idFn = function idFn(src) {
var hash = crypto.createHash('sha1');
hash.update(src, 'utf8'); // trim to 6 bytes of data (2^48 - 1)
return hash.digest('base64').substring(0, 8);
};
idFn('test');
return idFn;
} catch (e) {}
}
return function idFn() {
return null;
};
}();
exports.defaultId = defaultId;
var defaultOptions = {
id: defaultId
};
/*

@@ -35,5 +64,6 @@ * Compile a string into a template javascript string.

*/
function precompileJSON(string, options) {
if (options === void 0) {
options = {};
options = defaultOptions;
}

@@ -86,3 +116,3 @@

if (options === void 0) {
options = {};
options = defaultOptions;
}

@@ -97,4 +127,6 @@

var moduleName = (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName;
var idFn = options.id || defaultId;
var blockJSON = JSON.stringify(block);
var templateJSONObject = {
id: idFn(JSON.stringify(options.meta) + blockJSON),
block: blockJSON,

@@ -124,2 +156,2 @@ moduleName: moduleName !== null && moduleName !== void 0 ? moduleName : '(unknown template module)',

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQU1BOztBQUNBOztBQUVBOztBQUNBOzs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxjQUFBLENBQUEsTUFBQSxFQUFBLE9BQUEsRUFFMkI7QUFBQSxNQUEvQixPQUErQixLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQS9CLElBQUEsT0FBK0IsR0FGM0IsRUFFSjtBQUErQjs7OztBQUUvQixNQUFJLE1BQU0sR0FBRyxJQUFBLGNBQUEsQ0FBQSxNQUFBLEVBQWlCLENBQUEsRUFBQSxHQUFFLE9BQU8sQ0FBVCxJQUFBLE1BQUEsSUFBQSxJQUFjLEVBQUEsS0FBQSxLQUFkLENBQUEsR0FBYyxLQUFkLENBQUEsR0FBYyxFQUFBLENBQTVDLFVBQWEsQ0FBYjs7QUFGK0IsTUFBQSxVQUFBLEdBR1gsdUJBQVMsTUFBVCxFQUhXLE9BR1gsQ0FIVztBQUFBLE1BRzNCLEdBSDJCLEdBQUEsVUFBQSxDQUFBLENBQUEsQ0FBQTtBQUFBLE1BRzNCLE1BSDJCLEdBQUEsVUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFJL0IsTUFBSSxLQUFLLEdBQUcsb0JBQUssTUFBTCxFQUFLLEdBQUwsRUFBaUIsQ0FBQSxFQUFBLEdBQUUsT0FBTyxDQUFULFVBQUEsTUFBQSxJQUFBLElBQW9CLEVBQUEsS0FBQSxLQUFwQixDQUFBLEdBQUEsRUFBQSxHQUFqQixLQUFBLEVBQUEsS0FBQSxDQUF1RCxVQUFELE9BQUMsRUFBVztBQUM1RSxXQUFPLG1CQUFQLE9BQU8sQ0FBUDtBQURGLEdBQVksQ0FBWjs7QUFJQSxNQUFBO0FBQUE7QUFBQSxJQUFzQjtBQUNwQix5QkFBQSxHQUFBLENBQUEsYUFBQSxFQUFBLEtBQUE7QUFDRDs7QUFFRCxNQUFJLEtBQUssQ0FBVCxJQUFBLEVBQWdCO0FBQ2QsV0FBTyxDQUFDLEtBQUssQ0FBTixLQUFBLEVBQVAsTUFBTyxDQUFQO0FBREYsR0FBQSxNQUVPO0FBQ0wsVUFBTSxLQUFLLENBQVgsTUFBQTtBQUNEO0VBR0g7QUFDQTs7O0FBQ0EsSUFBTSxpQkFBaUIsR0FBdkIsc0NBQUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FBY00sU0FBQSxVQUFBLENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBb0U7QUFBQSxNQUEvQixPQUErQixLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQS9CLElBQUEsT0FBK0IsR0FBcEUsRUFBcUM7QUFBK0I7Ozs7QUFBQSxNQUFBLGVBQUEsR0FDOUMsY0FBYyxDQUFBLE1BQUEsRUFEZ0MsT0FDaEMsQ0FEZ0M7QUFBQSxNQUNwRSxLQURvRSxHQUFBLGVBQUEsQ0FBQSxDQUFBLENBQUE7QUFBQSxNQUNwRSxVQURvRSxHQUFBLGVBQUEsQ0FBQSxDQUFBLENBQUE7O0FBR3hFLE1BQUksVUFBVSxHQUFBLENBQUEsRUFBQSxHQUFHLE9BQU8sQ0FBVixJQUFBLE1BQUEsSUFBQSxJQUFlLEVBQUEsS0FBQSxLQUFmLENBQUEsR0FBZSxLQUFmLENBQUEsR0FBZSxFQUFBLENBQTdCLFVBQUE7QUFDQSxNQUFJLFNBQVMsR0FBRyxJQUFJLENBQUosU0FBQSxDQUFoQixLQUFnQixDQUFoQjtBQUNBLE1BQUksa0JBQWtCLEdBQW9DO0FBQ3hELElBQUEsS0FBSyxFQURtRCxTQUFBO0FBRXhELElBQUEsVUFBVSxFQUFFLFVBQVUsS0FBVixJQUFBLElBQUEsVUFBVSxLQUFBLEtBQVYsQ0FBQSxHQUFBLFVBQUEsR0FGNEMsMkJBQUE7QUFHeEQ7QUFDQTtBQUNBLElBQUEsS0FBSyxFQUxtRCxpQkFBQTtBQU14RCxJQUFBLFlBQVksRUFBQSxDQUFBLEVBQUEsR0FBRSxPQUFPLENBQVQsVUFBQSxNQUFBLElBQUEsSUFBb0IsRUFBQSxLQUFBLEtBQXBCLENBQUEsR0FBQSxFQUFBLEdBQXdCO0FBTm9CLEdBQTFEOztBQVNBLE1BQUksQ0FBQyxPQUFPLENBQVosVUFBQSxFQUF5QjtBQUN2QixXQUFPLGtCQUFrQixDQUF6QixLQUFBO0FBZnNFLEdBQUEsQ0FrQnhFOzs7QUFDQSxNQUFJLFdBQVcsR0FBRyxJQUFJLENBQUosU0FBQSxDQUFsQixrQkFBa0IsQ0FBbEI7O0FBRUEsTUFBSSxPQUFPLENBQVAsVUFBQSxJQUFzQixVQUFVLENBQVYsTUFBQSxHQUExQixDQUFBLEVBQWlEO0FBQy9DLFFBQUksT0FBTyxHQUFBLFVBQVcsVUFBVSxDQUFWLElBQUEsQ0FBdEIsR0FBc0IsQ0FBWCxHQUFYLEdBQUE7QUFFQSxJQUFBLFdBQVcsR0FBRyxXQUFXLENBQVgsT0FBQSxDQUFBLE9BQUEsaUJBQUEsR0FBQSxJQUFBLEVBQWQsT0FBYyxDQUFkO0FBSEYsR0FBQSxNQUlPO0FBQ0wsSUFBQSxXQUFXLEdBQUcsV0FBVyxDQUFYLE9BQUEsQ0FBQSxPQUFBLGlCQUFBLEdBQUEsSUFBQSxFQUFkLE1BQWMsQ0FBZDtBQUNEOztBQUVELFNBQUEsV0FBQTtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssXG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2ssXG4gIFRlbXBsYXRlSmF2YXNjcmlwdCxcbn0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBMT0NBTF9TSE9VTERfTE9HIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgbm9ybWFsaXplLCBQcmVjb21waWxlT3B0aW9ucywgU291cmNlIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IExPQ0FMX0xPR0dFUiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgcGFzczAgZnJvbSAnLi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2luZGV4JztcbmltcG9ydCB7IHZpc2l0IGFzIHBhc3MyIH0gZnJvbSAnLi9wYXNzZXMvMi1lbmNvZGluZy9pbmRleCc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGVKU09OKFxuICBzdHJpbmc6IHN0cmluZyxcbiAgb3B0aW9uczogUHJlY29tcGlsZU9wdGlvbnMgPSB7fVxuKTogW2Jsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgdXNlZExvY2Fsczogc3RyaW5nW11dIHtcbiAgbGV0IHNvdXJjZSA9IG5ldyBTb3VyY2Uoc3RyaW5nLCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuICBsZXQgW2FzdCwgbG9jYWxzXSA9IG5vcm1hbGl6ZShzb3VyY2UsIG9wdGlvbnMpO1xuICBsZXQgYmxvY2sgPSBwYXNzMChzb3VyY2UsIGFzdCwgb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlKS5tYXBPaygocGFzczJJbikgPT4ge1xuICAgIHJldHVybiBwYXNzMihwYXNzMkluKTtcbiAgfSk7XG5cbiAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICBMT0NBTF9MT0dHRVIubG9nKGBUZW1wbGF0ZSAtPmAsIGJsb2NrKTtcbiAgfVxuXG4gIGlmIChibG9jay5pc09rKSB7XG4gICAgcmV0dXJuIFtibG9jay52YWx1ZSwgbG9jYWxzXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBibG9jay5yZWFzb247XG4gIH1cbn1cblxuLy8gVVVJRCB1c2VkIGFzIGEgdW5pcXVlIHBsYWNlaG9sZGVyIGZvciBwbGFjaW5nIGEgc25pcHBldCBvZiBKUyBjb2RlIGludG9cbi8vIHRoZSBvdGhlcndpc2UgSlNPTiBzdHJpbmdpZmllZCB2YWx1ZSBiZWxvdy5cbmNvbnN0IFNDT1BFX1BMQUNFSE9MREVSID0gJzc5NmQyNGU2LTI0NTAtNGZiMC04Y2RmLWI2NTYzOGI1ZWY3MCc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge30pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgW2Jsb2NrLCB1c2VkTG9jYWxzXSA9IHByZWNvbXBpbGVKU09OKHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgbGV0IG1vZHVsZU5hbWUgPSBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWU7XG4gIGxldCBibG9ja0pTT04gPSBKU09OLnN0cmluZ2lmeShibG9jayk7XG4gIGxldCB0ZW1wbGF0ZUpTT05PYmplY3Q6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgPSB7XG4gICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICBtb2R1bGVOYW1lOiBtb2R1bGVOYW1lID8/ICcodW5rbm93biB0ZW1wbGF0ZSBtb2R1bGUpJyxcbiAgICAvLyBseWluZyB0byB0aGUgdHlwZSBjaGVja2VyIGhlcmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0b1xuICAgIC8vIHJlcGxhY2UgaXQganVzdCBiZWxvdywgYWZ0ZXIgc3RyaW5naWZpY2F0aW9uXG4gICAgc2NvcGU6IChTQ09QRV9QTEFDRUhPTERFUiBhcyB1bmtub3duKSBhcyBudWxsLFxuICAgIGlzU3RyaWN0TW9kZTogb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlLFxuICB9O1xuXG4gIGlmICghb3B0aW9ucy5zdHJpY3RNb2RlKSB7XG4gICAgZGVsZXRlIHRlbXBsYXRlSlNPTk9iamVjdC5zY29wZTtcbiAgfVxuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICBsZXQgc3RyaW5naWZpZWQgPSBKU09OLnN0cmluZ2lmeSh0ZW1wbGF0ZUpTT05PYmplY3QpO1xuXG4gIGlmIChvcHRpb25zLnN0cmljdE1vZGUgJiYgdXNlZExvY2Fscy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHNjb3BlRm4gPSBgKCk9Plske3VzZWRMb2NhbHMuam9pbignLCcpfV1gO1xuXG4gICAgc3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZC5yZXBsYWNlKGBcIiR7U0NPUEVfUExBQ0VIT0xERVJ9XCJgLCBzY29wZUZuKTtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmdpZmllZCA9IHN0cmluZ2lmaWVkLnJlcGxhY2UoYFwiJHtTQ09QRV9QTEFDRUhPTERFUn1cImAsICdudWxsJyk7XG4gIH1cblxuICByZXR1cm4gc3RyaW5naWZpZWQ7XG59XG5cbmV4cG9ydCB7IFByZWNvbXBpbGVPcHRpb25zIH07XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFNQTs7QUFDQTs7QUFFQTs7QUFDQTs7OztBQWNPLElBQU0sU0FBUyxHQUFrQixZQUFLO0FBQzNDLE1BQUksR0FBRyxHQUNMLE9BQUEsTUFBQSxLQUFBLFFBQUEsSUFBOEIsT0FBTyxNQUFNLENBQWIsT0FBQSxLQUE5QixVQUFBLEdBQXFFLE1BQU0sQ0FBM0UsT0FBQSxHQURGLE9BQUE7O0FBR0EsTUFBQSxHQUFBLEVBQVM7QUFDUCxRQUFJO0FBQ0YsVUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFsQixRQUFrQixDQUFsQjs7QUFFQSxVQUFJLElBQUksR0FBa0IsU0FBdEIsSUFBc0IsQ0FBRCxHQUFDLEVBQU87QUFDL0IsWUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFOLFVBQUEsQ0FBWCxNQUFXLENBQVg7QUFDQSxRQUFBLElBQUksQ0FBSixNQUFBLENBQUEsR0FBQSxFQUYrQixNQUUvQixFQUYrQixDQUcvQjs7QUFDQSxlQUFPLElBQUksQ0FBSixNQUFBLENBQUEsUUFBQSxFQUFBLFNBQUEsQ0FBQSxDQUFBLEVBQVAsQ0FBTyxDQUFQO0FBSkYsT0FBQTs7QUFPQSxNQUFBLElBQUksQ0FBSixNQUFJLENBQUo7QUFFQSxhQUFBLElBQUE7QUFaRixLQUFBLENBYUUsT0FBQSxDQUFBLEVBQVUsQ0FBRTtBQUNmOztBQUVELFNBQU8sU0FBQSxJQUFBLEdBQWE7QUFDbEIsV0FBQSxJQUFBO0FBREYsR0FBQTtBQXJCSyxDQUFpQyxFQUFqQzs7O0FBMEJQLElBQU0sY0FBYyxHQUFzQjtBQUN4QyxFQUFBLEVBQUUsRUFBRTtBQURvQyxDQUExQztBQUlBOzs7Ozs7Ozs7Ozs7Ozs7QUFjTSxTQUFBLGNBQUEsQ0FBQSxNQUFBLEVBQUEsT0FBQSxFQUV1QztBQUFBLE1BQTNDLE9BQTJDLEtBQUEsS0FBQSxDQUFBLEVBQUE7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c0IsVUFBVSxDQUFWLE1BQUEsR0FBMUIsQ0FBQSxFQUFpRDtBQUMvQyxRQUFJLE9BQU8sR0FBQSxVQUFXLFVBQVUsQ0FBVixJQUFBLENBQXRCLEdBQXNCLENBQVgsR0FBWCxHQUFBO0FBRUEsSUFBQSxXQUFXLEdBQUcsV0FBVyxDQUFYLE9BQUEsQ0FBQSxPQUFBLGlCQUFBLEdBQUEsSUFBQSxFQUFkLE9BQWMsQ0FBZDtBQUhGLEdBQUEsTUFJTztBQUNMLElBQUEsV0FBVyxHQUFHLFdBQVcsQ0FBWCxPQUFBLENBQUEsT0FBQSxpQkFBQSxHQUFBLElBQUEsRUFBZCxNQUFjLENBQWQ7QUFDRDs7QUFFRCxTQUFBLFdBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLFxuICBUZW1wbGF0ZUphdmFzY3JpcHQsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgUHJlY29tcGlsZU9wdGlvbnMsIFNvdXJjZSwgVGVtcGxhdGVJZEZuIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IExPQ0FMX0xPR0dFUiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgcGFzczAgZnJvbSAnLi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2luZGV4JztcbmltcG9ydCB7IHZpc2l0IGFzIHBhc3MyIH0gZnJvbSAnLi9wYXNzZXMvMi1lbmNvZGluZy9pbmRleCc7XG5cbmRlY2xhcmUgZnVuY3Rpb24gcmVxdWlyZShpZDogJ2NyeXB0bycpOiBDcnlwdG87XG5kZWNsYXJlIGZ1bmN0aW9uIHJlcXVpcmUoaWQ6IHN0cmluZyk6IHVua25vd247XG5cbmludGVyZmFjZSBDcnlwdG8ge1xuICBjcmVhdGVIYXNoKFxuICAgIGFsZzogJ3NoYTEnXG4gICk6IHtcbiAgICB1cGRhdGUoc3JjOiBzdHJpbmcsIGVuY29kaW5nOiAndXRmOCcpOiB2b2lkO1xuICAgIGRpZ2VzdChlbmNvZGluZzogJ2Jhc2U2NCcpOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SWQ6IFRlbXBsYXRlSWRGbiA9ICgoKSA9PiB7XG4gIGxldCByZXE6IHR5cGVvZiByZXF1aXJlIHwgdW5kZWZpbmVkID1cbiAgICB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlLnJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBtb2R1bGUucmVxdWlyZSA6IHJlcXVpcmU7XG5cbiAgaWYgKHJlcSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcnlwdG8gPSByZXEoJ2NyeXB0bycpO1xuXG4gICAgICBsZXQgaWRGbjogVGVtcGxhdGVJZEZuID0gKHNyYykgPT4ge1xuICAgICAgICBsZXQgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICAgIGhhc2gudXBkYXRlKHNyYywgJ3V0ZjgnKTtcbiAgICAgICAgLy8gdHJpbSB0byA2IGJ5dGVzIG9mIGRhdGEgKDJeNDggLSAxKVxuICAgICAgICByZXR1cm4gaGFzaC5kaWdlc3QoJ2Jhc2U2NCcpLnN1YnN0cmluZygwLCA4KTtcbiAgICAgIH07XG5cbiAgICAgIGlkRm4oJ3Rlc3QnKTtcblxuICAgICAgcmV0dXJuIGlkRm47XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBpZEZuKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufSkoKTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge1xuICBpZDogZGVmYXVsdElkLFxufTtcblxuLypcbiAqIENvbXBpbGUgYSBzdHJpbmcgaW50byBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiAgICAgaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJ0BnbGltbWVyL2NvbXBpbGVyJztcbiAqICAgICBpbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdnbGltbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZUpTT04oXG4gIHN0cmluZzogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zXG4pOiBbYmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLCB1c2VkTG9jYWxzOiBzdHJpbmdbXV0ge1xuICBsZXQgc291cmNlID0gbmV3IFNvdXJjZShzdHJpbmcsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG4gIGxldCBbYXN0LCBsb2NhbHNdID0gbm9ybWFsaXplKHNvdXJjZSwgb3B0aW9ucyk7XG4gIGxldCBibG9jayA9IHBhc3MwKHNvdXJjZSwgYXN0LCBvcHRpb25zLnN0cmljdE1vZGUgPz8gZmFsc2UpLm1hcE9rKChwYXNzMkluKSA9PiB7XG4gICAgcmV0dXJuIHBhc3MyKHBhc3MySW4pO1xuICB9KTtcblxuICBpZiAoTE9DQUxfU0hPVUxEX0xPRykge1xuICAgIExPQ0FMX0xPR0dFUi5sb2coYFRlbXBsYXRlIC0+YCwgYmxvY2spO1xuICB9XG5cbiAgaWYgKGJsb2NrLmlzT2spIHtcbiAgICByZXR1cm4gW2Jsb2NrLnZhbHVlLCBsb2NhbHNdO1xuICB9IGVsc2Uge1xuICAgIHRocm93IGJsb2NrLnJlYXNvbjtcbiAgfVxufVxuXG4vLyBVVUlEIHVzZWQgYXMgYSB1bmlxdWUgcGxhY2Vob2xkZXIgZm9yIHBsYWNpbmcgYSBzbmlwcGV0IG9mIEpTIGNvZGUgaW50b1xuLy8gdGhlIG90aGVyd2lzZSBKU09OIHN0cmluZ2lmaWVkIHZhbHVlIGJlbG93LlxuY29uc3QgU0NPUEVfUExBQ0VIT0xERVIgPSAnNzk2ZDI0ZTYtMjQ1MC00ZmIwLThjZGYtYjY1NjM4YjVlZjcwJztcblxuLypcbiAqIENvbXBpbGUgYSBzdHJpbmcgaW50byBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiAgICAgaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJ0BnbGltbWVyL2NvbXBpbGVyJztcbiAqICAgICBpbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdnbGltbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZShcbiAgc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0gZGVmYXVsdE9wdGlvbnNcbik6IFRlbXBsYXRlSmF2YXNjcmlwdCB7XG4gIGxldCBbYmxvY2ssIHVzZWRMb2NhbHNdID0gcHJlY29tcGlsZUpTT04oc291cmNlLCBvcHRpb25zKTtcblxuICBsZXQgbW9kdWxlTmFtZSA9IG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZTtcbiAgbGV0IGlkRm4gPSBvcHRpb25zLmlkIHx8IGRlZmF1bHRJZDtcbiAgbGV0IGJsb2NrSlNPTiA9IEpTT04uc3RyaW5naWZ5KGJsb2NrKTtcbiAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdDogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayA9IHtcbiAgICBpZDogaWRGbihKU09OLnN0cmluZ2lmeShvcHRpb25zLm1ldGEpICsgYmxvY2tKU09OKSxcbiAgICBibG9jazogYmxvY2tKU09OLFxuICAgIG1vZHVsZU5hbWU6IG1vZHVsZU5hbWUgPz8gJyh1bmtub3duIHRlbXBsYXRlIG1vZHVsZSknLFxuICAgIC8vIGx5aW5nIHRvIHRoZSB0eXBlIGNoZWNrZXIgaGVyZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvXG4gICAgLy8gcmVwbGFjZSBpdCBqdXN0IGJlbG93LCBhZnRlciBzdHJpbmdpZmljYXRpb25cbiAgICBzY29wZTogKFNDT1BFX1BMQUNFSE9MREVSIGFzIHVua25vd24pIGFzIG51bGwsXG4gICAgaXNTdHJpY3RNb2RlOiBvcHRpb25zLnN0cmljdE1vZGUgPz8gZmFsc2UsXG4gIH07XG5cbiAgaWYgKCFvcHRpb25zLnN0cmljdE1vZGUpIHtcbiAgICBkZWxldGUgdGVtcGxhdGVKU09OT2JqZWN0LnNjb3BlO1xuICB9XG5cbiAgLy8gSlNPTiBpcyBqYXZhc2NyaXB0XG4gIGxldCBzdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHRlbXBsYXRlSlNPTk9iamVjdCk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaWN0TW9kZSAmJiB1c2VkTG9jYWxzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgc2NvcGVGbiA9IGAoKT0+WyR7dXNlZExvY2Fscy5qb2luKCcsJyl9XWA7XG5cbiAgICBzdHJpbmdpZmllZCA9IHN0cmluZ2lmaWVkLnJlcGxhY2UoYFwiJHtTQ09QRV9QTEFDRUhPTERFUn1cImAsIHNjb3BlRm4pO1xuICB9IGVsc2Uge1xuICAgIHN0cmluZ2lmaWVkID0gc3RyaW5naWZpZWQucmVwbGFjZShgXCIke1NDT1BFX1BMQUNFSE9MREVSfVwiYCwgJ251bGwnKTtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdpZmllZDtcbn1cblxuZXhwb3J0IHsgUHJlY29tcGlsZU9wdGlvbnMgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -100,5 +100,5 @@ "use strict";

var path = getPathExpression(node);
var path = getCalleeExpression(node);
if (path !== null && path.ref.type === 'Free') {
if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {
if (path.tail.length > 0) {

@@ -122,5 +122,5 @@ if (path.ref.resolution.serialize() === 'Loose') {

if (this.match(node)) {
var path = getPathExpression(node);
var path = getCalleeExpression(node);
if (path !== null && path.tail.length > 0) {
if (path !== null && path.type === 'Path' && path.tail.length > 0) {
return (0, _result.Err)((0, _syntax.generateSyntaxError)("The `" + this.keyword + "` keyword was used incorrectly. It was used as `" + path.loc.asString() + "`, but it cannot be used with additional path segments. \n\nError caused by", node.loc));

@@ -156,3 +156,3 @@ }

function getPathExpression(node) {
function getCalleeExpression(node) {
switch (node.type) {

@@ -165,3 +165,3 @@ // This covers the inside of attributes and expressions, as well as the callee

case 'AppendContent':
return getPathExpression(node.value);
return getCalleeExpression(node.value);

@@ -171,3 +171,3 @@ case 'Call':

case 'ElementModifier':
return getPathExpression(node.callee);
return node.callee;

@@ -207,5 +207,5 @@ default:

var path = getPathExpression(node);
var path = getCalleeExpression(node);
if (path && path.ref.type === 'Free' && (0, _syntax.isKeyword)(path.ref.name)) {
if (path && path.type === 'Path' && path.ref.type === 'Free' && (0, _syntax.isKeyword)(path.ref.name)) {
var name = path.ref.name;

@@ -343,2 +343,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0JBLFc7QUFRRSxXQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFBLElBQUEsU0FBQSxHQUFBLCtCQUFBLENBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsQ0FBQSxFQUFBLEtBQUEsRUFBQSxDQUFBLENBQUEsS0FBQSxHQUFBLFNBQUEsRUFBQSxFQUFBLElBQUEsR0FBMEM7QUFBQSxVQUExQyxRQUEwQyxHQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOzs7O1NBRVMsSyxHQUFBLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBZ0M7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxpQkFBaUIsQ0FBNUIsSUFBNEIsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBckIsTUFBQSxFQUErQztBQUM3QyxVQUFJLElBQUksQ0FBSixJQUFBLENBQUEsTUFBQSxH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cmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICBpZiAocGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGgucmVmLnJlc29sdXRpb24uc2VyaWFsaXplKCkgPT09ICdMb29zZScpIHtcbiAgICAgICAgICAvLyBjYW5ub3QgYmUgYSBrZXl3b3JkIHJlZmVyZW5jZSwga2V5d29yZHMgZG8gbm90IGFsbG93IHBhdGhzIChtdXN0IGJlXG4gICAgICAgICAgLy8gcmVseWluZyBvbiBpbXBsaWNpdCB0aGlzIGZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke1xuICAgICAgICAgICAgICB0aGlzLmtleXdvcmRcbiAgICAgICAgICAgIH1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgXFxgJHtwYXRoLmxvYy5hc1N0cmluZygpfVxcYCwgYnV0IGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYWRkaXRpb25hbCBwYXRoIHNlZ21lbnRzLiBcXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZGVsZWdhdGUuYXNzZXJ0KG5vZGUsIHN0YXRlKTtcbiAgICAgIHJldHVybiBwYXJhbS5hbmRUaGVuKChwYXJhbSkgPT4gdGhpcy5kZWxlZ2F0ZS50cmFuc2xhdGUoeyBub2RlLCBzdGF0ZSB9LCBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVOb2RlID1cbiAgfCBBU1R2Mi5QYXRoRXhwcmVzc2lvblxuICB8IEFTVHYyLkFwcGVuZENvbnRlbnRcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrO1xuXG5leHBvcnQgY29uc3QgS0VZV09SRF9OT0RFUyA9IHtcbiAgQ2FsbDogWydDYWxsJ10sXG4gIEJsb2NrOiBbJ0ludm9rZUJsb2NrJ10sXG4gIEFwcGVuZDogWydBcHBlbmRDb250ZW50J10sXG4gIE1vZGlmaWVyOiBbJ0VsZW1lbnRNb2RpZmllciddLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkQ2FuZGlkYXRlcyB7XG4gIENhbGw6IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZENhbmRpZGF0ZSA9IEtleXdvcmRDYW5kaWRhdGVzW2tleW9mIEtleXdvcmRDYW5kaWRhdGVzXTtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkTWF0Y2hlcyB7XG4gIENhbGw6IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZE1hdGNoID0gS2V5d29yZE1hdGNoZXNba2V5b2YgS2V5d29yZE1hdGNoZXNdO1xuXG4vKipcbiAqIEEgXCJnZW5lcmljXCIga2V5d29yZCBpcyBzb21ldGhpbmcgbGlrZSBgaGFzLWJsb2NrYCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHRcbiAqIG9mIHN1Yi1leHByZXNzaW9uIG9yIGFwcGVuZFxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljS2V5d29yZE5vZGUgPSBBU1R2Mi5BcHBlbmRDb250ZW50IHwgQVNUdjIuQ2FsbEV4cHJlc3Npb247XG5cbmV4cG9ydCB0eXBlIEtleXdvcmROb2RlID1cbiAgfCBHZW5lcmljS2V5d29yZE5vZGVcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrXG4gIHwgQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBEIGV4dGVuZHMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+LFxuICBPdXQgPSB1bmtub3duXG4+KGtleXdvcmQ6IHN0cmluZywgdHlwZTogSywgZGVsZWdhdGU6IEQpOiBLZXl3b3JkPEssIE91dD4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRJbXBsKGtleXdvcmQsIHR5cGUsIGRlbGVnYXRlIGFzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2gsIHVua25vd24sIE91dD4pO1xufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUtleXdvcmQgPSBLZXl3b3JkTm9kZTtcbnR5cGUgT3V0Rm9yPEsgZXh0ZW5kcyBLZXl3b3JkIHwgQmxvY2tLZXl3b3JkPiA9IEsgZXh0ZW5kcyBCbG9ja0tleXdvcmQ8aW5mZXIgT3V0PlxuICA/IE91dFxuICA6IEsgZXh0ZW5kcyBLZXl3b3JkPEtleXdvcmRUeXBlLCBpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogbmV2ZXI7XG5cbmZ1bmN0aW9uIGdldFBhdGhFeHByZXNzaW9uKG5vZGU6IEtleXdvcmROb2RlIHwgQVNUdjIuRXhwcmVzc2lvbk5vZGUpOiBBU1R2Mi5QYXRoRXhwcmVzc2lvbiB8IG51bGwge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIC8vIFRoaXMgY292ZXJzIHRoZSBpbnNpZGUgb2YgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgdGhlIGNhbGxlZVxuICAgIC8vIG9mIGNhbGwgbm9kZXNcbiAgICBjYXNlICdQYXRoJzpcbiAgICAgIHJldHVybiBub2RlO1xuICAgIGNhc2UgJ0FwcGVuZENvbnRlbnQnOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUuY2FsbGVlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSwgS2V5d29yZExpc3QgZXh0ZW5kcyBLZXl3b3JkPEs+ID0gbmV2ZXI+XG4gIGltcGxlbWVudHMgS2V5d29yZDxLLCBPdXRGb3I8S2V5d29yZExpc3Q+PiB7XG4gICNrZXl3b3JkczogS2V5d29yZFtdID0gW107XG4gICN0eXBlOiBLO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IEspIHtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIGt3PFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIE91dCA9IHVua25vd24+KFxuICAgIG5hbWU6IFMsXG4gICAgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PlxuICApOiBLZXl3b3JkczxLLCBLZXl3b3JkTGlzdCB8IEtleXdvcmQ8SywgT3V0Pj4ge1xuICAgIHRoaXMuI2tleXdvcmRzLnB1c2goa2V5d29yZChuYW1lLCB0aGlzLiN0eXBlLCBkZWxlZ2F0ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0cmFuc2xhdGUoXG4gICAgbm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj4gfCBudWxsIHtcbiAgICBmb3IgKGxldCBrZXl3b3JkIG9mIHRoaXMuI2tleXdvcmRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0ga2V5d29yZC50cmFuc2xhdGUobm9kZSwgc3RhdGUpIGFzIFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PjtcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnICYmIGlzS2V5d29yZChwYXRoLnJlZi5uYW1lKSkge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gcGF0aC5yZWY7XG5cbiAgICAgIGxldCB1c2VkVHlwZSA9IHRoaXMuI3R5cGU7XG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IEtFWVdPUkRTX1RZUEVTW25hbWVdO1xuXG4gICAgICBpZiAodmFsaWRUeXBlcy5pbmRleE9mKHVzZWRUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke25hbWV9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzICR7XG4gICAgICAgICAgICAgIHR5cGVzVG9SZWFkYWJsZU5hbWVbdXNlZFR5cGVdXG4gICAgICAgICAgICB9LCBidXQgaXRzIHZhbGlkIHVzYWdlcyBhcmU6XFxuXFxuJHtnZW5lcmF0ZVR5cGVzTWVzc2FnZShcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsaWRUeXBlc1xuICAgICAgICAgICAgKX1cXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgdHlwZXNUb1JlYWRhYmxlTmFtZSA9IHtcbiAgQXBwZW5kOiAnYW4gYXBwZW5kIHN0YXRlbWVudCcsXG4gIEJsb2NrOiAnYSBibG9jayBzdGF0ZW1lbnQnLFxuICBDYWxsOiAnYSBjYWxsIGV4cHJlc3Npb24nLFxuICBNb2RpZmllcjogJ2EgbW9kaWZpZXInLFxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVUeXBlc01lc3NhZ2UobmFtZTogc3RyaW5nLCB0eXBlczogS2V5d29yZFR5cGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBcHBlbmQnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBhcHBlbmQgc3RhdGVtZW50LCBhcyBpbjoge3ske25hbWV9fX1gO1xuICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgYmxvY2sgc3RhdGVtZW50LCBhcyBpbjoge3sjJHtuYW1lfX19e3svJHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQ2FsbCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGV4cHJlc3Npb24sIGFzIGluOiAoJHtuYW1lfSlgO1xuICAgICAgICBjYXNlICdNb2RpZmllcic6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgbW9kaWZpZXIsIGFzIGluOiA8ZGl2IHt7JHtuYW1lfX19PjwvZGl2PmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGV4aGF1c3RlZCh0eXBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBrZXl3b3JkIGRlZmluaXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBBU1Qgbm9kZSAoYEtleXdvcmRUeXBlYCkuXG4gKlxuICogWW91IGNhbiBidWlsZCBrZXl3b3JkIGRlZmluaXRpb25zIGZvcjpcbiAqXG4gKiAtIGBFeHByYDogQSBgU3ViRXhwcmVzc2lvbmAgb3IgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQmxvY2tgOiBBIGBCbG9ja1N0YXRlbWVudGBcbiAqICAgLSBBIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhXG4gKiAgICAgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQXBwZW5kYDogQW4gYEFwcGVuZFN0YXRlbWVudGBcbiAqXG4gKiBBIG5vZGUgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZjpcbiAqXG4gKiAtIEEgYFBhdGhFeHByZXNzaW9uYCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0IGhhcyBubyB0YWlsLCBhbmQgaXRzXG4gKiAgIGhlYWQgZXhwcmVzc2lvbiBpcyBhIGBMb2NhbFZhckhlYWRgIG9yIGBGcmVlVmFySGVhZGAgd2hvc2UgbmFtZSBpc1xuICogICB0aGUga2V5d29yZCdzIG5hbWUuXG4gKiAtIEEgYFN1YkV4cHJlc3Npb25gLCBgQXBwZW5kU3RhdGVtZW50YCwgb3IgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmRcbiAqICAgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGEga2V5d29yZCBjYW5kaWRhdGUuXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgZ3VhcmFudGVlcyB0aGF0OlxuICpcbiAqIC0gSWYgYSBub2RlIGlzIG5vdCBhIGtleXdvcmQgY2FuZGlkYXRlLCBpdCBpcyBuZXZlciBwYXNzZWQgdG8gYW55IGtleXdvcmQnc1xuICogICBgYXNzZXJ0YCBtZXRob2QuXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgdGhlIGBLZXl3b3JkVHlwZWAgZm9yIGEgcGFydGljdWxhciBrZXl3b3JkLCBpdCB3aWxsIG5vdFxuICogICBiZSBwYXNzZWQgdG8gdGhlIGtleXdvcmQncyBgYXNzZXJ0YCBtZXRob2QuXG4gKlxuICogYEV4cHJgIGtleXdvcmRzIGFyZSB1c2VkIGluIGV4cHJlc3Npb24gcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUlxuICogZXhwcmVzc2lvbnMuIGBCbG9ja2AgYW5kIGBBcHBlbmRgIGtleXdvcmRzIGFyZSB1c2VkIGluIHN0YXRlbWVudFxuICogcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUiBzdGF0ZW1lbnRzLlxuICpcbiAqIEEga2V5d29yZCBkZWZpbml0aW9uIGhhcyB0d28gcGFydHM6XG4gKlxuICogLSBgbWF0Y2hgLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gQVNUIG5vZGUgbWF0Y2hlcyB0aGUga2V5d29yZCwgYW5kIGNhblxuICogICBvcHRpb25hbGx5IHJldHVybiBzb21lIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSBBU1Qgbm9kZS5cbiAqIC0gYHRyYW5zbGF0ZWAsIHdoaWNoIHRha2VzIGEgbWF0Y2hpbmcgQVNUIG5vZGUgYXMgd2VsbCBhcyB0aGUgZXh0cmFjdGVkXG4gKiAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIEhJUiBpbnN0cnVjdGlvbi5cbiAqXG4gKiAjIEV4YW1wbGVcbiAqXG4gKiBUaGlzIGtleXdvcmQ6XG4gKlxuICogLSB0dXJucyBgKGhlbGxvKWAgaW50byBgXCJoZWxsb1wiYFxuICogICAtIGFzIGxvbmcgYXMgYGhlbGxvYCBpcyBub3QgaW4gc2NvcGVcbiAqIC0gbWFrZXMgaXQgYW4gZXJyb3IgdG8gcGFzcyBhbnkgYXJndW1lbnRzIChzdWNoIGFzIGAoaGVsbG8gd29ybGQpYClcbiAqXG4gKiBgYGB0c1xuICoga2V5d29yZHMoJ1N1YkV4cHInKS5rdygnaGVsbG8nLCB7XG4gKiAgIGFzc2VydChub2RlOiBFeHByS2V5d29yZE5vZGUpOiBSZXN1bHQ8dm9pZD4gfCBmYWxzZSB7XG4gKiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmFuc2Zvcm0gYGhlbGxvYCBhcyBhIGBQYXRoRXhwcmVzc2lvbmBcbiAqICAgICBpZiAobm9kZS50eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIC8vIG5vZGUuaGVhZCB3b3VsZCBiZSBgTG9jYWxWYXJIZWFkYCBpZiBgaGVsbG9gIHdhcyBpbiBzY29wZVxuICogICAgIGlmIChub2RlLmhlYWQudHlwZSAhPT0gJ0ZyZWVWYXJIZWFkJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpIHtcbiAqICAgICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKGhlbGxvKSBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHNgKSwgbm9kZS5sb2MpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICByZXR1cm4gT2soKTtcbiAqICAgICB9XG4gKiAgIH0sXG4gKlxuICogICB0cmFuc2xhdGUobm9kZTogQVNUdjIuU3ViRXhwcmVzc2lvbik6IGhpci5FeHByZXNzaW9uIHtcbiAqICAgICByZXR1cm4gQVNUdjIuYnVpbGRlcnMubGl0ZXJhbChcImhlbGxvXCIsIG5vZGUubG9jKVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGlzIHRoZSByaWdodFxuICogdHlwZSBiZWZvcmUgY2FsbGluZyBgYXNzZXJ0YCwgc28geW91IG9ubHkgbmVlZCB0byBjb25zaWRlciBgU3ViRXhwcmVzc2lvbmBcbiAqIGFuZCBgUGF0aEV4cHJlc3Npb25gIGhlcmUuIEl0IGFsc28gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIHBhc3NlZFxuICogdG8gYGFzc2VydGAgaGFzIHRoZSBrZXl3b3JkIG5hbWUgaW4gdGhlIHJpZ2h0IHBsYWNlLlxuICpcbiAqIE5vdGUgdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gcmV0dXJuaW5nIGBmYWxzZWAgZnJvbSBgYXNzZXJ0YCxcbiAqIHdoaWNoIGp1c3QgbWVhbnMgdGhhdCB0aGUgbm9kZSBkaWRuJ3QgbWF0Y2gsIGFuZCByZXR1cm5pbmcgYEVycmAsIHdoaWNoXG4gKiBtZWFucyB0aGF0IHRoZSBub2RlIG1hdGNoZWQsIGJ1dCB0aGVyZSB3YXMgYSBrZXl3b3JkLXNwZWNpZmljIHN5bnRheFxuICogZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGU+KHR5cGU6IEspOiBLZXl3b3JkczxLPiB7XG4gIHJldHVybiBuZXcgS2V5d29yZHModHlwZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBT0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0JBLFc7QUFRRSxXQUFBLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFHa0U7QUFGdEQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUVGLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFFUixRQUFJLEtBQUssR0FBRyxJQUFaLEdBQVksRUFBWjs7QUFDQSxTQUFBLElBQUEsU0FBQSxHQUFBLCtCQUFBLENBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsQ0FBQSxFQUFBLEtBQUEsRUFBQSxDQUFBLENBQUEsS0FBQSxHQUFBLFNBQUEsRUFBQSxFQUFBLElBQUEsR0FBMEM7QUFBQSxVQUExQyxRQUEwQyxHQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQ3hDLE1BQUEsS0FBSyxDQUFMLEdBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOzs7O1NBRVMsSyxHQUFBLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBZ0M7QUFDeEMsUUFBSSxDQUFDLEtBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBZSxJQUFJLENBQXhCLElBQUssQ0FBTCxFQUFnQztBQUM5QixhQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksR0FBRyxtQkFBbUIsQ0FBOUIsSUFBOEIsQ0FBOUI7O0FBRUEsUUFBSSxJQUFJLEtBQUosSUFBQSxJQUFpQixJQUFJLENBQUosSUFBQSxLQUFqQixNQUFBLElBQXlDLElBQUksQ0FBSixHQUFBLENBQUEsSUFBQSxLQUE3QyxNQUFBLEVBQXVFO0FBQ3JF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SUFBQSxRQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBU1R2MixcbiAgZ2VuZXJhdGVTeW50YXhFcnJvcixcbiAgaXNLZXl3b3JkLFxuICBLRVlXT1JEU19UWVBFUyxcbiAgS2V5d29yZFR5cGUsXG59IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBleGhhdXN0ZWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCB7IE5vcm1hbGl6YXRpb25TdGF0ZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmREZWxlZ2F0ZTxNYXRjaCBleHRlbmRzIEtleXdvcmRNYXRjaCwgViwgT3V0PiB7XG4gIGFzc2VydChvcHRpb25zOiBNYXRjaCwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxWPjtcbiAgdHJhbnNsYXRlKG9wdGlvbnM6IHsgbm9kZTogTWF0Y2g7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSwgcGFyYW06IFYpOiBSZXN1bHQ8T3V0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSA9IEtleXdvcmRUeXBlLCBPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0tleXdvcmQ8T3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogQVNUdjIuSW52b2tlQmxvY2ssIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmNsYXNzIEtleXdvcmRJbXBsPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBhcmFtID0gdW5rbm93bixcbiAgT3V0ID0gdW5rbm93blxuPiB7XG4gIHByb3RlY3RlZCB0eXBlczogU2V0PEtleXdvcmRDYW5kaWRhdGVzW0tdWyd0eXBlJ10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBrZXl3b3JkOiBTLFxuICAgIHR5cGU6IEtleXdvcmRUeXBlLFxuICAgIHByaXZhdGUgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgUGFyYW0sIE91dD5cbiAgKSB7XG4gICAgbGV0IG5vZGVzID0gbmV3IFNldDxLZXl3b3JkTm9kZVsndHlwZSddPigpO1xuICAgIGZvciAobGV0IG5vZGVUeXBlIG9mIEtFWVdPUkRfTk9ERVNbdHlwZV0pIHtcbiAgICAgIG5vZGVzLmFkZChub2RlVHlwZSk7XG4gICAgfVxuXG4gICAgdGhpcy50eXBlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdGNoKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdKTogbm9kZSBpcyBLZXl3b3JkTWF0Y2hlc1tLXSB7XG4gICAgaWYgKCF0aGlzLnR5cGVzLmhhcyhub2RlLnR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50eXBlID09PSAnUGF0aCcgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICBpZiAocGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGgucmVmLnJlc29sdXRpb24uc2VyaWFsaXplKCkgPT09ICdMb29zZScpIHtcbiAgICAgICAgICAvLyBjYW5ub3QgYmUgYSBrZXl3b3JkIHJlZmVyZW5jZSwga2V5d29yZHMgZG8gbm90IGFsbG93IHBhdGhzIChtdXN0IGJlXG4gICAgICAgICAgLy8gcmVseWluZyBvbiBpbXBsaWNpdCB0aGlzIGZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhdGggPSBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnR5cGUgPT09ICdQYXRoJyAmJiBwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7XG4gICAgICAgICAgICAgIHRoaXMua2V5d29yZFxuICAgICAgICAgICAgfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyBcXGAke3BhdGgubG9jLmFzU3RyaW5nKCl9XFxgLCBidXQgaXQgY2Fubm90IGJlIHVzZWQgd2l0aCBhZGRpdGlvbmFsIHBhdGggc2VnbWVudHMuIFxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcmFtID0gdGhpcy5kZWxlZ2F0ZS5hc3NlcnQobm9kZSwgc3RhdGUpO1xuICAgICAgcmV0dXJuIHBhcmFtLmFuZFRoZW4oKHBhcmFtKSA9PiB0aGlzLmRlbGVnYXRlLnRyYW5zbGF0ZSh7IG5vZGUsIHN0YXRlIH0sIHBhcmFtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZU5vZGUgPVxuICB8IEFTVHYyLlBhdGhFeHByZXNzaW9uXG4gIHwgQVNUdjIuQXBwZW5kQ29udGVudFxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2s7XG5cbmV4cG9ydCBjb25zdCBLRVlXT1JEX05PREVTID0ge1xuICBDYWxsOiBbJ0NhbGwnXSxcbiAgQmxvY2s6IFsnSW52b2tlQmxvY2snXSxcbiAgQXBwZW5kOiBbJ0FwcGVuZENvbnRlbnQnXSxcbiAgTW9kaWZpZXI6IFsnRWxlbWVudE1vZGlmaWVyJ10sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRDYW5kaWRhdGVzIHtcbiAgQ2FsbDogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkQ2FuZGlkYXRlID0gS2V5d29yZENhbmRpZGF0ZXNba2V5b2YgS2V5d29yZENhbmRpZGF0ZXNdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRNYXRjaGVzIHtcbiAgQ2FsbDogQVNUdjIuQ2FsbEV4cHJlc3Npb247XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkTWF0Y2ggPSBLZXl3b3JkTWF0Y2hlc1trZXlvZiBLZXl3b3JkTWF0Y2hlc107XG5cbi8qKlxuICogQSBcImdlbmVyaWNcIiBrZXl3b3JkIGlzIHNvbWV0aGluZyBsaWtlIGBoYXMtYmxvY2tgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dFxuICogb2Ygc3ViLWV4cHJlc3Npb24gb3IgYXBwZW5kXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNLZXl3b3JkTm9kZSA9IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcblxuZXhwb3J0IHR5cGUgS2V5d29yZE5vZGUgPVxuICB8IEdlbmVyaWNLZXl3b3JkTm9kZVxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2tcbiAgfCBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIEQgZXh0ZW5kcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD4sXG4gIE91dCA9IHVua25vd25cbj4oa2V5d29yZDogc3RyaW5nLCB0eXBlOiBLLCBkZWxlZ2F0ZTogRCk6IEtleXdvcmQ8SywgT3V0PiB7XG4gIHJldHVybiBuZXcgS2V5d29yZEltcGwoa2V5d29yZCwgdHlwZSwgZGVsZWdhdGUgYXMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaCwgdW5rbm93biwgT3V0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlS2V5d29yZCA9IEtleXdvcmROb2RlO1xudHlwZSBPdXRGb3I8SyBleHRlbmRzIEtleXdvcmQgfCBCbG9ja0tleXdvcmQ+ID0gSyBleHRlbmRzIEJsb2NrS2V5d29yZDxpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogSyBleHRlbmRzIEtleXdvcmQ8S2V5d29yZFR5cGUsIGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBuZXZlcjtcblxuZnVuY3Rpb24gZ2V0Q2FsbGVlRXhwcmVzc2lvbihcbiAgbm9kZTogS2V5d29yZE5vZGUgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZVxuKTogQVNUdjIuRXhwcmVzc2lvbk5vZGUgfCBudWxsIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAvLyBUaGlzIGNvdmVycyB0aGUgaW5zaWRlIG9mIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzIHRoZSBjYWxsZWVcbiAgICAvLyBvZiBjYWxsIG5vZGVzXG4gICAgY2FzZSAnUGF0aCc6XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICBjYXNlICdBcHBlbmRDb250ZW50JzpcbiAgICAgIHJldHVybiBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIG5vZGUuY2FsbGVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlLCBLZXl3b3JkTGlzdCBleHRlbmRzIEtleXdvcmQ8Sz4gPSBuZXZlcj5cbiAgaW1wbGVtZW50cyBLZXl3b3JkPEssIE91dEZvcjxLZXl3b3JkTGlzdD4+IHtcbiAgI2tleXdvcmRzOiBLZXl3b3JkW10gPSBbXTtcbiAgI3R5cGU6IEs7XG5cbiAgY29uc3RydWN0b3IodHlwZTogSykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAga3c8UyBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgT3V0ID0gdW5rbm93bj4oXG4gICAgbmFtZTogUyxcbiAgICBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+XG4gICk6IEtleXdvcmRzPEssIEtleXdvcmRMaXN0IHwgS2V5d29yZDxLLCBPdXQ+PiB7XG4gICAgdGhpcy4ja2V5d29yZHMucHVzaChrZXl3b3JkKG5hbWUsIHRoaXMuI3R5cGUsIGRlbGVnYXRlKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRyYW5zbGF0ZShcbiAgICBub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSxcbiAgICBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlXG4gICk6IFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PiB8IG51bGwge1xuICAgIGZvciAobGV0IGtleXdvcmQgb2YgdGhpcy4ja2V5d29yZHMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBrZXl3b3JkLnRyYW5zbGF0ZShub2RlLCBzdGF0ZSkgYXMgUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+O1xuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0Q2FsbGVlRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICYmIHBhdGgudHlwZSA9PT0gJ1BhdGgnICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJyAmJiBpc0tleXdvcmQocGF0aC5yZWYubmFtZSkpIHtcbiAgICAgIGxldCB7IG5hbWUgfSA9IHBhdGgucmVmO1xuXG4gICAgICBsZXQgdXNlZFR5cGUgPSB0aGlzLiN0eXBlO1xuICAgICAgbGV0IHZhbGlkVHlwZXMgPSBLRVlXT1JEU19UWVBFU1tuYW1lXTtcblxuICAgICAgaWYgKHZhbGlkVHlwZXMuaW5kZXhPZih1c2VkVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtuYW1lfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyAke1xuICAgICAgICAgICAgICB0eXBlc1RvUmVhZGFibGVOYW1lW3VzZWRUeXBlXVxuICAgICAgICAgICAgfSwgYnV0IGl0cyB2YWxpZCB1c2FnZXMgYXJlOlxcblxcbiR7Z2VuZXJhdGVUeXBlc01lc3NhZ2UoXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbGlkVHlwZXNcbiAgICAgICAgICAgICl9XFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHR5cGVzVG9SZWFkYWJsZU5hbWUgPSB7XG4gIEFwcGVuZDogJ2FuIGFwcGVuZCBzdGF0ZW1lbnQnLFxuICBCbG9jazogJ2EgYmxvY2sgc3RhdGVtZW50JyxcbiAgQ2FsbDogJ2EgY2FsbCBleHByZXNzaW9uJyxcbiAgTW9kaWZpZXI6ICdhIG1vZGlmaWVyJyxcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVHlwZXNNZXNzYWdlKG5hbWU6IHN0cmluZywgdHlwZXM6IEtleXdvcmRUeXBlW10pOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZXNcbiAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXBwZW5kJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gYXBwZW5kIHN0YXRlbWVudCwgYXMgaW46IHt7JHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIGJsb2NrIHN0YXRlbWVudCwgYXMgaW46IHt7IyR7bmFtZX19fXt7LyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0NhbGwnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBleHByZXNzaW9uLCBhcyBpbjogKCR7bmFtZX0pYDtcbiAgICAgICAgY2FzZSAnTW9kaWZpZXInOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIG1vZGlmaWVyLCBhcyBpbjogPGRpdiB7eyR7bmFtZX19fT48L2Rpdj5gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBleGhhdXN0ZWQodHlwZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMga2V5d29yZCBkZWZpbml0aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgQVNUIG5vZGUgKGBLZXl3b3JkVHlwZWApLlxuICpcbiAqIFlvdSBjYW4gYnVpbGQga2V5d29yZCBkZWZpbml0aW9ucyBmb3I6XG4gKlxuICogLSBgRXhwcmA6IEEgYFN1YkV4cHJlc3Npb25gIG9yIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEJsb2NrYDogQSBgQmxvY2tTdGF0ZW1lbnRgXG4gKiAgIC0gQSBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYVxuICogICAgIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEFwcGVuZGA6IEFuIGBBcHBlbmRTdGF0ZW1lbnRgXG4gKlxuICogQSBub2RlIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWY6XG4gKlxuICogLSBBIGBQYXRoRXhwcmVzc2lvbmAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdCBoYXMgbm8gdGFpbCwgYW5kIGl0c1xuICogICBoZWFkIGV4cHJlc3Npb24gaXMgYSBgTG9jYWxWYXJIZWFkYCBvciBgRnJlZVZhckhlYWRgIHdob3NlIG5hbWUgaXNcbiAqICAgdGhlIGtleXdvcmQncyBuYW1lLlxuICogLSBBIGBTdWJFeHByZXNzaW9uYCwgYEFwcGVuZFN0YXRlbWVudGAsIG9yIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkXG4gKiAgIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlLlxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGd1YXJhbnRlZXMgdGhhdDpcbiAqXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgYSBrZXl3b3JkIGNhbmRpZGF0ZSwgaXQgaXMgbmV2ZXIgcGFzc2VkIHRvIGFueSBrZXl3b3JkJ3NcbiAqICAgYGFzc2VydGAgbWV0aG9kLlxuICogLSBJZiBhIG5vZGUgaXMgbm90IHRoZSBgS2V5d29yZFR5cGVgIGZvciBhIHBhcnRpY3VsYXIga2V5d29yZCwgaXQgd2lsbCBub3RcbiAqICAgYmUgcGFzc2VkIHRvIHRoZSBrZXl3b3JkJ3MgYGFzc2VydGAgbWV0aG9kLlxuICpcbiAqIGBFeHByYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBleHByZXNzaW9uIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVJcbiAqIGV4cHJlc3Npb25zLiBgQmxvY2tgIGFuZCBgQXBwZW5kYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBzdGF0ZW1lbnRcbiAqIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVIgc3RhdGVtZW50cy5cbiAqXG4gKiBBIGtleXdvcmQgZGVmaW5pdGlvbiBoYXMgdHdvIHBhcnRzOlxuICpcbiAqIC0gYG1hdGNoYCwgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIEFTVCBub2RlIG1hdGNoZXMgdGhlIGtleXdvcmQsIGFuZCBjYW5cbiAqICAgb3B0aW9uYWxseSByZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSB0aGUgQVNUIG5vZGUuXG4gKiAtIGB0cmFuc2xhdGVgLCB3aGljaCB0YWtlcyBhIG1hdGNoaW5nIEFTVCBub2RlIGFzIHdlbGwgYXMgdGhlIGV4dHJhY3RlZFxuICogICBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBISVIgaW5zdHJ1Y3Rpb24uXG4gKlxuICogIyBFeGFtcGxlXG4gKlxuICogVGhpcyBrZXl3b3JkOlxuICpcbiAqIC0gdHVybnMgYChoZWxsbylgIGludG8gYFwiaGVsbG9cImBcbiAqICAgLSBhcyBsb25nIGFzIGBoZWxsb2AgaXMgbm90IGluIHNjb3BlXG4gKiAtIG1ha2VzIGl0IGFuIGVycm9yIHRvIHBhc3MgYW55IGFyZ3VtZW50cyAoc3VjaCBhcyBgKGhlbGxvIHdvcmxkKWApXG4gKlxuICogYGBgdHNcbiAqIGtleXdvcmRzKCdTdWJFeHByJykua3coJ2hlbGxvJywge1xuICogICBhc3NlcnQobm9kZTogRXhwcktleXdvcmROb2RlKTogUmVzdWx0PHZvaWQ+IHwgZmFsc2Uge1xuICogICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJhbnNmb3JtIGBoZWxsb2AgYXMgYSBgUGF0aEV4cHJlc3Npb25gXG4gKiAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICAvLyBub2RlLmhlYWQgd291bGQgYmUgYExvY2FsVmFySGVhZGAgaWYgYGhlbGxvYCB3YXMgaW4gc2NvcGVcbiAqICAgICBpZiAobm9kZS5oZWFkLnR5cGUgIT09ICdGcmVlVmFySGVhZCcpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggfHwgbm9kZS5oYXNoKSB7XG4gKiAgICAgICByZXR1cm4gRXJyKGdlbmVyYXRlU3ludGF4RXJyb3IoYChoZWxsbykgZG9lcyBub3QgdGFrZSBhbnkgYXJndW1lbnRzYCksIG5vZGUubG9jKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgcmV0dXJuIE9rKCk7XG4gKiAgICAgfVxuICogICB9LFxuICpcbiAqICAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLlN1YkV4cHJlc3Npb24pOiBoaXIuRXhwcmVzc2lvbiB7XG4gKiAgICAgcmV0dXJuIEFTVHYyLmJ1aWxkZXJzLmxpdGVyYWwoXCJoZWxsb1wiLCBub2RlLmxvYylcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBpcyB0aGUgcmlnaHRcbiAqIHR5cGUgYmVmb3JlIGNhbGxpbmcgYGFzc2VydGAsIHNvIHlvdSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgYFN1YkV4cHJlc3Npb25gXG4gKiBhbmQgYFBhdGhFeHByZXNzaW9uYCBoZXJlLiBJdCBhbHNvIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBwYXNzZWRcbiAqIHRvIGBhc3NlcnRgIGhhcyB0aGUga2V5d29yZCBuYW1lIGluIHRoZSByaWdodCBwbGFjZS5cbiAqXG4gKiBOb3RlIHRoZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHJldHVybmluZyBgZmFsc2VgIGZyb20gYGFzc2VydGAsXG4gKiB3aGljaCBqdXN0IG1lYW5zIHRoYXQgdGhlIG5vZGUgZGlkbid0IG1hdGNoLCBhbmQgcmV0dXJuaW5nIGBFcnJgLCB3aGljaFxuICogbWVhbnMgdGhhdCB0aGUgbm9kZSBtYXRjaGVkLCBidXQgdGhlcmUgd2FzIGEga2V5d29yZC1zcGVjaWZpYyBzeW50YXhcbiAqIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlPih0eXBlOiBLKTogS2V5d29yZHM8Sz4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRzKHR5cGUpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -1,5 +0,5 @@

export { precompile, precompileJSON } from './lib/compiler';
export { defaultId, precompile, precompileJSON } from './lib/compiler';
export { ProgramSymbols, buildStatement, buildStatements, s, c, unicode, NEWLINE } from './lib/builder/builder'; // exported only for tests
export { default as WireFormatDebugger } from './lib/wire-format-debug';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsVUFBVCxFQUFxQixjQUFyQixRQUE4RCxnQkFBOUQ7QUFDQSxTQUNFLGNBREYsRUFFRSxjQUZGLEVBR0UsZUFIRixFQUlFLENBSkYsRUFLRSxDQUxGLEVBTUUsT0FORixFQU9FLE9BUEYsUUFRTyx1QkFSUCxDLENBV0E7O0FBQ0EsU0FBUyxPQUFPLElBQUksa0JBQXBCLFFBQThDLHlCQUE5QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHByZWNvbXBpbGUsIHByZWNvbXBpbGVKU09OLCBQcmVjb21waWxlT3B0aW9ucyB9IGZyb20gJy4vbGliL2NvbXBpbGVyJztcbmV4cG9ydCB7XG4gIFByb2dyYW1TeW1ib2xzLFxuICBidWlsZFN0YXRlbWVudCxcbiAgYnVpbGRTdGF0ZW1lbnRzLFxuICBzLFxuICBjLFxuICB1bmljb2RlLFxuICBORVdMSU5FLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2J1aWxkZXInO1xuZXhwb3J0IHsgQnVpbGRlclN0YXRlbWVudCwgQnVpbGRlciB9IGZyb20gJy4vbGliL2J1aWxkZXIvYnVpbGRlci1pbnRlcmZhY2UnO1xuXG4vLyBleHBvcnRlZCBvbmx5IGZvciB0ZXN0c1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXaXJlRm9ybWF0RGVidWdnZXIgfSBmcm9tICcuL2xpYi93aXJlLWZvcm1hdC1kZWJ1Zyc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsU0FBVCxFQUFvQixVQUFwQixFQUFnQyxjQUFoQyxRQUF5RSxnQkFBekU7QUFDQSxTQUNFLGNBREYsRUFFRSxjQUZGLEVBR0UsZUFIRixFQUlFLENBSkYsRUFLRSxDQUxGLEVBTUUsT0FORixFQU9FLE9BUEYsUUFRTyx1QkFSUCxDLENBV0E7O0FBQ0EsU0FBUyxPQUFPLElBQUksa0JBQXBCLFFBQThDLHlCQUE5QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHRJZCwgcHJlY29tcGlsZSwgcHJlY29tcGlsZUpTT04sIFByZWNvbXBpbGVPcHRpb25zIH0gZnJvbSAnLi9saWIvY29tcGlsZXInO1xuZXhwb3J0IHtcbiAgUHJvZ3JhbVN5bWJvbHMsXG4gIGJ1aWxkU3RhdGVtZW50LFxuICBidWlsZFN0YXRlbWVudHMsXG4gIHMsXG4gIGMsXG4gIHVuaWNvZGUsXG4gIE5FV0xJTkUsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvYnVpbGRlcic7XG5leHBvcnQgeyBCdWlsZGVyU3RhdGVtZW50LCBCdWlsZGVyIH0gZnJvbSAnLi9saWIvYnVpbGRlci9idWlsZGVyLWludGVyZmFjZSc7XG5cbi8vIGV4cG9ydGVkIG9ubHkgZm9yIHRlc3RzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFdpcmVGb3JtYXREZWJ1Z2dlciB9IGZyb20gJy4vbGliL3dpcmUtZm9ybWF0LWRlYnVnJztcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -5,2 +5,28 @@ import { normalize, Source } from '@glimmer/syntax';

import { visit as pass2 } from './passes/2-encoding/index';
export const defaultId = (() => {
let req = typeof module === 'object' && typeof module.require === 'function' ? module.require : require;
if (req) {
try {
const crypto = req('crypto');
let idFn = src => {
let hash = crypto.createHash('sha1');
hash.update(src, 'utf8'); // trim to 6 bytes of data (2^48 - 1)
return hash.digest('base64').substring(0, 8);
};
idFn('test');
return idFn;
} catch (e) {}
}
return function idFn() {
return null;
};
})();
const defaultOptions = {
id: defaultId
};
/*

@@ -21,3 +47,3 @@ * Compile a string into a template javascript string.

export function precompileJSON(string, options = {}) {
export function precompileJSON(string, options = defaultOptions) {
var _a, _b;

@@ -61,3 +87,3 @@

export function precompile(source, options = {}) {
export function precompile(source, options = defaultOptions) {
var _a, _b;

@@ -67,4 +93,6 @@

let moduleName = (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName;
let idFn = options.id || defaultId;
let blockJSON = JSON.stringify(block);
let templateJSONObject = {
id: idFn(JSON.stringify(options.meta) + blockJSON),
block: blockJSON,

@@ -94,2 +122,2 @@ moduleName: moduleName !== null && moduleName !== void 0 ? moduleName : '(unknown template module)',

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxTQUFTLFNBQVQsRUFBdUMsTUFBdkMsUUFBcUQsaUJBQXJEO0FBQ0EsU0FBUyxZQUFULFFBQTZCLGVBQTdCO0FBRUEsT0FBTyxLQUFQLE1BQWtCLGdDQUFsQjtBQUNBLFNBQVMsS0FBSyxJQUFJLEtBQWxCLFFBQStCLDJCQUEvQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7QUFjQSxPQUFNLFNBQVUsY0FBVixDQUNKLE1BREksRUFFSixPQUFBLEdBQTZCLEVBRnpCLEVBRTJCOzs7QUFFL0IsTUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFKLENBQVcsTUFBWCxFQUFpQixDQUFBLEVBQUEsR0FBRSxPQUFPLENBQUMsSUFBVixNQUFjLElBQWQsSUFBYyxFQUFBLEtBQUEsS0FBQSxDQUFkLEdBQWMsS0FBQSxDQUFkLEdBQWMsRUFBQSxDQUFFLFVBQWpDLENBQWI7QUFDQSxNQUFJLENBQUMsR0FBRCxFQUFNLE1BQU4sSUFBZ0IsU0FBUyxDQUFDLE1BQUQsRUFBUyxPQUFULENBQTdCO0FBQ0EsTUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQUQsRUFBUyxHQUFULEVBQVksQ0FBQSxFQUFBLEdBQUUsT0FBTyxDQUFDLFVBQVYsTUFBb0IsSUFBcEIsSUFBb0IsRUFBQSxLQUFBLEtBQUEsQ0FBcEIsR0FBb0IsRUFBcEIsR0FBd0IsS0FBcEMsQ0FBTCxDQUFnRCxLQUFoRCxDQUF1RCxPQUFELElBQVk7QUFDNUUsV0FBTyxLQUFLLENBQUMsT0FBRCxDQUFaO0FBQ0QsR0FGVyxDQUFaOztBQUlBO0FBQUE7QUFBQSxJQUFzQjtBQUNwQixJQUFBLFlBQVksQ0FBQyxHQUFiLENBQWlCLGFBQWpCLEVBQWdDLEtBQWhDO0FBQ0Q7O0FBRUQsTUFBSSxLQUFLLENBQUMsSUFBVixFQUFnQjtBQUNkLFdBQU8sQ0FBQyxLQUFLLENBQUMsS0FBUCxFQUFjLE1BQWQsQ0FBUDtBQUNELEdBRkQsTUFFTztBQUNMLFVBQU0sS0FBSyxDQUFDLE1BQVo7QUFDRDtBQUNGLEMsQ0FFRDtBQUNBOztBQUNBLE1BQU0saUJBQWlCLEdBQUcsc0NBQTFCO0FBRUE7Ozs7Ozs7Ozs7Ozs7OztBQWNBLE9BQU0sU0FBVSxVQUFWLENBQXFCLE1BQXJCLEVBQXFDLE9BQUEsR0FBNkIsRUFBbEUsRUFBb0U7OztBQUN4RSxNQUFJLENBQUMsS0FBRCxFQUFRLFVBQVIsSUFBc0IsY0FBYyxDQUFDLE1BQUQsRUFBUyxPQUFULENBQXhDO0FBRUEsTUFBSSxVQUFVLEdBQUEsQ0FBQSxFQUFBLEdBQUcsT0FBTyxDQUFDLElBQVgsTUFBZSxJQUFmLElBQWUsRUFBQSxLQUFBLEtBQUEsQ0FBZixHQUFlLEtBQUEsQ0FBZixHQUFlLEVBQUEsQ0FBRSxVQUEvQjtBQUNBLE1BQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFMLENBQWUsS0FBZixDQUFoQjtBQUNBLE1BQUksa0JBQWtCLEdBQW9DO0FBQ3hELElBQUEsS0FBSyxFQUFFLFNBRGlEO0FBRXhELElBQUEsVUFBVSxFQUFFLFVBQVUsS0FBQSxJQUFWLElBQUEsVUFBVSxLQUFBLEtBQUEsQ0FBVixHQUFBLFVBQUEsR0FBYywyQkFGOEI7QUFHeEQ7QUFDQTtBQUNBLElBQUEsS0FBSyxFQUFHLGlCQUxnRDtBQU14RCxJQUFBLFlBQVksRUFBQSxDQUFBLEVBQUEsR0FBRSxPQUFPLENBQUMsVUFBVixNQUFvQixJQUFwQixJQUFvQixFQUFBLEtBQUEsS0FBQSxDQUFwQixHQUFvQixFQUFwQixHQUF3QjtBQU5vQixHQUExRDs7QUFTQSxNQUFJLENBQUMsT0FBTyxDQUFDLFVBQWIsRUFBeUI7QUFDdkIsV0FBTyxrQkFBa0IsQ0FBQyxLQUExQjtBQUNELEdBaEJ1RSxDQWtCeEU7OztBQUNBLE1BQUksV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFMLENBQWUsa0JBQWYsQ0FBbEI7O0FBRUEsTUFBSSxPQUFPLENBQUMsVUFBUixJQUFzQixVQUFVLENBQUMsTUFBWCxHQUFvQixDQUE5QyxFQUFpRDtBQUMvQyxRQUFJLE9BQU8sR0FBRyxRQUFRLFVBQVUsQ0FBQyxJQUFYLENBQWdCLEdBQWhCLENBQW9CLEdBQTFDO0FBRUEsSUFBQSxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQVosQ0FBb0IsSUFBSSxpQkFBaUIsR0FBekMsRUFBOEMsT0FBOUMsQ0FBZDtBQUNELEdBSkQsTUFJTztBQUNMLElBQUEsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFaLENBQW9CLElBQUksaUJBQWlCLEdBQXpDLEVBQThDLE1BQTlDLENBQWQ7QUFDRDs7QUFFRCxTQUFPLFdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLFxuICBUZW1wbGF0ZUphdmFzY3JpcHQsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgUHJlY29tcGlsZU9wdGlvbnMsIFNvdXJjZSB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBMT0NBTF9MT0dHRVIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHBhc3MwIGZyb20gJy4vcGFzc2VzLzEtbm9ybWFsaXphdGlvbi9pbmRleCc7XG5pbXBvcnQgeyB2aXNpdCBhcyBwYXNzMiB9IGZyb20gJy4vcGFzc2VzLzItZW5jb2RpbmcvaW5kZXgnO1xuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmcuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqICAgICBpbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuICogICAgIGltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ2dsaW1tZXItcnVudGltZSc7XG4gKiAgICAgbGV0IHRlbXBsYXRlSnMgPSBwcmVjb21waWxlKFwiSG93ZHkge3tuYW1lfX1cIik7XG4gKiAgICAgbGV0IGZhY3RvcnkgPSB0ZW1wbGF0ZUZhY3RvcnkobmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVKcykoKSk7XG4gKiAgICAgbGV0IHRlbXBsYXRlID0gZmFjdG9yeS5jcmVhdGUoZW52KTtcbiAqXG4gKiBAbWV0aG9kIHByZWNvbXBpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgYSBHbGltbWVyIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlSlNPTihcbiAgc3RyaW5nOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge31cbik6IFtibG9jazogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssIHVzZWRMb2NhbHM6IHN0cmluZ1tdXSB7XG4gIGxldCBzb3VyY2UgPSBuZXcgU291cmNlKHN0cmluZywgb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lKTtcbiAgbGV0IFthc3QsIGxvY2Fsc10gPSBub3JtYWxpemUoc291cmNlLCBvcHRpb25zKTtcbiAgbGV0IGJsb2NrID0gcGFzczAoc291cmNlLCBhc3QsIG9wdGlvbnMuc3RyaWN0TW9kZSA/PyBmYWxzZSkubWFwT2soKHBhc3MySW4pID0+IHtcbiAgICByZXR1cm4gcGFzczIocGFzczJJbik7XG4gIH0pO1xuXG4gIGlmIChMT0NBTF9TSE9VTERfTE9HKSB7XG4gICAgTE9DQUxfTE9HR0VSLmxvZyhgVGVtcGxhdGUgLT5gLCBibG9jayk7XG4gIH1cblxuICBpZiAoYmxvY2suaXNPaykge1xuICAgIHJldHVybiBbYmxvY2sudmFsdWUsIGxvY2Fsc107XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgYmxvY2sucmVhc29uO1xuICB9XG59XG5cbi8vIFVVSUQgdXNlZCBhcyBhIHVuaXF1ZSBwbGFjZWhvbGRlciBmb3IgcGxhY2luZyBhIHNuaXBwZXQgb2YgSlMgY29kZSBpbnRvXG4vLyB0aGUgb3RoZXJ3aXNlIEpTT04gc3RyaW5naWZpZWQgdmFsdWUgYmVsb3cuXG5jb25zdCBTQ09QRV9QTEFDRUhPTERFUiA9ICc3OTZkMjRlNi0yNDUwLTRmYjAtOGNkZi1iNjU2MzhiNWVmNzAnO1xuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmcuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqICAgICBpbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuICogICAgIGltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ2dsaW1tZXItcnVudGltZSc7XG4gKiAgICAgbGV0IHRlbXBsYXRlSnMgPSBwcmVjb21waWxlKFwiSG93ZHkge3tuYW1lfX1cIik7XG4gKiAgICAgbGV0IGZhY3RvcnkgPSB0ZW1wbGF0ZUZhY3RvcnkobmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVKcykoKSk7XG4gKiAgICAgbGV0IHRlbXBsYXRlID0gZmFjdG9yeS5jcmVhdGUoZW52KTtcbiAqXG4gKiBAbWV0aG9kIHByZWNvbXBpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgYSBHbGltbWVyIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IHt9KTogVGVtcGxhdGVKYXZhc2NyaXB0IHtcbiAgbGV0IFtibG9jaywgdXNlZExvY2Fsc10gPSBwcmVjb21waWxlSlNPTihzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGxldCBtb2R1bGVOYW1lID0gb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lO1xuICBsZXQgYmxvY2tKU09OID0gSlNPTi5zdHJpbmdpZnkoYmxvY2spO1xuICBsZXQgdGVtcGxhdGVKU09OT2JqZWN0OiBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrID0ge1xuICAgIGJsb2NrOiBibG9ja0pTT04sXG4gICAgbW9kdWxlTmFtZTogbW9kdWxlTmFtZSA/PyAnKHVua25vd24gdGVtcGxhdGUgbW9kdWxlKScsXG4gICAgLy8gbHlpbmcgdG8gdGhlIHR5cGUgY2hlY2tlciBoZXJlIGJlY2F1c2Ugd2UncmUgZ29pbmcgdG9cbiAgICAvLyByZXBsYWNlIGl0IGp1c3QgYmVsb3csIGFmdGVyIHN0cmluZ2lmaWNhdGlvblxuICAgIHNjb3BlOiAoU0NPUEVfUExBQ0VIT0xERVIgYXMgdW5rbm93bikgYXMgbnVsbCxcbiAgICBpc1N0cmljdE1vZGU6IG9wdGlvbnMuc3RyaWN0TW9kZSA/PyBmYWxzZSxcbiAgfTtcblxuICBpZiAoIW9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIGRlbGV0ZSB0ZW1wbGF0ZUpTT05PYmplY3Quc2NvcGU7XG4gIH1cblxuICAvLyBKU09OIGlzIGphdmFzY3JpcHRcbiAgbGV0IHN0cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcblxuICBpZiAob3B0aW9ucy5zdHJpY3RNb2RlICYmIHVzZWRMb2NhbHMubGVuZ3RoID4gMCkge1xuICAgIGxldCBzY29wZUZuID0gYCgpPT5bJHt1c2VkTG9jYWxzLmpvaW4oJywnKX1dYDtcblxuICAgIHN0cmluZ2lmaWVkID0gc3RyaW5naWZpZWQucmVwbGFjZShgXCIke1NDT1BFX1BMQUNFSE9MREVSfVwiYCwgc2NvcGVGbik7XG4gIH0gZWxzZSB7XG4gICAgc3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZC5yZXBsYWNlKGBcIiR7U0NPUEVfUExBQ0VIT0xERVJ9XCJgLCAnbnVsbCcpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZ2lmaWVkO1xufVxuXG5leHBvcnQgeyBQcmVjb21waWxlT3B0aW9ucyB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxTQUFTLFNBQVQsRUFBdUMsTUFBdkMsUUFBbUUsaUJBQW5FO0FBQ0EsU0FBUyxZQUFULFFBQTZCLGVBQTdCO0FBRUEsT0FBTyxLQUFQLE1BQWtCLGdDQUFsQjtBQUNBLFNBQVMsS0FBSyxJQUFJLEtBQWxCLFFBQStCLDJCQUEvQjtBQWNBLE9BQU8sTUFBTSxTQUFTLEdBQWlCLENBQUMsTUFBSztBQUMzQyxNQUFJLEdBQUcsR0FDTCxPQUFPLE1BQVAsS0FBa0IsUUFBbEIsSUFBOEIsT0FBTyxNQUFNLENBQUMsT0FBZCxLQUEwQixVQUF4RCxHQUFxRSxNQUFNLENBQUMsT0FBNUUsR0FBc0YsT0FEeEY7O0FBR0EsTUFBSSxHQUFKLEVBQVM7QUFDUCxRQUFJO0FBQ0YsWUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQUQsQ0FBbEI7O0FBRUEsVUFBSSxJQUFJLEdBQWtCLEdBQUQsSUFBUTtBQUMvQixZQUFJLElBQUksR0FBRyxNQUFNLENBQUMsVUFBUCxDQUFrQixNQUFsQixDQUFYO0FBQ0EsUUFBQSxJQUFJLENBQUMsTUFBTCxDQUFZLEdBQVosRUFBaUIsTUFBakIsRUFGK0IsQ0FHL0I7O0FBQ0EsZUFBTyxJQUFJLENBQUMsTUFBTCxDQUFZLFFBQVosRUFBc0IsU0FBdEIsQ0FBZ0MsQ0FBaEMsRUFBbUMsQ0FBbkMsQ0FBUDtBQUNELE9BTEQ7O0FBT0EsTUFBQSxJQUFJLENBQUMsTUFBRCxDQUFKO0FBRUEsYUFBTyxJQUFQO0FBQ0QsS0FiRCxDQWFFLE9BQU8sQ0FBUCxFQUFVLENBQUU7QUFDZjs7QUFFRCxTQUFPLFNBQVMsSUFBVCxHQUFhO0FBQ2xCLFdBQU8sSUFBUDtBQUNELEdBRkQ7QUFHRCxDQXhCc0MsR0FBaEM7QUEwQlAsTUFBTSxjQUFjLEdBQXNCO0FBQ3hDLEVBQUEsRUFBRSxFQUFFO0FBRG9DLENB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LFdBQVcsQ0FBQyxPQUFaLENBQW9CLElBQUksaUJBQWlCLEdBQXpDLEVBQThDLE9BQTlDLENBQWQ7QUFDRCxHQUpELE1BSU87QUFDTCxJQUFBLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBWixDQUFvQixJQUFJLGlCQUFpQixHQUF6QyxFQUE4QyxNQUE5QyxDQUFkO0FBQ0Q7O0FBRUQsU0FBTyxXQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayxcbiAgVGVtcGxhdGVKYXZhc2NyaXB0LFxufSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IExPQ0FMX1NIT1VMRF9MT0cgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBub3JtYWxpemUsIFByZWNvbXBpbGVPcHRpb25zLCBTb3VyY2UsIFRlbXBsYXRlSWRGbiB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBMT0NBTF9MT0dHRVIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHBhc3MwIGZyb20gJy4vcGFzc2VzLzEtbm9ybWFsaXphdGlvbi9pbmRleCc7XG5pbXBvcnQgeyB2aXNpdCBhcyBwYXNzMiB9IGZyb20gJy4vcGFzc2VzLzItZW5jb2RpbmcvaW5kZXgnO1xuXG5kZWNsYXJlIGZ1bmN0aW9uIHJlcXVpcmUoaWQ6ICdjcnlwdG8nKTogQ3J5cHRvO1xuZGVjbGFyZSBmdW5jdGlvbiByZXF1aXJlKGlkOiBzdHJpbmcpOiB1bmtub3duO1xuXG5pbnRlcmZhY2UgQ3J5cHRvIHtcbiAgY3JlYXRlSGFzaChcbiAgICBhbGc6ICdzaGExJ1xuICApOiB7XG4gICAgdXBkYXRlKHNyYzogc3RyaW5nLCBlbmNvZGluZzogJ3V0ZjgnKTogdm9pZDtcbiAgICBkaWdlc3QoZW5jb2Rpbmc6ICdiYXNlNjQnKTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdElkOiBUZW1wbGF0ZUlkRm4gPSAoKCkgPT4ge1xuICBsZXQgcmVxOiB0eXBlb2YgcmVxdWlyZSB8IHVuZGVmaW5lZCA9XG4gICAgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZS5yZXF1aXJlID09PSAnZnVuY3Rpb24nID8gbW9kdWxlLnJlcXVpcmUgOiByZXF1aXJlO1xuXG4gIGlmIChyZXEpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3J5cHRvID0gcmVxKCdjcnlwdG8nKTtcblxuICAgICAgbGV0IGlkRm46IFRlbXBsYXRlSWRGbiA9IChzcmMpID0+IHtcbiAgICAgICAgbGV0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMScpO1xuICAgICAgICBoYXNoLnVwZGF0ZShzcmMsICd1dGY4Jyk7XG4gICAgICAgIC8vIHRyaW0gdG8gNiBieXRlcyBvZiBkYXRhICgyXjQ4IC0gMSlcbiAgICAgICAgcmV0dXJuIGhhc2guZGlnZXN0KCdiYXNlNjQnKS5zdWJzdHJpbmcoMCwgOCk7XG4gICAgICB9O1xuXG4gICAgICBpZEZuKCd0ZXN0Jyk7XG5cbiAgICAgIHJldHVybiBpZEZuO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gaWRGbigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0pKCk7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IHtcbiAgaWQ6IGRlZmF1bHRJZCxcbn07XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGVKU09OKFxuICBzdHJpbmc6IHN0cmluZyxcbiAgb3B0aW9uczogUHJlY29tcGlsZU9wdGlvbnMgPSBkZWZhdWx0T3B0aW9uc1xuKTogW2Jsb2NrOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jaywgdXNlZExvY2Fsczogc3RyaW5nW11dIHtcbiAgbGV0IHNvdXJjZSA9IG5ldyBTb3VyY2Uoc3RyaW5nLCBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWUpO1xuICBsZXQgW2FzdCwgbG9jYWxzXSA9IG5vcm1hbGl6ZShzb3VyY2UsIG9wdGlvbnMpO1xuICBsZXQgYmxvY2sgPSBwYXNzMChzb3VyY2UsIGFzdCwgb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlKS5tYXBPaygocGFzczJJbikgPT4ge1xuICAgIHJldHVybiBwYXNzMihwYXNzMkluKTtcbiAgfSk7XG5cbiAgaWYgKExPQ0FMX1NIT1VMRF9MT0cpIHtcbiAgICBMT0NBTF9MT0dHRVIubG9nKGBUZW1wbGF0ZSAtPmAsIGJsb2NrKTtcbiAgfVxuXG4gIGlmIChibG9jay5pc09rKSB7XG4gICAgcmV0dXJuIFtibG9jay52YWx1ZSwgbG9jYWxzXTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBibG9jay5yZWFzb247XG4gIH1cbn1cblxuLy8gVVVJRCB1c2VkIGFzIGEgdW5pcXVlIHBsYWNlaG9sZGVyIGZvciBwbGFjaW5nIGEgc25pcHBldCBvZiBKUyBjb2RlIGludG9cbi8vIHRoZSBvdGhlcndpc2UgSlNPTiBzdHJpbmdpZmllZCB2YWx1ZSBiZWxvdy5cbmNvbnN0IFNDT1BFX1BMQUNFSE9MREVSID0gJzc5NmQyNGU2LTI0NTAtNGZiMC04Y2RmLWI2NTYzOGI1ZWY3MCc7XG5cbi8qXG4gKiBDb21waWxlIGEgc3RyaW5nIGludG8gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogICAgIGltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICdAZ2xpbW1lci9jb21waWxlcic7XG4gKiAgICAgaW1wb3J0IHsgdGVtcGxhdGVGYWN0b3J5IH0gZnJvbSAnZ2xpbW1lci1ydW50aW1lJztcbiAqICAgICBsZXQgdGVtcGxhdGVKcyA9IHByZWNvbXBpbGUoXCJIb3dkeSB7e25hbWV9fVwiKTtcbiAqICAgICBsZXQgZmFjdG9yeSA9IHRlbXBsYXRlRmFjdG9yeShuZXcgRnVuY3Rpb24oXCJyZXR1cm4gXCIgKyB0ZW1wbGF0ZUpzKSgpKTtcbiAqICAgICBsZXQgdGVtcGxhdGUgPSBmYWN0b3J5LmNyZWF0ZShlbnYpO1xuICpcbiAqIEBtZXRob2QgcHJlY29tcGlsZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBhIEdsaW1tZXIgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNvbXBpbGUoXG4gIHNvdXJjZTogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zXG4pOiBUZW1wbGF0ZUphdmFzY3JpcHQge1xuICBsZXQgW2Jsb2NrLCB1c2VkTG9jYWxzXSA9IHByZWNvbXBpbGVKU09OKHNvdXJjZSwgb3B0aW9ucyk7XG5cbiAgbGV0IG1vZHVsZU5hbWUgPSBvcHRpb25zLm1ldGE/Lm1vZHVsZU5hbWU7XG4gIGxldCBpZEZuID0gb3B0aW9ucy5pZCB8fCBkZWZhdWx0SWQ7XG4gIGxldCBibG9ja0pTT04gPSBKU09OLnN0cmluZ2lmeShibG9jayk7XG4gIGxldCB0ZW1wbGF0ZUpTT05PYmplY3Q6IFNlcmlhbGl6ZWRUZW1wbGF0ZVdpdGhMYXp5QmxvY2sgPSB7XG4gICAgaWQ6IGlkRm4oSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5tZXRhKSArIGJsb2NrSlNPTiksXG4gICAgYmxvY2s6IGJsb2NrSlNPTixcbiAgICBtb2R1bGVOYW1lOiBtb2R1bGVOYW1lID8/ICcodW5rbm93biB0ZW1wbGF0ZSBtb2R1bGUpJyxcbiAgICAvLyBseWluZyB0byB0aGUgdHlwZSBjaGVja2VyIGhlcmUgYmVjYXVzZSB3ZSdyZSBnb2luZyB0b1xuICAgIC8vIHJlcGxhY2UgaXQganVzdCBiZWxvdywgYWZ0ZXIgc3RyaW5naWZpY2F0aW9uXG4gICAgc2NvcGU6IChTQ09QRV9QTEFDRUhPTERFUiBhcyB1bmtub3duKSBhcyBudWxsLFxuICAgIGlzU3RyaWN0TW9kZTogb3B0aW9ucy5zdHJpY3RNb2RlID8/IGZhbHNlLFxuICB9O1xuXG4gIGlmICghb3B0aW9ucy5zdHJpY3RNb2RlKSB7XG4gICAgZGVsZXRlIHRlbXBsYXRlSlNPTk9iamVjdC5zY29wZTtcbiAgfVxuXG4gIC8vIEpTT04gaXMgamF2YXNjcmlwdFxuICBsZXQgc3RyaW5naWZpZWQgPSBKU09OLnN0cmluZ2lmeSh0ZW1wbGF0ZUpTT05PYmplY3QpO1xuXG4gIGlmIChvcHRpb25zLnN0cmljdE1vZGUgJiYgdXNlZExvY2Fscy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHNjb3BlRm4gPSBgKCk9Plske3VzZWRMb2NhbHMuam9pbignLCcpfV1gO1xuXG4gICAgc3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZC5yZXBsYWNlKGBcIiR7U0NPUEVfUExBQ0VIT0xERVJ9XCJgLCBzY29wZUZuKTtcbiAgfSBlbHNlIHtcbiAgICBzdHJpbmdpZmllZCA9IHN0cmluZ2lmaWVkLnJlcGxhY2UoYFwiJHtTQ09QRV9QTEFDRUhPTERFUn1cImAsICdudWxsJyk7XG4gIH1cblxuICByZXR1cm4gc3RyaW5naWZpZWQ7XG59XG5cbmV4cG9ydCB7IFByZWNvbXBpbGVPcHRpb25zIH07XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -42,5 +42,5 @@ var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {

let path = getPathExpression(node);
let path = getCalleeExpression(node);
if (path !== null && path.ref.type === 'Free') {
if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {
if (path.tail.length > 0) {

@@ -62,5 +62,5 @@ if (path.ref.resolution.serialize() === 'Loose') {

if (this.match(node)) {
let path = getPathExpression(node);
let path = getCalleeExpression(node);
if (path !== null && path.tail.length > 0) {
if (path !== null && path.type === 'Path' && path.tail.length > 0) {
return Err(generateSyntaxError(`The \`${this.keyword}\` keyword was used incorrectly. It was used as \`${path.loc.asString()}\`, but it cannot be used with additional path segments. \n\nError caused by`, node.loc));

@@ -91,3 +91,3 @@ }

function getPathExpression(node) {
function getCalleeExpression(node) {
switch (node.type) {

@@ -100,3 +100,3 @@ // This covers the inside of attributes and expressions, as well as the callee

case 'AppendContent':
return getPathExpression(node.value);
return getCalleeExpression(node.value);

@@ -106,3 +106,3 @@ case 'Call':

case 'ElementModifier':
return getPathExpression(node.callee);
return node.callee;

@@ -138,5 +138,5 @@ default:

let path = getPathExpression(node);
let path = getCalleeExpression(node);
if (path && path.ref.type === 'Free' && isKeyword(path.ref.name)) {
if (path && path.type === 'Path' && path.ref.type === 'Free' && isKeyword(path.ref.name)) {
let {

@@ -273,2 +273,2 @@ name

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBRUUsbUJBRkYsRUFHRSxTQUhGLEVBSUUsY0FKRixRQU1PLGlCQU5QO0FBT0EsU0FBUyxTQUFULFFBQTBCLGVBQTFCO0FBRUEsU0FBUyxHQUFULFFBQTRCLHdCQUE1Qjs7QUFnQkEsTUFBTSxXQUFOLENBQWlCO0FBUWYsRUFBQSxXQUFBLENBQ1ksT0FEWixFQUVFLElBRkYsRUFHVSxRQUhWLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFKLEVBQVo7O0FBQ0EsU0FBSyxJQUFJLFFBQVQsSUFBcUIsYUFBYSxDQUFDLElBQUQsQ0FBbEMsRUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVY7QUFDRDs7QUFFRCxTQUFLLEtBQUwsR0FBYSxLQUFiO0FBQ0Q7O0FBRVMsRUFBQSxLQUFLLENBQUMsSUFBRCxFQUEyQjtBQUN4QyxRQUFJLENBQUMsS0FBSyxLQUFMLENBQVcsR0FBWCxDQUFlLElBQUksQ0FBQyxJQUFwQixDQUFMLEVBQWdDO0FBQzlCLGFBQU8sS0FBUDtBQUNEOztBQUVELFFBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUQsQ0FBNUI7O0FBRUEsUUFBSSxJQUFJLEtBQUssSUFBVCxJQUFpQixJQUFJLENBQUMsR0FBTCxDQUFTLElBQVQsS0FBa0IsTUFBdkMsRUFBK0M7QUFDN0MsVUFBSSxJQUFJLENBQUMsSUFBTCxDQUFVLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDeEIsWUFBSSxJQUFJLENBQUMsR0FBTCxDQUFTLFVBQVQsQ0FBb0IsU0FBcEIsT0FBb0MsT0FB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Q1QsR0FESSxDQUNDLElBQUQsSUFBUztBQUNaLFlBQVEsSUFBUjtBQUNFLFdBQUssUUFBTDtBQUNFLGVBQU8sc0NBQXNDLElBQUksSUFBakQ7O0FBQ0YsV0FBSyxPQUFMO0FBQ0UsZUFBTyxxQ0FBcUMsSUFBSSxRQUFRLElBQUksSUFBNUQ7O0FBQ0YsV0FBSyxNQUFMO0FBQ0UsZUFBTywrQkFBK0IsSUFBSSxHQUExQzs7QUFDRixXQUFLLFVBQUw7QUFDRSxlQUFPLGtDQUFrQyxJQUFJLFdBQTdDOztBQUNGO0FBQ0UsZUFBTyxTQUFTLENBQUMsSUFBRCxDQUFoQjtBQVZKO0FBWUQsR0FkSSxFQWVKLElBZkksQ0FlQyxNQWZELENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRkEsT0FBTSxTQUFVLFFBQVYsQ0FBMEMsSUFBMUMsRUFBaUQ7QUFDckQsU0FBTyxJQUFJLFFBQUosQ0FBYSxJQUFiLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFTVHYyLFxuICBnZW5lcmF0ZVN5bnRheEVycm9yLFxuICBpc0tleXdvcmQsXG4gIEtFWVdPUkRTX1RZUEVTLFxuICBLZXl3b3JkVHlwZSxcbn0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGV4aGF1c3RlZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBFcnIsIFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9yZXN1bHQnO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vY29udGV4dCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZERlbGVnYXRlPE1hdGNoIGV4dGVuZHMgS2V5d29yZE1hdGNoLCBWLCBPdXQ+IHtcbiAgYXNzZXJ0KG9wdGlvbnM6IE1hdGNoLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PFY+O1xuICB0cmFuc2xhdGUob3B0aW9uczogeyBub2RlOiBNYXRjaDsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LCBwYXJhbTogVik6IFJlc3VsdDxPdXQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQ8SyBleHRlbmRzIEtleXdvcmRUeXBlID0gS2V5d29yZFR5cGUsIE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrS2V5d29yZDxPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5JbnZva2VCbG9jaywgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuY2xhc3MgS2V5d29yZEltcGw8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgUyBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGFyYW0gPSB1bmtub3duLFxuICBPdXQgPSB1bmtub3duXG4+IHtcbiAgcHJvdGVjdGVkIHR5cGVzOiBTZXQ8S2V5d29yZENhbmRpZGF0ZXNbS11bJ3R5cGUnXT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGtleXdvcmQ6IFMsXG4gICAgdHlwZTogS2V5d29yZFR5cGUsXG4gICAgcHJpdmF0ZSBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCBQYXJhbSwgT3V0PlxuICApIHtcbiAgICBsZXQgbm9kZXMgPSBuZXcgU2V0PEtleXdvcmROb2RlWyd0eXBlJ10+KCk7XG4gICAgZm9yIChsZXQgbm9kZVR5cGUgb2YgS0VZV09SRF9OT0RFU1t0eXBlXSkge1xuICAgICAgbm9kZXMuYWRkKG5vZGVUeXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGVzID0gbm9kZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0Y2gobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10pOiBub2RlIGlzIEtleXdvcmRNYXRjaGVzW0tdIHtcbiAgICBpZiAoIXRoaXMudHlwZXMuaGFzKG5vZGUudHlwZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICBpZiAocGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGgucmVmLnJlc29sdXRpb24uc2VyaWFsaXplKCkgPT09ICdMb29zZScpIHtcbiAgICAgICAgICAvLyBjYW5ub3QgYmUgYSBrZXl3b3JkIHJlZmVyZW5jZSwga2V5d29yZHMgZG8gbm90IGFsbG93IHBhdGhzIChtdXN0IGJlXG4gICAgICAgICAgLy8gcmVseWluZyBvbiBpbXBsaWNpdCB0aGlzIGZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke1xuICAgICAgICAgICAgICB0aGlzLmtleXdvcmRcbiAgICAgICAgICAgIH1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgXFxgJHtwYXRoLmxvYy5hc1N0cmluZygpfVxcYCwgYnV0IGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYWRkaXRpb25hbCBwYXRoIHNlZ21lbnRzLiBcXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZGVsZWdhdGUuYXNzZXJ0KG5vZGUsIHN0YXRlKTtcbiAgICAgIHJldHVybiBwYXJhbS5hbmRUaGVuKChwYXJhbSkgPT4gdGhpcy5kZWxlZ2F0ZS50cmFuc2xhdGUoeyBub2RlLCBzdGF0ZSB9LCBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVOb2RlID1cbiAgfCBBU1R2Mi5QYXRoRXhwcmVzc2lvblxuICB8IEFTVHYyLkFwcGVuZENvbnRlbnRcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrO1xuXG5leHBvcnQgY29uc3QgS0VZV09SRF9OT0RFUyA9IHtcbiAgQ2FsbDogWydDYWxsJ10sXG4gIEJsb2NrOiBbJ0ludm9rZUJsb2NrJ10sXG4gIEFwcGVuZDogWydBcHBlbmRDb250ZW50J10sXG4gIE1vZGlmaWVyOiBbJ0VsZW1lbnRNb2RpZmllciddLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkQ2FuZGlkYXRlcyB7XG4gIENhbGw6IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZENhbmRpZGF0ZSA9IEtleXdvcmRDYW5kaWRhdGVzW2tleW9mIEtleXdvcmRDYW5kaWRhdGVzXTtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkTWF0Y2hlcyB7XG4gIENhbGw6IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZE1hdGNoID0gS2V5d29yZE1hdGNoZXNba2V5b2YgS2V5d29yZE1hdGNoZXNdO1xuXG4vKipcbiAqIEEgXCJnZW5lcmljXCIga2V5d29yZCBpcyBzb21ldGhpbmcgbGlrZSBgaGFzLWJsb2NrYCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHRcbiAqIG9mIHN1Yi1leHByZXNzaW9uIG9yIGFwcGVuZFxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljS2V5d29yZE5vZGUgPSBBU1R2Mi5BcHBlbmRDb250ZW50IHwgQVNUdjIuQ2FsbEV4cHJlc3Npb247XG5cbmV4cG9ydCB0eXBlIEtleXdvcmROb2RlID1cbiAgfCBHZW5lcmljS2V5d29yZE5vZGVcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrXG4gIHwgQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBEIGV4dGVuZHMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+LFxuICBPdXQgPSB1bmtub3duXG4+KGtleXdvcmQ6IHN0cmluZywgdHlwZTogSywgZGVsZWdhdGU6IEQpOiBLZXl3b3JkPEssIE91dD4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRJbXBsKGtleXdvcmQsIHR5cGUsIGRlbGVnYXRlIGFzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2gsIHVua25vd24sIE91dD4pO1xufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUtleXdvcmQgPSBLZXl3b3JkTm9kZTtcbnR5cGUgT3V0Rm9yPEsgZXh0ZW5kcyBLZXl3b3JkIHwgQmxvY2tLZXl3b3JkPiA9IEsgZXh0ZW5kcyBCbG9ja0tleXdvcmQ8aW5mZXIgT3V0PlxuICA/IE91dFxuICA6IEsgZXh0ZW5kcyBLZXl3b3JkPEtleXdvcmRUeXBlLCBpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogbmV2ZXI7XG5cbmZ1bmN0aW9uIGdldFBhdGhFeHByZXNzaW9uKG5vZGU6IEtleXdvcmROb2RlIHwgQVNUdjIuRXhwcmVzc2lvbk5vZGUpOiBBU1R2Mi5QYXRoRXhwcmVzc2lvbiB8IG51bGwge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIC8vIFRoaXMgY292ZXJzIHRoZSBpbnNpZGUgb2YgYXR0cmlidXRlcyBhbmQgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgdGhlIGNhbGxlZVxuICAgIC8vIG9mIGNhbGwgbm9kZXNcbiAgICBjYXNlICdQYXRoJzpcbiAgICAgIHJldHVybiBub2RlO1xuICAgIGNhc2UgJ0FwcGVuZENvbnRlbnQnOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIGdldFBhdGhFeHByZXNzaW9uKG5vZGUuY2FsbGVlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSwgS2V5d29yZExpc3QgZXh0ZW5kcyBLZXl3b3JkPEs+ID0gbmV2ZXI+XG4gIGltcGxlbWVudHMgS2V5d29yZDxLLCBPdXRGb3I8S2V5d29yZExpc3Q+PiB7XG4gICNrZXl3b3JkczogS2V5d29yZFtdID0gW107XG4gICN0eXBlOiBLO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IEspIHtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIGt3PFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIE91dCA9IHVua25vd24+KFxuICAgIG5hbWU6IFMsXG4gICAgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PlxuICApOiBLZXl3b3JkczxLLCBLZXl3b3JkTGlzdCB8IEtleXdvcmQ8SywgT3V0Pj4ge1xuICAgIHRoaXMuI2tleXdvcmRzLnB1c2goa2V5d29yZChuYW1lLCB0aGlzLiN0eXBlLCBkZWxlZ2F0ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0cmFuc2xhdGUoXG4gICAgbm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj4gfCBudWxsIHtcbiAgICBmb3IgKGxldCBrZXl3b3JkIG9mIHRoaXMuI2tleXdvcmRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0ga2V5d29yZC50cmFuc2xhdGUobm9kZSwgc3RhdGUpIGFzIFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PjtcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldFBhdGhFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnICYmIGlzS2V5d29yZChwYXRoLnJlZi5uYW1lKSkge1xuICAgICAgbGV0IHsgbmFtZSB9ID0gcGF0aC5yZWY7XG5cbiAgICAgIGxldCB1c2VkVHlwZSA9IHRoaXMuI3R5cGU7XG4gICAgICBsZXQgdmFsaWRUeXBlcyA9IEtFWVdPUkRTX1RZUEVTW25hbWVdO1xuXG4gICAgICBpZiAodmFsaWRUeXBlcy5pbmRleE9mKHVzZWRUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke25hbWV9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzICR7XG4gICAgICAgICAgICAgIHR5cGVzVG9SZWFkYWJsZU5hbWVbdXNlZFR5cGVdXG4gICAgICAgICAgICB9LCBidXQgaXRzIHZhbGlkIHVzYWdlcyBhcmU6XFxuXFxuJHtnZW5lcmF0ZVR5cGVzTWVzc2FnZShcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsaWRUeXBlc1xuICAgICAgICAgICAgKX1cXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY29uc3QgdHlwZXNUb1JlYWRhYmxlTmFtZSA9IHtcbiAgQXBwZW5kOiAnYW4gYXBwZW5kIHN0YXRlbWVudCcsXG4gIEJsb2NrOiAnYSBibG9jayBzdGF0ZW1lbnQnLFxuICBDYWxsOiAnYSBjYWxsIGV4cHJlc3Npb24nLFxuICBNb2RpZmllcjogJ2EgbW9kaWZpZXInLFxufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVUeXBlc01lc3NhZ2UobmFtZTogc3RyaW5nLCB0eXBlczogS2V5d29yZFR5cGVbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAoKHR5cGUpID0+IHtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdBcHBlbmQnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBhcHBlbmQgc3RhdGVtZW50LCBhcyBpbjoge3ske25hbWV9fX1gO1xuICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgYmxvY2sgc3RhdGVtZW50LCBhcyBpbjoge3sjJHtuYW1lfX19e3svJHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQ2FsbCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGV4cHJlc3Npb24sIGFzIGluOiAoJHtuYW1lfSlgO1xuICAgICAgICBjYXNlICdNb2RpZmllcic6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGEgbW9kaWZpZXIsIGFzIGluOiA8ZGl2IHt7JHtuYW1lfX19PjwvZGl2PmA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGV4aGF1c3RlZCh0eXBlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5qb2luKCdcXG5cXG4nKTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBrZXl3b3JkIGRlZmluaXRpb25zIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBBU1Qgbm9kZSAoYEtleXdvcmRUeXBlYCkuXG4gKlxuICogWW91IGNhbiBidWlsZCBrZXl3b3JkIGRlZmluaXRpb25zIGZvcjpcbiAqXG4gKiAtIGBFeHByYDogQSBgU3ViRXhwcmVzc2lvbmAgb3IgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQmxvY2tgOiBBIGBCbG9ja1N0YXRlbWVudGBcbiAqICAgLSBBIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhXG4gKiAgICAgYFBhdGhFeHByZXNzaW9uYFxuICogLSBgQXBwZW5kYDogQW4gYEFwcGVuZFN0YXRlbWVudGBcbiAqXG4gKiBBIG5vZGUgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZjpcbiAqXG4gKiAtIEEgYFBhdGhFeHByZXNzaW9uYCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0IGhhcyBubyB0YWlsLCBhbmQgaXRzXG4gKiAgIGhlYWQgZXhwcmVzc2lvbiBpcyBhIGBMb2NhbFZhckhlYWRgIG9yIGBGcmVlVmFySGVhZGAgd2hvc2UgbmFtZSBpc1xuICogICB0aGUga2V5d29yZCdzIG5hbWUuXG4gKiAtIEEgYFN1YkV4cHJlc3Npb25gLCBgQXBwZW5kU3RhdGVtZW50YCwgb3IgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmRcbiAqICAgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGEga2V5d29yZCBjYW5kaWRhdGUuXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgZ3VhcmFudGVlcyB0aGF0OlxuICpcbiAqIC0gSWYgYSBub2RlIGlzIG5vdCBhIGtleXdvcmQgY2FuZGlkYXRlLCBpdCBpcyBuZXZlciBwYXNzZWQgdG8gYW55IGtleXdvcmQnc1xuICogICBgYXNzZXJ0YCBtZXRob2QuXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgdGhlIGBLZXl3b3JkVHlwZWAgZm9yIGEgcGFydGljdWxhciBrZXl3b3JkLCBpdCB3aWxsIG5vdFxuICogICBiZSBwYXNzZWQgdG8gdGhlIGtleXdvcmQncyBgYXNzZXJ0YCBtZXRob2QuXG4gKlxuICogYEV4cHJgIGtleXdvcmRzIGFyZSB1c2VkIGluIGV4cHJlc3Npb24gcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUlxuICogZXhwcmVzc2lvbnMuIGBCbG9ja2AgYW5kIGBBcHBlbmRgIGtleXdvcmRzIGFyZSB1c2VkIGluIHN0YXRlbWVudFxuICogcG9zaXRpb25zIGFuZCBzaG91bGQgcmV0dXJuIEhJUiBzdGF0ZW1lbnRzLlxuICpcbiAqIEEga2V5d29yZCBkZWZpbml0aW9uIGhhcyB0d28gcGFydHM6XG4gKlxuICogLSBgbWF0Y2hgLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gQVNUIG5vZGUgbWF0Y2hlcyB0aGUga2V5d29yZCwgYW5kIGNhblxuICogICBvcHRpb25hbGx5IHJldHVybiBzb21lIGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHRoZSBBU1Qgbm9kZS5cbiAqIC0gYHRyYW5zbGF0ZWAsIHdoaWNoIHRha2VzIGEgbWF0Y2hpbmcgQVNUIG5vZGUgYXMgd2VsbCBhcyB0aGUgZXh0cmFjdGVkXG4gKiAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIEhJUiBpbnN0cnVjdGlvbi5cbiAqXG4gKiAjIEV4YW1wbGVcbiAqXG4gKiBUaGlzIGtleXdvcmQ6XG4gKlxuICogLSB0dXJucyBgKGhlbGxvKWAgaW50byBgXCJoZWxsb1wiYFxuICogICAtIGFzIGxvbmcgYXMgYGhlbGxvYCBpcyBub3QgaW4gc2NvcGVcbiAqIC0gbWFrZXMgaXQgYW4gZXJyb3IgdG8gcGFzcyBhbnkgYXJndW1lbnRzIChzdWNoIGFzIGAoaGVsbG8gd29ybGQpYClcbiAqXG4gKiBgYGB0c1xuICoga2V5d29yZHMoJ1N1YkV4cHInKS5rdygnaGVsbG8nLCB7XG4gKiAgIGFzc2VydChub2RlOiBFeHByS2V5d29yZE5vZGUpOiBSZXN1bHQ8dm9pZD4gfCBmYWxzZSB7XG4gKiAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byB0cmFuc2Zvcm0gYGhlbGxvYCBhcyBhIGBQYXRoRXhwcmVzc2lvbmBcbiAqICAgICBpZiAobm9kZS50eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIC8vIG5vZGUuaGVhZCB3b3VsZCBiZSBgTG9jYWxWYXJIZWFkYCBpZiBgaGVsbG9gIHdhcyBpbiBzY29wZVxuICogICAgIGlmIChub2RlLmhlYWQudHlwZSAhPT0gJ0ZyZWVWYXJIZWFkJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgaWYgKG5vZGUucGFyYW1zLmxlbmd0aCB8fCBub2RlLmhhc2gpIHtcbiAqICAgICAgIHJldHVybiBFcnIoZ2VuZXJhdGVTeW50YXhFcnJvcihgKGhlbGxvKSBkb2VzIG5vdCB0YWtlIGFueSBhcmd1bWVudHNgKSwgbm9kZS5sb2MpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICByZXR1cm4gT2soKTtcbiAqICAgICB9XG4gKiAgIH0sXG4gKlxuICogICB0cmFuc2xhdGUobm9kZTogQVNUdjIuU3ViRXhwcmVzc2lvbik6IGhpci5FeHByZXNzaW9uIHtcbiAqICAgICByZXR1cm4gQVNUdjIuYnVpbGRlcnMubGl0ZXJhbChcImhlbGxvXCIsIG5vZGUubG9jKVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogVGhlIGtleXdvcmQgaW5mcmFzdHJ1Y3R1cmUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIGlzIHRoZSByaWdodFxuICogdHlwZSBiZWZvcmUgY2FsbGluZyBgYXNzZXJ0YCwgc28geW91IG9ubHkgbmVlZCB0byBjb25zaWRlciBgU3ViRXhwcmVzc2lvbmBcbiAqIGFuZCBgUGF0aEV4cHJlc3Npb25gIGhlcmUuIEl0IGFsc28gY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBub2RlIHBhc3NlZFxuICogdG8gYGFzc2VydGAgaGFzIHRoZSBrZXl3b3JkIG5hbWUgaW4gdGhlIHJpZ2h0IHBsYWNlLlxuICpcbiAqIE5vdGUgdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gcmV0dXJuaW5nIGBmYWxzZWAgZnJvbSBgYXNzZXJ0YCxcbiAqIHdoaWNoIGp1c3QgbWVhbnMgdGhhdCB0aGUgbm9kZSBkaWRuJ3QgbWF0Y2gsIGFuZCByZXR1cm5pbmcgYEVycmAsIHdoaWNoXG4gKiBtZWFucyB0aGF0IHRoZSBub2RlIG1hdGNoZWQsIGJ1dCB0aGVyZSB3YXMgYSBrZXl3b3JkLXNwZWNpZmljIHN5bnRheFxuICogZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGU+KHR5cGU6IEspOiBLZXl3b3JkczxLPiB7XG4gIHJldHVybiBuZXcgS2V5d29yZHModHlwZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBRUUsbUJBRkYsRUFHRSxTQUhGLEVBSUUsY0FKRixRQU1PLGlCQU5QO0FBT0EsU0FBUyxTQUFULFFBQTBCLGVBQTFCO0FBRUEsU0FBUyxHQUFULFFBQTRCLHdCQUE1Qjs7QUFnQkEsTUFBTSxXQUFOLENBQWlCO0FBUWYsRUFBQSxXQUFBLENBQ1ksT0FEWixFQUVFLElBRkYsRUFHVSxRQUhWLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFKLEVBQVo7O0FBQ0EsU0FBSyxJQUFJLFFBQVQsSUFBcUIsYUFBYSxDQUFDLElBQUQsQ0FBbEMsRUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUMsR0FBTixDQUFVLFFBQVY7QUFDRDs7QUFFRCxTQUFLLEtBQUwsR0FBYSxLQUFiO0FBQ0Q7O0FBRVMsRUFBQSxLQUFLLENBQUMsSUFBRCxFQUEyQjtBQUN4QyxRQUFJLENBQUMsS0FBSyxLQUFMLENBQVcsR0FBWCxDQUFlLElBQUksQ0FBQyxJQUFwQixDQUFMLEVBQWdDO0FBQzlCLGFBQU8sS0FBUDtBQUNEOztBQUVELFFBQUksSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUQsQ0FBOUI7O0FBRUEsUUFBSSxJQUFJLEtBQUssSUFBVCxJQUFpQixJQUFJLENBQUMsSUFBTCxLQUFjLE1BQS9CLElBQXlDLElBQUksQ0FBQyxHQUFMLENBQVMsSUFBVCxLQUFrQixNQUEvRCxFQUF1RTtBQUNyRSxVQUFJLElBQUksQ0FBQyxJQUFMLENBQVUsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN4QixZQUFJLElBQUksQ0FBQyxHQUFM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QUpnQixDQUE1Qjs7QUFPQSxTQUFTLG9CQUFULENBQThCLElBQTlCLEVBQTRDLEtBQTVDLEVBQWdFO0FBQzlELFNBQU8sS0FBSyxDQUNULEdBREksQ0FDQyxJQUFELElBQVM7QUFDWixZQUFRLElBQVI7QUFDRSxXQUFLLFFBQUw7QUFDRSxlQUFPLHNDQUFzQyxJQUFJLElBQWpEOztBQUNGLFdBQUssT0FBTDtBQUNFLGVBQU8scUNBQXFDLElBQUksUUFBUSxJQUFJLElBQTVEOztBQUNGLFdBQUssTUFBTDtBQUNFLGVBQU8sK0JBQStCLElBQUksR0FBMUM7O0FBQ0YsV0FBSyxVQUFMO0FBQ0UsZUFBTyxrQ0FBa0MsSUFBSSxXQUE3Qzs7QUFDRjtBQUNFLGVBQU8sU0FBUyxDQUFDLElBQUQsQ0FBaEI7QUFWSjtBQVlELEdBZEksRUFlSixJQWZJLENBZUMsTUFmRCxDQUFQO0FBZ0JEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUZBLE9BQU0sU0FBVSxRQUFWLENBQTBDLElBQTFDLEVBQWlEO0FBQ3JELFNBQU8sSUFBSSxRQUFKLENBQWEsSUFBYixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBU1R2MixcbiAgZ2VuZXJhdGVTeW50YXhFcnJvcixcbiAgaXNLZXl3b3JkLFxuICBLRVlXT1JEU19UWVBFUyxcbiAgS2V5d29yZFR5cGUsXG59IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBleGhhdXN0ZWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCB7IE5vcm1hbGl6YXRpb25TdGF0ZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmREZWxlZ2F0ZTxNYXRjaCBleHRlbmRzIEtleXdvcmRNYXRjaCwgViwgT3V0PiB7XG4gIGFzc2VydChvcHRpb25zOiBNYXRjaCwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxWPjtcbiAgdHJhbnNsYXRlKG9wdGlvbnM6IHsgbm9kZTogTWF0Y2g7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSwgcGFyYW06IFYpOiBSZXN1bHQ8T3V0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSA9IEtleXdvcmRUeXBlLCBPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0tleXdvcmQ8T3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogQVNUdjIuSW52b2tlQmxvY2ssIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmNsYXNzIEtleXdvcmRJbXBsPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBhcmFtID0gdW5rbm93bixcbiAgT3V0ID0gdW5rbm93blxuPiB7XG4gIHByb3RlY3RlZCB0eXBlczogU2V0PEtleXdvcmRDYW5kaWRhdGVzW0tdWyd0eXBlJ10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBrZXl3b3JkOiBTLFxuICAgIHR5cGU6IEtleXdvcmRUeXBlLFxuICAgIHByaXZhdGUgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgUGFyYW0sIE91dD5cbiAgKSB7XG4gICAgbGV0IG5vZGVzID0gbmV3IFNldDxLZXl3b3JkTm9kZVsndHlwZSddPigpO1xuICAgIGZvciAobGV0IG5vZGVUeXBlIG9mIEtFWVdPUkRfTk9ERVNbdHlwZV0pIHtcbiAgICAgIG5vZGVzLmFkZChub2RlVHlwZSk7XG4gICAgfVxuXG4gICAgdGhpcy50eXBlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdGNoKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdKTogbm9kZSBpcyBLZXl3b3JkTWF0Y2hlc1tLXSB7XG4gICAgaWYgKCF0aGlzLnR5cGVzLmhhcyhub2RlLnR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50eXBlID09PSAnUGF0aCcgJiYgcGF0aC5yZWYudHlwZSA9PT0gJ0ZyZWUnKSB7XG4gICAgICBpZiAocGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGgucmVmLnJlc29sdXRpb24uc2VyaWFsaXplKCkgPT09ICdMb29zZScpIHtcbiAgICAgICAgICAvLyBjYW5ub3QgYmUgYSBrZXl3b3JkIHJlZmVyZW5jZSwga2V5d29yZHMgZG8gbm90IGFsbG93IHBhdGhzIChtdXN0IGJlXG4gICAgICAgICAgLy8gcmVseWluZyBvbiBpbXBsaWNpdCB0aGlzIGZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aC5yZWYubmFtZSA9PT0gdGhpcy5rZXl3b3JkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNsYXRlKG5vZGU6IEtleXdvcmRNYXRjaGVzW0tdLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsIHtcbiAgICBpZiAodGhpcy5tYXRjaChub2RlKSkge1xuICAgICAgbGV0IHBhdGggPSBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUpO1xuXG4gICAgICBpZiAocGF0aCAhPT0gbnVsbCAmJiBwYXRoLnR5cGUgPT09ICdQYXRoJyAmJiBwYXRoLnRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7XG4gICAgICAgICAgICAgIHRoaXMua2V5d29yZFxuICAgICAgICAgICAgfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyBcXGAke3BhdGgubG9jLmFzU3RyaW5nKCl9XFxgLCBidXQgaXQgY2Fubm90IGJlIHVzZWQgd2l0aCBhZGRpdGlvbmFsIHBhdGggc2VnbWVudHMuIFxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcmFtID0gdGhpcy5kZWxlZ2F0ZS5hc3NlcnQobm9kZSwgc3RhdGUpO1xuICAgICAgcmV0dXJuIHBhcmFtLmFuZFRoZW4oKHBhcmFtKSA9PiB0aGlzLmRlbGVnYXRlLnRyYW5zbGF0ZSh7IG5vZGUsIHN0YXRlIH0sIHBhcmFtKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZU5vZGUgPVxuICB8IEFTVHYyLlBhdGhFeHByZXNzaW9uXG4gIHwgQVNUdjIuQXBwZW5kQ29udGVudFxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2s7XG5cbmV4cG9ydCBjb25zdCBLRVlXT1JEX05PREVTID0ge1xuICBDYWxsOiBbJ0NhbGwnXSxcbiAgQmxvY2s6IFsnSW52b2tlQmxvY2snXSxcbiAgQXBwZW5kOiBbJ0FwcGVuZENvbnRlbnQnXSxcbiAgTW9kaWZpZXI6IFsnRWxlbWVudE1vZGlmaWVyJ10sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRDYW5kaWRhdGVzIHtcbiAgQ2FsbDogQVNUdjIuRXhwcmVzc2lvbk5vZGU7XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkQ2FuZGlkYXRlID0gS2V5d29yZENhbmRpZGF0ZXNba2V5b2YgS2V5d29yZENhbmRpZGF0ZXNdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmRNYXRjaGVzIHtcbiAgQ2FsbDogQVNUdjIuQ2FsbEV4cHJlc3Npb247XG4gIEJsb2NrOiBBU1R2Mi5JbnZva2VCbG9jaztcbiAgQXBwZW5kOiBBU1R2Mi5BcHBlbmRDb250ZW50O1xuICBNb2RpZmllcjogQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xufVxuXG5leHBvcnQgdHlwZSBLZXl3b3JkTWF0Y2ggPSBLZXl3b3JkTWF0Y2hlc1trZXlvZiBLZXl3b3JkTWF0Y2hlc107XG5cbi8qKlxuICogQSBcImdlbmVyaWNcIiBrZXl3b3JkIGlzIHNvbWV0aGluZyBsaWtlIGBoYXMtYmxvY2tgLCB3aGljaCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dFxuICogb2Ygc3ViLWV4cHJlc3Npb24gb3IgYXBwZW5kXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNLZXl3b3JkTm9kZSA9IEFTVHYyLkFwcGVuZENvbnRlbnQgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcblxuZXhwb3J0IHR5cGUgS2V5d29yZE5vZGUgPVxuICB8IEdlbmVyaWNLZXl3b3JkTm9kZVxuICB8IEFTVHYyLkNhbGxFeHByZXNzaW9uXG4gIHwgQVNUdjIuSW52b2tlQmxvY2tcbiAgfCBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXl3b3JkPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIEQgZXh0ZW5kcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD4sXG4gIE91dCA9IHVua25vd25cbj4oa2V5d29yZDogc3RyaW5nLCB0eXBlOiBLLCBkZWxlZ2F0ZTogRCk6IEtleXdvcmQ8SywgT3V0PiB7XG4gIHJldHVybiBuZXcgS2V5d29yZEltcGwoa2V5d29yZCwgdHlwZSwgZGVsZWdhdGUgYXMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaCwgdW5rbm93biwgT3V0Pik7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlS2V5d29yZCA9IEtleXdvcmROb2RlO1xudHlwZSBPdXRGb3I8SyBleHRlbmRzIEtleXdvcmQgfCBCbG9ja0tleXdvcmQ+ID0gSyBleHRlbmRzIEJsb2NrS2V5d29yZDxpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogSyBleHRlbmRzIEtleXdvcmQ8S2V5d29yZFR5cGUsIGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBuZXZlcjtcblxuZnVuY3Rpb24gZ2V0Q2FsbGVlRXhwcmVzc2lvbihcbiAgbm9kZTogS2V5d29yZE5vZGUgfCBBU1R2Mi5FeHByZXNzaW9uTm9kZVxuKTogQVNUdjIuRXhwcmVzc2lvbk5vZGUgfCBudWxsIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAvLyBUaGlzIGNvdmVycyB0aGUgaW5zaWRlIG9mIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzIHRoZSBjYWxsZWVcbiAgICAvLyBvZiBjYWxsIG5vZGVzXG4gICAgY2FzZSAnUGF0aCc6XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICBjYXNlICdBcHBlbmRDb250ZW50JzpcbiAgICAgIHJldHVybiBnZXRDYWxsZWVFeHByZXNzaW9uKG5vZGUudmFsdWUpO1xuICAgIGNhc2UgJ0NhbGwnOlxuICAgIGNhc2UgJ0ludm9rZUJsb2NrJzpcbiAgICBjYXNlICdFbGVtZW50TW9kaWZpZXInOlxuICAgICAgcmV0dXJuIG5vZGUuY2FsbGVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlLCBLZXl3b3JkTGlzdCBleHRlbmRzIEtleXdvcmQ8Sz4gPSBuZXZlcj5cbiAgaW1wbGVtZW50cyBLZXl3b3JkPEssIE91dEZvcjxLZXl3b3JkTGlzdD4+IHtcbiAgI2tleXdvcmRzOiBLZXl3b3JkW10gPSBbXTtcbiAgI3R5cGU6IEs7XG5cbiAgY29uc3RydWN0b3IodHlwZTogSykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAga3c8UyBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgT3V0ID0gdW5rbm93bj4oXG4gICAgbmFtZTogUyxcbiAgICBkZWxlZ2F0ZTogS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+XG4gICk6IEtleXdvcmRzPEssIEtleXdvcmRMaXN0IHwgS2V5d29yZDxLLCBPdXQ+PiB7XG4gICAgdGhpcy4ja2V5d29yZHMucHVzaChrZXl3b3JkKG5hbWUsIHRoaXMuI3R5cGUsIGRlbGVnYXRlKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRyYW5zbGF0ZShcbiAgICBub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSxcbiAgICBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlXG4gICk6IFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PiB8IG51bGwge1xuICAgIGZvciAobGV0IGtleXdvcmQgb2YgdGhpcy4ja2V5d29yZHMpIHtcbiAgICAgIGxldCByZXN1bHQgPSBrZXl3b3JkLnRyYW5zbGF0ZShub2RlLCBzdGF0ZSkgYXMgUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+O1xuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0Q2FsbGVlRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICYmIHBhdGgudHlwZSA9PT0gJ1BhdGgnICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJyAmJiBpc0tleXdvcmQocGF0aC5yZWYubmFtZSkpIHtcbiAgICAgIGxldCB7IG5hbWUgfSA9IHBhdGgucmVmO1xuXG4gICAgICBsZXQgdXNlZFR5cGUgPSB0aGlzLiN0eXBlO1xuICAgICAgbGV0IHZhbGlkVHlwZXMgPSBLRVlXT1JEU19UWVBFU1tuYW1lXTtcblxuICAgICAgaWYgKHZhbGlkVHlwZXMuaW5kZXhPZih1c2VkVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtuYW1lfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyAke1xuICAgICAgICAgICAgICB0eXBlc1RvUmVhZGFibGVOYW1lW3VzZWRUeXBlXVxuICAgICAgICAgICAgfSwgYnV0IGl0cyB2YWxpZCB1c2FnZXMgYXJlOlxcblxcbiR7Z2VuZXJhdGVUeXBlc01lc3NhZ2UoXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbGlkVHlwZXNcbiAgICAgICAgICAgICl9XFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHR5cGVzVG9SZWFkYWJsZU5hbWUgPSB7XG4gIEFwcGVuZDogJ2FuIGFwcGVuZCBzdGF0ZW1lbnQnLFxuICBCbG9jazogJ2EgYmxvY2sgc3RhdGVtZW50JyxcbiAgQ2FsbDogJ2EgY2FsbCBleHByZXNzaW9uJyxcbiAgTW9kaWZpZXI6ICdhIG1vZGlmaWVyJyxcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVHlwZXNNZXNzYWdlKG5hbWU6IHN0cmluZywgdHlwZXM6IEtleXdvcmRUeXBlW10pOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZXNcbiAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXBwZW5kJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gYXBwZW5kIHN0YXRlbWVudCwgYXMgaW46IHt7JHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIGJsb2NrIHN0YXRlbWVudCwgYXMgaW46IHt7IyR7bmFtZX19fXt7LyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0NhbGwnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBleHByZXNzaW9uLCBhcyBpbjogKCR7bmFtZX0pYDtcbiAgICAgICAgY2FzZSAnTW9kaWZpZXInOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIG1vZGlmaWVyLCBhcyBpbjogPGRpdiB7eyR7bmFtZX19fT48L2Rpdj5gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBleGhhdXN0ZWQodHlwZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMga2V5d29yZCBkZWZpbml0aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgQVNUIG5vZGUgKGBLZXl3b3JkVHlwZWApLlxuICpcbiAqIFlvdSBjYW4gYnVpbGQga2V5d29yZCBkZWZpbml0aW9ucyBmb3I6XG4gKlxuICogLSBgRXhwcmA6IEEgYFN1YkV4cHJlc3Npb25gIG9yIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEJsb2NrYDogQSBgQmxvY2tTdGF0ZW1lbnRgXG4gKiAgIC0gQSBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYVxuICogICAgIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEFwcGVuZGA6IEFuIGBBcHBlbmRTdGF0ZW1lbnRgXG4gKlxuICogQSBub2RlIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWY6XG4gKlxuICogLSBBIGBQYXRoRXhwcmVzc2lvbmAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdCBoYXMgbm8gdGFpbCwgYW5kIGl0c1xuICogICBoZWFkIGV4cHJlc3Npb24gaXMgYSBgTG9jYWxWYXJIZWFkYCBvciBgRnJlZVZhckhlYWRgIHdob3NlIG5hbWUgaXNcbiAqICAgdGhlIGtleXdvcmQncyBuYW1lLlxuICogLSBBIGBTdWJFeHByZXNzaW9uYCwgYEFwcGVuZFN0YXRlbWVudGAsIG9yIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkXG4gKiAgIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlLlxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGd1YXJhbnRlZXMgdGhhdDpcbiAqXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgYSBrZXl3b3JkIGNhbmRpZGF0ZSwgaXQgaXMgbmV2ZXIgcGFzc2VkIHRvIGFueSBrZXl3b3JkJ3NcbiAqICAgYGFzc2VydGAgbWV0aG9kLlxuICogLSBJZiBhIG5vZGUgaXMgbm90IHRoZSBgS2V5d29yZFR5cGVgIGZvciBhIHBhcnRpY3VsYXIga2V5d29yZCwgaXQgd2lsbCBub3RcbiAqICAgYmUgcGFzc2VkIHRvIHRoZSBrZXl3b3JkJ3MgYGFzc2VydGAgbWV0aG9kLlxuICpcbiAqIGBFeHByYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBleHByZXNzaW9uIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVJcbiAqIGV4cHJlc3Npb25zLiBgQmxvY2tgIGFuZCBgQXBwZW5kYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBzdGF0ZW1lbnRcbiAqIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVIgc3RhdGVtZW50cy5cbiAqXG4gKiBBIGtleXdvcmQgZGVmaW5pdGlvbiBoYXMgdHdvIHBhcnRzOlxuICpcbiAqIC0gYG1hdGNoYCwgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIEFTVCBub2RlIG1hdGNoZXMgdGhlIGtleXdvcmQsIGFuZCBjYW5cbiAqICAgb3B0aW9uYWxseSByZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSB0aGUgQVNUIG5vZGUuXG4gKiAtIGB0cmFuc2xhdGVgLCB3aGljaCB0YWtlcyBhIG1hdGNoaW5nIEFTVCBub2RlIGFzIHdlbGwgYXMgdGhlIGV4dHJhY3RlZFxuICogICBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBISVIgaW5zdHJ1Y3Rpb24uXG4gKlxuICogIyBFeGFtcGxlXG4gKlxuICogVGhpcyBrZXl3b3JkOlxuICpcbiAqIC0gdHVybnMgYChoZWxsbylgIGludG8gYFwiaGVsbG9cImBcbiAqICAgLSBhcyBsb25nIGFzIGBoZWxsb2AgaXMgbm90IGluIHNjb3BlXG4gKiAtIG1ha2VzIGl0IGFuIGVycm9yIHRvIHBhc3MgYW55IGFyZ3VtZW50cyAoc3VjaCBhcyBgKGhlbGxvIHdvcmxkKWApXG4gKlxuICogYGBgdHNcbiAqIGtleXdvcmRzKCdTdWJFeHByJykua3coJ2hlbGxvJywge1xuICogICBhc3NlcnQobm9kZTogRXhwcktleXdvcmROb2RlKTogUmVzdWx0PHZvaWQ+IHwgZmFsc2Uge1xuICogICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJhbnNmb3JtIGBoZWxsb2AgYXMgYSBgUGF0aEV4cHJlc3Npb25gXG4gKiAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICAvLyBub2RlLmhlYWQgd291bGQgYmUgYExvY2FsVmFySGVhZGAgaWYgYGhlbGxvYCB3YXMgaW4gc2NvcGVcbiAqICAgICBpZiAobm9kZS5oZWFkLnR5cGUgIT09ICdGcmVlVmFySGVhZCcpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggfHwgbm9kZS5oYXNoKSB7XG4gKiAgICAgICByZXR1cm4gRXJyKGdlbmVyYXRlU3ludGF4RXJyb3IoYChoZWxsbykgZG9lcyBub3QgdGFrZSBhbnkgYXJndW1lbnRzYCksIG5vZGUubG9jKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgcmV0dXJuIE9rKCk7XG4gKiAgICAgfVxuICogICB9LFxuICpcbiAqICAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLlN1YkV4cHJlc3Npb24pOiBoaXIuRXhwcmVzc2lvbiB7XG4gKiAgICAgcmV0dXJuIEFTVHYyLmJ1aWxkZXJzLmxpdGVyYWwoXCJoZWxsb1wiLCBub2RlLmxvYylcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBpcyB0aGUgcmlnaHRcbiAqIHR5cGUgYmVmb3JlIGNhbGxpbmcgYGFzc2VydGAsIHNvIHlvdSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgYFN1YkV4cHJlc3Npb25gXG4gKiBhbmQgYFBhdGhFeHByZXNzaW9uYCBoZXJlLiBJdCBhbHNvIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBwYXNzZWRcbiAqIHRvIGBhc3NlcnRgIGhhcyB0aGUga2V5d29yZCBuYW1lIGluIHRoZSByaWdodCBwbGFjZS5cbiAqXG4gKiBOb3RlIHRoZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHJldHVybmluZyBgZmFsc2VgIGZyb20gYGFzc2VydGAsXG4gKiB3aGljaCBqdXN0IG1lYW5zIHRoYXQgdGhlIG5vZGUgZGlkbid0IG1hdGNoLCBhbmQgcmV0dXJuaW5nIGBFcnJgLCB3aGljaFxuICogbWVhbnMgdGhhdCB0aGUgbm9kZSBtYXRjaGVkLCBidXQgdGhlcmUgd2FzIGEga2V5d29yZC1zcGVjaWZpYyBzeW50YXhcbiAqIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlPih0eXBlOiBLKTogS2V5d29yZHM8Sz4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRzKHR5cGUpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -1,5 +0,5 @@

export { precompile, precompileJSON } from './lib/compiler';
export { defaultId, precompile, precompileJSON } from './lib/compiler';
export { ProgramSymbols, buildStatement, buildStatements, s, c, unicode, NEWLINE } from './lib/builder/builder'; // exported only for tests
export { default as WireFormatDebugger } from './lib/wire-format-debug';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQUEsVUFBQSxFQUFBLGNBQUEsUUFBQSxnQkFBQTtBQUNBLFNBQUEsY0FBQSxFQUFBLGNBQUEsRUFBQSxlQUFBLEVBQUEsQ0FBQSxFQUFBLENBQUEsRUFBQSxPQUFBLEVBQUEsT0FBQSxRQUFBLHVCQUFBLEMsQ0FXQTs7QUFDQSxTQUFTLE9BQU8sSUFBaEIsa0JBQUEsUUFBQSx5QkFBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHByZWNvbXBpbGUsIHByZWNvbXBpbGVKU09OLCBQcmVjb21waWxlT3B0aW9ucyB9IGZyb20gJy4vbGliL2NvbXBpbGVyJztcbmV4cG9ydCB7XG4gIFByb2dyYW1TeW1ib2xzLFxuICBidWlsZFN0YXRlbWVudCxcbiAgYnVpbGRTdGF0ZW1lbnRzLFxuICBzLFxuICBjLFxuICB1bmljb2RlLFxuICBORVdMSU5FLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2J1aWxkZXInO1xuZXhwb3J0IHsgQnVpbGRlclN0YXRlbWVudCwgQnVpbGRlciB9IGZyb20gJy4vbGliL2J1aWxkZXIvYnVpbGRlci1pbnRlcmZhY2UnO1xuXG4vLyBleHBvcnRlZCBvbmx5IGZvciB0ZXN0c1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXaXJlRm9ybWF0RGVidWdnZXIgfSBmcm9tICcuL2xpYi93aXJlLWZvcm1hdC1kZWJ1Zyc7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQUEsU0FBQSxFQUFBLFVBQUEsRUFBQSxjQUFBLFFBQUEsZ0JBQUE7QUFDQSxTQUFBLGNBQUEsRUFBQSxjQUFBLEVBQUEsZUFBQSxFQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsT0FBQSxFQUFBLE9BQUEsUUFBQSx1QkFBQSxDLENBV0E7O0FBQ0EsU0FBUyxPQUFPLElBQWhCLGtCQUFBLFFBQUEseUJBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0SWQsIHByZWNvbXBpbGUsIHByZWNvbXBpbGVKU09OLCBQcmVjb21waWxlT3B0aW9ucyB9IGZyb20gJy4vbGliL2NvbXBpbGVyJztcbmV4cG9ydCB7XG4gIFByb2dyYW1TeW1ib2xzLFxuICBidWlsZFN0YXRlbWVudCxcbiAgYnVpbGRTdGF0ZW1lbnRzLFxuICBzLFxuICBjLFxuICB1bmljb2RlLFxuICBORVdMSU5FLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2J1aWxkZXInO1xuZXhwb3J0IHsgQnVpbGRlclN0YXRlbWVudCwgQnVpbGRlciB9IGZyb20gJy4vbGliL2J1aWxkZXIvYnVpbGRlci1pbnRlcmZhY2UnO1xuXG4vLyBleHBvcnRlZCBvbmx5IGZvciB0ZXN0c1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBXaXJlRm9ybWF0RGVidWdnZXIgfSBmcm9tICcuL2xpYi93aXJlLWZvcm1hdC1kZWJ1Zyc7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -5,2 +5,28 @@ import { normalize, Source } from '@glimmer/syntax';

import { visit as pass2 } from './passes/2-encoding/index';
export var defaultId = function () {
var req = typeof module === 'object' && typeof module.require === 'function' ? module.require : require;
if (req) {
try {
var crypto = req('crypto');
var idFn = function idFn(src) {
var hash = crypto.createHash('sha1');
hash.update(src, 'utf8'); // trim to 6 bytes of data (2^48 - 1)
return hash.digest('base64').substring(0, 8);
};
idFn('test');
return idFn;
} catch (e) {}
}
return function idFn() {
return null;
};
}();
var defaultOptions = {
id: defaultId
};
/*

@@ -23,3 +49,3 @@ * Compile a string into a template javascript string.

if (options === void 0) {
options = {};
options = defaultOptions;
}

@@ -71,3 +97,3 @@

if (options === void 0) {
options = {};
options = defaultOptions;
}

@@ -82,4 +108,6 @@

var moduleName = (_a = options.meta) === null || _a === void 0 ? void 0 : _a.moduleName;
var idFn = options.id || defaultId;
var blockJSON = JSON.stringify(block);
var templateJSONObject = {
id: idFn(JSON.stringify(options.meta) + blockJSON),
block: blockJSON,

@@ -109,2 +137,2 @@ moduleName: moduleName !== null && moduleName !== void 0 ? moduleName : '(unknown template module)',

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxTQUFBLFNBQUEsRUFBQSxNQUFBLFFBQUEsaUJBQUE7QUFDQSxTQUFBLFlBQUEsUUFBQSxlQUFBO0FBRUEsT0FBQSxLQUFBLE1BQUEsZ0NBQUE7QUFDQSxTQUFTLEtBQUssSUFBZCxLQUFBLFFBQUEsMkJBQUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsT0FBTSxTQUFBLGNBQUEsQ0FBQSxNQUFBLEVBRUosT0FGSSxFQUUyQjtBQUFBLE1BQS9CLE9BQStCO0FBQS9CLElBQUEsT0FBK0IsR0FGM0IsRUFFMkI7QUFBQTs7OztBQUUvQixNQUFJLE1BQU0sR0FBRyxJQUFBLE1BQUEsQ0FBQSxNQUFBLEVBQWlCLENBQUEsRUFBQSxHQUFFLE9BQU8sQ0FBVCxJQUFBLE1BQUEsSUFBQSxJQUFjLEVBQUEsS0FBQSxLQUFkLENBQUEsR0FBYyxLQUFkLENBQUEsR0FBYyxFQUFBLENBQTVDLFVBQWEsQ0FBYjs7QUFGK0IsbUJBR1gsU0FBUyxDQUFBLE1BQUEsRUFBN0IsT0FBNkIsQ0FIRTtBQUFBLE1BRzNCLEdBSDJCO0FBQUEsTUFHM0IsTUFIMkI7O0FBSS9CLE1BQUksS0FBSyxHQUFHLEtBQUssQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFZLENBQUEsRUFBQSxHQUFFLE9BQU8sQ0FBVCxVQUFBLE1BQUEsSUFBQSxJQUFvQixFQUFBLEtBQUEsS0FBcEIsQ0FBQSxHQUFBLEVBQUEsR0FBakIsS0FBSyxDQUFMLENBQUEsS0FBQSxDQUF1RCxVQUFBLE9BQUQsRUFBWTtBQUM1RSxXQUFPLEtBQUssQ0FBWixPQUFZLENBQVo7QUFERixHQUFZLENBQVo7O0FBSUEsTUFBQTtBQUFBO0FBQUEsSUFBc0I7QUFDcEIsTUFBQSxZQUFZLENBQVosR0FBQSxnQkFBQSxLQUFBO0FBQ0Q7O0FBRUQsTUFBSSxLQUFLLENBQVQsSUFBQSxFQUFnQjtBQUNkLFdBQU8sQ0FBQyxLQUFLLENBQU4sS0FBQSxFQUFQLE1BQU8sQ0FBUDtBQURGLEdBQUEsTUFFTztBQUNMLFVBQU0sS0FBSyxDQUFYLE1BQUE7QUFDRDtFQUdIO0FBQ0E7O0FBQ0EsSUFBTSxpQkFBaUIsR0FBdkIsc0NBQUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0EsT0FBTSxTQUFBLFVBQUEsQ0FBQSxNQUFBLEVBQXFDLE9BQXJDLEVBQW9FO0FBQUEsTUFBL0IsT0FBK0I7QUFBL0IsSUFBQSxPQUErQixHQUFwRSxFQUFvRTtBQUFBOzs7O0FBQUEsd0JBQzlDLGNBQWMsQ0FBQSxNQUFBLEVBQXhDLE9BQXdDLENBRGdDO0FBQUEsTUFDcEUsS0FEb0U7QUFBQSxNQUNwRSxVQURvRTs7QUFHeEUsTUFBSSxVQUFVLEdBQUEsQ0FBQSxFQUFBLEdBQUcsT0FBTyxDQUFWLElBQUEsTUFBQSxJQUFBLElBQWUsRUFBQSxLQUFBLEtBQWYsQ0FBQSxHQUFlLEtBQWYsQ0FBQSxHQUFlLEVBQUEsQ0FBN0IsVUFBQTtBQUNBLE1BQUksU0FBUyxHQUFHLElBQUksQ0FBSixTQUFBLENBQWhCLEtBQWdCLENBQWhCO0FBQ0EsTUFBSSxrQkFBa0IsR0FBb0M7QUFDeEQsSUFBQSxLQUFLLEVBRG1ELFNBQUE7QUFFeEQsSUFBQSxVQUFVLEVBQUUsVUFBVSxLQUFWLElBQUEsSUFBQSxVQUFVLEtBQUEsS0FBVixDQUFBLEdBQUEsVUFBQSxHQUY0QywyQkFBQTtBQUd4RDtBQUNBO0FBQ0EsSUFBQSxLQUFLLEVBTG1ELGlCQUFBO0FBTXhELElBQUEsWUFBWSxFQUFBLENBQUEsRUFBQSxHQUFFLE9BQU8sQ0FBVCxVQUFBLE1BQUEsSUFBQSxJQUFvQixFQUFBLEtBQUEsS0FBcEIsQ0FBQSxHQUFBLEVBQUEsR0FBd0I7QUFOb0IsR0FBMUQ7O0FBU0EsTUFBSSxDQUFDLE9BQU8sQ0FBWixVQUFBLEVBQXlCO0FBQ3ZCLFdBQU8sa0JBQWtCLENBQXpCLEtBQUE7QUFmc0UsR0FBQSxDQWtCeEU7OztBQUNBLE1BQUksV0FBVyxHQUFHLElBQUksQ0FBSixTQUFBLENBQWxCLGtCQUFrQixDQUFsQjs7QUFFQSxNQUFJLE9BQU8sQ0FBUCxVQUFBLElBQXNCLFVBQVUsQ0FBVixNQUFBLEdBQTFCLENBQUEsRUFBaUQ7QUFDL0MsUUFBSSxPQUFPLGFBQVcsVUFBVSxDQUFWLElBQUEsQ0FBdEIsR0FBc0IsQ0FBWCxNQUFYO0FBRUEsSUFBQSxXQUFXLEdBQUcsV0FBVyxDQUFYLE9BQUEsUUFBQSxpQkFBQSxTQUFkLE9BQWMsQ0FBZDtBQUhGLEdBQUEsTUFJTztBQUNMLElBQUEsV0FBVyxHQUFHLFdBQVcsQ0FBWCxPQUFBLFFBQUEsaUJBQUEsU0FBZCxNQUFjLENBQWQ7QUFDRDs7QUFFRCxTQUFBLFdBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLFxuICBUZW1wbGF0ZUphdmFzY3JpcHQsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgUHJlY29tcGlsZU9wdGlvbnMsIFNvdXJjZSB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBMT0NBTF9MT0dHRVIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHBhc3MwIGZyb20gJy4vcGFzc2VzLzEtbm9ybWFsaXphdGlvbi9pbmRleCc7XG5pbXBvcnQgeyB2aXNpdCBhcyBwYXNzMiB9IGZyb20gJy4vcGFzc2VzLzItZW5jb2RpbmcvaW5kZXgnO1xuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmcuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqICAgICBpbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuICogICAgIGltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ2dsaW1tZXItcnVudGltZSc7XG4gKiAgICAgbGV0IHRlbXBsYXRlSnMgPSBwcmVjb21waWxlKFwiSG93ZHkge3tuYW1lfX1cIik7XG4gKiAgICAgbGV0IGZhY3RvcnkgPSB0ZW1wbGF0ZUZhY3RvcnkobmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVKcykoKSk7XG4gKiAgICAgbGV0IHRlbXBsYXRlID0gZmFjdG9yeS5jcmVhdGUoZW52KTtcbiAqXG4gKiBAbWV0aG9kIHByZWNvbXBpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgYSBHbGltbWVyIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlSlNPTihcbiAgc3RyaW5nOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge31cbik6IFtibG9jazogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssIHVzZWRMb2NhbHM6IHN0cmluZ1tdXSB7XG4gIGxldCBzb3VyY2UgPSBuZXcgU291cmNlKHN0cmluZywgb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lKTtcbiAgbGV0IFthc3QsIGxvY2Fsc10gPSBub3JtYWxpemUoc291cmNlLCBvcHRpb25zKTtcbiAgbGV0IGJsb2NrID0gcGFzczAoc291cmNlLCBhc3QsIG9wdGlvbnMuc3RyaWN0TW9kZSA/PyBmYWxzZSkubWFwT2soKHBhc3MySW4pID0+IHtcbiAgICByZXR1cm4gcGFzczIocGFzczJJbik7XG4gIH0pO1xuXG4gIGlmIChMT0NBTF9TSE9VTERfTE9HKSB7XG4gICAgTE9DQUxfTE9HR0VSLmxvZyhgVGVtcGxhdGUgLT5gLCBibG9jayk7XG4gIH1cblxuICBpZiAoYmxvY2suaXNPaykge1xuICAgIHJldHVybiBbYmxvY2sudmFsdWUsIGxvY2Fsc107XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgYmxvY2sucmVhc29uO1xuICB9XG59XG5cbi8vIFVVSUQgdXNlZCBhcyBhIHVuaXF1ZSBwbGFjZWhvbGRlciBmb3IgcGxhY2luZyBhIHNuaXBwZXQgb2YgSlMgY29kZSBpbnRvXG4vLyB0aGUgb3RoZXJ3aXNlIEpTT04gc3RyaW5naWZpZWQgdmFsdWUgYmVsb3cuXG5jb25zdCBTQ09QRV9QTEFDRUhPTERFUiA9ICc3OTZkMjRlNi0yNDUwLTRmYjAtOGNkZi1iNjU2MzhiNWVmNzAnO1xuXG4vKlxuICogQ29tcGlsZSBhIHN0cmluZyBpbnRvIGEgdGVtcGxhdGUgamF2YXNjcmlwdCBzdHJpbmcuXG4gKlxuICogRXhhbXBsZSB1c2FnZTpcbiAqICAgICBpbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnQGdsaW1tZXIvY29tcGlsZXInO1xuICogICAgIGltcG9ydCB7IHRlbXBsYXRlRmFjdG9yeSB9IGZyb20gJ2dsaW1tZXItcnVudGltZSc7XG4gKiAgICAgbGV0IHRlbXBsYXRlSnMgPSBwcmVjb21waWxlKFwiSG93ZHkge3tuYW1lfX1cIik7XG4gKiAgICAgbGV0IGZhY3RvcnkgPSB0ZW1wbGF0ZUZhY3RvcnkobmV3IEZ1bmN0aW9uKFwicmV0dXJuIFwiICsgdGVtcGxhdGVKcykoKSk7XG4gKiAgICAgbGV0IHRlbXBsYXRlID0gZmFjdG9yeS5jcmVhdGUoZW52KTtcbiAqXG4gKiBAbWV0aG9kIHByZWNvbXBpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgYSBHbGltbWVyIHRlbXBsYXRlIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IHt9KTogVGVtcGxhdGVKYXZhc2NyaXB0IHtcbiAgbGV0IFtibG9jaywgdXNlZExvY2Fsc10gPSBwcmVjb21waWxlSlNPTihzb3VyY2UsIG9wdGlvbnMpO1xuXG4gIGxldCBtb2R1bGVOYW1lID0gb3B0aW9ucy5tZXRhPy5tb2R1bGVOYW1lO1xuICBsZXQgYmxvY2tKU09OID0gSlNPTi5zdHJpbmdpZnkoYmxvY2spO1xuICBsZXQgdGVtcGxhdGVKU09OT2JqZWN0OiBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrID0ge1xuICAgIGJsb2NrOiBibG9ja0pTT04sXG4gICAgbW9kdWxlTmFtZTogbW9kdWxlTmFtZSA/PyAnKHVua25vd24gdGVtcGxhdGUgbW9kdWxlKScsXG4gICAgLy8gbHlpbmcgdG8gdGhlIHR5cGUgY2hlY2tlciBoZXJlIGJlY2F1c2Ugd2UncmUgZ29pbmcgdG9cbiAgICAvLyByZXBsYWNlIGl0IGp1c3QgYmVsb3csIGFmdGVyIHN0cmluZ2lmaWNhdGlvblxuICAgIHNjb3BlOiAoU0NPUEVfUExBQ0VIT0xERVIgYXMgdW5rbm93bikgYXMgbnVsbCxcbiAgICBpc1N0cmljdE1vZGU6IG9wdGlvbnMuc3RyaWN0TW9kZSA/PyBmYWxzZSxcbiAgfTtcblxuICBpZiAoIW9wdGlvbnMuc3RyaWN0TW9kZSkge1xuICAgIGRlbGV0ZSB0ZW1wbGF0ZUpTT05PYmplY3Quc2NvcGU7XG4gIH1cblxuICAvLyBKU09OIGlzIGphdmFzY3JpcHRcbiAgbGV0IHN0cmluZ2lmaWVkID0gSlNPTi5zdHJpbmdpZnkodGVtcGxhdGVKU09OT2JqZWN0KTtcblxuICBpZiAob3B0aW9ucy5zdHJpY3RNb2RlICYmIHVzZWRMb2NhbHMubGVuZ3RoID4gMCkge1xuICAgIGxldCBzY29wZUZuID0gYCgpPT5bJHt1c2VkTG9jYWxzLmpvaW4oJywnKX1dYDtcblxuICAgIHN0cmluZ2lmaWVkID0gc3RyaW5naWZpZWQucmVwbGFjZShgXCIke1NDT1BFX1BMQUNFSE9MREVSfVwiYCwgc2NvcGVGbik7XG4gIH0gZWxzZSB7XG4gICAgc3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZC5yZXBsYWNlKGBcIiR7U0NPUEVfUExBQ0VIT0xERVJ9XCJgLCAnbnVsbCcpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZ2lmaWVkO1xufVxuXG5leHBvcnQgeyBQcmVjb21waWxlT3B0aW9ucyB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9jb21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxTQUFBLFNBQUEsRUFBQSxNQUFBLFFBQUEsaUJBQUE7QUFDQSxTQUFBLFlBQUEsUUFBQSxlQUFBO0FBRUEsT0FBQSxLQUFBLE1BQUEsZ0NBQUE7QUFDQSxTQUFTLEtBQUssSUFBZCxLQUFBLFFBQUEsMkJBQUE7QUFjQSxPQUFPLElBQU0sU0FBUyxHQUFrQixZQUFLO0FBQzNDLE1BQUksR0FBRyxHQUNMLE9BQUEsTUFBQSxLQUFBLFFBQUEsSUFBOEIsT0FBTyxNQUFNLENBQWIsT0FBQSxLQUE5QixVQUFBLEdBQXFFLE1BQU0sQ0FBM0UsT0FBQSxHQURGLE9BQUE7O0FBR0EsTUFBQSxHQUFBLEVBQVM7QUFDUCxRQUFJO0FBQ0YsVUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFsQixRQUFrQixDQUFsQjs7QUFFQSxVQUFJLElBQUksR0FBa0IsU0FBdEIsSUFBc0IsQ0FBQSxHQUFELEVBQVE7QUFDL0IsWUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFOLFVBQUEsQ0FBWCxNQUFXLENBQVg7QUFDQSxRQUFBLElBQUksQ0FBSixNQUFBLENBQUEsR0FBQSxFQUYrQixNQUUvQixFQUYrQixDQUcvQjs7QUFDQSxlQUFPLElBQUksQ0FBSixNQUFBLENBQUEsUUFBQSxFQUFBLFNBQUEsQ0FBQSxDQUFBLEVBQVAsQ0FBTyxDQUFQO0FBSkYsT0FBQTs7QUFPQSxNQUFBLElBQUksQ0FBSixNQUFJLENBQUo7QUFFQSxhQUFBLElBQUE7QUFaRixLQUFBLENBYUUsT0FBQSxDQUFBLEVBQVUsQ0FBRTtBQUNmOztBQUVELFNBQU8sU0FBQSxJQUFBLEdBQWE7QUFDbEIsV0FBQSxJQUFBO0FBREYsR0FBQTtBQXJCSyxDQUFnQyxFQUFoQztBQTBCUCxJQUFNLGNBQWMsR0FBc0I7QUFDeEMsRUFBQSxFQUFFLEVBQUU7QUFEb0MsQ0FBMUM7QUFJQTs7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UUFBSSxPQUFPLGFBQVcsVUFBVSxDQUFWLElBQUEsQ0FBdEIsR0FBc0IsQ0FBWCxNQUFYO0FBRUEsSUFBQSxXQUFXLEdBQUcsV0FBVyxDQUFYLE9BQUEsUUFBQSxpQkFBQSxTQUFkLE9BQWMsQ0FBZDtBQUhGLEdBQUEsTUFJTztBQUNMLElBQUEsV0FBVyxHQUFHLFdBQVcsQ0FBWCxPQUFBLFFBQUEsaUJBQUEsU0FBZCxNQUFjLENBQWQ7QUFDRDs7QUFFRCxTQUFBLFdBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBTZXJpYWxpemVkVGVtcGxhdGVXaXRoTGF6eUJsb2NrLFxuICBUZW1wbGF0ZUphdmFzY3JpcHQsXG59IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTE9DQUxfU0hPVUxEX0xPRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgUHJlY29tcGlsZU9wdGlvbnMsIFNvdXJjZSwgVGVtcGxhdGVJZEZuIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IExPQ0FMX0xPR0dFUiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgcGFzczAgZnJvbSAnLi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2luZGV4JztcbmltcG9ydCB7IHZpc2l0IGFzIHBhc3MyIH0gZnJvbSAnLi9wYXNzZXMvMi1lbmNvZGluZy9pbmRleCc7XG5cbmRlY2xhcmUgZnVuY3Rpb24gcmVxdWlyZShpZDogJ2NyeXB0bycpOiBDcnlwdG87XG5kZWNsYXJlIGZ1bmN0aW9uIHJlcXVpcmUoaWQ6IHN0cmluZyk6IHVua25vd247XG5cbmludGVyZmFjZSBDcnlwdG8ge1xuICBjcmVhdGVIYXNoKFxuICAgIGFsZzogJ3NoYTEnXG4gICk6IHtcbiAgICB1cGRhdGUoc3JjOiBzdHJpbmcsIGVuY29kaW5nOiAndXRmOCcpOiB2b2lkO1xuICAgIGRpZ2VzdChlbmNvZGluZzogJ2Jhc2U2NCcpOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SWQ6IFRlbXBsYXRlSWRGbiA9ICgoKSA9PiB7XG4gIGxldCByZXE6IHR5cGVvZiByZXF1aXJlIHwgdW5kZWZpbmVkID1cbiAgICB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlLnJlcXVpcmUgPT09ICdmdW5jdGlvbicgPyBtb2R1bGUucmVxdWlyZSA6IHJlcXVpcmU7XG5cbiAgaWYgKHJlcSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcnlwdG8gPSByZXEoJ2NyeXB0bycpO1xuXG4gICAgICBsZXQgaWRGbjogVGVtcGxhdGVJZEZuID0gKHNyYykgPT4ge1xuICAgICAgICBsZXQgaGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJyk7XG4gICAgICAgIGhhc2gudXBkYXRlKHNyYywgJ3V0ZjgnKTtcbiAgICAgICAgLy8gdHJpbSB0byA2IGJ5dGVzIG9mIGRhdGEgKDJeNDggLSAxKVxuICAgICAgICByZXR1cm4gaGFzaC5kaWdlc3QoJ2Jhc2U2NCcpLnN1YnN0cmluZygwLCA4KTtcbiAgICAgIH07XG5cbiAgICAgIGlkRm4oJ3Rlc3QnKTtcblxuICAgICAgcmV0dXJuIGlkRm47XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBpZEZuKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9O1xufSkoKTtcblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0ge1xuICBpZDogZGVmYXVsdElkLFxufTtcblxuLypcbiAqIENvbXBpbGUgYSBzdHJpbmcgaW50byBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiAgICAgaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJ0BnbGltbWVyL2NvbXBpbGVyJztcbiAqICAgICBpbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdnbGltbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZUpTT04oXG4gIHN0cmluZzogc3RyaW5nLFxuICBvcHRpb25zOiBQcmVjb21waWxlT3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zXG4pOiBbYmxvY2s6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLCB1c2VkTG9jYWxzOiBzdHJpbmdbXV0ge1xuICBsZXQgc291cmNlID0gbmV3IFNvdXJjZShzdHJpbmcsIG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZSk7XG4gIGxldCBbYXN0LCBsb2NhbHNdID0gbm9ybWFsaXplKHNvdXJjZSwgb3B0aW9ucyk7XG4gIGxldCBibG9jayA9IHBhc3MwKHNvdXJjZSwgYXN0LCBvcHRpb25zLnN0cmljdE1vZGUgPz8gZmFsc2UpLm1hcE9rKChwYXNzMkluKSA9PiB7XG4gICAgcmV0dXJuIHBhc3MyKHBhc3MySW4pO1xuICB9KTtcblxuICBpZiAoTE9DQUxfU0hPVUxEX0xPRykge1xuICAgIExPQ0FMX0xPR0dFUi5sb2coYFRlbXBsYXRlIC0+YCwgYmxvY2spO1xuICB9XG5cbiAgaWYgKGJsb2NrLmlzT2spIHtcbiAgICByZXR1cm4gW2Jsb2NrLnZhbHVlLCBsb2NhbHNdO1xuICB9IGVsc2Uge1xuICAgIHRocm93IGJsb2NrLnJlYXNvbjtcbiAgfVxufVxuXG4vLyBVVUlEIHVzZWQgYXMgYSB1bmlxdWUgcGxhY2Vob2xkZXIgZm9yIHBsYWNpbmcgYSBzbmlwcGV0IG9mIEpTIGNvZGUgaW50b1xuLy8gdGhlIG90aGVyd2lzZSBKU09OIHN0cmluZ2lmaWVkIHZhbHVlIGJlbG93LlxuY29uc3QgU0NPUEVfUExBQ0VIT0xERVIgPSAnNzk2ZDI0ZTYtMjQ1MC00ZmIwLThjZGYtYjY1NjM4YjVlZjcwJztcblxuLypcbiAqIENvbXBpbGUgYSBzdHJpbmcgaW50byBhIHRlbXBsYXRlIGphdmFzY3JpcHQgc3RyaW5nLlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiAgICAgaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJ0BnbGltbWVyL2NvbXBpbGVyJztcbiAqICAgICBpbXBvcnQgeyB0ZW1wbGF0ZUZhY3RvcnkgfSBmcm9tICdnbGltbWVyLXJ1bnRpbWUnO1xuICogICAgIGxldCB0ZW1wbGF0ZUpzID0gcHJlY29tcGlsZShcIkhvd2R5IHt7bmFtZX19XCIpO1xuICogICAgIGxldCBmYWN0b3J5ID0gdGVtcGxhdGVGYWN0b3J5KG5ldyBGdW5jdGlvbihcInJldHVybiBcIiArIHRlbXBsYXRlSnMpKCkpO1xuICogICAgIGxldCB0ZW1wbGF0ZSA9IGZhY3RvcnkuY3JlYXRlKGVudik7XG4gKlxuICogQG1ldGhvZCBwcmVjb21waWxlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIGEgR2xpbW1lciB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB0ZW1wbGF0ZSBqYXZhc2NyaXB0IHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY29tcGlsZShcbiAgc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFByZWNvbXBpbGVPcHRpb25zID0gZGVmYXVsdE9wdGlvbnNcbik6IFRlbXBsYXRlSmF2YXNjcmlwdCB7XG4gIGxldCBbYmxvY2ssIHVzZWRMb2NhbHNdID0gcHJlY29tcGlsZUpTT04oc291cmNlLCBvcHRpb25zKTtcblxuICBsZXQgbW9kdWxlTmFtZSA9IG9wdGlvbnMubWV0YT8ubW9kdWxlTmFtZTtcbiAgbGV0IGlkRm4gPSBvcHRpb25zLmlkIHx8IGRlZmF1bHRJZDtcbiAgbGV0IGJsb2NrSlNPTiA9IEpTT04uc3RyaW5naWZ5KGJsb2NrKTtcbiAgbGV0IHRlbXBsYXRlSlNPTk9iamVjdDogU2VyaWFsaXplZFRlbXBsYXRlV2l0aExhenlCbG9jayA9IHtcbiAgICBpZDogaWRGbihKU09OLnN0cmluZ2lmeShvcHRpb25zLm1ldGEpICsgYmxvY2tKU09OKSxcbiAgICBibG9jazogYmxvY2tKU09OLFxuICAgIG1vZHVsZU5hbWU6IG1vZHVsZU5hbWUgPz8gJyh1bmtub3duIHRlbXBsYXRlIG1vZHVsZSknLFxuICAgIC8vIGx5aW5nIHRvIHRoZSB0eXBlIGNoZWNrZXIgaGVyZSBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvXG4gICAgLy8gcmVwbGFjZSBpdCBqdXN0IGJlbG93LCBhZnRlciBzdHJpbmdpZmljYXRpb25cbiAgICBzY29wZTogKFNDT1BFX1BMQUNFSE9MREVSIGFzIHVua25vd24pIGFzIG51bGwsXG4gICAgaXNTdHJpY3RNb2RlOiBvcHRpb25zLnN0cmljdE1vZGUgPz8gZmFsc2UsXG4gIH07XG5cbiAgaWYgKCFvcHRpb25zLnN0cmljdE1vZGUpIHtcbiAgICBkZWxldGUgdGVtcGxhdGVKU09OT2JqZWN0LnNjb3BlO1xuICB9XG5cbiAgLy8gSlNPTiBpcyBqYXZhc2NyaXB0XG4gIGxldCBzdHJpbmdpZmllZCA9IEpTT04uc3RyaW5naWZ5KHRlbXBsYXRlSlNPTk9iamVjdCk7XG5cbiAgaWYgKG9wdGlvbnMuc3RyaWN0TW9kZSAmJiB1c2VkTG9jYWxzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgc2NvcGVGbiA9IGAoKT0+WyR7dXNlZExvY2Fscy5qb2luKCcsJyl9XWA7XG5cbiAgICBzdHJpbmdpZmllZCA9IHN0cmluZ2lmaWVkLnJlcGxhY2UoYFwiJHtTQ09QRV9QTEFDRUhPTERFUn1cImAsIHNjb3BlRm4pO1xuICB9IGVsc2Uge1xuICAgIHN0cmluZ2lmaWVkID0gc3RyaW5naWZpZWQucmVwbGFjZShgXCIke1NDT1BFX1BMQUNFSE9MREVSfVwiYCwgJ251bGwnKTtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdpZmllZDtcbn1cblxuZXhwb3J0IHsgUHJlY29tcGlsZU9wdGlvbnMgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -51,5 +51,5 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); }

var path = getPathExpression(node);
var path = getCalleeExpression(node);
if (path !== null && path.ref.type === 'Free') {
if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {
if (path.tail.length > 0) {

@@ -73,5 +73,5 @@ if (path.ref.resolution.serialize() === 'Loose') {

if (this.match(node)) {
var path = getPathExpression(node);
var path = getCalleeExpression(node);
if (path !== null && path.tail.length > 0) {
if (path !== null && path.type === 'Path' && path.tail.length > 0) {
return Err(generateSyntaxError("The `" + this.keyword + "` keyword was used incorrectly. It was used as `" + path.loc.asString() + "`, but it cannot be used with additional path segments. \n\nError caused by", node.loc));

@@ -105,3 +105,3 @@ }

function getPathExpression(node) {
function getCalleeExpression(node) {
switch (node.type) {

@@ -114,3 +114,3 @@ // This covers the inside of attributes and expressions, as well as the callee

case 'AppendContent':
return getPathExpression(node.value);
return getCalleeExpression(node.value);

@@ -120,3 +120,3 @@ case 'Call':

case 'ElementModifier':
return getPathExpression(node.callee);
return node.callee;

@@ -156,5 +156,5 @@ default:

var path = getPathExpression(node);
var path = getCalleeExpression(node);
if (path && path.ref.type === 'Free' && isKeyword(path.ref.name)) {
if (path && path.type === 'Path' && path.ref.type === 'Free' && isKeyword(path.ref.name)) {
var name = path.ref.name;

@@ -290,2 +290,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQUEsbUJBQUEsRUFBQSxTQUFBLEVBQUEsY0FBQSxRQUFBLGlCQUFBO0FBT0EsU0FBQSxTQUFBLFFBQUEsZUFBQTtBQUVBLFNBQUEsR0FBQSxRQUFBLHdCQUFBOztJQWdCQSxXO0FBUUUsdUJBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBWixHQUFZLEVBQVo7O0FBQ0EseURBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsd0NBQTBDO0FBQUEsVUFBMUMsUUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUwsR0FBQSxDQUFBLFFBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0Q7Ozs7U0FFUyxLLEdBQUEsZUFBSyxJQUFMLEVBQWdDO0FBQ3hDLFFBQUksQ0FBQyxLQUFBLEtBQUEsQ0FBQSxHQUFBLENBQWUsSUFBSSxDQUF4QixJQUFLLENBQUwsRUFBZ0M7QUFDOUIsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBSSxJQUFJLEdBQUcsaUJBQWlCLENBQTVCLElBQTRCLENBQTVCOztBQUVBLFFBQUksSUFBSSxLQUFKLElBQUEsSUFBaUIsSUFBSSxDQUFKLEdBQUEsQ0FBQSxJQUFBLEtBQXJCLE1BQUEsRUFBK0M7QUFDN0MsVUFBSSxJQUFJLENBQUosSUFBQSxDQUFBLE1BQUEsR0FBSixDQUFBLEVBQTBCO0FBQ3hCLFlBQUksSUFBSSxDQUFKLEdBQUEsQ0FBQSxVQUFBLENBQUEsU0FBQSxPQUFKLE9BQUEsRUFBaUQ7QUFDL0M7QUFDQTtB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OUQsU0FBTyxLQUFLLENBQUwsR0FBQSxDQUNDLFVBQUEsSUFBRCxFQUFTO0FBQ1osWUFBQSxJQUFBO0FBQ0UsV0FBQSxRQUFBO0FBQ0UsdURBQUEsSUFBQTs7QUFDRixXQUFBLE9BQUE7QUFDRSxzREFBNEMsSUFBNUMsYUFBQSxJQUFBOztBQUNGLFdBQUEsTUFBQTtBQUNFLGdEQUFBLElBQUE7O0FBQ0YsV0FBQSxVQUFBO0FBQ0UsbURBQUEsSUFBQTs7QUFDRjtBQUNFLGVBQU8sU0FBUyxDQUFoQixJQUFnQixDQUFoQjtBQVZKO0FBRkcsR0FBQSxFQUFBLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFnQkQ7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRkEsT0FBTSxTQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQWlEO0FBQ3JELFNBQU8sSUFBQSxRQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBU1R2MixcbiAgZ2VuZXJhdGVTeW50YXhFcnJvcixcbiAgaXNLZXl3b3JkLFxuICBLRVlXT1JEU19UWVBFUyxcbiAgS2V5d29yZFR5cGUsXG59IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBleGhhdXN0ZWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgRXJyLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCB7IE5vcm1hbGl6YXRpb25TdGF0ZSB9IGZyb20gJy4uL2NvbnRleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmREZWxlZ2F0ZTxNYXRjaCBleHRlbmRzIEtleXdvcmRNYXRjaCwgViwgT3V0PiB7XG4gIGFzc2VydChvcHRpb25zOiBNYXRjaCwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxWPjtcbiAgdHJhbnNsYXRlKG9wdGlvbnM6IHsgbm9kZTogTWF0Y2g7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSwgcGFyYW06IFYpOiBSZXN1bHQ8T3V0Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSA9IEtleXdvcmRUeXBlLCBPdXQgPSB1bmtub3duPiB7XG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0tleXdvcmQ8T3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogQVNUdjIuSW52b2tlQmxvY2ssIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmNsYXNzIEtleXdvcmRJbXBsPFxuICBLIGV4dGVuZHMgS2V5d29yZFR5cGUsXG4gIFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBhcmFtID0gdW5rbm93bixcbiAgT3V0ID0gdW5rbm93blxuPiB7XG4gIHByb3RlY3RlZCB0eXBlczogU2V0PEtleXdvcmRDYW5kaWRhdGVzW0tdWyd0eXBlJ10+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBrZXl3b3JkOiBTLFxuICAgIHR5cGU6IEtleXdvcmRUeXBlLFxuICAgIHByaXZhdGUgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgUGFyYW0sIE91dD5cbiAgKSB7XG4gICAgbGV0IG5vZGVzID0gbmV3IFNldDxLZXl3b3JkTm9kZVsndHlwZSddPigpO1xuICAgIGZvciAobGV0IG5vZGVUeXBlIG9mIEtFWVdPUkRfTk9ERVNbdHlwZV0pIHtcbiAgICAgIG5vZGVzLmFkZChub2RlVHlwZSk7XG4gICAgfVxuXG4gICAgdGhpcy50eXBlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdGNoKG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdKTogbm9kZSBpcyBLZXl3b3JkTWF0Y2hlc1tLXSB7XG4gICAgaWYgKCF0aGlzLnR5cGVzLmhhcyhub2RlLnR5cGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJykge1xuICAgICAgaWYgKHBhdGgudGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChwYXRoLnJlZi5yZXNvbHV0aW9uLnNlcmlhbGl6ZSgpID09PSAnTG9vc2UnKSB7XG4gICAgICAgICAgLy8gY2Fubm90IGJlIGEga2V5d29yZCByZWZlcmVuY2UsIGtleXdvcmRzIGRvIG5vdCBhbGxvdyBwYXRocyAobXVzdCBiZVxuICAgICAgICAgIC8vIHJlbHlpbmcgb24gaW1wbGljaXQgdGhpcyBmYWxsYmFjaylcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhdGgucmVmLm5hbWUgPT09IHRoaXMua2V5d29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkTWF0Y2hlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubWF0Y2gobm9kZSkpIHtcbiAgICAgIGxldCBwYXRoID0gZ2V0UGF0aEV4cHJlc3Npb24obm9kZSk7XG5cbiAgICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgudGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtcbiAgICAgICAgICAgICAgdGhpcy5rZXl3b3JkXG4gICAgICAgICAgICB9XFxgIGtleXdvcmQgd2FzIHVzZWQgaW5jb3JyZWN0bHkuIEl0IHdhcyB1c2VkIGFzIFxcYCR7cGF0aC5sb2MuYXNTdHJpbmcoKX1cXGAsIGJ1dCBpdCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFkZGl0aW9uYWwgcGF0aCBzZWdtZW50cy4gXFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgcGFyYW0gPSB0aGlzLmRlbGVnYXRlLmFzc2VydChub2RlLCBzdGF0ZSk7XG4gICAgICByZXR1cm4gcGFyYW0uYW5kVGhlbigocGFyYW0pID0+IHRoaXMuZGVsZWdhdGUudHJhbnNsYXRlKHsgbm9kZSwgc3RhdGUgfSwgcGFyYW0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBvc3NpYmxlTm9kZSA9XG4gIHwgQVNUdjIuUGF0aEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5BcHBlbmRDb250ZW50XG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9jaztcblxuZXhwb3J0IGNvbnN0IEtFWVdPUkRfTk9ERVMgPSB7XG4gIENhbGw6IFsnQ2FsbCddLFxuICBCbG9jazogWydJbnZva2VCbG9jayddLFxuICBBcHBlbmQ6IFsnQXBwZW5kQ29udGVudCddLFxuICBNb2RpZmllcjogWydFbGVtZW50TW9kaWZpZXInXSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZENhbmRpZGF0ZXMge1xuICBDYWxsOiBBU1R2Mi5FeHByZXNzaW9uTm9kZTtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRDYW5kaWRhdGUgPSBLZXl3b3JkQ2FuZGlkYXRlc1trZXlvZiBLZXl3b3JkQ2FuZGlkYXRlc107XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZE1hdGNoZXMge1xuICBDYWxsOiBBU1R2Mi5DYWxsRXhwcmVzc2lvbjtcbiAgQmxvY2s6IEFTVHYyLkludm9rZUJsb2NrO1xuICBBcHBlbmQ6IEFTVHYyLkFwcGVuZENvbnRlbnQ7XG4gIE1vZGlmaWVyOiBBU1R2Mi5FbGVtZW50TW9kaWZpZXI7XG59XG5cbmV4cG9ydCB0eXBlIEtleXdvcmRNYXRjaCA9IEtleXdvcmRNYXRjaGVzW2tleW9mIEtleXdvcmRNYXRjaGVzXTtcblxuLyoqXG4gKiBBIFwiZ2VuZXJpY1wiIGtleXdvcmQgaXMgc29tZXRoaW5nIGxpa2UgYGhhcy1ibG9ja2AsIHdoaWNoIG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0XG4gKiBvZiBzdWItZXhwcmVzc2lvbiBvciBhcHBlbmRcbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0tleXdvcmROb2RlID0gQVNUdjIuQXBwZW5kQ29udGVudCB8IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuXG5leHBvcnQgdHlwZSBLZXl3b3JkTm9kZSA9XG4gIHwgR2VuZXJpY0tleXdvcmROb2RlXG4gIHwgQVNUdjIuQ2FsbEV4cHJlc3Npb25cbiAgfCBBU1R2Mi5JbnZva2VCbG9ja1xuICB8IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmQ8XG4gIEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSxcbiAgRCBleHRlbmRzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PixcbiAgT3V0ID0gdW5rbm93blxuPihrZXl3b3JkOiBzdHJpbmcsIHR5cGU6IEssIGRlbGVnYXRlOiBEKTogS2V5d29yZDxLLCBPdXQ+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3JkSW1wbChrZXl3b3JkLCB0eXBlLCBkZWxlZ2F0ZSBhcyBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoLCB1bmtub3duLCBPdXQ+KTtcbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVLZXl3b3JkID0gS2V5d29yZE5vZGU7XG50eXBlIE91dEZvcjxLIGV4dGVuZHMgS2V5d29yZCB8IEJsb2NrS2V5d29yZD4gPSBLIGV4dGVuZHMgQmxvY2tLZXl3b3JkPGluZmVyIE91dD5cbiAgPyBPdXRcbiAgOiBLIGV4dGVuZHMgS2V5d29yZDxLZXl3b3JkVHlwZSwgaW5mZXIgT3V0PlxuICA/IE91dFxuICA6IG5ldmVyO1xuXG5mdW5jdGlvbiBnZXRQYXRoRXhwcmVzc2lvbihub2RlOiBLZXl3b3JkTm9kZSB8IEFTVHYyLkV4cHJlc3Npb25Ob2RlKTogQVNUdjIuUGF0aEV4cHJlc3Npb24gfCBudWxsIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAvLyBUaGlzIGNvdmVycyB0aGUgaW5zaWRlIG9mIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzIHRoZSBjYWxsZWVcbiAgICAvLyBvZiBjYWxsIG5vZGVzXG4gICAgY2FzZSAnUGF0aCc6XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICBjYXNlICdBcHBlbmRDb250ZW50JzpcbiAgICAgIHJldHVybiBnZXRQYXRoRXhwcmVzc2lvbihub2RlLnZhbHVlKTtcbiAgICBjYXNlICdDYWxsJzpcbiAgICBjYXNlICdJbnZva2VCbG9jayc6XG4gICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyJzpcbiAgICAgIHJldHVybiBnZXRQYXRoRXhwcmVzc2lvbihub2RlLmNhbGxlZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXl3b3JkczxLIGV4dGVuZHMgS2V5d29yZFR5cGUsIEtleXdvcmRMaXN0IGV4dGVuZHMgS2V5d29yZDxLPiA9IG5ldmVyPlxuICBpbXBsZW1lbnRzIEtleXdvcmQ8SywgT3V0Rm9yPEtleXdvcmRMaXN0Pj4ge1xuICAja2V5d29yZHM6IEtleXdvcmRbXSA9IFtdO1xuICAjdHlwZTogSztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBLKSB7XG4gICAgdGhpcy4jdHlwZSA9IHR5cGU7XG4gIH1cblxuICBrdzxTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBPdXQgPSB1bmtub3duPihcbiAgICBuYW1lOiBTLFxuICAgIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIHVua25vd24sIE91dD5cbiAgKTogS2V5d29yZHM8SywgS2V5d29yZExpc3QgfCBLZXl3b3JkPEssIE91dD4+IHtcbiAgICB0aGlzLiNrZXl3b3Jkcy5wdXNoKGtleXdvcmQobmFtZSwgdGhpcy4jdHlwZSwgZGVsZWdhdGUpKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdHJhbnNsYXRlKFxuICAgIG5vZGU6IEtleXdvcmRDYW5kaWRhdGVzW0tdLFxuICAgIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGVcbiAgKTogUmVzdWx0PE91dEZvcjxLZXl3b3JkTGlzdD4+IHwgbnVsbCB7XG4gICAgZm9yIChsZXQga2V5d29yZCBvZiB0aGlzLiNrZXl3b3Jkcykge1xuICAgICAgbGV0IHJlc3VsdCA9IGtleXdvcmQudHJhbnNsYXRlKG5vZGUsIHN0YXRlKSBhcyBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj47XG4gICAgICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBnZXRQYXRoRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJyAmJiBpc0tleXdvcmQocGF0aC5yZWYubmFtZSkpIHtcbiAgICAgIGxldCB7IG5hbWUgfSA9IHBhdGgucmVmO1xuXG4gICAgICBsZXQgdXNlZFR5cGUgPSB0aGlzLiN0eXBlO1xuICAgICAgbGV0IHZhbGlkVHlwZXMgPSBLRVlXT1JEU19UWVBFU1tuYW1lXTtcblxuICAgICAgaWYgKHZhbGlkVHlwZXMuaW5kZXhPZih1c2VkVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBFcnIoXG4gICAgICAgICAgZ2VuZXJhdGVTeW50YXhFcnJvcihcbiAgICAgICAgICAgIGBUaGUgXFxgJHtuYW1lfVxcYCBrZXl3b3JkIHdhcyB1c2VkIGluY29ycmVjdGx5LiBJdCB3YXMgdXNlZCBhcyAke1xuICAgICAgICAgICAgICB0eXBlc1RvUmVhZGFibGVOYW1lW3VzZWRUeXBlXVxuICAgICAgICAgICAgfSwgYnV0IGl0cyB2YWxpZCB1c2FnZXMgYXJlOlxcblxcbiR7Z2VuZXJhdGVUeXBlc01lc3NhZ2UoXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbGlkVHlwZXNcbiAgICAgICAgICAgICl9XFxuXFxuRXJyb3IgY2F1c2VkIGJ5YCxcbiAgICAgICAgICAgIG5vZGUubG9jXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNvbnN0IHR5cGVzVG9SZWFkYWJsZU5hbWUgPSB7XG4gIEFwcGVuZDogJ2FuIGFwcGVuZCBzdGF0ZW1lbnQnLFxuICBCbG9jazogJ2EgYmxvY2sgc3RhdGVtZW50JyxcbiAgQ2FsbDogJ2EgY2FsbCBleHByZXNzaW9uJyxcbiAgTW9kaWZpZXI6ICdhIG1vZGlmaWVyJyxcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVHlwZXNNZXNzYWdlKG5hbWU6IHN0cmluZywgdHlwZXM6IEtleXdvcmRUeXBlW10pOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZXNcbiAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSAnQXBwZW5kJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gYXBwZW5kIHN0YXRlbWVudCwgYXMgaW46IHt7JHtuYW1lfX19YDtcbiAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIGJsb2NrIHN0YXRlbWVudCwgYXMgaW46IHt7IyR7bmFtZX19fXt7LyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0NhbGwnOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhbiBleHByZXNzaW9uLCBhcyBpbjogKCR7bmFtZX0pYDtcbiAgICAgICAgY2FzZSAnTW9kaWZpZXInOlxuICAgICAgICAgIHJldHVybiBgLSBBcyBhIG1vZGlmaWVyLCBhcyBpbjogPGRpdiB7eyR7bmFtZX19fT48L2Rpdj5gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBleGhhdXN0ZWQodHlwZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAuam9pbignXFxuXFxuJyk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBidWlsZHMga2V5d29yZCBkZWZpbml0aW9ucyBmb3IgYSBwYXJ0aWN1bGFyIHR5cGUgb2YgQVNUIG5vZGUgKGBLZXl3b3JkVHlwZWApLlxuICpcbiAqIFlvdSBjYW4gYnVpbGQga2V5d29yZCBkZWZpbml0aW9ucyBmb3I6XG4gKlxuICogLSBgRXhwcmA6IEEgYFN1YkV4cHJlc3Npb25gIG9yIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEJsb2NrYDogQSBgQmxvY2tTdGF0ZW1lbnRgXG4gKiAgIC0gQSBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYVxuICogICAgIGBQYXRoRXhwcmVzc2lvbmBcbiAqIC0gYEFwcGVuZGA6IEFuIGBBcHBlbmRTdGF0ZW1lbnRgXG4gKlxuICogQSBub2RlIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWY6XG4gKlxuICogLSBBIGBQYXRoRXhwcmVzc2lvbmAgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZSBpZiBpdCBoYXMgbm8gdGFpbCwgYW5kIGl0c1xuICogICBoZWFkIGV4cHJlc3Npb24gaXMgYSBgTG9jYWxWYXJIZWFkYCBvciBgRnJlZVZhckhlYWRgIHdob3NlIG5hbWUgaXNcbiAqICAgdGhlIGtleXdvcmQncyBuYW1lLlxuICogLSBBIGBTdWJFeHByZXNzaW9uYCwgYEFwcGVuZFN0YXRlbWVudGAsIG9yIGBCbG9ja1N0YXRlbWVudGAgaXMgYSBrZXl3b3JkXG4gKiAgIGNhbmRpZGF0ZSBpZiBpdHMgaGVhZCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlLlxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGd1YXJhbnRlZXMgdGhhdDpcbiAqXG4gKiAtIElmIGEgbm9kZSBpcyBub3QgYSBrZXl3b3JkIGNhbmRpZGF0ZSwgaXQgaXMgbmV2ZXIgcGFzc2VkIHRvIGFueSBrZXl3b3JkJ3NcbiAqICAgYGFzc2VydGAgbWV0aG9kLlxuICogLSBJZiBhIG5vZGUgaXMgbm90IHRoZSBgS2V5d29yZFR5cGVgIGZvciBhIHBhcnRpY3VsYXIga2V5d29yZCwgaXQgd2lsbCBub3RcbiAqICAgYmUgcGFzc2VkIHRvIHRoZSBrZXl3b3JkJ3MgYGFzc2VydGAgbWV0aG9kLlxuICpcbiAqIGBFeHByYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBleHByZXNzaW9uIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVJcbiAqIGV4cHJlc3Npb25zLiBgQmxvY2tgIGFuZCBgQXBwZW5kYCBrZXl3b3JkcyBhcmUgdXNlZCBpbiBzdGF0ZW1lbnRcbiAqIHBvc2l0aW9ucyBhbmQgc2hvdWxkIHJldHVybiBISVIgc3RhdGVtZW50cy5cbiAqXG4gKiBBIGtleXdvcmQgZGVmaW5pdGlvbiBoYXMgdHdvIHBhcnRzOlxuICpcbiAqIC0gYG1hdGNoYCwgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIEFTVCBub2RlIG1hdGNoZXMgdGhlIGtleXdvcmQsIGFuZCBjYW5cbiAqICAgb3B0aW9uYWxseSByZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSB0aGUgQVNUIG5vZGUuXG4gKiAtIGB0cmFuc2xhdGVgLCB3aGljaCB0YWtlcyBhIG1hdGNoaW5nIEFTVCBub2RlIGFzIHdlbGwgYXMgdGhlIGV4dHJhY3RlZFxuICogICBpbmZvcm1hdGlvbiBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBISVIgaW5zdHJ1Y3Rpb24uXG4gKlxuICogIyBFeGFtcGxlXG4gKlxuICogVGhpcyBrZXl3b3JkOlxuICpcbiAqIC0gdHVybnMgYChoZWxsbylgIGludG8gYFwiaGVsbG9cImBcbiAqICAgLSBhcyBsb25nIGFzIGBoZWxsb2AgaXMgbm90IGluIHNjb3BlXG4gKiAtIG1ha2VzIGl0IGFuIGVycm9yIHRvIHBhc3MgYW55IGFyZ3VtZW50cyAoc3VjaCBhcyBgKGhlbGxvIHdvcmxkKWApXG4gKlxuICogYGBgdHNcbiAqIGtleXdvcmRzKCdTdWJFeHByJykua3coJ2hlbGxvJywge1xuICogICBhc3NlcnQobm9kZTogRXhwcktleXdvcmROb2RlKTogUmVzdWx0PHZvaWQ+IHwgZmFsc2Uge1xuICogICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJhbnNmb3JtIGBoZWxsb2AgYXMgYSBgUGF0aEV4cHJlc3Npb25gXG4gKiAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICAvLyBub2RlLmhlYWQgd291bGQgYmUgYExvY2FsVmFySGVhZGAgaWYgYGhlbGxvYCB3YXMgaW4gc2NvcGVcbiAqICAgICBpZiAobm9kZS5oZWFkLnR5cGUgIT09ICdGcmVlVmFySGVhZCcpIHtcbiAqICAgICAgIHJldHVybiBmYWxzZTtcbiAqICAgICB9XG4gKlxuICogICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggfHwgbm9kZS5oYXNoKSB7XG4gKiAgICAgICByZXR1cm4gRXJyKGdlbmVyYXRlU3ludGF4RXJyb3IoYChoZWxsbykgZG9lcyBub3QgdGFrZSBhbnkgYXJndW1lbnRzYCksIG5vZGUubG9jKTtcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgcmV0dXJuIE9rKCk7XG4gKiAgICAgfVxuICogICB9LFxuICpcbiAqICAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLlN1YkV4cHJlc3Npb24pOiBoaXIuRXhwcmVzc2lvbiB7XG4gKiAgICAgcmV0dXJuIEFTVHYyLmJ1aWxkZXJzLmxpdGVyYWwoXCJoZWxsb1wiLCBub2RlLmxvYylcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIFRoZSBrZXl3b3JkIGluZnJhc3RydWN0dXJlIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBpcyB0aGUgcmlnaHRcbiAqIHR5cGUgYmVmb3JlIGNhbGxpbmcgYGFzc2VydGAsIHNvIHlvdSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgYFN1YkV4cHJlc3Npb25gXG4gKiBhbmQgYFBhdGhFeHByZXNzaW9uYCBoZXJlLiBJdCBhbHNvIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbm9kZSBwYXNzZWRcbiAqIHRvIGBhc3NlcnRgIGhhcyB0aGUga2V5d29yZCBuYW1lIGluIHRoZSByaWdodCBwbGFjZS5cbiAqXG4gKiBOb3RlIHRoZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHJldHVybmluZyBgZmFsc2VgIGZyb20gYGFzc2VydGAsXG4gKiB3aGljaCBqdXN0IG1lYW5zIHRoYXQgdGhlIG5vZGUgZGlkbid0IG1hdGNoLCBhbmQgcmV0dXJuaW5nIGBFcnJgLCB3aGljaFxuICogbWVhbnMgdGhhdCB0aGUgbm9kZSBtYXRjaGVkLCBidXQgdGhlcmUgd2FzIGEga2V5d29yZC1zcGVjaWZpYyBzeW50YXhcbiAqIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZHM8SyBleHRlbmRzIEtleXdvcmRUeXBlPih0eXBlOiBLKTogS2V5d29yZHM8Sz4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRzKHR5cGUpO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL2ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQUEsbUJBQUEsRUFBQSxTQUFBLEVBQUEsY0FBQSxRQUFBLGlCQUFBO0FBT0EsU0FBQSxTQUFBLFFBQUEsZUFBQTtBQUVBLFNBQUEsR0FBQSxRQUFBLHdCQUFBOztJQWdCQSxXO0FBUUUsdUJBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBR2tFO0FBRnRELFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFFRixTQUFBLFFBQUEsR0FBQSxRQUFBO0FBRVIsUUFBSSxLQUFLLEdBQUcsSUFBWixHQUFZLEVBQVo7O0FBQ0EseURBQXFCLGFBQWEsQ0FBbEMsSUFBa0MsQ0FBbEMsd0NBQTBDO0FBQUEsVUFBMUMsUUFBMEM7QUFDeEMsTUFBQSxLQUFLLENBQUwsR0FBQSxDQUFBLFFBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0Q7Ozs7U0FFUyxLLEdBQUEsZUFBSyxJQUFMLEVBQWdDO0FBQ3hDLFFBQUksQ0FBQyxLQUFBLEtBQUEsQ0FBQSxHQUFBLENBQWUsSUFBSSxDQUF4QixJQUFLLENBQUwsRUFBZ0M7QUFDOUIsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBSSxJQUFJLEdBQUcsbUJBQW1CLENBQTlCLElBQThCLENBQTlCOztBQUVBLFFBQUksSUFBSSxLQUFKLElBQUEsSUFBaUIsSUFBSSxDQUFKLElBQUEsS0FBakIsTUFBQSxJQUF5QyxJQUFJLENBQUosR0FBQSxDQUFBLElBQUEsS0FBN0MsTUFBQSxFQUF1RTtBQUNyRSxVQUFJLElBQUksQ0FBSixJQUFBLENBQUEsTUFBQSxHQUFKLENBQUEsRUFBMEI7QUFDeEIsWUFBSSxJQUFJLENBQUosR0FBQSxDQUFBLFVBQUEsQ0FBQSxT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MUIsRUFBQSxRQUFRLEVBQUU7QUFKZ0IsQ0FBNUI7O0FBT0EsU0FBQSxvQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQWdFO0FBQzlELFNBQU8sS0FBSyxDQUFMLEdBQUEsQ0FDQyxVQUFBLElBQUQsRUFBUztBQUNaLFlBQUEsSUFBQTtBQUNFLFdBQUEsUUFBQTtBQUNFLHVEQUFBLElBQUE7O0FBQ0YsV0FBQSxPQUFBO0FBQ0Usc0RBQTRDLElBQTVDLGFBQUEsSUFBQTs7QUFDRixXQUFBLE1BQUE7QUFDRSxnREFBQSxJQUFBOztBQUNGLFdBQUEsVUFBQTtBQUNFLG1EQUFBLElBQUE7O0FBQ0Y7QUFDRSxlQUFPLFNBQVMsQ0FBaEIsSUFBZ0IsQ0FBaEI7QUFWSjtBQUZHLEdBQUEsRUFBQSxJQUFBLENBQVAsTUFBTyxDQUFQO0FBZ0JEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUZBLE9BQU0sU0FBQSxRQUFBLENBQUEsSUFBQSxFQUFpRDtBQUNyRCxTQUFPLElBQUEsUUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVNUdjIsXG4gIGdlbmVyYXRlU3ludGF4RXJyb3IsXG4gIGlzS2V5d29yZCxcbiAgS0VZV09SRFNfVFlQRVMsXG4gIEtleXdvcmRUeXBlLFxufSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgZXhoYXVzdGVkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEVyciwgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgeyBOb3JtYWxpemF0aW9uU3RhdGUgfSBmcm9tICcuLi9jb250ZXh0JztcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkRGVsZWdhdGU8TWF0Y2ggZXh0ZW5kcyBLZXl3b3JkTWF0Y2gsIFYsIE91dD4ge1xuICBhc3NlcnQob3B0aW9uczogTWF0Y2gsIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8Vj47XG4gIHRyYW5zbGF0ZShvcHRpb25zOiB7IG5vZGU6IE1hdGNoOyBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlIH0sIHBhcmFtOiBWKTogUmVzdWx0PE91dD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZDxLIGV4dGVuZHMgS2V5d29yZFR5cGUgPSBLZXl3b3JkVHlwZSwgT3V0ID0gdW5rbm93bj4ge1xuICB0cmFuc2xhdGUobm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sIHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUpOiBSZXN1bHQ8T3V0PiB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tLZXl3b3JkPE91dCA9IHVua25vd24+IHtcbiAgdHJhbnNsYXRlKG5vZGU6IEFTVHYyLkludm9rZUJsb2NrLCBzdGF0ZTogTm9ybWFsaXphdGlvblN0YXRlKTogUmVzdWx0PE91dD4gfCBudWxsO1xufVxuXG5jbGFzcyBLZXl3b3JkSW1wbDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBQYXJhbSA9IHVua25vd24sXG4gIE91dCA9IHVua25vd25cbj4ge1xuICBwcm90ZWN0ZWQgdHlwZXM6IFNldDxLZXl3b3JkQ2FuZGlkYXRlc1tLXVsndHlwZSddPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQga2V5d29yZDogUyxcbiAgICB0eXBlOiBLZXl3b3JkVHlwZSxcbiAgICBwcml2YXRlIGRlbGVnYXRlOiBLZXl3b3JkRGVsZWdhdGU8S2V5d29yZE1hdGNoZXNbS10sIFBhcmFtLCBPdXQ+XG4gICkge1xuICAgIGxldCBub2RlcyA9IG5ldyBTZXQ8S2V5d29yZE5vZGVbJ3R5cGUnXT4oKTtcbiAgICBmb3IgKGxldCBub2RlVHlwZSBvZiBLRVlXT1JEX05PREVTW3R5cGVdKSB7XG4gICAgICBub2Rlcy5hZGQobm9kZVR5cGUpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZXMgPSBub2RlcztcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRjaChub2RlOiBLZXl3b3JkQ2FuZGlkYXRlc1tLXSk6IG5vZGUgaXMgS2V5d29yZE1hdGNoZXNbS10ge1xuICAgIGlmICghdGhpcy50eXBlcy5oYXMobm9kZS50eXBlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwYXRoID0gZ2V0Q2FsbGVlRXhwcmVzc2lvbihub2RlKTtcblxuICAgIGlmIChwYXRoICE9PSBudWxsICYmIHBhdGgudHlwZSA9PT0gJ1BhdGgnICYmIHBhdGgucmVmLnR5cGUgPT09ICdGcmVlJykge1xuICAgICAgaWYgKHBhdGgudGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChwYXRoLnJlZi5yZXNvbHV0aW9uLnNlcmlhbGl6ZSgpID09PSAnTG9vc2UnKSB7XG4gICAgICAgICAgLy8gY2Fubm90IGJlIGEga2V5d29yZCByZWZlcmVuY2UsIGtleXdvcmRzIGRvIG5vdCBhbGxvdyBwYXRocyAobXVzdCBiZVxuICAgICAgICAgIC8vIHJlbHlpbmcgb24gaW1wbGljaXQgdGhpcyBmYWxsYmFjaylcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhdGgucmVmLm5hbWUgPT09IHRoaXMua2V5d29yZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0ZShub2RlOiBLZXl3b3JkTWF0Y2hlc1tLXSwgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxPdXQ+IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubWF0Y2gobm9kZSkpIHtcbiAgICAgIGxldCBwYXRoID0gZ2V0Q2FsbGVlRXhwcmVzc2lvbihub2RlKTtcblxuICAgICAgaWYgKHBhdGggIT09IG51bGwgJiYgcGF0aC50eXBlID09PSAnUGF0aCcgJiYgcGF0aC50YWlsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIEVycihcbiAgICAgICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKFxuICAgICAgICAgICAgYFRoZSBcXGAke1xuICAgICAgICAgICAgICB0aGlzLmtleXdvcmRcbiAgICAgICAgICAgIH1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgXFxgJHtwYXRoLmxvYy5hc1N0cmluZygpfVxcYCwgYnV0IGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggYWRkaXRpb25hbCBwYXRoIHNlZ21lbnRzLiBcXG5cXG5FcnJvciBjYXVzZWQgYnlgLFxuICAgICAgICAgICAgbm9kZS5sb2NcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJhbSA9IHRoaXMuZGVsZWdhdGUuYXNzZXJ0KG5vZGUsIHN0YXRlKTtcbiAgICAgIHJldHVybiBwYXJhbS5hbmRUaGVuKChwYXJhbSkgPT4gdGhpcy5kZWxlZ2F0ZS50cmFuc2xhdGUoeyBub2RlLCBzdGF0ZSB9LCBwYXJhbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUG9zc2libGVOb2RlID1cbiAgfCBBU1R2Mi5QYXRoRXhwcmVzc2lvblxuICB8IEFTVHYyLkFwcGVuZENvbnRlbnRcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrO1xuXG5leHBvcnQgY29uc3QgS0VZV09SRF9OT0RFUyA9IHtcbiAgQ2FsbDogWydDYWxsJ10sXG4gIEJsb2NrOiBbJ0ludm9rZUJsb2NrJ10sXG4gIEFwcGVuZDogWydBcHBlbmRDb250ZW50J10sXG4gIE1vZGlmaWVyOiBbJ0VsZW1lbnRNb2RpZmllciddLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkQ2FuZGlkYXRlcyB7XG4gIENhbGw6IEFTVHYyLkV4cHJlc3Npb25Ob2RlO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZENhbmRpZGF0ZSA9IEtleXdvcmRDYW5kaWRhdGVzW2tleW9mIEtleXdvcmRDYW5kaWRhdGVzXTtcblxuZXhwb3J0IGludGVyZmFjZSBLZXl3b3JkTWF0Y2hlcyB7XG4gIENhbGw6IEFTVHYyLkNhbGxFeHByZXNzaW9uO1xuICBCbG9jazogQVNUdjIuSW52b2tlQmxvY2s7XG4gIEFwcGVuZDogQVNUdjIuQXBwZW5kQ29udGVudDtcbiAgTW9kaWZpZXI6IEFTVHYyLkVsZW1lbnRNb2RpZmllcjtcbn1cblxuZXhwb3J0IHR5cGUgS2V5d29yZE1hdGNoID0gS2V5d29yZE1hdGNoZXNba2V5b2YgS2V5d29yZE1hdGNoZXNdO1xuXG4vKipcbiAqIEEgXCJnZW5lcmljXCIga2V5d29yZCBpcyBzb21ldGhpbmcgbGlrZSBgaGFzLWJsb2NrYCwgd2hpY2ggbWFrZXMgc2Vuc2UgaW4gdGhlIGNvbnRleHRcbiAqIG9mIHN1Yi1leHByZXNzaW9uIG9yIGFwcGVuZFxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljS2V5d29yZE5vZGUgPSBBU1R2Mi5BcHBlbmRDb250ZW50IHwgQVNUdjIuQ2FsbEV4cHJlc3Npb247XG5cbmV4cG9ydCB0eXBlIEtleXdvcmROb2RlID1cbiAgfCBHZW5lcmljS2V5d29yZE5vZGVcbiAgfCBBU1R2Mi5DYWxsRXhwcmVzc2lvblxuICB8IEFTVHYyLkludm9rZUJsb2NrXG4gIHwgQVNUdjIuRWxlbWVudE1vZGlmaWVyO1xuXG5leHBvcnQgZnVuY3Rpb24ga2V5d29yZDxcbiAgSyBleHRlbmRzIEtleXdvcmRUeXBlLFxuICBEIGV4dGVuZHMgS2V5d29yZERlbGVnYXRlPEtleXdvcmRNYXRjaGVzW0tdLCB1bmtub3duLCBPdXQ+LFxuICBPdXQgPSB1bmtub3duXG4+KGtleXdvcmQ6IHN0cmluZywgdHlwZTogSywgZGVsZWdhdGU6IEQpOiBLZXl3b3JkPEssIE91dD4ge1xuICByZXR1cm4gbmV3IEtleXdvcmRJbXBsKGtleXdvcmQsIHR5cGUsIGRlbGVnYXRlIGFzIEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2gsIHVua25vd24sIE91dD4pO1xufVxuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUtleXdvcmQgPSBLZXl3b3JkTm9kZTtcbnR5cGUgT3V0Rm9yPEsgZXh0ZW5kcyBLZXl3b3JkIHwgQmxvY2tLZXl3b3JkPiA9IEsgZXh0ZW5kcyBCbG9ja0tleXdvcmQ8aW5mZXIgT3V0PlxuICA/IE91dFxuICA6IEsgZXh0ZW5kcyBLZXl3b3JkPEtleXdvcmRUeXBlLCBpbmZlciBPdXQ+XG4gID8gT3V0XG4gIDogbmV2ZXI7XG5cbmZ1bmN0aW9uIGdldENhbGxlZUV4cHJlc3Npb24oXG4gIG5vZGU6IEtleXdvcmROb2RlIHwgQVNUdjIuRXhwcmVzc2lvbk5vZGVcbik6IEFTVHYyLkV4cHJlc3Npb25Ob2RlIHwgbnVsbCB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgLy8gVGhpcyBjb3ZlcnMgdGhlIGluc2lkZSBvZiBhdHRyaWJ1dGVzIGFuZCBleHByZXNzaW9ucywgYXMgd2VsbCBhcyB0aGUgY2FsbGVlXG4gICAgLy8gb2YgY2FsbCBub2Rlc1xuICAgIGNhc2UgJ1BhdGgnOlxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgY2FzZSAnQXBwZW5kQ29udGVudCc6XG4gICAgICByZXR1cm4gZ2V0Q2FsbGVlRXhwcmVzc2lvbihub2RlLnZhbHVlKTtcbiAgICBjYXNlICdDYWxsJzpcbiAgICBjYXNlICdJbnZva2VCbG9jayc6XG4gICAgY2FzZSAnRWxlbWVudE1vZGlmaWVyJzpcbiAgICAgIHJldHVybiBub2RlLmNhbGxlZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZSwgS2V5d29yZExpc3QgZXh0ZW5kcyBLZXl3b3JkPEs+ID0gbmV2ZXI+XG4gIGltcGxlbWVudHMgS2V5d29yZDxLLCBPdXRGb3I8S2V5d29yZExpc3Q+PiB7XG4gICNrZXl3b3JkczogS2V5d29yZFtdID0gW107XG4gICN0eXBlOiBLO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IEspIHtcbiAgICB0aGlzLiN0eXBlID0gdHlwZTtcbiAgfVxuXG4gIGt3PFMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsIE91dCA9IHVua25vd24+KFxuICAgIG5hbWU6IFMsXG4gICAgZGVsZWdhdGU6IEtleXdvcmREZWxlZ2F0ZTxLZXl3b3JkTWF0Y2hlc1tLXSwgdW5rbm93biwgT3V0PlxuICApOiBLZXl3b3JkczxLLCBLZXl3b3JkTGlzdCB8IEtleXdvcmQ8SywgT3V0Pj4ge1xuICAgIHRoaXMuI2tleXdvcmRzLnB1c2goa2V5d29yZChuYW1lLCB0aGlzLiN0eXBlLCBkZWxlZ2F0ZSkpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0cmFuc2xhdGUoXG4gICAgbm9kZTogS2V5d29yZENhbmRpZGF0ZXNbS10sXG4gICAgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZVxuICApOiBSZXN1bHQ8T3V0Rm9yPEtleXdvcmRMaXN0Pj4gfCBudWxsIHtcbiAgICBmb3IgKGxldCBrZXl3b3JkIG9mIHRoaXMuI2tleXdvcmRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0ga2V5d29yZC50cmFuc2xhdGUobm9kZSwgc3RhdGUpIGFzIFJlc3VsdDxPdXRGb3I8S2V5d29yZExpc3Q+PjtcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IGdldENhbGxlZUV4cHJlc3Npb24obm9kZSk7XG5cbiAgICBpZiAocGF0aCAmJiBwYXRoLnR5cGUgPT09ICdQYXRoJyAmJiBwYXRoLnJlZi50eXBlID09PSAnRnJlZScgJiYgaXNLZXl3b3JkKHBhdGgucmVmLm5hbWUpKSB7XG4gICAgICBsZXQgeyBuYW1lIH0gPSBwYXRoLnJlZjtcblxuICAgICAgbGV0IHVzZWRUeXBlID0gdGhpcy4jdHlwZTtcbiAgICAgIGxldCB2YWxpZFR5cGVzID0gS0VZV09SRFNfVFlQRVNbbmFtZV07XG5cbiAgICAgIGlmICh2YWxpZFR5cGVzLmluZGV4T2YodXNlZFR5cGUpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gRXJyKFxuICAgICAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoXG4gICAgICAgICAgICBgVGhlIFxcYCR7bmFtZX1cXGAga2V5d29yZCB3YXMgdXNlZCBpbmNvcnJlY3RseS4gSXQgd2FzIHVzZWQgYXMgJHtcbiAgICAgICAgICAgICAgdHlwZXNUb1JlYWRhYmxlTmFtZVt1c2VkVHlwZV1cbiAgICAgICAgICAgIH0sIGJ1dCBpdHMgdmFsaWQgdXNhZ2VzIGFyZTpcXG5cXG4ke2dlbmVyYXRlVHlwZXNNZXNzYWdlKFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWxpZFR5cGVzXG4gICAgICAgICAgICApfVxcblxcbkVycm9yIGNhdXNlZCBieWAsXG4gICAgICAgICAgICBub2RlLmxvY1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jb25zdCB0eXBlc1RvUmVhZGFibGVOYW1lID0ge1xuICBBcHBlbmQ6ICdhbiBhcHBlbmQgc3RhdGVtZW50JyxcbiAgQmxvY2s6ICdhIGJsb2NrIHN0YXRlbWVudCcsXG4gIENhbGw6ICdhIGNhbGwgZXhwcmVzc2lvbicsXG4gIE1vZGlmaWVyOiAnYSBtb2RpZmllcicsXG59O1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVR5cGVzTWVzc2FnZShuYW1lOiBzdHJpbmcsIHR5cGVzOiBLZXl3b3JkVHlwZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVzXG4gICAgLm1hcCgodHlwZSkgPT4ge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0FwcGVuZCc6XG4gICAgICAgICAgcmV0dXJuIGAtIEFzIGFuIGFwcGVuZCBzdGF0ZW1lbnQsIGFzIGluOiB7eyR7bmFtZX19fWA7XG4gICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBibG9jayBzdGF0ZW1lbnQsIGFzIGluOiB7eyMke25hbWV9fX17ey8ke25hbWV9fX1gO1xuICAgICAgICBjYXNlICdDYWxsJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYW4gZXhwcmVzc2lvbiwgYXMgaW46ICgke25hbWV9KWA7XG4gICAgICAgIGNhc2UgJ01vZGlmaWVyJzpcbiAgICAgICAgICByZXR1cm4gYC0gQXMgYSBtb2RpZmllciwgYXMgaW46IDxkaXYge3ske25hbWV9fX0+PC9kaXY+YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXhoYXVzdGVkKHR5cGUpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yIGEgcGFydGljdWxhciB0eXBlIG9mIEFTVCBub2RlIChgS2V5d29yZFR5cGVgKS5cbiAqXG4gKiBZb3UgY2FuIGJ1aWxkIGtleXdvcmQgZGVmaW5pdGlvbnMgZm9yOlxuICpcbiAqIC0gYEV4cHJgOiBBIGBTdWJFeHByZXNzaW9uYCBvciBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBCbG9ja2A6IEEgYEJsb2NrU3RhdGVtZW50YFxuICogICAtIEEgYEJsb2NrU3RhdGVtZW50YCBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmIGl0cyBoZWFkIGlzIGFcbiAqICAgICBgUGF0aEV4cHJlc3Npb25gXG4gKiAtIGBBcHBlbmRgOiBBbiBgQXBwZW5kU3RhdGVtZW50YFxuICpcbiAqIEEgbm9kZSBpcyBhIGtleXdvcmQgY2FuZGlkYXRlIGlmOlxuICpcbiAqIC0gQSBgUGF0aEV4cHJlc3Npb25gIGlzIGEga2V5d29yZCBjYW5kaWRhdGUgaWYgaXQgaGFzIG5vIHRhaWwsIGFuZCBpdHNcbiAqICAgaGVhZCBleHByZXNzaW9uIGlzIGEgYExvY2FsVmFySGVhZGAgb3IgYEZyZWVWYXJIZWFkYCB3aG9zZSBuYW1lIGlzXG4gKiAgIHRoZSBrZXl3b3JkJ3MgbmFtZS5cbiAqIC0gQSBgU3ViRXhwcmVzc2lvbmAsIGBBcHBlbmRTdGF0ZW1lbnRgLCBvciBgQmxvY2tTdGF0ZW1lbnRgIGlzIGEga2V5d29yZFxuICogICBjYW5kaWRhdGUgaWYgaXRzIGhlYWQgaXMgYSBrZXl3b3JkIGNhbmRpZGF0ZS5cbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBndWFyYW50ZWVzIHRoYXQ6XG4gKlxuICogLSBJZiBhIG5vZGUgaXMgbm90IGEga2V5d29yZCBjYW5kaWRhdGUsIGl0IGlzIG5ldmVyIHBhc3NlZCB0byBhbnkga2V5d29yZCdzXG4gKiAgIGBhc3NlcnRgIG1ldGhvZC5cbiAqIC0gSWYgYSBub2RlIGlzIG5vdCB0aGUgYEtleXdvcmRUeXBlYCBmb3IgYSBwYXJ0aWN1bGFyIGtleXdvcmQsIGl0IHdpbGwgbm90XG4gKiAgIGJlIHBhc3NlZCB0byB0aGUga2V5d29yZCdzIGBhc3NlcnRgIG1ldGhvZC5cbiAqXG4gKiBgRXhwcmAga2V5d29yZHMgYXJlIHVzZWQgaW4gZXhwcmVzc2lvbiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSXG4gKiBleHByZXNzaW9ucy4gYEJsb2NrYCBhbmQgYEFwcGVuZGAga2V5d29yZHMgYXJlIHVzZWQgaW4gc3RhdGVtZW50XG4gKiBwb3NpdGlvbnMgYW5kIHNob3VsZCByZXR1cm4gSElSIHN0YXRlbWVudHMuXG4gKlxuICogQSBrZXl3b3JkIGRlZmluaXRpb24gaGFzIHR3byBwYXJ0czpcbiAqXG4gKiAtIGBtYXRjaGAsIHdoaWNoIGRldGVybWluZXMgd2hldGhlciBhbiBBU1Qgbm9kZSBtYXRjaGVzIHRoZSBrZXl3b3JkLCBhbmQgY2FuXG4gKiAgIG9wdGlvbmFsbHkgcmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZyb20gdGhlIEFTVCBub2RlLlxuICogLSBgdHJhbnNsYXRlYCwgd2hpY2ggdGFrZXMgYSBtYXRjaGluZyBBU1Qgbm9kZSBhcyB3ZWxsIGFzIHRoZSBleHRyYWN0ZWRcbiAqICAgaW5mb3JtYXRpb24gYW5kIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgSElSIGluc3RydWN0aW9uLlxuICpcbiAqICMgRXhhbXBsZVxuICpcbiAqIFRoaXMga2V5d29yZDpcbiAqXG4gKiAtIHR1cm5zIGAoaGVsbG8pYCBpbnRvIGBcImhlbGxvXCJgXG4gKiAgIC0gYXMgbG9uZyBhcyBgaGVsbG9gIGlzIG5vdCBpbiBzY29wZVxuICogLSBtYWtlcyBpdCBhbiBlcnJvciB0byBwYXNzIGFueSBhcmd1bWVudHMgKHN1Y2ggYXMgYChoZWxsbyB3b3JsZClgKVxuICpcbiAqIGBgYHRzXG4gKiBrZXl3b3JkcygnU3ViRXhwcicpLmt3KCdoZWxsbycsIHtcbiAqICAgYXNzZXJ0KG5vZGU6IEV4cHJLZXl3b3JkTm9kZSk6IFJlc3VsdDx2b2lkPiB8IGZhbHNlIHtcbiAqICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIHRyYW5zZm9ybSBgaGVsbG9gIGFzIGEgYFBhdGhFeHByZXNzaW9uYFxuICogICAgIGlmIChub2RlLnR5cGUgIT09ICdTdWJFeHByZXNzaW9uJykge1xuICogICAgICAgcmV0dXJuIGZhbHNlO1xuICogICAgIH1cbiAqXG4gKiAgICAgLy8gbm9kZS5oZWFkIHdvdWxkIGJlIGBMb2NhbFZhckhlYWRgIGlmIGBoZWxsb2Agd2FzIGluIHNjb3BlXG4gKiAgICAgaWYgKG5vZGUuaGVhZC50eXBlICE9PSAnRnJlZVZhckhlYWQnKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICpcbiAqICAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCkge1xuICogICAgICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoaGVsbG8pIGRvZXMgbm90IHRha2UgYW55IGFyZ3VtZW50c2ApLCBub2RlLmxvYyk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHJldHVybiBPaygpO1xuICogICAgIH1cbiAqICAgfSxcbiAqXG4gKiAgIHRyYW5zbGF0ZShub2RlOiBBU1R2Mi5TdWJFeHByZXNzaW9uKTogaGlyLkV4cHJlc3Npb24ge1xuICogICAgIHJldHVybiBBU1R2Mi5idWlsZGVycy5saXRlcmFsKFwiaGVsbG9cIiwgbm9kZS5sb2MpXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBUaGUga2V5d29yZCBpbmZyYXN0cnVjdHVyZSBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgaXMgdGhlIHJpZ2h0XG4gKiB0eXBlIGJlZm9yZSBjYWxsaW5nIGBhc3NlcnRgLCBzbyB5b3Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIGBTdWJFeHByZXNzaW9uYFxuICogYW5kIGBQYXRoRXhwcmVzc2lvbmAgaGVyZS4gSXQgYWxzbyBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5vZGUgcGFzc2VkXG4gKiB0byBgYXNzZXJ0YCBoYXMgdGhlIGtleXdvcmQgbmFtZSBpbiB0aGUgcmlnaHQgcGxhY2UuXG4gKlxuICogTm90ZSB0aGUgaW1wb3J0YW50IGRpZmZlcmVuY2UgYmV0d2VlbiByZXR1cm5pbmcgYGZhbHNlYCBmcm9tIGBhc3NlcnRgLFxuICogd2hpY2gganVzdCBtZWFucyB0aGF0IHRoZSBub2RlIGRpZG4ndCBtYXRjaCwgYW5kIHJldHVybmluZyBgRXJyYCwgd2hpY2hcbiAqIG1lYW5zIHRoYXQgdGhlIG5vZGUgbWF0Y2hlZCwgYnV0IHRoZXJlIHdhcyBhIGtleXdvcmQtc3BlY2lmaWMgc3ludGF4XG4gKiBlcnJvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleXdvcmRzPEsgZXh0ZW5kcyBLZXl3b3JkVHlwZT4odHlwZTogSyk6IEtleXdvcmRzPEs+IHtcbiAgcmV0dXJuIG5ldyBLZXl3b3Jkcyh0eXBlKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

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

export { precompile, precompileJSON, PrecompileOptions } from './lib/compiler';
export { defaultId, precompile, precompileJSON, PrecompileOptions } from './lib/compiler';
export { ProgramSymbols, buildStatement, buildStatements, s, c, unicode, NEWLINE, } from './lib/builder/builder';

@@ -3,0 +3,0 @@ export { BuilderStatement, Builder } from './lib/builder/builder-interface';

import { SerializedTemplateBlock, TemplateJavascript } from '@glimmer/interfaces';
import { PrecompileOptions } from '@glimmer/syntax';
import { PrecompileOptions, TemplateIdFn } from '@glimmer/syntax';
export declare const defaultId: TemplateIdFn;
export declare function precompileJSON(string: string, options?: PrecompileOptions): [block: SerializedTemplateBlock, usedLocals: string[]];

@@ -4,0 +5,0 @@ export declare function precompile(source: string, options?: PrecompileOptions): TemplateJavascript;

{
"name": "@glimmer/compiler",
"version": "0.76.0",
"version": "0.77.0",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/compiler",
"dependencies": {
"@glimmer/syntax": "0.76.0",
"@glimmer/util": "0.76.0",
"@glimmer/wire-format": "0.76.0",
"@glimmer/interfaces": "0.76.0",
"@glimmer/syntax": "0.77.0",
"@glimmer/util": "0.77.0",
"@glimmer/wire-format": "0.77.0",
"@glimmer/interfaces": "0.77.0",
"@simple-dom/interface": "^1.4.0"
},
"devDependencies": {
"@glimmer/local-debug-flags": "0.76.0"
"@glimmer/local-debug-flags": "0.77.0"
},

@@ -15,0 +15,0 @@ "main": "dist/commonjs/es2017/index.js",

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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