Socket
Socket
Sign inDemoInstall

@glimmer/syntax

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/syntax - npm Package Compare versions

Comparing version 0.80.2 to 0.80.3

51

dist/commonjs/es2017/lib/source/loc/match.js

@@ -11,21 +11,2 @@ "use strict";

var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _whens, _map, _whens_1;
/**

@@ -46,9 +27,7 @@ * This file implements the DSL used by span and offset in places where they need to exhaustively

constructor(whens) {
_whens.set(this, void 0);
__classPrivateFieldSet(this, _whens, whens);
this._whens = whens;
}
first(kind) {
for (let when of __classPrivateFieldGet(this, _whens)) {
for (let when of this._whens) {
let value = when.match(kind);

@@ -66,11 +45,9 @@

_whens = new WeakMap();
class When {
constructor() {
_map.set(this, new Map());
this._map = new Map();
}
get(pattern, or) {
let value = __classPrivateFieldGet(this, _map).get(pattern);
let value = this._map.get(pattern);

@@ -83,3 +60,3 @@ if (value) {

__classPrivateFieldGet(this, _map).set(pattern, value);
this._map.set(pattern, value);

@@ -90,3 +67,3 @@ return value;

add(pattern, out) {
__classPrivateFieldGet(this, _map).set(pattern, out);
this._map.set(pattern, out);
}

@@ -98,5 +75,5 @@

let exact = __classPrivateFieldGet(this, _map).get(pattern);
let exact = this._map.get(pattern);
let fallback = __classPrivateFieldGet(this, _map).get(MatchAny);
let fallback = this._map.get(MatchAny);

@@ -116,4 +93,2 @@ if (exact) {

_map = new WeakMap();
function match(callback) {

@@ -125,3 +100,3 @@ return callback(new Matcher()).check();

constructor() {
_whens_1.set(this, new When());
this._whens = new When();
}

@@ -138,3 +113,3 @@ /**

matchFor(left, right) {
let nesteds = __classPrivateFieldGet(this, _whens_1).match(left);
let nesteds = this._whens.match(left);

@@ -149,3 +124,3 @@ false && (0, _util.assert)((0, _util.isPresent)(nesteds), `no match defined for (${left}, ${right}) and no AnyMatch defined either`);

callback) {
__classPrivateFieldGet(this, _whens_1).get(left, () => new When()).add(right, callback);
this._whens.get(left, () => new When()).add(right, callback);

@@ -157,4 +132,2 @@ return this;

_whens_1 = new WeakMap();
function patternFor(kind) {

@@ -177,2 +150,2 @@ switch (kind) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7Ozs7Ozs7QUFTTyxNQUFNLFFBQVEsR0FBZCxXQUFBOztBQVdBLE1BQU0sV0FBVyxHQUFqQixjQUFBOzs7QUFLUCxNQUFBLFFBQUEsQ0FBYztBQUdaLEVBQUEsV0FBQSxDQUFBLEtBQUEsRUFBOEI7QUFGOUIsSUFBQSxNQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUE7O0FBR0UsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxDQUFBO0FBQ0Q7O0FBRUQsRUFBQSxLQUFLLENBQUEsSUFBQSxFQUFpQjtBQUNwQixTQUFLLElBQUwsSUFBQSxJQUFhLHNCQUFBLENBQUEsSUFBQSxFQUFiLE1BQWEsQ0FBYixFQUE4QjtBQUM1QixVQUFJLEtBQUssR0FBRyxJQUFJLENBQUosS0FBQSxDQUFaLElBQVksQ0FBWjs7QUFDQSxVQUFJLHFCQUFKLEtBQUksQ0FBSixFQUFzQjtBQUNwQixlQUFPLEtBQUssQ0FBWixDQUFZLENBQVo7QUFDRDtBQUNGOztBQUVELFdBQUEsSUFBQTtBQUNEOztBQWhCVzs7OztBQW1CZCxNQUFBLElBQUEsQ0FBVTtBQUFWLEVBQUEsV0FBQSxHQUFBO0FBQ0UsSUFBQSxJQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBMEIsSUFBMUIsR0FBMEIsRUFBMUI7QUFzQ0Q7O0FBcENDLEVBQUEsR0FBRyxDQUFBLE9BQUEsRUFBQSxFQUFBLEVBQWdDO0FBQ2pDLFFBQUksS0FBSyxHQUFHLHNCQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBWixPQUFZLENBQVo7O0FBRUEsUUFBQSxLQUFBLEVBQVc7QUFDVCxhQUFBLEtBQUE7QUFDRDs7QUFFRCxJQUFBLEtBQUssR0FBRyxFQUFSLEVBQUE7O0FBRUEsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEtBQUE7O0FBRUEsV0FBQSxLQUFBO0FBQ0Q7O0FBRUQsRUFBQSxHQUFHLENBQUEsT0FBQSxFQUFBLEdBQUEsRUFBMkI7QUFDNUIsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEdBQUE7QUFDRDs7QUFFRCxFQUFBLEtBQUssQ0FBQSxJQUFBLEVBQWlCO0FBQ3BCLFFBQUksT0FBTyxHQUFHLFVBQVUsQ0FBeEIsSUFBd0IsQ0FBeEI7QUFFQSxRQUFJLEdBQUcsR0FBUCxFQUFBOztBQUVBLFFBQUksS0FBSyxHQUFHLHNCQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBWixPQUFZLENBQVo7O0FBQ0EsUUFBSSxRQUFRLEdBQUcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUEsR0FBQSxDQUFmLFFBQWUsQ0FBZjs7QUFFQSxRQUFBLEtBQUEsRUFBVztBQUNULE1BQUEsR0FBRyxDQUFILElBQUEsQ0FBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBQSxRQUFBLEVBQWM7QUFDWixNQUFBLEdBQUcsQ0FBSCxJQUFBLENBQUEsUUFBQTtBQUNEOztBQUVELFdBQUEsR0FBQTtBQUNEOztBQXRDTzs7OztBQXNESixTQUFBLEtBQUEsQ0FBQSxRQUFBLEVBQTBFO0FBQzlFLFNBQU8sUUFBUSxDQUFDLElBQVQsT0FBUyxFQUFELENBQVIsQ0FBUCxLQUFPLEVBQVA7QUFDRDs7QUFFRCxNQUFBLE9BQUEsQ0FBYTtBQUFiLEVBQUEsV0FBQSxHQUFBO0FBQ0UsSUFBQSxRQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBdUUsSUFBdkUsSUFBdUUsRUFBdkU7QUE4RUQ7QUE1RUM7Ozs7O0FBR1UsRUFBQSxLQUFLLEdBQUE7QUFDYixXQUFPLENBQUEsSUFBQSxFQUFBLEtBQUEsS0FBaUIsS0FBQSxRQUFBLENBQWMsSUFBSSxDQUFsQixJQUFBLEVBQXlCLEtBQUssQ0FBOUIsSUFBQSxFQUFBLElBQUEsRUFBeEIsS0FBd0IsQ0FBeEI7QUFDRDs7QUFFTyxFQUFBLFFBQVEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUVHO0FBRWpCLFFBQUksT0FBTyxHQUFHLHNCQUFBLENBQUEsSUFBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBZCxJQUFjLENBQWQ7O0FBRmlCLGFBSWpCLGtCQUNFLHFCQURJLE9BQ0osQ0FERixFQUVFLHlCQUF5QixJQUFJLEtBQUssS0FObkIsa0NBSWpCLENBSmlCO0FBU2pCLFFBQUksUUFBUSxHQUFHLElBQUEsUUFBQSxDQUFBLE9BQUEsRUFBQSxLQUFBLENBQWYsS0FBZSxDQUFmO0FBVGlCLGFBV2pCLGtCQUNFLFFBQVEsS0FESixJQUFOLEVBRUUseUJBQXlCLElBQUksS0FBSyxLQWJuQixrQ0FXakIsQ0FYaUI7QUFnQmpCLFdBQUEsUUFBQTtBQUNEOztBQXdDRCxFQUFBLElBQUksQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUdGO0FBSEUsRUFBQSxRQUFBLEVBSXNDO0FBRXhDLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBc0IsTUFBTSxJQUE1QixJQUE0QixFQUE1QixFQUFBLEdBQUEsQ0FBQSxLQUFBLEVBQUEsUUFBQTs7QUFFQSxXQUFBLElBQUE7QUFDRDs7QUE5RVU7Ozs7QUFpRmIsU0FBQSxVQUFBLENBQUEsSUFBQSxFQUFvQztBQUNsQyxVQUFBLElBQUE7QUFDRSxTQUFBO0FBQUE7QUFBQTtBQUNBLFNBQUE7QUFBQTtBQUFBO0FBQ0EsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFdBQUE7O0FBQ0Y7QUFDRSxhQUFBLElBQUE7QUFOSjtBQVFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0LCBpc1ByZXNlbnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgQ2hhclBvc2l0aW9uLCBIYnNQb3NpdGlvbiwgSW52aXNpYmxlUG9zaXRpb24sIE9mZnNldEtpbmQsIFBvc2l0aW9uRGF0YSB9IGZyb20gJy4vb2Zmc2V0JztcblxuLyoqXG4gKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgRFNMIHVzZWQgYnkgc3BhbiBhbmQgb2Zmc2V0IGluIHBsYWNlcyB3aGVyZSB0aGV5IG5lZWQgdG8gZXhoYXVzdGl2ZWx5XG4gKiBjb25zaWRlciBhbGwgY29tYmluYXRpb25zIG9mIHN0YXRlcyAoSGFuZGxlYmFycyBvZmZzZXRzLCBjaGFyYWN0ZXIgb2Zmc2V0cyBhbmQgaW52aXNpYmxlL2Jyb2tlblxuICogb2Zmc2V0cykuXG4gKlxuICogSXQncyBwcm9iYWJseSBvdmVya2lsbCwgYnV0IGl0IG1ha2VzIHRoZSBjb2RlIHRoYXQgdXNlcyBpdCBjbGVhci4gSXQgY291bGQgYmUgcmVmYWN0b3JlZCBvclxuICogcmVtb3ZlZC5cbiAqL1xuXG5leHBvcnQgY29uc3QgTWF0Y2hBbnkgPSAnTUFUQ0hfQU5ZJztcbmV4cG9ydCB0eXBlIE1hdGNoQW55ID0gJ01BVENIX0FOWSc7XG5cbnR5cGUgTWF0Y2hlcyA9XG4gIHwgJ0NoYXIsSGJzJ1xuICB8ICdIYnMsQ2hhcidcbiAgfCAnSGJzLEhicydcbiAgfCAnQ2hhcixDaGFyJ1xuICB8ICdJbnZpc2libGUsQW55J1xuICB8ICdBbnksSW52aXNpYmxlJztcblxuZXhwb3J0IGNvbnN0IElzSW52aXNpYmxlID0gJ0lTX0lOVklTSUJMRSc7XG5leHBvcnQgdHlwZSBJc0ludmlzaWJsZSA9ICdJU19JTlZJU0lCTEUnO1xuXG50eXBlIFBhdHRlcm4gPSBPZmZzZXRLaW5kIHwgSXNJbnZpc2libGUgfCBNYXRjaEFueTtcblxuY2xhc3MgV2hlbkxpc3Q8T3V0PiB7XG4gICN3aGVuczogV2hlbjxPdXQ+W107XG5cbiAgY29uc3RydWN0b3Iod2hlbnM6IFdoZW48T3V0PltdKSB7XG4gICAgdGhpcy4jd2hlbnMgPSB3aGVucztcbiAgfVxuXG4gIGZpcnN0KGtpbmQ6IE9mZnNldEtpbmQpOiBPdXQgfCBudWxsIHtcbiAgICBmb3IgKGxldCB3aGVuIG9mIHRoaXMuI3doZW5zKSB7XG4gICAgICBsZXQgdmFsdWUgPSB3aGVuLm1hdGNoKGtpbmQpO1xuICAgICAgaWYgKGlzUHJlc2VudCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlWzBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNsYXNzIFdoZW48T3V0PiB7XG4gICNtYXA6IE1hcDxQYXR0ZXJuLCBPdXQ+ID0gbmV3IE1hcCgpO1xuXG4gIGdldChwYXR0ZXJuOiBQYXR0ZXJuLCBvcjogKCkgPT4gT3V0KTogT3V0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLiNtYXAuZ2V0KHBhdHRlcm4pO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdmFsdWUgPSBvcigpO1xuXG4gICAgdGhpcy4jbWFwLnNldChwYXR0ZXJuLCB2YWx1ZSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBhZGQocGF0dGVybjogUGF0dGVybiwgb3V0OiBPdXQpOiB2b2lkIHtcbiAgICB0aGlzLiNtYXAuc2V0KHBhdHRlcm4sIG91dCk7XG4gIH1cblxuICBtYXRjaChraW5kOiBPZmZzZXRLaW5kKTogT3V0W10ge1xuICAgIGxldCBwYXR0ZXJuID0gcGF0dGVybkZvcihraW5kKTtcblxuICAgIGxldCBvdXQ6IE91dFtdID0gW107XG5cbiAgICBsZXQgZXhhY3QgPSB0aGlzLiNtYXAuZ2V0KHBhdHRlcm4pO1xuICAgIGxldCBmYWxsYmFjayA9IHRoaXMuI21hcC5nZXQoTWF0Y2hBbnkpO1xuXG4gICAgaWYgKGV4YWN0KSB7XG4gICAgICBvdXQucHVzaChleGFjdCk7XG4gICAgfVxuXG4gICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICBvdXQucHVzaChmYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG50eXBlIEV4aGF1c3RpdmVDaGVjazxPdXQsIEluIGV4dGVuZHMgTWF0Y2hlcywgUmVtb3ZlZCBleHRlbmRzIE1hdGNoZXM+ID0gRXhjbHVkZTxcbiAgSW4sXG4gIFJlbW92ZWRcbj4gZXh0ZW5kcyBuZXZlclxuICA/IEV4aGF1c3RpdmVNYXRjaGVyPE91dD5cbiAgOiBNYXRjaGVyPE91dCwgRXhjbHVkZTxJbiwgUmVtb3ZlZD4+O1xuXG5leHBvcnQgdHlwZSBNYXRjaEZuPE91dD4gPSAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQ7XG5cbmludGVyZmFjZSBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+IHtcbiAgY2hlY2soKTogTWF0Y2hGbjxPdXQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2g8T3V0PihjYWxsYmFjazogKG06IE1hdGNoZXI8T3V0PikgPT4gRXhoYXVzdGl2ZU1hdGNoZXI8T3V0Pik6IE1hdGNoRm48T3V0PiB7XG4gIHJldHVybiBjYWxsYmFjayhuZXcgTWF0Y2hlcigpKS5jaGVjaygpO1xufVxuXG5jbGFzcyBNYXRjaGVyPE91dCwgTSBleHRlbmRzIE1hdGNoZXMgPSBNYXRjaGVzPiB7XG4gICN3aGVuczogV2hlbjxXaGVuPChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dD4+ID0gbmV3IFdoZW4oKTtcblxuICAvKipcbiAgICogWW91IGRpZG4ndCBleGhhdXN0aXZlbHkgbWF0Y2ggYWxsIHBvc3NpYmlsaXRpZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2soKTogTWF0Y2hGbjxPdXQ+IHtcbiAgICByZXR1cm4gKGxlZnQsIHJpZ2h0KSA9PiB0aGlzLm1hdGNoRm9yKGxlZnQua2luZCwgcmlnaHQua2luZCkobGVmdCwgcmlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaEZvcihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kXG4gICk6IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dCB7XG4gICAgbGV0IG5lc3RlZHMgPSB0aGlzLiN3aGVucy5tYXRjaChsZWZ0KTtcblxuICAgIGFzc2VydChcbiAgICAgIGlzUHJlc2VudChuZXN0ZWRzKSxcbiAgICAgIGBubyBtYXRjaCBkZWZpbmVkIGZvciAoJHtsZWZ0fSwgJHtyaWdodH0pIGFuZCBubyBBbnlNYXRjaCBkZWZpbmVkIGVpdGhlcmBcbiAgICApO1xuXG4gICAgbGV0IGNhbGxiYWNrID0gbmV3IFdoZW5MaXN0KG5lc3RlZHMpLmZpcnN0KHJpZ2h0KTtcblxuICAgIGFzc2VydChcbiAgICAgIGNhbGxiYWNrICE9PSBudWxsLFxuICAgICAgYG5vIG1hdGNoIGRlZmluZWQgZm9yICgke2xlZnR9LCAke3JpZ2h0fSkgYW5kIG5vIEFueU1hdGNoIGRlZmluZWQgZWl0aGVyYFxuICAgICk7XG5cbiAgICByZXR1cm4gY2FsbGJhY2s7XG4gIH1cblxuICAvLyBUaGlzIGJpZyBibG9jayBpcyB0aGUgYnVsayBvZiB0aGUgaGVhdnkgbGlmdGluZyBpbiB0aGlzIGZpbGUuIEl0IGZhY2lsaXRhdGVzIGV4aGF1c3RpdmVuZXNzXG4gIC8vIGNoZWNraW5nIHNvIHRoYXQgbWF0Y2hlcnMgY2FuIGVuc3VyZSB0aGV5J3ZlIGFjdHVhbGx5IGNvdmVyZWQgYWxsIHRoZSBjYXNlcyAoYW5kIFR5cGVTY3JpcHRcbiAgLy8gd2lsbCB0cmVhdCBpdCBhcyBhbiBleGhhdXN0aXZlIG1hdGNoKS5cbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IENoYXJQb3NpdGlvbiwgcmlnaHQ6IEhic1Bvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0NoYXIsSGJzJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBIYnNQb3NpdGlvbiwgcmlnaHQ6IENoYXJQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdIYnMsQ2hhcic+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBIYnNQb3NpdGlvbiwgcmlnaHQ6IEhic1Bvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0hicyxIYnMnPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBDaGFyUG9zaXRpb24sIHJpZ2h0OiBDaGFyUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQ2hhcixDaGFyJz47XG4gIHdoZW4oXG4gICAgbGVmdDogSXNJbnZpc2libGUsXG4gICAgcmlnaHQ6IE1hdGNoQW55LFxuICAgIGNhbGxiYWNrOiAobGVmdDogSW52aXNpYmxlUG9zaXRpb24sIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dFxuICApOiBNYXRjaGVyPE91dCwgRXhjbHVkZTxNLCAnSW52aXNpYmxlLEFueSc+PjtcbiAgd2hlbihcbiAgICBsZWZ0OiBNYXRjaEFueSxcbiAgICByaWdodDogSXNJbnZpc2libGUsXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBJbnZpc2libGVQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdBbnksSW52aXNpYmxlJz47XG4gIHdoZW4oXG4gICAgbGVmdDogTWF0Y2hBbnksXG4gICAgcmlnaHQ6IE1hdGNoQW55LFxuICAgIGNhbGxiYWNrOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PjtcbiAgd2hlbihcbiAgICBsZWZ0OiBQYXR0ZXJuLFxuICAgIHJpZ2h0OiBQYXR0ZXJuLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY2FsbGJhY2s6IChsZWZ0OiBhbnksIHJpZ2h0OiBhbnkpID0+IE91dFxuICApOiBNYXRjaGVyPE91dCwgTWF0Y2hlcz4gfCBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+IHtcbiAgICB0aGlzLiN3aGVucy5nZXQobGVmdCwgKCkgPT4gbmV3IFdoZW4oKSkuYWRkKHJpZ2h0LCBjYWxsYmFjayk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXR0ZXJuRm9yKGtpbmQ6IE9mZnNldEtpbmQpOiBQYXR0ZXJuIHtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSBPZmZzZXRLaW5kLkJyb2tlbjpcbiAgICBjYXNlIE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljOlxuICAgIGNhc2UgT2Zmc2V0S2luZC5Ob25FeGlzdGVudDpcbiAgICAgIHJldHVybiBJc0ludmlzaWJsZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGtpbmQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUlBOzs7Ozs7OztBQVNPLE1BQU0sUUFBUSxHQUFkLFdBQUE7O0FBV0EsTUFBTSxXQUFXLEdBQWpCLGNBQUE7OztBQUtQLE1BQUEsUUFBQSxDQUFjO0FBR1osRUFBQSxXQUFBLENBQUEsS0FBQSxFQUE4QjtBQUM1QixTQUFBLE1BQUEsR0FBQSxLQUFBO0FBQ0Q7O0FBRUQsRUFBQSxLQUFLLENBQUEsSUFBQSxFQUFpQjtBQUNwQixTQUFLLElBQUwsSUFBQSxJQUFpQixLQUFqQixNQUFBLEVBQThCO0FBQzVCLFVBQUksS0FBSyxHQUFHLElBQUksQ0FBSixLQUFBLENBQVosSUFBWSxDQUFaOztBQUNBLFVBQUkscUJBQUosS0FBSSxDQUFKLEVBQXNCO0FBQ3BCLGVBQU8sS0FBSyxDQUFaLENBQVksQ0FBWjtBQUNEO0FBQ0Y7O0FBRUQsV0FBQSxJQUFBO0FBQ0Q7O0FBaEJXOztBQW1CZCxNQUFBLElBQUEsQ0FBVTtBQUFWLEVBQUEsV0FBQSxHQUFBO0FBQ0UsU0FBQSxJQUFBLEdBQTBCLElBQTFCLEdBQTBCLEVBQTFCO0FBc0NEOztBQXBDQyxFQUFBLEdBQUcsQ0FBQSxPQUFBLEVBQUEsRUFBQSxFQUFnQztBQUNqQyxRQUFJLEtBQUssR0FBRyxLQUFBLElBQUEsQ0FBQSxHQUFBLENBQVosT0FBWSxDQUFaOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsSUFBQSxLQUFLLEdBQUcsRUFBUixFQUFBOztBQUVBLFNBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxPQUFBLEVBQUEsS0FBQTs7QUFFQSxXQUFBLEtBQUE7QUFDRDs7QUFFRCxFQUFBLEdBQUcsQ0FBQSxPQUFBLEVBQUEsR0FBQSxFQUEyQjtBQUM1QixTQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEdBQUE7QUFDRDs7QUFFRCxFQUFBLEtBQUssQ0FBQSxJQUFBLEVBQWlCO0FBQ3BCLFFBQUksT0FBTyxHQUFHLFVBQVUsQ0FBeEIsSUFBd0IsQ0FBeEI7QUFFQSxRQUFJLEdBQUcsR0FBUCxFQUFBOztBQUVBLFFBQUksS0FBSyxHQUFHLEtBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBWixPQUFZLENBQVo7O0FBQ0EsUUFBSSxRQUFRLEdBQUcsS0FBQSxJQUFBLENBQUEsR0FBQSxDQUFmLFFBQWUsQ0FBZjs7QUFFQSxRQUFBLEtBQUEsRUFBVztBQUNULE1BQUEsR0FBRyxDQUFILElBQUEsQ0FBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBQSxRQUFBLEVBQWM7QUFDWixNQUFBLEdBQUcsQ0FBSCxJQUFBLENBQUEsUUFBQTtBQUNEOztBQUVELFdBQUEsR0FBQTtBQUNEOztBQXRDTzs7QUFzREosU0FBQSxLQUFBLENBQUEsUUFBQSxFQUEwRTtBQUM5RSxTQUFPLFFBQVEsQ0FBQyxJQUFULE9BQVMsRUFBRCxDQUFSLENBQVAsS0FBTyxFQUFQO0FBQ0Q7O0FBRUQsTUFBQSxPQUFBLENBQWE7QUFBYixFQUFBLFdBQUEsR0FBQTtBQUNFLFNBQUEsTUFBQSxHQUF1RSxJQUF2RSxJQUF1RSxFQUF2RTtBQThFRDtBQTVFQzs7Ozs7QUFHVSxFQUFBLEtBQUssR0FBQTtBQUNiLFdBQU8sQ0FBQSxJQUFBLEVBQUEsS0FBQSxLQUFpQixLQUFBLFFBQUEsQ0FBYyxJQUFJLENBQWxCLElBQUEsRUFBeUIsS0FBSyxDQUE5QixJQUFBLEVBQUEsSUFBQSxFQUF4QixLQUF3QixDQUF4QjtBQUNEOztBQUVPLEVBQUEsUUFBUSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBRUc7QUFFakIsUUFBSSxPQUFPLEdBQUcsS0FBQSxNQUFBLENBQUEsS0FBQSxDQUFkLElBQWMsQ0FBZDs7QUFGaUIsYUFJakIsa0JBQ0UscUJBREksT0FDSixDQURGLEVBRUUseUJBQXlCLElBQUksS0FBSyxLQU5uQixrQ0FJakIsQ0FKaUI7QUFTakIsUUFBSSxRQUFRLEdBQUcsSUFBQSxRQUFBLENBQUEsT0FBQSxFQUFBLEtBQUEsQ0FBZixLQUFlLENBQWY7QUFUaUIsYUFXakIsa0JBQ0UsUUFBUSxLQURKLElBQU4sRUFFRSx5QkFBeUIsSUFBSSxLQUFLLEtBYm5CLGtDQVdqQixDQVhpQjtBQWdCakIsV0FBQSxRQUFBO0FBQ0Q7O0FBd0NELEVBQUEsSUFBSSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBR0Y7QUFIRSxFQUFBLFFBQUEsRUFJc0M7QUFFeEMsU0FBQSxNQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBc0IsTUFBTSxJQUE1QixJQUE0QixFQUE1QixFQUFBLEdBQUEsQ0FBQSxLQUFBLEVBQUEsUUFBQTs7QUFFQSxXQUFBLElBQUE7QUFDRDs7QUE5RVU7O0FBaUZiLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBb0M7QUFDbEMsVUFBQSxJQUFBO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDQSxTQUFBO0FBQUE7QUFBQTtBQUNBLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxXQUFBOztBQUNGO0FBQ0UsYUFBQSxJQUFBO0FBTko7QUFRRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCwgaXNQcmVzZW50IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IENoYXJQb3NpdGlvbiwgSGJzUG9zaXRpb24sIEludmlzaWJsZVBvc2l0aW9uLCBPZmZzZXRLaW5kLCBQb3NpdGlvbkRhdGEgfSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIERTTCB1c2VkIGJ5IHNwYW4gYW5kIG9mZnNldCBpbiBwbGFjZXMgd2hlcmUgdGhleSBuZWVkIHRvIGV4aGF1c3RpdmVseVxuICogY29uc2lkZXIgYWxsIGNvbWJpbmF0aW9ucyBvZiBzdGF0ZXMgKEhhbmRsZWJhcnMgb2Zmc2V0cywgY2hhcmFjdGVyIG9mZnNldHMgYW5kIGludmlzaWJsZS9icm9rZW5cbiAqIG9mZnNldHMpLlxuICpcbiAqIEl0J3MgcHJvYmFibHkgb3ZlcmtpbGwsIGJ1dCBpdCBtYWtlcyB0aGUgY29kZSB0aGF0IHVzZXMgaXQgY2xlYXIuIEl0IGNvdWxkIGJlIHJlZmFjdG9yZWQgb3JcbiAqIHJlbW92ZWQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1hdGNoQW55ID0gJ01BVENIX0FOWSc7XG5leHBvcnQgdHlwZSBNYXRjaEFueSA9ICdNQVRDSF9BTlknO1xuXG50eXBlIE1hdGNoZXMgPVxuICB8ICdDaGFyLEhicydcbiAgfCAnSGJzLENoYXInXG4gIHwgJ0hicyxIYnMnXG4gIHwgJ0NoYXIsQ2hhcidcbiAgfCAnSW52aXNpYmxlLEFueSdcbiAgfCAnQW55LEludmlzaWJsZSc7XG5cbmV4cG9ydCBjb25zdCBJc0ludmlzaWJsZSA9ICdJU19JTlZJU0lCTEUnO1xuZXhwb3J0IHR5cGUgSXNJbnZpc2libGUgPSAnSVNfSU5WSVNJQkxFJztcblxudHlwZSBQYXR0ZXJuID0gT2Zmc2V0S2luZCB8IElzSW52aXNpYmxlIHwgTWF0Y2hBbnk7XG5cbmNsYXNzIFdoZW5MaXN0PE91dD4ge1xuICBfd2hlbnM6IFdoZW48T3V0PltdO1xuXG4gIGNvbnN0cnVjdG9yKHdoZW5zOiBXaGVuPE91dD5bXSkge1xuICAgIHRoaXMuX3doZW5zID0gd2hlbnM7XG4gIH1cblxuICBmaXJzdChraW5kOiBPZmZzZXRLaW5kKTogT3V0IHwgbnVsbCB7XG4gICAgZm9yIChsZXQgd2hlbiBvZiB0aGlzLl93aGVucykge1xuICAgICAgbGV0IHZhbHVlID0gd2hlbi5tYXRjaChraW5kKTtcbiAgICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVswXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jbGFzcyBXaGVuPE91dD4ge1xuICBfbWFwOiBNYXA8UGF0dGVybiwgT3V0PiA9IG5ldyBNYXAoKTtcblxuICBnZXQocGF0dGVybjogUGF0dGVybiwgb3I6ICgpID0+IE91dCk6IE91dCB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5fbWFwLmdldChwYXR0ZXJuKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gb3IoKTtcblxuICAgIHRoaXMuX21hcC5zZXQocGF0dGVybiwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRkKHBhdHRlcm46IFBhdHRlcm4sIG91dDogT3V0KTogdm9pZCB7XG4gICAgdGhpcy5fbWFwLnNldChwYXR0ZXJuLCBvdXQpO1xuICB9XG5cbiAgbWF0Y2goa2luZDogT2Zmc2V0S2luZCk6IE91dFtdIHtcbiAgICBsZXQgcGF0dGVybiA9IHBhdHRlcm5Gb3Ioa2luZCk7XG5cbiAgICBsZXQgb3V0OiBPdXRbXSA9IFtdO1xuXG4gICAgbGV0IGV4YWN0ID0gdGhpcy5fbWFwLmdldChwYXR0ZXJuKTtcbiAgICBsZXQgZmFsbGJhY2sgPSB0aGlzLl9tYXAuZ2V0KE1hdGNoQW55KTtcblxuICAgIGlmIChleGFjdCkge1xuICAgICAgb3V0LnB1c2goZXhhY3QpO1xuICAgIH1cblxuICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgb3V0LnB1c2goZmFsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxudHlwZSBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBJbiBleHRlbmRzIE1hdGNoZXMsIFJlbW92ZWQgZXh0ZW5kcyBNYXRjaGVzPiA9IEV4Y2x1ZGU8XG4gIEluLFxuICBSZW1vdmVkXG4+IGV4dGVuZHMgbmV2ZXJcbiAgPyBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+XG4gIDogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8SW4sIFJlbW92ZWQ+PjtcblxuZXhwb3J0IHR5cGUgTWF0Y2hGbjxPdXQ+ID0gKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0O1xuXG5pbnRlcmZhY2UgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gIGNoZWNrKCk6IE1hdGNoRm48T3V0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoPE91dD4oY2FsbGJhY2s6IChtOiBNYXRjaGVyPE91dD4pID0+IEV4aGF1c3RpdmVNYXRjaGVyPE91dD4pOiBNYXRjaEZuPE91dD4ge1xuICByZXR1cm4gY2FsbGJhY2sobmV3IE1hdGNoZXIoKSkuY2hlY2soKTtcbn1cblxuY2xhc3MgTWF0Y2hlcjxPdXQsIE0gZXh0ZW5kcyBNYXRjaGVzID0gTWF0Y2hlcz4ge1xuICBfd2hlbnM6IFdoZW48V2hlbjwobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQ+PiA9IG5ldyBXaGVuKCk7XG5cbiAgLyoqXG4gICAqIFlvdSBkaWRuJ3QgZXhoYXVzdGl2ZWx5IG1hdGNoIGFsbCBwb3NzaWJpbGl0aWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNoZWNrKCk6IE1hdGNoRm48T3V0PiB7XG4gICAgcmV0dXJuIChsZWZ0LCByaWdodCkgPT4gdGhpcy5tYXRjaEZvcihsZWZ0LmtpbmQsIHJpZ2h0LmtpbmQpKGxlZnQsIHJpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hGb3IoXG4gICAgbGVmdDogT2Zmc2V0S2luZCxcbiAgICByaWdodDogT2Zmc2V0S2luZFxuICApOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQge1xuICAgIGxldCBuZXN0ZWRzID0gdGhpcy5fd2hlbnMubWF0Y2gobGVmdCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBpc1ByZXNlbnQobmVzdGVkcyksXG4gICAgICBgbm8gbWF0Y2ggZGVmaW5lZCBmb3IgKCR7bGVmdH0sICR7cmlnaHR9KSBhbmQgbm8gQW55TWF0Y2ggZGVmaW5lZCBlaXRoZXJgXG4gICAgKTtcblxuICAgIGxldCBjYWxsYmFjayA9IG5ldyBXaGVuTGlzdChuZXN0ZWRzKS5maXJzdChyaWdodCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBjYWxsYmFjayAhPT0gbnVsbCxcbiAgICAgIGBubyBtYXRjaCBkZWZpbmVkIGZvciAoJHtsZWZ0fSwgJHtyaWdodH0pIGFuZCBubyBBbnlNYXRjaCBkZWZpbmVkIGVpdGhlcmBcbiAgICApO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9XG5cbiAgLy8gVGhpcyBiaWcgYmxvY2sgaXMgdGhlIGJ1bGsgb2YgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gdGhpcyBmaWxlLiBJdCBmYWNpbGl0YXRlcyBleGhhdXN0aXZlbmVzc1xuICAvLyBjaGVja2luZyBzbyB0aGF0IG1hdGNoZXJzIGNhbiBlbnN1cmUgdGhleSd2ZSBhY3R1YWxseSBjb3ZlcmVkIGFsbCB0aGUgY2FzZXMgKGFuZCBUeXBlU2NyaXB0XG4gIC8vIHdpbGwgdHJlYXQgaXQgYXMgYW4gZXhoYXVzdGl2ZSBtYXRjaCkuXG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBDaGFyUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdDaGFyLEhicyc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBDaGFyUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnSGJzLENoYXInPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdIYnMsSGJzJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogQ2hhclBvc2l0aW9uLCByaWdodDogQ2hhclBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0NoYXIsQ2hhcic+O1xuICB3aGVuKFxuICAgIGxlZnQ6IElzSW52aXNpYmxlLFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IEludmlzaWJsZVBvc2l0aW9uLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8TSwgJ0ludmlzaWJsZSxBbnknPj47XG4gIHdoZW4oXG4gICAgbGVmdDogTWF0Y2hBbnksXG4gICAgcmlnaHQ6IElzSW52aXNpYmxlLFxuICAgIGNhbGxiYWNrOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogSW52aXNpYmxlUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQW55LEludmlzaWJsZSc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE1hdGNoQW55LFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVNYXRjaGVyPE91dD47XG4gIHdoZW4oXG4gICAgbGVmdDogUGF0dGVybixcbiAgICByaWdodDogUGF0dGVybixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNhbGxiYWNrOiAobGVmdDogYW55LCByaWdodDogYW55KSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIE1hdGNoZXM+IHwgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gICAgdGhpcy5fd2hlbnMuZ2V0KGxlZnQsICgpID0+IG5ldyBXaGVuKCkpLmFkZChyaWdodCwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGF0dGVybkZvcihraW5kOiBPZmZzZXRLaW5kKTogUGF0dGVybiB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgT2Zmc2V0S2luZC5Ccm9rZW46XG4gICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICBjYXNlIE9mZnNldEtpbmQuTm9uRXhpc3RlbnQ6XG4gICAgICByZXR1cm4gSXNJbnZpc2libGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBraW5kO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -14,22 +14,4 @@ "use strict";

var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
// eslint-disable-next-line import/no-extraneous-dependencies
return privateMap.get(receiver);
};
var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPos, _charPos; // eslint-disable-next-line import/no-extraneous-dependencies
/**

@@ -170,3 +152,3 @@ * Used to indicate that an attempt to convert a `SourcePosition` to a character offset failed. It

_locPos.set(this, null);
this._locPos = null;
}

@@ -218,3 +200,3 @@ /**

toHbsPos() {
let locPos = __classPrivateFieldGet(this, _locPos);
let locPos = this._locPos;

@@ -225,5 +207,5 @@ if (locPos === null) {

if (hbsPos === null) {
__classPrivateFieldSet(this, _locPos, locPos = BROKEN);
this._locPos = locPos = BROKEN;
} else {
__classPrivateFieldSet(this, _locPos, locPos = new HbsPosition(this.source, hbsPos, this.charPos));
this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);
}

@@ -238,3 +220,2 @@ }

exports.CharPosition = CharPosition;
_locPos = new WeakMap();

@@ -248,6 +229,3 @@ class HbsPosition {

;
_charPos.set(this, void 0);
__classPrivateFieldSet(this, _charPos, charPos === null ? null : new CharPosition(source, charPos));
this._charPos = charPos === null ? null : new CharPosition(source, charPos);
}

@@ -265,3 +243,3 @@ /**

toCharPos() {
let charPos = __classPrivateFieldGet(this, _charPos);
let charPos = this._charPos;

@@ -272,5 +250,5 @@ if (charPos === null) {

if (charPosNumber === null) {
__classPrivateFieldSet(this, _charPos, charPos = BROKEN);
this._charPos = charPos = BROKEN;
} else {
__classPrivateFieldSet(this, _charPos, charPos = new CharPosition(this.source, charPosNumber));
this._charPos = charPos = new CharPosition(this.source, charPosNumber);
}

@@ -310,3 +288,2 @@ }

exports.HbsPosition = HbsPosition;
_charPos = new WeakMap();

@@ -394,2 +371,2 @@ class InvisiblePosition {

}).when(_match.MatchAny, _match.MatchAny, () => false));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQUpBOzs7QUFnREE7Ozs7O0FBS08sTUFBTSxNQUFNLEdBQVosUUFBQTtBQUtQOzs7Ozs7Ozs7Ozs7O0FBVU0sTUFBQSxZQUFBLENBQW1CO0FBbUJ2QixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQXFEO0FBQWhDLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0M7QUFsQnpEOzs7Ozs7O0FBS0EsU0FBQSxTQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBb0Q7QUFDbEQsV0FBTyxJQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBUCxJQUFPLEVBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS0EsU0FBQSxNQUFBLENBQWMsR0FBQSxHQUFkLDBCQUFBLEVBQW9EO0FBQ2xELFdBQU8sSUFBQSxpQkFBQSxDQUFxQjtBQUFBO0FBQXJCLE1BQUEsR0FBQSxFQUFQLElBQU8sRUFBUDtBQUNEO0FBSUQ7Ozs7O0FBR0EsTUFBQSxNQUFBLEdBQVU7QUFDUixRQUFJLE9BQU8sR0FBRyxLQUFBLElBQUEsQ0FBZCxTQUFjLEVBQWQ7QUFDQSxXQUFPLE9BQU8sS0FBUCxJQUFBLEdBQUEsSUFBQSxHQUEwQixPQUFPLENBQXhDLE1BQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLEVBQUEsR0FBRyxDQUFBLEtBQUEsRUFBb0I7QUFDckIsV0FBTyxHQUFHLENBQUMsS0FBRCxJQUFBLEVBQVksS0FBSyxDQUEzQixJQUFVLENBQVY7QUFDRDtBQUVEOzs7Ozs7QUFJQSxFQUFBLEtBQUssQ0FBQSxLQUFBLEVBQW9CO0FBQ3ZCLFdBQU8sZ0JBQUssS0FBRCxJQUFKLEVBQWdCLEtBQUssQ0FBNUIsSUFBTyxDQUFQO0FBQ0Q7QUFF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RSxFQUFBLE1BQU0sRUFBRTtBQUFWLENBQVAsS0FBNEI7QUFBQSxNQUFBLEVBQUE7O0FBQUMsU0FBQSxDQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBSixTQUFBLEVBQUEsTUFBQSxJQUFBLElBQWdCLEVBQUEsS0FBQSxLQUFoQixDQUFBLEdBQWdCLEtBQWhCLENBQUEsR0FBZ0IsRUFBQSxDQUFoQixNQUFBLE1BQUEsS0FBQTtBQXBCakMsQ0FBQSxFQUFBLElBQUEsQ0FBQSxlQUFBLEVBQUEsZUFBQSxFQXNCNEIsTUF2QjlCLEtBQ0UsQ0FEVSxDQUFaIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgU291cmNlUG9zaXRpb24sIFVOS05PV05fUE9TSVRJT04gfSBmcm9tICcuLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2UnO1xuaW1wb3J0IHsgbWF0Y2gsIE1hdGNoQW55IH0gZnJvbSAnLi9tYXRjaCc7XG5pbXBvcnQgeyBTb3VyY2VTcGFuLCBzcGFuIH0gZnJvbSAnLi9zcGFuJztcblxuZXhwb3J0IGNvbnN0IGVudW0gT2Zmc2V0S2luZCB7XG4gIC8qKlxuICAgKiBXZSBoYXZlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiBvZiB0aGlzIG9mZnNldCBvciBzcGFuLlxuICAgKi9cbiAgQ2hhclBvc2l0aW9uID0gJ0NoYXJQb3NpdGlvbicsXG5cbiAgLyoqXG4gICAqIFRoaXMgb2Zmc2V0IG9yIHNwYW4gd2FzIGluc3RhbnRpYXRlZCB3aXRoIGEgSGFuZGxlYmFycyBTb3VyY2VQb3NpdGlvbiBvciBTb3VyY2VMb2NhdGlvbi4gSXRzXG4gICAqIGNoYXJhY3RlciBwb3NpdGlvbiB3aWxsIGJlIGNvbXB1dGVkIG9uIGRlbWFuZC5cbiAgICovXG4gIEhic1Bvc2l0aW9uID0gJ0hic1Bvc2l0aW9uJyxcblxuICAvKipcbiAgICogZm9yIChyYXJlKSBzaXR1YXRpb25zIHdoZXJlIGEgbm9kZSBpcyBjcmVhdGVkIGJ1dCB0aGVyZSB3YXMgbm8gc291cmNlIGxvY2F0aW9uIChlLmcuIHRoZSBuYW1lXG4gICAqIFwiZGVmYXVsdFwiIGluIGRlZmF1bHQgYmxvY2tzIHdoZW4gdGhlIHdvcmQgXCJkZWZhdWx0XCIgbmV2ZXIgYXBwZWFyZWQgaW4gc291cmNlKS4gVGhpcyBpcyB1c2VkXG4gICAqIGJ5IHRoZSBpbnRlcm5hbHMgd2hlbiB0aGVyZSBpcyBhIGxlZ2l0aW1hdGUgcmVhc29uIGZvciB0aGUgaW50ZXJuYWxzIHRvIHN5bnRoZXNpemUgYSBub2RlXG4gICAqIHdpdGggbm8gbG9jYXRpb24uXG4gICAqL1xuICBJbnRlcm5hbHNTeW50aGV0aWMgPSAnSW50ZXJuYWxzU3ludGhldGljJyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgbm9kZSByZXByZXNlbnRzIHplcm8gcGFydHMgb2YgdGhlIHNvdXJjZSAoZm9yIGV4YW1wbGUsIGVtcHR5IGFyZ3VtZW50cykuXG4gICAqIEluIGdlbmVyYWwsIHdlIGF0dGVtcHQgdG8gYXNzaWduIHRoZXNlIG5vZGVzICpzb21lKiBwb3NpdGlvbiAoZW1wdHkgYXJndW1lbnRzIGNhbiBiZVxuICAgKiBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsZWUpLCBidXQgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlXG4gICAqL1xuICBOb25FeGlzdGVudCA9ICdOb25FeGlzdGVudCcsXG4gIC8qKlxuICAgKiBGb3Igc2l0dWF0aW9ucyB3aGVyZSBhIHNvdXJjZSBsb2NhdGlvbiB3YXMgZXhwZWN0ZWQsIGJ1dCBpdCBkaWRuJ3QgY29ycmVzcG9uZCB0byB0aGUgbm9kZSBpblxuICAgKiB0aGUgc291cmNlLiBUaGlzIGhhcHBlbnMgaWYgYSBwbHVnaW4gY3JlYXRlcyBicm9rZW4gbG9jYXRpb25zLlxuICAgKi9cbiAgQnJva2VuID0gJ0Jyb2tlbicsXG59XG5cbi8qKlxuICogQWxsIHBvc2l0aW9ucyBoYXZlIHRoZXNlIGRldGFpbHMgaW4gY29tbW9uLiBNb3N0IG5vdGFibHksIGFsbCB0aHJlZSBraW5kcyBvZiBwb3NpdGlvbnMgY2FuXG4gKiBtdXN0IGJlIGFibGUgdG8gYXR0ZW1wdCB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgaW50byB7QHNlZSBDaGFyUG9zaXRpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQ7XG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24gfCBudWxsO1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb247XG59XG5cbi8qKlxuICogVXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIGF0dGVtcHQgdG8gY29udmVydCBhIGBTb3VyY2VQb3NpdGlvbmAgdG8gYSBjaGFyYWN0ZXIgb2Zmc2V0IGZhaWxlZC4gSXRcbiAqIGlzIHNlcGFyYXRlIGZyb20gYG51bGxgIHNvIHRoYXQgYG51bGxgIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGNvbXB1dGF0aW9uIHdhc24ndCB5ZXRcbiAqIGF0dGVtcHRlZCAoYW5kIHRoZXJlZm9yZSB0byBjYWNoZSB0aGUgZmFpbHVyZSlcbiAqL1xuZXhwb3J0IGNvbnN0IEJST0tFTiA9ICdCUk9LRU4nO1xuZXhwb3J0IHR5cGUgQlJPS0VOID0gJ0JST0tFTic7XG5cbmV4cG9ydCB0eXBlIEFueVBvc2l0aW9uID0gSGJzUG9zaXRpb24gfCBDaGFyUG9zaXRpb24gfCBJbnZpc2libGVQb3NpdGlvbjtcblxuLyoqXG4gKiBBIGBTb3VyY2VPZmZzZXRgIHJlcHJlc2VudHMgYSBzaW5nbGUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZS5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgYmFja2luZyBkYXRhIGZvciBgU291cmNlT2Zmc2V0YCBvYmplY3RzOlxuICpcbiAqIC0gYENoYXJQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgY2hhcmFjdGVyIG9mZnNldCBpbnRvIHRoZSByYXcgc291cmNlIHN0cmluZ1xuICogLSBgSGJzUG9zaXRpb25gLCB3aGljaCBjb250YWlucyBhIGBTb3VyY2VQb3NpdGlvbmAgZnJvbSB0aGUgSGFuZGxlYmFycyBBU1QsIHdoaWNoIGNhbiBiZVxuICogICBjb252ZXJ0ZWQgdG8gYSBgQ2hhclBvc2l0aW9uYCBvbiBkZW1hbmQuXG4gKiAtIGBJbnZpc2libGVQb3NpdGlvbmAsIHdoaWNoIHJlcHJlc2VudHMgYSBwb3NpdGlvbiBub3QgaW4gc291cmNlIChAc2VlIHtJbnZpc2libGVQb3NpdGlvbn0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2VPZmZzZXQge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgZnJvbSBhIEhhbmRsZWJhcnMgYFNvdXJjZVBvc2l0aW9uYC4gSXQncyBzdG9yZWQgYXMtaXMsIGFuZCBjb252ZXJ0ZWRcbiAgICogaW50byBhIGNoYXJhY3RlciBvZmZzZXQgb24gZGVtYW5kLCB3aGljaCBhdm9pZHMgdW5uZWNlc3NhcmlseSBjb21wdXRpbmcgdGhlIG9mZnNldCBvZiBldmVyeVxuICAgKiBgU291cmNlTG9jYXRpb25gLCBidXQgYWxzbyBtZWFucyB0aGF0IGJyb2tlbiBgU291cmNlUG9zaXRpb25gcyBhcmUgbm90IGFsd2F5cyBkZXRlY3RlZC5cbiAgICovXG4gIHN0YXRpYyBmb3JIYnNQb3Moc291cmNlOiBTb3VyY2UsIHBvczogU291cmNlUG9zaXRpb24pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBwb3MsIG51bGwpLndyYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogY2FsbGluZyBjb2RlIGRldGVybWluZWQgKG9yIGtub3dzKSB0aGF0IHRoZSBgU291cmNlTG9jYXRpb25gIGRvZXNuJ3QgY29ycmVzcG9uZCBjb3JyZWN0bHkgdG9cbiAgICogYW55IHBhcnQgb2YgdGhlIHNvdXJjZS5cbiAgICovXG4gIHN0YXRpYyBicm9rZW4ocG9zOiBTb3VyY2VQb3NpdGlvbiA9IFVOS05PV05fUE9TSVRJT04pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24oT2Zmc2V0S2luZC5Ccm9rZW4sIHBvcykud3JhcCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGF0YTogUG9zaXRpb25EYXRhICYgQW55UG9zaXRpb24pIHt9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY2hhcmFjdGVyIG9mZnNldCBmb3IgdGhpcyBgU291cmNlT2Zmc2V0YCwgaWYgcG9zc2libGUuXG4gICAqL1xuICBnZXQgb2Zmc2V0KCk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5kYXRhLnRvQ2hhclBvcygpO1xuICAgIHJldHVybiBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IGNoYXJQb3Mub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdGhpcyBvZmZzZXQgd2l0aCBhbm90aGVyIG9uZS5cbiAgICpcbiAgICogSWYgYm90aCBvZmZzZXRzIGFyZSBgSGJzUG9zaXRpb25gcywgdGhleSdyZSBlcXVpdmFsZW50IGFzIGxvbmcgYXMgdGhlaXIgbGluZXMgYW5kIGNvbHVtbnMgYXJlXG4gICAqIHRoZSBzYW1lLiBUaGlzIGF2b2lkcyBjb21wdXRpbmcgb2Zmc2V0cyB1bm5lY2Vzc2FyaWx5LlxuICAgKlxuICAgKiBPdGhlcndpc2UsIHR3byBgU291cmNlT2Zmc2V0YHMgYXJlIGVxdWl2YWxlbnQgaWYgdGhlaXIgc3VjY2Vzc2Z1bGx5IGNvbXB1dGVkIGNoYXJhY3RlciBvZmZzZXRzXG4gICAqIGFyZSB0aGUgc2FtZS5cbiAgICovXG4gIGVxbChyaWdodDogU291cmNlT2Zmc2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVxbCh0aGlzLmRhdGEsIHJpZ2h0LmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNwYW4gdGhhdCBzdGFydHMgZnJvbSB0aGlzIHNvdXJjZSBvZmZzZXQgYW5kIGVuZHMgd2l0aCBhbm90aGVyIHNvdXJjZSBvZmZzZXQuIEF2b2lkXG4gICAqIGNvbXB1dGluZyBjaGFyYWN0ZXIgb2Zmc2V0cyBpZiBib3RoIGBTb3VyY2VPZmZzZXRgcyBhcmUgc3RpbGwgbGF6eS5cbiAgICovXG4gIHVudGlsKG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEsIG90aGVyLmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIGJ5IG1vdmluZyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMgc291cmNlIG9mZnNldFxuICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkIChpZiBgYnlgIGlzIG5lZ2F0aXZlKSwgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIElmIHRoaXMgYFNvdXJjZU9mZnNldGAgY2FuJ3QgY29tcHV0ZSBhIHZhbGlkIGNoYXJhY3RlciBvZmZzZXQsIGBtb3ZlYCByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICpcbiAgICogSWYgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIgb2Zmc2V0IGlzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgc291cmNlLCBgbW92ZWBcbiAgICogcmV0dXJucyBhIGJyb2tlbiBvZmZzZXQuXG4gICAqL1xuICBtb3ZlKGJ5OiBudW1iZXIpOiBTb3VyY2VPZmZzZXQge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5kYXRhLnRvQ2hhclBvcygpO1xuXG4gICAgaWYgKGNoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHQgPSBjaGFyUG9zLm9mZnNldCArIGJ5O1xuXG4gICAgICBpZiAoY2hhclBvcy5zb3VyY2UuY2hlY2socmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gbmV3IENoYXJQb3NpdGlvbihjaGFyUG9zLnNvdXJjZSwgcmVzdWx0KS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gU291cmNlT2Zmc2V0LmJyb2tlbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYFNvdXJjZVNwYW5gIHRoYXQgcmVwcmVzZW50cyBhIGNvbGxhcHNlZCByYW5nZSBhdCB0aGlzIHNvdXJjZSBvZmZzZXQuIEF2b2lkXG4gICAqIGNvbXB1dGluZyB0aGUgY2hhcmFjdGVyIG9mZnNldCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBjb21wdXRlZC5cbiAgICovXG4gIGNvbGxhcHNlZCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEsIHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIGBTb3VyY2VPZmZzZXRgIGludG8gYSBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoXG4gICAqIGV4aXN0aW5nIHBsdWdpbnMuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmRhdGEudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYXJQb3NpdGlvbiBpbXBsZW1lbnRzIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbjtcblxuICAvKiogQ29tcHV0ZWQgZnJvbSBjaGFyIG9mZnNldCAqL1xuICAjbG9jUG9zOiBIYnNQb3NpdGlvbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHNvdXJjZTogU291cmNlLCByZWFkb25seSBjaGFyUG9zOiBudW1iZXIpIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYWxyZWFkeSBhIGBDaGFyUG9zaXRpb25gLlxuICAgKlxuICAgKiB7QHNlZSBIYnNQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgYSBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSBmb3IgdGhpcyBgQ2hhclBvc2l0aW9uYC4gSWYgdGhpcyBgQ2hhclBvc2l0aW9uYCB3YXNcbiAgICogY29tcHV0ZWQgdXNpbmcge0BzZWUgU291cmNlT2Zmc2V0I21vdmV9LCB0aGlzIHdpbGwgY29tcHV0ZSB0aGUgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhlIG9mZnNldC5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgbGV0IGhicyA9IHRoaXMudG9IYnNQb3MoKTtcbiAgICByZXR1cm4gaGJzID09PSBudWxsID8gVU5LTk9XTl9QT1NJVElPTiA6IGhicy50b0pTT04oKTtcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGBDaGFyUG9zaXRpb25gIGFsd2F5cyBoYXMgYW4gb2Zmc2V0IGl0IGNhbiBwcm9kdWNlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY29tcHV0YXRpb24uXG4gICAqL1xuICBnZXQgb2Zmc2V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBjdXJyZW50IGNoYXJhY3RlciBvZmZzZXQgdG8gYW4gYEhic1Bvc2l0aW9uYCwgaWYgaXQgd2FzIG5vdCBhbHJlYWR5IGNvbXB1dGVkLiBPbmNlXG4gICAqIGEgYENoYXJQb3NpdGlvbmAgaGFzIGNvbXB1dGVkIGl0cyBgSGJzUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZFxuICAgKiB0aGUgc2FtZSBgQ2hhclBvc2l0aW9uYCBpcyByZXRhaW5lZCB3aGVuIHVzZWQgYXMgb25lIG9mIHRoZSBlbmRzIG9mIGEgYFNvdXJjZVNwYW5gLCBzb1xuICAgKiBjb21wdXRpbmcgdGhlIGBIYnNQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKi9cbiAgdG9IYnNQb3MoKTogSGJzUG9zaXRpb24gfCBudWxsIHtcbiAgICBsZXQgbG9jUG9zID0gdGhpcy4jbG9jUG9zO1xuXG4gICAgaWYgKGxvY1BvcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IGhic1BvcyA9IHRoaXMuc291cmNlLmhic1Bvc0Zvcih0aGlzLmNoYXJQb3MpO1xuXG4gICAgICBpZiAoaGJzUG9zID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuI2xvY1BvcyA9IGxvY1BvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2xvY1BvcyA9IGxvY1BvcyA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgaGJzUG9zLCB0aGlzLmNoYXJQb3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NQb3MgPT09IEJST0tFTiA/IG51bGwgOiBsb2NQb3M7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhic1Bvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG5cbiAgI2NoYXJQb3M6IENoYXJQb3NpdGlvbiB8IEJST0tFTiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgaGJzUG9zOiBTb3VyY2VQb3NpdGlvbixcbiAgICBjaGFyUG9zOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLiNjaGFyUG9zID0gY2hhclBvcyA9PT0gbnVsbCA/IG51bGwgOiBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgY2hhclBvcyk7XG4gIH1cblxuICAvKipcbiAgICogTGF6aWx5IGNvbXB1dGUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUge0BzZWUgU291cmNlUG9zaXRpb259LiBPbmNlIGFuIGBIYnNQb3NpdGlvbmAgaGFzXG4gICAqIGNvbXB1dGVkIGl0cyBgQ2hhclBvc2l0aW9uYCwgaXQgd2lsbCBub3QgbmVlZCB0byBkbyBjb21wdXRlIGl0IGFnYWluLCBhbmQgdGhlIHNhbWVcbiAgICogYEhic1Bvc2l0aW9uYCBpcyByZXRhaW5lZCB3aGVuIHVzZWQgYXMgb25lIG9mIHRoZSBlbmRzIG9mIGEgYFNvdXJjZVNwYW5gLCBzbyBjb21wdXRpbmcgdGhlXG4gICAqIGBDaGFyUG9zaXRpb25gIHNob3VsZCBiZSBhIG9uZS10aW1lIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24gfCBudWxsIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMuI2NoYXJQb3M7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IGNoYXJQb3NOdW1iZXIgPSB0aGlzLnNvdXJjZS5jaGFyUG9zRm9yKHRoaXMuaGJzUG9zKTtcblxuICAgICAgaWYgKGNoYXJQb3NOdW1iZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jY2hhclBvcyA9IGNoYXJQb3MgPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNjaGFyUG9zID0gY2hhclBvcyA9IG5ldyBDaGFyUG9zaXRpb24odGhpcy5zb3VyY2UsIGNoYXJQb3NOdW1iZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFyUG9zID09PSBCUk9LRU4gPyBudWxsIDogY2hhclBvcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSB0aGF0IHRoaXMgYEhic1Bvc2l0aW9uYCB3YXMgaW5zdGFudGlhdGVkIHdpdGguIFRoaXMgb3BlcmF0aW9uXG4gICAqIGRvZXMgbm90IG5lZWQgdG8gY29tcHV0ZSBhbnl0aGluZy5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYWxyZWFkeSBhbiBgSGJzUG9zaXRpb25gLlxuICAgKlxuICAgKiB7QHNlZSBDaGFyUG9zaXRpb259IGZvciB0aGUgYWx0ZXJuYXRpdmUuXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZC5Ccm9rZW4gfCBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYyB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsXG4gICAgLy8gd2hhdGV2ZXIgd2FzIHByb3ZpZGVkLCBwb3NzaWJseSBicm9rZW5cbiAgICByZWFkb25seSBwb3M6IFNvdXJjZVBvc2l0aW9uXG4gICkge31cblxuICAvKipcbiAgICogQSBicm9rZW4gcG9zaXRpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGEge0BzZWUgQ2hhcmFjdGVyUG9zaXRpb259LlxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJpYWxpemF0aW9uIG9mIGFuIGBJbnZpc2libGVQb3NpdGlvbiBpcyB3aGF0ZXZlciBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSB3YXNcbiAgICogb3JpZ2luYWxseSBpZGVudGlmaWVkIGFzIGJyb2tlbiwgbm9uLWV4aXN0ZW50IG9yIHN5bnRoZXRpYy5cbiAgICpcbiAgICogSWYgYW4gYEludmlzaWJsZVBvc2l0aW9uYCBuZXZlciBoYWQgYW4gc291cmNlIG9mZnNldCBhdCBhbGwsIHRoaXMgbWV0aG9kIHJldHVybnNcbiAgICoge0BzZWUgVU5LTk9XTl9QT1NJVElPTn0gZm9yIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvcztcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIGdldCBvZmZzZXQoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byB7QHNlZSBBbnlQb3NpdGlvbn0gYW5kIGRldGVybWluZSB3aGV0aGVyIHRoZXkgYXJlIGVxdWFsLlxuICpcbiAqIEBzZWUge1NvdXJjZU9mZnNldCNlcWx9XG4gKi9cbmNvbnN0IGVxbCA9IG1hdGNoPGJvb2xlYW4+KChtKSA9PlxuICBtXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgICh7IGhic1BvczogbGVmdCB9LCB7IGhic1BvczogcmlnaHQgfSkgPT5cbiAgICAgICAgbGVmdC5jb2x1bW4gPT09IHJpZ2h0LmNvbHVtbiAmJiBsZWZ0LmxpbmUgPT09IHJpZ2h0LmxpbmVcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgKHsgY2hhclBvczogbGVmdCB9LCB7IGNoYXJQb3M6IHJpZ2h0IH0pID0+IGxlZnQgPT09IHJpZ2h0XG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgb2Zmc2V0OiBsZWZ0IH0sIHJpZ2h0KSA9PiBsZWZ0ID09PSByaWdodC50b0NoYXJQb3MoKT8ub2Zmc2V0XG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgKGxlZnQsIHsgb2Zmc2V0OiByaWdodCB9KSA9PiBsZWZ0LnRvQ2hhclBvcygpPy5vZmZzZXQgPT09IHJpZ2h0XG4gICAgKVxuICAgIC53aGVuKE1hdGNoQW55LCBNYXRjaEFueSwgKCkgPT4gZmFsc2UpXG4pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBOztBQUNBOztBQUpBOztBQWdEQTs7Ozs7QUFLTyxNQUFNLE1BQU0sR0FBWixRQUFBO0FBS1A7Ozs7Ozs7Ozs7Ozs7QUFVTSxNQUFBLFlBQUEsQ0FBbUI7QUFtQnZCLEVBQUEsV0FBQSxDQUFBLElBQUEsRUFBcUQ7QUFBaEMsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQztBQWxCekQ7Ozs7Ozs7QUFLQSxTQUFBLFNBQUEsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFvRDtBQUNsRCxXQUFPLElBQUEsV0FBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFQLElBQU8sRUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7QUFLQSxTQUFBLE1BQUEsQ0FBYyxHQUFBLEdBQWQsMEJBQUEsRUFBb0Q7QUFDbEQsV0FBTyxJQUFBLGlCQUFBLENBQXFCO0FBQUE7QUFBckIsTUFBQSxHQUFBLEVBQVAsSUFBTyxFQUFQO0FBQ0Q7QUFJRDs7Ozs7QUFHQSxNQUFBLE1BQUEsR0FBVTtBQUNSLFFBQUksT0FBTyxHQUFHLEtBQUEsSUFBQSxDQUFkLFNBQWMsRUFBZDtBQUNBLFdBQU8sT0FBTyxLQUFQLElBQUEsR0FBQSxJQUFBLEdBQTBCLE9BQU8sQ0FBeEMsTUFBQTtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O0FBU0EsRUFBQSxHQUFHLENBQUEsS0FBQSxFQUFvQjtBQUNyQixXQUFPLEdBQUcsQ0FBQyxLQUFELElBQUEsRUFBWSxLQUFLLENBQTNCLElBQVUsQ0FBVjtBQUNEO0FBRUQ7Ozs7OztBQUlBLEVBQUEsS0FBSyxDQUFBLEtBQUEsRUFBb0I7QUFDdkIsV0FBTyxnQkFBSyxLQUFELElBQUosRUFBZ0IsS0FBSyxDQUE1QixJQUFPLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLEVB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Q29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBTb3VyY2VQb3NpdGlvbiwgVU5LTk9XTl9QT1NJVElPTiB9IGZyb20gJy4uL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBtYXRjaCwgTWF0Y2hBbnkgfSBmcm9tICcuL21hdGNoJztcbmltcG9ydCB7IFNvdXJjZVNwYW4sIHNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPZmZzZXRLaW5kIHtcbiAgLyoqXG4gICAqIFdlIGhhdmUgYWxyZWFkeSBjb21wdXRlZCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoaXMgb2Zmc2V0IG9yIHNwYW4uXG4gICAqL1xuICBDaGFyUG9zaXRpb24gPSAnQ2hhclBvc2l0aW9uJyxcblxuICAvKipcbiAgICogVGhpcyBvZmZzZXQgb3Igc3BhbiB3YXMgaW5zdGFudGlhdGVkIHdpdGggYSBIYW5kbGViYXJzIFNvdXJjZVBvc2l0aW9uIG9yIFNvdXJjZUxvY2F0aW9uLiBJdHNcbiAgICogY2hhcmFjdGVyIHBvc2l0aW9uIHdpbGwgYmUgY29tcHV0ZWQgb24gZGVtYW5kLlxuICAgKi9cbiAgSGJzUG9zaXRpb24gPSAnSGJzUG9zaXRpb24nLFxuXG4gIC8qKlxuICAgKiBmb3IgKHJhcmUpIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIGlzIGNyZWF0ZWQgYnV0IHRoZXJlIHdhcyBubyBzb3VyY2UgbG9jYXRpb24gKGUuZy4gdGhlIG5hbWVcbiAgICogXCJkZWZhdWx0XCIgaW4gZGVmYXVsdCBibG9ja3Mgd2hlbiB0aGUgd29yZCBcImRlZmF1bHRcIiBuZXZlciBhcHBlYXJlZCBpbiBzb3VyY2UpLiBUaGlzIGlzIHVzZWRcbiAgICogYnkgdGhlIGludGVybmFscyB3aGVuIHRoZXJlIGlzIGEgbGVnaXRpbWF0ZSByZWFzb24gZm9yIHRoZSBpbnRlcm5hbHMgdG8gc3ludGhlc2l6ZSBhIG5vZGVcbiAgICogd2l0aCBubyBsb2NhdGlvbi5cbiAgICovXG4gIEludGVybmFsc1N5bnRoZXRpYyA9ICdJbnRlcm5hbHNTeW50aGV0aWMnLFxuICAvKipcbiAgICogRm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIHJlcHJlc2VudHMgemVybyBwYXJ0cyBvZiB0aGUgc291cmNlIChmb3IgZXhhbXBsZSwgZW1wdHkgYXJndW1lbnRzKS5cbiAgICogSW4gZ2VuZXJhbCwgd2UgYXR0ZW1wdCB0byBhc3NpZ24gdGhlc2Ugbm9kZXMgKnNvbWUqIHBvc2l0aW9uIChlbXB0eSBhcmd1bWVudHMgY2FuIGJlXG4gICAqIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNhbGxlZSksIGJ1dCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGVcbiAgICovXG4gIE5vbkV4aXN0ZW50ID0gJ05vbkV4aXN0ZW50JyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgc291cmNlIGxvY2F0aW9uIHdhcyBleHBlY3RlZCwgYnV0IGl0IGRpZG4ndCBjb3JyZXNwb25kIHRvIHRoZSBub2RlIGluXG4gICAqIHRoZSBzb3VyY2UuIFRoaXMgaGFwcGVucyBpZiBhIHBsdWdpbiBjcmVhdGVzIGJyb2tlbiBsb2NhdGlvbnMuXG4gICAqL1xuICBCcm9rZW4gPSAnQnJva2VuJyxcbn1cblxuLyoqXG4gKiBBbGwgcG9zaXRpb25zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uIE1vc3Qgbm90YWJseSwgYWxsIHRocmVlIGtpbmRzIG9mIHBvc2l0aW9ucyBjYW5cbiAqIG11c3QgYmUgYWJsZSB0byBhdHRlbXB0IHRvIGNvbnZlcnQgdGhlbXNlbHZlcyBpbnRvIHtAc2VlIENoYXJQb3NpdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZDtcbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGw7XG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdCB0byBjb252ZXJ0IGEgYFNvdXJjZVBvc2l0aW9uYCB0byBhIGNoYXJhY3RlciBvZmZzZXQgZmFpbGVkLiBJdFxuICogaXMgc2VwYXJhdGUgZnJvbSBgbnVsbGAgc28gdGhhdCBgbnVsbGAgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29tcHV0YXRpb24gd2Fzbid0IHlldFxuICogYXR0ZW1wdGVkIChhbmQgdGhlcmVmb3JlIHRvIGNhY2hlIHRoZSBmYWlsdXJlKVxuICovXG5leHBvcnQgY29uc3QgQlJPS0VOID0gJ0JST0tFTic7XG5leHBvcnQgdHlwZSBCUk9LRU4gPSAnQlJPS0VOJztcblxuZXhwb3J0IHR5cGUgQW55UG9zaXRpb24gPSBIYnNQb3NpdGlvbiB8IENoYXJQb3NpdGlvbiB8IEludmlzaWJsZVBvc2l0aW9uO1xuXG4vKipcbiAqIEEgYFNvdXJjZU9mZnNldGAgcmVwcmVzZW50cyBhIHNpbmdsZSBwb3NpdGlvbiBpbiB0aGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBiYWNraW5nIGRhdGEgZm9yIGBTb3VyY2VPZmZzZXRgIG9iamVjdHM6XG4gKlxuICogLSBgQ2hhclBvc2l0aW9uYCwgd2hpY2ggY29udGFpbnMgYSBjaGFyYWN0ZXIgb2Zmc2V0IGludG8gdGhlIHJhdyBzb3VyY2Ugc3RyaW5nXG4gKiAtIGBIYnNQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgYFNvdXJjZVBvc2l0aW9uYCBmcm9tIHRoZSBIYW5kbGViYXJzIEFTVCwgd2hpY2ggY2FuIGJlXG4gKiAgIGNvbnZlcnRlZCB0byBhIGBDaGFyUG9zaXRpb25gIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVBvc2l0aW9uYCwgd2hpY2ggcmVwcmVzZW50cyBhIHBvc2l0aW9uIG5vdCBpbiBzb3VyY2UgKEBzZWUge0ludmlzaWJsZVBvc2l0aW9ufSlcbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZU9mZnNldCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCBmcm9tIGEgSGFuZGxlYmFycyBgU291cmNlUG9zaXRpb25gLiBJdCdzIHN0b3JlZCBhcy1pcywgYW5kIGNvbnZlcnRlZFxuICAgKiBpbnRvIGEgY2hhcmFjdGVyIG9mZnNldCBvbiBkZW1hbmQsIHdoaWNoIGF2b2lkcyB1bm5lY2Vzc2FyaWx5IGNvbXB1dGluZyB0aGUgb2Zmc2V0IG9mIGV2ZXJ5XG4gICAqIGBTb3VyY2VMb2NhdGlvbmAsIGJ1dCBhbHNvIG1lYW5zIHRoYXQgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmBzIGFyZSBub3QgYWx3YXlzIGRldGVjdGVkLlxuICAgKi9cbiAgc3RhdGljIGZvckhic1Bvcyhzb3VyY2U6IFNvdXJjZSwgcG9zOiBTb3VyY2VQb3NpdGlvbik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIHBvcywgbnVsbCkud3JhcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBicm9rZW4gYFNvdXJjZVBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGF0IHRoZVxuICAgKiBjYWxsaW5nIGNvZGUgZGV0ZXJtaW5lZCAob3Iga25vd3MpIHRoYXQgdGhlIGBTb3VyY2VMb2NhdGlvbmAgZG9lc24ndCBjb3JyZXNwb25kIGNvcnJlY3RseSB0b1xuICAgKiBhbnkgcGFydCBvZiB0aGUgc291cmNlLlxuICAgKi9cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZVBvc2l0aW9uID0gVU5LTk9XTl9QT1NJVElPTik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbihPZmZzZXRLaW5kLkJyb2tlbiwgcG9zKS53cmFwKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYXRhOiBQb3NpdGlvbkRhdGEgJiBBbnlQb3NpdGlvbikge31cblxuICAvKipcbiAgICogR2V0IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZvciB0aGlzIGBTb3VyY2VPZmZzZXRgLCBpZiBwb3NzaWJsZS5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IG51bGwgPyBudWxsIDogY2hhclBvcy5vZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0aGlzIG9mZnNldCB3aXRoIGFub3RoZXIgb25lLlxuICAgKlxuICAgKiBJZiBib3RoIG9mZnNldHMgYXJlIGBIYnNQb3NpdGlvbmBzLCB0aGV5J3JlIGVxdWl2YWxlbnQgYXMgbG9uZyBhcyB0aGVpciBsaW5lcyBhbmQgY29sdW1ucyBhcmVcbiAgICogdGhlIHNhbWUuIFRoaXMgYXZvaWRzIGNvbXB1dGluZyBvZmZzZXRzIHVubmVjZXNzYXJpbHkuXG4gICAqXG4gICAqIE90aGVyd2lzZSwgdHdvIGBTb3VyY2VPZmZzZXRgcyBhcmUgZXF1aXZhbGVudCBpZiB0aGVpciBzdWNjZXNzZnVsbHkgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICogYXJlIHRoZSBzYW1lLlxuICAgKi9cbiAgZXFsKHJpZ2h0OiBTb3VyY2VPZmZzZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXFsKHRoaXMuZGF0YSwgcmlnaHQuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc3BhbiB0aGF0IHN0YXJ0cyBmcm9tIHRoaXMgc291cmNlIG9mZnNldCBhbmQgZW5kcyB3aXRoIGFub3RoZXIgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIGNoYXJhY3RlciBvZmZzZXRzIGlmIGJvdGggYFNvdXJjZU9mZnNldGBzIGFyZSBzdGlsbCBsYXp5LlxuICAgKi9cbiAgdW50aWwob3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgb3RoZXIuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgYnkgbW92aW5nIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gcmVwcmVzZW50ZWQgYnkgdGhpcyBzb3VyY2Ugb2Zmc2V0XG4gICAqIGZvcndhcmQgb3IgYmFja3dhcmQgKGlmIGBieWAgaXMgbmVnYXRpdmUpLCBpZiBwb3NzaWJsZS5cbiAgICpcbiAgICogSWYgdGhpcyBgU291cmNlT2Zmc2V0YCBjYW4ndCBjb21wdXRlIGEgdmFsaWQgY2hhcmFjdGVyIG9mZnNldCwgYG1vdmVgIHJldHVybnMgYSBicm9rZW4gb2Zmc2V0LlxuICAgKlxuICAgKiBJZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBvZmZzZXQgaXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBzb3VyY2UsIGBtb3ZlYFxuICAgKiByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICovXG4gIG1vdmUoYnk6IG51bWJlcik6IFNvdXJjZU9mZnNldCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFNvdXJjZU9mZnNldC5icm9rZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlc3VsdCA9IGNoYXJQb3Mub2Zmc2V0ICsgYnk7XG5cbiAgICAgIGlmIChjaGFyUG9zLnNvdXJjZS5jaGVjayhyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hhclBvc2l0aW9uKGNoYXJQb3Muc291cmNlLCByZXN1bHQpLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgdGhhdCByZXByZXNlbnRzIGEgY29sbGFwc2VkIHJhbmdlIGF0IHRoaXMgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGNvbXB1dGVkLlxuICAgKi9cbiAgY29sbGFwc2VkKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgdGhpcy5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgYFNvdXJjZU9mZnNldGAgaW50byBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciBjb21wYXRpYmlsaXR5IHdpdGhcbiAgICogZXhpc3RpbmcgcGx1Z2lucy5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50b0pTT04oKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhclBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gIC8qKiBDb21wdXRlZCBmcm9tIGNoYXIgb2Zmc2V0ICovXG4gIF9sb2NQb3M6IEhic1Bvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc291cmNlOiBTb3VyY2UsIHJlYWRvbmx5IGNoYXJQb3M6IG51bWJlcikge31cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGEgYENoYXJQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIEhic1Bvc2l0aW9ufSBmb3IgdGhlIGFsdGVybmF0aXZlLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciB0aGlzIGBDaGFyUG9zaXRpb25gLiBJZiB0aGlzIGBDaGFyUG9zaXRpb25gIHdhc1xuICAgKiBjb21wdXRlZCB1c2luZyB7QHNlZSBTb3VyY2VPZmZzZXQjbW92ZX0sIHRoaXMgd2lsbCBjb21wdXRlIHRoZSBgU291cmNlUG9zaXRpb25gIGZvciB0aGUgb2Zmc2V0LlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICBsZXQgaGJzID0gdGhpcy50b0hic1BvcygpO1xuICAgIHJldHVybiBoYnMgPT09IG51bGwgPyBVTktOT1dOX1BPU0lUSU9OIDogaGJzLnRvSlNPTigpO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYENoYXJQb3NpdGlvbmAgYWx3YXlzIGhhcyBhbiBvZmZzZXQgaXQgY2FuIHByb2R1Y2Ugd2l0aG91dCBhbnkgYWRkaXRpb25hbCBjb21wdXRhdGlvbi5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIG9mZnNldCB0byBhbiBgSGJzUG9zaXRpb25gLCBpZiBpdCB3YXMgbm90IGFscmVhZHkgY29tcHV0ZWQuIE9uY2VcbiAgICogYSBgQ2hhclBvc2l0aW9uYCBoYXMgY29tcHV0ZWQgaXRzIGBIYnNQb3NpdGlvbmAsIGl0IHdpbGwgbm90IG5lZWQgdG8gZG8gY29tcHV0ZSBpdCBhZ2FpbiwgYW5kXG4gICAqIHRoZSBzYW1lIGBDaGFyUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvXG4gICAqIGNvbXB1dGluZyB0aGUgYEhic1Bvc2l0aW9uYCBzaG91bGQgYmUgYSBvbmUtdGltZSBvcGVyYXRpb24uXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3MgPSB0aGlzLl9sb2NQb3M7XG5cbiAgICBpZiAobG9jUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgaGJzUG9zID0gdGhpcy5zb3VyY2UuaGJzUG9zRm9yKHRoaXMuY2hhclBvcyk7XG5cbiAgICAgIGlmIChoYnNQb3MgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbG9jUG9zID0gbG9jUG9zID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbG9jUG9zID0gbG9jUG9zID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBoYnNQb3MsIHRoaXMuY2hhclBvcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY1BvcyA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1BvcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcblxuICBfY2hhclBvczogQ2hhclBvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3M6IFNvdXJjZVBvc2l0aW9uLFxuICAgIGNoYXJQb3M6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuX2NoYXJQb3MgPSBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBjaGFyUG9zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgY29tcHV0ZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSB7QHNlZSBTb3VyY2VQb3NpdGlvbn0uIE9uY2UgYW4gYEhic1Bvc2l0aW9uYCBoYXNcbiAgICogY29tcHV0ZWQgaXRzIGBDaGFyUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZCB0aGUgc2FtZVxuICAgKiBgSGJzUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvIGNvbXB1dGluZyB0aGVcbiAgICogYENoYXJQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5fY2hhclBvcztcblxuICAgIGlmIChjaGFyUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgY2hhclBvc051bWJlciA9IHRoaXMuc291cmNlLmNoYXJQb3NGb3IodGhpcy5oYnNQb3MpO1xuXG4gICAgICBpZiAoY2hhclBvc051bWJlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9jaGFyUG9zID0gY2hhclBvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NoYXJQb3MgPSBjaGFyUG9zID0gbmV3IENoYXJQb3NpdGlvbih0aGlzLnNvdXJjZSwgY2hhclBvc051bWJlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IEJST0tFTiA/IG51bGwgOiBjaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUge0BzZWUgU291cmNlUG9zaXRpb259IHRoYXQgdGhpcyBgSGJzUG9zaXRpb25gIHdhcyBpbnN0YW50aWF0ZWQgd2l0aC4gVGhpcyBvcGVyYXRpb25cbiAgICogZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIGFueXRoaW5nLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3M7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VPZmZzZXQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGFuIGBIYnNQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIENoYXJQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIHRvSGJzUG9zKCk6IEhic1Bvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kLkJyb2tlbiB8IE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudCxcbiAgICAvLyB3aGF0ZXZlciB3YXMgcHJvdmlkZWQsIHBvc3NpYmx5IGJyb2tlblxuICAgIHJlYWRvbmx5IHBvczogU291cmNlUG9zaXRpb25cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBBIGJyb2tlbiBwb3NpdGlvbiBjYW5ub3QgYmUgdHVybmVkIGludG8gYSB7QHNlZSBDaGFyYWN0ZXJQb3NpdGlvbn0uXG4gICAqL1xuICB0b0NoYXJQb3MoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlcmlhbGl6YXRpb24gb2YgYW4gYEludmlzaWJsZVBvc2l0aW9uIGlzIHdoYXRldmVyIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IHdhc1xuICAgKiBvcmlnaW5hbGx5IGlkZW50aWZpZWQgYXMgYnJva2VuLCBub24tZXhpc3RlbnQgb3Igc3ludGhldGljLlxuICAgKlxuICAgKiBJZiBhbiBgSW52aXNpYmxlUG9zaXRpb25gIG5ldmVyIGhhZCBhbiBzb3VyY2Ugb2Zmc2V0IGF0IGFsbCwgdGhpcyBtZXRob2QgcmV0dXJuc1xuICAgKiB7QHNlZSBVTktOT1dOX1BPU0lUSU9OfSBmb3IgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgZ2V0IG9mZnNldCgpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHtAc2VlIEFueVBvc2l0aW9ufSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhleSBhcmUgZXF1YWwuXG4gKlxuICogQHNlZSB7U291cmNlT2Zmc2V0I2VxbH1cbiAqL1xuY29uc3QgZXFsID0gbWF0Y2g8Ym9vbGVhbj4oKG0pID0+XG4gIG1cbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgaGJzUG9zOiBsZWZ0IH0sIHsgaGJzUG9zOiByaWdodCB9KSA9PlxuICAgICAgICBsZWZ0LmNvbHVtbiA9PT0gcmlnaHQuY29sdW1uICYmIGxlZnQubGluZSA9PT0gcmlnaHQubGluZVxuICAgIClcbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAoeyBjaGFyUG9zOiBsZWZ0IH0sIHsgY2hhclBvczogcmlnaHQgfSkgPT4gbGVmdCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICAoeyBvZmZzZXQ6IGxlZnQgfSwgcmlnaHQpID0+IGxlZnQgPT09IHJpZ2h0LnRvQ2hhclBvcygpPy5vZmZzZXRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAobGVmdCwgeyBvZmZzZXQ6IHJpZ2h0IH0pID0+IGxlZnQudG9DaGFyUG9zKCk/Lm9mZnNldCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oTWF0Y2hBbnksIE1hdGNoQW55LCAoKSA9PiBmYWxzZSlcbik7XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -20,22 +20,4 @@ "use strict";

var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
// eslint-disable-next-line import/no-extraneous-dependencies
return privateMap.get(receiver);
};
var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPosSpan, _charPosSpan, _providedHbsLoc; // eslint-disable-next-line import/no-extraneous-dependencies
/**

@@ -328,4 +310,3 @@ * A `SourceSpan` object represents a span of characters inside of a template source.

;
_locPosSpan.set(this, null);
this._locPosSpan = null;
}

@@ -363,3 +344,3 @@

toHbsSpan() {
let locPosSpan = __classPrivateFieldGet(this, _locPosSpan);
let locPosSpan = this._locPosSpan;

@@ -371,8 +352,8 @@ if (locPosSpan === null) {

if (start === null || end === null) {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, _offset.BROKEN);
locPosSpan = this._locPosSpan = _offset.BROKEN;
} else {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, new HbsSpan(this.source, {
locPosSpan = this._locPosSpan = new HbsSpan(this.source, {
start,
end
}));
});
}

@@ -407,4 +388,2 @@ }

_locPosSpan = new WeakMap();
class HbsSpan {

@@ -417,9 +396,4 @@ constructor(source, hbsPositions, providedHbsLoc = null) {

;
_charPosSpan.set(this, null); // the source location from Handlebars + AST Plugins -- could be wrong
_providedHbsLoc.set(this, void 0);
__classPrivateFieldSet(this, _providedHbsLoc, providedHbsLoc);
this._charPosSpan = null;
this._providedHbsLoc = providedHbsLoc;
}

@@ -439,13 +413,12 @@

updateProvided(pos, edge) {
if (__classPrivateFieldGet(this, _providedHbsLoc)) {
__classPrivateFieldGet(this, _providedHbsLoc)[edge] = pos;
if (this._providedHbsLoc) {
this._providedHbsLoc[edge] = pos;
} // invalidate computed character offsets
__classPrivateFieldSet(this, _charPosSpan, null);
__classPrivateFieldSet(this, _providedHbsLoc, {
this._charPosSpan = null;
this._providedHbsLoc = {
start: pos,
end: pos
});
};
}

@@ -497,3 +470,3 @@

toCharPosSpan() {
let charPosSpan = __classPrivateFieldGet(this, _charPosSpan);
let charPosSpan = this._charPosSpan;

@@ -505,8 +478,8 @@ if (charPosSpan === null) {

if (start && end) {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, new CharPositionSpan(this.source, {
charPosSpan = this._charPosSpan = new CharPositionSpan(this.source, {
start,
end
}));
});
} else {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, _offset.BROKEN);
charPosSpan = this._charPosSpan = _offset.BROKEN;
return null;

@@ -522,3 +495,2 @@ }

exports.HbsSpan = HbsSpan;
_charPosSpan = new WeakMap(), _providedHbsLoc = new WeakMap();

@@ -643,2 +615,2 @@ class InvisibleSpan {

exports.span = span;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnREFkQTs7O0FBdUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0NNLE1BQUEsVUFBQSxDQUFpQjtBQTRDckIsRUFBQSxXQUFBLENBQUEsSUFBQSxFQUE0QztBQUF4QixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ2xCLFNBQUEsV0FBQSxHQUNFLElBQUksQ0FBSixJQUFBLEtBQVM7QUFBQTtBQUFULE9BQXlDLElBQUksQ0FBSixJQUFBLEtBQVM7QUFBQTtBQURwRDtBQUVEOztBQTlDRCxhQUFBLFlBQUEsR0FBdUI7QUFDckIsV0FBTyxJQUFBLGFBQUEsQ0FBaUI7QUFBQTtBQUFqQixNQUFBLCtCQUFBLEVBQVAsSUFBTyxFQUFQO0FBQ0Q7O0FBRUQsU0FBQSxJQUFBLENBQUEsTUFBQSxFQUFBLFVBQUEsRUFBNEQ7QUFDMUQsUUFBSSxPQUFBLFVBQUEsS0FBSixRQUFBLEVBQW9DO0FBQ2xDLGFBQU8sVUFBVSxDQUFWLGdCQUFBLENBQUEsTUFBQSxFQUFBLFVBQUEsRUFBUCxVQUFPLENBQVA7QUFERixLQUFBLE1BRU8sSUFBSSxPQUFBLFVBQUEsS0FBSixRQUFBLEVBQW9DO0FBQ3pDLGFBQU8sVUFBVSxDQUFWLFNBQUEsQ0FBUCxVQUFPLENBQVA7QUFESyxLQUFBLE1BRUEsSUFBSSxLQUFLLENBQUwsT0FBQSxDQUFKLFVBQUksQ0FBSixFQUErQjtBQUNwQyxhQUFPLFVBQVUsQ0FBVixnQkFBQSxDQUFBLE1BQUEsRUFBb0MsVUFBVSxDQUE5QyxDQUE4QyxDQUE5QyxFQUFtRCxVQUFVLENBQXBFLENBQW9FLENBQTdELENBQVA7QUFESyxLQUFBLE1BRUEsSUFBSSxVQUFVLEtB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QUVPO0FBQ0wsV0FBTyxJQUFJLENBQUEsSUFBQSxFQUFYLFlBQVcsQ0FBWDtBQUNEO0FBcEJMLENBQUEsRUFBQSxJQUFBLENBc0JPO0FBQUE7QUF0QlAsRUFzQk87QUFBQTtBQXRCUCxFQXNCeUQsQ0FBQSxJQUFBLEVBQUEsS0FBQSxLQUFnQjtBQUNyRSxNQUFJLFdBQVcsR0FBRyxJQUFJLENBQXRCLFNBQWtCLEVBQWxCOztBQUVBLE1BQUksV0FBVyxLQUFmLElBQUEsRUFBMEI7QUFDeEIsV0FBTyxJQUFBLGFBQUEsQ0FBaUI7QUFBQTtBQUFqQixNQUFBLHlCQUFBLEVBQVAsSUFBTyxFQUFQO0FBREYsR0FBQSxNQUVPO0FBQ0wsV0FBTyxJQUFJLENBQUEsV0FBQSxFQUFYLEtBQVcsQ0FBWDtBQUNEO0FBN0JMLENBQUEsRUFBQSxJQUFBLENBQUEsa0JBQUEsRUFBQSxlQUFBLEVBK0JnQyxJQUFELElBQVUsSUFBQSxhQUFBLENBQWtCLElBQUksQ0FBdEIsSUFBQSxFQUFBLHlCQUFBLEVBL0J6QyxJQStCeUMsRUEvQnpDLEVBQUEsSUFBQSxDQUFBLGVBQUEsRUFBQSxrQkFBQSxFQWdDK0IsQ0FBQSxDQUFBLEVBQUEsS0FBQSxLQUMzQixJQUFBLGFBQUEsQ0FBa0IsS0FBSyxDQUF2QixJQUFBLEVBQUEseUJBQUEsRUFsQ0MsSUFrQ0QsRUFqQ0osQ0FEdUMsQ0FBbEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBMT0NBTF9ERUJVRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7XG4gIEJST0tFTl9MT0NBVElPTixcbiAgTk9OX0VYSVNURU5UX0xPQ0FUSU9OLFxuICBTb3VyY2VMb2NhdGlvbixcbiAgU291cmNlUG9zaXRpb24sXG59IGZyb20gJy4uL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi4vc2xpY2UnO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnLi4vc291cmNlJztcbmltcG9ydCB7IElzSW52aXNpYmxlLCBtYXRjaCwgTWF0Y2hBbnksIE1hdGNoRm4gfSBmcm9tICcuL21hdGNoJztcbmltcG9ydCB7XG4gIEFueVBvc2l0aW9uLFxuICBCUk9LRU4sXG4gIENoYXJQb3NpdGlvbixcbiAgSGJzUG9zaXRpb24sXG4gIEludmlzaWJsZVBvc2l0aW9uLFxuICBPZmZzZXRLaW5kLFxuICBTb3VyY2VPZmZzZXQsXG59IGZyb20gJy4vb2Zmc2V0JztcblxuLyoqXG4gKiBBbGwgc3BhbnMgaGF2ZSB0aGVzZSBkZXRhaWxzIGluIGNvbW1vbi5cbiAqL1xuaW50ZXJmYWNlIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZDtcblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIHNwYW4gaW50byBhIHN0cmluZy4gSWYgdGhlIHNwYW4gaXMgYnJva2VuLCByZXR1cm4gYCcnYC5cbiAgICovXG4gIGFzU3RyaW5nKCk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0cyB0aGUgbW9kdWxlIHRoZSBzcGFuIHdhcyBsb2NhdGVkIGluLlxuICAgKi9cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhpcyBzcGFuLiBUcnkgdG8gYXZvaWQgY3JlYXRpbmcgbmV3IHBvc2l0aW9uIG9iamVjdHMsIGFzIHRoZXlcbiAgICogY2FjaGUgY29tcHV0YXRpb25zLlxuICAgKi9cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb247XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZW5kaW5nIHBvc2l0aW9uIGZvciB0aGlzIHNwYW4uIFRyeSB0byBhdm9pZCBjcmVhdGluZyBuZXcgcG9zaXRpb24gb2JqZWN0cywgYXMgdGhleVxuICAgKiBjYWNoZSBjb21wdXRhdGlvbnMuXG4gICAqL1xuICBnZXRFbmQoKTogQW55UG9zaXRpb247XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIGBTb3VyY2VMb2NhdGlvbmAgZm9yIHRoaXMgc3BhbiwgcmV0dXJuZWQgYXMgYW4gaW5zdGFuY2Ugb2YgYEhic1NwYW5gLlxuICAgKi9cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSwgd2hlbmV2ZXIgdGhlIGBzdGFydGAgb3IgYGVuZGAgb2YgYSB7QHNlZSBTb3VyY2VPZmZzZXR9IGNoYW5nZXMsIHNwYW5zIGFyZVxuICAgKiBub3RpZmllZCBvZiB0aGUgY2hhbmdlIHNvIHRoZXkgY2FuIHVwZGF0ZSB0aGVtc2VsdmVzLiBUaGlzIHNob3VsZG4ndCBoYXBwZW4gb3V0c2lkZSBvZiBBU1RcbiAgICogcGx1Z2lucy5cbiAgICovXG4gIGxvY0RpZFVwZGF0ZShjaGFuZ2VzOiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgaW50byBhIHtAc2VlIFNlcmlhbGl6ZWRTb3VyY2VTcGFufSwgd2hpY2ggaXMgY29tcGFjdCBhbmQgZGVzaWduZWQgZm9yIHJlYWRhYmlsaXR5IGluXG4gICAqIGNvbnRleHQgbGlrZSBBU1QgRXhwbG9yZXIuIElmIHlvdSBuZWVkIGEge0BzZWUgU291cmNlTG9jYXRpb259LCB1c2Uge0BzZWUgdG9KU09OfS5cbiAgICovXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBBIGBTb3VyY2VTcGFuYCBvYmplY3QgcmVwcmVzZW50cyBhIHNwYW4gb2YgY2hhcmFjdGVycyBpbnNpZGUgb2YgYSB0ZW1wbGF0ZSBzb3VyY2UuXG4gKlxuICogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGBTb3VyY2VTcGFuYCBvYmplY3RzOlxuICpcbiAqIC0gYENvbmNyZXRlU291cmNlU3BhbmAsIHdoaWNoIGNvbnRhaW5zIGJ5dGUgb2Zmc2V0c1xuICogLSBgTGF6eVNvdXJjZVNwYW5gLCB3aGljaCBjb250YWlucyBgU291cmNlTG9jYXRpb25gcyBmcm9tIHRoZSBIYW5kbGViYXJzIEFTVCwgd2hpY2ggY2FuIGJlXG4gKiAgIGNvbnZlcnRlZCB0byBieXRlIG9mZnNldHMgb24gZGVtYW5kLlxuICogLSBgSW52aXNpYmxlU291cmNlU3BhbmAsIHdoaWNoIHJlcHJlc2VudCBzb3VyY2Ugc3RyaW5ncyB0aGF0IGFyZW4ndCBwcmVzZW50IGluIHRoZSBzb3VyY2UsXG4gKiAgIGJlY2F1c2U6XG4gKiAgICAgLSB0aGV5IHdlcmUgY3JlYXRlZCBzeW50aGV0aWNhbGx5XG4gKiAgICAgLSB0aGVpciBsb2NhdGlvbiBpcyBub25zZW5zaWNhbCAodGhlIHNwYW4gaXMgYnJva2VuKVxuICogICAgIC0gdGhleSByZXByZXNlbnQgbm90aGluZyBpbiB0aGUgc291cmNlICh0aGlzIGN1cnJlbnRseSBoYXBwZW5zIG9ubHkgd2hlbiBhIGJ1ZyBpbiB0aGVcbiAqICAgICAgIHVwc3RyZWFtIEhhbmRsZWJhcnMgcGFyc2VyIGZhaWxzIHRvIGFzc2lnbiBhIGxvY2F0aW9uIHRvIGVtcHR5IGJsb2NrcylcbiAqXG4gKiBBdCBhIGhpZ2ggbGV2ZWwsIGFsbCBgU291cmNlU3BhbmAgb2JqZWN0cyBwcm92aWRlOlxuICpcbiAqIC0gYnl0ZSBvZmZzZXRzXG4gKiAtIHNvdXJjZSBpbiBjb2x1bW4gYW5kIGxpbmUgZm9ybWF0XG4gKlxuICogQW5kIHlvdSBjYW4gZG8gdGhlc2Ugb3BlcmF0aW9ucyBvbiBgU291cmNlU3BhbmBzOlxuICpcbiAqIC0gY29sbGFwc2UgaXQgdG8gYSBgU291cmNlU3BhbmAgcmVwcmVzZW50aW5nIGl0cyBzdGFydGluZyBvciBlbmRpbmcgcG9zaXRpb25cbiAqIC0gc2xpY2Ugb3V0IHNvbWUgY2hhcmFjdGVycywgb3B0aW9uYWxseSBza2lwcGluZyBzb21lIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvciBlbmRcbiAqIC0gY3JlYXRlIGEgbmV3IGBTb3VyY2VTcGFuYCB3aXRoIGEgZGlmZmVyZW50IHN0YXJ0aW5nIG9yIGVuZGluZyBvZmZzZXRcbiAqXG4gKiBBbGwgU291cmNlU3BhbiBvYmplY3RzIGltcGxlbWVudCBgU291cmNlTG9jYXRpb25gLCBmb3IgY29tcGF0aWJpbGl0eS4gQWxsIFNvdXJjZVNwYW5cbiAqIG9iamVjdHMgaGF2ZSBhIGB0b0pTT05gIHRoYXQgZW1pdHMgYFNvdXJjZUxvY2F0aW9uYCwgYWxzbyBmb3IgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSwgc3ViY2xhc3NlcyBvZiBgQWJzdHJhY3RTb3VyY2VTcGFuYCBtdXN0IGltcGxlbWVudCBgbG9jRGlkVXBkYXRlYCwgd2hpY2hcbiAqIGhhcHBlbnMgd2hlbiBhbiBBU1QgcGx1Z2luIGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgYHN0YXJ0YCBvciBgZW5kYCBvZiBhIHNwYW4gZGlyZWN0bHkuXG4gKlxuICogVGhlIGdvYWwgaXMgdG8gYXZvaWQgY3JlYXRpbmcgYW55IHByb2JsZW1zIGZvciB1c2UtY2FzZXMgbGlrZSBBU1QgRXhwbG9yZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2VTcGFuIGltcGxlbWVudHMgU291cmNlTG9jYXRpb24ge1xuICBzdGF0aWMgZ2V0IE5PTl9FWElTVEVOVCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ob25FeGlzdGVudCwgTk9OX0VYSVNURU5UX0xPQ0FUSU9OKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgbG9hZChzb3VyY2U6IFNvdXJjZSwgc2VyaWFsaXplZDogU2VyaWFsaXplZFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgc2VyaWFsaXplZCwgc2VyaWFsaXplZCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLnN5bnRoZXRpYyhzZXJpYWxpemVkKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc2VyaWFsaXplZCkpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCBzZXJpYWxpemVkWzBdLCBzZXJpYWxpemVkWzFdKTtcbiAgICB9IGVsc2UgaWYgKHNlcmlhbGl6ZWQgPT09IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLk5PTl9FWElTVEVOVDtcbiAgICB9IGVsc2UgaWYgKHNlcmlhbGl6ZWQgPT09IE9mZnNldEtpbmQuQnJva2VuKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5icm9rZW4oQlJPS0VOX0xPQ0FUSU9OKTtcbiAgICB9XG5cbiAgICBhc3NlcnROZXZlcihzZXJpYWxpemVkKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JIYnNMb2Moc291cmNlOiBTb3VyY2UsIGxvYzogU291cmNlTG9jYXRpb24pOiBTb3VyY2VTcGFuIHtcbiAgICBsZXQgc3RhcnQgPSBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBsb2Muc3RhcnQpO1xuICAgIGxldCBlbmQgPSBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBsb2MuZW5kKTtcbiAgICByZXR1cm4gbmV3IEhic1NwYW4oc291cmNlLCB7IHN0YXJ0LCBlbmQgfSwgbG9jKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2U6IFNvdXJjZSwgc3RhcnRQb3M6IG51bWJlciwgZW5kUG9zOiBudW1iZXIpOiBTb3VyY2VTcGFuIHtcbiAgICBsZXQgc3RhcnQgPSBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgc3RhcnRQb3MpO1xuICAgIGxldCBlbmQgPSBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgZW5kUG9zKTtcblxuICAgIHJldHVybiBuZXcgQ2hhclBvc2l0aW9uU3Bhbihzb3VyY2UsIHsgc3RhcnQsIGVuZCB9KS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgc3ludGhldGljKGNoYXJzOiBzdHJpbmcpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWMsIE5PTl9FWElTVEVOVF9MT0NBVElPTiwgY2hhcnMpLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBicm9rZW4ocG9zOiBTb3VyY2VMb2NhdGlvbiA9IEJST0tFTl9MT0NBVElPTik6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgcG9zKS53cmFwKCk7XG4gIH1cblxuICByZWFkb25seSBpc0ludmlzaWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IFNwYW5EYXRhICYgQW55U3Bhbikge1xuICAgIHRoaXMuaXNJbnZpc2libGUgPVxuICAgICAgZGF0YS5raW5kICE9PSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiAmJiBkYXRhLmtpbmQgIT09IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG4gIH1cblxuICBnZXRTdGFydCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0U3RhcnQoKS53cmFwKCk7XG4gIH1cblxuICBnZXRFbmQoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldEVuZCgpLndyYXAoKTtcbiAgfVxuXG4gIGdldCBsb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIGxldCBzcGFuID0gdGhpcy5kYXRhLnRvSGJzU3BhbigpO1xuICAgIHJldHVybiBzcGFuID09PSBudWxsID8gQlJPS0VOX0xPQ0FUSU9OIDogc3Bhbi50b0hic0xvYygpO1xuICB9XG5cbiAgZ2V0IG1vZHVsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0TW9kdWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFydGluZyBgU291cmNlUG9zaXRpb25gIGZvciB0aGlzIGBTb3VyY2VTcGFuYCwgbGF6aWx5IGNvbXB1dGluZyBpdCBpZiBuZWVkZWQuXG4gICAqL1xuICBnZXQgc3RhcnRQb3NpdGlvbigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLnN0YXJ0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZW5kaW5nIGBTb3VyY2VQb3NpdGlvbmAgZm9yIHRoaXMgYFNvdXJjZVNwYW5gLCBsYXppbHkgY29tcHV0aW5nIGl0IGlmIG5lZWRlZC5cbiAgICovXG4gIGdldCBlbmRQb3NpdGlvbigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLmVuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdXBwb3J0IGNvbnZlcnRpbmcgQVNUdjEgbm9kZXMgaW50byBhIHNlcmlhbGl6ZWQgZm9ybWF0IHVzaW5nIEpTT04uc3RyaW5naWZ5LlxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2M7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHNwYW4gd2l0aCB0aGUgY3VycmVudCBzcGFuJ3MgZW5kIGFuZCBhIG5ldyBiZWdpbm5pbmcuXG4gICAqL1xuICB3aXRoU3RhcnQob3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKG90aGVyLmRhdGEsIHRoaXMuZGF0YS5nZXRFbmQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHNwYW4gd2l0aCB0aGUgY3VycmVudCBzcGFuJ3MgYmVnaW5uaW5nIGFuZCBhIG5ldyBlbmRpbmcuXG4gICAqL1xuICB3aXRoRW5kKHRoaXM6IFNvdXJjZVNwYW4sIG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEuZ2V0U3RhcnQoKSwgb3RoZXIuZGF0YSk7XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGEuYXNTdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgYFNvdXJjZVNwYW5gIGludG8gYSBgU291cmNlU2xpY2VgLiBJbiBkZWJ1ZyBtb2RlLCB0aGlzIG1ldGhvZCBvcHRpb25hbGx5IGNoZWNrc1xuICAgKiB0aGF0IHRoZSBieXRlIG9mZnNldHMgcmVwcmVzZW50ZWQgYnkgdGhpcyBgU291cmNlU3BhbmAgYWN0dWFsbHkgY29ycmVzcG9uZCB0byB0aGUgZXhwZWN0ZWRcbiAgICogc3RyaW5nLlxuICAgKi9cbiAgdG9TbGljZShleHBlY3RlZD86IHN0cmluZyk6IFNvdXJjZVNsaWNlIHtcbiAgICBsZXQgY2hhcnMgPSB0aGlzLmRhdGEuYXNTdHJpbmcoKTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgaWYgKGV4cGVjdGVkICE9PSB1bmRlZmluZWQgJiYgY2hhcnMgIT09IGV4cGVjdGVkKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgdW5leHBlY3RlZGx5IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBjaGFyc1xuICAgICAgICAgICl9IHdoZW4gc2xpY2luZyBzb3VyY2UsIGJ1dCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KGV4cGVjdGVkKX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTbGljZSh7XG4gICAgICBsb2M6IHRoaXMsXG4gICAgICBjaGFyczogZXhwZWN0ZWQgfHwgY2hhcnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugc3RhcnRQb3NpdGlvbiBpbnN0ZWFkXG4gICAqL1xuICBnZXQgc3RhcnQoKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5zdGFydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aXRoU3RhcnQgaW5zdGVhZFxuICAgKi9cbiAgc2V0IHN0YXJ0KHBvc2l0aW9uOiBTb3VyY2VQb3NpdGlvbikge1xuICAgIHRoaXMuZGF0YS5sb2NEaWRVcGRhdGUoeyBzdGFydDogcG9zaXRpb24gfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZW5kUG9zaXRpb24gaW5zdGVhZFxuICAgKi9cbiAgZ2V0IGVuZCgpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLmVuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aXRoRW5kIGluc3RlYWRcbiAgICovXG4gIHNldCBlbmQocG9zaXRpb246IFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgdGhpcy5kYXRhLmxvY0RpZFVwZGF0ZSh7IGVuZDogcG9zaXRpb24gfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbW9kdWxlIGluc3RlYWRcbiAgICovXG4gIGdldCBzb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGU7XG4gIH1cblxuICBjb2xsYXBzZSh3aGVyZTogJ3N0YXJ0JyB8ICdlbmQnKTogU291cmNlU3BhbiB7XG4gICAgc3dpdGNoICh3aGVyZSkge1xuICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFydCgpLmNvbGxhcHNlZCgpO1xuICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW5kKCkuY29sbGFwc2VkKCk7XG4gICAgfVxuICB9XG5cbiAgZXh0ZW5kKG90aGVyOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLmdldFN0YXJ0KCksIG90aGVyLmRhdGEuZ2V0RW5kKCkpO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgc2xpY2UoeyBza2lwU3RhcnQgPSAwLCBza2lwRW5kID0gMCB9OiB7IHNraXBTdGFydD86IG51bWJlcjsgc2tpcEVuZD86IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0KS5kYXRhLCB0aGlzLmdldEVuZCgpLm1vdmUoLXNraXBFbmQpLmRhdGEpO1xuICB9XG5cbiAgc2xpY2VTdGFydENoYXJzKHsgc2tpcFN0YXJ0ID0gMCwgY2hhcnMgfTogeyBza2lwU3RhcnQ/OiBudW1iZXI7IGNoYXJzOiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCkuZGF0YSwgdGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0ICsgY2hhcnMpLmRhdGEpO1xuICB9XG5cbiAgc2xpY2VFbmRDaGFycyh7IHNraXBFbmQgPSAwLCBjaGFycyB9OiB7IHNraXBFbmQ/OiBudW1iZXI7IGNoYXJzOiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0RW5kKCkubW92ZShza2lwRW5kIC0gY2hhcnMpLmRhdGEsIHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKC1za2lwRW5kKS5kYXRhKTtcbiAgfVxufVxuXG50eXBlIEFueVNwYW4gPSBIYnNTcGFuIHwgQ2hhclBvc2l0aW9uU3BhbiB8IEludmlzaWJsZVNwYW47XG5cbmNsYXNzIENoYXJQb3NpdGlvblNwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbjtcblxuICAjbG9jUG9zU3BhbjogSGJzU3BhbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHNvdXJjZTogU291cmNlLFxuICAgIHJlYWRvbmx5IGNoYXJQb3NpdGlvbnM6IHsgc3RhcnQ6IENoYXJQb3NpdGlvbjsgZW5kOiBDaGFyUG9zaXRpb24gfVxuICApIHt9XG5cbiAgd3JhcCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZVNwYW4odGhpcyk7XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5zbGljZSh0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQuY2hhclBvcywgdGhpcy5jaGFyUG9zaXRpb25zLmVuZC5jaGFyUG9zKTtcbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5tb2R1bGU7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydDtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvc2l0aW9ucy5lbmQ7XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoKSB7XG4gICAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgdXBkYXRpbmcgYSBsb2NhdGlvbiB0aGF0IGNhbWUgZnJvbSBhIENoYXJQb3NpdGlvbiBzcGFuIGRvZXNuJ3Qgd29yayByZWxpYWJseS4gRG9uJ3QgdHJ5IHRvIHVwZGF0ZSBsb2NhdGlvbnMgYWZ0ZXIgdGhlIHBsdWdpbiBwaGFzZWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4gfCBudWxsIHtcbiAgICBsZXQgbG9jUG9zU3BhbiA9IHRoaXMuI2xvY1Bvc1NwYW47XG5cbiAgICBpZiAobG9jUG9zU3BhbiA9PT0gbnVsbCkge1xuICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0LnRvSGJzUG9zKCk7XG4gICAgICBsZXQgZW5kID0gdGhpcy5jaGFyUG9zaXRpb25zLmVuZC50b0hic1BvcygpO1xuXG4gICAgICBpZiAoc3RhcnQgPT09IG51bGwgfHwgZW5kID09PSBudWxsKSB7XG4gICAgICAgIGxvY1Bvc1NwYW4gPSB0aGlzLiNsb2NQb3NTcGFuID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jUG9zU3BhbiA9IHRoaXMuI2xvY1Bvc1NwYW4gPSBuZXcgSGJzU3Bhbih0aGlzLnNvdXJjZSwge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY1Bvc1NwYW4gPT09IEJST0tFTiA/IG51bGwgOiBsb2NQb3NTcGFuO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuIHtcbiAgICBsZXQge1xuICAgICAgc3RhcnQ6IHsgY2hhclBvczogc3RhcnQgfSxcbiAgICAgIGVuZDogeyBjaGFyUG9zOiBlbmQgfSxcbiAgICB9ID0gdGhpcy5jaGFyUG9zaXRpb25zO1xuXG4gICAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICAgIHJldHVybiBzdGFydDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtzdGFydCwgZW5kXTtcbiAgICB9XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IENoYXJQb3NpdGlvblNwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIYnNTcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcblxuICAjY2hhclBvc1NwYW46IENoYXJQb3NpdGlvblNwYW4gfCBCUk9LRU4gfCBudWxsID0gbnVsbDtcblxuICAvLyB0aGUgc291cmNlIGxvY2F0aW9uIGZyb20gSGFuZGxlYmFycyArIEFTVCBQbHVnaW5zIC0tIGNvdWxkIGJlIHdyb25nXG4gICNwcm92aWRlZEhic0xvYzogU291cmNlTG9jYXRpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHNvdXJjZTogU291cmNlLFxuICAgIHJlYWRvbmx5IGhic1Bvc2l0aW9uczogeyBzdGFydDogSGJzUG9zaXRpb247IGVuZDogSGJzUG9zaXRpb24gfSxcbiAgICBwcm92aWRlZEhic0xvYzogU291cmNlTG9jYXRpb24gfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLiNwcm92aWRlZEhic0xvYyA9IHByb3ZpZGVkSGJzTG9jO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4ge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy50b0NoYXJQb3NTcGFuKCk7XG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IG51bGwgPyBPZmZzZXRLaW5kLkJyb2tlbiA6IGNoYXJQb3Mud3JhcCgpLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZVNwYW4odGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVByb3ZpZGVkKHBvczogU291cmNlUG9zaXRpb24sIGVkZ2U6ICdzdGFydCcgfCAnZW5kJykge1xuICAgIGlmICh0aGlzLiNwcm92aWRlZEhic0xvYykge1xuICAgICAgdGhpcy4jcHJvdmlkZWRIYnNMb2NbZWRnZV0gPSBwb3M7XG4gICAgfVxuXG4gICAgLy8gaW52YWxpZGF0ZSBjb21wdXRlZCBjaGFyYWN0ZXIgb2Zmc2V0c1xuICAgIHRoaXMuI2NoYXJQb3NTcGFuID0gbnVsbDtcbiAgICB0aGlzLiNwcm92aWRlZEhic0xvYyA9IHtcbiAgICAgIHN0YXJ0OiBwb3MsXG4gICAgICBlbmQ6IHBvcyxcbiAgICB9O1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKHsgc3RhcnQsIGVuZCB9OiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pOiB2b2lkIHtcbiAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVQcm92aWRlZChzdGFydCwgJ3N0YXJ0Jyk7XG4gICAgICB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydCA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgc3RhcnQsIG51bGwpO1xuICAgIH1cblxuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVQcm92aWRlZChlbmQsICdlbmQnKTtcbiAgICAgIHRoaXMuaGJzUG9zaXRpb25zLmVuZCA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgZW5kLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBzcGFuID0gdGhpcy50b0NoYXJQb3NTcGFuKCk7XG4gICAgcmV0dXJuIHNwYW4gPT09IG51bGwgPyAnJyA6IHNwYW4uYXNTdHJpbmcoKTtcbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5tb2R1bGU7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0O1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3NpdGlvbnMuZW5kO1xuICB9XG5cbiAgdG9IYnNMb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQuaGJzUG9zLFxuICAgICAgZW5kOiB0aGlzLmhic1Bvc2l0aW9ucy5lbmQuaGJzUG9zLFxuICAgIH07XG4gIH1cblxuICB0b0hic1NwYW4oKTogSGJzU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IENoYXJQb3NpdGlvblNwYW4gfCBudWxsIHtcbiAgICBsZXQgY2hhclBvc1NwYW4gPSB0aGlzLiNjaGFyUG9zU3BhbjtcblxuICAgIGlmIChjaGFyUG9zU3BhbiA9PT0gbnVsbCkge1xuICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQudG9DaGFyUG9zKCk7XG4gICAgICBsZXQgZW5kID0gdGhpcy5oYnNQb3NpdGlvbnMuZW5kLnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgIGNoYXJQb3NTcGFuID0gdGhpcy4jY2hhclBvc1NwYW4gPSBuZXcgQ2hhclBvc2l0aW9uU3Bhbih0aGlzLnNvdXJjZSwge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFyUG9zU3BhbiA9IHRoaXMuI2NoYXJQb3NTcGFuID0gQlJPS0VOO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhclBvc1NwYW4gPT09IEJST0tFTiA/IG51bGwgOiBjaGFyUG9zU3BhbjtcbiAgfVxufVxuXG5jbGFzcyBJbnZpc2libGVTcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kLkJyb2tlbiB8IE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudCxcbiAgICAvLyB3aGF0ZXZlciB3YXMgcHJvdmlkZWQsIHBvc3NpYmx5IGJyb2tlblxuICAgIHJlYWRvbmx5IGxvYzogU291cmNlTG9jYXRpb24sXG4gICAgLy8gaWYgdGhlIHNwYW4gcmVwcmVzZW50cyBhIHN5bnRoZXRpYyBzdHJpbmdcbiAgICByZWFkb25seSBzdHJpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge31cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiB7XG4gICAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5Ccm9rZW46XG4gICAgICBjYXNlIE9mZnNldEtpbmQuTm9uRXhpc3RlbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmtpbmQ7XG4gICAgICBjYXNlIE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljOlxuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZVNwYW4odGhpcyk7XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZyB8fCAnJztcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSh7IHN0YXJ0LCBlbmQgfTogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KSB7XG4gICAgaWYgKHN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9jLnN0YXJ0ID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvYy5lbmQgPSBlbmQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIHJlZmxlY3QgdGhlIGFjdHVhbCBtb2R1bGUgdGhpcyBzcGFuIG9yaWdpbmF0ZWQgZnJvbVxuICAgIHJldHVybiAnYW4gdW5rbm93biBtb2R1bGUnO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24odGhpcy5raW5kLCB0aGlzLmxvYy5zdGFydCk7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24odGhpcy5raW5kLCB0aGlzLmxvYy5lbmQpO1xuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBJbnZpc2libGVTcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRvSGJzTG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4gQlJPS0VOX0xPQ0FUSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzcGFuOiBNYXRjaEZuPFNvdXJjZVNwYW4+ID0gbWF0Y2goKG0pID0+XG4gIG1cbiAgICAud2hlbihPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+XG4gICAgICBuZXcgSGJzU3BhbihsZWZ0LnNvdXJjZSwge1xuICAgICAgICBzdGFydDogbGVmdCxcbiAgICAgICAgZW5kOiByaWdodCxcbiAgICAgIH0pLndyYXAoKVxuICAgIClcbiAgICAud2hlbihPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT5cbiAgICAgIG5ldyBDaGFyUG9zaXRpb25TcGFuKGxlZnQuc291cmNlLCB7XG4gICAgICAgIHN0YXJ0OiBsZWZ0LFxuICAgICAgICBlbmQ6IHJpZ2h0LFxuICAgICAgfSkud3JhcCgpXG4gICAgKVxuICAgIC53aGVuKE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgIGxldCByaWdodENoYXJQb3MgPSByaWdodC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKHJpZ2h0Q2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIEJST0tFTl9MT0NBVElPTikud3JhcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwYW4obGVmdCwgcmlnaHRDaGFyUG9zKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC53aGVuKE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgIGxldCBsZWZ0Q2hhclBvcyA9IGxlZnQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChsZWZ0Q2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIEJST0tFTl9MT0NBVElPTikud3JhcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwYW4obGVmdENoYXJQb3MsIHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC53aGVuKElzSW52aXNpYmxlLCBNYXRjaEFueSwgKGxlZnQpID0+IG5ldyBJbnZpc2libGVTcGFuKGxlZnQua2luZCwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCkpXG4gICAgLndoZW4oTWF0Y2hBbnksIElzSW52aXNpYmxlLCAoXywgcmlnaHQpID0+XG4gICAgICBuZXcgSW52aXNpYmxlU3BhbihyaWdodC5raW5kLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKVxuICAgIClcbik7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4gPVxuICB8IC8qKiBjb2xsYXBzZWQgKi8gbnVtYmVyXG4gIHwgLyoqIG5vcm1hbCAqLyBbc3RhcnQ6IG51bWJlciwgc2l6ZTogbnVtYmVyXVxuICB8IC8qKiBzeW50aGV0aWMgKi8gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkU291cmNlU3BhbiA9XG4gIHwgU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhblxuICB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnRcbiAgfCBPZmZzZXRLaW5kLkJyb2tlbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFFQTs7QUFDQTs7QUFkQTs7QUF1RUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ00sTUFBQSxVQUFBLENBQWlCO0FBNENyQixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQTRDO0FBQXhCLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFDbEIsU0FBQSxXQUFBLEdBQ0UsSUFBSSxDQUFKLElBQUEsS0FBUztBQUFBO0FBQVQsT0FBeUMsSUFBSSxDQUFKLElBQUEsS0FBUztBQUFBO0FBRHBEO0FBRUQ7O0FBOUNELGFBQUEsWUFBQSxHQUF1QjtBQUNyQixXQUFPLElBQUEsYUFBQSxDQUFpQjtBQUFBO0FBQWpCLE1BQUEsK0JBQUEsRUFBUCxJQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFBLElBQUEsQ0FBQSxNQUFBLEVBQUEsVUFBQSxFQUE0RDtBQUMxRCxRQUFJLE9BQUEsVUFBQSxLQUFKLFFBQUEsRUFBb0M7QUFDbEMsYUFBTyxVQUFVLENBQVYsZ0JBQUEsQ0FBQSxNQUFBLEVBQUEsVUFBQSxFQUFQLFVBQU8sQ0FBUDtBQURGLEtBQUEsTUFFTyxJQUFJLE9BQUEsVUFBQSxLQUFKLFFBQUEsRUFBb0M7QUFDekMsYUFBTyxVQUFVLENBQVYsU0FBQSxDQUFQLFVBQU8sQ0FBUDtBQURLLEtBQUEsTUFFQSxJQUFJLEtBQUssQ0FBTCxPQUFBLENBQUosVUFBSSxDQUFKLEVBQStCO0FBQ3BDLGFBQU8sVUFBVSxDQUFWLGdCQUFBLENBQUEsTUFBQSxFQUFvQyxVQUFVLENBQTlDLENBQThDLENBQTlDLEVBQW1ELFVBQVUsQ0FBcEUsQ0FBb0UsQ0FBN0QsQ0FBUDtBQURLLEtBQUEsTUFFQSxJQUFJLFVBQVUsS0FBQTtBQUFBO0FBQWQsTUFBMkM7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RUErQmdDLElBQUQsSUFBVSxJQUFBLGFBQUEsQ0FBa0IsSUFBSSxDQUF0QixJQUFBLEVBQUEseUJBQUEsRUEvQnpDLElBK0J5QyxFQS9CekMsRUFBQSxJQUFBLENBQUEsZUFBQSxFQUFBLGtCQUFBLEVBZ0MrQixDQUFBLENBQUEsRUFBQSxLQUFBLEtBQzNCLElBQUEsYUFBQSxDQUFrQixLQUFLLENBQXZCLElBQUEsRUFBQSx5QkFBQSxFQWxDQyxJQWtDRCxFQWpDSixDQUR1QyxDQUFsQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHtcbiAgQlJPS0VOX0xPQ0FUSU9OLFxuICBOT05fRVhJU1RFTlRfTE9DQVRJT04sXG4gIFNvdXJjZUxvY2F0aW9uLFxuICBTb3VyY2VQb3NpdGlvbixcbn0gZnJvbSAnLi4vbG9jYXRpb24nO1xuaW1wb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuLi9zbGljZSc7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2UnO1xuaW1wb3J0IHsgSXNJbnZpc2libGUsIG1hdGNoLCBNYXRjaEFueSwgTWF0Y2hGbiB9IGZyb20gJy4vbWF0Y2gnO1xuaW1wb3J0IHtcbiAgQW55UG9zaXRpb24sXG4gIEJST0tFTixcbiAgQ2hhclBvc2l0aW9uLFxuICBIYnNQb3NpdGlvbixcbiAgSW52aXNpYmxlUG9zaXRpb24sXG4gIE9mZnNldEtpbmQsXG4gIFNvdXJjZU9mZnNldCxcbn0gZnJvbSAnLi9vZmZzZXQnO1xuXG4vKipcbiAqIEFsbCBzcGFucyBoYXZlIHRoZXNlIGRldGFpbHMgaW4gY29tbW9uLlxuICovXG5pbnRlcmZhY2UgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgc3BhbiBpbnRvIGEgc3RyaW5nLiBJZiB0aGUgc3BhbiBpcyBicm9rZW4sIHJldHVybiBgJydgLlxuICAgKi9cbiAgYXNTdHJpbmcoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtb2R1bGUgdGhlIHNwYW4gd2FzIGxvY2F0ZWQgaW4uXG4gICAqL1xuICBnZXRNb2R1bGUoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGlzIHNwYW4uIFRyeSB0byBhdm9pZCBjcmVhdGluZyBuZXcgcG9zaXRpb24gb2JqZWN0cywgYXMgdGhleVxuICAgKiBjYWNoZSBjb21wdXRhdGlvbnMuXG4gICAqL1xuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbjtcblxuICAvKipcbiAgICogR2V0IHRoZSBlbmRpbmcgcG9zaXRpb24gZm9yIHRoaXMgc3Bhbi4gVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBwb3NpdGlvbiBvYmplY3RzLCBhcyB0aGV5XG4gICAqIGNhY2hlIGNvbXB1dGF0aW9ucy5cbiAgICovXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbjtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgYFNvdXJjZUxvY2F0aW9uYCBmb3IgdGhpcyBzcGFuLCByZXR1cm5lZCBhcyBhbiBpbnN0YW5jZSBvZiBgSGJzU3BhbmAuXG4gICAqL1xuICB0b0hic1NwYW4oKTogSGJzU3BhbiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5LCB3aGVuZXZlciB0aGUgYHN0YXJ0YCBvciBgZW5kYCBvZiBhIHtAc2VlIFNvdXJjZU9mZnNldH0gY2hhbmdlcywgc3BhbnMgYXJlXG4gICAqIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2Ugc28gdGhleSBjYW4gdXBkYXRlIHRoZW1zZWx2ZXMuIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBvdXRzaWRlIG9mIEFTVFxuICAgKiBwbHVnaW5zLlxuICAgKi9cbiAgbG9jRGlkVXBkYXRlKGNoYW5nZXM6IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBpbnRvIGEge0BzZWUgU2VyaWFsaXplZFNvdXJjZVNwYW59LCB3aGljaCBpcyBjb21wYWN0IGFuZCBkZXNpZ25lZCBmb3IgcmVhZGFiaWxpdHkgaW5cbiAgICogY29udGV4dCBsaWtlIEFTVCBFeHBsb3Jlci4gSWYgeW91IG5lZWQgYSB7QHNlZSBTb3VyY2VMb2NhdGlvbn0sIHVzZSB7QHNlZSB0b0pTT059LlxuICAgKi9cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIEEgYFNvdXJjZVNwYW5gIG9iamVjdCByZXByZXNlbnRzIGEgc3BhbiBvZiBjaGFyYWN0ZXJzIGluc2lkZSBvZiBhIHRlbXBsYXRlIHNvdXJjZS5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgYFNvdXJjZVNwYW5gIG9iamVjdHM6XG4gKlxuICogLSBgQ29uY3JldGVTb3VyY2VTcGFuYCwgd2hpY2ggY29udGFpbnMgYnl0ZSBvZmZzZXRzXG4gKiAtIGBMYXp5U291cmNlU3BhbmAsIHdoaWNoIGNvbnRhaW5zIGBTb3VyY2VMb2NhdGlvbmBzIGZyb20gdGhlIEhhbmRsZWJhcnMgQVNULCB3aGljaCBjYW4gYmVcbiAqICAgY29udmVydGVkIHRvIGJ5dGUgb2Zmc2V0cyBvbiBkZW1hbmQuXG4gKiAtIGBJbnZpc2libGVTb3VyY2VTcGFuYCwgd2hpY2ggcmVwcmVzZW50IHNvdXJjZSBzdHJpbmdzIHRoYXQgYXJlbid0IHByZXNlbnQgaW4gdGhlIHNvdXJjZSxcbiAqICAgYmVjYXVzZTpcbiAqICAgICAtIHRoZXkgd2VyZSBjcmVhdGVkIHN5bnRoZXRpY2FsbHlcbiAqICAgICAtIHRoZWlyIGxvY2F0aW9uIGlzIG5vbnNlbnNpY2FsICh0aGUgc3BhbiBpcyBicm9rZW4pXG4gKiAgICAgLSB0aGV5IHJlcHJlc2VudCBub3RoaW5nIGluIHRoZSBzb3VyY2UgKHRoaXMgY3VycmVudGx5IGhhcHBlbnMgb25seSB3aGVuIGEgYnVnIGluIHRoZVxuICogICAgICAgdXBzdHJlYW0gSGFuZGxlYmFycyBwYXJzZXIgZmFpbHMgdG8gYXNzaWduIGEgbG9jYXRpb24gdG8gZW1wdHkgYmxvY2tzKVxuICpcbiAqIEF0IGEgaGlnaCBsZXZlbCwgYWxsIGBTb3VyY2VTcGFuYCBvYmplY3RzIHByb3ZpZGU6XG4gKlxuICogLSBieXRlIG9mZnNldHNcbiAqIC0gc291cmNlIGluIGNvbHVtbiBhbmQgbGluZSBmb3JtYXRcbiAqXG4gKiBBbmQgeW91IGNhbiBkbyB0aGVzZSBvcGVyYXRpb25zIG9uIGBTb3VyY2VTcGFuYHM6XG4gKlxuICogLSBjb2xsYXBzZSBpdCB0byBhIGBTb3VyY2VTcGFuYCByZXByZXNlbnRpbmcgaXRzIHN0YXJ0aW5nIG9yIGVuZGluZyBwb3NpdGlvblxuICogLSBzbGljZSBvdXQgc29tZSBjaGFyYWN0ZXJzLCBvcHRpb25hbGx5IHNraXBwaW5nIHNvbWUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogLSBjcmVhdGUgYSBuZXcgYFNvdXJjZVNwYW5gIHdpdGggYSBkaWZmZXJlbnQgc3RhcnRpbmcgb3IgZW5kaW5nIG9mZnNldFxuICpcbiAqIEFsbCBTb3VyY2VTcGFuIG9iamVjdHMgaW1wbGVtZW50IGBTb3VyY2VMb2NhdGlvbmAsIGZvciBjb21wYXRpYmlsaXR5LiBBbGwgU291cmNlU3BhblxuICogb2JqZWN0cyBoYXZlIGEgYHRvSlNPTmAgdGhhdCBlbWl0cyBgU291cmNlTG9jYXRpb25gLCBhbHNvIGZvciBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEZvciBjb21wYXRpYmlsaXR5LCBzdWJjbGFzc2VzIG9mIGBBYnN0cmFjdFNvdXJjZVNwYW5gIG11c3QgaW1wbGVtZW50IGBsb2NEaWRVcGRhdGVgLCB3aGljaFxuICogaGFwcGVucyB3aGVuIGFuIEFTVCBwbHVnaW4gYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBgc3RhcnRgIG9yIGBlbmRgIG9mIGEgc3BhbiBkaXJlY3RseS5cbiAqXG4gKiBUaGUgZ29hbCBpcyB0byBhdm9pZCBjcmVhdGluZyBhbnkgcHJvYmxlbXMgZm9yIHVzZS1jYXNlcyBsaWtlIEFTVCBFeHBsb3Jlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZVNwYW4gaW1wbGVtZW50cyBTb3VyY2VMb2NhdGlvbiB7XG4gIHN0YXRpYyBnZXQgTk9OX0VYSVNURU5UKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LCBOT05fRVhJU1RFTlRfTE9DQVRJT04pLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBsb2FkKHNvdXJjZTogU291cmNlLCBzZXJpYWxpemVkOiBTZXJpYWxpemVkU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCBzZXJpYWxpemVkLCBzZXJpYWxpemVkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uc3ludGhldGljKHNlcmlhbGl6ZWQpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzZXJpYWxpemVkKSkge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIHNlcmlhbGl6ZWRbMF0sIHNlcmlhbGl6ZWRbMV0pO1xuICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplZCA9PT0gT2Zmc2V0S2luZC5Ob25FeGlzdGVudCkge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uTk9OX0VYSVNURU5UO1xuICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplZCA9PT0gT2Zmc2V0S2luZC5Ccm9rZW4pIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmJyb2tlbihCUk9LRU5fTE9DQVRJT04pO1xuICAgIH1cblxuICAgIGFzc2VydE5ldmVyKHNlcmlhbGl6ZWQpO1xuICB9XG5cbiAgc3RhdGljIGZvckhic0xvYyhzb3VyY2U6IFNvdXJjZSwgbG9jOiBTb3VyY2VMb2NhdGlvbik6IFNvdXJjZVNwYW4ge1xuICAgIGxldCBzdGFydCA9IG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIGxvYy5zdGFydCk7XG4gICAgbGV0IGVuZCA9IG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIGxvYy5lbmQpO1xuICAgIHJldHVybiBuZXcgSGJzU3Bhbihzb3VyY2UsIHsgc3RhcnQsIGVuZCB9LCBsb2MpLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGFyUG9zaXRpb25zKHNvdXJjZTogU291cmNlLCBzdGFydFBvczogbnVtYmVyLCBlbmRQb3M6IG51bWJlcik6IFNvdXJjZVNwYW4ge1xuICAgIGxldCBzdGFydCA9IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBzdGFydFBvcyk7XG4gICAgbGV0IGVuZCA9IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBlbmRQb3MpO1xuXG4gICAgcmV0dXJuIG5ldyBDaGFyUG9zaXRpb25TcGFuKHNvdXJjZSwgeyBzdGFydCwgZW5kIH0pLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBzeW50aGV0aWMoY2hhcnM6IHN0cmluZyk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYywgTk9OX0VYSVNURU5UX0xPQ0FUSU9OLCBjaGFycykud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZUxvY2F0aW9uID0gQlJPS0VOX0xPQ0FUSU9OKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBwb3MpLndyYXAoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzSW52aXNpYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogU3BhbkRhdGEgJiBBbnlTcGFuKSB7XG4gICAgdGhpcy5pc0ludmlzaWJsZSA9XG4gICAgICBkYXRhLmtpbmQgIT09IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uICYmIGRhdGEua2luZCAhPT0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRTdGFydCgpLndyYXAoKTtcbiAgfVxuXG4gIGdldEVuZCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0RW5kKCkud3JhcCgpO1xuICB9XG5cbiAgZ2V0IGxvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgbGV0IHNwYW4gPSB0aGlzLmRhdGEudG9IYnNTcGFuKCk7XG4gICAgcmV0dXJuIHNwYW4gPT09IG51bGwgPyBCUk9LRU5fTE9DQVRJT04gOiBzcGFuLnRvSGJzTG9jKCk7XG4gIH1cblxuICBnZXQgbW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRNb2R1bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXJ0aW5nIGBTb3VyY2VQb3NpdGlvbmAgZm9yIHRoaXMgYFNvdXJjZVNwYW5gLCBsYXppbHkgY29tcHV0aW5nIGl0IGlmIG5lZWRlZC5cbiAgICovXG4gIGdldCBzdGFydFBvc2l0aW9uKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2Muc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbmRpbmcgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhpcyBgU291cmNlU3BhbmAsIGxhemlseSBjb21wdXRpbmcgaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IGVuZFBvc2l0aW9uKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2MuZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1cHBvcnQgY29udmVydGluZyBBU1R2MSBub2RlcyBpbnRvIGEgc2VyaWFsaXplZCBmb3JtYXQgdXNpbmcgSlNPTi5zdHJpbmdpZnkuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3BhbiB3aXRoIHRoZSBjdXJyZW50IHNwYW4ncyBlbmQgYW5kIGEgbmV3IGJlZ2lubmluZy5cbiAgICovXG4gIHdpdGhTdGFydChvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4ob3RoZXIuZGF0YSwgdGhpcy5kYXRhLmdldEVuZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3BhbiB3aXRoIHRoZSBjdXJyZW50IHNwYW4ncyBiZWdpbm5pbmcgYW5kIGEgbmV3IGVuZGluZy5cbiAgICovXG4gIHdpdGhFbmQodGhpczogU291cmNlU3Bhbiwgb3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YS5nZXRTdGFydCgpLCBvdGhlci5kYXRhKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hc1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBgU291cmNlU3BhbmAgaW50byBhIGBTb3VyY2VTbGljZWAuIEluIGRlYnVnIG1vZGUsIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgY2hlY2tzXG4gICAqIHRoYXQgdGhlIGJ5dGUgb2Zmc2V0cyByZXByZXNlbnRlZCBieSB0aGlzIGBTb3VyY2VTcGFuYCBhY3R1YWxseSBjb3JyZXNwb25kIHRvIHRoZSBleHBlY3RlZFxuICAgKiBzdHJpbmcuXG4gICAqL1xuICB0b1NsaWNlKGV4cGVjdGVkPzogc3RyaW5nKTogU291cmNlU2xpY2Uge1xuICAgIGxldCBjaGFycyA9IHRoaXMuZGF0YS5hc1N0cmluZygpO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiBjaGFycyAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGB1bmV4cGVjdGVkbHkgZm91bmQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGNoYXJzXG4gICAgICAgICAgKX0gd2hlbiBzbGljaW5nIHNvdXJjZSwgYnV0IGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNvdXJjZVNsaWNlKHtcbiAgICAgIGxvYzogdGhpcyxcbiAgICAgIGNoYXJzOiBleHBlY3RlZCB8fCBjaGFycyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzdGFydFBvc2l0aW9uIGluc3RlYWRcbiAgICovXG4gIGdldCBzdGFydCgpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLnN0YXJ0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHdpdGhTdGFydCBpbnN0ZWFkXG4gICAqL1xuICBzZXQgc3RhcnQocG9zaXRpb246IFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgdGhpcy5kYXRhLmxvY0RpZFVwZGF0ZSh7IHN0YXJ0OiBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBlbmRQb3NpdGlvbiBpbnN0ZWFkXG4gICAqL1xuICBnZXQgZW5kKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2MuZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHdpdGhFbmQgaW5zdGVhZFxuICAgKi9cbiAgc2V0IGVuZChwb3NpdGlvbjogU291cmNlUG9zaXRpb24pIHtcbiAgICB0aGlzLmRhdGEubG9jRGlkVXBkYXRlKHsgZW5kOiBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtb2R1bGUgaW5zdGVhZFxuICAgKi9cbiAgZ2V0IHNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZTtcbiAgfVxuXG4gIGNvbGxhcHNlKHdoZXJlOiAnc3RhcnQnIHwgJ2VuZCcpOiBTb3VyY2VTcGFuIHtcbiAgICBzd2l0Y2ggKHdoZXJlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YXJ0KCkuY29sbGFwc2VkKCk7XG4gICAgICBjYXNlICdlbmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmQoKS5jb2xsYXBzZWQoKTtcbiAgICB9XG4gIH1cblxuICBleHRlbmQob3RoZXI6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEuZ2V0U3RhcnQoKSwgb3RoZXIuZGF0YS5nZXRFbmQoKSk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEuc2VyaWFsaXplKCk7XG4gIH1cblxuICBzbGljZSh7IHNraXBTdGFydCA9IDAsIHNraXBFbmQgPSAwIH06IHsgc2tpcFN0YXJ0PzogbnVtYmVyOyBza2lwRW5kPzogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQpLmRhdGEsIHRoaXMuZ2V0RW5kKCkubW92ZSgtc2tpcEVuZCkuZGF0YSk7XG4gIH1cblxuICBzbGljZVN0YXJ0Q2hhcnMoeyBza2lwU3RhcnQgPSAwLCBjaGFycyB9OiB7IHNraXBTdGFydD86IG51bWJlcjsgY2hhcnM6IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0KS5kYXRhLCB0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQgKyBjaGFycykuZGF0YSk7XG4gIH1cblxuICBzbGljZUVuZENoYXJzKHsgc2tpcEVuZCA9IDAsIGNoYXJzIH06IHsgc2tpcEVuZD86IG51bWJlcjsgY2hhcnM6IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRFbmQoKS5tb3ZlKHNraXBFbmQgLSBjaGFycykuZGF0YSwgdGhpcy5nZXRTdGFydCgpLm1vdmUoLXNraXBFbmQpLmRhdGEpO1xuICB9XG59XG5cbnR5cGUgQW55U3BhbiA9IEhic1NwYW4gfCBDaGFyUG9zaXRpb25TcGFuIHwgSW52aXNpYmxlU3BhbjtcblxuY2xhc3MgQ2hhclBvc2l0aW9uU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gIF9sb2NQb3NTcGFuOiBIYnNTcGFuIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgY2hhclBvc2l0aW9uczogeyBzdGFydDogQ2hhclBvc2l0aW9uOyBlbmQ6IENoYXJQb3NpdGlvbiB9XG4gICkge31cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnNsaWNlKHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydC5jaGFyUG9zLCB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLmNoYXJQb3MpO1xuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZTtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0O1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLmVuZDtcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSgpIHtcbiAgICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGB1cGRhdGluZyBhIGxvY2F0aW9uIHRoYXQgY2FtZSBmcm9tIGEgQ2hhclBvc2l0aW9uIHNwYW4gZG9lc24ndCB3b3JrIHJlbGlhYmx5LiBEb24ndCB0cnkgdG8gdXBkYXRlIGxvY2F0aW9ucyBhZnRlciB0aGUgcGx1Z2luIHBoYXNlYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB0b0hic1NwYW4oKTogSGJzU3BhbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3NTcGFuID0gdGhpcy5fbG9jUG9zU3BhbjtcblxuICAgIGlmIChsb2NQb3NTcGFuID09PSBudWxsKSB7XG4gICAgICBsZXQgc3RhcnQgPSB0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQudG9IYnNQb3MoKTtcbiAgICAgIGxldCBlbmQgPSB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLnRvSGJzUG9zKCk7XG5cbiAgICAgIGlmIChzdGFydCA9PT0gbnVsbCB8fCBlbmQgPT09IG51bGwpIHtcbiAgICAgICAgbG9jUG9zU3BhbiA9IHRoaXMuX2xvY1Bvc1NwYW4gPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NQb3NTcGFuID0gdGhpcy5fbG9jUG9zU3BhbiA9IG5ldyBIYnNTcGFuKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG9jUG9zU3BhbiA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1Bvc1NwYW47XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW4ge1xuICAgIGxldCB7XG4gICAgICBzdGFydDogeyBjaGFyUG9zOiBzdGFydCB9LFxuICAgICAgZW5kOiB7IGNoYXJQb3M6IGVuZCB9LFxuICAgIH0gPSB0aGlzLmNoYXJQb3NpdGlvbnM7XG5cbiAgICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgICAgcmV0dXJuIHN0YXJ0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogQ2hhclBvc2l0aW9uU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhic1NwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuXG4gIF9jaGFyUG9zU3BhbjogQ2hhclBvc2l0aW9uU3BhbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIC8vIHRoZSBzb3VyY2UgbG9jYXRpb24gZnJvbSBIYW5kbGViYXJzICsgQVNUIFBsdWdpbnMgLS0gY291bGQgYmUgd3JvbmdcbiAgX3Byb3ZpZGVkSGJzTG9jOiBTb3VyY2VMb2NhdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgaGJzUG9zaXRpb25zOiB7IHN0YXJ0OiBIYnNQb3NpdGlvbjsgZW5kOiBIYnNQb3NpdGlvbiB9LFxuICAgIHByb3ZpZGVkSGJzTG9jOiBTb3VyY2VMb2NhdGlvbiB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuX3Byb3ZpZGVkSGJzTG9jID0gcHJvdmlkZWRIYnNMb2M7XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLnRvQ2hhclBvc1NwYW4oKTtcbiAgICByZXR1cm4gY2hhclBvcyA9PT0gbnVsbCA/IE9mZnNldEtpbmQuQnJva2VuIDogY2hhclBvcy53cmFwKCkuc2VyaWFsaXplKCk7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJvdmlkZWQocG9zOiBTb3VyY2VQb3NpdGlvbiwgZWRnZTogJ3N0YXJ0JyB8ICdlbmQnKSB7XG4gICAgaWYgKHRoaXMuX3Byb3ZpZGVkSGJzTG9jKSB7XG4gICAgICB0aGlzLl9wcm92aWRlZEhic0xvY1tlZGdlXSA9IHBvcztcbiAgICB9XG5cbiAgICAvLyBpbnZhbGlkYXRlIGNvbXB1dGVkIGNoYXJhY3RlciBvZmZzZXRzXG4gICAgdGhpcy5fY2hhclBvc1NwYW4gPSBudWxsO1xuICAgIHRoaXMuX3Byb3ZpZGVkSGJzTG9jID0ge1xuICAgICAgc3RhcnQ6IHBvcyxcbiAgICAgIGVuZDogcG9zLFxuICAgIH07XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoeyBzdGFydCwgZW5kIH06IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSk6IHZvaWQge1xuICAgIGlmIChzdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3ZpZGVkKHN0YXJ0LCAnc3RhcnQnKTtcbiAgICAgIHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0ID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBzdGFydCwgbnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3ZpZGVkKGVuZCwgJ2VuZCcpO1xuICAgICAgdGhpcy5oYnNQb3NpdGlvbnMuZW5kID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBlbmQsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHNwYW4gPSB0aGlzLnRvQ2hhclBvc1NwYW4oKTtcbiAgICByZXR1cm4gc3BhbiA9PT0gbnVsbCA/ICcnIDogc3Bhbi5hc1N0cmluZygpO1xuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZTtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQ7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5lbmQ7XG4gIH1cblxuICB0b0hic0xvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydC5oYnNQb3MsXG4gICAgICBlbmQ6IHRoaXMuaGJzUG9zaXRpb25zLmVuZC5oYnNQb3MsXG4gICAgfTtcbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogQ2hhclBvc2l0aW9uU3BhbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zU3BhbiA9IHRoaXMuX2NoYXJQb3NTcGFuO1xuXG4gICAgaWYgKGNoYXJQb3NTcGFuID09PSBudWxsKSB7XG4gICAgICBsZXQgc3RhcnQgPSB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydC50b0NoYXJQb3MoKTtcbiAgICAgIGxldCBlbmQgPSB0aGlzLmhic1Bvc2l0aW9ucy5lbmQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgY2hhclBvc1NwYW4gPSB0aGlzLl9jaGFyUG9zU3BhbiA9IG5ldyBDaGFyUG9zaXRpb25TcGFuKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJQb3NTcGFuID0gdGhpcy5fY2hhclBvc1NwYW4gPSBCUk9LRU47XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFyUG9zU3BhbiA9PT0gQlJPS0VOID8gbnVsbCA6IGNoYXJQb3NTcGFuO1xuICB9XG59XG5cbmNsYXNzIEludmlzaWJsZVNwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQuQnJva2VuIHwgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWMgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LFxuICAgIC8vIHdoYXRldmVyIHdhcyBwcm92aWRlZCwgcG9zc2libHkgYnJva2VuXG4gICAgcmVhZG9ubHkgbG9jOiBTb3VyY2VMb2NhdGlvbixcbiAgICAvLyBpZiB0aGUgc3BhbiByZXByZXNlbnRzIGEgc3ludGhldGljIHN0cmluZ1xuICAgIHJlYWRvbmx5IHN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgKSB7fVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSBPZmZzZXRLaW5kLkJyb2tlbjpcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5Ob25FeGlzdGVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMua2luZDtcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWM6XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZyB8fCAnJztcbiAgICB9XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nIHx8ICcnO1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKHsgc3RhcnQsIGVuZCB9OiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pIHtcbiAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2Muc3RhcnQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9jLmVuZCA9IGVuZDtcbiAgICB9XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVmbGVjdCB0aGUgYWN0dWFsIG1vZHVsZSB0aGlzIHNwYW4gb3JpZ2luYXRlZCBmcm9tXG4gICAgcmV0dXJuICdhbiB1bmtub3duIG1vZHVsZSc7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbih0aGlzLmtpbmQsIHRoaXMubG9jLnN0YXJ0KTtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbih0aGlzLmtpbmQsIHRoaXMubG9jLmVuZCk7XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IEludmlzaWJsZVNwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9IYnNTcGFuKCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdG9IYnNMb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiBCUk9LRU5fTE9DQVRJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNwYW46IE1hdGNoRm48U291cmNlU3Bhbj4gPSBtYXRjaCgobSkgPT5cbiAgbVxuICAgIC53aGVuKE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT5cbiAgICAgIG5ldyBIYnNTcGFuKGxlZnQuc291cmNlLCB7XG4gICAgICAgIHN0YXJ0OiBsZWZ0LFxuICAgICAgICBlbmQ6IHJpZ2h0LFxuICAgICAgfSkud3JhcCgpXG4gICAgKVxuICAgIC53aGVuKE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgbmV3IENoYXJQb3NpdGlvblNwYW4obGVmdC5zb3VyY2UsIHtcbiAgICAgICAgc3RhcnQ6IGxlZnQsXG4gICAgICAgIGVuZDogcmlnaHQsXG4gICAgICB9KS53cmFwKClcbiAgICApXG4gICAgLndoZW4oT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgbGV0IHJpZ2h0Q2hhclBvcyA9IHJpZ2h0LnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAocmlnaHRDaGFyUG9zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BhbihsZWZ0LCByaWdodENoYXJQb3MpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLndoZW4oT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgbGV0IGxlZnRDaGFyUG9zID0gbGVmdC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKGxlZnRDaGFyUG9zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BhbihsZWZ0Q2hhclBvcywgcmlnaHQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLndoZW4oSXNJbnZpc2libGUsIE1hdGNoQW55LCAobGVmdCkgPT4gbmV3IEludmlzaWJsZVNwYW4obGVmdC5raW5kLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKSlcbiAgICAud2hlbihNYXRjaEFueSwgSXNJbnZpc2libGUsIChfLCByaWdodCkgPT5cbiAgICAgIG5ldyBJbnZpc2libGVTcGFuKHJpZ2h0LmtpbmQsIEJST0tFTl9MT0NBVElPTikud3JhcCgpXG4gICAgKVxuKTtcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiA9XG4gIHwgLyoqIGNvbGxhcHNlZCAqLyBudW1iZXJcbiAgfCAvKiogbm9ybWFsICovIFtzdGFydDogbnVtYmVyLCBzaXplOiBudW1iZXJdXG4gIHwgLyoqIHN5bnRoZXRpYyAqLyBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRTb3VyY2VTcGFuID1cbiAgfCBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuXG4gIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudFxuICB8IE9mZnNldEtpbmQuQnJva2VuO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -11,31 +11,10 @@ "use strict";

var _span2 = require("./span");
var _span = require("./span");
var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _span;
class SpanList {
constructor(span = []) {
_span.set(this, void 0);
__classPrivateFieldSet(this, _span, span);
this._span = span;
}
static range(span, fallback = _span2.SourceSpan.NON_EXISTENT) {
static range(span, fallback = _span.SourceSpan.NON_EXISTENT) {
return new SpanList(span.map(loc)).getRangeOffset(fallback);

@@ -45,13 +24,11 @@ }

add(offset) {
__classPrivateFieldGet(this, _span).push(offset);
this._span.push(offset);
}
getRangeOffset(fallback) {
if (__classPrivateFieldGet(this, _span).length === 0) {
if (this._span.length === 0) {
return fallback;
} else {
let first = __classPrivateFieldGet(this, _span)[0];
let last = __classPrivateFieldGet(this, _span)[__classPrivateFieldGet(this, _span).length - 1];
let first = this._span[0];
let last = this._span[this._span.length - 1];
return first.extend(last);

@@ -64,3 +41,2 @@ }

exports.SpanList = SpanList;
_span = new WeakMap();

@@ -72,3 +48,3 @@ function loc(span) {

return loc(first).extend(loc(last));
} else if (span instanceof _span2.SourceSpan) {
} else if (span instanceof _span.SourceSpan) {
return span;

@@ -95,2 +71,2 @@ } else {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9NLE1BQUEsUUFBQSxDQUFlO0FBU25CLEVBQUEsV0FBQSxDQUFZLElBQUEsR0FBWixFQUFBLEVBQW1DO0FBRm5DLElBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBOztBQUdFLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQTtBQUNEOztBQVJELFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBb0MsUUFBQSxHQUF1QixrQkFBM0QsWUFBQSxFQUFrRjtBQUNoRixXQUFPLElBQUEsUUFBQSxDQUFhLElBQUksQ0FBSixHQUFBLENBQWIsR0FBYSxDQUFiLEVBQUEsY0FBQSxDQUFQLFFBQU8sQ0FBUDtBQUNEOztBQVFELEVBQUEsR0FBRyxDQUFBLE1BQUEsRUFBbUI7QUFDcEIsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxJQUFBLENBQUEsTUFBQTtBQUNEOztBQUVELEVBQUEsY0FBYyxDQUFBLFFBQUEsRUFBcUI7QUFDakMsUUFBSSxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLEtBQUosQ0FBQSxFQUE2QjtBQUMzQixhQUFBLFFBQUE7QUFERixLQUFBLE1BRU87QUFDTCxVQUFJLEtBQUssR0FBRyxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBWixDQUFZLENBQVo7O0FBQ0EsVUFBSSxJQUFJLEdBQUcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQVcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxHQUF0QixDQUFXLENBQVg7O0FBRUEsYUFBTyxLQUFLLENBQUwsTUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEO0FBQ0Y7O0FBMUJrQjs7Ozs7QUErQmYsU0FBQSxHQUFBLENBQUEsSUFBQSxFQUFpQztBQUNyQyxNQUFJLEtBQUssQ0FBTCxPQUFBLENBQUosSUFBSSxDQUFKLEVBQXlCO0FBQ3ZCLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFDQSxRQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFKLE1BQUEsR0FBaEIsQ0FBZSxDQUFmO0FBRUEsV0FBTyxHQUFHLENBQUgsS0FBRyxDQUFILENBQUEsTUFBQSxDQUFrQixHQUFHLENBQTVCLElBQTRCLENBQXJCLENBQVA7QUFKRixHQUFBLE1BS08sSUFBSSxJQUFJLFlBQVIsaUJBQUEsRUFBZ0M7QUFDckMsV0FBQSxJQUFBO0FBREssR0FBQSxNQUVBO0FBQ0wsV0FBTyxJQUFJLENBQVgsR0FBQTtBQUNEO0FBQ0Y7O0FBSUssU0FBQSxPQUFBLENBQUEsSUFBQSxFQUEwQztBQUM5QyxNQUFJLEtBQUssQ0FBTCxPQUFBLENBQUEsSUFBQSxLQUF1QixJQUFJLENBQUosTUFBQSxLQUEzQixDQUFBLEVBQThDO0FBQzVDLFdBQUEsS0FBQTtBQUNEOztBQUVELFNBQUEsSUFBQTtBQUNEOztBQUVLLFNBQUEsUUFBQSxDQUFBLFFBQUEsRUFBQSxRQUFBLEVBQXFFO0FBQ3pFLE1BQUksT0FBTyxDQUFYLFFBQVcsQ0FBWCxFQUF1QjtBQUNyQixXQUFPLEdBQUcsQ0FBVixRQUFVLENBQVY7QUFERixHQUFBLE1BRU87QUFDTCxXQUFBLFFBQUE7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHR5cGUgeyBQcmVzZW50QXJyYXkgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4sIExvY2F0ZWRXaXRoU3BhbiB9IGZyb20gJy4vbG9jYXRpb24nO1xuaW1wb3J0IHsgU291cmNlT2Zmc2V0LCBTb3VyY2VTcGFuIH0gZnJvbSAnLi9zcGFuJztcblxuZXhwb3J0IHR5cGUgSGFzU3BhbiA9IFNvdXJjZVNwYW4gfCBMb2NhdGVkV2l0aFNwYW4gfCBQcmVzZW50QXJyYXk8TG9jYXRlZFdpdGhTcGFuPjtcbmV4cG9ydCB0eXBlIE1heWJlSGFzU3BhbiA9IFNvdXJjZVNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbiB8IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuW10gfCBudWxsO1xuXG5leHBvcnQgdHlwZSBUb1NvdXJjZU9mZnNldCA9IG51bWJlciB8IFNvdXJjZU9mZnNldDtcblxuZXhwb3J0IGNsYXNzIFNwYW5MaXN0IHtcbiAgc3RhdGljIHJhbmdlKHNwYW46IFByZXNlbnRBcnJheTxIYXNTb3VyY2VTcGFuPik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbjtcbiAgc3RhdGljIHJhbmdlKHNwYW46IEhhc1NvdXJjZVNwYW5bXSwgZmFsbGJhY2s6IFNvdXJjZVNwYW4gPSBTb3VyY2VTcGFuLk5PTl9FWElTVEVOVCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU3Bhbkxpc3Qoc3Bhbi5tYXAobG9jKSkuZ2V0UmFuZ2VPZmZzZXQoZmFsbGJhY2spO1xuICB9XG5cbiAgI3NwYW46IFNvdXJjZVNwYW5bXTtcblxuICBjb25zdHJ1Y3RvcihzcGFuOiBTb3VyY2VTcGFuW10gPSBbXSkge1xuICAgIHRoaXMuI3NwYW4gPSBzcGFuO1xuICB9XG5cbiAgYWRkKG9mZnNldDogU291cmNlU3Bhbik6IHZvaWQge1xuICAgIHRoaXMuI3NwYW4ucHVzaChvZmZzZXQpO1xuICB9XG5cbiAgZ2V0UmFuZ2VPZmZzZXQoZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICBpZiAodGhpcy4jc3Bhbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGZpcnN0ID0gdGhpcy4jc3BhblswXTtcbiAgICAgIGxldCBsYXN0ID0gdGhpcy4jc3Bhblt0aGlzLiNzcGFuLmxlbmd0aCAtIDFdO1xuXG4gICAgICByZXR1cm4gZmlyc3QuZXh0ZW5kKGxhc3QpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBIYXNTb3VyY2VTcGFuID0geyBsb2M6IFNvdXJjZVNwYW4gfSB8IFNvdXJjZVNwYW4gfCBbSGFzU291cmNlU3BhbiwgLi4uSGFzU291cmNlU3BhbltdXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYyhzcGFuOiBIYXNTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNwYW4pKSB7XG4gICAgbGV0IGZpcnN0ID0gc3BhblswXTtcbiAgICBsZXQgbGFzdCA9IHNwYW5bc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiBsb2MoZmlyc3QpLmV4dGVuZChsb2MobGFzdCkpO1xuICB9IGVsc2UgaWYgKHNwYW4gaW5zdGFuY2VvZiBTb3VyY2VTcGFuKSB7XG4gICAgcmV0dXJuIHNwYW47XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNwYW4ubG9jO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIE1heWJlSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgTWF5YmVIYXNTb3VyY2VTcGFuW107XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTcGFuKHNwYW46IE1heWJlSGFzU291cmNlU3Bhbik6IHNwYW4gaXMgSGFzU291cmNlU3BhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNwYW4pICYmIHNwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXliZUxvYyhsb2NhdGlvbjogTWF5YmVIYXNTb3VyY2VTcGFuLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoaGFzU3Bhbihsb2NhdGlvbikpIHtcbiAgICByZXR1cm4gbG9jKGxvY2F0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7O0FBT00sTUFBQSxRQUFBLENBQWU7QUFTbkIsRUFBQSxXQUFBLENBQVksSUFBQSxHQUFaLEVBQUEsRUFBbUM7QUFDakMsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNEOztBQVJELFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBb0MsUUFBQSxHQUF1QixpQkFBM0QsWUFBQSxFQUFrRjtBQUNoRixXQUFPLElBQUEsUUFBQSxDQUFhLElBQUksQ0FBSixHQUFBLENBQWIsR0FBYSxDQUFiLEVBQUEsY0FBQSxDQUFQLFFBQU8sQ0FBUDtBQUNEOztBQVFELEVBQUEsR0FBRyxDQUFBLE1BQUEsRUFBbUI7QUFDcEIsU0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLE1BQUE7QUFDRDs7QUFFRCxFQUFBLGNBQWMsQ0FBQSxRQUFBLEVBQXFCO0FBQ2pDLFFBQUksS0FBQSxLQUFBLENBQUEsTUFBQSxLQUFKLENBQUEsRUFBNkI7QUFDM0IsYUFBQSxRQUFBO0FBREYsS0FBQSxNQUVPO0FBQ0wsVUFBSSxLQUFLLEdBQUcsS0FBQSxLQUFBLENBQVosQ0FBWSxDQUFaO0FBQ0EsVUFBSSxJQUFJLEdBQUcsS0FBQSxLQUFBLENBQVcsS0FBQSxLQUFBLENBQUEsTUFBQSxHQUF0QixDQUFXLENBQVg7QUFFQSxhQUFPLEtBQUssQ0FBTCxNQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7QUFDRjs7QUExQmtCOzs7O0FBK0JmLFNBQUEsR0FBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxLQUFLLENBQUwsT0FBQSxDQUFKLElBQUksQ0FBSixFQUF5QjtBQUN2QixRQUFJLEtBQUssR0FBRyxJQUFJLENBQWhCLENBQWdCLENBQWhCO0FBQ0EsUUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBSixNQUFBLEdBQWhCLENBQWUsQ0FBZjtBQUVBLFdBQU8sR0FBRyxDQUFILEtBQUcsQ0FBSCxDQUFBLE1BQUEsQ0FBa0IsR0FBRyxDQUE1QixJQUE0QixDQUFyQixDQUFQO0FBSkYsR0FBQSxNQUtPLElBQUksSUFBSSxZQUFSLGdCQUFBLEVBQWdDO0FBQ3JDLFdBQUEsSUFBQTtBQURLLEdBQUEsTUFFQTtBQUNMLFdBQU8sSUFBSSxDQUFYLEdBQUE7QUFDRDtBQUNGOztBQUlLLFNBQUEsT0FBQSxDQUFBLElBQUEsRUFBMEM7QUFDOUMsTUFBSSxLQUFLLENBQUwsT0FBQSxDQUFBLElBQUEsS0FBdUIsSUFBSSxDQUFKLE1BQUEsS0FBM0IsQ0FBQSxFQUE4QztBQUM1QyxXQUFBLEtBQUE7QUFDRDs7QUFFRCxTQUFBLElBQUE7QUFDRDs7QUFFSyxTQUFBLFFBQUEsQ0FBQSxRQUFBLEVBQUEsUUFBQSxFQUFxRTtBQUN6RSxNQUFJLE9BQU8sQ0FBWCxRQUFXLENBQVgsRUFBdUI7QUFDckIsV0FBTyxHQUFHLENBQVYsUUFBVSxDQUFWO0FBREYsR0FBQSxNQUVPO0FBQ0wsV0FBQSxRQUFBO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB0eXBlIHsgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuLCBMb2NhdGVkV2l0aFNwYW4gfSBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4vc3Bhbic7XG5cbmV4cG9ydCB0eXBlIEhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhTcGFuIHwgUHJlc2VudEFycmF5PExvY2F0ZWRXaXRoU3Bhbj47XG5leHBvcnQgdHlwZSBNYXliZUhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbltdIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgVG9Tb3VyY2VPZmZzZXQgPSBudW1iZXIgfCBTb3VyY2VPZmZzZXQ7XG5cbmV4cG9ydCBjbGFzcyBTcGFuTGlzdCB7XG4gIHN0YXRpYyByYW5nZShzcGFuOiBQcmVzZW50QXJyYXk8SGFzU291cmNlU3Bhbj4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuID0gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNwYW5MaXN0KHNwYW4ubWFwKGxvYykpLmdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrKTtcbiAgfVxuXG4gIF9zcGFuOiBTb3VyY2VTcGFuW107XG5cbiAgY29uc3RydWN0b3Ioc3BhbjogU291cmNlU3BhbltdID0gW10pIHtcbiAgICB0aGlzLl9zcGFuID0gc3BhbjtcbiAgfVxuXG4gIGFkZChvZmZzZXQ6IFNvdXJjZVNwYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9zcGFuLnB1c2gob2Zmc2V0KTtcbiAgfVxuXG4gIGdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHRoaXMuX3NwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdCA9IHRoaXMuX3NwYW5bMF07XG4gICAgICBsZXQgbGFzdCA9IHRoaXMuX3NwYW5bdGhpcy5fc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgICAgcmV0dXJuIGZpcnN0LmV4dGVuZChsYXN0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgW0hhc1NvdXJjZVNwYW4sIC4uLkhhc1NvdXJjZVNwYW5bXV07XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2Moc3BhbjogSGFzU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSkge1xuICAgIGxldCBmaXJzdCA9IHNwYW5bMF07XG4gICAgbGV0IGxhc3QgPSBzcGFuW3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gbG9jKGZpcnN0KS5leHRlbmQobG9jKGxhc3QpKTtcbiAgfSBlbHNlIGlmIChzcGFuIGluc3RhbmNlb2YgU291cmNlU3Bhbikge1xuICAgIHJldHVybiBzcGFuO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGFuLmxvYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXliZUhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IE1heWJlSGFzU291cmNlU3BhbltdO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3BhbihzcGFuOiBNYXliZUhhc1NvdXJjZVNwYW4pOiBzcGFuIGlzIEhhc1NvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSAmJiBzcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVMb2MobG9jYXRpb246IE1heWJlSGFzU291cmNlU3BhbiwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKGhhc1NwYW4obG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvYyhsb2NhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -12,21 +12,2 @@ "use strict";

var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _hasEval;
class SymbolTable {

@@ -57,4 +38,3 @@ static top(locals, customizeComponentName) {

this.usedTemplateLocals = [];
_hasEval.set(this, false);
this._hasEval = false;
}

@@ -67,7 +47,7 @@

setHasEval() {
__classPrivateFieldSet(this, _hasEval, true);
this._hasEval = true;
}
get hasEval() {
return __classPrivateFieldGet(this, _hasEval);
return this._hasEval;
}

@@ -152,3 +132,2 @@

exports.ProgramSymbolTable = ProgramSymbolTable;
_hasEval = new WeakMap();

@@ -210,2 +189,2 @@ class BlockSymbolTable extends SymbolTable {

exports.BlockSymbolTable = BlockSymbolTable;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sTUFBQSxXQUFBLENBQTJCO0FBQy9CLFNBQUEsR0FBQSxDQUFBLE1BQUEsRUFBQSxzQkFBQSxFQUVtRDtBQUVqRCxXQUFPLElBQUEsa0JBQUEsQ0FBQSxNQUFBLEVBQVAsc0JBQU8sQ0FBUDtBQUNEOztBQWVELEVBQUEsS0FBSyxDQUFBLE1BQUEsRUFBaUI7QUFDcEIsUUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFOLEdBQUEsQ0FBWSxJQUFELElBQVUsS0FBQSxRQUFBLENBQW5DLElBQW1DLENBQXJCLENBQWQ7QUFDQSxXQUFPLElBQUEsZ0JBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxFQUFQLE9BQU8sQ0FBUDtBQUNEOztBQXhCOEI7Ozs7QUEyQjNCLE1BQUEsa0JBQUEsU0FBQSxXQUFBLENBQTZDO0FBQ2pELEVBQUEsV0FBQSxDQUFBLGNBQUEsRUFBQSxzQkFBQSxFQUUyRDtBQUV6RDtBQUhRLFNBQUEsY0FBQSxHQUFBLGNBQUE7QUFDQSxTQUFBLHNCQUFBLEdBQUEsc0JBQUE7QUFLSCxTQUFBLE9BQUEsR0FBQSxFQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsRUFBQTtBQUVDLFNBQUEsSUFBQSxHQUFBLENBQUE7QUFDQSxTQUFBLEtBQUEsR0FBQSxpQkFBQTtBQUNBLFNBQUEsTUFBQSxHQUFBLGlCQUFBO0FBQ0EsU0FBQSxrQkFBQSxHQUFBLEVBQUE7O0FBRVIsSUFBQSxRQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBO0FBVkM7O0FBWUQsRUFBQSxxQkFBcUIsR0FBQTtBQUNuQixXQUFPLEtBQVAsa0JBQUE7QUFDRDs7QUFFRCxFQUFBLFVBQVUsR0FBQTtBQUNSLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQSxFQUFB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Q0FBUDtBQUNEOztBQUVELEVBQUEsYUFBYSxDQUFBLElBQUEsRUFBYTtBQUN4QixXQUFPLEtBQUEsTUFBQSxDQUFBLGFBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRDs7QUFFRCxFQUFBLGFBQWEsQ0FBQSxJQUFBLEVBQWE7QUFDeEIsV0FBTyxLQUFBLE1BQUEsQ0FBQSxhQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7O0FBRUQsRUFBQSxRQUFRLENBQUEsVUFBQSxFQUFtQjtBQUN6QixXQUFPLEtBQUEsTUFBQSxDQUFBLFFBQUEsQ0FBUCxVQUFPLENBQVA7QUFDRDs7QUEvQzhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZSwgRGljdCwgU2V4cE9wY29kZXMgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgQVNUdjIgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBpc1VwcGVyQ2FzZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3ltYm9sVGFibGUge1xuICBzdGF0aWMgdG9wKFxuICAgIGxvY2Fsczogc3RyaW5nW10sXG4gICAgY3VzdG9taXplQ29tcG9uZW50TmFtZTogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZ1xuICApOiBQcm9ncmFtU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBuZXcgUHJvZ3JhbVN5bWJvbFRhYmxlKGxvY2FscywgY3VzdG9taXplQ29tcG9uZW50TmFtZSk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0KG5hbWU6IHN0cmluZyk6IFtzeW1ib2w6IG51bWJlciwgaXNSb290OiBib29sZWFuXTtcblxuICBhYnN0cmFjdCBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+O1xuICBhYnN0cmFjdCBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvO1xuXG4gIGFic3RyYWN0IGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlcjtcblxuICBhYnN0cmFjdCBzZXRIYXNFdmFsKCk6IHZvaWQ7XG5cbiAgY2hpbGQobG9jYWxzOiBzdHJpbmdbXSk6IEJsb2NrU3ltYm9sVGFibGUge1xuICAgIGxldCBzeW1ib2xzID0gbG9jYWxzLm1hcCgobmFtZSkgPT4gdGhpcy5hbGxvY2F0ZShuYW1lKSk7XG4gICAgcmV0dXJuIG5ldyBCbG9ja1N5bWJvbFRhYmxlKHRoaXMsIGxvY2Fscywgc3ltYm9scyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW1TeW1ib2xUYWJsZSBleHRlbmRzIFN5bWJvbFRhYmxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZUxvY2Fsczogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSBjdXN0b21pemVDb21wb25lbnROYW1lOiAoaW5wdXQ6IHN0cmluZykgPT4gc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc3ltYm9sczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHVwdmFyczogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIHNpemUgPSAxO1xuICBwcml2YXRlIG5hbWVkID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgYmxvY2tzID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdXNlZFRlbXBsYXRlTG9jYWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICNoYXNFdmFsID0gZmFsc2U7XG5cbiAgZ2V0VXNlZFRlbXBsYXRlTG9jYWxzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHM7XG4gIH1cblxuICBzZXRIYXNFdmFsKCk6IHZvaWQge1xuICAgIHRoaXMuI2hhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGhhc0V2YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2hhc0V2YWw7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVMb2NhbHMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogW251bWJlciwgYm9vbGVhbl0ge1xuICAgIGxldCBpbmRleCA9IHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICByZXR1cm4gW2luZGV4LCB0cnVlXTtcbiAgICB9XG5cbiAgICBpbmRleCA9IHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmxlbmd0aDtcbiAgICB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiBbaW5kZXgsIHRydWVdO1xuICB9XG5cbiAgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGRpY3QoKTtcbiAgfVxuXG4gIGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm8ge1xuICAgIGxldCBsb2NhbHMgPSB0aGlzLmdldExvY2Fsc01hcCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2NhbHMpLm1hcCgoc3ltYm9sKSA9PiBsb2NhbHNbc3ltYm9sXSk7XG4gIH1cblxuICBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlciB7XG4gICAgLy8gSWYgdGhlIG5hbWUgaW4gcXVlc3Rpb24gaXMgYW4gdXBwZXJjYXNlIChpLmUuIGFuZ2xlLWJyYWNrZXQpIGNvbXBvbmVudCBpbnZvY2F0aW9uLCBydW5cbiAgICAvLyB0aGUgb3B0aW9uYWwgYGN1c3RvbWl6ZUNvbXBvbmVudE5hbWVgIGZ1bmN0aW9uIHByb3ZpZGVkIHRvIHRoZSBwcmVjb21waWxlci5cbiAgICBpZiAoXG4gICAgICByZXNvbHV0aW9uLnJlc29sdXRpb24oKSA9PT0gU2V4cE9wY29kZXMuR2V0RnJlZUFzQ29tcG9uZW50SGVhZCAmJlxuICAgICAgcmVzb2x1dGlvbi5pc0FuZ2xlQnJhY2tldCAmJlxuICAgICAgaXNVcHBlckNhc2UobmFtZSlcbiAgICApIHtcbiAgICAgIG5hbWUgPSB0aGlzLmN1c3RvbWl6ZUNvbXBvbmVudE5hbWUobmFtZSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gdGhpcy51cHZhcnMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBpbmRleCA9IHRoaXMudXB2YXJzLmxlbmd0aDtcbiAgICB0aGlzLnVwdmFycy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkW25hbWVdO1xuXG4gICAgaWYgKCFuYW1lZCkge1xuICAgICAgbmFtZWQgPSB0aGlzLm5hbWVkW25hbWVdID0gdGhpcy5hbGxvY2F0ZShuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZWQ7XG4gIH1cblxuICBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKG5hbWUgPT09ICdpbnZlcnNlJykge1xuICAgICAgbmFtZSA9ICdlbHNlJztcbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSB0aGlzLmJsb2Nrc1tuYW1lXTtcblxuICAgIGlmICghYmxvY2spIHtcbiAgICAgIGJsb2NrID0gdGhpcy5ibG9ja3NbbmFtZV0gPSB0aGlzLmFsbG9jYXRlKGAmJHtuYW1lfWApO1xuICAgIH1cblxuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdGhpcy5zeW1ib2xzLnB1c2goaWRlbnRpZmllcik7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSsrO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja1N5bWJvbFRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU3ltYm9sVGFibGUsIHB1YmxpYyBzeW1ib2xzOiBzdHJpbmdbXSwgcHVibGljIHNsb3RzOiBudW1iZXJbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgbG9jYWxzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbHMuaW5kZXhPZihuYW1lKSAhPT0gLTEgfHwgdGhpcy5wYXJlbnQuaGFzKG5hbWUpO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IFtudW1iZXIsIGJvb2xlYW5dIHtcbiAgICBsZXQgc2xvdCA9IHRoaXMuc3ltYm9scy5pbmRleE9mKG5hbWUpO1xuICAgIHJldHVybiBzbG90ID09PSAtMSA/IHRoaXMucGFyZW50LmdldChuYW1lKSA6IFt0aGlzLnNsb3RzW3Nsb3RdLCBmYWxzZV07XG4gIH1cblxuICBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+IHtcbiAgICBsZXQgZGljdCA9IHRoaXMucGFyZW50LmdldExvY2Fsc01hcCgpO1xuICAgIHRoaXMuc3ltYm9scy5mb3JFYWNoKChzeW1ib2wpID0+IChkaWN0W3N5bWJvbF0gPSB0aGlzLmdldChzeW1ib2wpWzBdKSk7XG4gICAgcmV0dXJuIGRpY3Q7XG4gIH1cblxuICBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvIHtcbiAgICBsZXQgbG9jYWxzID0gdGhpcy5nZXRMb2NhbHNNYXAoKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9jYWxzKS5tYXAoKHN5bWJvbCkgPT4gbG9jYWxzW3N5bWJvbF0pO1xuICB9XG5cbiAgc2V0SGFzRXZhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudC5zZXRIYXNFdmFsKCk7XG4gIH1cblxuICBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlRnJlZShuYW1lLCByZXNvbHV0aW9uKTtcbiAgfVxuXG4gIGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVOYW1lZChuYW1lKTtcbiAgfVxuXG4gIGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVCbG9jayhuYW1lKTtcbiAgfVxuXG4gIGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlKGlkZW50aWZpZXIpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHQTs7QUFFTSxNQUFBLFdBQUEsQ0FBMkI7QUFDL0IsU0FBQSxHQUFBLENBQUEsTUFBQSxFQUFBLHNCQUFBLEVBRW1EO0FBRWpELFdBQU8sSUFBQSxrQkFBQSxDQUFBLE1BQUEsRUFBUCxzQkFBTyxDQUFQO0FBQ0Q7O0FBZUQsRUFBQSxLQUFLLENBQUEsTUFBQSxFQUFpQjtBQUNwQixRQUFJLE9BQU8sR0FBRyxNQUFNLENBQU4sR0FBQSxDQUFZLElBQUQsSUFBVSxLQUFBLFFBQUEsQ0FBbkMsSUFBbUMsQ0FBckIsQ0FBZDtBQUNBLFdBQU8sSUFBQSxnQkFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQVAsT0FBTyxDQUFQO0FBQ0Q7O0FBeEI4Qjs7OztBQTJCM0IsTUFBQSxrQkFBQSxTQUFBLFdBQUEsQ0FBNkM7QUFDakQsRUFBQSxXQUFBLENBQUEsY0FBQSxFQUFBLHNCQUFBLEVBRTJEO0FBRXpEO0FBSFEsU0FBQSxjQUFBLEdBQUEsY0FBQTtBQUNBLFNBQUEsc0JBQUEsR0FBQSxzQkFBQTtBQUtILFNBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxTQUFBLE1BQUEsR0FBQSxFQUFBO0FBRUMsU0FBQSxJQUFBLEdBQUEsQ0FBQTtBQUNBLFNBQUEsS0FBQSxHQUFBLGlCQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsaUJBQUE7QUFDQSxTQUFBLGtCQUFBLEdBQUEsRUFBQTtBQUVSLFNBQUEsUUFBQSxHQUFBLEtBQUE7QUFWQzs7QUFZRCxFQUFBLHFCQUFxQixHQUFBO0FBQ25CLFdBQU8sS0FBUCxrQkFBQTtBQUNEOztBQUVELEVBQUEsVUFBVSxHQUFBO0FBQ1IsU0FBQSxRQUFBLEdBQUEsSUFBQTtBQUNEOztBQUVELE1BQUEsT0FBQSxHQUFXO0FBQ1QsV0FBTyxLQUFQLFFBQUE7QUFDRDs7QUFF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QUNEOztBQUVELEVBQUEsYUFBYSxDQUFBLElBQUEsRUFBYTtBQUN4QixXQUFPLEtBQUEsTUFBQSxDQUFBLGFBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRDs7QUFFRCxFQUFBLFFBQVEsQ0FBQSxVQUFBLEVBQW1CO0FBQ3pCLFdBQU8sS0FBQSxNQUFBLENBQUEsUUFBQSxDQUFQLFVBQU8sQ0FBUDtBQUNEOztBQS9DOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlLCBEaWN0LCBTZXhwT3Bjb2RlcyB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBBU1R2MiB9IGZyb20gJy4uJztcbmltcG9ydCB7IGlzVXBwZXJDYXNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTeW1ib2xUYWJsZSB7XG4gIHN0YXRpYyB0b3AoXG4gICAgbG9jYWxzOiBzdHJpbmdbXSxcbiAgICBjdXN0b21pemVDb21wb25lbnROYW1lOiAoaW5wdXQ6IHN0cmluZykgPT4gc3RyaW5nXG4gICk6IFByb2dyYW1TeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9ncmFtU3ltYm9sVGFibGUobG9jYWxzLCBjdXN0b21pemVDb21wb25lbnROYW1lKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXQobmFtZTogc3RyaW5nKTogW3N5bWJvbDogbnVtYmVyLCBpc1Jvb3Q6IGJvb2xlYW5dO1xuXG4gIGFic3RyYWN0IGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj47XG4gIGFic3RyYWN0IGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm87XG5cbiAgYWJzdHJhY3QgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IHNldEhhc0V2YWwoKTogdm9pZDtcblxuICBjaGlsZChsb2NhbHM6IHN0cmluZ1tdKTogQmxvY2tTeW1ib2xUYWJsZSB7XG4gICAgbGV0IHN5bWJvbHMgPSBsb2NhbHMubWFwKChuYW1lKSA9PiB0aGlzLmFsbG9jYXRlKG5hbWUpKTtcbiAgICByZXR1cm4gbmV3IEJsb2NrU3ltYm9sVGFibGUodGhpcywgbG9jYWxzLCBzeW1ib2xzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbVN5bWJvbFRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbXBsYXRlTG9jYWxzOiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU6IChpbnB1dDogc3RyaW5nKSA9PiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW1ib2xzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgdXB2YXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2l6ZSA9IDE7XG4gIHByaXZhdGUgbmFtZWQgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSBibG9ja3MgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSB1c2VkVGVtcGxhdGVMb2NhbHM6IHN0cmluZ1tdID0gW107XG5cbiAgX2hhc0V2YWwgPSBmYWxzZTtcblxuICBnZXRVc2VkVGVtcGxhdGVMb2NhbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnVzZWRUZW1wbGF0ZUxvY2FscztcbiAgfVxuXG4gIHNldEhhc0V2YWwoKTogdm9pZCB7XG4gICAgdGhpcy5faGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICBnZXQgaGFzRXZhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRXZhbDtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZUxvY2Fscy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBbbnVtYmVyLCBib29sZWFuXSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBbaW5kZXgsIHRydWVdO1xuICAgIH1cblxuICAgIGluZGV4ID0gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMubGVuZ3RoO1xuICAgIHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIFtpbmRleCwgdHJ1ZV07XG4gIH1cblxuICBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+IHtcbiAgICByZXR1cm4gZGljdCgpO1xuICB9XG5cbiAgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbyB7XG4gICAgbGV0IGxvY2FscyA9IHRoaXMuZ2V0TG9jYWxzTWFwKCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxvY2FscykubWFwKChzeW1ib2wpID0+IGxvY2Fsc1tzeW1ib2xdKTtcbiAgfVxuXG4gIGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBJZiB0aGUgbmFtZSBpbiBxdWVzdGlvbiBpcyBhbiB1cHBlcmNhc2UgKGkuZS4gYW5nbGUtYnJhY2tldCkgY29tcG9uZW50IGludm9jYXRpb24sIHJ1blxuICAgIC8vIHRoZSBvcHRpb25hbCBgY3VzdG9taXplQ29tcG9uZW50TmFtZWAgZnVuY3Rpb24gcHJvdmlkZWQgdG8gdGhlIHByZWNvbXBpbGVyLlxuICAgIGlmIChcbiAgICAgIHJlc29sdXRpb24ucmVzb2x1dGlvbigpID09PSBTZXhwT3Bjb2Rlcy5HZXRGcmVlQXNDb21wb25lbnRIZWFkICYmXG4gICAgICByZXNvbHV0aW9uLmlzQW5nbGVCcmFja2V0ICYmXG4gICAgICBpc1VwcGVyQ2FzZShuYW1lKVxuICAgICkge1xuICAgICAgbmFtZSA9IHRoaXMuY3VzdG9taXplQ29tcG9uZW50TmFtZShuYW1lKTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSB0aGlzLnVwdmFycy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGluZGV4ID0gdGhpcy51cHZhcnMubGVuZ3RoO1xuICAgIHRoaXMudXB2YXJzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWRbbmFtZV07XG5cbiAgICBpZiAoIW5hbWVkKSB7XG4gICAgICBuYW1lZCA9IHRoaXMubmFtZWRbbmFtZV0gPSB0aGlzLmFsbG9jYXRlKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBuYW1lZDtcbiAgfVxuXG4gIGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAobmFtZSA9PT0gJ2ludmVyc2UnKSB7XG4gICAgICBuYW1lID0gJ2Vsc2UnO1xuICAgIH1cblxuICAgIGxldCBibG9jayA9IHRoaXMuYmxvY2tzW25hbWVdO1xuXG4gICAgaWYgKCFibG9jaykge1xuICAgICAgYmxvY2sgPSB0aGlzLmJsb2Nrc1tuYW1lXSA9IHRoaXMuYWxsb2NhdGUoYCYke25hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJsb2NrO1xuICB9XG5cbiAgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB0aGlzLnN5bWJvbHMucHVzaChpZGVudGlmaWVyKTtcbiAgICByZXR1cm4gdGhpcy5zaXplKys7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrU3ltYm9sVGFibGUgZXh0ZW5kcyBTeW1ib2xUYWJsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTeW1ib2xUYWJsZSwgcHVibGljIHN5bWJvbHM6IHN0cmluZ1tdLCBwdWJsaWMgc2xvdHM6IG51bWJlcltdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBsb2NhbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbHM7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9scy5pbmRleE9mKG5hbWUpICE9PSAtMSB8fCB0aGlzLnBhcmVudC5oYXMobmFtZSk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogW251bWJlciwgYm9vbGVhbl0ge1xuICAgIGxldCBzbG90ID0gdGhpcy5zeW1ib2xzLmluZGV4T2YobmFtZSk7XG4gICAgcmV0dXJuIHNsb3QgPT09IC0xID8gdGhpcy5wYXJlbnQuZ2V0KG5hbWUpIDogW3RoaXMuc2xvdHNbc2xvdF0sIGZhbHNlXTtcbiAgfVxuXG4gIGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj4ge1xuICAgIGxldCBkaWN0ID0gdGhpcy5wYXJlbnQuZ2V0TG9jYWxzTWFwKCk7XG4gICAgdGhpcy5zeW1ib2xzLmZvckVhY2goKHN5bWJvbCkgPT4gKGRpY3Rbc3ltYm9sXSA9IHRoaXMuZ2V0KHN5bWJvbClbMF0pKTtcbiAgICByZXR1cm4gZGljdDtcbiAgfVxuXG4gIGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm8ge1xuICAgIGxldCBsb2NhbHMgPSB0aGlzLmdldExvY2Fsc01hcCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2NhbHMpLm1hcCgoc3ltYm9sKSA9PiBsb2NhbHNbc3ltYm9sXSk7XG4gIH1cblxuICBzZXRIYXNFdmFsKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50LnNldEhhc0V2YWwoKTtcbiAgfVxuXG4gIGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVGcmVlKG5hbWUsIHJlc29sdXRpb24pO1xuICB9XG5cbiAgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZU5hbWVkKG5hbWUpO1xuICB9XG5cbiAgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZUJsb2NrKG5hbWUpO1xuICB9XG5cbiAgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGUoaWRlbnRpZmllcik7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

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

var _scope = _interopRequireDefault(require("./scope"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class WalkerPath {

@@ -18,12 +14,2 @@ constructor(node, parent = null, parentKey = null) {

this.parentKey = parentKey;
this.scope = parent ? parent.scope.child(node) : new _scope.default(node); // Consume in scope values
if (node.type === 'PathExpression') {
this.scope.useLocal(node);
}
if (node.type === 'ElementNode') {
this.scope.useLocal(node);
node.children.forEach(node => this.scope.useLocal(node));
}
}

@@ -68,2 +54,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7O0FBRWMsTUFBQSxVQUFBLENBQWlCO0FBTTdCLEVBQUEsV0FBQSxDQUFBLElBQUEsRUFFRSxNQUFBLEdBRkYsSUFBQSxFQUdFLFNBQUEsR0FIRixJQUFBLEVBR2lDO0FBRS9CLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0EsU0FBQSxTQUFBLEdBQUEsU0FBQTtBQUNBLFNBQUEsS0FBQSxHQUFhLE1BQU0sR0FBRyxNQUFNLENBQU4sS0FBQSxDQUFBLEtBQUEsQ0FBSCxJQUFHLENBQUgsR0FBOEIsSUFBQSxjQUFBLENBTGxCLElBS2tCLENBQWpELENBTCtCLENBTy9COztBQUNBLFFBQUksSUFBSSxDQUFKLElBQUEsS0FBSixnQkFBQSxFQUFvQztBQUNsQyxXQUFBLEtBQUEsQ0FBQSxRQUFBLENBQUEsSUFBQTtBQUNEOztBQUVELFFBQUksSUFBSSxDQUFKLElBQUEsS0FBSixhQUFBLEVBQWlDO0FBQy9CLFdBQUEsS0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBO0FBRUMsTUFBQSxJQUEwQixDQUExQixRQUFBLENBQUEsT0FBQSxDQUE2QyxJQUFELElBQzNDLEtBQUEsS0FBQSxDQUFBLFFBQUEsQ0FERCxJQUNDLENBREQ7QUFHRjtBQUNGOztBQUVELE1BQUEsVUFBQSxHQUFjO0FBQ1osV0FBTyxLQUFBLE1BQUEsR0FBYyxLQUFBLE1BQUEsQ0FBZCxJQUFBLEdBQVAsSUFBQTtBQUNEOztBQUVELEVBQUEsT0FBTyxHQUFBO0FBQ0wsV0FBTztBQUNMLE9BQUMsTUFBTSxDQUFQLFFBQUEsR0FBbUIsTUFBSztBQUN0QixlQUFPLElBQUEsbUJBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRDtBQUhJLEtBQVA7QUFLRDs7QUF4QzRCOzs7O0FBMkMvQixNQUFBLG1CQUFBLENBQXlCO0FBR3ZCLEVBQUEsV0FBQSxDQUFBLElBQUEsRUFBd0M7QUFDdEMsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNEOztBQUVELEVBQUEsSUFBSSxHQUFBO0FBQ0YsUUFBSSxLQUFBLElBQUEsQ0FBSixNQUFBLEVBQXNCO0FBQ3BCLFdBQUEsSUFBQSxHQUFZLEtBQUEsSUFBQSxDQUFaLE1BQUE7QUFDQSxhQUFPO0FBQUUsUUFBQSxJQUFJLEVBQU4sS0FBQTtBQUFlLFFBQUEsS0FBSyxFQUFFLEtBQUs7QUFBM0IsT0FBUDtBQUZGLEtBQUEsTUFHTztBQUNMLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixJQUFBO0FBQWMsUUFBQSxLQUFLLEVBQUU7QUFBckIsT0FBUDtBQUNEO0FBQ0Y7O0FBZHNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcbmltcG9ydCBSb290VHJhbnNmb3JtU2NvcGUsIHsgVHJhbnNmb3JtU2NvcGUgfSBmcm9tICcuL3Njb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2Fsa2VyUGF0aDxOIGV4dGVuZHMgQVNUdjEuTm9kZT4ge1xuICBub2RlOiBOO1xuICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsO1xuICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGw7XG4gIHNjb3BlOiBUcmFuc2Zvcm1TY29wZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBub2RlOiBOLFxuICAgIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGwgPSBudWxsLFxuICAgIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLnBhcmVudEtleSA9IHBhcmVudEtleTtcbiAgICB0aGlzLnNjb3BlID0gcGFyZW50ID8gcGFyZW50LnNjb3BlLmNoaWxkKG5vZGUpIDogbmV3IFJvb3RUcmFuc2Zvcm1TY29wZShub2RlKTtcblxuICAgIC8vIENvbnN1bWUgaW4gc2NvcGUgdmFsdWVzXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ1BhdGhFeHByZXNzaW9uJykge1xuICAgICAgdGhpcy5zY29wZS51c2VMb2NhbChub2RlKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnRWxlbWVudE5vZGUnKSB7XG4gICAgICB0aGlzLnNjb3BlLnVzZUxvY2FsKG5vZGUpO1xuXG4gICAgICAobm9kZSBhcyBBU1R2MS5FbGVtZW50Tm9kZSkuY2hpbGRyZW4uZm9yRWFjaCgobm9kZTogQVNUdjEuU3RhdGVtZW50KSA9PlxuICAgICAgICB0aGlzLnNjb3BlLnVzZUxvY2FsKG5vZGUpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBwYXJlbnROb2RlKCk6IEFTVHYxLk5vZGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5ub2RlIDogbnVsbDtcbiAgfVxuXG4gIHBhcmVudHMoKTogSXRlcmFibGU8V2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgW1N5bWJvbC5pdGVyYXRvcl06ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXRoUGFyZW50c0l0ZXJhdG9yKHRoaXMpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFBhdGhQYXJlbnRzSXRlcmF0b3IgaW1wbGVtZW50cyBJdGVyYXRvcjxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICBwYXRoOiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4pIHtcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5wYXRoLnBhcmVudCkge1xuICAgICAgdGhpcy5wYXRoID0gdGhpcy5wYXRoLnBhcmVudDtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogdGhpcy5wYXRoIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVjLE1BQUEsVUFBQSxDQUFpQjtBQUs3QixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBRUUsTUFBQSxHQUZGLElBQUEsRUFHRSxTQUFBLEdBSEYsSUFBQSxFQUdpQztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDRDs7QUFFRCxNQUFBLFVBQUEsR0FBYztBQUNaLFdBQU8sS0FBQSxNQUFBLEdBQWMsS0FBQSxNQUFBLENBQWQsSUFBQSxHQUFQLElBQUE7QUFDRDs7QUFFRCxFQUFBLE9BQU8sR0FBQTtBQUNMLFdBQU87QUFDTCxPQUFDLE1BQU0sQ0FBUCxRQUFBLEdBQW1CLE1BQUs7QUFDdEIsZUFBTyxJQUFBLG1CQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7QUFISSxLQUFQO0FBS0Q7O0FBekI0Qjs7OztBQTRCL0IsTUFBQSxtQkFBQSxDQUF5QjtBQUd2QixFQUFBLFdBQUEsQ0FBQSxJQUFBLEVBQXdDO0FBQ3RDLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFDRDs7QUFFRCxFQUFBLElBQUksR0FBQTtBQUNGLFFBQUksS0FBQSxJQUFBLENBQUosTUFBQSxFQUFzQjtBQUNwQixXQUFBLElBQUEsR0FBWSxLQUFBLElBQUEsQ0FBWixNQUFBO0FBQ0EsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFOLEtBQUE7QUFBZSxRQUFBLEtBQUssRUFBRSxLQUFLO0FBQTNCLE9BQVA7QUFGRixLQUFBLE1BR087QUFDTCxhQUFPO0FBQUUsUUFBQSxJQUFJLEVBQU4sSUFBQTtBQUFjLFFBQUEsS0FBSyxFQUFFO0FBQXJCLE9BQVA7QUFDRDtBQUNGOztBQWRzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4uL3YxL2FwaSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGtlclBhdGg8TiBleHRlbmRzIEFTVHYxLk5vZGU+IHtcbiAgbm9kZTogTjtcbiAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbDtcbiAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGU6IE4sXG4gICAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbCA9IG51bGwsXG4gICAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMucGFyZW50S2V5ID0gcGFyZW50S2V5O1xuICB9XG5cbiAgZ2V0IHBhcmVudE5vZGUoKTogQVNUdjEuTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm5vZGUgOiBudWxsO1xuICB9XG5cbiAgcGFyZW50cygpOiBJdGVyYWJsZTxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBhdGhQYXJlbnRzSXRlcmF0b3IodGhpcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUGF0aFBhcmVudHNJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gIHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT47XG5cbiAgY29uc3RydWN0b3IocGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPikge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnBhdGgucGFyZW50KSB7XG4gICAgICB0aGlzLnBhdGggPSB0aGlzLnBhdGgucGFyZW50O1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLnBhdGggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -18,3 +18,5 @@ "use strict";

this.this = false;
this.data = false;
this.data = false; // Cache for the head value.
this._head = undefined;
let parts = tail.slice();

@@ -35,2 +37,6 @@

get head() {
if (this._head) {
return this._head;
}
let firstPart;

@@ -49,3 +55,3 @@

}).loc;
return _publicBuilders.default.head(firstPart, firstPartLoc);
return this._head = _publicBuilders.default.head(firstPart, firstPartLoc);
}

@@ -60,2 +66,2 @@

exports.PathExpressionImplV1 = PathExpressionImplV1;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7O0FBRU0sTUFBQSxvQkFBQSxDQUEyQjtBQU0vQixFQUFBLFdBQUEsQ0FBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQTJGO0FBQXhFLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFBeUQsU0FBQSxHQUFBLEdBQUEsR0FBQTtBQUw1RSxTQUFBLElBQUEsR0FBQSxnQkFBQTtBQUVPLFNBQUEsSUFBQSxHQUFBLEtBQUE7QUFDQSxTQUFBLElBQUEsR0FBQSxLQUFBO0FBR0wsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFoQixLQUFZLEVBQVo7O0FBRUEsUUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLFVBQUEsRUFBOEI7QUFDNUIsV0FBQSxJQUFBLEdBQUEsSUFBQTtBQURGLEtBQUEsTUFFTyxJQUFJLElBQUksQ0FBSixJQUFBLEtBQUosUUFBQSxFQUE0QjtBQUNqQyxXQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQSxLQUFLLENBQUwsT0FBQSxDQUFjLElBQUksQ0FBSixJQUFBLENBQUEsS0FBQSxDQUFkLENBQWMsQ0FBZDtBQUZLLEtBQUEsTUFHQTtBQUNMLE1BQUEsS0FBSyxDQUFMLE9BQUEsQ0FBYyxJQUFJLENBQWxCLElBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0Q7O0FBRUQsTUFBQSxJQUFBLEdBQVE7QUFDTixRQUFBLFNBQUE7O0FBRUEsUUFBSSxLQUFKLElBQUEsRUFBZTtBQUNiLE1BQUEsU0FBUyxHQUFULE1BQUE7QUFERixLQUFBLE1BRU8sSUFBSSxLQUFKLElBQUEsRUFBZTtBQUNwQixNQUFBLFNBQVMsR0FBRyxJQUFJLEtBQUEsS0FBQSxDQUFBLENBQUEsQ0FBaEIsRUFBQTtBQURLLEtBQUEsTUFFQTtBQUNMLE1BQUEsU0FBUyxHQUFHLEtBQUEsS0FBQSxDQUFaLENBQVksQ0FBWjtBQUNEOztBQUVELFFBQUksWUFBWSxHQUFHLEtBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsZUFBQSxDQUEyQztBQUM1RCxNQUFBLEtBQUssRUFBRSxTQUFTLENBQUM7QUFEMkMsS0FBM0MsRUFBbkIsR0FBQTtBQUlBLFdBQU8sd0JBQUEsSUFBQSxDQUFBLFNBQUEsRUFBUCxZQUFPLENBQVA7QUFDRDs7QUFFRCxNQUFBLElBQUEsR0FBUTtBQUNOLFdBQU8sS0FBQSxJQUFBLEdBQVksS0FBWixLQUFBLEdBQXlCLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBaEMsQ0FBZ0MsQ0FBaEM7QUFDRDs7QUF6QzhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uL3NvdXJjZS9zcGFuJztcbmltcG9ydCB7IFBhdGhFeHByZXNzaW9uLCBQYXRoSGVhZCB9IGZyb20gJy4vbm9kZXMtdjEnO1xuaW1wb3J0IGIgZnJvbSAnLi9wdWJsaWMtYnVpbGRlcnMnO1xuXG5leHBvcnQgY2xhc3MgUGF0aEV4cHJlc3Npb25JbXBsVjEgaW1wbGVtZW50cyBQYXRoRXhwcmVzc2lvbiB7XG4gIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicgPSAnUGF0aEV4cHJlc3Npb24nO1xuICBwdWJsaWMgcGFydHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgdGhpcyA9IGZhbHNlO1xuICBwdWJsaWMgZGF0YSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcmlnaW5hbDogc3RyaW5nLCBoZWFkOiBQYXRoSGVhZCwgdGFpbDogc3RyaW5nW10sIHB1YmxpYyBsb2M6IFNvdXJjZVNwYW4pIHtcbiAgICBsZXQgcGFydHMgPSB0YWlsLnNsaWNlKCk7XG5cbiAgICBpZiAoaGVhZC50eXBlID09PSAnVGhpc0hlYWQnKSB7XG4gICAgICB0aGlzLnRoaXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaGVhZC50eXBlID09PSAnQXRIZWFkJykge1xuICAgICAgdGhpcy5kYXRhID0gdHJ1ZTtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lLnNsaWNlKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMudW5zaGlmdChoZWFkLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGdldCBoZWFkKCk6IFBhdGhIZWFkIHtcbiAgICBsZXQgZmlyc3RQYXJ0OiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy50aGlzKSB7XG4gICAgICBmaXJzdFBhcnQgPSAndGhpcyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGZpcnN0UGFydCA9IGBAJHt0aGlzLnBhcnRzWzBdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0UGFydCA9IHRoaXMucGFydHNbMF07XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0UGFydExvYyA9IHRoaXMubG9jLmNvbGxhcHNlKCdzdGFydCcpLnNsaWNlU3RhcnRDaGFycyh7XG4gICAgICBjaGFyczogZmlyc3RQYXJ0Lmxlbmd0aCxcbiAgICB9KS5sb2M7XG5cbiAgICByZXR1cm4gYi5oZWFkKGZpcnN0UGFydCwgZmlyc3RQYXJ0TG9jKTtcbiAgfVxuXG4gIGdldCB0YWlsKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50aGlzID8gdGhpcy5wYXJ0cyA6IHRoaXMucGFydHMuc2xpY2UoMSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7O0FBRU0sTUFBQSxvQkFBQSxDQUEyQjtBQU0vQixFQUFBLFdBQUEsQ0FBQSxRQUFBLEVBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQTJGO0FBQXhFLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFBeUQsU0FBQSxHQUFBLEdBQUEsR0FBQTtBQUw1RSxTQUFBLElBQUEsR0FBQSxnQkFBQTtBQUVPLFNBQUEsSUFBQSxHQUFBLEtBQUE7QUFDQSxTQUFBLElBQUEsR0FBQSxLQUFBLENBRW9GLENBZTNGOztBQUNBLFNBQUEsS0FBQSxHQUFBLFNBQUE7QUFmRSxRQUFJLEtBQUssR0FBRyxJQUFJLENBQWhCLEtBQVksRUFBWjs7QUFFQSxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosVUFBQSxFQUE4QjtBQUM1QixXQUFBLElBQUEsR0FBQSxJQUFBO0FBREYsS0FBQSxNQUVPLElBQUksSUFBSSxDQUFKLElBQUEsS0FBSixRQUFBLEVBQTRCO0FBQ2pDLFdBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBLEtBQUssQ0FBTCxPQUFBLENBQWMsSUFBSSxDQUFKLElBQUEsQ0FBQSxLQUFBLENBQWQsQ0FBYyxDQUFkO0FBRkssS0FBQSxNQUdBO0FBQ0wsTUFBQSxLQUFLLENBQUwsT0FBQSxDQUFjLElBQUksQ0FBbEIsSUFBQTtBQUNEOztBQUVELFNBQUEsS0FBQSxHQUFBLEtBQUE7QUFDRDs7QUFLRCxNQUFBLElBQUEsR0FBUTtBQUNOLFFBQUksS0FBSixLQUFBLEVBQWdCO0FBQ2QsYUFBTyxLQUFQLEtBQUE7QUFDRDs7QUFFRCxRQUFBLFNBQUE7O0FBRUEsUUFBSSxLQUFKLElBQUEsRUFBZTtBQUNiLE1BQUEsU0FBUyxHQUFULE1BQUE7QUFERixLQUFBLE1BRU8sSUFBSSxLQUFKLElBQUEsRUFBZTtBQUNwQixNQUFBLFNBQVMsR0FBRyxJQUFJLEtBQUEsS0FBQSxDQUFBLENBQUEsQ0FBaEIsRUFBQTtBQURLLEtBQUEsTUFFQTtBQUNMLE1BQUEsU0FBUyxHQUFHLEtBQUEsS0FBQSxDQUFaLENBQVksQ0FBWjtBQUNEOztBQUVELFFBQUksWUFBWSxHQUFHLEtBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsZUFBQSxDQUEyQztBQUM1RCxNQUFBLEtBQUssRUFBRSxTQUFTLENBQUM7QUFEMkMsS0FBM0MsRUFBbkIsR0FBQTtBQUlBLFdBQVEsS0FBQSxLQUFBLEdBQWEsd0JBQUEsSUFBQSxDQUFBLFNBQUEsRUFBckIsWUFBcUIsQ0FBckI7QUFDRDs7QUFFRCxNQUFBLElBQUEsR0FBUTtBQUNOLFdBQU8sS0FBQSxJQUFBLEdBQVksS0FBWixLQUFBLEdBQXlCLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBaEMsQ0FBZ0MsQ0FBaEM7QUFDRDs7QUFoRDhCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uL3NvdXJjZS9zcGFuJztcbmltcG9ydCB7IFBhdGhFeHByZXNzaW9uLCBQYXRoSGVhZCB9IGZyb20gJy4vbm9kZXMtdjEnO1xuaW1wb3J0IGIgZnJvbSAnLi9wdWJsaWMtYnVpbGRlcnMnO1xuXG5leHBvcnQgY2xhc3MgUGF0aEV4cHJlc3Npb25JbXBsVjEgaW1wbGVtZW50cyBQYXRoRXhwcmVzc2lvbiB7XG4gIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicgPSAnUGF0aEV4cHJlc3Npb24nO1xuICBwdWJsaWMgcGFydHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgdGhpcyA9IGZhbHNlO1xuICBwdWJsaWMgZGF0YSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcmlnaW5hbDogc3RyaW5nLCBoZWFkOiBQYXRoSGVhZCwgdGFpbDogc3RyaW5nW10sIHB1YmxpYyBsb2M6IFNvdXJjZVNwYW4pIHtcbiAgICBsZXQgcGFydHMgPSB0YWlsLnNsaWNlKCk7XG5cbiAgICBpZiAoaGVhZC50eXBlID09PSAnVGhpc0hlYWQnKSB7XG4gICAgICB0aGlzLnRoaXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaGVhZC50eXBlID09PSAnQXRIZWFkJykge1xuICAgICAgdGhpcy5kYXRhID0gdHJ1ZTtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lLnNsaWNlKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMudW5zaGlmdChoZWFkLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIC8vIENhY2hlIGZvciB0aGUgaGVhZCB2YWx1ZS5cbiAgX2hlYWQ/OiBQYXRoSGVhZCA9IHVuZGVmaW5lZDtcblxuICBnZXQgaGVhZCgpOiBQYXRoSGVhZCB7XG4gICAgaWYgKHRoaXMuX2hlYWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9oZWFkO1xuICAgIH1cblxuICAgIGxldCBmaXJzdFBhcnQ6IHN0cmluZztcblxuICAgIGlmICh0aGlzLnRoaXMpIHtcbiAgICAgIGZpcnN0UGFydCA9ICd0aGlzJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgZmlyc3RQYXJ0ID0gYEAke3RoaXMucGFydHNbMF19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlyc3RQYXJ0ID0gdGhpcy5wYXJ0c1swXTtcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RQYXJ0TG9jID0gdGhpcy5sb2MuY29sbGFwc2UoJ3N0YXJ0Jykuc2xpY2VTdGFydENoYXJzKHtcbiAgICAgIGNoYXJzOiBmaXJzdFBhcnQubGVuZ3RoLFxuICAgIH0pLmxvYztcblxuICAgIHJldHVybiAodGhpcy5faGVhZCA9IGIuaGVhZChmaXJzdFBhcnQsIGZpcnN0UGFydExvYykpO1xuICB9XG5cbiAgZ2V0IHRhaWwoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnRoaXMgPyB0aGlzLnBhcnRzIDogdGhpcy5wYXJ0cy5zbGljZSgxKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

var _util = require("@glimmer/util");
function node(name) {

@@ -17,4 +19,3 @@ if (name !== undefined) {

this.type = type;
this.loc = fields.loc;
copy(fields, this);
(0, _util.assign)(this, fields);
}

@@ -31,4 +32,3 @@

constructor(fields) {
this.loc = fields.loc;
copy(fields, this);
(0, _util.assign)(this, fields);
}

@@ -42,12 +42,2 @@

}
function keys(object) {
return Object.keys(object);
}
function copy(object1, object2) {
for (let key of keys(object1)) {
object2[key] = object1[key];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQTBDTSxTQUFBLElBQUEsQ0FBQSxJQUFBLEVBQ0k7QUFRUixNQUFJLElBQUksS0FBUixTQUFBLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSSxHQUFWLElBQUE7QUFDQSxXQUFPO0FBQ0wsTUFBQSxNQUFNLEdBQUE7QUFDSixlQUFPLE1BQUE7QUFJTCxVQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQTJDO0FBQ3pDLGlCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsaUJBQUEsR0FBQSxHQUFXLE1BQU0sQ0FBakIsR0FBQTtBQUNBLFlBQUEsSUFBSSxDQUFBLE1BQUEsRUFBSixJQUFJLENBQUo7QUFDRDs7QUFSSSxTQUFQO0FBVUQ7O0FBWkksS0FBUDtBQUZGLEdBQUEsTUFnQk87QUFDTCxXQUFPO0FBQ0wsTUFBQSxNQUFNLEdBQUE7QUFDSixlQUFPLE1BQUE7QUFHTCxVQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQTJDO0FBQ3pDLGlCQUFBLEdBQUEsR0FBVyxNQUFNLENBQWpCLEdBQUE7QUFFQSxZQUFBLElBQUksQ0FBQSxNQUFBLEVBQUosSUFBSSxDQUFKO0FBQ0Q7O0FBUEksU0FBUDtBQVNEOztBQVhJLEtBQVA7QUFhRDtBQUNGOztBQWdCRCxTQUFBLElBQUEsQ0FBQSxNQUFBLEVBQXlDO0FBQ3ZDLFNBQU8sTUFBTSxDQUFOLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFDRDs7QUFFRCxTQUFBLElBQUEsQ0FBQSxPQUFBLEVBQUEsT0FBQSxFQUFzRDtBQUNwRCxPQUFLLElBQUwsR0FBQSxJQUFnQixJQUFJLENBQXBCLE9BQW9CLENBQXBCLEVBQStCO0FBQzdCLElBQUEsT0FBTyxDQUFQLEdBQU8sQ0FBUCxHQUFlLE9BQU8sQ0FBdEIsR0FBc0IsQ0FBdEI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uLy4uL3NvdXJjZS9zcGFuJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTm9kZUZpZWxkcyB7XG4gIGxvYzogU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIEFTVHYyIG5vZGVzLCB3aXRoIGFuIG9wdGlvbmFsIG5hbWUgYW5kIHRoZSBub2RlJ3NcbiAqIG9wdGlvbnMuXG4gKlxuICogYGBgdHNcbiAqIGV4cG9ydCBjbGFzcyBIdG1sVGV4dCBleHRlbmRzIG5vZGUoJ0h0bWxUZXh0JykuZmllbGRzPHsgY2hhcnM6IHN0cmluZyB9PigpIHt9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNyZWF0ZXMgYSBuZXcgQVNUdjIgbm9kZSB3aXRoIHRoZSBuYW1lIGAnSHRtbFRleHQnYCBhbmQgb25lIGZpZWxkIGBjaGFyczogc3RyaW5nYCAoaW5cbiAqIGFkZGl0aW9uIHRvIGEgYGxvYzogU291cmNlT2Zmc2V0c2AgZmllbGQsIHdoaWNoIGFsbCBub2RlcyBoYXZlKS5cbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNsYXNzIEFyZ3MgZXh0ZW5kcyBub2RlKCkuZmllbGRzPHtcbiAqICBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJndW1lbnRzO1xuICogIG5hbWVkOiBOYW1lZEFyZ3VtZW50c1xuICogfT4oKSB7fVxuICogYGBgXG4gKlxuICogVGhpcyBjcmVhdGVzIGEgbmV3IHVuLW5hbWVkIEFTVHYyIG5vZGUgd2l0aCB0d28gZmllbGRzIChgcG9zaXRpb25hbDogUG9zaXRpb25hbGAgYW5kIGBuYW1lZDpcbiAqIE5hbWVkYCwgaW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgYGxvYzogU291cmNlT2Zmc2V0c2AgZmllbGQpLlxuICpcbiAqIE9uY2UgeW91IGNyZWF0ZSBhIG5vZGUgdXNpbmcgYG5vZGVgLCBpdCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhbGwgb2YgaXRzIGZpZWxkcyAoaW5jbHVkaW5nIGBsb2NgKTpcbiAqXG4gKiBgYGB0c1xuICogbmV3IEh0bWxUZXh0KHsgbG9jOiBvZmZzZXRzLCBjaGFyczogc29tZVN0cmluZyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSgpOiB7XG4gIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG59O1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGU8VCBleHRlbmRzIHN0cmluZz4oXG4gIG5hbWU6IFRcbik6IHtcbiAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgRmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGU8VCBleHRlbmRzIHN0cmluZz4oXG4gIG5hbWU/OiBUXG4pOlxuICB8IHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbiAgICB9XG4gIHwge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbiAgICB9IHtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHR5cGUgPSBuYW1lO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz4ge1xuICAgICAgICByZXR1cm4gY2xhc3Mge1xuICAgICAgICAgIHJlYWRvbmx5IGxvYzogU291cmNlU3BhbjtcbiAgICAgICAgICByZWFkb25seSB0eXBlOiBUO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHRoaXMubG9jID0gZmllbGRzLmxvYztcbiAgICAgICAgICAgIGNvcHkoZmllbGRzLCAodGhpcyBhcyB1bmtub3duKSBhcyBDb25zdHJ1Y3RpbmdUeXBlZE5vZGU8RmllbGRzPik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcz4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5sb2MgPSBmaWVsZHMubG9jO1xuXG4gICAgICAgICAgICBjb3B5KGZpZWxkcywgKHRoaXMgYXMgdW5rbm93bikgYXMgQ29uc3RydWN0aW5nTm9kZTxGaWVsZHM+KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgTm9kZUNvbnN0cnVjdG9yPEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG50eXBlIENvbnN0cnVjdGluZ1R5cGVkTm9kZTxGaWVsZHM+ID0gRmllbGRzICYgQmFzZU5vZGVGaWVsZHM7XG5cbnR5cGUgQ29uc3RydWN0aW5nTm9kZTxGaWVsZHM+ID0gQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbnN0cnVjdG9yPEZpZWxkcz4ge1xuICBuZXcgKGZpZWxkczogRmllbGRzKTogUmVhZG9ubHk8RmllbGRzPjtcbn1cblxudHlwZSBUeXBlZE5vZGU8VCBleHRlbmRzIHN0cmluZywgRmllbGRzPiA9IHsgdHlwZTogVCB9ICYgUmVhZG9ubHk8RmllbGRzPjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxUIGV4dGVuZHMgc3RyaW5nLCBGaWVsZHM+IHtcbiAgbmV3IChvcHRpb25zOiBGaWVsZHMpOiBUeXBlZE5vZGU8VCwgRmllbGRzPjtcbn1cblxuZnVuY3Rpb24ga2V5czxPIGV4dGVuZHMgb2JqZWN0PihvYmplY3Q6IE8pOiAoa2V5b2YgTylbXSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpIGFzIChrZXlvZiBPKVtdO1xufVxuXG5mdW5jdGlvbiBjb3B5PE8gZXh0ZW5kcyBvYmplY3Q+KG9iamVjdDE6IE8sIG9iamVjdDI6IE8pIHtcbiAgZm9yIChsZXQga2V5IG9mIGtleXMob2JqZWN0MSkpIHtcbiAgICBvYmplY3QyW2tleV0gPSBvYmplY3QxW2tleV07XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQTRDTSxTQUFBLElBQUEsQ0FBQSxJQUFBLEVBQ0k7QUFRUixNQUFJLElBQUksS0FBUixTQUFBLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSSxHQUFWLElBQUE7QUFDQSxXQUFPO0FBQ0wsTUFBQSxNQUFNLEdBQUE7QUFDSixlQUFPLE1BQUE7QUFLTCxVQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQTJDO0FBQ3pDLGlCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsOEJBQU0sSUFBTixFQUFBLE1BQUE7QUFDRDs7QUFSSSxTQUFQO0FBVUQ7O0FBWkksS0FBUDtBQUZGLEdBQUEsTUFnQk87QUFDTCxXQUFPO0FBQ0wsTUFBQSxNQUFNLEdBQUE7QUFDSixlQUFPLE1BQUE7QUFJTCxVQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQTJDO0FBQ3pDLDhCQUFNLElBQU4sRUFBQSxNQUFBO0FBQ0Q7O0FBTkksU0FBUDtBQVFEOztBQVZJLEtBQVA7QUFZRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi8uLi9zb3VyY2Uvc3Bhbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5vZGVGaWVsZHMge1xuICBsb2M6IFNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBBU1R2MiBub2Rlcywgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGFuZCB0aGUgbm9kZSdzXG4gKiBvcHRpb25zLlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY2xhc3MgSHRtbFRleHQgZXh0ZW5kcyBub2RlKCdIdG1sVGV4dCcpLmZpZWxkczx7IGNoYXJzOiBzdHJpbmcgfT4oKSB7fVxuICogYGBgXG4gKlxuICogVGhpcyBjcmVhdGVzIGEgbmV3IEFTVHYyIG5vZGUgd2l0aCB0aGUgbmFtZSBgJ0h0bWxUZXh0J2AgYW5kIG9uZSBmaWVsZCBgY2hhcnM6IHN0cmluZ2AgKGluXG4gKiBhZGRpdGlvbiB0byBhIGBsb2M6IFNvdXJjZU9mZnNldHNgIGZpZWxkLCB3aGljaCBhbGwgbm9kZXMgaGF2ZSkuXG4gKlxuICogYGBgdHNcbiAqIGV4cG9ydCBjbGFzcyBBcmdzIGV4dGVuZHMgbm9kZSgpLmZpZWxkczx7XG4gKiAgcG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3VtZW50cztcbiAqICBuYW1lZDogTmFtZWRBcmd1bWVudHNcbiAqIH0+KCkge31cbiAqIGBgYFxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIG5ldyB1bi1uYW1lZCBBU1R2MiBub2RlIHdpdGggdHdvIGZpZWxkcyAoYHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxgIGFuZCBgbmFtZWQ6XG4gKiBOYW1lZGAsIGluIGFkZGl0aW9uIHRvIHRoZSBnZW5lcmljIGBsb2M6IFNvdXJjZU9mZnNldHNgIGZpZWxkKS5cbiAqXG4gKiBPbmNlIHlvdSBjcmVhdGUgYSBub2RlIHVzaW5nIGBub2RlYCwgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggYWxsIG9mIGl0cyBmaWVsZHMgKGluY2x1ZGluZyBgbG9jYCk6XG4gKlxuICogYGBgdHNcbiAqIG5ldyBIdG1sVGV4dCh7IGxvYzogb2Zmc2V0cywgY2hhcnM6IHNvbWVTdHJpbmcgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGUoKToge1xuICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xufTtcbmV4cG9ydCBmdW5jdGlvbiBub2RlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICBuYW1lOiBUXG4pOiB7XG4gIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICBuYW1lPzogVFxuKTpcbiAgfCB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG4gICAgfVxuICB8IHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG4gICAgfSB7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB0eXBlID0gbmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzIHtcbiAgICAgICAgICAvLyBTQUZFVFk6IGluaXRpYWxpemVkIHZpYSBgYXNzaWduYCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAgZGVjbGFyZSByZWFkb25seSBsb2M6IFNvdXJjZVNwYW47XG4gICAgICAgICAgcmVhZG9ubHkgdHlwZTogVDtcblxuICAgICAgICAgIGNvbnN0cnVjdG9yKGZpZWxkczogQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICBhc3NpZ24odGhpcywgZmllbGRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM+O1xuICAgICAgfSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM8RmllbGRzPigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzIHtcbiAgICAgICAgICAvLyBTQUZFVFk6IGluaXRpYWxpemVkIHZpYSBgYXNzaWduYCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAgZGVjbGFyZSByZWFkb25seSBsb2M6IFNvdXJjZVNwYW47XG5cbiAgICAgICAgICBjb25zdHJ1Y3RvcihmaWVsZHM6IEJhc2VOb2RlRmllbGRzICYgRmllbGRzKSB7XG4gICAgICAgICAgICBhc3NpZ24odGhpcywgZmllbGRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgTm9kZUNvbnN0cnVjdG9yPEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHM+IHtcbiAgbmV3IChmaWVsZHM6IEZpZWxkcyk6IFJlYWRvbmx5PEZpZWxkcz47XG59XG5cbnR5cGUgVHlwZWROb2RlPFQgZXh0ZW5kcyBzdHJpbmcsIEZpZWxkcz4gPSB7IHR5cGU6IFQgfSAmIFJlYWRvbmx5PEZpZWxkcz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWROb2RlQ29uc3RydWN0b3I8VCBleHRlbmRzIHN0cmluZywgRmllbGRzPiB7XG4gIG5ldyAob3B0aW9uczogRmllbGRzKTogVHlwZWROb2RlPFQsIEZpZWxkcz47XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -55,21 +55,2 @@ "use strict";

var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _whens, _map, _whens_1;
/**

@@ -90,5 +71,3 @@ * This file implements the DSL used by span and offset in places where they need to exhaustively

function WhenList(whens) {
_whens.set(this, void 0);
__classPrivateFieldSet(this, _whens, whens);
this._whens = whens;
}

@@ -99,3 +78,3 @@

_proto.first = function first(kind) {
for (var _iterator = _createForOfIteratorHelperLoose(__classPrivateFieldGet(this, _whens)), _step; !(_step = _iterator()).done;) {
for (var _iterator = _createForOfIteratorHelperLoose(this._whens), _step; !(_step = _iterator()).done;) {
var when = _step.value;

@@ -115,7 +94,5 @@ var value = when.match(kind);

_whens = new WeakMap();
var When = /*#__PURE__*/function () {
function When() {
_map.set(this, new Map());
this._map = new Map();
}

@@ -126,3 +103,3 @@

_proto2.get = function get(pattern, or) {
var value = __classPrivateFieldGet(this, _map).get(pattern);
var value = this._map.get(pattern);

@@ -135,3 +112,3 @@ if (value) {

__classPrivateFieldGet(this, _map).set(pattern, value);
this._map.set(pattern, value);

@@ -142,3 +119,3 @@ return value;

_proto2.add = function add(pattern, out) {
__classPrivateFieldGet(this, _map).set(pattern, out);
this._map.set(pattern, out);
};

@@ -150,5 +127,5 @@

var exact = __classPrivateFieldGet(this, _map).get(pattern);
var exact = this._map.get(pattern);
var fallback = __classPrivateFieldGet(this, _map).get(MatchAny);
var fallback = this._map.get(MatchAny);

@@ -169,4 +146,2 @@ if (exact) {

_map = new WeakMap();
function match(callback) {

@@ -178,3 +153,3 @@ return callback(new Matcher()).check();

function Matcher() {
_whens_1.set(this, new When());
this._whens = new When();
}

@@ -197,3 +172,3 @@ /**

_proto3.matchFor = function matchFor(left, right) {
var nesteds = __classPrivateFieldGet(this, _whens_1).match(left);
var nesteds = this._whens.match(left);

@@ -208,3 +183,3 @@ false && (0, _util.assert)((0, _util.isPresent)(nesteds), "no match defined for (" + left + ", " + right + ") and no AnyMatch defined either");

callback) {
__classPrivateFieldGet(this, _whens_1).get(left, function () {
this._whens.get(left, function () {
return new When();

@@ -219,4 +194,2 @@ }).add(right, callback);

_whens_1 = new WeakMap();
function patternFor(kind) {

@@ -239,2 +212,2 @@ switch (kind) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBOzs7Ozs7OztBQVNPLElBQU0sUUFBUSxHQUFkLFdBQUE7O0FBV0EsSUFBTSxXQUFXLEdBQWpCLGNBQUE7OztJQUtQLFE7QUFHRSxXQUFBLFFBQUEsQ0FBQSxLQUFBLEVBQThCO0FBRjlCLElBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBOztBQUdFLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxFQUFBLEtBQUEsQ0FBQTtBQUNEOzs7O1NBRUQsSyxHQUFBLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBc0I7QUFDcEIsU0FBQSxJQUFBLFNBQUEsR0FBQSwrQkFBQSxDQUFhLHNCQUFBLENBQUEsSUFBQSxFQUFiLE1BQWEsQ0FBYixDQUFBLEVBQUEsS0FBQSxFQUFBLENBQUEsQ0FBQSxLQUFBLEdBQUEsU0FBQSxFQUFBLEVBQUEsSUFBQSxHQUE4QjtBQUFBLFVBQTlCLElBQThCLEdBQUEsS0FBQSxDQUFBLEtBQUE7QUFDNUIsVUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFKLEtBQUEsQ0FBWixJQUFZLENBQVo7O0FBQ0EsVUFBSSxxQkFBSixLQUFJLENBQUosRUFBc0I7QUFDcEIsZUFBTyxLQUFLLENBQVosQ0FBWSxDQUFaO0FBQ0Q7QUFDRjs7QUFFRCxXQUFBLElBQUE7Ozs7Ozs7O0lBSUosSTtBQUFBLFdBQUEsSUFBQSxHQUFBO0FBQ0UsSUFBQSxJQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBMEIsSUFBMUIsR0FBMEIsRUFBMUI7QUFzQ0Q7Ozs7VUFwQ0MsRyxHQUFBLFNBQUEsR0FBQSxDQUFBLE9BQUEsRUFBQSxF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VUFBQSxDQUFBLElBQUEsRUFBb0M7QUFDbEMsVUFBQSxJQUFBO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDQSxTQUFBO0FBQUE7QUFBQTtBQUNBLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxXQUFBOztBQUNGO0FBQ0UsYUFBQSxJQUFBO0FBTko7QUFRRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCwgaXNQcmVzZW50IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IENoYXJQb3NpdGlvbiwgSGJzUG9zaXRpb24sIEludmlzaWJsZVBvc2l0aW9uLCBPZmZzZXRLaW5kLCBQb3NpdGlvbkRhdGEgfSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIERTTCB1c2VkIGJ5IHNwYW4gYW5kIG9mZnNldCBpbiBwbGFjZXMgd2hlcmUgdGhleSBuZWVkIHRvIGV4aGF1c3RpdmVseVxuICogY29uc2lkZXIgYWxsIGNvbWJpbmF0aW9ucyBvZiBzdGF0ZXMgKEhhbmRsZWJhcnMgb2Zmc2V0cywgY2hhcmFjdGVyIG9mZnNldHMgYW5kIGludmlzaWJsZS9icm9rZW5cbiAqIG9mZnNldHMpLlxuICpcbiAqIEl0J3MgcHJvYmFibHkgb3ZlcmtpbGwsIGJ1dCBpdCBtYWtlcyB0aGUgY29kZSB0aGF0IHVzZXMgaXQgY2xlYXIuIEl0IGNvdWxkIGJlIHJlZmFjdG9yZWQgb3JcbiAqIHJlbW92ZWQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1hdGNoQW55ID0gJ01BVENIX0FOWSc7XG5leHBvcnQgdHlwZSBNYXRjaEFueSA9ICdNQVRDSF9BTlknO1xuXG50eXBlIE1hdGNoZXMgPVxuICB8ICdDaGFyLEhicydcbiAgfCAnSGJzLENoYXInXG4gIHwgJ0hicyxIYnMnXG4gIHwgJ0NoYXIsQ2hhcidcbiAgfCAnSW52aXNpYmxlLEFueSdcbiAgfCAnQW55LEludmlzaWJsZSc7XG5cbmV4cG9ydCBjb25zdCBJc0ludmlzaWJsZSA9ICdJU19JTlZJU0lCTEUnO1xuZXhwb3J0IHR5cGUgSXNJbnZpc2libGUgPSAnSVNfSU5WSVNJQkxFJztcblxudHlwZSBQYXR0ZXJuID0gT2Zmc2V0S2luZCB8IElzSW52aXNpYmxlIHwgTWF0Y2hBbnk7XG5cbmNsYXNzIFdoZW5MaXN0PE91dD4ge1xuICAjd2hlbnM6IFdoZW48T3V0PltdO1xuXG4gIGNvbnN0cnVjdG9yKHdoZW5zOiBXaGVuPE91dD5bXSkge1xuICAgIHRoaXMuI3doZW5zID0gd2hlbnM7XG4gIH1cblxuICBmaXJzdChraW5kOiBPZmZzZXRLaW5kKTogT3V0IHwgbnVsbCB7XG4gICAgZm9yIChsZXQgd2hlbiBvZiB0aGlzLiN3aGVucykge1xuICAgICAgbGV0IHZhbHVlID0gd2hlbi5tYXRjaChraW5kKTtcbiAgICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVswXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jbGFzcyBXaGVuPE91dD4ge1xuICAjbWFwOiBNYXA8UGF0dGVybiwgT3V0PiA9IG5ldyBNYXAoKTtcblxuICBnZXQocGF0dGVybjogUGF0dGVybiwgb3I6ICgpID0+IE91dCk6IE91dCB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy4jbWFwLmdldChwYXR0ZXJuKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gb3IoKTtcblxuICAgIHRoaXMuI21hcC5zZXQocGF0dGVybiwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRkKHBhdHRlcm46IFBhdHRlcm4sIG91dDogT3V0KTogdm9pZCB7XG4gICAgdGhpcy4jbWFwLnNldChwYXR0ZXJuLCBvdXQpO1xuICB9XG5cbiAgbWF0Y2goa2luZDogT2Zmc2V0S2luZCk6IE91dFtdIHtcbiAgICBsZXQgcGF0dGVybiA9IHBhdHRlcm5Gb3Ioa2luZCk7XG5cbiAgICBsZXQgb3V0OiBPdXRbXSA9IFtdO1xuXG4gICAgbGV0IGV4YWN0ID0gdGhpcy4jbWFwLmdldChwYXR0ZXJuKTtcbiAgICBsZXQgZmFsbGJhY2sgPSB0aGlzLiNtYXAuZ2V0KE1hdGNoQW55KTtcblxuICAgIGlmIChleGFjdCkge1xuICAgICAgb3V0LnB1c2goZXhhY3QpO1xuICAgIH1cblxuICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgb3V0LnB1c2goZmFsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxudHlwZSBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBJbiBleHRlbmRzIE1hdGNoZXMsIFJlbW92ZWQgZXh0ZW5kcyBNYXRjaGVzPiA9IEV4Y2x1ZGU8XG4gIEluLFxuICBSZW1vdmVkXG4+IGV4dGVuZHMgbmV2ZXJcbiAgPyBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+XG4gIDogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8SW4sIFJlbW92ZWQ+PjtcblxuZXhwb3J0IHR5cGUgTWF0Y2hGbjxPdXQ+ID0gKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0O1xuXG5pbnRlcmZhY2UgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gIGNoZWNrKCk6IE1hdGNoRm48T3V0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoPE91dD4oY2FsbGJhY2s6IChtOiBNYXRjaGVyPE91dD4pID0+IEV4aGF1c3RpdmVNYXRjaGVyPE91dD4pOiBNYXRjaEZuPE91dD4ge1xuICByZXR1cm4gY2FsbGJhY2sobmV3IE1hdGNoZXIoKSkuY2hlY2soKTtcbn1cblxuY2xhc3MgTWF0Y2hlcjxPdXQsIE0gZXh0ZW5kcyBNYXRjaGVzID0gTWF0Y2hlcz4ge1xuICAjd2hlbnM6IFdoZW48V2hlbjwobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQ+PiA9IG5ldyBXaGVuKCk7XG5cbiAgLyoqXG4gICAqIFlvdSBkaWRuJ3QgZXhoYXVzdGl2ZWx5IG1hdGNoIGFsbCBwb3NzaWJpbGl0aWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNoZWNrKCk6IE1hdGNoRm48T3V0PiB7XG4gICAgcmV0dXJuIChsZWZ0LCByaWdodCkgPT4gdGhpcy5tYXRjaEZvcihsZWZ0LmtpbmQsIHJpZ2h0LmtpbmQpKGxlZnQsIHJpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hGb3IoXG4gICAgbGVmdDogT2Zmc2V0S2luZCxcbiAgICByaWdodDogT2Zmc2V0S2luZFxuICApOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQge1xuICAgIGxldCBuZXN0ZWRzID0gdGhpcy4jd2hlbnMubWF0Y2gobGVmdCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBpc1ByZXNlbnQobmVzdGVkcyksXG4gICAgICBgbm8gbWF0Y2ggZGVmaW5lZCBmb3IgKCR7bGVmdH0sICR7cmlnaHR9KSBhbmQgbm8gQW55TWF0Y2ggZGVmaW5lZCBlaXRoZXJgXG4gICAgKTtcblxuICAgIGxldCBjYWxsYmFjayA9IG5ldyBXaGVuTGlzdChuZXN0ZWRzKS5maXJzdChyaWdodCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBjYWxsYmFjayAhPT0gbnVsbCxcbiAgICAgIGBubyBtYXRjaCBkZWZpbmVkIGZvciAoJHtsZWZ0fSwgJHtyaWdodH0pIGFuZCBubyBBbnlNYXRjaCBkZWZpbmVkIGVpdGhlcmBcbiAgICApO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9XG5cbiAgLy8gVGhpcyBiaWcgYmxvY2sgaXMgdGhlIGJ1bGsgb2YgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gdGhpcyBmaWxlLiBJdCBmYWNpbGl0YXRlcyBleGhhdXN0aXZlbmVzc1xuICAvLyBjaGVja2luZyBzbyB0aGF0IG1hdGNoZXJzIGNhbiBlbnN1cmUgdGhleSd2ZSBhY3R1YWxseSBjb3ZlcmVkIGFsbCB0aGUgY2FzZXMgKGFuZCBUeXBlU2NyaXB0XG4gIC8vIHdpbGwgdHJlYXQgaXQgYXMgYW4gZXhoYXVzdGl2ZSBtYXRjaCkuXG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBDaGFyUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdDaGFyLEhicyc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBDaGFyUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnSGJzLENoYXInPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdIYnMsSGJzJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogQ2hhclBvc2l0aW9uLCByaWdodDogQ2hhclBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0NoYXIsQ2hhcic+O1xuICB3aGVuKFxuICAgIGxlZnQ6IElzSW52aXNpYmxlLFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IEludmlzaWJsZVBvc2l0aW9uLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8TSwgJ0ludmlzaWJsZSxBbnknPj47XG4gIHdoZW4oXG4gICAgbGVmdDogTWF0Y2hBbnksXG4gICAgcmlnaHQ6IElzSW52aXNpYmxlLFxuICAgIGNhbGxiYWNrOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogSW52aXNpYmxlUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQW55LEludmlzaWJsZSc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE1hdGNoQW55LFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVNYXRjaGVyPE91dD47XG4gIHdoZW4oXG4gICAgbGVmdDogUGF0dGVybixcbiAgICByaWdodDogUGF0dGVybixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNhbGxiYWNrOiAobGVmdDogYW55LCByaWdodDogYW55KSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIE1hdGNoZXM+IHwgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gICAgdGhpcy4jd2hlbnMuZ2V0KGxlZnQsICgpID0+IG5ldyBXaGVuKCkpLmFkZChyaWdodCwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGF0dGVybkZvcihraW5kOiBPZmZzZXRLaW5kKTogUGF0dGVybiB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgT2Zmc2V0S2luZC5Ccm9rZW46XG4gICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICBjYXNlIE9mZnNldEtpbmQuTm9uRXhpc3RlbnQ6XG4gICAgICByZXR1cm4gSXNJbnZpc2libGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBraW5kO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUE7Ozs7Ozs7O0FBU08sSUFBTSxRQUFRLEdBQWQsV0FBQTs7QUFXQSxJQUFNLFdBQVcsR0FBakIsY0FBQTs7O0lBS1AsUTtBQUdFLFdBQUEsUUFBQSxDQUFBLEtBQUEsRUFBOEI7QUFDNUIsU0FBQSxNQUFBLEdBQUEsS0FBQTtBQUNEOzs7O1NBRUQsSyxHQUFBLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBc0I7QUFDcEIsU0FBQSxJQUFBLFNBQUEsR0FBQSwrQkFBQSxDQUFpQixLQUFqQixNQUFBLENBQUEsRUFBQSxLQUFBLEVBQUEsQ0FBQSxDQUFBLEtBQUEsR0FBQSxTQUFBLEVBQUEsRUFBQSxJQUFBLEdBQThCO0FBQUEsVUFBOUIsSUFBOEIsR0FBQSxLQUFBLENBQUEsS0FBQTtBQUM1QixVQUFJLEtBQUssR0FBRyxJQUFJLENBQUosS0FBQSxDQUFaLElBQVksQ0FBWjs7QUFDQSxVQUFJLHFCQUFKLEtBQUksQ0FBSixFQUFzQjtBQUNwQixlQUFPLEtBQUssQ0FBWixDQUFZLENBQVo7QUFDRDtBQUNGOztBQUVELFdBQUEsSUFBQTs7Ozs7O0lBSUosSTtBQUFBLFdBQUEsSUFBQSxHQUFBO0FBQ0UsU0FBQSxJQUFBLEdBQTBCLElBQTFCLEdBQTBCLEVBQTFCO0FBc0NEOzs7O1VBcENDLEcsR0FBQSxTQUFBLEdBQUEsQ0FBQSxPQUFBLEVBQUEsRUFBQSxFQUFtQztBQUNqQyxRQUFJLEtBQUssR0FBRyxLQUFBLElBQUEsQ0FBQSxHQUFBLENBQVosT0FBWSxDQUFaOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsSUFBQSxLQUFLLEdBQUcsRUFBUixFQUFBOztBQUVBLFNBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxPQUFBLEVBQUEsS0FBQTs7QUFFQSxXQUFBLEtBQUE7OztVQUdGLEcsR0FBQSxTQUFBLEdBQUEsQ0FBQSxPQUFBLEVBQUEsR0FBQSxFQUE4QjtBQUM1QixTQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEdBQUE7OztVQUdGLEssR0FBQSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQXNCO0FBQ3BCLFFBQUksT0FBTyxHQUFHLFVBQVUsQ0FBeEIsSUFBd0IsQ0FBeEI7QUFFQSxRQUFJLEdBQUcsR0FBUCxFQUFBOztBQUVBLFFBQUksS0FBSyxHQUFHLEtBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBWixPQUFZLENBQVo7O0FBQ0EsUUFBSSxRQUFRLEdBQUcsS0FBQSxJQUFBLENBQUEsR0FBQSxDQUFmLFFBQWUsQ0FBZjs7QUFFQSxRQUFBLEtBQUEsRUFBVztBQUNULE1BQUEsR0FBRyxDQUFILElBQUEsQ0FBQSxLQUFBO0FBQ0Q7O0FBRUQsUUFBQSxRQUFBLEVBQWM7QUFDWixNQUFBLEdBQUcsQ0FBSCxJQUFBLENBQUEsUUFBQTtBQUNEOztBQUVELFdBQUEsR0FBQTs7Ozs7O0FBaUJFLFNBQUEsS0FBQSxDQUFBLFFBQUEsRUFBMEU7QUFDOUUsU0FBTyxRQUFRLENBQUMsSUFBVCxPQUFTLEVBQUQsQ0FBUixDQUFQLEtBQU8sRUFBUDtBQUNEOztJQUVELE87QUFBQSxXQUFBLE9BQUEsR0FBQTtBQUNFLFNBQUEsTUFBQSxHQUF1RSxJQUF2RSxJQUF1RSxFQUF2RTtBQThFRDtBQTVFQzs7Ozs7OztVQUdVLEssR0FBQSxTQUFBLEtBQUEsR0FBSztBQUFBLFFBQUEsS0FBQSxHQUFBLElBQUE7O0FBQ2IsV0FBTyxVQUFBLElBQUEsRUFBQSxLQUFBLEVBQUE7QUFBQSxhQUFpQixLQUFBLENBQUEsUUFBQSxDQUFjLElBQUksQ0FBbEIsSUFBQSxFQUF5QixLQUFLLENBQTlCLElBQUEsRUFBQSxJQUFBLEVBQXhCLEtBQXdCLENBQWpCO0FBQVAsS0FBQTs7O1VBR00sUSxHQUFBLFNBQUEsUUFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBRVc7QUFFakIsUUFBSSxPQUFPLEdBQUcsS0FBQSxNQUFBLENBQUEsS0FBQSxDQUFkLElBQWMsQ0FBZDs7QUFGaUIsYUFJakIsa0JBQ0UscUJBREksT0FDSixDQURGLEVBQU0sMkJBQUEsSUFBQSxHQUFBLElBQUEsR0FKVyxLQUlYLEdBSlcsa0NBSWpCLENBSmlCO0FBU2pCLFFBQUksUUFBUSxHQUFHLElBQUEsUUFBQSxDQUFBLE9BQUEsRUFBQSxLQUFBLENBQWYsS0FBZSxDQUFmO0FBVGlCLGFBV2pCLGtCQUNFLFFBQVEsS0FESixJQUFOLEVBQU0sMkJBQUEsSUFBQSxHQUFBLElBQUEsR0FYVyxLQVdYLEdBWFcsa0NBV2pCLENBWGlCO0FBZ0JqQixXQUFBLFFBQUE7OztVQXlDRixJLEdBQUEsU0FBQSxJQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsRUFHRTtBQUhGLEVBQUEsUUFBQSxFQUkwQztBQUV4QyxTQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUFzQixZQUFBO0FBQUEsYUFBTSxJQUE1QixJQUE0QixFQUFOO0FBQXRCLEtBQUEsRUFBQSxHQUFBLENBQUEsS0FBQSxFQUFBLFFBQUE7O0FBRUEsV0FBQSxJQUFBOzs7Ozs7QUFJSixTQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQW9DO0FBQ2xDLFVBQUEsSUFBQTtBQUNFLFNBQUE7QUFBQTtBQUFBO0FBQ0EsU0FBQTtBQUFBO0FBQUE7QUFDQSxTQUFBO0FBQUE7QUFBQTtBQUNFLGFBQUEsV0FBQTs7QUFDRjtBQUNFLGFBQUEsSUFBQTtBQU5KO0FBUUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQsIGlzUHJlc2VudCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBDaGFyUG9zaXRpb24sIEhic1Bvc2l0aW9uLCBJbnZpc2libGVQb3NpdGlvbiwgT2Zmc2V0S2luZCwgUG9zaXRpb25EYXRhIH0gZnJvbSAnLi9vZmZzZXQnO1xuXG4vKipcbiAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBEU0wgdXNlZCBieSBzcGFuIGFuZCBvZmZzZXQgaW4gcGxhY2VzIHdoZXJlIHRoZXkgbmVlZCB0byBleGhhdXN0aXZlbHlcbiAqIGNvbnNpZGVyIGFsbCBjb21iaW5hdGlvbnMgb2Ygc3RhdGVzIChIYW5kbGViYXJzIG9mZnNldHMsIGNoYXJhY3RlciBvZmZzZXRzIGFuZCBpbnZpc2libGUvYnJva2VuXG4gKiBvZmZzZXRzKS5cbiAqXG4gKiBJdCdzIHByb2JhYmx5IG92ZXJraWxsLCBidXQgaXQgbWFrZXMgdGhlIGNvZGUgdGhhdCB1c2VzIGl0IGNsZWFyLiBJdCBjb3VsZCBiZSByZWZhY3RvcmVkIG9yXG4gKiByZW1vdmVkLlxuICovXG5cbmV4cG9ydCBjb25zdCBNYXRjaEFueSA9ICdNQVRDSF9BTlknO1xuZXhwb3J0IHR5cGUgTWF0Y2hBbnkgPSAnTUFUQ0hfQU5ZJztcblxudHlwZSBNYXRjaGVzID1cbiAgfCAnQ2hhcixIYnMnXG4gIHwgJ0hicyxDaGFyJ1xuICB8ICdIYnMsSGJzJ1xuICB8ICdDaGFyLENoYXInXG4gIHwgJ0ludmlzaWJsZSxBbnknXG4gIHwgJ0FueSxJbnZpc2libGUnO1xuXG5leHBvcnQgY29uc3QgSXNJbnZpc2libGUgPSAnSVNfSU5WSVNJQkxFJztcbmV4cG9ydCB0eXBlIElzSW52aXNpYmxlID0gJ0lTX0lOVklTSUJMRSc7XG5cbnR5cGUgUGF0dGVybiA9IE9mZnNldEtpbmQgfCBJc0ludmlzaWJsZSB8IE1hdGNoQW55O1xuXG5jbGFzcyBXaGVuTGlzdDxPdXQ+IHtcbiAgX3doZW5zOiBXaGVuPE91dD5bXTtcblxuICBjb25zdHJ1Y3Rvcih3aGVuczogV2hlbjxPdXQ+W10pIHtcbiAgICB0aGlzLl93aGVucyA9IHdoZW5zO1xuICB9XG5cbiAgZmlyc3Qoa2luZDogT2Zmc2V0S2luZCk6IE91dCB8IG51bGwge1xuICAgIGZvciAobGV0IHdoZW4gb2YgdGhpcy5fd2hlbnMpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHdoZW4ubWF0Y2goa2luZCk7XG4gICAgICBpZiAoaXNQcmVzZW50KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVbMF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY2xhc3MgV2hlbjxPdXQ+IHtcbiAgX21hcDogTWFwPFBhdHRlcm4sIE91dD4gPSBuZXcgTWFwKCk7XG5cbiAgZ2V0KHBhdHRlcm46IFBhdHRlcm4sIG9yOiAoKSA9PiBPdXQpOiBPdXQge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuX21hcC5nZXQocGF0dGVybik7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IG9yKCk7XG5cbiAgICB0aGlzLl9tYXAuc2V0KHBhdHRlcm4sIHZhbHVlKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGFkZChwYXR0ZXJuOiBQYXR0ZXJuLCBvdXQ6IE91dCk6IHZvaWQge1xuICAgIHRoaXMuX21hcC5zZXQocGF0dGVybiwgb3V0KTtcbiAgfVxuXG4gIG1hdGNoKGtpbmQ6IE9mZnNldEtpbmQpOiBPdXRbXSB7XG4gICAgbGV0IHBhdHRlcm4gPSBwYXR0ZXJuRm9yKGtpbmQpO1xuXG4gICAgbGV0IG91dDogT3V0W10gPSBbXTtcblxuICAgIGxldCBleGFjdCA9IHRoaXMuX21hcC5nZXQocGF0dGVybik7XG4gICAgbGV0IGZhbGxiYWNrID0gdGhpcy5fbWFwLmdldChNYXRjaEFueSk7XG5cbiAgICBpZiAoZXhhY3QpIHtcbiAgICAgIG91dC5wdXNoKGV4YWN0KTtcbiAgICB9XG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIG91dC5wdXNoKGZhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbnR5cGUgRXhoYXVzdGl2ZUNoZWNrPE91dCwgSW4gZXh0ZW5kcyBNYXRjaGVzLCBSZW1vdmVkIGV4dGVuZHMgTWF0Y2hlcz4gPSBFeGNsdWRlPFxuICBJbixcbiAgUmVtb3ZlZFxuPiBleHRlbmRzIG5ldmVyXG4gID8gRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PlxuICA6IE1hdGNoZXI8T3V0LCBFeGNsdWRlPEluLCBSZW1vdmVkPj47XG5cbmV4cG9ydCB0eXBlIE1hdGNoRm48T3V0PiA9IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dDtcblxuaW50ZXJmYWNlIEV4aGF1c3RpdmVNYXRjaGVyPE91dD4ge1xuICBjaGVjaygpOiBNYXRjaEZuPE91dD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaDxPdXQ+KGNhbGxiYWNrOiAobTogTWF0Y2hlcjxPdXQ+KSA9PiBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+KTogTWF0Y2hGbjxPdXQ+IHtcbiAgcmV0dXJuIGNhbGxiYWNrKG5ldyBNYXRjaGVyKCkpLmNoZWNrKCk7XG59XG5cbmNsYXNzIE1hdGNoZXI8T3V0LCBNIGV4dGVuZHMgTWF0Y2hlcyA9IE1hdGNoZXM+IHtcbiAgX3doZW5zOiBXaGVuPFdoZW48KGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0Pj4gPSBuZXcgV2hlbigpO1xuXG4gIC8qKlxuICAgKiBZb3UgZGlkbid0IGV4aGF1c3RpdmVseSBtYXRjaCBhbGwgcG9zc2liaWxpdGllcy5cbiAgICovXG4gIHByb3RlY3RlZCBjaGVjaygpOiBNYXRjaEZuPE91dD4ge1xuICAgIHJldHVybiAobGVmdCwgcmlnaHQpID0+IHRoaXMubWF0Y2hGb3IobGVmdC5raW5kLCByaWdodC5raW5kKShsZWZ0LCByaWdodCk7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoRm9yKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQsXG4gICAgcmlnaHQ6IE9mZnNldEtpbmRcbiAgKTogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0IHtcbiAgICBsZXQgbmVzdGVkcyA9IHRoaXMuX3doZW5zLm1hdGNoKGxlZnQpO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgaXNQcmVzZW50KG5lc3RlZHMpLFxuICAgICAgYG5vIG1hdGNoIGRlZmluZWQgZm9yICgke2xlZnR9LCAke3JpZ2h0fSkgYW5kIG5vIEFueU1hdGNoIGRlZmluZWQgZWl0aGVyYFxuICAgICk7XG5cbiAgICBsZXQgY2FsbGJhY2sgPSBuZXcgV2hlbkxpc3QobmVzdGVkcykuZmlyc3QocmlnaHQpO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgY2FsbGJhY2sgIT09IG51bGwsXG4gICAgICBgbm8gbWF0Y2ggZGVmaW5lZCBmb3IgKCR7bGVmdH0sICR7cmlnaHR9KSBhbmQgbm8gQW55TWF0Y2ggZGVmaW5lZCBlaXRoZXJgXG4gICAgKTtcblxuICAgIHJldHVybiBjYWxsYmFjaztcbiAgfVxuXG4gIC8vIFRoaXMgYmlnIGJsb2NrIGlzIHRoZSBidWxrIG9mIHRoZSBoZWF2eSBsaWZ0aW5nIGluIHRoaXMgZmlsZS4gSXQgZmFjaWxpdGF0ZXMgZXhoYXVzdGl2ZW5lc3NcbiAgLy8gY2hlY2tpbmcgc28gdGhhdCBtYXRjaGVycyBjYW4gZW5zdXJlIHRoZXkndmUgYWN0dWFsbHkgY292ZXJlZCBhbGwgdGhlIGNhc2VzIChhbmQgVHlwZVNjcmlwdFxuICAvLyB3aWxsIHRyZWF0IGl0IGFzIGFuIGV4aGF1c3RpdmUgbWF0Y2gpLlxuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogQ2hhclBvc2l0aW9uLCByaWdodDogSGJzUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQ2hhcixIYnMnPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IEhic1Bvc2l0aW9uLCByaWdodDogQ2hhclBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0hicyxDaGFyJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IEhic1Bvc2l0aW9uLCByaWdodDogSGJzUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnSGJzLEhicyc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IENoYXJQb3NpdGlvbiwgcmlnaHQ6IENoYXJQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdDaGFyLENoYXInPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBJc0ludmlzaWJsZSxcbiAgICByaWdodDogTWF0Y2hBbnksXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBJbnZpc2libGVQb3NpdGlvbiwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0XG4gICk6IE1hdGNoZXI8T3V0LCBFeGNsdWRlPE0sICdJbnZpc2libGUsQW55Jz4+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE1hdGNoQW55LFxuICAgIHJpZ2h0OiBJc0ludmlzaWJsZSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IEludmlzaWJsZVBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0FueSxJbnZpc2libGUnPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBNYXRjaEFueSxcbiAgICByaWdodDogTWF0Y2hBbnksXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dFxuICApOiBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+O1xuICB3aGVuKFxuICAgIGxlZnQ6IFBhdHRlcm4sXG4gICAgcmlnaHQ6IFBhdHRlcm4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjYWxsYmFjazogKGxlZnQ6IGFueSwgcmlnaHQ6IGFueSkgPT4gT3V0XG4gICk6IE1hdGNoZXI8T3V0LCBNYXRjaGVzPiB8IEV4aGF1c3RpdmVNYXRjaGVyPE91dD4ge1xuICAgIHRoaXMuX3doZW5zLmdldChsZWZ0LCAoKSA9PiBuZXcgV2hlbigpKS5hZGQocmlnaHQsIGNhbGxiYWNrKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdHRlcm5Gb3Ioa2luZDogT2Zmc2V0S2luZCk6IFBhdHRlcm4ge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE9mZnNldEtpbmQuQnJva2VuOlxuICAgIGNhc2UgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWM6XG4gICAgY2FzZSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50OlxuICAgICAgcmV0dXJuIElzSW52aXNpYmxlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ga2luZDtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -28,24 +28,5 @@ "use strict";

return Constructor;
}
} // eslint-disable-next-line import/no-extraneous-dependencies
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPos, _charPos; // eslint-disable-next-line import/no-extraneous-dependencies
/**

@@ -195,3 +176,3 @@ * Used to indicate that an attempt to convert a `SourcePosition` to a character offset failed. It

_locPos.set(this, null);
this._locPos = null;
}

@@ -241,3 +222,3 @@ /**

_proto2.toHbsPos = function toHbsPos() {
var locPos = __classPrivateFieldGet(this, _locPos);
var locPos = this._locPos;

@@ -248,5 +229,5 @@ if (locPos === null) {

if (hbsPos === null) {
__classPrivateFieldSet(this, _locPos, locPos = BROKEN);
this._locPos = locPos = BROKEN;
} else {
__classPrivateFieldSet(this, _locPos, locPos = new HbsPosition(this.source, hbsPos, this.charPos));
this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);
}

@@ -269,3 +250,2 @@ }

exports.CharPosition = CharPosition;
_locPos = new WeakMap();

@@ -283,6 +263,3 @@ var HbsPosition = /*#__PURE__*/function () {

;
_charPos.set(this, void 0);
__classPrivateFieldSet(this, _charPos, charPos === null ? null : new CharPosition(source, charPos));
this._charPos = charPos === null ? null : new CharPosition(source, charPos);
}

@@ -302,3 +279,3 @@ /**

_proto3.toCharPos = function toCharPos() {
var charPos = __classPrivateFieldGet(this, _charPos);
var charPos = this._charPos;

@@ -309,5 +286,5 @@ if (charPos === null) {

if (charPosNumber === null) {
__classPrivateFieldSet(this, _charPos, charPos = BROKEN);
this._charPos = charPos = BROKEN;
} else {
__classPrivateFieldSet(this, _charPos, charPos = new CharPosition(this.source, charPosNumber));
this._charPos = charPos = new CharPosition(this.source, charPosNumber);
}

@@ -348,3 +325,2 @@ }

exports.HbsPosition = HbsPosition;
_charPos = new WeakMap();

@@ -443,2 +419,2 @@ var InvisiblePosition = /*#__PURE__*/function () {

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFKQTs7O0FBZ0RBOzs7OztBQUtPLElBQU0sTUFBTSxHQUFaLFFBQUE7QUFLUDs7Ozs7Ozs7Ozs7OztBQVVBLElBQU0sWUFBTixHQUFBLGFBQUEsWUFBQTtBQW1CRSxXQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQXFEO0FBQWhDLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0M7QUFsQnpEOzs7Ozs7O0FBREYsRUFBQSxZQUFBLENBQUEsU0FBQSxHQU1FLFNBQUEsU0FBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQW9EO0FBQ2xELFdBQU8sSUFBQSxXQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBQSxJQUFBLEVBQVAsSUFBTyxFQUFQO0FBQ0Q7QUFFRDs7Ozs7QUFWRjs7QUFBQSxFQUFBLFlBQUEsQ0FBQSxNQUFBLEdBZUUsU0FBQSxNQUFBLENBQUEsR0FBQSxFQUFvRDtBQUFBLFFBQXRDLEdBQXNDLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdEMsTUFBQSxHQUFzQyxHQUFwRCwwQkFBYztBQUFzQzs7QUFDbEQsV0FBTyxJQUFBLGlCQUFBLENBQXFCO0FBQUE7QUFBckIsTUFBQSxHQUFBLEVBQVAsSUFBTyxFQUFQO0FBQ0Q7QUFJRDs7O0FBckJGOztBQUFBLE1BQUEsTUFBQSxHQUFBLFlBQUEsQ0FBQSxTQUFBO0FBNkJFOzs7Ozs7Ozs7O0FBN0JGLEVBQUEsTUFBQSxDQUFBLEdBQUEsR0FzQ0UsU0FBQSxHQUFBLENBQUEsS0FBQSxFQUF1QjtBQUNyQixXQUFPLElBQUcsQ0FBQyxLQUFELElBQUEsRUFBWSxLQUFLLENBQTNCLElBQVUsQ0FBVjtBQUNEO0FBRUQ7Ozs7QUExQ0Y7O0FBQUEsRUFB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LEtBQUEsRUFBQSxLQUFBLEVBQUE7QUFBQSxRQUFZLElBQVosR0FBQSxLQUFBLENBQUEsT0FBQTtBQUFBLFFBQStCLEtBQS9CLEdBQUEsS0FBQSxDQUFBLE9BQUE7QUFBQSxXQUEyQyxJQUFJLEtBVm5ELEtBVUk7QUFWSixHQUFBLEVBQUEsSUFBQSxDQVlPO0FBQUE7QUFaUCxJQVlPO0FBQUE7QUFaUCxJQWVJLFVBQUEsS0FBQSxFQUFBLEtBQUEsRUFBNEI7QUFBQSxRQUFqQixJQUFpQixHQUFBLEtBQUEsQ0FBekIsTUFBeUI7O0FBQUEsUUFBQSxFQUFBOztBQUFDLFdBQUEsSUFBSSxNQUFBLENBQUEsRUFBQSxHQUFLLEtBQUssQ0FBVixTQUFLLEVBQUwsTUFBQSxJQUFBLElBQXNCLEVBQUEsS0FBQSxLQUF0QixDQUFBLEdBQXNCLEtBQXRCLENBQUEsR0FBc0IsRUFBQSxDQUExQixNQUFJLENBQUo7QUFmakMsR0FBQSxFQUFBLElBQUEsQ0FpQk87QUFBQTtBQWpCUCxJQWlCTztBQUFBO0FBakJQLElBb0JJLFVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBNEI7QUFBQSxRQUFYLEtBQVcsR0FBQSxLQUFBLENBQW5CLE1BQW1COztBQUFBLFFBQUEsRUFBQTs7QUFBQyxXQUFBLENBQUEsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFKLFNBQUEsRUFBQSxNQUFBLElBQUEsSUFBZ0IsRUFBQSxLQUFBLEtBQWhCLENBQUEsR0FBZ0IsS0FBaEIsQ0FBQSxHQUFnQixFQUFBLENBQWhCLE1BQUEsTUFBQSxLQUFBO0FBcEJqQyxHQUFBLEVBQUEsSUFBQSxDQUFBLGVBQUEsRUFBQSxlQUFBLEVBc0I0QixZQUFBO0FBQUEsV0F2QjlCLEtBdUI4QjtBQXZCSCxHQUN6QixDQUR5QjtBQUEzQixDQUFZLENBQVoiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBTb3VyY2VQb3NpdGlvbiwgVU5LTk9XTl9QT1NJVElPTiB9IGZyb20gJy4uL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBtYXRjaCwgTWF0Y2hBbnkgfSBmcm9tICcuL21hdGNoJztcbmltcG9ydCB7IFNvdXJjZVNwYW4sIHNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPZmZzZXRLaW5kIHtcbiAgLyoqXG4gICAqIFdlIGhhdmUgYWxyZWFkeSBjb21wdXRlZCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoaXMgb2Zmc2V0IG9yIHNwYW4uXG4gICAqL1xuICBDaGFyUG9zaXRpb24gPSAnQ2hhclBvc2l0aW9uJyxcblxuICAvKipcbiAgICogVGhpcyBvZmZzZXQgb3Igc3BhbiB3YXMgaW5zdGFudGlhdGVkIHdpdGggYSBIYW5kbGViYXJzIFNvdXJjZVBvc2l0aW9uIG9yIFNvdXJjZUxvY2F0aW9uLiBJdHNcbiAgICogY2hhcmFjdGVyIHBvc2l0aW9uIHdpbGwgYmUgY29tcHV0ZWQgb24gZGVtYW5kLlxuICAgKi9cbiAgSGJzUG9zaXRpb24gPSAnSGJzUG9zaXRpb24nLFxuXG4gIC8qKlxuICAgKiBmb3IgKHJhcmUpIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIGlzIGNyZWF0ZWQgYnV0IHRoZXJlIHdhcyBubyBzb3VyY2UgbG9jYXRpb24gKGUuZy4gdGhlIG5hbWVcbiAgICogXCJkZWZhdWx0XCIgaW4gZGVmYXVsdCBibG9ja3Mgd2hlbiB0aGUgd29yZCBcImRlZmF1bHRcIiBuZXZlciBhcHBlYXJlZCBpbiBzb3VyY2UpLiBUaGlzIGlzIHVzZWRcbiAgICogYnkgdGhlIGludGVybmFscyB3aGVuIHRoZXJlIGlzIGEgbGVnaXRpbWF0ZSByZWFzb24gZm9yIHRoZSBpbnRlcm5hbHMgdG8gc3ludGhlc2l6ZSBhIG5vZGVcbiAgICogd2l0aCBubyBsb2NhdGlvbi5cbiAgICovXG4gIEludGVybmFsc1N5bnRoZXRpYyA9ICdJbnRlcm5hbHNTeW50aGV0aWMnLFxuICAvKipcbiAgICogRm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIHJlcHJlc2VudHMgemVybyBwYXJ0cyBvZiB0aGUgc291cmNlIChmb3IgZXhhbXBsZSwgZW1wdHkgYXJndW1lbnRzKS5cbiAgICogSW4gZ2VuZXJhbCwgd2UgYXR0ZW1wdCB0byBhc3NpZ24gdGhlc2Ugbm9kZXMgKnNvbWUqIHBvc2l0aW9uIChlbXB0eSBhcmd1bWVudHMgY2FuIGJlXG4gICAqIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNhbGxlZSksIGJ1dCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGVcbiAgICovXG4gIE5vbkV4aXN0ZW50ID0gJ05vbkV4aXN0ZW50JyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgc291cmNlIGxvY2F0aW9uIHdhcyBleHBlY3RlZCwgYnV0IGl0IGRpZG4ndCBjb3JyZXNwb25kIHRvIHRoZSBub2RlIGluXG4gICAqIHRoZSBzb3VyY2UuIFRoaXMgaGFwcGVucyBpZiBhIHBsdWdpbiBjcmVhdGVzIGJyb2tlbiBsb2NhdGlvbnMuXG4gICAqL1xuICBCcm9rZW4gPSAnQnJva2VuJyxcbn1cblxuLyoqXG4gKiBBbGwgcG9zaXRpb25zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uIE1vc3Qgbm90YWJseSwgYWxsIHRocmVlIGtpbmRzIG9mIHBvc2l0aW9ucyBjYW5cbiAqIG11c3QgYmUgYWJsZSB0byBhdHRlbXB0IHRvIGNvbnZlcnQgdGhlbXNlbHZlcyBpbnRvIHtAc2VlIENoYXJQb3NpdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZDtcbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGw7XG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdCB0byBjb252ZXJ0IGEgYFNvdXJjZVBvc2l0aW9uYCB0byBhIGNoYXJhY3RlciBvZmZzZXQgZmFpbGVkLiBJdFxuICogaXMgc2VwYXJhdGUgZnJvbSBgbnVsbGAgc28gdGhhdCBgbnVsbGAgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29tcHV0YXRpb24gd2Fzbid0IHlldFxuICogYXR0ZW1wdGVkIChhbmQgdGhlcmVmb3JlIHRvIGNhY2hlIHRoZSBmYWlsdXJlKVxuICovXG5leHBvcnQgY29uc3QgQlJPS0VOID0gJ0JST0tFTic7XG5leHBvcnQgdHlwZSBCUk9LRU4gPSAnQlJPS0VOJztcblxuZXhwb3J0IHR5cGUgQW55UG9zaXRpb24gPSBIYnNQb3NpdGlvbiB8IENoYXJQb3NpdGlvbiB8IEludmlzaWJsZVBvc2l0aW9uO1xuXG4vKipcbiAqIEEgYFNvdXJjZU9mZnNldGAgcmVwcmVzZW50cyBhIHNpbmdsZSBwb3NpdGlvbiBpbiB0aGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBiYWNraW5nIGRhdGEgZm9yIGBTb3VyY2VPZmZzZXRgIG9iamVjdHM6XG4gKlxuICogLSBgQ2hhclBvc2l0aW9uYCwgd2hpY2ggY29udGFpbnMgYSBjaGFyYWN0ZXIgb2Zmc2V0IGludG8gdGhlIHJhdyBzb3VyY2Ugc3RyaW5nXG4gKiAtIGBIYnNQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgYFNvdXJjZVBvc2l0aW9uYCBmcm9tIHRoZSBIYW5kbGViYXJzIEFTVCwgd2hpY2ggY2FuIGJlXG4gKiAgIGNvbnZlcnRlZCB0byBhIGBDaGFyUG9zaXRpb25gIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVBvc2l0aW9uYCwgd2hpY2ggcmVwcmVzZW50cyBhIHBvc2l0aW9uIG5vdCBpbiBzb3VyY2UgKEBzZWUge0ludmlzaWJsZVBvc2l0aW9ufSlcbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZU9mZnNldCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCBmcm9tIGEgSGFuZGxlYmFycyBgU291cmNlUG9zaXRpb25gLiBJdCdzIHN0b3JlZCBhcy1pcywgYW5kIGNvbnZlcnRlZFxuICAgKiBpbnRvIGEgY2hhcmFjdGVyIG9mZnNldCBvbiBkZW1hbmQsIHdoaWNoIGF2b2lkcyB1bm5lY2Vzc2FyaWx5IGNvbXB1dGluZyB0aGUgb2Zmc2V0IG9mIGV2ZXJ5XG4gICAqIGBTb3VyY2VMb2NhdGlvbmAsIGJ1dCBhbHNvIG1lYW5zIHRoYXQgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmBzIGFyZSBub3QgYWx3YXlzIGRldGVjdGVkLlxuICAgKi9cbiAgc3RhdGljIGZvckhic1Bvcyhzb3VyY2U6IFNvdXJjZSwgcG9zOiBTb3VyY2VQb3NpdGlvbik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIHBvcywgbnVsbCkud3JhcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBicm9rZW4gYFNvdXJjZVBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGF0IHRoZVxuICAgKiBjYWxsaW5nIGNvZGUgZGV0ZXJtaW5lZCAob3Iga25vd3MpIHRoYXQgdGhlIGBTb3VyY2VMb2NhdGlvbmAgZG9lc24ndCBjb3JyZXNwb25kIGNvcnJlY3RseSB0b1xuICAgKiBhbnkgcGFydCBvZiB0aGUgc291cmNlLlxuICAgKi9cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZVBvc2l0aW9uID0gVU5LTk9XTl9QT1NJVElPTik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbihPZmZzZXRLaW5kLkJyb2tlbiwgcG9zKS53cmFwKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYXRhOiBQb3NpdGlvbkRhdGEgJiBBbnlQb3NpdGlvbikge31cblxuICAvKipcbiAgICogR2V0IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZvciB0aGlzIGBTb3VyY2VPZmZzZXRgLCBpZiBwb3NzaWJsZS5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IG51bGwgPyBudWxsIDogY2hhclBvcy5vZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0aGlzIG9mZnNldCB3aXRoIGFub3RoZXIgb25lLlxuICAgKlxuICAgKiBJZiBib3RoIG9mZnNldHMgYXJlIGBIYnNQb3NpdGlvbmBzLCB0aGV5J3JlIGVxdWl2YWxlbnQgYXMgbG9uZyBhcyB0aGVpciBsaW5lcyBhbmQgY29sdW1ucyBhcmVcbiAgICogdGhlIHNhbWUuIFRoaXMgYXZvaWRzIGNvbXB1dGluZyBvZmZzZXRzIHVubmVjZXNzYXJpbHkuXG4gICAqXG4gICAqIE90aGVyd2lzZSwgdHdvIGBTb3VyY2VPZmZzZXRgcyBhcmUgZXF1aXZhbGVudCBpZiB0aGVpciBzdWNjZXNzZnVsbHkgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICogYXJlIHRoZSBzYW1lLlxuICAgKi9cbiAgZXFsKHJpZ2h0OiBTb3VyY2VPZmZzZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXFsKHRoaXMuZGF0YSwgcmlnaHQuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc3BhbiB0aGF0IHN0YXJ0cyBmcm9tIHRoaXMgc291cmNlIG9mZnNldCBhbmQgZW5kcyB3aXRoIGFub3RoZXIgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIGNoYXJhY3RlciBvZmZzZXRzIGlmIGJvdGggYFNvdXJjZU9mZnNldGBzIGFyZSBzdGlsbCBsYXp5LlxuICAgKi9cbiAgdW50aWwob3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgb3RoZXIuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgYnkgbW92aW5nIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gcmVwcmVzZW50ZWQgYnkgdGhpcyBzb3VyY2Ugb2Zmc2V0XG4gICAqIGZvcndhcmQgb3IgYmFja3dhcmQgKGlmIGBieWAgaXMgbmVnYXRpdmUpLCBpZiBwb3NzaWJsZS5cbiAgICpcbiAgICogSWYgdGhpcyBgU291cmNlT2Zmc2V0YCBjYW4ndCBjb21wdXRlIGEgdmFsaWQgY2hhcmFjdGVyIG9mZnNldCwgYG1vdmVgIHJldHVybnMgYSBicm9rZW4gb2Zmc2V0LlxuICAgKlxuICAgKiBJZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBvZmZzZXQgaXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBzb3VyY2UsIGBtb3ZlYFxuICAgKiByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICovXG4gIG1vdmUoYnk6IG51bWJlcik6IFNvdXJjZU9mZnNldCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFNvdXJjZU9mZnNldC5icm9rZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlc3VsdCA9IGNoYXJQb3Mub2Zmc2V0ICsgYnk7XG5cbiAgICAgIGlmIChjaGFyUG9zLnNvdXJjZS5jaGVjayhyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hhclBvc2l0aW9uKGNoYXJQb3Muc291cmNlLCByZXN1bHQpLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgdGhhdCByZXByZXNlbnRzIGEgY29sbGFwc2VkIHJhbmdlIGF0IHRoaXMgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGNvbXB1dGVkLlxuICAgKi9cbiAgY29sbGFwc2VkKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgdGhpcy5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgYFNvdXJjZU9mZnNldGAgaW50byBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciBjb21wYXRpYmlsaXR5IHdpdGhcbiAgICogZXhpc3RpbmcgcGx1Z2lucy5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50b0pTT04oKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhclBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gIC8qKiBDb21wdXRlZCBmcm9tIGNoYXIgb2Zmc2V0ICovXG4gICNsb2NQb3M6IEhic1Bvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc291cmNlOiBTb3VyY2UsIHJlYWRvbmx5IGNoYXJQb3M6IG51bWJlcikge31cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGEgYENoYXJQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIEhic1Bvc2l0aW9ufSBmb3IgdGhlIGFsdGVybmF0aXZlLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciB0aGlzIGBDaGFyUG9zaXRpb25gLiBJZiB0aGlzIGBDaGFyUG9zaXRpb25gIHdhc1xuICAgKiBjb21wdXRlZCB1c2luZyB7QHNlZSBTb3VyY2VPZmZzZXQjbW92ZX0sIHRoaXMgd2lsbCBjb21wdXRlIHRoZSBgU291cmNlUG9zaXRpb25gIGZvciB0aGUgb2Zmc2V0LlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICBsZXQgaGJzID0gdGhpcy50b0hic1BvcygpO1xuICAgIHJldHVybiBoYnMgPT09IG51bGwgPyBVTktOT1dOX1BPU0lUSU9OIDogaGJzLnRvSlNPTigpO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYENoYXJQb3NpdGlvbmAgYWx3YXlzIGhhcyBhbiBvZmZzZXQgaXQgY2FuIHByb2R1Y2Ugd2l0aG91dCBhbnkgYWRkaXRpb25hbCBjb21wdXRhdGlvbi5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIG9mZnNldCB0byBhbiBgSGJzUG9zaXRpb25gLCBpZiBpdCB3YXMgbm90IGFscmVhZHkgY29tcHV0ZWQuIE9uY2VcbiAgICogYSBgQ2hhclBvc2l0aW9uYCBoYXMgY29tcHV0ZWQgaXRzIGBIYnNQb3NpdGlvbmAsIGl0IHdpbGwgbm90IG5lZWQgdG8gZG8gY29tcHV0ZSBpdCBhZ2FpbiwgYW5kXG4gICAqIHRoZSBzYW1lIGBDaGFyUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvXG4gICAqIGNvbXB1dGluZyB0aGUgYEhic1Bvc2l0aW9uYCBzaG91bGQgYmUgYSBvbmUtdGltZSBvcGVyYXRpb24uXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3MgPSB0aGlzLiNsb2NQb3M7XG5cbiAgICBpZiAobG9jUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgaGJzUG9zID0gdGhpcy5zb3VyY2UuaGJzUG9zRm9yKHRoaXMuY2hhclBvcyk7XG5cbiAgICAgIGlmIChoYnNQb3MgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jbG9jUG9zID0gbG9jUG9zID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jbG9jUG9zID0gbG9jUG9zID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBoYnNQb3MsIHRoaXMuY2hhclBvcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY1BvcyA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1BvcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcblxuICAjY2hhclBvczogQ2hhclBvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3M6IFNvdXJjZVBvc2l0aW9uLFxuICAgIGNoYXJQb3M6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuI2NoYXJQb3MgPSBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBjaGFyUG9zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgY29tcHV0ZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSB7QHNlZSBTb3VyY2VQb3NpdGlvbn0uIE9uY2UgYW4gYEhic1Bvc2l0aW9uYCBoYXNcbiAgICogY29tcHV0ZWQgaXRzIGBDaGFyUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZCB0aGUgc2FtZVxuICAgKiBgSGJzUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvIGNvbXB1dGluZyB0aGVcbiAgICogYENoYXJQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy4jY2hhclBvcztcblxuICAgIGlmIChjaGFyUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgY2hhclBvc051bWJlciA9IHRoaXMuc291cmNlLmNoYXJQb3NGb3IodGhpcy5oYnNQb3MpO1xuXG4gICAgICBpZiAoY2hhclBvc051bWJlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLiNjaGFyUG9zID0gY2hhclBvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2NoYXJQb3MgPSBjaGFyUG9zID0gbmV3IENoYXJQb3NpdGlvbih0aGlzLnNvdXJjZSwgY2hhclBvc051bWJlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IEJST0tFTiA/IG51bGwgOiBjaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUge0BzZWUgU291cmNlUG9zaXRpb259IHRoYXQgdGhpcyBgSGJzUG9zaXRpb25gIHdhcyBpbnN0YW50aWF0ZWQgd2l0aC4gVGhpcyBvcGVyYXRpb25cbiAgICogZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIGFueXRoaW5nLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3M7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VPZmZzZXQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGFuIGBIYnNQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIENoYXJQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIHRvSGJzUG9zKCk6IEhic1Bvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kLkJyb2tlbiB8IE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudCxcbiAgICAvLyB3aGF0ZXZlciB3YXMgcHJvdmlkZWQsIHBvc3NpYmx5IGJyb2tlblxuICAgIHJlYWRvbmx5IHBvczogU291cmNlUG9zaXRpb25cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBBIGJyb2tlbiBwb3NpdGlvbiBjYW5ub3QgYmUgdHVybmVkIGludG8gYSB7QHNlZSBDaGFyYWN0ZXJQb3NpdGlvbn0uXG4gICAqL1xuICB0b0NoYXJQb3MoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlcmlhbGl6YXRpb24gb2YgYW4gYEludmlzaWJsZVBvc2l0aW9uIGlzIHdoYXRldmVyIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IHdhc1xuICAgKiBvcmlnaW5hbGx5IGlkZW50aWZpZWQgYXMgYnJva2VuLCBub24tZXhpc3RlbnQgb3Igc3ludGhldGljLlxuICAgKlxuICAgKiBJZiBhbiBgSW52aXNpYmxlUG9zaXRpb25gIG5ldmVyIGhhZCBhbiBzb3VyY2Ugb2Zmc2V0IGF0IGFsbCwgdGhpcyBtZXRob2QgcmV0dXJuc1xuICAgKiB7QHNlZSBVTktOT1dOX1BPU0lUSU9OfSBmb3IgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgZ2V0IG9mZnNldCgpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHtAc2VlIEFueVBvc2l0aW9ufSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhleSBhcmUgZXF1YWwuXG4gKlxuICogQHNlZSB7U291cmNlT2Zmc2V0I2VxbH1cbiAqL1xuY29uc3QgZXFsID0gbWF0Y2g8Ym9vbGVhbj4oKG0pID0+XG4gIG1cbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgaGJzUG9zOiBsZWZ0IH0sIHsgaGJzUG9zOiByaWdodCB9KSA9PlxuICAgICAgICBsZWZ0LmNvbHVtbiA9PT0gcmlnaHQuY29sdW1uICYmIGxlZnQubGluZSA9PT0gcmlnaHQubGluZVxuICAgIClcbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAoeyBjaGFyUG9zOiBsZWZ0IH0sIHsgY2hhclBvczogcmlnaHQgfSkgPT4gbGVmdCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICAoeyBvZmZzZXQ6IGxlZnQgfSwgcmlnaHQpID0+IGxlZnQgPT09IHJpZ2h0LnRvQ2hhclBvcygpPy5vZmZzZXRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAobGVmdCwgeyBvZmZzZXQ6IHJpZ2h0IH0pID0+IGxlZnQudG9DaGFyUG9zKCk/Lm9mZnNldCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oTWF0Y2hBbnksIE1hdGNoQW55LCAoKSA9PiBmYWxzZSlcbik7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0VBSkE7OztBQWdEQTs7Ozs7QUFLTyxJQUFNLE1BQU0sR0FBWixRQUFBO0FBS1A7Ozs7Ozs7Ozs7Ozs7QUFVQSxJQUFNLFlBQU4sR0FBQSxhQUFBLFlBQUE7QUFtQkUsV0FBQSxZQUFBLENBQUEsSUFBQSxFQUFxRDtBQUFoQyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9DO0FBbEJ6RDs7Ozs7OztBQURGLEVBQUEsWUFBQSxDQUFBLFNBQUEsR0FNRSxTQUFBLFNBQUEsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFvRDtBQUNsRCxXQUFPLElBQUEsV0FBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFQLElBQU8sRUFBUDtBQUNEO0FBRUQ7Ozs7O0FBVkY7O0FBQUEsRUFBQSxZQUFBLENBQUEsTUFBQSxHQWVFLFNBQUEsTUFBQSxDQUFBLEdBQUEsRUFBb0Q7QUFBQSxRQUF0QyxHQUFzQyxLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQXRDLE1BQUEsR0FBc0MsR0FBcEQsMEJBQWM7QUFBc0M7O0FBQ2xELFdBQU8sSUFBQSxpQkFBQSxDQUFxQjtBQUFBO0FBQXJCLE1BQUEsR0FBQSxFQUFQLElBQU8sRUFBUDtBQUNEO0FBSUQ7OztBQXJCRjs7QUFBQSxNQUFBLE1BQUEsR0FBQSxZQUFBLENBQUEsU0FBQTtBQTZCRTs7Ozs7Ozs7OztBQTdCRixFQUFBLE1BQUEsQ0FBQSxHQUFBLEdBc0NFLFNBQUEsR0FBQSxDQUFBLEtBQUEsRUFBdUI7QUFDckIsV0FBTyxJQUFHLENBQUMsS0FBRCxJQUFBLEVBQVksS0FBSyxDQUEzQixJQUFVLENBQVY7QUFDRDtBQUVEOzs7O0FBMUNGOztBQUFBLEVBQUEsTUFBQSxDQUFBLEtBQUEsR0E4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LElBQUksTUFBQSxDQUFBLEVBQUEsR0FBSyxLQUFLLENBQVYsU0FBSyxFQUFMLE1BQUEsSUFBQSxJQUFzQixFQUFBLEtBQUEsS0FBdEIsQ0FBQSxHQUFzQixLQUF0QixDQUFBLEdBQXNCLEVBQUEsQ0FBMUIsTUFBSSxDQUFKO0FBZmpDLEdBQUEsRUFBQSxJQUFBLENBaUJPO0FBQUE7QUFqQlAsSUFpQk87QUFBQTtBQWpCUCxJQW9CSSxVQUFBLElBQUEsRUFBQSxLQUFBLEVBQTRCO0FBQUEsUUFBWCxLQUFXLEdBQUEsS0FBQSxDQUFuQixNQUFtQjs7QUFBQSxRQUFBLEVBQUE7O0FBQUMsV0FBQSxDQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBSixTQUFBLEVBQUEsTUFBQSxJQUFBLElBQWdCLEVBQUEsS0FBQSxLQUFoQixDQUFBLEdBQWdCLEtBQWhCLENBQUEsR0FBZ0IsRUFBQSxDQUFoQixNQUFBLE1BQUEsS0FBQTtBQXBCakMsR0FBQSxFQUFBLElBQUEsQ0FBQSxlQUFBLEVBQUEsZUFBQSxFQXNCNEIsWUFBQTtBQUFBLFdBdkI5QixLQXVCOEI7QUF2QkgsR0FDekIsQ0FEeUI7QUFBM0IsQ0FBWSxDQUFaIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgU291cmNlUG9zaXRpb24sIFVOS05PV05fUE9TSVRJT04gfSBmcm9tICcuLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2UnO1xuaW1wb3J0IHsgbWF0Y2gsIE1hdGNoQW55IH0gZnJvbSAnLi9tYXRjaCc7XG5pbXBvcnQgeyBTb3VyY2VTcGFuLCBzcGFuIH0gZnJvbSAnLi9zcGFuJztcblxuZXhwb3J0IGNvbnN0IGVudW0gT2Zmc2V0S2luZCB7XG4gIC8qKlxuICAgKiBXZSBoYXZlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiBvZiB0aGlzIG9mZnNldCBvciBzcGFuLlxuICAgKi9cbiAgQ2hhclBvc2l0aW9uID0gJ0NoYXJQb3NpdGlvbicsXG5cbiAgLyoqXG4gICAqIFRoaXMgb2Zmc2V0IG9yIHNwYW4gd2FzIGluc3RhbnRpYXRlZCB3aXRoIGEgSGFuZGxlYmFycyBTb3VyY2VQb3NpdGlvbiBvciBTb3VyY2VMb2NhdGlvbi4gSXRzXG4gICAqIGNoYXJhY3RlciBwb3NpdGlvbiB3aWxsIGJlIGNvbXB1dGVkIG9uIGRlbWFuZC5cbiAgICovXG4gIEhic1Bvc2l0aW9uID0gJ0hic1Bvc2l0aW9uJyxcblxuICAvKipcbiAgICogZm9yIChyYXJlKSBzaXR1YXRpb25zIHdoZXJlIGEgbm9kZSBpcyBjcmVhdGVkIGJ1dCB0aGVyZSB3YXMgbm8gc291cmNlIGxvY2F0aW9uIChlLmcuIHRoZSBuYW1lXG4gICAqIFwiZGVmYXVsdFwiIGluIGRlZmF1bHQgYmxvY2tzIHdoZW4gdGhlIHdvcmQgXCJkZWZhdWx0XCIgbmV2ZXIgYXBwZWFyZWQgaW4gc291cmNlKS4gVGhpcyBpcyB1c2VkXG4gICAqIGJ5IHRoZSBpbnRlcm5hbHMgd2hlbiB0aGVyZSBpcyBhIGxlZ2l0aW1hdGUgcmVhc29uIGZvciB0aGUgaW50ZXJuYWxzIHRvIHN5bnRoZXNpemUgYSBub2RlXG4gICAqIHdpdGggbm8gbG9jYXRpb24uXG4gICAqL1xuICBJbnRlcm5hbHNTeW50aGV0aWMgPSAnSW50ZXJuYWxzU3ludGhldGljJyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgbm9kZSByZXByZXNlbnRzIHplcm8gcGFydHMgb2YgdGhlIHNvdXJjZSAoZm9yIGV4YW1wbGUsIGVtcHR5IGFyZ3VtZW50cykuXG4gICAqIEluIGdlbmVyYWwsIHdlIGF0dGVtcHQgdG8gYXNzaWduIHRoZXNlIG5vZGVzICpzb21lKiBwb3NpdGlvbiAoZW1wdHkgYXJndW1lbnRzIGNhbiBiZVxuICAgKiBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsZWUpLCBidXQgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlXG4gICAqL1xuICBOb25FeGlzdGVudCA9ICdOb25FeGlzdGVudCcsXG4gIC8qKlxuICAgKiBGb3Igc2l0dWF0aW9ucyB3aGVyZSBhIHNvdXJjZSBsb2NhdGlvbiB3YXMgZXhwZWN0ZWQsIGJ1dCBpdCBkaWRuJ3QgY29ycmVzcG9uZCB0byB0aGUgbm9kZSBpblxuICAgKiB0aGUgc291cmNlLiBUaGlzIGhhcHBlbnMgaWYgYSBwbHVnaW4gY3JlYXRlcyBicm9rZW4gbG9jYXRpb25zLlxuICAgKi9cbiAgQnJva2VuID0gJ0Jyb2tlbicsXG59XG5cbi8qKlxuICogQWxsIHBvc2l0aW9ucyBoYXZlIHRoZXNlIGRldGFpbHMgaW4gY29tbW9uLiBNb3N0IG5vdGFibHksIGFsbCB0aHJlZSBraW5kcyBvZiBwb3NpdGlvbnMgY2FuXG4gKiBtdXN0IGJlIGFibGUgdG8gYXR0ZW1wdCB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgaW50byB7QHNlZSBDaGFyUG9zaXRpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQ7XG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24gfCBudWxsO1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb247XG59XG5cbi8qKlxuICogVXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIGF0dGVtcHQgdG8gY29udmVydCBhIGBTb3VyY2VQb3NpdGlvbmAgdG8gYSBjaGFyYWN0ZXIgb2Zmc2V0IGZhaWxlZC4gSXRcbiAqIGlzIHNlcGFyYXRlIGZyb20gYG51bGxgIHNvIHRoYXQgYG51bGxgIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGNvbXB1dGF0aW9uIHdhc24ndCB5ZXRcbiAqIGF0dGVtcHRlZCAoYW5kIHRoZXJlZm9yZSB0byBjYWNoZSB0aGUgZmFpbHVyZSlcbiAqL1xuZXhwb3J0IGNvbnN0IEJST0tFTiA9ICdCUk9LRU4nO1xuZXhwb3J0IHR5cGUgQlJPS0VOID0gJ0JST0tFTic7XG5cbmV4cG9ydCB0eXBlIEFueVBvc2l0aW9uID0gSGJzUG9zaXRpb24gfCBDaGFyUG9zaXRpb24gfCBJbnZpc2libGVQb3NpdGlvbjtcblxuLyoqXG4gKiBBIGBTb3VyY2VPZmZzZXRgIHJlcHJlc2VudHMgYSBzaW5nbGUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZS5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgYmFja2luZyBkYXRhIGZvciBgU291cmNlT2Zmc2V0YCBvYmplY3RzOlxuICpcbiAqIC0gYENoYXJQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgY2hhcmFjdGVyIG9mZnNldCBpbnRvIHRoZSByYXcgc291cmNlIHN0cmluZ1xuICogLSBgSGJzUG9zaXRpb25gLCB3aGljaCBjb250YWlucyBhIGBTb3VyY2VQb3NpdGlvbmAgZnJvbSB0aGUgSGFuZGxlYmFycyBBU1QsIHdoaWNoIGNhbiBiZVxuICogICBjb252ZXJ0ZWQgdG8gYSBgQ2hhclBvc2l0aW9uYCBvbiBkZW1hbmQuXG4gKiAtIGBJbnZpc2libGVQb3NpdGlvbmAsIHdoaWNoIHJlcHJlc2VudHMgYSBwb3NpdGlvbiBub3QgaW4gc291cmNlIChAc2VlIHtJbnZpc2libGVQb3NpdGlvbn0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2VPZmZzZXQge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgZnJvbSBhIEhhbmRsZWJhcnMgYFNvdXJjZVBvc2l0aW9uYC4gSXQncyBzdG9yZWQgYXMtaXMsIGFuZCBjb252ZXJ0ZWRcbiAgICogaW50byBhIGNoYXJhY3RlciBvZmZzZXQgb24gZGVtYW5kLCB3aGljaCBhdm9pZHMgdW5uZWNlc3NhcmlseSBjb21wdXRpbmcgdGhlIG9mZnNldCBvZiBldmVyeVxuICAgKiBgU291cmNlTG9jYXRpb25gLCBidXQgYWxzbyBtZWFucyB0aGF0IGJyb2tlbiBgU291cmNlUG9zaXRpb25gcyBhcmUgbm90IGFsd2F5cyBkZXRlY3RlZC5cbiAgICovXG4gIHN0YXRpYyBmb3JIYnNQb3Moc291cmNlOiBTb3VyY2UsIHBvczogU291cmNlUG9zaXRpb24pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBwb3MsIG51bGwpLndyYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogY2FsbGluZyBjb2RlIGRldGVybWluZWQgKG9yIGtub3dzKSB0aGF0IHRoZSBgU291cmNlTG9jYXRpb25gIGRvZXNuJ3QgY29ycmVzcG9uZCBjb3JyZWN0bHkgdG9cbiAgICogYW55IHBhcnQgb2YgdGhlIHNvdXJjZS5cbiAgICovXG4gIHN0YXRpYyBicm9rZW4ocG9zOiBTb3VyY2VQb3NpdGlvbiA9IFVOS05PV05fUE9TSVRJT04pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24oT2Zmc2V0S2luZC5Ccm9rZW4sIHBvcykud3JhcCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGF0YTogUG9zaXRpb25EYXRhICYgQW55UG9zaXRpb24pIHt9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY2hhcmFjdGVyIG9mZnNldCBmb3IgdGhpcyBgU291cmNlT2Zmc2V0YCwgaWYgcG9zc2libGUuXG4gICAqL1xuICBnZXQgb2Zmc2V0KCk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5kYXRhLnRvQ2hhclBvcygpO1xuICAgIHJldHVybiBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IGNoYXJQb3Mub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdGhpcyBvZmZzZXQgd2l0aCBhbm90aGVyIG9uZS5cbiAgICpcbiAgICogSWYgYm90aCBvZmZzZXRzIGFyZSBgSGJzUG9zaXRpb25gcywgdGhleSdyZSBlcXVpdmFsZW50IGFzIGxvbmcgYXMgdGhlaXIgbGluZXMgYW5kIGNvbHVtbnMgYXJlXG4gICAqIHRoZSBzYW1lLiBUaGlzIGF2b2lkcyBjb21wdXRpbmcgb2Zmc2V0cyB1bm5lY2Vzc2FyaWx5LlxuICAgKlxuICAgKiBPdGhlcndpc2UsIHR3byBgU291cmNlT2Zmc2V0YHMgYXJlIGVxdWl2YWxlbnQgaWYgdGhlaXIgc3VjY2Vzc2Z1bGx5IGNvbXB1dGVkIGNoYXJhY3RlciBvZmZzZXRzXG4gICAqIGFyZSB0aGUgc2FtZS5cbiAgICovXG4gIGVxbChyaWdodDogU291cmNlT2Zmc2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVxbCh0aGlzLmRhdGEsIHJpZ2h0LmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNwYW4gdGhhdCBzdGFydHMgZnJvbSB0aGlzIHNvdXJjZSBvZmZzZXQgYW5kIGVuZHMgd2l0aCBhbm90aGVyIHNvdXJjZSBvZmZzZXQuIEF2b2lkXG4gICAqIGNvbXB1dGluZyBjaGFyYWN0ZXIgb2Zmc2V0cyBpZiBib3RoIGBTb3VyY2VPZmZzZXRgcyBhcmUgc3RpbGwgbGF6eS5cbiAgICovXG4gIHVudGlsKG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEsIG90aGVyLmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIGJ5IG1vdmluZyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMgc291cmNlIG9mZnNldFxuICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkIChpZiBgYnlgIGlzIG5lZ2F0aXZlKSwgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIElmIHRoaXMgYFNvdXJjZU9mZnNldGAgY2FuJ3QgY29tcHV0ZSBhIHZhbGlkIGNoYXJhY3RlciBvZmZzZXQsIGBtb3ZlYCByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICpcbiAgICogSWYgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIgb2Zmc2V0IGlzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgc291cmNlLCBgbW92ZWBcbiAgICogcmV0dXJucyBhIGJyb2tlbiBvZmZzZXQuXG4gICAqL1xuICBtb3ZlKGJ5OiBudW1iZXIpOiBTb3VyY2VPZmZzZXQge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5kYXRhLnRvQ2hhclBvcygpO1xuXG4gICAgaWYgKGNoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHQgPSBjaGFyUG9zLm9mZnNldCArIGJ5O1xuXG4gICAgICBpZiAoY2hhclBvcy5zb3VyY2UuY2hlY2socmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gbmV3IENoYXJQb3NpdGlvbihjaGFyUG9zLnNvdXJjZSwgcmVzdWx0KS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gU291cmNlT2Zmc2V0LmJyb2tlbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYFNvdXJjZVNwYW5gIHRoYXQgcmVwcmVzZW50cyBhIGNvbGxhcHNlZCByYW5nZSBhdCB0aGlzIHNvdXJjZSBvZmZzZXQuIEF2b2lkXG4gICAqIGNvbXB1dGluZyB0aGUgY2hhcmFjdGVyIG9mZnNldCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBjb21wdXRlZC5cbiAgICovXG4gIGNvbGxhcHNlZCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEsIHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIGBTb3VyY2VPZmZzZXRgIGludG8gYSBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoXG4gICAqIGV4aXN0aW5nIHBsdWdpbnMuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmRhdGEudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYXJQb3NpdGlvbiBpbXBsZW1lbnRzIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbjtcblxuICAvKiogQ29tcHV0ZWQgZnJvbSBjaGFyIG9mZnNldCAqL1xuICBfbG9jUG9zOiBIYnNQb3NpdGlvbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHNvdXJjZTogU291cmNlLCByZWFkb25seSBjaGFyUG9zOiBudW1iZXIpIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYWxyZWFkeSBhIGBDaGFyUG9zaXRpb25gLlxuICAgKlxuICAgKiB7QHNlZSBIYnNQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgYSBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSBmb3IgdGhpcyBgQ2hhclBvc2l0aW9uYC4gSWYgdGhpcyBgQ2hhclBvc2l0aW9uYCB3YXNcbiAgICogY29tcHV0ZWQgdXNpbmcge0BzZWUgU291cmNlT2Zmc2V0I21vdmV9LCB0aGlzIHdpbGwgY29tcHV0ZSB0aGUgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhlIG9mZnNldC5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgbGV0IGhicyA9IHRoaXMudG9IYnNQb3MoKTtcbiAgICByZXR1cm4gaGJzID09PSBudWxsID8gVU5LTk9XTl9QT1NJVElPTiA6IGhicy50b0pTT04oKTtcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGBDaGFyUG9zaXRpb25gIGFsd2F5cyBoYXMgYW4gb2Zmc2V0IGl0IGNhbiBwcm9kdWNlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY29tcHV0YXRpb24uXG4gICAqL1xuICBnZXQgb2Zmc2V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBjdXJyZW50IGNoYXJhY3RlciBvZmZzZXQgdG8gYW4gYEhic1Bvc2l0aW9uYCwgaWYgaXQgd2FzIG5vdCBhbHJlYWR5IGNvbXB1dGVkLiBPbmNlXG4gICAqIGEgYENoYXJQb3NpdGlvbmAgaGFzIGNvbXB1dGVkIGl0cyBgSGJzUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZFxuICAgKiB0aGUgc2FtZSBgQ2hhclBvc2l0aW9uYCBpcyByZXRhaW5lZCB3aGVuIHVzZWQgYXMgb25lIG9mIHRoZSBlbmRzIG9mIGEgYFNvdXJjZVNwYW5gLCBzb1xuICAgKiBjb21wdXRpbmcgdGhlIGBIYnNQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKi9cbiAgdG9IYnNQb3MoKTogSGJzUG9zaXRpb24gfCBudWxsIHtcbiAgICBsZXQgbG9jUG9zID0gdGhpcy5fbG9jUG9zO1xuXG4gICAgaWYgKGxvY1BvcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IGhic1BvcyA9IHRoaXMuc291cmNlLmhic1Bvc0Zvcih0aGlzLmNoYXJQb3MpO1xuXG4gICAgICBpZiAoaGJzUG9zID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2xvY1BvcyA9IGxvY1BvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvY1BvcyA9IGxvY1BvcyA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgaGJzUG9zLCB0aGlzLmNoYXJQb3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NQb3MgPT09IEJST0tFTiA/IG51bGwgOiBsb2NQb3M7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhic1Bvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG5cbiAgX2NoYXJQb3M6IENoYXJQb3NpdGlvbiB8IEJST0tFTiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgaGJzUG9zOiBTb3VyY2VQb3NpdGlvbixcbiAgICBjaGFyUG9zOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLl9jaGFyUG9zID0gY2hhclBvcyA9PT0gbnVsbCA/IG51bGwgOiBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgY2hhclBvcyk7XG4gIH1cblxuICAvKipcbiAgICogTGF6aWx5IGNvbXB1dGUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUge0BzZWUgU291cmNlUG9zaXRpb259LiBPbmNlIGFuIGBIYnNQb3NpdGlvbmAgaGFzXG4gICAqIGNvbXB1dGVkIGl0cyBgQ2hhclBvc2l0aW9uYCwgaXQgd2lsbCBub3QgbmVlZCB0byBkbyBjb21wdXRlIGl0IGFnYWluLCBhbmQgdGhlIHNhbWVcbiAgICogYEhic1Bvc2l0aW9uYCBpcyByZXRhaW5lZCB3aGVuIHVzZWQgYXMgb25lIG9mIHRoZSBlbmRzIG9mIGEgYFNvdXJjZVNwYW5gLCBzbyBjb21wdXRpbmcgdGhlXG4gICAqIGBDaGFyUG9zaXRpb25gIHNob3VsZCBiZSBhIG9uZS10aW1lIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24gfCBudWxsIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMuX2NoYXJQb3M7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IGNoYXJQb3NOdW1iZXIgPSB0aGlzLnNvdXJjZS5jaGFyUG9zRm9yKHRoaXMuaGJzUG9zKTtcblxuICAgICAgaWYgKGNoYXJQb3NOdW1iZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY2hhclBvcyA9IGNoYXJQb3MgPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaGFyUG9zID0gY2hhclBvcyA9IG5ldyBDaGFyUG9zaXRpb24odGhpcy5zb3VyY2UsIGNoYXJQb3NOdW1iZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFyUG9zID09PSBCUk9LRU4gPyBudWxsIDogY2hhclBvcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSB0aGF0IHRoaXMgYEhic1Bvc2l0aW9uYCB3YXMgaW5zdGFudGlhdGVkIHdpdGguIFRoaXMgb3BlcmF0aW9uXG4gICAqIGRvZXMgbm90IG5lZWQgdG8gY29tcHV0ZSBhbnl0aGluZy5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYWxyZWFkeSBhbiBgSGJzUG9zaXRpb25gLlxuICAgKlxuICAgKiB7QHNlZSBDaGFyUG9zaXRpb259IGZvciB0aGUgYWx0ZXJuYXRpdmUuXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZC5Ccm9rZW4gfCBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYyB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsXG4gICAgLy8gd2hhdGV2ZXIgd2FzIHByb3ZpZGVkLCBwb3NzaWJseSBicm9rZW5cbiAgICByZWFkb25seSBwb3M6IFNvdXJjZVBvc2l0aW9uXG4gICkge31cblxuICAvKipcbiAgICogQSBicm9rZW4gcG9zaXRpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGEge0BzZWUgQ2hhcmFjdGVyUG9zaXRpb259LlxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJpYWxpemF0aW9uIG9mIGFuIGBJbnZpc2libGVQb3NpdGlvbiBpcyB3aGF0ZXZlciBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSB3YXNcbiAgICogb3JpZ2luYWxseSBpZGVudGlmaWVkIGFzIGJyb2tlbiwgbm9uLWV4aXN0ZW50IG9yIHN5bnRoZXRpYy5cbiAgICpcbiAgICogSWYgYW4gYEludmlzaWJsZVBvc2l0aW9uYCBuZXZlciBoYWQgYW4gc291cmNlIG9mZnNldCBhdCBhbGwsIHRoaXMgbWV0aG9kIHJldHVybnNcbiAgICoge0BzZWUgVU5LTk9XTl9QT1NJVElPTn0gZm9yIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvcztcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIGdldCBvZmZzZXQoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byB7QHNlZSBBbnlQb3NpdGlvbn0gYW5kIGRldGVybWluZSB3aGV0aGVyIHRoZXkgYXJlIGVxdWFsLlxuICpcbiAqIEBzZWUge1NvdXJjZU9mZnNldCNlcWx9XG4gKi9cbmNvbnN0IGVxbCA9IG1hdGNoPGJvb2xlYW4+KChtKSA9PlxuICBtXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgICh7IGhic1BvczogbGVmdCB9LCB7IGhic1BvczogcmlnaHQgfSkgPT5cbiAgICAgICAgbGVmdC5jb2x1bW4gPT09IHJpZ2h0LmNvbHVtbiAmJiBsZWZ0LmxpbmUgPT09IHJpZ2h0LmxpbmVcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgKHsgY2hhclBvczogbGVmdCB9LCB7IGNoYXJQb3M6IHJpZ2h0IH0pID0+IGxlZnQgPT09IHJpZ2h0XG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgb2Zmc2V0OiBsZWZ0IH0sIHJpZ2h0KSA9PiBsZWZ0ID09PSByaWdodC50b0NoYXJQb3MoKT8ub2Zmc2V0XG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgKGxlZnQsIHsgb2Zmc2V0OiByaWdodCB9KSA9PiBsZWZ0LnRvQ2hhclBvcygpPy5vZmZzZXQgPT09IHJpZ2h0XG4gICAgKVxuICAgIC53aGVuKE1hdGNoQW55LCBNYXRjaEFueSwgKCkgPT4gZmFsc2UpXG4pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -34,24 +34,5 @@ "use strict";

return Constructor;
}
} // eslint-disable-next-line import/no-extraneous-dependencies
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPosSpan, _charPosSpan, _providedHbsLoc; // eslint-disable-next-line import/no-extraneous-dependencies
/**

@@ -360,4 +341,3 @@ * A `SourceSpan` object represents a span of characters inside of a template source.

;
_locPosSpan.set(this, null);
this._locPosSpan = null;
}

@@ -397,3 +377,3 @@

_proto2.toHbsSpan = function toHbsSpan() {
var locPosSpan = __classPrivateFieldGet(this, _locPosSpan);
var locPosSpan = this._locPosSpan;

@@ -405,8 +385,8 @@ if (locPosSpan === null) {

if (start === null || end === null) {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, _offset.BROKEN);
locPosSpan = this._locPosSpan = _offset.BROKEN;
} else {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, new HbsSpan(this.source, {
locPosSpan = this._locPosSpan = new HbsSpan(this.source, {
start: start,
end: end
}));
});
}

@@ -437,4 +417,2 @@ }

_locPosSpan = new WeakMap();
var HbsSpan = /*#__PURE__*/function () {

@@ -451,9 +429,4 @@ function HbsSpan(source, hbsPositions, providedHbsLoc) {

;
_charPosSpan.set(this, null); // the source location from Handlebars + AST Plugins -- could be wrong
_providedHbsLoc.set(this, void 0);
__classPrivateFieldSet(this, _providedHbsLoc, providedHbsLoc);
this._charPosSpan = null;
this._providedHbsLoc = providedHbsLoc;
}

@@ -475,13 +448,12 @@

_proto3.updateProvided = function updateProvided(pos, edge) {
if (__classPrivateFieldGet(this, _providedHbsLoc)) {
__classPrivateFieldGet(this, _providedHbsLoc)[edge] = pos;
if (this._providedHbsLoc) {
this._providedHbsLoc[edge] = pos;
} // invalidate computed character offsets
__classPrivateFieldSet(this, _charPosSpan, null);
__classPrivateFieldSet(this, _providedHbsLoc, {
this._charPosSpan = null;
this._providedHbsLoc = {
start: pos,
end: pos
});
};
};

@@ -533,3 +505,3 @@

_proto3.toCharPosSpan = function toCharPosSpan() {
var charPosSpan = __classPrivateFieldGet(this, _charPosSpan);
var charPosSpan = this._charPosSpan;

@@ -541,8 +513,8 @@ if (charPosSpan === null) {

if (start && end) {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, new CharPositionSpan(this.source, {
charPosSpan = this._charPosSpan = new CharPositionSpan(this.source, {
start: start,
end: end
}));
});
} else {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, _offset.BROKEN);
charPosSpan = this._charPosSpan = _offset.BROKEN;
return null;

@@ -559,3 +531,2 @@ }

exports.HbsSpan = HbsSpan;
_charPosSpan = new WeakMap(), _providedHbsLoc = new WeakMap();

@@ -697,2 +668,2 @@ var InvisibleSpan = /*#__PURE__*/function () {

exports.span = span;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0RBZEE7OztBQXVFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtDQSxJQUFNLFVBQU4sR0FBQSxhQUFBLFlBQUE7QUE0Q0UsV0FBQSxVQUFBLENBQUEsSUFBQSxFQUE0QztBQUF4QixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ2xCLFNBQUEsV0FBQSxHQUNFLElBQUksQ0FBSixJQUFBLEtBQVM7QUFBQTtBQUFULE9BQXlDLElBQUksQ0FBSixJQUFBLEtBQVM7QUFBQTtBQURwRDtBQUVEOztBQS9DSCxFQUFBLFVBQUEsQ0FBQSxJQUFBLEdBS0UsU0FBQSxJQUFBLENBQUEsTUFBQSxFQUFBLFVBQUEsRUFBNEQ7QUFDMUQsUUFBSSxPQUFBLFVBQUEsS0FBSixRQUFBLEVBQW9DO0FBQ2xDLGFBQU8sVUFBVSxDQUFWLGdCQUFBLENBQUEsTUFBQSxFQUFBLFVBQUEsRUFBUCxVQUFPLENBQVA7QUFERixLQUFBLE1BRU8sSUFBSSxPQUFBLFVBQUEsS0FBSixRQUFBLEVBQW9DO0FBQ3pDLGFBQU8sVUFBVSxDQUFWLFNBQUEsQ0FBUCxVQUFPLENBQVA7QUFESyxLQUFBLE1BRUEsSUFBSSxLQUFLLENBQUwsT0FBQSxDQUFKLFVBQUksQ0FBSixFQUErQjtBQUNwQyxhQUFPLFVBQVUsQ0FBVixnQkFBQSxDQUFBLE1BQUEsRUFBb0MsVUFBVSxDQUE5QyxDQUE4QyxDQUE5QyxFQUFtRCxVQUFVLENBQXBFLENBQW9FLENBQTdELENBQVA7QUFESyxLQUFBLE1BRUEsSUFBSSxVQUFVLEtBQUE7QUFBQTtBQUFkLE1BQTJDO0FBQ2hELGVBQU8sVUFBVSxDQUFqQixZ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LE1BRU87QUFDTCxhQUFPLElBQUksQ0FBQSxXQUFBLEVBQVgsS0FBVyxDQUFYO0FBQ0Q7QUE3QkwsR0FBQSxFQUFBLElBQUEsQ0FBQSxrQkFBQSxFQUFBLGVBQUEsRUErQmdDLFVBQUQsSUFBQyxFQUFEO0FBQUEsV0FBVSxJQUFBLGFBQUEsQ0FBa0IsSUFBSSxDQUF0QixJQUFBLEVBQUEseUJBQUEsRUEvQnpDLElBK0J5QyxFQUFWO0FBL0IvQixHQUFBLEVBQUEsSUFBQSxDQUFBLGVBQUEsRUFBQSxrQkFBQSxFQWdDK0IsVUFBQSxDQUFBLEVBQUEsS0FBQSxFQUFBO0FBQUEsV0FDM0IsSUFBQSxhQUFBLENBQWtCLEtBQUssQ0FBdkIsSUFBQSxFQUFBLHlCQUFBLEVBbENDLElBa0NELEVBRDJCO0FBakNjLEdBQzdDLENBRDZDO0FBQXhDLENBQWtDLENBQWxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgTE9DQUxfREVCVUcgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQge1xuICBCUk9LRU5fTE9DQVRJT04sXG4gIE5PTl9FWElTVEVOVF9MT0NBVElPTixcbiAgU291cmNlTG9jYXRpb24sXG4gIFNvdXJjZVBvc2l0aW9uLFxufSBmcm9tICcuLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4uL3NsaWNlJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBJc0ludmlzaWJsZSwgbWF0Y2gsIE1hdGNoQW55LCBNYXRjaEZuIH0gZnJvbSAnLi9tYXRjaCc7XG5pbXBvcnQge1xuICBBbnlQb3NpdGlvbixcbiAgQlJPS0VOLFxuICBDaGFyUG9zaXRpb24sXG4gIEhic1Bvc2l0aW9uLFxuICBJbnZpc2libGVQb3NpdGlvbixcbiAgT2Zmc2V0S2luZCxcbiAgU291cmNlT2Zmc2V0LFxufSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogQWxsIHNwYW5zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uXG4gKi9cbmludGVyZmFjZSBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQ7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBzcGFuIGludG8gYSBzdHJpbmcuIElmIHRoZSBzcGFuIGlzIGJyb2tlbiwgcmV0dXJuIGAnJ2AuXG4gICAqL1xuICBhc1N0cmluZygpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1vZHVsZSB0aGUgc3BhbiB3YXMgbG9jYXRlZCBpbi5cbiAgICovXG4gIGdldE1vZHVsZSgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoaXMgc3Bhbi4gVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBwb3NpdGlvbiBvYmplY3RzLCBhcyB0aGV5XG4gICAqIGNhY2hlIGNvbXB1dGF0aW9ucy5cbiAgICovXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVuZGluZyBwb3NpdGlvbiBmb3IgdGhpcyBzcGFuLiBUcnkgdG8gYXZvaWQgY3JlYXRpbmcgbmV3IHBvc2l0aW9uIG9iamVjdHMsIGFzIHRoZXlcbiAgICogY2FjaGUgY29tcHV0YXRpb25zLlxuICAgKi9cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSBgU291cmNlTG9jYXRpb25gIGZvciB0aGlzIHNwYW4sIHJldHVybmVkIGFzIGFuIGluc3RhbmNlIG9mIGBIYnNTcGFuYC5cbiAgICovXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHwgbnVsbDtcblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHksIHdoZW5ldmVyIHRoZSBgc3RhcnRgIG9yIGBlbmRgIG9mIGEge0BzZWUgU291cmNlT2Zmc2V0fSBjaGFuZ2VzLCBzcGFucyBhcmVcbiAgICogbm90aWZpZWQgb2YgdGhlIGNoYW5nZSBzbyB0aGV5IGNhbiB1cGRhdGUgdGhlbXNlbHZlcy4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIG91dHNpZGUgb2YgQVNUXG4gICAqIHBsdWdpbnMuXG4gICAqL1xuICBsb2NEaWRVcGRhdGUoY2hhbmdlczogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KTogdm9pZDtcblxuICAvKipcbiAgICogU2VyaWFsaXplIGludG8gYSB7QHNlZSBTZXJpYWxpemVkU291cmNlU3Bhbn0sIHdoaWNoIGlzIGNvbXBhY3QgYW5kIGRlc2lnbmVkIGZvciByZWFkYWJpbGl0eSBpblxuICAgKiBjb250ZXh0IGxpa2UgQVNUIEV4cGxvcmVyLiBJZiB5b3UgbmVlZCBhIHtAc2VlIFNvdXJjZUxvY2F0aW9ufSwgdXNlIHtAc2VlIHRvSlNPTn0uXG4gICAqL1xuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQSBgU291cmNlU3BhbmAgb2JqZWN0IHJlcHJlc2VudHMgYSBzcGFuIG9mIGNoYXJhY3RlcnMgaW5zaWRlIG9mIGEgdGVtcGxhdGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBgU291cmNlU3BhbmAgb2JqZWN0czpcbiAqXG4gKiAtIGBDb25jcmV0ZVNvdXJjZVNwYW5gLCB3aGljaCBjb250YWlucyBieXRlIG9mZnNldHNcbiAqIC0gYExhenlTb3VyY2VTcGFuYCwgd2hpY2ggY29udGFpbnMgYFNvdXJjZUxvY2F0aW9uYHMgZnJvbSB0aGUgSGFuZGxlYmFycyBBU1QsIHdoaWNoIGNhbiBiZVxuICogICBjb252ZXJ0ZWQgdG8gYnl0ZSBvZmZzZXRzIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVNvdXJjZVNwYW5gLCB3aGljaCByZXByZXNlbnQgc291cmNlIHN0cmluZ3MgdGhhdCBhcmVuJ3QgcHJlc2VudCBpbiB0aGUgc291cmNlLFxuICogICBiZWNhdXNlOlxuICogICAgIC0gdGhleSB3ZXJlIGNyZWF0ZWQgc3ludGhldGljYWxseVxuICogICAgIC0gdGhlaXIgbG9jYXRpb24gaXMgbm9uc2Vuc2ljYWwgKHRoZSBzcGFuIGlzIGJyb2tlbilcbiAqICAgICAtIHRoZXkgcmVwcmVzZW50IG5vdGhpbmcgaW4gdGhlIHNvdXJjZSAodGhpcyBjdXJyZW50bHkgaGFwcGVucyBvbmx5IHdoZW4gYSBidWcgaW4gdGhlXG4gKiAgICAgICB1cHN0cmVhbSBIYW5kbGViYXJzIHBhcnNlciBmYWlscyB0byBhc3NpZ24gYSBsb2NhdGlvbiB0byBlbXB0eSBibG9ja3MpXG4gKlxuICogQXQgYSBoaWdoIGxldmVsLCBhbGwgYFNvdXJjZVNwYW5gIG9iamVjdHMgcHJvdmlkZTpcbiAqXG4gKiAtIGJ5dGUgb2Zmc2V0c1xuICogLSBzb3VyY2UgaW4gY29sdW1uIGFuZCBsaW5lIGZvcm1hdFxuICpcbiAqIEFuZCB5b3UgY2FuIGRvIHRoZXNlIG9wZXJhdGlvbnMgb24gYFNvdXJjZVNwYW5gczpcbiAqXG4gKiAtIGNvbGxhcHNlIGl0IHRvIGEgYFNvdXJjZVNwYW5gIHJlcHJlc2VudGluZyBpdHMgc3RhcnRpbmcgb3IgZW5kaW5nIHBvc2l0aW9uXG4gKiAtIHNsaWNlIG91dCBzb21lIGNoYXJhY3RlcnMsIG9wdGlvbmFsbHkgc2tpcHBpbmcgc29tZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kXG4gKiAtIGNyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgd2l0aCBhIGRpZmZlcmVudCBzdGFydGluZyBvciBlbmRpbmcgb2Zmc2V0XG4gKlxuICogQWxsIFNvdXJjZVNwYW4gb2JqZWN0cyBpbXBsZW1lbnQgYFNvdXJjZUxvY2F0aW9uYCwgZm9yIGNvbXBhdGliaWxpdHkuIEFsbCBTb3VyY2VTcGFuXG4gKiBvYmplY3RzIGhhdmUgYSBgdG9KU09OYCB0aGF0IGVtaXRzIGBTb3VyY2VMb2NhdGlvbmAsIGFsc28gZm9yIGNvbXBhdGliaWxpdHkuXG4gKlxuICogRm9yIGNvbXBhdGliaWxpdHksIHN1YmNsYXNzZXMgb2YgYEFic3RyYWN0U291cmNlU3BhbmAgbXVzdCBpbXBsZW1lbnQgYGxvY0RpZFVwZGF0ZWAsIHdoaWNoXG4gKiBoYXBwZW5zIHdoZW4gYW4gQVNUIHBsdWdpbiBhdHRlbXB0cyB0byBtb2RpZnkgdGhlIGBzdGFydGAgb3IgYGVuZGAgb2YgYSBzcGFuIGRpcmVjdGx5LlxuICpcbiAqIFRoZSBnb2FsIGlzIHRvIGF2b2lkIGNyZWF0aW5nIGFueSBwcm9ibGVtcyBmb3IgdXNlLWNhc2VzIGxpa2UgQVNUIEV4cGxvcmVyLlxuICovXG5leHBvcnQgY2xhc3MgU291cmNlU3BhbiBpbXBsZW1lbnRzIFNvdXJjZUxvY2F0aW9uIHtcbiAgc3RhdGljIGdldCBOT05fRVhJU1RFTlQoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsIE5PTl9FWElTVEVOVF9MT0NBVElPTikud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGxvYWQoc291cmNlOiBTb3VyY2UsIHNlcmlhbGl6ZWQ6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIHNlcmlhbGl6ZWQsIHNlcmlhbGl6ZWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5zeW50aGV0aWMoc2VyaWFsaXplZCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNlcmlhbGl6ZWQpKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgc2VyaWFsaXplZFswXSwgc2VyaWFsaXplZFsxXSk7XG4gICAgfSBlbHNlIGlmIChzZXJpYWxpemVkID09PSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50KSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQ7XG4gICAgfSBlbHNlIGlmIChzZXJpYWxpemVkID09PSBPZmZzZXRLaW5kLkJyb2tlbikge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uYnJva2VuKEJST0tFTl9MT0NBVElPTik7XG4gICAgfVxuXG4gICAgYXNzZXJ0TmV2ZXIoc2VyaWFsaXplZCk7XG4gIH1cblxuICBzdGF0aWMgZm9ySGJzTG9jKHNvdXJjZTogU291cmNlLCBsb2M6IFNvdXJjZUxvY2F0aW9uKTogU291cmNlU3BhbiB7XG4gICAgbGV0IHN0YXJ0ID0gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgbG9jLnN0YXJ0KTtcbiAgICBsZXQgZW5kID0gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgbG9jLmVuZCk7XG4gICAgcmV0dXJuIG5ldyBIYnNTcGFuKHNvdXJjZSwgeyBzdGFydCwgZW5kIH0sIGxvYykud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGZvckNoYXJQb3NpdGlvbnMoc291cmNlOiBTb3VyY2UsIHN0YXJ0UG9zOiBudW1iZXIsIGVuZFBvczogbnVtYmVyKTogU291cmNlU3BhbiB7XG4gICAgbGV0IHN0YXJ0ID0gbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIHN0YXJ0UG9zKTtcbiAgICBsZXQgZW5kID0gbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIGVuZFBvcyk7XG5cbiAgICByZXR1cm4gbmV3IENoYXJQb3NpdGlvblNwYW4oc291cmNlLCB7IHN0YXJ0LCBlbmQgfSkud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIHN5bnRoZXRpYyhjaGFyczogc3RyaW5nKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljLCBOT05fRVhJU1RFTlRfTE9DQVRJT04sIGNoYXJzKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgYnJva2VuKHBvczogU291cmNlTG9jYXRpb24gPSBCUk9LRU5fTE9DQVRJT04pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIHBvcykud3JhcCgpO1xuICB9XG5cbiAgcmVhZG9ubHkgaXNJbnZpc2libGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBTcGFuRGF0YSAmIEFueVNwYW4pIHtcbiAgICB0aGlzLmlzSW52aXNpYmxlID1cbiAgICAgIGRhdGEua2luZCAhPT0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24gJiYgZGF0YS5raW5kICE9PSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldFN0YXJ0KCkud3JhcCgpO1xuICB9XG5cbiAgZ2V0RW5kKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRFbmQoKS53cmFwKCk7XG4gIH1cblxuICBnZXQgbG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICBsZXQgc3BhbiA9IHRoaXMuZGF0YS50b0hic1NwYW4oKTtcbiAgICByZXR1cm4gc3BhbiA9PT0gbnVsbCA/IEJST0tFTl9MT0NBVElPTiA6IHNwYW4udG9IYnNMb2MoKTtcbiAgfVxuXG4gIGdldCBtb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldE1vZHVsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhcnRpbmcgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhpcyBgU291cmNlU3BhbmAsIGxhemlseSBjb21wdXRpbmcgaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IHN0YXJ0UG9zaXRpb24oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5zdGFydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVuZGluZyBgU291cmNlUG9zaXRpb25gIGZvciB0aGlzIGBTb3VyY2VTcGFuYCwgbGF6aWx5IGNvbXB1dGluZyBpdCBpZiBuZWVkZWQuXG4gICAqL1xuICBnZXQgZW5kUG9zaXRpb24oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5lbmQ7XG4gIH1cblxuICAvKipcbiAgICogU3VwcG9ydCBjb252ZXJ0aW5nIEFTVHYxIG5vZGVzIGludG8gYSBzZXJpYWxpemVkIGZvcm1hdCB1c2luZyBKU09OLnN0cmluZ2lmeS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzcGFuIHdpdGggdGhlIGN1cnJlbnQgc3BhbidzIGVuZCBhbmQgYSBuZXcgYmVnaW5uaW5nLlxuICAgKi9cbiAgd2l0aFN0YXJ0KG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3BhbihvdGhlci5kYXRhLCB0aGlzLmRhdGEuZ2V0RW5kKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzcGFuIHdpdGggdGhlIGN1cnJlbnQgc3BhbidzIGJlZ2lubmluZyBhbmQgYSBuZXcgZW5kaW5nLlxuICAgKi9cbiAgd2l0aEVuZCh0aGlzOiBTb3VyY2VTcGFuLCBvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLmdldFN0YXJ0KCksIG90aGVyLmRhdGEpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmFzU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIGBTb3VyY2VTcGFuYCBpbnRvIGEgYFNvdXJjZVNsaWNlYC4gSW4gZGVidWcgbW9kZSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSBjaGVja3NcbiAgICogdGhhdCB0aGUgYnl0ZSBvZmZzZXRzIHJlcHJlc2VudGVkIGJ5IHRoaXMgYFNvdXJjZVNwYW5gIGFjdHVhbGx5IGNvcnJlc3BvbmQgdG8gdGhlIGV4cGVjdGVkXG4gICAqIHN0cmluZy5cbiAgICovXG4gIHRvU2xpY2UoZXhwZWN0ZWQ/OiBzdHJpbmcpOiBTb3VyY2VTbGljZSB7XG4gICAgbGV0IGNoYXJzID0gdGhpcy5kYXRhLmFzU3RyaW5nKCk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGlmIChleHBlY3RlZCAhPT0gdW5kZWZpbmVkICYmIGNoYXJzICE9PSBleHBlY3RlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYHVuZXhwZWN0ZWRseSBmb3VuZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgY2hhcnNcbiAgICAgICAgICApfSB3aGVuIHNsaWNpbmcgc291cmNlLCBidXQgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShleHBlY3RlZCl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgU291cmNlU2xpY2Uoe1xuICAgICAgbG9jOiB0aGlzLFxuICAgICAgY2hhcnM6IGV4cGVjdGVkIHx8IGNoYXJzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHN0YXJ0UG9zaXRpb24gaW5zdGVhZFxuICAgKi9cbiAgZ2V0IHN0YXJ0KCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2Muc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2l0aFN0YXJ0IGluc3RlYWRcbiAgICovXG4gIHNldCBzdGFydChwb3NpdGlvbjogU291cmNlUG9zaXRpb24pIHtcbiAgICB0aGlzLmRhdGEubG9jRGlkVXBkYXRlKHsgc3RhcnQ6IHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGVuZFBvc2l0aW9uIGluc3RlYWRcbiAgICovXG4gIGdldCBlbmQoKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5lbmQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2l0aEVuZCBpbnN0ZWFkXG4gICAqL1xuICBzZXQgZW5kKHBvc2l0aW9uOiBTb3VyY2VQb3NpdGlvbikge1xuICAgIHRoaXMuZGF0YS5sb2NEaWRVcGRhdGUoeyBlbmQ6IHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIG1vZHVsZSBpbnN0ZWFkXG4gICAqL1xuICBnZXQgc291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlO1xuICB9XG5cbiAgY29sbGFwc2Uod2hlcmU6ICdzdGFydCcgfCAnZW5kJyk6IFNvdXJjZVNwYW4ge1xuICAgIHN3aXRjaCAod2hlcmUpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhcnQoKS5jb2xsYXBzZWQoKTtcbiAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldEVuZCgpLmNvbGxhcHNlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGV4dGVuZChvdGhlcjogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YS5nZXRTdGFydCgpLCBvdGhlci5kYXRhLmdldEVuZCgpKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHNsaWNlKHsgc2tpcFN0YXJ0ID0gMCwgc2tpcEVuZCA9IDAgfTogeyBza2lwU3RhcnQ/OiBudW1iZXI7IHNraXBFbmQ/OiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCkuZGF0YSwgdGhpcy5nZXRFbmQoKS5tb3ZlKC1za2lwRW5kKS5kYXRhKTtcbiAgfVxuXG4gIHNsaWNlU3RhcnRDaGFycyh7IHNraXBTdGFydCA9IDAsIGNoYXJzIH06IHsgc2tpcFN0YXJ0PzogbnVtYmVyOyBjaGFyczogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQpLmRhdGEsIHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCArIGNoYXJzKS5kYXRhKTtcbiAgfVxuXG4gIHNsaWNlRW5kQ2hhcnMoeyBza2lwRW5kID0gMCwgY2hhcnMgfTogeyBza2lwRW5kPzogbnVtYmVyOyBjaGFyczogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldEVuZCgpLm1vdmUoc2tpcEVuZCAtIGNoYXJzKS5kYXRhLCB0aGlzLmdldFN0YXJ0KCkubW92ZSgtc2tpcEVuZCkuZGF0YSk7XG4gIH1cbn1cblxudHlwZSBBbnlTcGFuID0gSGJzU3BhbiB8IENoYXJQb3NpdGlvblNwYW4gfCBJbnZpc2libGVTcGFuO1xuXG5jbGFzcyBDaGFyUG9zaXRpb25TcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb247XG5cbiAgI2xvY1Bvc1NwYW46IEhic1NwYW4gfCBCUk9LRU4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBjaGFyUG9zaXRpb25zOiB7IHN0YXJ0OiBDaGFyUG9zaXRpb247IGVuZDogQ2hhclBvc2l0aW9uIH1cbiAgKSB7fVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uuc2xpY2UodGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0LmNoYXJQb3MsIHRoaXMuY2hhclBvc2l0aW9ucy5lbmQuY2hhclBvcyk7XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubW9kdWxlO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQ7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kO1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKCkge1xuICAgIGlmIChMT0NBTF9ERUJVRykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYHVwZGF0aW5nIGEgbG9jYXRpb24gdGhhdCBjYW1lIGZyb20gYSBDaGFyUG9zaXRpb24gc3BhbiBkb2Vzbid0IHdvcmsgcmVsaWFibHkuIERvbid0IHRyeSB0byB1cGRhdGUgbG9jYXRpb25zIGFmdGVyIHRoZSBwbHVnaW4gcGhhc2VgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHwgbnVsbCB7XG4gICAgbGV0IGxvY1Bvc1NwYW4gPSB0aGlzLiNsb2NQb3NTcGFuO1xuXG4gICAgaWYgKGxvY1Bvc1NwYW4gPT09IG51bGwpIHtcbiAgICAgIGxldCBzdGFydCA9IHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydC50b0hic1BvcygpO1xuICAgICAgbGV0IGVuZCA9IHRoaXMuY2hhclBvc2l0aW9ucy5lbmQudG9IYnNQb3MoKTtcblxuICAgICAgaWYgKHN0YXJ0ID09PSBudWxsIHx8IGVuZCA9PT0gbnVsbCkge1xuICAgICAgICBsb2NQb3NTcGFuID0gdGhpcy4jbG9jUG9zU3BhbiA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY1Bvc1NwYW4gPSB0aGlzLiNsb2NQb3NTcGFuID0gbmV3IEhic1NwYW4odGhpcy5zb3VyY2UsIHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NQb3NTcGFuID09PSBCUk9LRU4gPyBudWxsIDogbG9jUG9zU3BhbjtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3BhbiB7XG4gICAgbGV0IHtcbiAgICAgIHN0YXJ0OiB7IGNoYXJQb3M6IHN0YXJ0IH0sXG4gICAgICBlbmQ6IHsgY2hhclBvczogZW5kIH0sXG4gICAgfSA9IHRoaXMuY2hhclBvc2l0aW9ucztcblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgICByZXR1cm4gc3RhcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG4gICAgfVxuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBDaGFyUG9zaXRpb25TcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG5cbiAgI2NoYXJQb3NTcGFuOiBDaGFyUG9zaXRpb25TcGFuIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gdGhlIHNvdXJjZSBsb2NhdGlvbiBmcm9tIEhhbmRsZWJhcnMgKyBBU1QgUGx1Z2lucyAtLSBjb3VsZCBiZSB3cm9uZ1xuICAjcHJvdmlkZWRIYnNMb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3NpdGlvbnM6IHsgc3RhcnQ6IEhic1Bvc2l0aW9uOyBlbmQ6IEhic1Bvc2l0aW9uIH0sXG4gICAgcHJvdmlkZWRIYnNMb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy4jcHJvdmlkZWRIYnNMb2MgPSBwcm92aWRlZEhic0xvYztcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMudG9DaGFyUG9zU3BhbigpO1xuICAgIHJldHVybiBjaGFyUG9zID09PSBudWxsID8gT2Zmc2V0S2luZC5Ccm9rZW4gOiBjaGFyUG9zLndyYXAoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcm92aWRlZChwb3M6IFNvdXJjZVBvc2l0aW9uLCBlZGdlOiAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICBpZiAodGhpcy4jcHJvdmlkZWRIYnNMb2MpIHtcbiAgICAgIHRoaXMuI3Byb3ZpZGVkSGJzTG9jW2VkZ2VdID0gcG9zO1xuICAgIH1cblxuICAgIC8vIGludmFsaWRhdGUgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICB0aGlzLiNjaGFyUG9zU3BhbiA9IG51bGw7XG4gICAgdGhpcy4jcHJvdmlkZWRIYnNMb2MgPSB7XG4gICAgICBzdGFydDogcG9zLFxuICAgICAgZW5kOiBwb3MsXG4gICAgfTtcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSh7IHN0YXJ0LCBlbmQgfTogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KTogdm9pZCB7XG4gICAgaWYgKHN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvdmlkZWQoc3RhcnQsICdzdGFydCcpO1xuICAgICAgdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIHN0YXJ0LCBudWxsKTtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvdmlkZWQoZW5kLCAnZW5kJyk7XG4gICAgICB0aGlzLmhic1Bvc2l0aW9ucy5lbmQgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIGVuZCwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBsZXQgc3BhbiA9IHRoaXMudG9DaGFyUG9zU3BhbigpO1xuICAgIHJldHVybiBzcGFuID09PSBudWxsID8gJycgOiBzcGFuLmFzU3RyaW5nKCk7XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubW9kdWxlO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydDtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zaXRpb25zLmVuZDtcbiAgfVxuXG4gIHRvSGJzTG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0Lmhic1BvcyxcbiAgICAgIGVuZDogdGhpcy5oYnNQb3NpdGlvbnMuZW5kLmhic1BvcyxcbiAgICB9O1xuICB9XG5cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBDaGFyUG9zaXRpb25TcGFuIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3NTcGFuID0gdGhpcy4jY2hhclBvc1NwYW47XG5cbiAgICBpZiAoY2hhclBvc1NwYW4gPT09IG51bGwpIHtcbiAgICAgIGxldCBzdGFydCA9IHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0LnRvQ2hhclBvcygpO1xuICAgICAgbGV0IGVuZCA9IHRoaXMuaGJzUG9zaXRpb25zLmVuZC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICBjaGFyUG9zU3BhbiA9IHRoaXMuI2NoYXJQb3NTcGFuID0gbmV3IENoYXJQb3NpdGlvblNwYW4odGhpcy5zb3VyY2UsIHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhclBvc1NwYW4gPSB0aGlzLiNjaGFyUG9zU3BhbiA9IEJST0tFTjtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3NTcGFuID09PSBCUk9LRU4gPyBudWxsIDogY2hhclBvc1NwYW47XG4gIH1cbn1cblxuY2xhc3MgSW52aXNpYmxlU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZC5Ccm9rZW4gfCBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYyB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsXG4gICAgLy8gd2hhdGV2ZXIgd2FzIHByb3ZpZGVkLCBwb3NzaWJseSBicm9rZW5cbiAgICByZWFkb25seSBsb2M6IFNvdXJjZUxvY2F0aW9uLFxuICAgIC8vIGlmIHRoZSBzcGFuIHJlcHJlc2VudHMgYSBzeW50aGV0aWMgc3RyaW5nXG4gICAgcmVhZG9ubHkgc3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHt9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4ge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIE9mZnNldEtpbmQuQnJva2VuOlxuICAgICAgY2FzZSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5raW5kO1xuICAgICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmcgfHwgJyc7XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoeyBzdGFydCwgZW5kIH06IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSkge1xuICAgIGlmIChzdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvYy5zdGFydCA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2MuZW5kID0gZW5kO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyByZWZsZWN0IHRoZSBhY3R1YWwgbW9kdWxlIHRoaXMgc3BhbiBvcmlnaW5hdGVkIGZyb21cbiAgICByZXR1cm4gJ2FuIHVua25vd24gbW9kdWxlJztcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKHRoaXMua2luZCwgdGhpcy5sb2Muc3RhcnQpO1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKHRoaXMua2luZCwgdGhpcy5sb2MuZW5kKTtcbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogSW52aXNpYmxlU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0hic1NwYW4oKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0b0hic0xvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIEJST0tFTl9MT0NBVElPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3BhbjogTWF0Y2hGbjxTb3VyY2VTcGFuPiA9IG1hdGNoKChtKSA9PlxuICBtXG4gICAgLndoZW4oT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgbmV3IEhic1NwYW4obGVmdC5zb3VyY2UsIHtcbiAgICAgICAgc3RhcnQ6IGxlZnQsXG4gICAgICAgIGVuZDogcmlnaHQsXG4gICAgICB9KS53cmFwKClcbiAgICApXG4gICAgLndoZW4oT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+XG4gICAgICBuZXcgQ2hhclBvc2l0aW9uU3BhbihsZWZ0LnNvdXJjZSwge1xuICAgICAgICBzdGFydDogbGVmdCxcbiAgICAgICAgZW5kOiByaWdodCxcbiAgICAgIH0pLndyYXAoKVxuICAgIClcbiAgICAud2hlbihPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICBsZXQgcmlnaHRDaGFyUG9zID0gcmlnaHQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChyaWdodENoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzcGFuKGxlZnQsIHJpZ2h0Q2hhclBvcyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAud2hlbihPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICBsZXQgbGVmdENoYXJQb3MgPSBsZWZ0LnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAobGVmdENoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzcGFuKGxlZnRDaGFyUG9zLCByaWdodCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAud2hlbihJc0ludmlzaWJsZSwgTWF0Y2hBbnksIChsZWZ0KSA9PiBuZXcgSW52aXNpYmxlU3BhbihsZWZ0LmtpbmQsIEJST0tFTl9MT0NBVElPTikud3JhcCgpKVxuICAgIC53aGVuKE1hdGNoQW55LCBJc0ludmlzaWJsZSwgKF8sIHJpZ2h0KSA9PlxuICAgICAgbmV3IEludmlzaWJsZVNwYW4ocmlnaHQua2luZCwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKClcbiAgICApXG4pO1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuID1cbiAgfCAvKiogY29sbGFwc2VkICovIG51bWJlclxuICB8IC8qKiBub3JtYWwgKi8gW3N0YXJ0OiBudW1iZXIsIHNpemU6IG51bWJlcl1cbiAgfCAvKiogc3ludGhldGljICovIHN0cmluZztcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFNvdXJjZVNwYW4gPVxuICB8IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW5cbiAgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50XG4gIHwgT2Zmc2V0S2luZC5Ccm9rZW47XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFFQTs7QUFNQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztFQWRBOzs7QUF1RUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ0EsSUFBTSxVQUFOLEdBQUEsYUFBQSxZQUFBO0FBNENFLFdBQUEsVUFBQSxDQUFBLElBQUEsRUFBNEM7QUFBeEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNsQixTQUFBLFdBQUEsR0FDRSxJQUFJLENBQUosSUFBQSxLQUFTO0FBQUE7QUFBVCxPQUF5QyxJQUFJLENBQUosSUFBQSxLQUFTO0FBQUE7QUFEcEQ7QUFFRDs7QUEvQ0gsRUFBQSxVQUFBLENBQUEsSUFBQSxHQUtFLFNBQUEsSUFBQSxDQUFBLE1BQUEsRUFBQSxVQUFBLEVBQTREO0FBQzFELFFBQUksT0FBQSxVQUFBLEtBQUosUUFBQSxFQUFvQztBQUNsQyxhQUFPLFVBQVUsQ0FBVixnQkFBQSxDQUFBLE1BQUEsRUFBQSxVQUFBLEVBQVAsVUFBTyxDQUFQO0FBREYsS0FBQSxNQUVPLElBQUksT0FBQSxVQUFBLEtBQUosUUFBQSxFQUFvQztBQUN6QyxhQUFPLFVBQVUsQ0FBVixTQUFBLENBQVAsVUFBTyxDQUFQO0FBREssS0FBQSxNQUVBLElBQUksS0FBSyxDQUFMLE9BQUEsQ0FBSixVQUFJLENBQUosRUFBK0I7QUFDcEMsYUFBTyxVQUFVLENBQVYsZ0JBQUEsQ0FBQSxNQUFBLEVBQW9DLFVBQVUsQ0FBOUMsQ0FBOEMsQ0FBOUMsRUFBbUQsVUFBVSxDQUFwRSxDQUFvRSxDQUE3RCxDQUFQO0FBREssS0FBQSxNQUVBLElBQUksVUFBVSxLQUFBO0FBQUE7QUFBZCxNQUEyQztBQUNoRCxlQUFPLFVBQVUsQ0FBakIsWUFBQTtBQURLLE9BQUEsTUFFQSxJ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b250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHtcbiAgQlJPS0VOX0xPQ0FUSU9OLFxuICBOT05fRVhJU1RFTlRfTE9DQVRJT04sXG4gIFNvdXJjZUxvY2F0aW9uLFxuICBTb3VyY2VQb3NpdGlvbixcbn0gZnJvbSAnLi4vbG9jYXRpb24nO1xuaW1wb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuLi9zbGljZSc7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2UnO1xuaW1wb3J0IHsgSXNJbnZpc2libGUsIG1hdGNoLCBNYXRjaEFueSwgTWF0Y2hGbiB9IGZyb20gJy4vbWF0Y2gnO1xuaW1wb3J0IHtcbiAgQW55UG9zaXRpb24sXG4gIEJST0tFTixcbiAgQ2hhclBvc2l0aW9uLFxuICBIYnNQb3NpdGlvbixcbiAgSW52aXNpYmxlUG9zaXRpb24sXG4gIE9mZnNldEtpbmQsXG4gIFNvdXJjZU9mZnNldCxcbn0gZnJvbSAnLi9vZmZzZXQnO1xuXG4vKipcbiAqIEFsbCBzcGFucyBoYXZlIHRoZXNlIGRldGFpbHMgaW4gY29tbW9uLlxuICovXG5pbnRlcmZhY2UgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgc3BhbiBpbnRvIGEgc3RyaW5nLiBJZiB0aGUgc3BhbiBpcyBicm9rZW4sIHJldHVybiBgJydgLlxuICAgKi9cbiAgYXNTdHJpbmcoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtb2R1bGUgdGhlIHNwYW4gd2FzIGxvY2F0ZWQgaW4uXG4gICAqL1xuICBnZXRNb2R1bGUoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGlzIHNwYW4uIFRyeSB0byBhdm9pZCBjcmVhdGluZyBuZXcgcG9zaXRpb24gb2JqZWN0cywgYXMgdGhleVxuICAgKiBjYWNoZSBjb21wdXRhdGlvbnMuXG4gICAqL1xuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbjtcblxuICAvKipcbiAgICogR2V0IHRoZSBlbmRpbmcgcG9zaXRpb24gZm9yIHRoaXMgc3Bhbi4gVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBwb3NpdGlvbiBvYmplY3RzLCBhcyB0aGV5XG4gICAqIGNhY2hlIGNvbXB1dGF0aW9ucy5cbiAgICovXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbjtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgYFNvdXJjZUxvY2F0aW9uYCBmb3IgdGhpcyBzcGFuLCByZXR1cm5lZCBhcyBhbiBpbnN0YW5jZSBvZiBgSGJzU3BhbmAuXG4gICAqL1xuICB0b0hic1NwYW4oKTogSGJzU3BhbiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5LCB3aGVuZXZlciB0aGUgYHN0YXJ0YCBvciBgZW5kYCBvZiBhIHtAc2VlIFNvdXJjZU9mZnNldH0gY2hhbmdlcywgc3BhbnMgYXJlXG4gICAqIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2Ugc28gdGhleSBjYW4gdXBkYXRlIHRoZW1zZWx2ZXMuIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBvdXRzaWRlIG9mIEFTVFxuICAgKiBwbHVnaW5zLlxuICAgKi9cbiAgbG9jRGlkVXBkYXRlKGNoYW5nZXM6IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBpbnRvIGEge0BzZWUgU2VyaWFsaXplZFNvdXJjZVNwYW59LCB3aGljaCBpcyBjb21wYWN0IGFuZCBkZXNpZ25lZCBmb3IgcmVhZGFiaWxpdHkgaW5cbiAgICogY29udGV4dCBsaWtlIEFTVCBFeHBsb3Jlci4gSWYgeW91IG5lZWQgYSB7QHNlZSBTb3VyY2VMb2NhdGlvbn0sIHVzZSB7QHNlZSB0b0pTT059LlxuICAgKi9cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIEEgYFNvdXJjZVNwYW5gIG9iamVjdCByZXByZXNlbnRzIGEgc3BhbiBvZiBjaGFyYWN0ZXJzIGluc2lkZSBvZiBhIHRlbXBsYXRlIHNvdXJjZS5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgYFNvdXJjZVNwYW5gIG9iamVjdHM6XG4gKlxuICogLSBgQ29uY3JldGVTb3VyY2VTcGFuYCwgd2hpY2ggY29udGFpbnMgYnl0ZSBvZmZzZXRzXG4gKiAtIGBMYXp5U291cmNlU3BhbmAsIHdoaWNoIGNvbnRhaW5zIGBTb3VyY2VMb2NhdGlvbmBzIGZyb20gdGhlIEhhbmRsZWJhcnMgQVNULCB3aGljaCBjYW4gYmVcbiAqICAgY29udmVydGVkIHRvIGJ5dGUgb2Zmc2V0cyBvbiBkZW1hbmQuXG4gKiAtIGBJbnZpc2libGVTb3VyY2VTcGFuYCwgd2hpY2ggcmVwcmVzZW50IHNvdXJjZSBzdHJpbmdzIHRoYXQgYXJlbid0IHByZXNlbnQgaW4gdGhlIHNvdXJjZSxcbiAqICAgYmVjYXVzZTpcbiAqICAgICAtIHRoZXkgd2VyZSBjcmVhdGVkIHN5bnRoZXRpY2FsbHlcbiAqICAgICAtIHRoZWlyIGxvY2F0aW9uIGlzIG5vbnNlbnNpY2FsICh0aGUgc3BhbiBpcyBicm9rZW4pXG4gKiAgICAgLSB0aGV5IHJlcHJlc2VudCBub3RoaW5nIGluIHRoZSBzb3VyY2UgKHRoaXMgY3VycmVudGx5IGhhcHBlbnMgb25seSB3aGVuIGEgYnVnIGluIHRoZVxuICogICAgICAgdXBzdHJlYW0gSGFuZGxlYmFycyBwYXJzZXIgZmFpbHMgdG8gYXNzaWduIGEgbG9jYXRpb24gdG8gZW1wdHkgYmxvY2tzKVxuICpcbiAqIEF0IGEgaGlnaCBsZXZlbCwgYWxsIGBTb3VyY2VTcGFuYCBvYmplY3RzIHByb3ZpZGU6XG4gKlxuICogLSBieXRlIG9mZnNldHNcbiAqIC0gc291cmNlIGluIGNvbHVtbiBhbmQgbGluZSBmb3JtYXRcbiAqXG4gKiBBbmQgeW91IGNhbiBkbyB0aGVzZSBvcGVyYXRpb25zIG9uIGBTb3VyY2VTcGFuYHM6XG4gKlxuICogLSBjb2xsYXBzZSBpdCB0byBhIGBTb3VyY2VTcGFuYCByZXByZXNlbnRpbmcgaXRzIHN0YXJ0aW5nIG9yIGVuZGluZyBwb3NpdGlvblxuICogLSBzbGljZSBvdXQgc29tZSBjaGFyYWN0ZXJzLCBvcHRpb25hbGx5IHNraXBwaW5nIHNvbWUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogLSBjcmVhdGUgYSBuZXcgYFNvdXJjZVNwYW5gIHdpdGggYSBkaWZmZXJlbnQgc3RhcnRpbmcgb3IgZW5kaW5nIG9mZnNldFxuICpcbiAqIEFsbCBTb3VyY2VTcGFuIG9iamVjdHMgaW1wbGVtZW50IGBTb3VyY2VMb2NhdGlvbmAsIGZvciBjb21wYXRpYmlsaXR5LiBBbGwgU291cmNlU3BhblxuICogb2JqZWN0cyBoYXZlIGEgYHRvSlNPTmAgdGhhdCBlbWl0cyBgU291cmNlTG9jYXRpb25gLCBhbHNvIGZvciBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEZvciBjb21wYXRpYmlsaXR5LCBzdWJjbGFzc2VzIG9mIGBBYnN0cmFjdFNvdXJjZVNwYW5gIG11c3QgaW1wbGVtZW50IGBsb2NEaWRVcGRhdGVgLCB3aGljaFxuICogaGFwcGVucyB3aGVuIGFuIEFTVCBwbHVnaW4gYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBgc3RhcnRgIG9yIGBlbmRgIG9mIGEgc3BhbiBkaXJlY3RseS5cbiAqXG4gKiBUaGUgZ29hbCBpcyB0byBhdm9pZCBjcmVhdGluZyBhbnkgcHJvYmxlbXMgZm9yIHVzZS1jYXNlcyBsaWtlIEFTVCBFeHBsb3Jlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZVNwYW4gaW1wbGVtZW50cyBTb3VyY2VMb2NhdGlvbiB7XG4gIHN0YXRpYyBnZXQgTk9OX0VYSVNURU5UKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LCBOT05fRVhJU1RFTlRfTE9DQVRJT04pLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBsb2FkKHNvdXJjZTogU291cmNlLCBzZXJpYWxpemVkOiBTZXJpYWxpemVkU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCBzZXJpYWxpemVkLCBzZXJpYWxpemVkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uc3ludGhldGljKHNlcmlhbGl6ZWQpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzZXJpYWxpemVkKSkge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIHNlcmlhbGl6ZWRbMF0sIHNlcmlhbGl6ZWRbMV0pO1xuICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplZCA9PT0gT2Zmc2V0S2luZC5Ob25FeGlzdGVudCkge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uTk9OX0VYSVNURU5UO1xuICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplZCA9PT0gT2Zmc2V0S2luZC5Ccm9rZW4pIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmJyb2tlbihCUk9LRU5fTE9DQVRJT04pO1xuICAgIH1cblxuICAgIGFzc2VydE5ldmVyKHNlcmlhbGl6ZWQpO1xuICB9XG5cbiAgc3RhdGljIGZvckhic0xvYyhzb3VyY2U6IFNvdXJjZSwgbG9jOiBTb3VyY2VMb2NhdGlvbik6IFNvdXJjZVNwYW4ge1xuICAgIGxldCBzdGFydCA9IG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIGxvYy5zdGFydCk7XG4gICAgbGV0IGVuZCA9IG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIGxvYy5lbmQpO1xuICAgIHJldHVybiBuZXcgSGJzU3Bhbihzb3VyY2UsIHsgc3RhcnQsIGVuZCB9LCBsb2MpLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGFyUG9zaXRpb25zKHNvdXJjZTogU291cmNlLCBzdGFydFBvczogbnVtYmVyLCBlbmRQb3M6IG51bWJlcik6IFNvdXJjZVNwYW4ge1xuICAgIGxldCBzdGFydCA9IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBzdGFydFBvcyk7XG4gICAgbGV0IGVuZCA9IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBlbmRQb3MpO1xuXG4gICAgcmV0dXJuIG5ldyBDaGFyUG9zaXRpb25TcGFuKHNvdXJjZSwgeyBzdGFydCwgZW5kIH0pLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBzeW50aGV0aWMoY2hhcnM6IHN0cmluZyk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYywgTk9OX0VYSVNURU5UX0xPQ0FUSU9OLCBjaGFycykud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZUxvY2F0aW9uID0gQlJPS0VOX0xPQ0FUSU9OKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBwb3MpLndyYXAoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzSW52aXNpYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogU3BhbkRhdGEgJiBBbnlTcGFuKSB7XG4gICAgdGhpcy5pc0ludmlzaWJsZSA9XG4gICAgICBkYXRhLmtpbmQgIT09IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uICYmIGRhdGEua2luZCAhPT0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRTdGFydCgpLndyYXAoKTtcbiAgfVxuXG4gIGdldEVuZCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0RW5kKCkud3JhcCgpO1xuICB9XG5cbiAgZ2V0IGxvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgbGV0IHNwYW4gPSB0aGlzLmRhdGEudG9IYnNTcGFuKCk7XG4gICAgcmV0dXJuIHNwYW4gPT09IG51bGwgPyBCUk9LRU5fTE9DQVRJT04gOiBzcGFuLnRvSGJzTG9jKCk7XG4gIH1cblxuICBnZXQgbW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRNb2R1bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXJ0aW5nIGBTb3VyY2VQb3NpdGlvbmAgZm9yIHRoaXMgYFNvdXJjZVNwYW5gLCBsYXppbHkgY29tcHV0aW5nIGl0IGlmIG5lZWRlZC5cbiAgICovXG4gIGdldCBzdGFydFBvc2l0aW9uKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2Muc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbmRpbmcgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhpcyBgU291cmNlU3BhbmAsIGxhemlseSBjb21wdXRpbmcgaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IGVuZFBvc2l0aW9uKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2MuZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1cHBvcnQgY29udmVydGluZyBBU1R2MSBub2RlcyBpbnRvIGEgc2VyaWFsaXplZCBmb3JtYXQgdXNpbmcgSlNPTi5zdHJpbmdpZnkuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3BhbiB3aXRoIHRoZSBjdXJyZW50IHNwYW4ncyBlbmQgYW5kIGEgbmV3IGJlZ2lubmluZy5cbiAgICovXG4gIHdpdGhTdGFydChvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4ob3RoZXIuZGF0YSwgdGhpcy5kYXRhLmdldEVuZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3BhbiB3aXRoIHRoZSBjdXJyZW50IHNwYW4ncyBiZWdpbm5pbmcgYW5kIGEgbmV3IGVuZGluZy5cbiAgICovXG4gIHdpdGhFbmQodGhpczogU291cmNlU3Bhbiwgb3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YS5nZXRTdGFydCgpLCBvdGhlci5kYXRhKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hc1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBgU291cmNlU3BhbmAgaW50byBhIGBTb3VyY2VTbGljZWAuIEluIGRlYnVnIG1vZGUsIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgY2hlY2tzXG4gICAqIHRoYXQgdGhlIGJ5dGUgb2Zmc2V0cyByZXByZXNlbnRlZCBieSB0aGlzIGBTb3VyY2VTcGFuYCBhY3R1YWxseSBjb3JyZXNwb25kIHRvIHRoZSBleHBlY3RlZFxuICAgKiBzdHJpbmcuXG4gICAqL1xuICB0b1NsaWNlKGV4cGVjdGVkPzogc3RyaW5nKTogU291cmNlU2xpY2Uge1xuICAgIGxldCBjaGFycyA9IHRoaXMuZGF0YS5hc1N0cmluZygpO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiBjaGFycyAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGB1bmV4cGVjdGVkbHkgZm91bmQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGNoYXJzXG4gICAgICAgICAgKX0gd2hlbiBzbGljaW5nIHNvdXJjZSwgYnV0IGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNvdXJjZVNsaWNlKHtcbiAgICAgIGxvYzogdGhpcyxcbiAgICAgIGNoYXJzOiBleHBlY3RlZCB8fCBjaGFycyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzdGFydFBvc2l0aW9uIGluc3RlYWRcbiAgICovXG4gIGdldCBzdGFydCgpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLnN0YXJ0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHdpdGhTdGFydCBpbnN0ZWFkXG4gICAqL1xuICBzZXQgc3RhcnQocG9zaXRpb246IFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgdGhpcy5kYXRhLmxvY0RpZFVwZGF0ZSh7IHN0YXJ0OiBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBlbmRQb3NpdGlvbiBpbnN0ZWFkXG4gICAqL1xuICBnZXQgZW5kKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2MuZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHdpdGhFbmQgaW5zdGVhZFxuICAgKi9cbiAgc2V0IGVuZChwb3NpdGlvbjogU291cmNlUG9zaXRpb24pIHtcbiAgICB0aGlzLmRhdGEubG9jRGlkVXBkYXRlKHsgZW5kOiBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtb2R1bGUgaW5zdGVhZFxuICAgKi9cbiAgZ2V0IHNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZTtcbiAgfVxuXG4gIGNvbGxhcHNlKHdoZXJlOiAnc3RhcnQnIHwgJ2VuZCcpOiBTb3VyY2VTcGFuIHtcbiAgICBzd2l0Y2ggKHdoZXJlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YXJ0KCkuY29sbGFwc2VkKCk7XG4gICAgICBjYXNlICdlbmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmQoKS5jb2xsYXBzZWQoKTtcbiAgICB9XG4gIH1cblxuICBleHRlbmQob3RoZXI6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEuZ2V0U3RhcnQoKSwgb3RoZXIuZGF0YS5nZXRFbmQoKSk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEuc2VyaWFsaXplKCk7XG4gIH1cblxuICBzbGljZSh7IHNraXBTdGFydCA9IDAsIHNraXBFbmQgPSAwIH06IHsgc2tpcFN0YXJ0PzogbnVtYmVyOyBza2lwRW5kPzogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQpLmRhdGEsIHRoaXMuZ2V0RW5kKCkubW92ZSgtc2tpcEVuZCkuZGF0YSk7XG4gIH1cblxuICBzbGljZVN0YXJ0Q2hhcnMoeyBza2lwU3RhcnQgPSAwLCBjaGFycyB9OiB7IHNraXBTdGFydD86IG51bWJlcjsgY2hhcnM6IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0KS5kYXRhLCB0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQgKyBjaGFycykuZGF0YSk7XG4gIH1cblxuICBzbGljZUVuZENoYXJzKHsgc2tpcEVuZCA9IDAsIGNoYXJzIH06IHsgc2tpcEVuZD86IG51bWJlcjsgY2hhcnM6IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRFbmQoKS5tb3ZlKHNraXBFbmQgLSBjaGFycykuZGF0YSwgdGhpcy5nZXRTdGFydCgpLm1vdmUoLXNraXBFbmQpLmRhdGEpO1xuICB9XG59XG5cbnR5cGUgQW55U3BhbiA9IEhic1NwYW4gfCBDaGFyUG9zaXRpb25TcGFuIHwgSW52aXNpYmxlU3BhbjtcblxuY2xhc3MgQ2hhclBvc2l0aW9uU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gIF9sb2NQb3NTcGFuOiBIYnNTcGFuIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgY2hhclBvc2l0aW9uczogeyBzdGFydDogQ2hhclBvc2l0aW9uOyBlbmQ6IENoYXJQb3NpdGlvbiB9XG4gICkge31cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnNsaWNlKHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydC5jaGFyUG9zLCB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLmNoYXJQb3MpO1xuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZTtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0O1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLmVuZDtcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSgpIHtcbiAgICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGB1cGRhdGluZyBhIGxvY2F0aW9uIHRoYXQgY2FtZSBmcm9tIGEgQ2hhclBvc2l0aW9uIHNwYW4gZG9lc24ndCB3b3JrIHJlbGlhYmx5LiBEb24ndCB0cnkgdG8gdXBkYXRlIGxvY2F0aW9ucyBhZnRlciB0aGUgcGx1Z2luIHBoYXNlYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB0b0hic1NwYW4oKTogSGJzU3BhbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3NTcGFuID0gdGhpcy5fbG9jUG9zU3BhbjtcblxuICAgIGlmIChsb2NQb3NTcGFuID09PSBudWxsKSB7XG4gICAgICBsZXQgc3RhcnQgPSB0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQudG9IYnNQb3MoKTtcbiAgICAgIGxldCBlbmQgPSB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLnRvSGJzUG9zKCk7XG5cbiAgICAgIGlmIChzdGFydCA9PT0gbnVsbCB8fCBlbmQgPT09IG51bGwpIHtcbiAgICAgICAgbG9jUG9zU3BhbiA9IHRoaXMuX2xvY1Bvc1NwYW4gPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NQb3NTcGFuID0gdGhpcy5fbG9jUG9zU3BhbiA9IG5ldyBIYnNTcGFuKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG9jUG9zU3BhbiA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1Bvc1NwYW47XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW4ge1xuICAgIGxldCB7XG4gICAgICBzdGFydDogeyBjaGFyUG9zOiBzdGFydCB9LFxuICAgICAgZW5kOiB7IGNoYXJQb3M6IGVuZCB9LFxuICAgIH0gPSB0aGlzLmNoYXJQb3NpdGlvbnM7XG5cbiAgICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgICAgcmV0dXJuIHN0YXJ0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogQ2hhclBvc2l0aW9uU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhic1NwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuXG4gIF9jaGFyUG9zU3BhbjogQ2hhclBvc2l0aW9uU3BhbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIC8vIHRoZSBzb3VyY2UgbG9jYXRpb24gZnJvbSBIYW5kbGViYXJzICsgQVNUIFBsdWdpbnMgLS0gY291bGQgYmUgd3JvbmdcbiAgX3Byb3ZpZGVkSGJzTG9jOiBTb3VyY2VMb2NhdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgaGJzUG9zaXRpb25zOiB7IHN0YXJ0OiBIYnNQb3NpdGlvbjsgZW5kOiBIYnNQb3NpdGlvbiB9LFxuICAgIHByb3ZpZGVkSGJzTG9jOiBTb3VyY2VMb2NhdGlvbiB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuX3Byb3ZpZGVkSGJzTG9jID0gcHJvdmlkZWRIYnNMb2M7XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLnRvQ2hhclBvc1NwYW4oKTtcbiAgICByZXR1cm4gY2hhclBvcyA9PT0gbnVsbCA/IE9mZnNldEtpbmQuQnJva2VuIDogY2hhclBvcy53cmFwKCkuc2VyaWFsaXplKCk7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJvdmlkZWQocG9zOiBTb3VyY2VQb3NpdGlvbiwgZWRnZTogJ3N0YXJ0JyB8ICdlbmQnKSB7XG4gICAgaWYgKHRoaXMuX3Byb3ZpZGVkSGJzTG9jKSB7XG4gICAgICB0aGlzLl9wcm92aWRlZEhic0xvY1tlZGdlXSA9IHBvcztcbiAgICB9XG5cbiAgICAvLyBpbnZhbGlkYXRlIGNvbXB1dGVkIGNoYXJhY3RlciBvZmZzZXRzXG4gICAgdGhpcy5fY2hhclBvc1NwYW4gPSBudWxsO1xuICAgIHRoaXMuX3Byb3ZpZGVkSGJzTG9jID0ge1xuICAgICAgc3RhcnQ6IHBvcyxcbiAgICAgIGVuZDogcG9zLFxuICAgIH07XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoeyBzdGFydCwgZW5kIH06IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSk6IHZvaWQge1xuICAgIGlmIChzdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3ZpZGVkKHN0YXJ0LCAnc3RhcnQnKTtcbiAgICAgIHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0ID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBzdGFydCwgbnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3ZpZGVkKGVuZCwgJ2VuZCcpO1xuICAgICAgdGhpcy5oYnNQb3NpdGlvbnMuZW5kID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBlbmQsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHNwYW4gPSB0aGlzLnRvQ2hhclBvc1NwYW4oKTtcbiAgICByZXR1cm4gc3BhbiA9PT0gbnVsbCA/ICcnIDogc3Bhbi5hc1N0cmluZygpO1xuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZTtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQ7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5lbmQ7XG4gIH1cblxuICB0b0hic0xvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydC5oYnNQb3MsXG4gICAgICBlbmQ6IHRoaXMuaGJzUG9zaXRpb25zLmVuZC5oYnNQb3MsXG4gICAgfTtcbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogQ2hhclBvc2l0aW9uU3BhbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zU3BhbiA9IHRoaXMuX2NoYXJQb3NTcGFuO1xuXG4gICAgaWYgKGNoYXJQb3NTcGFuID09PSBudWxsKSB7XG4gICAgICBsZXQgc3RhcnQgPSB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydC50b0NoYXJQb3MoKTtcbiAgICAgIGxldCBlbmQgPSB0aGlzLmhic1Bvc2l0aW9ucy5lbmQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgY2hhclBvc1NwYW4gPSB0aGlzLl9jaGFyUG9zU3BhbiA9IG5ldyBDaGFyUG9zaXRpb25TcGFuKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJQb3NTcGFuID0gdGhpcy5fY2hhclBvc1NwYW4gPSBCUk9LRU47XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFyUG9zU3BhbiA9PT0gQlJPS0VOID8gbnVsbCA6IGNoYXJQb3NTcGFuO1xuICB9XG59XG5cbmNsYXNzIEludmlzaWJsZVNwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQuQnJva2VuIHwgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWMgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LFxuICAgIC8vIHdoYXRldmVyIHdhcyBwcm92aWRlZCwgcG9zc2libHkgYnJva2VuXG4gICAgcmVhZG9ubHkgbG9jOiBTb3VyY2VMb2NhdGlvbixcbiAgICAvLyBpZiB0aGUgc3BhbiByZXByZXNlbnRzIGEgc3ludGhldGljIHN0cmluZ1xuICAgIHJlYWRvbmx5IHN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgKSB7fVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSBPZmZzZXRLaW5kLkJyb2tlbjpcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5Ob25FeGlzdGVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMua2luZDtcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWM6XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZyB8fCAnJztcbiAgICB9XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nIHx8ICcnO1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKHsgc3RhcnQsIGVuZCB9OiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pIHtcbiAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2Muc3RhcnQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9jLmVuZCA9IGVuZDtcbiAgICB9XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVmbGVjdCB0aGUgYWN0dWFsIG1vZHVsZSB0aGlzIHNwYW4gb3JpZ2luYXRlZCBmcm9tXG4gICAgcmV0dXJuICdhbiB1bmtub3duIG1vZHVsZSc7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbih0aGlzLmtpbmQsIHRoaXMubG9jLnN0YXJ0KTtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbih0aGlzLmtpbmQsIHRoaXMubG9jLmVuZCk7XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IEludmlzaWJsZVNwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9IYnNTcGFuKCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdG9IYnNMb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiBCUk9LRU5fTE9DQVRJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNwYW46IE1hdGNoRm48U291cmNlU3Bhbj4gPSBtYXRjaCgobSkgPT5cbiAgbVxuICAgIC53aGVuKE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT5cbiAgICAgIG5ldyBIYnNTcGFuKGxlZnQuc291cmNlLCB7XG4gICAgICAgIHN0YXJ0OiBsZWZ0LFxuICAgICAgICBlbmQ6IHJpZ2h0LFxuICAgICAgfSkud3JhcCgpXG4gICAgKVxuICAgIC53aGVuKE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgbmV3IENoYXJQb3NpdGlvblNwYW4obGVmdC5zb3VyY2UsIHtcbiAgICAgICAgc3RhcnQ6IGxlZnQsXG4gICAgICAgIGVuZDogcmlnaHQsXG4gICAgICB9KS53cmFwKClcbiAgICApXG4gICAgLndoZW4oT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgbGV0IHJpZ2h0Q2hhclBvcyA9IHJpZ2h0LnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAocmlnaHRDaGFyUG9zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BhbihsZWZ0LCByaWdodENoYXJQb3MpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLndoZW4oT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgbGV0IGxlZnRDaGFyUG9zID0gbGVmdC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKGxlZnRDaGFyUG9zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BhbihsZWZ0Q2hhclBvcywgcmlnaHQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLndoZW4oSXNJbnZpc2libGUsIE1hdGNoQW55LCAobGVmdCkgPT4gbmV3IEludmlzaWJsZVNwYW4obGVmdC5raW5kLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKSlcbiAgICAud2hlbihNYXRjaEFueSwgSXNJbnZpc2libGUsIChfLCByaWdodCkgPT5cbiAgICAgIG5ldyBJbnZpc2libGVTcGFuKHJpZ2h0LmtpbmQsIEJST0tFTl9MT0NBVElPTikud3JhcCgpXG4gICAgKVxuKTtcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiA9XG4gIHwgLyoqIGNvbGxhcHNlZCAqLyBudW1iZXJcbiAgfCAvKiogbm9ybWFsICovIFtzdGFydDogbnVtYmVyLCBzaXplOiBudW1iZXJdXG4gIHwgLyoqIHN5bnRoZXRpYyAqLyBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRTb3VyY2VTcGFuID1cbiAgfCBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuXG4gIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudFxuICB8IE9mZnNldEtpbmQuQnJva2VuO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -11,23 +11,4 @@ "use strict";

var _span2 = require("./span");
var _span = require("./span");
var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _span;
var SpanList = /*#__PURE__*/function () {

@@ -39,5 +20,3 @@ function SpanList(span) {

_span.set(this, void 0);
__classPrivateFieldSet(this, _span, span);
this._span = span;
}

@@ -47,3 +26,3 @@

if (fallback === void 0) {
fallback = _span2.SourceSpan.NON_EXISTENT;
fallback = _span.SourceSpan.NON_EXISTENT;
}

@@ -57,13 +36,11 @@

_proto.add = function add(offset) {
__classPrivateFieldGet(this, _span).push(offset);
this._span.push(offset);
};
_proto.getRangeOffset = function getRangeOffset(fallback) {
if (__classPrivateFieldGet(this, _span).length === 0) {
if (this._span.length === 0) {
return fallback;
} else {
var first = __classPrivateFieldGet(this, _span)[0];
var last = __classPrivateFieldGet(this, _span)[__classPrivateFieldGet(this, _span).length - 1];
var first = this._span[0];
var last = this._span[this._span.length - 1];
return first.extend(last);

@@ -77,3 +54,2 @@ }

exports.SpanList = SpanList;
_span = new WeakMap();

@@ -85,3 +61,3 @@ function loc(span) {

return loc(first).extend(loc(last));
} else if (span instanceof _span2.SourceSpan) {
} else if (span instanceof _span.SourceSpan) {
return span;

@@ -108,2 +84,2 @@ } else {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQU0sUUFBTixHQUFBLGFBQUEsWUFBQTtBQVNFLFdBQUEsUUFBQSxDQUFBLElBQUEsRUFBbUM7QUFBQSxRQUF2QixJQUF1QixLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQXZCLE1BQUEsSUFBdUIsR0FBbkMsRUFBWTtBQUF1Qjs7QUFGbkMsSUFBQSxLQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUE7O0FBR0UsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsSUFBQSxDQUFBO0FBQ0Q7O0FBWEgsRUFBQSxRQUFBLENBQUEsS0FBQSxHQUdFLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxRQUFBLEVBQWtGO0FBQUEsUUFBOUMsUUFBOEMsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUE5QyxNQUFBLFFBQThDLEdBQXZCLGtCQUEzRCxZQUFvQztBQUE4Qzs7QUFDaEYsV0FBTyxJQUFBLFFBQUEsQ0FBYSxJQUFJLENBQUosR0FBQSxDQUFiLEdBQWEsQ0FBYixFQUFBLGNBQUEsQ0FBUCxRQUFPLENBQVA7QUFKSixHQUFBOztBQUFBLE1BQUEsTUFBQSxHQUFBLFFBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEdBQUEsR0FhRSxTQUFBLEdBQUEsQ0FBQSxNQUFBLEVBQXNCO0FBQ3BCLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLE1BQUE7QUFkSixHQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLGNBQUEsR0FpQkUsU0FBQSxjQUFBLENBQUEsUUFBQSxFQUFtQztBQUNqQyxRQUFJLHNCQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBLE1BQUEsS0FBSixDQUFBLEVBQTZCO0FBQzNCLGFBQUEsUUFBQTtBQURGLEtBQUEsTUFFTztBQUNMLFVBQUksS0FBSyxHQUFHLHNCQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFaLENBQVksQ0FBWjs7QUFDQSxVQUFJLElBQUksR0FBRyxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBVyxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLEdBQXRCLENBQVcsQ0FBWDs7QUFFQSxhQUFPLEtBQUssQ0FBTCxNQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7QUF6QkwsR0FBQTs7QUFBQSxTQUFBLFFBQUE7QUFBQSxDQUFBLEVBQUE7Ozs7O0FBK0JNLFNBQUEsR0FBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxLQUFLLENBQUwsT0FBQSxDQUFKLElBQUksQ0FBSixFQUF5QjtBQUN2QixRQUFJLEtBQUssR0FBRyxJQUFJLENBQWhCLENBQWdCLENBQWhCO0FBQ0EsUUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBSixNQUFBLEdBQWhCLENBQWUsQ0FBZjtBQUVBLFdBQU8sR0FBRyxDQUFILEtBQUcsQ0FBSCxDQUFBLE1BQUEsQ0FBa0IsR0FBRyxDQUE1QixJQUE0QixDQUFyQixDQUFQO0FBSkYsR0FBQSxNQUtPLElBQUksSUFBSSxZQUFSLGlCQUFBLEVBQWdDO0FBQ3JDLFdBQUEsSUFBQTtBQURLLEdBQUEsTUFFQTtBQUNMLFdBQU8sSUFBSSxDQUFYLEdBQUE7QUFDRDtBQUNGOztBQUlLLFNBQUEsT0FBQSxDQUFBLElBQUEsRUFBMEM7QUFDOUMsTUFBSSxLQUFLLENBQUwsT0FBQSxDQUFBLElBQUEsS0FBdUIsSUFBSSxDQUFKLE1BQUEsS0FBM0IsQ0FBQSxFQUE4QztBQUM1QyxXQUFBLEtBQUE7QUFDRDs7QUFFRCxTQUFBLElBQUE7QUFDRDs7QUFFSyxTQUFBLFFBQUEsQ0FBQSxRQUFBLEVBQUEsUUFBQSxFQUFxRTtBQUN6RSxNQUFJLE9BQU8sQ0FBWCxRQUFXLENBQVgsRUFBdUI7QUFDckIsV0FBTyxHQUFHLENBQVYsUUFBVSxDQUFWO0FBREYsR0FBQSxNQUVPO0FBQ0wsV0FBQSxRQUFBO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB0eXBlIHsgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuLCBMb2NhdGVkV2l0aFNwYW4gfSBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4vc3Bhbic7XG5cbmV4cG9ydCB0eXBlIEhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhTcGFuIHwgUHJlc2VudEFycmF5PExvY2F0ZWRXaXRoU3Bhbj47XG5leHBvcnQgdHlwZSBNYXliZUhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbltdIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgVG9Tb3VyY2VPZmZzZXQgPSBudW1iZXIgfCBTb3VyY2VPZmZzZXQ7XG5cbmV4cG9ydCBjbGFzcyBTcGFuTGlzdCB7XG4gIHN0YXRpYyByYW5nZShzcGFuOiBQcmVzZW50QXJyYXk8SGFzU291cmNlU3Bhbj4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuID0gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNwYW5MaXN0KHNwYW4ubWFwKGxvYykpLmdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrKTtcbiAgfVxuXG4gICNzcGFuOiBTb3VyY2VTcGFuW107XG5cbiAgY29uc3RydWN0b3Ioc3BhbjogU291cmNlU3BhbltdID0gW10pIHtcbiAgICB0aGlzLiNzcGFuID0gc3BhbjtcbiAgfVxuXG4gIGFkZChvZmZzZXQ6IFNvdXJjZVNwYW4pOiB2b2lkIHtcbiAgICB0aGlzLiNzcGFuLnB1c2gob2Zmc2V0KTtcbiAgfVxuXG4gIGdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHRoaXMuI3NwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdCA9IHRoaXMuI3NwYW5bMF07XG4gICAgICBsZXQgbGFzdCA9IHRoaXMuI3NwYW5bdGhpcy4jc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgICAgcmV0dXJuIGZpcnN0LmV4dGVuZChsYXN0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgW0hhc1NvdXJjZVNwYW4sIC4uLkhhc1NvdXJjZVNwYW5bXV07XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2Moc3BhbjogSGFzU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSkge1xuICAgIGxldCBmaXJzdCA9IHNwYW5bMF07XG4gICAgbGV0IGxhc3QgPSBzcGFuW3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gbG9jKGZpcnN0KS5leHRlbmQobG9jKGxhc3QpKTtcbiAgfSBlbHNlIGlmIChzcGFuIGluc3RhbmNlb2YgU291cmNlU3Bhbikge1xuICAgIHJldHVybiBzcGFuO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGFuLmxvYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXliZUhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IE1heWJlSGFzU291cmNlU3BhbltdO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3BhbihzcGFuOiBNYXliZUhhc1NvdXJjZVNwYW4pOiBzcGFuIGlzIEhhc1NvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSAmJiBzcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVMb2MobG9jYXRpb246IE1heWJlSGFzU291cmNlU3BhbiwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKGhhc1NwYW4obG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvYyhsb2NhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7O0FBT0EsSUFBTSxRQUFOLEdBQUEsYUFBQSxZQUFBO0FBU0UsV0FBQSxRQUFBLENBQUEsSUFBQSxFQUFtQztBQUFBLFFBQXZCLElBQXVCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdkIsTUFBQSxJQUF1QixHQUFuQyxFQUFZO0FBQXVCOztBQUNqQyxTQUFBLEtBQUEsR0FBQSxJQUFBO0FBQ0Q7O0FBWEgsRUFBQSxRQUFBLENBQUEsS0FBQSxHQUdFLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxRQUFBLEVBQWtGO0FBQUEsUUFBOUMsUUFBOEMsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUE5QyxNQUFBLFFBQThDLEdBQXZCLGlCQUEzRCxZQUFvQztBQUE4Qzs7QUFDaEYsV0FBTyxJQUFBLFFBQUEsQ0FBYSxJQUFJLENBQUosR0FBQSxDQUFiLEdBQWEsQ0FBYixFQUFBLGNBQUEsQ0FBUCxRQUFPLENBQVA7QUFKSixHQUFBOztBQUFBLE1BQUEsTUFBQSxHQUFBLFFBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEdBQUEsR0FhRSxTQUFBLEdBQUEsQ0FBQSxNQUFBLEVBQXNCO0FBQ3BCLFNBQUEsS0FBQSxDQUFBLElBQUEsQ0FBQSxNQUFBO0FBZEosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxjQUFBLEdBaUJFLFNBQUEsY0FBQSxDQUFBLFFBQUEsRUFBbUM7QUFDakMsUUFBSSxLQUFBLEtBQUEsQ0FBQSxNQUFBLEtBQUosQ0FBQSxFQUE2QjtBQUMzQixhQUFBLFFBQUE7QUFERixLQUFBLE1BRU87QUFDTCxVQUFJLEtBQUssR0FBRyxLQUFBLEtBQUEsQ0FBWixDQUFZLENBQVo7QUFDQSxVQUFJLElBQUksR0FBRyxLQUFBLEtBQUEsQ0FBVyxLQUFBLEtBQUEsQ0FBQSxNQUFBLEdBQXRCLENBQVcsQ0FBWDtBQUVBLGFBQU8sS0FBSyxDQUFMLE1BQUEsQ0FBUCxJQUFPLENBQVA7QUFDRDtBQXpCTCxHQUFBOztBQUFBLFNBQUEsUUFBQTtBQUFBLENBQUEsRUFBQTs7OztBQStCTSxTQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQWlDO0FBQ3JDLE1BQUksS0FBSyxDQUFMLE9BQUEsQ0FBSixJQUFJLENBQUosRUFBeUI7QUFDdkIsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFoQixDQUFnQixDQUFoQjtBQUNBLFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUosTUFBQSxHQUFoQixDQUFlLENBQWY7QUFFQSxXQUFPLEdBQUcsQ0FBSCxLQUFHLENBQUgsQ0FBQSxNQUFBLENBQWtCLEdBQUcsQ0FBNUIsSUFBNEIsQ0FBckIsQ0FBUDtBQUpGLEdBQUEsTUFLTyxJQUFJLElBQUksWUFBUixnQkFBQSxFQUFnQztBQUNyQyxXQUFBLElBQUE7QUFESyxHQUFBLE1BRUE7QUFDTCxXQUFPLElBQUksQ0FBWCxHQUFBO0FBQ0Q7QUFDRjs7QUFJSyxTQUFBLE9BQUEsQ0FBQSxJQUFBLEVBQTBDO0FBQzlDLE1BQUksS0FBSyxDQUFMLE9BQUEsQ0FBQSxJQUFBLEtBQXVCLElBQUksQ0FBSixNQUFBLEtBQTNCLENBQUEsRUFBOEM7QUFDNUMsV0FBQSxLQUFBO0FBQ0Q7O0FBRUQsU0FBQSxJQUFBO0FBQ0Q7O0FBRUssU0FBQSxRQUFBLENBQUEsUUFBQSxFQUFBLFFBQUEsRUFBcUU7QUFDekUsTUFBSSxPQUFPLENBQVgsUUFBVyxDQUFYLEVBQXVCO0FBQ3JCLFdBQU8sR0FBRyxDQUFWLFFBQVUsQ0FBVjtBQURGLEdBQUEsTUFFTztBQUNMLFdBQUEsUUFBQTtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgdHlwZSB7IFByZXNlbnRBcnJheSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbiwgTG9jYXRlZFdpdGhTcGFuIH0gZnJvbSAnLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgdHlwZSBIYXNTcGFuID0gU291cmNlU3BhbiB8IExvY2F0ZWRXaXRoU3BhbiB8IFByZXNlbnRBcnJheTxMb2NhdGVkV2l0aFNwYW4+O1xuZXhwb3J0IHR5cGUgTWF5YmVIYXNTcGFuID0gU291cmNlU3BhbiB8IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW5bXSB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFRvU291cmNlT2Zmc2V0ID0gbnVtYmVyIHwgU291cmNlT2Zmc2V0O1xuXG5leHBvcnQgY2xhc3MgU3Bhbkxpc3Qge1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogUHJlc2VudEFycmF5PEhhc1NvdXJjZVNwYW4+KTogU291cmNlU3BhbjtcbiAgc3RhdGljIHJhbmdlKHNwYW46IEhhc1NvdXJjZVNwYW5bXSwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3BhbiA9IFNvdXJjZVNwYW4uTk9OX0VYSVNURU5UKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTcGFuTGlzdChzcGFuLm1hcChsb2MpKS5nZXRSYW5nZU9mZnNldChmYWxsYmFjayk7XG4gIH1cblxuICBfc3BhbjogU291cmNlU3BhbltdO1xuXG4gIGNvbnN0cnVjdG9yKHNwYW46IFNvdXJjZVNwYW5bXSA9IFtdKSB7XG4gICAgdGhpcy5fc3BhbiA9IHNwYW47XG4gIH1cblxuICBhZGQob2Zmc2V0OiBTb3VyY2VTcGFuKTogdm9pZCB7XG4gICAgdGhpcy5fc3Bhbi5wdXNoKG9mZnNldCk7XG4gIH1cblxuICBnZXRSYW5nZU9mZnNldChmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIGlmICh0aGlzLl9zcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZmlyc3QgPSB0aGlzLl9zcGFuWzBdO1xuICAgICAgbGV0IGxhc3QgPSB0aGlzLl9zcGFuW3RoaXMuX3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICAgIHJldHVybiBmaXJzdC5leHRlbmQobGFzdCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IFtIYXNTb3VyY2VTcGFuLCAuLi5IYXNTb3VyY2VTcGFuW11dO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jKHNwYW46IEhhc1NvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BhbikpIHtcbiAgICBsZXQgZmlyc3QgPSBzcGFuWzBdO1xuICAgIGxldCBsYXN0ID0gc3BhbltzcGFuLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGxvYyhmaXJzdCkuZXh0ZW5kKGxvYyhsYXN0KSk7XG4gIH0gZWxzZSBpZiAoc3BhbiBpbnN0YW5jZW9mIFNvdXJjZVNwYW4pIHtcbiAgICByZXR1cm4gc3BhbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3Bhbi5sb2M7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWF5YmVIYXNTb3VyY2VTcGFuID0geyBsb2M6IFNvdXJjZVNwYW4gfSB8IFNvdXJjZVNwYW4gfCBNYXliZUhhc1NvdXJjZVNwYW5bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1NwYW4oc3BhbjogTWF5YmVIYXNTb3VyY2VTcGFuKTogc3BhbiBpcyBIYXNTb3VyY2VTcGFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BhbikgJiYgc3Bhbi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heWJlTG9jKGxvY2F0aW9uOiBNYXliZUhhc1NvdXJjZVNwYW4sIGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gIGlmIChoYXNTcGFuKGxvY2F0aW9uKSkge1xuICAgIHJldHVybiBsb2MobG9jYXRpb24pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -28,10 +28,2 @@ "use strict";

function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _inheritsLoose(subClass, superClass) {

@@ -43,21 +35,2 @@ subClass.prototype = Object.create(superClass.prototype);

var __classPrivateFieldSet = void 0 && (void 0).__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = void 0 && (void 0).__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _hasEval;
var SymbolTable = /*#__PURE__*/function () {

@@ -101,5 +74,3 @@ function SymbolTable() {}

_this2.usedTemplateLocals = [];
_hasEval.set(_assertThisInitialized(_this2), false);
_this2._hasEval = false;
return _this2;

@@ -115,3 +86,3 @@ }

_proto2.setHasEval = function setHasEval() {
__classPrivateFieldSet(this, _hasEval, true);
this._hasEval = true;
};

@@ -198,3 +169,3 @@

get: function get() {
return __classPrivateFieldGet(this, _hasEval);
return this._hasEval;
}

@@ -207,3 +178,2 @@ }]);

exports.ProgramSymbolTable = ProgramSymbolTable;
_hasEval = new WeakMap();

@@ -282,2 +252,2 @@ var BlockSymbolTable = /*#__PURE__*/function (_SymbolTable2) {

exports.BlockSymbolTable = BlockSymbolTable;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTSxXQUFOLEdBQUEsYUFBQSxZQUFBO0FBQUEsV0FBQSxXQUFBLEdBQUEsQ0FBQTs7QUFBQSxFQUFBLFdBQUEsQ0FBQSxHQUFBLEdBQ0UsU0FBQSxHQUFBLENBQUEsTUFBQSxFQUFBLHNCQUFBLEVBRW1EO0FBRWpELFdBQU8sSUFBQSxrQkFBQSxDQUFBLE1BQUEsRUFBUCxzQkFBTyxDQUFQO0FBTEosR0FBQTs7QUFBQSxNQUFBLE1BQUEsR0FBQSxXQUFBLENBQUEsU0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxLQUFBLEdBcUJFLFNBQUEsS0FBQSxDQUFBLE1BQUEsRUFBc0I7QUFBQSxRQUFBLEtBQUEsR0FBQSxJQUFBOztBQUNwQixRQUFJLE9BQU8sR0FBRyxNQUFNLENBQU4sR0FBQSxDQUFZLFVBQUQsSUFBQyxFQUFEO0FBQUEsYUFBVSxLQUFBLENBQUEsUUFBQSxDQUFuQyxJQUFtQyxDQUFWO0FBQXpCLEtBQWMsQ0FBZDtBQUNBLFdBQU8sSUFBQSxnQkFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQVAsT0FBTyxDQUFQO0FBdkJKLEdBQUE7O0FBQUEsU0FBQSxXQUFBO0FBQUEsQ0FBQSxFQUFBOzs7O0FBMkJBLElBQU0sa0JBQU4sR0FBQSxhQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsRUFBQSxjQUFBLENBQUEsa0JBQUEsRUFBQSxZQUFBLENBQUE7O0FBQ0UsV0FBQSxrQkFBQSxDQUFBLGNBQUEsRUFBQSxzQkFBQSxFQUUyRDtBQUFBLFFBQUEsTUFBQTs7QUFFekQsSUFBQSxNQUFBLEdBQUEsWUFBQSxDQUFBLElBQUEsQ0FBQSxJQUFBLEtBQUEsSUFBQTtBQUhRLElBQUEs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QUE7QUFBQSxJQUFBLEdBQUEsRUFBQSxRQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsU0FBQSxHQUFBLEdBS1k7QUFDUixhQUFPLEtBQVAsT0FBQTtBQUNEO0FBUEgsR0FBQSxDQUFBLENBQUE7O0FBQUEsU0FBQSxnQkFBQTtBQUFBLENBQUEsQ0FBQSxXQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlLCBEaWN0LCBTZXhwT3Bjb2RlcyB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBBU1R2MiB9IGZyb20gJy4uJztcbmltcG9ydCB7IGlzVXBwZXJDYXNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTeW1ib2xUYWJsZSB7XG4gIHN0YXRpYyB0b3AoXG4gICAgbG9jYWxzOiBzdHJpbmdbXSxcbiAgICBjdXN0b21pemVDb21wb25lbnROYW1lOiAoaW5wdXQ6IHN0cmluZykgPT4gc3RyaW5nXG4gICk6IFByb2dyYW1TeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9ncmFtU3ltYm9sVGFibGUobG9jYWxzLCBjdXN0b21pemVDb21wb25lbnROYW1lKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXQobmFtZTogc3RyaW5nKTogW3N5bWJvbDogbnVtYmVyLCBpc1Jvb3Q6IGJvb2xlYW5dO1xuXG4gIGFic3RyYWN0IGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj47XG4gIGFic3RyYWN0IGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm87XG5cbiAgYWJzdHJhY3QgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IHNldEhhc0V2YWwoKTogdm9pZDtcblxuICBjaGlsZChsb2NhbHM6IHN0cmluZ1tdKTogQmxvY2tTeW1ib2xUYWJsZSB7XG4gICAgbGV0IHN5bWJvbHMgPSBsb2NhbHMubWFwKChuYW1lKSA9PiB0aGlzLmFsbG9jYXRlKG5hbWUpKTtcbiAgICByZXR1cm4gbmV3IEJsb2NrU3ltYm9sVGFibGUodGhpcywgbG9jYWxzLCBzeW1ib2xzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbVN5bWJvbFRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbXBsYXRlTG9jYWxzOiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU6IChpbnB1dDogc3RyaW5nKSA9PiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW1ib2xzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgdXB2YXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2l6ZSA9IDE7XG4gIHByaXZhdGUgbmFtZWQgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSBibG9ja3MgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSB1c2VkVGVtcGxhdGVMb2NhbHM6IHN0cmluZ1tdID0gW107XG5cbiAgI2hhc0V2YWwgPSBmYWxzZTtcblxuICBnZXRVc2VkVGVtcGxhdGVMb2NhbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnVzZWRUZW1wbGF0ZUxvY2FscztcbiAgfVxuXG4gIHNldEhhc0V2YWwoKTogdm9pZCB7XG4gICAgdGhpcy4jaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICBnZXQgaGFzRXZhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jaGFzRXZhbDtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZUxvY2Fscy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBbbnVtYmVyLCBib29sZWFuXSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBbaW5kZXgsIHRydWVdO1xuICAgIH1cblxuICAgIGluZGV4ID0gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMubGVuZ3RoO1xuICAgIHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIFtpbmRleCwgdHJ1ZV07XG4gIH1cblxuICBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+IHtcbiAgICByZXR1cm4gZGljdCgpO1xuICB9XG5cbiAgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbyB7XG4gICAgbGV0IGxvY2FscyA9IHRoaXMuZ2V0TG9jYWxzTWFwKCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxvY2FscykubWFwKChzeW1ib2wpID0+IGxvY2Fsc1tzeW1ib2xdKTtcbiAgfVxuXG4gIGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBJZiB0aGUgbmFtZSBpbiBxdWVzdGlvbiBpcyBhbiB1cHBlcmNhc2UgKGkuZS4gYW5nbGUtYnJhY2tldCkgY29tcG9uZW50IGludm9jYXRpb24sIHJ1blxuICAgIC8vIHRoZSBvcHRpb25hbCBgY3VzdG9taXplQ29tcG9uZW50TmFtZWAgZnVuY3Rpb24gcHJvdmlkZWQgdG8gdGhlIHByZWNvbXBpbGVyLlxuICAgIGlmIChcbiAgICAgIHJlc29sdXRpb24ucmVzb2x1dGlvbigpID09PSBTZXhwT3Bjb2Rlcy5HZXRGcmVlQXNDb21wb25lbnRIZWFkICYmXG4gICAgICByZXNvbHV0aW9uLmlzQW5nbGVCcmFja2V0ICYmXG4gICAgICBpc1VwcGVyQ2FzZShuYW1lKVxuICAgICkge1xuICAgICAgbmFtZSA9IHRoaXMuY3VzdG9taXplQ29tcG9uZW50TmFtZShuYW1lKTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSB0aGlzLnVwdmFycy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGluZGV4ID0gdGhpcy51cHZhcnMubGVuZ3RoO1xuICAgIHRoaXMudXB2YXJzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWRbbmFtZV07XG5cbiAgICBpZiAoIW5hbWVkKSB7XG4gICAgICBuYW1lZCA9IHRoaXMubmFtZWRbbmFtZV0gPSB0aGlzLmFsbG9jYXRlKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBuYW1lZDtcbiAgfVxuXG4gIGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAobmFtZSA9PT0gJ2ludmVyc2UnKSB7XG4gICAgICBuYW1lID0gJ2Vsc2UnO1xuICAgIH1cblxuICAgIGxldCBibG9jayA9IHRoaXMuYmxvY2tzW25hbWVdO1xuXG4gICAgaWYgKCFibG9jaykge1xuICAgICAgYmxvY2sgPSB0aGlzLmJsb2Nrc1tuYW1lXSA9IHRoaXMuYWxsb2NhdGUoYCYke25hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJsb2NrO1xuICB9XG5cbiAgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB0aGlzLnN5bWJvbHMucHVzaChpZGVudGlmaWVyKTtcbiAgICByZXR1cm4gdGhpcy5zaXplKys7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrU3ltYm9sVGFibGUgZXh0ZW5kcyBTeW1ib2xUYWJsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTeW1ib2xUYWJsZSwgcHVibGljIHN5bWJvbHM6IHN0cmluZ1tdLCBwdWJsaWMgc2xvdHM6IG51bWJlcltdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBsb2NhbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbHM7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9scy5pbmRleE9mKG5hbWUpICE9PSAtMSB8fCB0aGlzLnBhcmVudC5oYXMobmFtZSk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogW251bWJlciwgYm9vbGVhbl0ge1xuICAgIGxldCBzbG90ID0gdGhpcy5zeW1ib2xzLmluZGV4T2YobmFtZSk7XG4gICAgcmV0dXJuIHNsb3QgPT09IC0xID8gdGhpcy5wYXJlbnQuZ2V0KG5hbWUpIDogW3RoaXMuc2xvdHNbc2xvdF0sIGZhbHNlXTtcbiAgfVxuXG4gIGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj4ge1xuICAgIGxldCBkaWN0ID0gdGhpcy5wYXJlbnQuZ2V0TG9jYWxzTWFwKCk7XG4gICAgdGhpcy5zeW1ib2xzLmZvckVhY2goKHN5bWJvbCkgPT4gKGRpY3Rbc3ltYm9sXSA9IHRoaXMuZ2V0KHN5bWJvbClbMF0pKTtcbiAgICByZXR1cm4gZGljdDtcbiAgfVxuXG4gIGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm8ge1xuICAgIGxldCBsb2NhbHMgPSB0aGlzLmdldExvY2Fsc01hcCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2NhbHMpLm1hcCgoc3ltYm9sKSA9PiBsb2NhbHNbc3ltYm9sXSk7XG4gIH1cblxuICBzZXRIYXNFdmFsKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50LnNldEhhc0V2YWwoKTtcbiAgfVxuXG4gIGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVGcmVlKG5hbWUsIHJlc29sdXRpb24pO1xuICB9XG5cbiAgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZU5hbWVkKG5hbWUpO1xuICB9XG5cbiAgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZUJsb2NrKG5hbWUpO1xuICB9XG5cbiAgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGUoaWRlbnRpZmllcik7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTSxXQUFOLEdBQUEsYUFBQSxZQUFBO0FBQUEsV0FBQSxXQUFBLEdBQUEsQ0FBQTs7QUFBQSxFQUFBLFdBQUEsQ0FBQSxHQUFBLEdBQ0UsU0FBQSxHQUFBLENBQUEsTUFBQSxFQUFBLHNCQUFBLEVBRW1EO0FBRWpELFdBQU8sSUFBQSxrQkFBQSxDQUFBLE1BQUEsRUFBUCxzQkFBTyxDQUFQO0FBTEosR0FBQTs7QUFBQSxNQUFBLE1BQUEsR0FBQSxXQUFBLENBQUEsU0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxLQUFBLEdBcUJFLFNBQUEsS0FBQSxDQUFBLE1BQUEsRUFBc0I7QUFBQSxRQUFBLEtBQUEsR0FBQSxJQUFBOztBQUNwQixRQUFJLE9BQU8sR0FBRyxNQUFNLENBQU4sR0FBQSxDQUFZLFVBQUQsSUFBQyxFQUFEO0FBQUEsYUFBVSxLQUFBLENBQUEsUUFBQSxDQUFuQyxJQUFtQyxDQUFWO0FBQXpCLEtBQWMsQ0FBZDtBQUNBLFdBQU8sSUFBQSxnQkFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQVAsT0FBTyxDQUFQO0FBdkJKLEdBQUE7O0FBQUEsU0FBQSxXQUFBO0FBQUEsQ0FBQSxFQUFBOzs7O0FBMkJBLElBQU0sa0JBQU4sR0FBQSxhQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsRUFBQSxjQUFBLENBQUEsa0JBQUEsRUFBQSxZQUFBLENBQUE7O0FBQ0UsV0FBQSxrQkFBQSxDQUFBLGNBQUEsRUFBQSxzQkFBQSxFQUUyRDtBQUFBLFFBQUEsTUFBQTs7QUFFekQsSUFBQSxNQUFBLEdBQUEsWUFBQSxDQUFBLElBQUEsQ0FBQSxJQUFBLEtBQUEsSUFBQTtBQUhRLElBQUEsTUFBQSxDQUFBLGNBQUEsR0FBQSxjQUFBO0FB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Q0FBQTs7QUFBQSxTQUFBLGdCQUFBO0FBQUEsQ0FBQSxDQUFBLFdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmUsIERpY3QsIFNleHBPcGNvZGVzIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBkaWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEFTVHYyIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgaXNVcHBlckNhc2UgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN5bWJvbFRhYmxlIHtcbiAgc3RhdGljIHRvcChcbiAgICBsb2NhbHM6IHN0cmluZ1tdLFxuICAgIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU6IChpbnB1dDogc3RyaW5nKSA9PiBzdHJpbmdcbiAgKTogUHJvZ3JhbVN5bWJvbFRhYmxlIHtcbiAgICByZXR1cm4gbmV3IFByb2dyYW1TeW1ib2xUYWJsZShsb2NhbHMsIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWUpO1xuICB9XG5cbiAgYWJzdHJhY3QgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldChuYW1lOiBzdHJpbmcpOiBbc3ltYm9sOiBudW1iZXIsIGlzUm9vdDogYm9vbGVhbl07XG5cbiAgYWJzdHJhY3QgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPjtcbiAgYWJzdHJhY3QgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbztcblxuICBhYnN0cmFjdCBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZShpZGVudGlmaWVyOiBzdHJpbmcpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3Qgc2V0SGFzRXZhbCgpOiB2b2lkO1xuXG4gIGNoaWxkKGxvY2Fsczogc3RyaW5nW10pOiBCbG9ja1N5bWJvbFRhYmxlIHtcbiAgICBsZXQgc3ltYm9scyA9IGxvY2Fscy5tYXAoKG5hbWUpID0+IHRoaXMuYWxsb2NhdGUobmFtZSkpO1xuICAgIHJldHVybiBuZXcgQmxvY2tTeW1ib2xUYWJsZSh0aGlzLCBsb2NhbHMsIHN5bWJvbHMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtU3ltYm9sVGFibGUgZXh0ZW5kcyBTeW1ib2xUYWJsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVMb2NhbHM6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgY3VzdG9taXplQ29tcG9uZW50TmFtZTogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHN5bWJvbHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyB1cHZhcnM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBzaXplID0gMTtcbiAgcHJpdmF0ZSBuYW1lZCA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIGJsb2NrcyA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIHVzZWRUZW1wbGF0ZUxvY2Fsczogc3RyaW5nW10gPSBbXTtcblxuICBfaGFzRXZhbCA9IGZhbHNlO1xuXG4gIGdldFVzZWRUZW1wbGF0ZUxvY2FscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzO1xuICB9XG5cbiAgc2V0SGFzRXZhbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9oYXNFdmFsID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBoYXNFdmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNFdmFsO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlTG9jYWxzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IFtudW1iZXIsIGJvb2xlYW5dIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIFtpbmRleCwgdHJ1ZV07XG4gICAgfVxuXG4gICAgaW5kZXggPSB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5sZW5ndGg7XG4gICAgdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMucHVzaChuYW1lKTtcbiAgICByZXR1cm4gW2luZGV4LCB0cnVlXTtcbiAgfVxuXG4gIGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj4ge1xuICAgIHJldHVybiBkaWN0KCk7XG4gIH1cblxuICBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvIHtcbiAgICBsZXQgbG9jYWxzID0gdGhpcy5nZXRMb2NhbHNNYXAoKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9jYWxzKS5tYXAoKHN5bWJvbCkgPT4gbG9jYWxzW3N5bWJvbF0pO1xuICB9XG5cbiAgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXIge1xuICAgIC8vIElmIHRoZSBuYW1lIGluIHF1ZXN0aW9uIGlzIGFuIHVwcGVyY2FzZSAoaS5lLiBhbmdsZS1icmFja2V0KSBjb21wb25lbnQgaW52b2NhdGlvbiwgcnVuXG4gICAgLy8gdGhlIG9wdGlvbmFsIGBjdXN0b21pemVDb21wb25lbnROYW1lYCBmdW5jdGlvbiBwcm92aWRlZCB0byB0aGUgcHJlY29tcGlsZXIuXG4gICAgaWYgKFxuICAgICAgcmVzb2x1dGlvbi5yZXNvbHV0aW9uKCkgPT09IFNleHBPcGNvZGVzLkdldEZyZWVBc0NvbXBvbmVudEhlYWQgJiZcbiAgICAgIHJlc29sdXRpb24uaXNBbmdsZUJyYWNrZXQgJiZcbiAgICAgIGlzVXBwZXJDYXNlKG5hbWUpXG4gICAgKSB7XG4gICAgICBuYW1lID0gdGhpcy5jdXN0b21pemVDb21wb25lbnROYW1lKG5hbWUpO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9IHRoaXMudXB2YXJzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgaW5kZXggPSB0aGlzLnVwdmFycy5sZW5ndGg7XG4gICAgdGhpcy51cHZhcnMucHVzaChuYW1lKTtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZFtuYW1lXTtcblxuICAgIGlmICghbmFtZWQpIHtcbiAgICAgIG5hbWVkID0gdGhpcy5uYW1lZFtuYW1lXSA9IHRoaXMuYWxsb2NhdGUobmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVkO1xuICB9XG5cbiAgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmIChuYW1lID09PSAnaW52ZXJzZScpIHtcbiAgICAgIG5hbWUgPSAnZWxzZSc7XG4gICAgfVxuXG4gICAgbGV0IGJsb2NrID0gdGhpcy5ibG9ja3NbbmFtZV07XG5cbiAgICBpZiAoIWJsb2NrKSB7XG4gICAgICBibG9jayA9IHRoaXMuYmxvY2tzW25hbWVdID0gdGhpcy5hbGxvY2F0ZShgJiR7bmFtZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBhbGxvY2F0ZShpZGVudGlmaWVyOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHRoaXMuc3ltYm9scy5wdXNoKGlkZW50aWZpZXIpO1xuICAgIHJldHVybiB0aGlzLnNpemUrKztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tTeW1ib2xUYWJsZSBleHRlbmRzIFN5bWJvbFRhYmxlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFN5bWJvbFRhYmxlLCBwdWJsaWMgc3ltYm9sczogc3RyaW5nW10sIHB1YmxpYyBzbG90czogbnVtYmVyW10pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGxvY2FscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9scztcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xzLmluZGV4T2YobmFtZSkgIT09IC0xIHx8IHRoaXMucGFyZW50LmhhcyhuYW1lKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBbbnVtYmVyLCBib29sZWFuXSB7XG4gICAgbGV0IHNsb3QgPSB0aGlzLnN5bWJvbHMuaW5kZXhPZihuYW1lKTtcbiAgICByZXR1cm4gc2xvdCA9PT0gLTEgPyB0aGlzLnBhcmVudC5nZXQobmFtZSkgOiBbdGhpcy5zbG90c1tzbG90XSwgZmFsc2VdO1xuICB9XG5cbiAgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPiB7XG4gICAgbGV0IGRpY3QgPSB0aGlzLnBhcmVudC5nZXRMb2NhbHNNYXAoKTtcbiAgICB0aGlzLnN5bWJvbHMuZm9yRWFjaCgoc3ltYm9sKSA9PiAoZGljdFtzeW1ib2xdID0gdGhpcy5nZXQoc3ltYm9sKVswXSkpO1xuICAgIHJldHVybiBkaWN0O1xuICB9XG5cbiAgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbyB7XG4gICAgbGV0IGxvY2FscyA9IHRoaXMuZ2V0TG9jYWxzTWFwKCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxvY2FscykubWFwKChzeW1ib2wpID0+IGxvY2Fsc1tzeW1ib2xdKTtcbiAgfVxuXG4gIHNldEhhc0V2YWwoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnQuc2V0SGFzRXZhbCgpO1xuICB9XG5cbiAgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZUZyZWUobmFtZSwgcmVzb2x1dGlvbik7XG4gIH1cblxuICBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlTmFtZWQobmFtZSk7XG4gIH1cblxuICBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlQmxvY2sobmFtZSk7XG4gIH1cblxuICBhbGxvY2F0ZShpZGVudGlmaWVyOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZShpZGVudGlmaWVyKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

var _scope = _interopRequireDefault(require("./scope"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperties(target, props) {

@@ -31,4 +27,2 @@ for (var i = 0; i < props.length; i++) {

function WalkerPath(node, parent, parentKey) {
var _this = this;
if (parent === void 0) {

@@ -45,14 +39,2 @@ parent = null;

this.parentKey = parentKey;
this.scope = parent ? parent.scope.child(node) : new _scope.default(node); // Consume in scope values
if (node.type === 'PathExpression') {
this.scope.useLocal(node);
}
if (node.type === 'ElementNode') {
this.scope.useLocal(node);
node.children.forEach(function (node) {
return _this.scope.useLocal(node);
});
}
}

@@ -63,7 +45,7 @@

_proto.parents = function parents() {
var _this2 = this,
var _this = this,
_ref;
return _ref = {}, _ref[Symbol.iterator] = function () {
return new PathParentsIterator(_this2);
return new PathParentsIterator(_this);
}, _ref;

@@ -108,2 +90,2 @@ };

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVjLFU7QUFNWixXQUFBLFVBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxFQUFBLFNBQUEsRUFHaUM7QUFBQSxRQUFBLEtBQUEsR0FBQSxJQUFBOztBQUFBLFFBRC9CLE1BQytCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFEL0IsTUFBQSxNQUMrQixHQUhqQyxJQUVFO0FBQytCOztBQUFBLFFBQS9CLFNBQStCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBL0IsTUFBQSxTQUErQixHQUhqQyxJQUdFO0FBQStCOztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLEdBQUcsTUFBTSxDQUFOLEtBQUEsQ0FBQSxLQUFBLENBQUgsSUFBRyxDQUFILEdBQThCLElBQUEsY0FBQSxDQUxsQixJQUtrQixDQUFqRCxDQUwrQixDQU8vQjs7QUFDQSxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosZ0JBQUEsRUFBb0M7QUFDbEMsV0FBQSxLQUFBLENBQUEsUUFBQSxDQUFBLElBQUE7QUFDRDs7QUFFRCxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosYUFBQSxFQUFpQztBQUMvQixXQUFBLEtBQUEsQ0FBQSxRQUFBLENBQUEsSUFBQTtBQUVDLE1BQUEsSUFBMEIsQ0FBMUIsUUFBQSxDQUFBLE9BQUEsQ0FBNkMsVUFBRCxJQUFDLEVBQUQ7QUFBQSxlQUMzQyxLQUFBLENBQUEsS0FBQSxDQUFBLFFBQUEsQ0FERCxJQUNDLENBRDJDO0FBQTVDLE9BQUE7QUFHRjtBQUNGOzs7O1NBTUQsTyxHQUFBLFNBQUEsT0FBQSxHQUFPO0FBQUEsUUFBQSxNQUFBLEdBQUEsSUFBQTtBQUFBLFFBQUEsSUFBQTs7QUFDTCxXQUFBLElBQUEsR0FBQSxFQUFBLEVBQUEsSUFBQSxDQUNHLE1BQU0sQ0FEVCxRQUFBLENBQUEsR0FDcUIsWUFBSztBQUN0QixhQUFPLElBQUEsbUJBQUEsQ0FBUCxNQUFPLENBQVA7QUFGSixLQUFBLEVBQUEsSUFBQTs7Ozs7d0JBTFk7QUFDWixhQUFPLEtBQUEsTUFBQSxHQUFjLEtBQUEsTUFBQSxDQUFkLElBQUEsR0FBUCxJQUFBO0FBQ0Q7Ozs7Ozs7O0lBV0gsbUI7QUFHRSxXQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF3QztBQUN0QyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0Q7Ozs7VUFFRCxJLEdBQUEsU0FBQSxJQUFBLEdBQUk7QUFDRixRQUFJLEtBQUEsSUFBQSxDQUFKLE1BQUEsRUFBc0I7QUFDcEIsV0FBQSxJQUFBLEdBQVksS0FBQSxJQUFBLENBQVosTUFBQTtBQUNBLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixLQUFBO0FBQWUsUUFBQSxLQUFLLEVBQUUsS0FBSztBQUEzQixPQUFQO0FBRkYsS0FBQSxNQUdPO0FBQ0wsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFOLElBQUE7QUFBYyxRQUFBLEtBQUssRUFBRTtBQUFyQixPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0IFJvb3RUcmFuc2Zvcm1TY29wZSwgeyBUcmFuc2Zvcm1TY29wZSB9IGZyb20gJy4vc2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXJQYXRoPE4gZXh0ZW5kcyBBU1R2MS5Ob2RlPiB7XG4gIG5vZGU6IE47XG4gIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw7XG4gIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbDtcbiAgc2NvcGU6IFRyYW5zZm9ybVNjb3BlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGU6IE4sXG4gICAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbCA9IG51bGwsXG4gICAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMucGFyZW50S2V5ID0gcGFyZW50S2V5O1xuICAgIHRoaXMuc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGUuY2hpbGQobm9kZSkgOiBuZXcgUm9vdFRyYW5zZm9ybVNjb3BlKG5vZGUpO1xuXG4gICAgLy8gQ29uc3VtZSBpbiBzY29wZSB2YWx1ZXNcbiAgICBpZiAobm9kZS50eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnNjb3BlLnVzZUxvY2FsKG5vZGUpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSk7XG5cbiAgICAgIChub2RlIGFzIEFTVHYxLkVsZW1lbnROb2RlKS5jaGlsZHJlbi5mb3JFYWNoKChub2RlOiBBU1R2MS5TdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBhcmVudE5vZGUoKTogQVNUdjEuTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm5vZGUgOiBudWxsO1xuICB9XG5cbiAgcGFyZW50cygpOiBJdGVyYWJsZTxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBhdGhQYXJlbnRzSXRlcmF0b3IodGhpcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUGF0aFBhcmVudHNJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gIHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT47XG5cbiAgY29uc3RydWN0b3IocGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPikge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnBhdGgucGFyZW50KSB7XG4gICAgICB0aGlzLnBhdGggPSB0aGlzLnBhdGgucGFyZW50O1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLnBhdGggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFYyxVO0FBS1osV0FBQSxVQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxTQUFBLEVBR2lDO0FBQUEsUUFEL0IsTUFDK0IsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUQvQixNQUFBLE1BQytCLEdBSGpDLElBRUU7QUFDK0I7O0FBQUEsUUFBL0IsU0FBK0IsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUEvQixNQUFBLFNBQStCLEdBSGpDLElBR0U7QUFBK0I7O0FBRS9CLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0EsU0FBQSxTQUFBLEdBQUEsU0FBQTtBQUNEOzs7O1NBTUQsTyxHQUFBLFNBQUEsT0FBQSxHQUFPO0FBQUEsUUFBQSxLQUFBLEdBQUEsSUFBQTtBQUFBLFFBQUEsSUFBQTs7QUFDTCxXQUFBLElBQUEsR0FBQSxFQUFBLEVBQUEsSUFBQSxDQUNHLE1BQU0sQ0FEVCxRQUFBLENBQUEsR0FDcUIsWUFBSztBQUN0QixhQUFPLElBQUEsbUJBQUEsQ0FBUCxLQUFPLENBQVA7QUFGSixLQUFBLEVBQUEsSUFBQTs7Ozs7d0JBTFk7QUFDWixhQUFPLEtBQUEsTUFBQSxHQUFjLEtBQUEsTUFBQSxDQUFkLElBQUEsR0FBUCxJQUFBO0FBQ0Q7Ozs7Ozs7O0lBV0gsbUI7QUFHRSxXQUFBLG1CQUFBLENBQUEsSUFBQSxFQUF3QztBQUN0QyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0Q7Ozs7VUFFRCxJLEdBQUEsU0FBQSxJQUFBLEdBQUk7QUFDRixRQUFJLEtBQUEsSUFBQSxDQUFKLE1BQUEsRUFBc0I7QUFDcEIsV0FBQSxJQUFBLEdBQVksS0FBQSxJQUFBLENBQVosTUFBQTtBQUNBLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixLQUFBO0FBQWUsUUFBQSxLQUFLLEVBQUUsS0FBSztBQUEzQixPQUFQO0FBRkYsS0FBQSxNQUdPO0FBQ0wsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFOLElBQUE7QUFBYyxRQUFBLEtBQUssRUFBRTtBQUFyQixPQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXJQYXRoPE4gZXh0ZW5kcyBBU1R2MS5Ob2RlPiB7XG4gIG5vZGU6IE47XG4gIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw7XG4gIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBub2RlOiBOLFxuICAgIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGwgPSBudWxsLFxuICAgIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLnBhcmVudEtleSA9IHBhcmVudEtleTtcbiAgfVxuXG4gIGdldCBwYXJlbnROb2RlKCk6IEFTVHYxLk5vZGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQgPyB0aGlzLnBhcmVudC5ub2RlIDogbnVsbDtcbiAgfVxuXG4gIHBhcmVudHMoKTogSXRlcmFibGU8V2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgW1N5bWJvbC5pdGVyYXRvcl06ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXRoUGFyZW50c0l0ZXJhdG9yKHRoaXMpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFBhdGhQYXJlbnRzSXRlcmF0b3IgaW1wbGVtZW50cyBJdGVyYXRvcjxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICBwYXRoOiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+O1xuXG4gIGNvbnN0cnVjdG9yKHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4pIHtcbiAgICB0aGlzLnBhdGggPSBwYXRoO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5wYXRoLnBhcmVudCkge1xuICAgICAgdGhpcy5wYXRoID0gdGhpcy5wYXRoLnBhcmVudDtcbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogdGhpcy5wYXRoIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBudWxsIH07XG4gICAgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -34,3 +34,5 @@ "use strict";

this["this"] = false;
this.data = false;
this.data = false; // Cache for the head value.
this._head = undefined;
var parts = tail.slice();

@@ -53,2 +55,6 @@

get: function get() {
if (this._head) {
return this._head;
}
var firstPart;

@@ -67,3 +73,3 @@

}).loc;
return _publicBuilders.default.head(firstPart, firstPartLoc);
return this._head = _publicBuilders.default.head(firstPart, firstPartLoc);
}

@@ -81,2 +87,2 @@ }, {

exports.PathExpressionImplV1 = PathExpressionImplV1;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sb0JBQU4sR0FBQSxhQUFBLFlBQUE7QUFNRSxXQUFBLG9CQUFBLENBQUEsUUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsR0FBQSxFQUEyRjtBQUF4RSxTQUFBLFFBQUEsR0FBQSxRQUFBO0FBQXlELFNBQUEsR0FBQSxHQUFBLEdBQUE7QUFMNUUsU0FBQSxJQUFBLEdBQUEsZ0JBQUE7QUFFTyxTQUFBLE1BQUEsSUFBQSxLQUFBO0FBQ0EsU0FBQSxJQUFBLEdBQUEsS0FBQTtBQUdMLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBaEIsS0FBWSxFQUFaOztBQUVBLFFBQUksSUFBSSxDQUFKLElBQUEsS0FBSixVQUFBLEVBQThCO0FBQzVCLFdBQUEsTUFBQSxJQUFBLElBQUE7QUFERixLQUFBLE1BRU8sSUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLFFBQUEsRUFBNEI7QUFDakMsV0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUEsS0FBSyxDQUFMLE9BQUEsQ0FBYyxJQUFJLENBQUosSUFBQSxDQUFBLEtBQUEsQ0FBZCxDQUFjLENBQWQ7QUFGSyxLQUFBLE1BR0E7QUFDTCxNQUFBLEtBQUssQ0FBTCxPQUFBLENBQWMsSUFBSSxDQUFsQixJQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOztBQW5CSCxFQUFBLFlBQUEsQ0FBQSxvQkFBQSxFQUFBLENBQUE7QUFBQSxJQUFBLEdBQUEsRUFBQSxNQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsU0FBQSxHQUFBLEdBcUJVO0FBQ04sVUFBQSxTQUFBOztBQUVBLFVBQUEsS0FBQSxNQUFBLENBQUEsRUFBZTtBQUNiLFFBQUEsU0FBUyxHQUFULE1BQUE7QUFERixPQUFBLE1BRU8sSUFBSSxLQUFKLElBQUEsRUFBZTtBQUNwQixRQUFBLFNBQVMsR0FBQSxNQUFPLEtBQUEsS0FBQSxDQUFoQixDQUFnQixDQUFoQjtBQURLLE9BQUEsTUFFQTtBQUNMLFFBQUEsU0FBUyxHQUFHLEtBQUEsS0FBQSxDQUFaLENBQVksQ0FBWjtBQUNEOztBQUVELFVBQUksWUFBWSxHQUFHLEtBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsZUFBQSxDQUEyQztBQUM1RCxRQUFBLEtBQUssRUFBRSxTQUFTLENBQUM7QUFEMkMsT0FBM0MsRUFBbkIsR0FBQTtBQUlBLGFBQU8sd0JBQUEsSUFBQSxDQUFBLFNBQUEsRUFBUCxZQUFPLENBQVA7QUFDRDtBQXJDSCxHQUFBLEVBQUE7QUFBQSxJQUFBLEdBQUEsRUFBQSxNQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsU0FBQSxHQUFBLEdBdUNVO0FBQ04sYUFBTyxLQUFBLE1BQUEsSUFBWSxLQUFaLEtBQUEsR0FBeUIsS0FBQSxLQUFBLENBQUEsS0FBQSxDQUFoQyxDQUFnQyxDQUFoQztBQUNEO0FBekNILEdBQUEsQ0FBQSxDQUFBOztBQUFBLFNBQUEsb0JBQUE7QUFBQSxDQUFBLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vc291cmNlL3NwYW4nO1xuaW1wb3J0IHsgUGF0aEV4cHJlc3Npb24sIFBhdGhIZWFkIH0gZnJvbSAnLi9ub2Rlcy12MSc7XG5pbXBvcnQgYiBmcm9tICcuL3B1YmxpYy1idWlsZGVycyc7XG5cbmV4cG9ydCBjbGFzcyBQYXRoRXhwcmVzc2lvbkltcGxWMSBpbXBsZW1lbnRzIFBhdGhFeHByZXNzaW9uIHtcbiAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyA9ICdQYXRoRXhwcmVzc2lvbic7XG4gIHB1YmxpYyBwYXJ0czogc3RyaW5nW107XG4gIHB1YmxpYyB0aGlzID0gZmFsc2U7XG4gIHB1YmxpYyBkYXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG9yaWdpbmFsOiBzdHJpbmcsIGhlYWQ6IFBhdGhIZWFkLCB0YWlsOiBzdHJpbmdbXSwgcHVibGljIGxvYzogU291cmNlU3Bhbikge1xuICAgIGxldCBwYXJ0cyA9IHRhaWwuc2xpY2UoKTtcblxuICAgIGlmIChoZWFkLnR5cGUgPT09ICdUaGlzSGVhZCcpIHtcbiAgICAgIHRoaXMudGhpcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChoZWFkLnR5cGUgPT09ICdBdEhlYWQnKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0cnVlO1xuICAgICAgcGFydHMudW5zaGlmdChoZWFkLm5hbWUuc2xpY2UoMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KGhlYWQubmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgZ2V0IGhlYWQoKTogUGF0aEhlYWQge1xuICAgIGxldCBmaXJzdFBhcnQ6IHN0cmluZztcblxuICAgIGlmICh0aGlzLnRoaXMpIHtcbiAgICAgIGZpcnN0UGFydCA9ICd0aGlzJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgZmlyc3RQYXJ0ID0gYEAke3RoaXMucGFydHNbMF19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlyc3RQYXJ0ID0gdGhpcy5wYXJ0c1swXTtcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RQYXJ0TG9jID0gdGhpcy5sb2MuY29sbGFwc2UoJ3N0YXJ0Jykuc2xpY2VTdGFydENoYXJzKHtcbiAgICAgIGNoYXJzOiBmaXJzdFBhcnQubGVuZ3RoLFxuICAgIH0pLmxvYztcblxuICAgIHJldHVybiBiLmhlYWQoZmlyc3RQYXJ0LCBmaXJzdFBhcnRMb2MpO1xuICB9XG5cbiAgZ2V0IHRhaWwoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnRoaXMgPyB0aGlzLnBhcnRzIDogdGhpcy5wYXJ0cy5zbGljZSgxKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sb0JBQU4sR0FBQSxhQUFBLFlBQUE7QUFNRSxXQUFBLG9CQUFBLENBQUEsUUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsR0FBQSxFQUEyRjtBQUF4RSxTQUFBLFFBQUEsR0FBQSxRQUFBO0FBQXlELFNBQUEsR0FBQSxHQUFBLEdBQUE7QUFMNUUsU0FBQSxJQUFBLEdBQUEsZ0JBQUE7QUFFTyxTQUFBLE1BQUEsSUFBQSxLQUFBO0FBQ0EsU0FBQSxJQUFBLEdBQUEsS0FBQSxDQUVvRixDQWUzRjs7QUFDQSxTQUFBLEtBQUEsR0FBQSxTQUFBO0FBZkUsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFoQixLQUFZLEVBQVo7O0FBRUEsUUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLFVBQUEsRUFBOEI7QUFDNUIsV0FBQSxNQUFBLElBQUEsSUFBQTtBQURGLEtBQUEsTUFFTyxJQUFJLElBQUksQ0FBSixJQUFBLEtBQUosUUFBQSxFQUE0QjtBQUNqQyxXQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQSxLQUFLLENBQUwsT0FBQSxDQUFjLElBQUksQ0FBSixJQUFBLENBQUEsS0FBQSxDQUFkLENBQWMsQ0FBZDtBQUZLLEtBQUEsTUFHQTtBQUNMLE1BQUEsS0FBSyxDQUFMLE9BQUEsQ0FBYyxJQUFJLENBQWxCLElBQUE7QUFDRDs7QUFFRCxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0Q7O0FBbkJILEVBQUEsWUFBQSxDQUFBLG9CQUFBLEVBQUEsQ0FBQTtBQUFBLElBQUEsR0FBQSxFQUFBLE1BQUE7QUFBQSxJQUFBLEdBQUEsRUFBQSxTQUFBLEdBQUEsR0F3QlU7QUFDTixVQUFJLEtBQUosS0FBQSxFQUFnQjtBQUNkLGVBQU8sS0FBUCxLQUFBO0FBQ0Q7O0FBRUQsVUFBQSxTQUFBOztBQUVBLFVBQUEsS0FBQSxNQUFBLENBQUEsRUFBZTtBQUNiLFFBQUEsU0FBUyxHQUFULE1BQUE7QUFERixPQUFBLE1BRU8sSUFBSSxLQUFKLElBQUEsRUFBZTtBQUNwQixRQUFBLFNBQVMsR0FBQSxNQUFPLEtBQUEsS0FBQSxDQUFoQixDQUFnQixDQUFoQjtBQURLLE9BQUEsTUFFQTtBQUNMLFFBQUEsU0FBUyxHQUFHLEtBQUEsS0FBQSxDQUFaLENBQVksQ0FBWjtBQUNEOztBQUVELFVBQUksWUFBWSxHQUFHLEtBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsZUFBQSxDQUEyQztBQUM1RCxRQUFBLEtBQUssRUFBRSxTQUFTLENBQUM7QUFEMkMsT0FBM0MsRUFBbkIsR0FBQTtBQUlBLGFBQVEsS0FBQSxLQUFBLEdBQWEsd0JBQUEsSUFBQSxDQUFBLFNBQUEsRUFBckIsWUFBcUIsQ0FBckI7QUFDRDtBQTVDSCxHQUFBLEVBQUE7QUFBQSxJQUFBLEdBQUEsRUFBQSxNQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsU0FBQSxHQUFBLEdBOENVO0FBQ04sYUFBTyxLQUFBLE1BQUEsSUFBWSxLQUFaLEtBQUEsR0FBeUIsS0FBQSxLQUFBLENBQUEsS0FBQSxDQUFoQyxDQUFnQyxDQUFoQztBQUNEO0FBaERILEdBQUEsQ0FBQSxDQUFBOztBQUFBLFNBQUEsb0JBQUE7QUFBQSxDQUFBLEVBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vc291cmNlL3NwYW4nO1xuaW1wb3J0IHsgUGF0aEV4cHJlc3Npb24sIFBhdGhIZWFkIH0gZnJvbSAnLi9ub2Rlcy12MSc7XG5pbXBvcnQgYiBmcm9tICcuL3B1YmxpYy1idWlsZGVycyc7XG5cbmV4cG9ydCBjbGFzcyBQYXRoRXhwcmVzc2lvbkltcGxWMSBpbXBsZW1lbnRzIFBhdGhFeHByZXNzaW9uIHtcbiAgdHlwZTogJ1BhdGhFeHByZXNzaW9uJyA9ICdQYXRoRXhwcmVzc2lvbic7XG4gIHB1YmxpYyBwYXJ0czogc3RyaW5nW107XG4gIHB1YmxpYyB0aGlzID0gZmFsc2U7XG4gIHB1YmxpYyBkYXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG9yaWdpbmFsOiBzdHJpbmcsIGhlYWQ6IFBhdGhIZWFkLCB0YWlsOiBzdHJpbmdbXSwgcHVibGljIGxvYzogU291cmNlU3Bhbikge1xuICAgIGxldCBwYXJ0cyA9IHRhaWwuc2xpY2UoKTtcblxuICAgIGlmIChoZWFkLnR5cGUgPT09ICdUaGlzSGVhZCcpIHtcbiAgICAgIHRoaXMudGhpcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChoZWFkLnR5cGUgPT09ICdBdEhlYWQnKSB7XG4gICAgICB0aGlzLmRhdGEgPSB0cnVlO1xuICAgICAgcGFydHMudW5zaGlmdChoZWFkLm5hbWUuc2xpY2UoMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KGhlYWQubmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzO1xuICB9XG5cbiAgLy8gQ2FjaGUgZm9yIHRoZSBoZWFkIHZhbHVlLlxuICBfaGVhZD86IFBhdGhIZWFkID0gdW5kZWZpbmVkO1xuXG4gIGdldCBoZWFkKCk6IFBhdGhIZWFkIHtcbiAgICBpZiAodGhpcy5faGVhZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2hlYWQ7XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0UGFydDogc3RyaW5nO1xuXG4gICAgaWYgKHRoaXMudGhpcykge1xuICAgICAgZmlyc3RQYXJ0ID0gJ3RoaXMnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhKSB7XG4gICAgICBmaXJzdFBhcnQgPSBgQCR7dGhpcy5wYXJ0c1swXX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaXJzdFBhcnQgPSB0aGlzLnBhcnRzWzBdO1xuICAgIH1cblxuICAgIGxldCBmaXJzdFBhcnRMb2MgPSB0aGlzLmxvYy5jb2xsYXBzZSgnc3RhcnQnKS5zbGljZVN0YXJ0Q2hhcnMoe1xuICAgICAgY2hhcnM6IGZpcnN0UGFydC5sZW5ndGgsXG4gICAgfSkubG9jO1xuXG4gICAgcmV0dXJuICh0aGlzLl9oZWFkID0gYi5oZWFkKGZpcnN0UGFydCwgZmlyc3RQYXJ0TG9jKSk7XG4gIH1cblxuICBnZXQgdGFpbCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGhpcyA/IHRoaXMucGFydHMgOiB0aGlzLnBhcnRzLnNsaWNlKDEpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

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

function _createForOfIteratorHelperLoose(o, allowArrayLike) {
var it;
var _util = require("@glimmer/util");
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);
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i];
}
return arr2;
}
function node(name) {

@@ -61,4 +19,3 @@ if (name !== undefined) {

this.type = type;
this.loc = fields.loc;
copy(fields, this);
(0, _util.assign)(this, fields);
}

@@ -75,4 +32,3 @@

function _class2(fields) {
this.loc = fields.loc;
copy(fields, this);
(0, _util.assign)(this, fields);
}

@@ -86,13 +42,2 @@

}
function keys(object) {
return Object.keys(object);
}
function copy(object1, object2) {
for (var _iterator = _createForOfIteratorHelperLoose(keys(object1)), _step; !(_step = _iterator()).done;) {
var key = _step.value;
object2[key] = object1[key];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMENNLFNBQUEsSUFBQSxDQUFBLElBQUEsRUFDSTtBQVFSLE1BQUksSUFBSSxLQUFSLFNBQUEsRUFBd0I7QUFDdEIsUUFBTSxJQUFJLEdBQVYsSUFBQTtBQUNBLFdBQU87QUFDTCxNQUFBLE1BREssRUFBQSxTQUFBLE1BQUEsR0FDQztBQUNKLGVBQUEsYUFBQSxZQUFBO0FBSUUsbUJBQUEsTUFBQSxDQUFBLE1BQUEsRUFBMkM7QUFDekMsaUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxpQkFBQSxHQUFBLEdBQVcsTUFBTSxDQUFqQixHQUFBO0FBQ0EsWUFBQSxJQUFJLENBQUEsTUFBQSxFQUFKLElBQUksQ0FBSjtBQUNEOztBQVJILGlCQUFBLE1BQUE7QUFBQSxTQUFBLEVBQUE7QUFVRDtBQVpJLEtBQVA7QUFGRixHQUFBLE1BZ0JPO0FBQ0wsV0FBTztBQUNMLE1BQUEsTUFESyxFQUFBLFNBQUEsTUFBQSxHQUNDO0FBQ0osZUFBQSxhQUFBLFlBQUE7QUFHRSxtQkFBQSxPQUFBLENBQUEsTUFBQSxFQUEyQztBQUN6QyxpQkFBQSxHQUFBLEdBQVcsTUFBTSxDQUFqQixHQUFBO0FBRUEsWUFBQSxJQUFJLENBQUEsTUFBQSxFQUFKLElBQUksQ0FBSjtBQUNEOztBQVBILGlCQUFBLE9BQUE7QUFBQSxTQUFBLEVBQUE7QUFTRDtBQVhJLEtBQVA7QUFhRDtBQUNGOztBQWdCRCxTQUFBLElBQUEsQ0FBQSxNQUFBLEVBQXlDO0FBQ3ZDLFNBQU8sTUFBTSxDQUFOLElBQUEsQ0FBUCxNQUFPLENBQVA7QUFDRDs7QUFFRCxTQUFBLElBQUEsQ0FBQSxPQUFBLEVBQUEsT0FBQSxFQUFzRDtBQUNwRCxPQUFBLElBQUEsU0FBQSxHQUFBLCtCQUFBLENBQWdCLElBQUksQ0FBcEIsT0FBb0IsQ0FBcEIsQ0FBQSxFQUFBLEtBQUEsRUFBQSxDQUFBLENBQUEsS0FBQSxHQUFBLFNBQUEsRUFBQSxFQUFBLElBQUEsR0FBK0I7QUFBQSxRQUEvQixHQUErQixHQUFBLEtBQUEsQ0FBQSxLQUFBO0FBQzdCLElBQUEsT0FBTyxDQUFQLEdBQU8sQ0FBUCxHQUFlLE9BQU8sQ0FBdEIsR0FBc0IsQ0FBdEI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uLy4uL3NvdXJjZS9zcGFuJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTm9kZUZpZWxkcyB7XG4gIGxvYzogU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIEFTVHYyIG5vZGVzLCB3aXRoIGFuIG9wdGlvbmFsIG5hbWUgYW5kIHRoZSBub2RlJ3NcbiAqIG9wdGlvbnMuXG4gKlxuICogYGBgdHNcbiAqIGV4cG9ydCBjbGFzcyBIdG1sVGV4dCBleHRlbmRzIG5vZGUoJ0h0bWxUZXh0JykuZmllbGRzPHsgY2hhcnM6IHN0cmluZyB9PigpIHt9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNyZWF0ZXMgYSBuZXcgQVNUdjIgbm9kZSB3aXRoIHRoZSBuYW1lIGAnSHRtbFRleHQnYCBhbmQgb25lIGZpZWxkIGBjaGFyczogc3RyaW5nYCAoaW5cbiAqIGFkZGl0aW9uIHRvIGEgYGxvYzogU291cmNlT2Zmc2V0c2AgZmllbGQsIHdoaWNoIGFsbCBub2RlcyBoYXZlKS5cbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNsYXNzIEFyZ3MgZXh0ZW5kcyBub2RlKCkuZmllbGRzPHtcbiAqICBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJndW1lbnRzO1xuICogIG5hbWVkOiBOYW1lZEFyZ3VtZW50c1xuICogfT4oKSB7fVxuICogYGBgXG4gKlxuICogVGhpcyBjcmVhdGVzIGEgbmV3IHVuLW5hbWVkIEFTVHYyIG5vZGUgd2l0aCB0d28gZmllbGRzIChgcG9zaXRpb25hbDogUG9zaXRpb25hbGAgYW5kIGBuYW1lZDpcbiAqIE5hbWVkYCwgaW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgYGxvYzogU291cmNlT2Zmc2V0c2AgZmllbGQpLlxuICpcbiAqIE9uY2UgeW91IGNyZWF0ZSBhIG5vZGUgdXNpbmcgYG5vZGVgLCBpdCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhbGwgb2YgaXRzIGZpZWxkcyAoaW5jbHVkaW5nIGBsb2NgKTpcbiAqXG4gKiBgYGB0c1xuICogbmV3IEh0bWxUZXh0KHsgbG9jOiBvZmZzZXRzLCBjaGFyczogc29tZVN0cmluZyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSgpOiB7XG4gIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG59O1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGU8VCBleHRlbmRzIHN0cmluZz4oXG4gIG5hbWU6IFRcbik6IHtcbiAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgRmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGU8VCBleHRlbmRzIHN0cmluZz4oXG4gIG5hbWU/OiBUXG4pOlxuICB8IHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbiAgICB9XG4gIHwge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbiAgICB9IHtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHR5cGUgPSBuYW1lO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz4ge1xuICAgICAgICByZXR1cm4gY2xhc3Mge1xuICAgICAgICAgIHJlYWRvbmx5IGxvYzogU291cmNlU3BhbjtcbiAgICAgICAgICByZWFkb25seSB0eXBlOiBUO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHRoaXMubG9jID0gZmllbGRzLmxvYztcbiAgICAgICAgICAgIGNvcHkoZmllbGRzLCAodGhpcyBhcyB1bmtub3duKSBhcyBDb25zdHJ1Y3RpbmdUeXBlZE5vZGU8RmllbGRzPik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcz4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5sb2MgPSBmaWVsZHMubG9jO1xuXG4gICAgICAgICAgICBjb3B5KGZpZWxkcywgKHRoaXMgYXMgdW5rbm93bikgYXMgQ29uc3RydWN0aW5nTm9kZTxGaWVsZHM+KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgTm9kZUNvbnN0cnVjdG9yPEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG50eXBlIENvbnN0cnVjdGluZ1R5cGVkTm9kZTxGaWVsZHM+ID0gRmllbGRzICYgQmFzZU5vZGVGaWVsZHM7XG5cbnR5cGUgQ29uc3RydWN0aW5nTm9kZTxGaWVsZHM+ID0gQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbnN0cnVjdG9yPEZpZWxkcz4ge1xuICBuZXcgKGZpZWxkczogRmllbGRzKTogUmVhZG9ubHk8RmllbGRzPjtcbn1cblxudHlwZSBUeXBlZE5vZGU8VCBleHRlbmRzIHN0cmluZywgRmllbGRzPiA9IHsgdHlwZTogVCB9ICYgUmVhZG9ubHk8RmllbGRzPjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxUIGV4dGVuZHMgc3RyaW5nLCBGaWVsZHM+IHtcbiAgbmV3IChvcHRpb25zOiBGaWVsZHMpOiBUeXBlZE5vZGU8VCwgRmllbGRzPjtcbn1cblxuZnVuY3Rpb24ga2V5czxPIGV4dGVuZHMgb2JqZWN0PihvYmplY3Q6IE8pOiAoa2V5b2YgTylbXSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpIGFzIChrZXlvZiBPKVtdO1xufVxuXG5mdW5jdGlvbiBjb3B5PE8gZXh0ZW5kcyBvYmplY3Q+KG9iamVjdDE6IE8sIG9iamVjdDI6IE8pIHtcbiAgZm9yIChsZXQga2V5IG9mIGtleXMob2JqZWN0MSkpIHtcbiAgICBvYmplY3QyW2tleV0gPSBvYmplY3QxW2tleV07XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQTRDTSxTQUFBLElBQUEsQ0FBQSxJQUFBLEVBQ0k7QUFRUixNQUFJLElBQUksS0FBUixTQUFBLEVBQXdCO0FBQ3RCLFFBQU0sSUFBSSxHQUFWLElBQUE7QUFDQSxXQUFPO0FBQ0wsTUFBQSxNQURLLEVBQUEsU0FBQSxNQUFBLEdBQ0M7QUFDSixlQUFBLGFBQUEsWUFBQTtBQUtFLG1CQUFBLE1BQUEsQ0FBQSxNQUFBLEVBQTJDO0FBQ3pDLGlCQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsOEJBQU0sSUFBTixFQUFBLE1BQUE7QUFDRDs7QUFSSCxpQkFBQSxNQUFBO0FBQUEsU0FBQSxFQUFBO0FBVUQ7QUFaSSxLQUFQO0FBRkYsR0FBQSxNQWdCTztBQUNMLFdBQU87QUFDTCxNQUFBLE1BREssRUFBQSxTQUFBLE1BQUEsR0FDQztBQUNKLGVBQUEsYUFBQSxZQUFBO0FBSUUsbUJBQUEsT0FBQSxDQUFBLE1BQUEsRUFBMkM7QUFDekMsOEJBQU0sSUFBTixFQUFBLE1BQUE7QUFDRDs7QUFOSCxpQkFBQSxPQUFBO0FBQUEsU0FBQSxFQUFBO0FBUUQ7QUFWSSxLQUFQO0FBWUQ7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vLi4vc291cmNlL3NwYW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VOb2RlRmllbGRzIHtcbiAgbG9jOiBTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgQVNUdjIgbm9kZXMsIHdpdGggYW4gb3B0aW9uYWwgbmFtZSBhbmQgdGhlIG5vZGUnc1xuICogb3B0aW9ucy5cbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNsYXNzIEh0bWxUZXh0IGV4dGVuZHMgbm9kZSgnSHRtbFRleHQnKS5maWVsZHM8eyBjaGFyczogc3RyaW5nIH0+KCkge31cbiAqIGBgYFxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIG5ldyBBU1R2MiBub2RlIHdpdGggdGhlIG5hbWUgYCdIdG1sVGV4dCdgIGFuZCBvbmUgZmllbGQgYGNoYXJzOiBzdHJpbmdgIChpblxuICogYWRkaXRpb24gdG8gYSBgbG9jOiBTb3VyY2VPZmZzZXRzYCBmaWVsZCwgd2hpY2ggYWxsIG5vZGVzIGhhdmUpLlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY2xhc3MgQXJncyBleHRlbmRzIG5vZGUoKS5maWVsZHM8e1xuICogIHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmd1bWVudHM7XG4gKiAgbmFtZWQ6IE5hbWVkQXJndW1lbnRzXG4gKiB9PigpIHt9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNyZWF0ZXMgYSBuZXcgdW4tbmFtZWQgQVNUdjIgbm9kZSB3aXRoIHR3byBmaWVsZHMgKGBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsYCBhbmQgYG5hbWVkOlxuICogTmFtZWRgLCBpbiBhZGRpdGlvbiB0byB0aGUgZ2VuZXJpYyBgbG9jOiBTb3VyY2VPZmZzZXRzYCBmaWVsZCkuXG4gKlxuICogT25jZSB5b3UgY3JlYXRlIGEgbm9kZSB1c2luZyBgbm9kZWAsIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIGFsbCBvZiBpdHMgZmllbGRzIChpbmNsdWRpbmcgYGxvY2ApOlxuICpcbiAqIGBgYHRzXG4gKiBuZXcgSHRtbFRleHQoeyBsb2M6IG9mZnNldHMsIGNoYXJzOiBzb21lU3RyaW5nIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2RlKCk6IHtcbiAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbn07XG5leHBvcnQgZnVuY3Rpb24gbm9kZTxUIGV4dGVuZHMgc3RyaW5nPihcbiAgbmFtZTogVFxuKToge1xuICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZTxUIGV4dGVuZHMgc3RyaW5nPihcbiAgbmFtZT86IFRcbik6XG4gIHwge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgRmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xuICAgIH1cbiAgfCB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xuICAgIH0ge1xuICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdHlwZSA9IG5hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgLy8gU0FGRVRZOiBpbml0aWFsaXplZCB2aWEgYGFzc2lnbmAgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIGRlY2xhcmUgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuICAgICAgICAgIHJlYWRvbmx5IHR5cGU6IFQ7XG5cbiAgICAgICAgICBjb25zdHJ1Y3RvcihmaWVsZHM6IEJhc2VOb2RlRmllbGRzICYgRmllbGRzKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcz4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgLy8gU0FGRVRZOiBpbml0aWFsaXplZCB2aWEgYGFzc2lnbmAgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIGRlY2xhcmUgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIE5vZGVDb25zdHJ1Y3RvcjxCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz47XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlQ29uc3RydWN0b3I8RmllbGRzPiB7XG4gIG5ldyAoZmllbGRzOiBGaWVsZHMpOiBSZWFkb25seTxGaWVsZHM+O1xufVxuXG50eXBlIFR5cGVkTm9kZTxUIGV4dGVuZHMgc3RyaW5nLCBGaWVsZHM+ID0geyB0eXBlOiBUIH0gJiBSZWFkb25seTxGaWVsZHM+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQgZXh0ZW5kcyBzdHJpbmcsIEZpZWxkcz4ge1xuICBuZXcgKG9wdGlvbnM6IEZpZWxkcyk6IFR5cGVkTm9kZTxULCBGaWVsZHM+O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -1,20 +0,1 @@

var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _whens, _map, _whens_1;
import { assert, isPresent } from '@glimmer/util';

@@ -35,9 +16,7 @@ /**

constructor(whens) {
_whens.set(this, void 0);
__classPrivateFieldSet(this, _whens, whens);
this._whens = whens;
}
first(kind) {
for (let when of __classPrivateFieldGet(this, _whens)) {
for (let when of this._whens) {
let value = when.match(kind);

@@ -55,11 +34,9 @@

_whens = new WeakMap();
class When {
constructor() {
_map.set(this, new Map());
this._map = new Map();
}
get(pattern, or) {
let value = __classPrivateFieldGet(this, _map).get(pattern);
let value = this._map.get(pattern);

@@ -72,3 +49,3 @@ if (value) {

__classPrivateFieldGet(this, _map).set(pattern, value);
this._map.set(pattern, value);

@@ -79,3 +56,3 @@ return value;

add(pattern, out) {
__classPrivateFieldGet(this, _map).set(pattern, out);
this._map.set(pattern, out);
}

@@ -87,5 +64,5 @@

let exact = __classPrivateFieldGet(this, _map).get(pattern);
let exact = this._map.get(pattern);
let fallback = __classPrivateFieldGet(this, _map).get(MatchAny);
let fallback = this._map.get(MatchAny);

@@ -105,3 +82,2 @@ if (exact) {

_map = new WeakMap();
export function match(callback) {

@@ -113,3 +89,3 @@ return callback(new Matcher()).check();

constructor() {
_whens_1.set(this, new When());
this._whens = new When();
}

@@ -126,3 +102,3 @@ /**

matchFor(left, right) {
let nesteds = __classPrivateFieldGet(this, _whens_1).match(left);
let nesteds = this._whens.match(left);

@@ -137,3 +113,3 @@ (false && assert(isPresent(nesteds), `no match defined for (${left}, ${right}) and no AnyMatch defined either`));

callback) {
__classPrivateFieldGet(this, _whens_1).get(left, () => new When()).add(right, callback);
this._whens.get(left, () => new When()).add(right, callback);

@@ -145,4 +121,2 @@ return this;

_whens_1 = new WeakMap();
function patternFor(kind) {

@@ -165,2 +139,2 @@ switch (kind) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUyxNQUFULEVBQWlCLFNBQWpCLFFBQWtDLGVBQWxDO0FBSUE7Ozs7Ozs7OztBQVNBLE9BQU8sTUFBTSxRQUFRLEdBQUcsV0FBakI7QUFXUCxPQUFPLE1BQU0sV0FBVyxHQUFHLGNBQXBCOztBQUtQLE1BQU0sUUFBTixDQUFjO0FBR1osRUFBQSxXQUFBLENBQVksS0FBWixFQUE4QjtBQUY5QixJQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQTs7QUFHRSxJQUFBLHNCQUFBLENBQUEsSUFBQSxFQUFJLE1BQUosRUFBYyxLQUFkLENBQUE7QUFDRDs7QUFFRCxFQUFBLEtBQUssQ0FBQyxJQUFELEVBQWlCO0FBQ3BCLFNBQUssSUFBSSxJQUFULElBQWEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsTUFBQSxDQUFiLEVBQThCO0FBQzVCLFVBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFMLENBQVcsSUFBWCxDQUFaOztBQUNBLFVBQUksU0FBUyxDQUFDLEtBQUQsQ0FBYixFQUFzQjtBQUNwQixlQUFPLEtBQUssQ0FBQyxDQUFELENBQVo7QUFDRDtBQUNGOztBQUVELFdBQU8sSUFBUDtBQUNEOztBQWhCVzs7OztBQW1CZCxNQUFNLElBQU4sQ0FBVTtBQUFWLEVBQUEsV0FBQSxHQUFBO0FBQ0UsSUFBQSxJQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBMEIsSUFBSSxHQUFKLEVBQTFCO0FBc0NEOztBQXBDQyxFQUFBLEdBQUcsQ0FBQyxPQUFELEVBQW1CLEVBQW5CLEVBQWdDO0FBQ2pDLFFBQUksS0FBSyxHQUFHLHNCQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFVLEdBQVYsQ0FBYyxPQUFkLENBQVo7O0FBRUEsUUFB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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnQsIGlzUHJlc2VudCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBDaGFyUG9zaXRpb24sIEhic1Bvc2l0aW9uLCBJbnZpc2libGVQb3NpdGlvbiwgT2Zmc2V0S2luZCwgUG9zaXRpb25EYXRhIH0gZnJvbSAnLi9vZmZzZXQnO1xuXG4vKipcbiAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBEU0wgdXNlZCBieSBzcGFuIGFuZCBvZmZzZXQgaW4gcGxhY2VzIHdoZXJlIHRoZXkgbmVlZCB0byBleGhhdXN0aXZlbHlcbiAqIGNvbnNpZGVyIGFsbCBjb21iaW5hdGlvbnMgb2Ygc3RhdGVzIChIYW5kbGViYXJzIG9mZnNldHMsIGNoYXJhY3RlciBvZmZzZXRzIGFuZCBpbnZpc2libGUvYnJva2VuXG4gKiBvZmZzZXRzKS5cbiAqXG4gKiBJdCdzIHByb2JhYmx5IG92ZXJraWxsLCBidXQgaXQgbWFrZXMgdGhlIGNvZGUgdGhhdCB1c2VzIGl0IGNsZWFyLiBJdCBjb3VsZCBiZSByZWZhY3RvcmVkIG9yXG4gKiByZW1vdmVkLlxuICovXG5cbmV4cG9ydCBjb25zdCBNYXRjaEFueSA9ICdNQVRDSF9BTlknO1xuZXhwb3J0IHR5cGUgTWF0Y2hBbnkgPSAnTUFUQ0hfQU5ZJztcblxudHlwZSBNYXRjaGVzID1cbiAgfCAnQ2hhcixIYnMnXG4gIHwgJ0hicyxDaGFyJ1xuICB8ICdIYnMsSGJzJ1xuICB8ICdDaGFyLENoYXInXG4gIHwgJ0ludmlzaWJsZSxBbnknXG4gIHwgJ0FueSxJbnZpc2libGUnO1xuXG5leHBvcnQgY29uc3QgSXNJbnZpc2libGUgPSAnSVNfSU5WSVNJQkxFJztcbmV4cG9ydCB0eXBlIElzSW52aXNpYmxlID0gJ0lTX0lOVklTSUJMRSc7XG5cbnR5cGUgUGF0dGVybiA9IE9mZnNldEtpbmQgfCBJc0ludmlzaWJsZSB8IE1hdGNoQW55O1xuXG5jbGFzcyBXaGVuTGlzdDxPdXQ+IHtcbiAgI3doZW5zOiBXaGVuPE91dD5bXTtcblxuICBjb25zdHJ1Y3Rvcih3aGVuczogV2hlbjxPdXQ+W10pIHtcbiAgICB0aGlzLiN3aGVucyA9IHdoZW5zO1xuICB9XG5cbiAgZmlyc3Qoa2luZDogT2Zmc2V0S2luZCk6IE91dCB8IG51bGwge1xuICAgIGZvciAobGV0IHdoZW4gb2YgdGhpcy4jd2hlbnMpIHtcbiAgICAgIGxldCB2YWx1ZSA9IHdoZW4ubWF0Y2goa2luZCk7XG4gICAgICBpZiAoaXNQcmVzZW50KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVbMF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuY2xhc3MgV2hlbjxPdXQ+IHtcbiAgI21hcDogTWFwPFBhdHRlcm4sIE91dD4gPSBuZXcgTWFwKCk7XG5cbiAgZ2V0KHBhdHRlcm46IFBhdHRlcm4sIG9yOiAoKSA9PiBPdXQpOiBPdXQge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuI21hcC5nZXQocGF0dGVybik7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IG9yKCk7XG5cbiAgICB0aGlzLiNtYXAuc2V0KHBhdHRlcm4sIHZhbHVlKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGFkZChwYXR0ZXJuOiBQYXR0ZXJuLCBvdXQ6IE91dCk6IHZvaWQge1xuICAgIHRoaXMuI21hcC5zZXQocGF0dGVybiwgb3V0KTtcbiAgfVxuXG4gIG1hdGNoKGtpbmQ6IE9mZnNldEtpbmQpOiBPdXRbXSB7XG4gICAgbGV0IHBhdHRlcm4gPSBwYXR0ZXJuRm9yKGtpbmQpO1xuXG4gICAgbGV0IG91dDogT3V0W10gPSBbXTtcblxuICAgIGxldCBleGFjdCA9IHRoaXMuI21hcC5nZXQocGF0dGVybik7XG4gICAgbGV0IGZhbGxiYWNrID0gdGhpcy4jbWFwLmdldChNYXRjaEFueSk7XG5cbiAgICBpZiAoZXhhY3QpIHtcbiAgICAgIG91dC5wdXNoKGV4YWN0KTtcbiAgICB9XG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIG91dC5wdXNoKGZhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbnR5cGUgRXhoYXVzdGl2ZUNoZWNrPE91dCwgSW4gZXh0ZW5kcyBNYXRjaGVzLCBSZW1vdmVkIGV4dGVuZHMgTWF0Y2hlcz4gPSBFeGNsdWRlPFxuICBJbixcbiAgUmVtb3ZlZFxuPiBleHRlbmRzIG5ldmVyXG4gID8gRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PlxuICA6IE1hdGNoZXI8T3V0LCBFeGNsdWRlPEluLCBSZW1vdmVkPj47XG5cbmV4cG9ydCB0eXBlIE1hdGNoRm48T3V0PiA9IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dDtcblxuaW50ZXJmYWNlIEV4aGF1c3RpdmVNYXRjaGVyPE91dD4ge1xuICBjaGVjaygpOiBNYXRjaEZuPE91dD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaDxPdXQ+KGNhbGxiYWNrOiAobTogTWF0Y2hlcjxPdXQ+KSA9PiBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+KTogTWF0Y2hGbjxPdXQ+IHtcbiAgcmV0dXJuIGNhbGxiYWNrKG5ldyBNYXRjaGVyKCkpLmNoZWNrKCk7XG59XG5cbmNsYXNzIE1hdGNoZXI8T3V0LCBNIGV4dGVuZHMgTWF0Y2hlcyA9IE1hdGNoZXM+IHtcbiAgI3doZW5zOiBXaGVuPFdoZW48KGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0Pj4gPSBuZXcgV2hlbigpO1xuXG4gIC8qKlxuICAgKiBZb3UgZGlkbid0IGV4aGF1c3RpdmVseSBtYXRjaCBhbGwgcG9zc2liaWxpdGllcy5cbiAgICovXG4gIHByb3RlY3RlZCBjaGVjaygpOiBNYXRjaEZuPE91dD4ge1xuICAgIHJldHVybiAobGVmdCwgcmlnaHQpID0+IHRoaXMubWF0Y2hGb3IobGVmdC5raW5kLCByaWdodC5raW5kKShsZWZ0LCByaWdodCk7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoRm9yKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQsXG4gICAgcmlnaHQ6IE9mZnNldEtpbmRcbiAgKTogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0IHtcbiAgICBsZXQgbmVzdGVkcyA9IHRoaXMuI3doZW5zLm1hdGNoKGxlZnQpO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgaXNQcmVzZW50KG5lc3RlZHMpLFxuICAgICAgYG5vIG1hdGNoIGRlZmluZWQgZm9yICgke2xlZnR9LCAke3JpZ2h0fSkgYW5kIG5vIEFueU1hdGNoIGRlZmluZWQgZWl0aGVyYFxuICAgICk7XG5cbiAgICBsZXQgY2FsbGJhY2sgPSBuZXcgV2hlbkxpc3QobmVzdGVkcykuZmlyc3QocmlnaHQpO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgY2FsbGJhY2sgIT09IG51bGwsXG4gICAgICBgbm8gbWF0Y2ggZGVmaW5lZCBmb3IgKCR7bGVmdH0sICR7cmlnaHR9KSBhbmQgbm8gQW55TWF0Y2ggZGVmaW5lZCBlaXRoZXJgXG4gICAgKTtcblxuICAgIHJldHVybiBjYWxsYmFjaztcbiAgfVxuXG4gIC8vIFRoaXMgYmlnIGJsb2NrIGlzIHRoZSBidWxrIG9mIHRoZSBoZWF2eSBsaWZ0aW5nIGluIHRoaXMgZmlsZS4gSXQgZmFjaWxpdGF0ZXMgZXhoYXVzdGl2ZW5lc3NcbiAgLy8gY2hlY2tpbmcgc28gdGhhdCBtYXRjaGVycyBjYW4gZW5zdXJlIHRoZXkndmUgYWN0dWFsbHkgY292ZXJlZCBhbGwgdGhlIGNhc2VzIChhbmQgVHlwZVNjcmlwdFxuICAvLyB3aWxsIHRyZWF0IGl0IGFzIGFuIGV4aGF1c3RpdmUgbWF0Y2gpLlxuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogQ2hhclBvc2l0aW9uLCByaWdodDogSGJzUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQ2hhcixIYnMnPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IEhic1Bvc2l0aW9uLCByaWdodDogQ2hhclBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0hicyxDaGFyJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IEhic1Bvc2l0aW9uLCByaWdodDogSGJzUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnSGJzLEhicyc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IENoYXJQb3NpdGlvbiwgcmlnaHQ6IENoYXJQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdDaGFyLENoYXInPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBJc0ludmlzaWJsZSxcbiAgICByaWdodDogTWF0Y2hBbnksXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBJbnZpc2libGVQb3NpdGlvbiwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0XG4gICk6IE1hdGNoZXI8T3V0LCBFeGNsdWRlPE0sICdJbnZpc2libGUsQW55Jz4+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE1hdGNoQW55LFxuICAgIHJpZ2h0OiBJc0ludmlzaWJsZSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IEludmlzaWJsZVBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0FueSxJbnZpc2libGUnPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBNYXRjaEFueSxcbiAgICByaWdodDogTWF0Y2hBbnksXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dFxuICApOiBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+O1xuICB3aGVuKFxuICAgIGxlZnQ6IFBhdHRlcm4sXG4gICAgcmlnaHQ6IFBhdHRlcm4sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjYWxsYmFjazogKGxlZnQ6IGFueSwgcmlnaHQ6IGFueSkgPT4gT3V0XG4gICk6IE1hdGNoZXI8T3V0LCBNYXRjaGVzPiB8IEV4aGF1c3RpdmVNYXRjaGVyPE91dD4ge1xuICAgIHRoaXMuI3doZW5zLmdldChsZWZ0LCAoKSA9PiBuZXcgV2hlbigpKS5hZGQocmlnaHQsIGNhbGxiYWNrKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdHRlcm5Gb3Ioa2luZDogT2Zmc2V0S2luZCk6IFBhdHRlcm4ge1xuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlIE9mZnNldEtpbmQuQnJva2VuOlxuICAgIGNhc2UgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWM6XG4gICAgY2FzZSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50OlxuICAgICAgcmV0dXJuIElzSW52aXNpYmxlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ga2luZDtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE1BQVQsRUFBaUIsU0FBakIsUUFBa0MsZUFBbEM7QUFJQTs7Ozs7Ozs7O0FBU0EsT0FBTyxNQUFNLFFBQVEsR0FBRyxXQUFqQjtBQVdQLE9BQU8sTUFBTSxXQUFXLEdBQUcsY0FBcEI7O0FBS1AsTUFBTSxRQUFOLENBQWM7QUFHWixFQUFBLFdBQUEsQ0FBWSxLQUFaLEVBQThCO0FBQzVCLFNBQUssTUFBTCxHQUFjLEtBQWQ7QUFDRDs7QUFFRCxFQUFBLEtBQUssQ0FBQyxJQUFELEVBQWlCO0FBQ3BCLFNBQUssSUFBSSxJQUFULElBQWlCLEtBQUssTUFBdEIsRUFBOEI7QUFDNUIsVUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUwsQ0FBVyxJQUFYLENBQVo7O0FBQ0EsVUFBSSxTQUFTLENBQUMsS0FBRCxDQUFiLEVBQXNCO0FBQ3BCLGVBQU8sS0FBSyxDQUFDLENBQUQsQ0FBWjtBQUNEO0FBQ0Y7O0FBRUQsV0FBTyxJQUFQO0FBQ0Q7O0FBaEJXOztBQW1CZCxNQUFNLElBQU4sQ0FBVTtBQUFWLEVBQUEsV0FBQSxHQUFBO0FBQ0UsU0FBQSxJQUFBLEdBQTBCLElBQUksR0FBSixFQUExQjtBQXNDRDs7QUFwQ0MsRUFBQSxHQUFHLENBQUMsT0FBRCxFQUFtQixFQUFuQixFQUFnQztBQUNqQyxRQUFJLEtBQUssR0FBRyxLQUFLLElBQUwsQ0FBVSxHQUFWLENBQWMsT0FBZCxDQUFaOztBQUVBLFFBQUksS0FBSixFQUFXO0FBQ1QsYUFBTyxLQUFQO0FBQ0Q7O0FBRUQsSUFBQSxLQUFLLEdBQUcsRUFBRSxFQUFWOztBQUVBLFNBQUssSUFBTCxDQUFVLEdBQVYsQ0FBYyxPQUFkLEVBQXVCLEtBQXZCOztBQUVBLFdBQU8sS0FBUDtBQUNEOztBQUVELEVBQUEsR0FBRyxDQUFDLE9BQUQsRUFBbUIsR0FBbkIsRUFBMkI7QUFDNUIsU0FBSyxJQUFMLENBQVUsR0FBVixDQUFjLE9BQWQsRUFBdUIsR0FBdkI7QUFDRDs7QUFFRCxFQUFBLEtBQUssQ0FBQyxJQUFELEVBQWlCO0FBQ3BCLFFBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFELENBQXhCO0FBRUEsUUFBSSxHQUFHLEdBQVUsRUFBakI7O0FBRUEsUUFBSSxLQUFLLEdBQUcsS0FBSyxJQUFMLENBQVUsR0FBVixDQUFjLE9BQWQsQ0FBWjs7QUFDQSxRQUFJLFFBQVEsR0FBRyxLQUFLLElBQUwsQ0FBVSxHQUFWLENBQWMsUUFBZCxDQUFmOztBQUVBLFFBQUksS0FBSixFQUFXO0FBQ1QsTUFBQSxHQUFHLENBQUMsSUFBSixDQUFTLEtBQVQ7QUFDRDs7QUFFRCxRQUFJLFFBQUosRUFBYztBQUNaLE1BQUEsR0FBRyxDQUFDLElBQUosQ0FBUyxRQUFUO0FBQ0Q7O0FBRUQsV0FBTyxHQUFQO0FBQ0Q7O0FBdENPOztBQXNEVixPQUFNLFNBQVUsS0FBVixDQUFxQixRQUFyQixFQUEwRTtBQUM5RSxTQUFPLFFBQVEsQ0FBQyxJQUFJLE9BQUosRUFBRCxDQUFSLENBQXdCLEtBQXhCLEVBQVA7QUFDRDs7QUFFRCxNQUFNLE9BQU4sQ0FBYTtBQUFiLEVBQUEsV0FBQSxHQUFBO0FBQ0UsU0FBQSxNQUFBLEdBQXVFLElBQUksSUFBSixFQUF2RTtBQThFRDtBQTVFQzs7Ozs7QUFHVSxFQUFBLEtBQUssR0FBQTtBQUNiLFdBQU8sQ0FBQyxJQUFELEVBQU8sS0FBUCxLQUFpQixLQUFLLFFBQUwsQ0FBYyxJQUFJLENBQUMsSUFBbkIsRUFBeUIsS0FBSyxDQUFDLElBQS9CLEVBQXFDLElBQXJDLEVBQTJDLEtBQTNDLENBQXhCO0FBQ0Q7O0FBRU8sRUFBQSxRQUFRLENBQ2QsSUFEYyxFQUVkLEtBRmMsRUFFRztBQUVqQixRQUFJLE9BQU8sR0FBRyxLQUFLLE1BQUwsQ0FBWSxLQUFaLENBQWtCLElBQWxCLENBQWQ7O0FBRmlCLGNBSWpCLE1BQU0sQ0FDSixTQUFTLENBQUMsT0FBRCxDQURMLEVBRUoseUJBQXlCLElBQUksS0FBSyxLQUFLLGtDQUZuQyxDQUpXO0FBU2pCLFFBQUksUUFBUSxHQUFHLElBQUksUUFBSixDQUFhLE9BQWIsRUFBc0IsS0FBdEIsQ0FBNEIsS0FBNUIsQ0FBZjtBQVRpQixjQVdqQixNQUFNLENBQ0osUUFBUSxLQUFLLElBRFQsRUFFSix5QkFBeUIsSUFBSSxLQUFLLEtBQUssa0NBRm5DLENBWFc7QUFnQmpCLFdBQU8sUUFBUDtBQUNEOztBQXdDRCxFQUFBLElBQUksQ0FDRixJQURFLEVBRUYsS0FGRSxFQUdGO0FBQ0EsRUFBQSxRQUpFLEVBSXNDO0FBRXhDLFNBQUssTUFBTCxDQUFZLEdBQVosQ0FBZ0IsSUFBaEIsRUFBc0IsTUFBTSxJQUFJLElBQUosRUFBNUIsRUFBd0MsR0FBeEMsQ0FBNEMsS0FBNUMsRUFBbUQsUUFBbkQ7O0FBRUEsV0FBTyxJQUFQO0FBQ0Q7O0FBOUVVOztBQWlGYixTQUFTLFVBQVQsQ0FBb0IsSUFBcEIsRUFBb0M7QUFDbEMsVUFBUSxJQUFSO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDQSxTQUFBO0FBQUE7QUFBQTtBQUNBLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBTyxXQUFQOztBQUNGO0FBQ0UsYUFBTyxJQUFQO0FBTko7QUFRRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCwgaXNQcmVzZW50IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IENoYXJQb3NpdGlvbiwgSGJzUG9zaXRpb24sIEludmlzaWJsZVBvc2l0aW9uLCBPZmZzZXRLaW5kLCBQb3NpdGlvbkRhdGEgfSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIERTTCB1c2VkIGJ5IHNwYW4gYW5kIG9mZnNldCBpbiBwbGFjZXMgd2hlcmUgdGhleSBuZWVkIHRvIGV4aGF1c3RpdmVseVxuICogY29uc2lkZXIgYWxsIGNvbWJpbmF0aW9ucyBvZiBzdGF0ZXMgKEhhbmRsZWJhcnMgb2Zmc2V0cywgY2hhcmFjdGVyIG9mZnNldHMgYW5kIGludmlzaWJsZS9icm9rZW5cbiAqIG9mZnNldHMpLlxuICpcbiAqIEl0J3MgcHJvYmFibHkgb3ZlcmtpbGwsIGJ1dCBpdCBtYWtlcyB0aGUgY29kZSB0aGF0IHVzZXMgaXQgY2xlYXIuIEl0IGNvdWxkIGJlIHJlZmFjdG9yZWQgb3JcbiAqIHJlbW92ZWQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1hdGNoQW55ID0gJ01BVENIX0FOWSc7XG5leHBvcnQgdHlwZSBNYXRjaEFueSA9ICdNQVRDSF9BTlknO1xuXG50eXBlIE1hdGNoZXMgPVxuICB8ICdDaGFyLEhicydcbiAgfCAnSGJzLENoYXInXG4gIHwgJ0hicyxIYnMnXG4gIHwgJ0NoYXIsQ2hhcidcbiAgfCAnSW52aXNpYmxlLEFueSdcbiAgfCAnQW55LEludmlzaWJsZSc7XG5cbmV4cG9ydCBjb25zdCBJc0ludmlzaWJsZSA9ICdJU19JTlZJU0lCTEUnO1xuZXhwb3J0IHR5cGUgSXNJbnZpc2libGUgPSAnSVNfSU5WSVNJQkxFJztcblxudHlwZSBQYXR0ZXJuID0gT2Zmc2V0S2luZCB8IElzSW52aXNpYmxlIHwgTWF0Y2hBbnk7XG5cbmNsYXNzIFdoZW5MaXN0PE91dD4ge1xuICBfd2hlbnM6IFdoZW48T3V0PltdO1xuXG4gIGNvbnN0cnVjdG9yKHdoZW5zOiBXaGVuPE91dD5bXSkge1xuICAgIHRoaXMuX3doZW5zID0gd2hlbnM7XG4gIH1cblxuICBmaXJzdChraW5kOiBPZmZzZXRLaW5kKTogT3V0IHwgbnVsbCB7XG4gICAgZm9yIChsZXQgd2hlbiBvZiB0aGlzLl93aGVucykge1xuICAgICAgbGV0IHZhbHVlID0gd2hlbi5tYXRjaChraW5kKTtcbiAgICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVswXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jbGFzcyBXaGVuPE91dD4ge1xuICBfbWFwOiBNYXA8UGF0dGVybiwgT3V0PiA9IG5ldyBNYXAoKTtcblxuICBnZXQocGF0dGVybjogUGF0dGVybiwgb3I6ICgpID0+IE91dCk6IE91dCB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5fbWFwLmdldChwYXR0ZXJuKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gb3IoKTtcblxuICAgIHRoaXMuX21hcC5zZXQocGF0dGVybiwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRkKHBhdHRlcm46IFBhdHRlcm4sIG91dDogT3V0KTogdm9pZCB7XG4gICAgdGhpcy5fbWFwLnNldChwYXR0ZXJuLCBvdXQpO1xuICB9XG5cbiAgbWF0Y2goa2luZDogT2Zmc2V0S2luZCk6IE91dFtdIHtcbiAgICBsZXQgcGF0dGVybiA9IHBhdHRlcm5Gb3Ioa2luZCk7XG5cbiAgICBsZXQgb3V0OiBPdXRbXSA9IFtdO1xuXG4gICAgbGV0IGV4YWN0ID0gdGhpcy5fbWFwLmdldChwYXR0ZXJuKTtcbiAgICBsZXQgZmFsbGJhY2sgPSB0aGlzLl9tYXAuZ2V0KE1hdGNoQW55KTtcblxuICAgIGlmIChleGFjdCkge1xuICAgICAgb3V0LnB1c2goZXhhY3QpO1xuICAgIH1cblxuICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgb3V0LnB1c2goZmFsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxudHlwZSBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBJbiBleHRlbmRzIE1hdGNoZXMsIFJlbW92ZWQgZXh0ZW5kcyBNYXRjaGVzPiA9IEV4Y2x1ZGU8XG4gIEluLFxuICBSZW1vdmVkXG4+IGV4dGVuZHMgbmV2ZXJcbiAgPyBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+XG4gIDogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8SW4sIFJlbW92ZWQ+PjtcblxuZXhwb3J0IHR5cGUgTWF0Y2hGbjxPdXQ+ID0gKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0O1xuXG5pbnRlcmZhY2UgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gIGNoZWNrKCk6IE1hdGNoRm48T3V0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoPE91dD4oY2FsbGJhY2s6IChtOiBNYXRjaGVyPE91dD4pID0+IEV4aGF1c3RpdmVNYXRjaGVyPE91dD4pOiBNYXRjaEZuPE91dD4ge1xuICByZXR1cm4gY2FsbGJhY2sobmV3IE1hdGNoZXIoKSkuY2hlY2soKTtcbn1cblxuY2xhc3MgTWF0Y2hlcjxPdXQsIE0gZXh0ZW5kcyBNYXRjaGVzID0gTWF0Y2hlcz4ge1xuICBfd2hlbnM6IFdoZW48V2hlbjwobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQ+PiA9IG5ldyBXaGVuKCk7XG5cbiAgLyoqXG4gICAqIFlvdSBkaWRuJ3QgZXhoYXVzdGl2ZWx5IG1hdGNoIGFsbCBwb3NzaWJpbGl0aWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNoZWNrKCk6IE1hdGNoRm48T3V0PiB7XG4gICAgcmV0dXJuIChsZWZ0LCByaWdodCkgPT4gdGhpcy5tYXRjaEZvcihsZWZ0LmtpbmQsIHJpZ2h0LmtpbmQpKGxlZnQsIHJpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hGb3IoXG4gICAgbGVmdDogT2Zmc2V0S2luZCxcbiAgICByaWdodDogT2Zmc2V0S2luZFxuICApOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQge1xuICAgIGxldCBuZXN0ZWRzID0gdGhpcy5fd2hlbnMubWF0Y2gobGVmdCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBpc1ByZXNlbnQobmVzdGVkcyksXG4gICAgICBgbm8gbWF0Y2ggZGVmaW5lZCBmb3IgKCR7bGVmdH0sICR7cmlnaHR9KSBhbmQgbm8gQW55TWF0Y2ggZGVmaW5lZCBlaXRoZXJgXG4gICAgKTtcblxuICAgIGxldCBjYWxsYmFjayA9IG5ldyBXaGVuTGlzdChuZXN0ZWRzKS5maXJzdChyaWdodCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBjYWxsYmFjayAhPT0gbnVsbCxcbiAgICAgIGBubyBtYXRjaCBkZWZpbmVkIGZvciAoJHtsZWZ0fSwgJHtyaWdodH0pIGFuZCBubyBBbnlNYXRjaCBkZWZpbmVkIGVpdGhlcmBcbiAgICApO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9XG5cbiAgLy8gVGhpcyBiaWcgYmxvY2sgaXMgdGhlIGJ1bGsgb2YgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gdGhpcyBmaWxlLiBJdCBmYWNpbGl0YXRlcyBleGhhdXN0aXZlbmVzc1xuICAvLyBjaGVja2luZyBzbyB0aGF0IG1hdGNoZXJzIGNhbiBlbnN1cmUgdGhleSd2ZSBhY3R1YWxseSBjb3ZlcmVkIGFsbCB0aGUgY2FzZXMgKGFuZCBUeXBlU2NyaXB0XG4gIC8vIHdpbGwgdHJlYXQgaXQgYXMgYW4gZXhoYXVzdGl2ZSBtYXRjaCkuXG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBDaGFyUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdDaGFyLEhicyc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBDaGFyUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnSGJzLENoYXInPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdIYnMsSGJzJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogQ2hhclBvc2l0aW9uLCByaWdodDogQ2hhclBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0NoYXIsQ2hhcic+O1xuICB3aGVuKFxuICAgIGxlZnQ6IElzSW52aXNpYmxlLFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IEludmlzaWJsZVBvc2l0aW9uLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8TSwgJ0ludmlzaWJsZSxBbnknPj47XG4gIHdoZW4oXG4gICAgbGVmdDogTWF0Y2hBbnksXG4gICAgcmlnaHQ6IElzSW52aXNpYmxlLFxuICAgIGNhbGxiYWNrOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogSW52aXNpYmxlUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQW55LEludmlzaWJsZSc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE1hdGNoQW55LFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVNYXRjaGVyPE91dD47XG4gIHdoZW4oXG4gICAgbGVmdDogUGF0dGVybixcbiAgICByaWdodDogUGF0dGVybixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNhbGxiYWNrOiAobGVmdDogYW55LCByaWdodDogYW55KSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIE1hdGNoZXM+IHwgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gICAgdGhpcy5fd2hlbnMuZ2V0KGxlZnQsICgpID0+IG5ldyBXaGVuKCkpLmFkZChyaWdodCwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGF0dGVybkZvcihraW5kOiBPZmZzZXRLaW5kKTogUGF0dGVybiB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgT2Zmc2V0S2luZC5Ccm9rZW46XG4gICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICBjYXNlIE9mZnNldEtpbmQuTm9uRXhpc3RlbnQ6XG4gICAgICByZXR1cm4gSXNJbnZpc2libGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBraW5kO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

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

var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPos, _charPos; // eslint-disable-next-line import/no-extraneous-dependencies
// eslint-disable-next-line import/no-extraneous-dependencies
import { UNKNOWN_POSITION } from '../location';

@@ -155,3 +136,3 @@ import { match, MatchAny } from './match';

_locPos.set(this, null);
this._locPos = null;
}

@@ -203,3 +184,3 @@ /**

toHbsPos() {
let locPos = __classPrivateFieldGet(this, _locPos);
let locPos = this._locPos;

@@ -210,5 +191,5 @@ if (locPos === null) {

if (hbsPos === null) {
__classPrivateFieldSet(this, _locPos, locPos = BROKEN);
this._locPos = locPos = BROKEN;
} else {
__classPrivateFieldSet(this, _locPos, locPos = new HbsPosition(this.source, hbsPos, this.charPos));
this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);
}

@@ -221,3 +202,2 @@ }

}
_locPos = new WeakMap();
export class HbsPosition {

@@ -230,6 +210,3 @@ constructor(source, hbsPos, charPos = null) {

;
_charPos.set(this, void 0);
__classPrivateFieldSet(this, _charPos, charPos === null ? null : new CharPosition(source, charPos));
this._charPos = charPos === null ? null : new CharPosition(source, charPos);
}

@@ -247,3 +224,3 @@ /**

toCharPos() {
let charPos = __classPrivateFieldGet(this, _charPos);
let charPos = this._charPos;

@@ -254,5 +231,5 @@ if (charPos === null) {

if (charPosNumber === null) {
__classPrivateFieldSet(this, _charPos, charPos = BROKEN);
this._charPos = charPos = BROKEN;
} else {
__classPrivateFieldSet(this, _charPos, charPos = new CharPosition(this.source, charPosNumber));
this._charPos = charPos = new CharPosition(this.source, charPosNumber);
}

@@ -290,3 +267,2 @@ }

}
_charPos = new WeakMap();
export class InvisiblePosition {

@@ -371,2 +347,2 @@ constructor(kind, // whatever was provided, possibly broken

}).when(MatchAny, MatchAny, () => false));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBQUE7OztBQUNBLFNBQXlCLGdCQUF6QixRQUFpRCxhQUFqRDtBQUVBLFNBQVMsS0FBVCxFQUFnQixRQUFoQixRQUFnQyxTQUFoQztBQUNBLFNBQXFCLElBQXJCLFFBQWlDLFFBQWpDO0FBNENBOzs7Ozs7QUFLQSxPQUFPLE1BQU0sTUFBTSxHQUFHLFFBQWY7QUFLUDs7Ozs7Ozs7Ozs7QUFVQSxPQUFNLE1BQU8sWUFBUCxDQUFtQjtBQW1CdkIsRUFBQSxXQUFBLENBQXFCLElBQXJCLEVBQXFEO0FBQWhDLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0M7QUFsQnpEOzs7Ozs7O0FBS0EsU0FBTyxTQUFQLENBQWlCLE1BQWpCLEVBQWlDLEdBQWpDLEVBQW9EO0FBQ2xELFdBQU8sSUFBSSxXQUFKLENBQWdCLE1BQWhCLEVBQXdCLEdBQXhCLEVBQTZCLElBQTdCLEVBQW1DLElBQW5DLEVBQVA7QUFDRDtBQUVEOzs7Ozs7O0FBS0EsU0FBTyxNQUFQLENBQWMsR0FBQSxHQUFzQixnQkFBcEMsRUFBb0Q7QUFDbEQsV0FBTyxJQUFJLGlCQUFKLENBQXFCO0FBQUE7QUFBckIsTUFBeUMsR0FBekMsRUFBOEMsSUFBOUMsRUFBUDtBQUNEO0FBSUQ7Ozs7O0FBR0EsTUFBSSxNQUFKLEdBQVU7QUFDUixRQUFJLE9BQU8sR0FBRyxLQUFLLElBQUwsQ0FBVSxTQUFWLEVBQWQ7QUFDQSxXQUFPLE9BQU8sS0FBSyxJQUFaLEdBQW1CLElBQW5CLEdBQTBCLE9BQU8sQ0FBQyxNQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7Ozs7O0FBU0EsRUFBQSxHQUFHLENBQUMsS0FBRCxFQUFvQjtBQUNyQixXQUFPLEdBQUcsQ0FBQyxLQUFLLElBQU4sRUFBWSxLQUFLLENBQUMsSUFBbEIsQ0FBVjtBQUNEO0FBRUQ7Ozs7OztBQUlBLEVBQUEsS0FBSyxDQUFDLEtBQUQsRUFBb0I7QUFDdkIsV0FBTyxJQUFJLENBQUMsS0FBSyxJQUFOLEVBQVksS0FBSyxDQUFDLElBQWxCLENBQVg7QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLEVBQUEsSUFBSSxDQUFDLEVBQUQsRUFBVztBQUNiLFFBQUksT0FBTyxHQUFHLEtBQUssSUFBTCxDQUFVLFNBQVYsRUFBZDs7QUFFQSxRQUFJLE9BQU8sS0FBSyxJQUFoQixFQUFzQjtBQUNwQixhQUFPLFlBQVksQ0FBQyxNQUFiLEVBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBUixHQUFpQixFQUE5Qjs7QUFFQSxVQUFJLE9BQU8sQ0FBQyxNQUFSLENBQWUsS0FBZixDQUFxQixNQUFyQixDQUFKLEVBQWtDO0FBQ2hDLGVBQU8sSUFBSSxZQUFKLENBQWlCLE9BQU8sQ0FBQyxNQUF6QixFQUFpQyxNQUFqQyxFQUF5QyxJQUF6QyxFQUFQO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsZUFBTyxZQUFZLENBQUMsTUFBYixFQUFQO0FBQ0Q7QUFDRjtBQUNGO0FBRUQ7Ozs7OztBQUlBLEVBQUEsU0FBUyxHQUFBO0FBQ1AsV0FBTyxJQUFJLENBQUMsS0FBSyxJQUFOLEVBQVksS0FBSyxJQUFqQixDQUFYO0FBQ0Q7QUFFRDs7Ozs7O0FBSUEsRUFBQSxNQUFNLEdBQUE7QUFDSixXQUFPLEtBQUssSUFBTCxDQUFVLE1BQVYsRUFBUDtBQUNEOztBQXpGc0I7QUE0RnpCLE9BQU0sTUFBTyxZQUFQLENBQW1CO0FBTXZCLEVBQUEsV0FBQSxDQUFxQixNQUFyQixFQUE4QyxPQUE5QyxFQUE2RDtBQUF4QyxTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQXlCLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFMckMsU0FBQSxJQUFBLEdBQUk7QUFBQTtBQUFKO0FBRVQ7O0FBQ0EsSUFBQSxPQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBdUMsSUFBdkM7QUFFaUU7QUFFakU7Ozs7Ozs7OztBQU9BLEVBQUEsU0FBUyxHQUFBO0FBQ1AsV0FBTyxJQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7QUFNQSxFQUFBLE1BQU0sR0FBQTtBQUNKLFFBQUksR0FBRyxHQUFHLEtBQUssUUFBTCxFQUFWO0FBQ0EsV0FBTyxHQUFHLEtBQUssSUFBUixHQUFlLGdCQUFmLEdBQWtDLEdBQUcsQ0FBQyxNQUFKLEVBQXpDO0FBQ0Q7O0FBRUQsRUFBQSxJQUFJLEdBQUE7QUFDRixXQUFPLElBQUksWUFBSixDQUFpQixJQUFqQixDQUFQO0FBQ0Q7QUFFRDs7Ozs7QUFHQSxNQUFJLE1BQUosR0FBVTtBQUNSLFdBQU8sS0FBSyxPQUFaO0FBQ0Q7QUFFRDs7Ozs7Ozs7QUFNQSxFQUFBLFFBQVEsR0FBQTtBQUNOLFFBQUksTUFBTSxHQUFBLHNCQUFBLENBQUEsSUFBQSxFQUFBLE9BQUEsQ0FBVjs7QUFFQSxRQUFJLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQ25CLFVBQUksTUFBTSxHQUFHLEtBQUssTUFBTCxDQUFZLFNBQVosQ0FBc0IsS0FBSyxPQUEzQixDQUFiOztBQUVBLFVBQUksTUFBTSxLQUFLLElBQWYsRUFBcUI7QUFDbkIsUUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBSSxPQUFKLEVBQWUsTUFBTSxHQUFHLE1BQXhCLENBQUE7QUFDRCxPQUZELE1BRU87QUFDTCxRQUFBLHNCQUFBLENBQUEsSUFBQSxFQUFJLE9BQUosRUFBZSxNQUFNLEdBQUcsSUFBSSxXQUFKLENBQWdCLEtBQUssTUFBckIsRUFBNkIsTUFBN0IsRUFBcUMsS0FBSyxPQUExQyxDQUF4QixDQUFBO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLE1BQU0sS0FBSyxNQUFYLEdBQW9CLElBQXBCLEdBQTJCLE1BQWxDO0FBQ0Q7O0FBN0RzQjs7QUFnRXpCLE9BQU0sTUFBTyxXQUFQLENBQWtCO0FBS3RCLEVBQUEsV0FBQSxDQUNXLE1BRFgsRUFFVyxNQUZYLEVBR0UsT0FBQSxHQUF5QixJQUgzQixFQUcrQjtBQUZwQixTQUFBLE1BQUEsR0FBQSxNQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQU5GLFNBQUEsSUFBQSxHQUFJO0FBQUE7QUFBSjs7QUFFVCxJQUFBLFFBQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQTs7QUFPRSxJQUFBLHNCQUFBLENBQUEsSUFBQSxFQUFJLFFBQUosRUFBZ0IsT0FBTyxLQUFLLElBQVosR0FBbUIsSUFBbkIsR0FBMEIsSUFBSSxZQUFKLENBQWlCLE1BQWpCLEVBQXlCLE9BQXpCLENBQTFDLENBQUE7QUFDRDtBQUVEOzs7Ozs7Ozs7O0FBUUEsRUFBQSxTQUFTLEdBQUE7QUFDUCxRQUFJLE9BQU8sR0FBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxRQUFBLENBQVg7O0FBRUEsUUFBSSxPQUFPLEtBQUssSUFBaEIsRUFBc0I7QUFDcEIsVUFBSSxhQUFhLEdBQUcsS0FBSyxNQUFMLENBQVksVUFBWixDQUF1QixLQUFLLE1BQTVCLENBQXBCOztBQUVBLFVBQUksYUFBYSxLQUFLLElBQXRCLEVBQTRCO0FBQzFCLFFBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUksUUFBSixFQUFnQixPQUFPLEdBQUcsTUFBMUIsQ0FBQTtBQUNELE9BRkQsTUFFTztBQUNMLFFBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUksUUFBSixFQUFnQixPQUFPLEdBQUcsSUFBSSxZQUFKLENBQWlCLEtBQUssTUFBdEIsRUFBOEIsYUFBOUIsQ0FBMUIsQ0FBQTtBQUNEO0FBQ0Y7O0FBRUQsV0FBTyxPQUFPLEtBQUssTUFBWixHQUFxQixJQUFyQixHQUE0QixPQUFuQztBQUNEO0FBRUQ7Ozs7Ozs7O0FBTUEsRUFBQSxNQUFNLEdBQUE7QUFDSixXQUFPLEtBQUssTUFBWjtBQUNEOztBQUVELEVBQUEsSUFBSSxHQUFBO0FBQ0YsV0FBTyxJQUFJLFlBQUosQ0FBaUIsSUFBakIsQ0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7QUFLQSxFQUFBLFFBQVEsR0FBQTtBQUNOLFdBQU8sSUFBUDtBQUNEOztBQTFEcUI7O0FBNkR4QixPQUFNLE1BQU8saUJBQVAsQ0FBd0I7QUFDNUIsRUFBQSxXQUFBLENBQ1csSUFEWCxFQUVFO0FBQ1MsRUFBQSxHQUhYLEVBRzhCO0FBRm5CLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFFQSxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBQ1A7QUFFSjs7Ozs7QUFHQSxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sSUFBUDtBQUNEO0FBRUQ7Ozs7Ozs7OztBQU9BLEVBQUEsTUFBTSxHQUFBO0FBQ0osV0FBTyxLQUFLLEdBQVo7QUFDRDs7QUFFRCxFQUFBLElBQUksR0FBQTtBQUNGLFdBQU8sSUFBSSxZQUFKLENBQWlCLElBQWpCLENBQVA7QUFDRDs7QUFFRCxNQUFJLE1BQUosR0FBVTtBQUNSLFdBQU8sSUFBUDtBQUNEOztBQS9CMkI7QUFrQzlCOzs7Ozs7QUFLQSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQVcsQ0FBRCxJQUN6QixDQUFDLENBQ0UsSUFESCxDQUNPO0FBQUE7QUFEUCxFQUNPO0FBQUE7QUFEUCxFQUlJLENBQUM7QUFBRSxFQUFBLE1BQU0sRUFBRTtBQUFWLENBQUQsRUFBbUI7QUFBRSxFQUFBLE1BQU0sRUFBRTtBQUFWLENBQW5CLEtBQ0UsSUFBSSxDQUFDLE1BQUwsS0FBZ0IsS0FBSyxDQUFDLE1BQXRCLElBQWdDLElBQUksQ0FBQyxJQUFMLEtBQWMsS0FBSyxDQUFDLElBTDFELEVBT0csSUFQSCxDQU9PO0FBQUE7QUFQUCxFQU9PO0FBQUE7QUFQUCxFQVVJLENBQUM7QUFBRSxFQUFBLE9BQU8sRUFBRTtBQUFYLENBQUQsRUFBb0I7QUFBRSxFQUFBLE9BQU8sRUFBRTtBQUFYLENBQXBCLEtBQTJDLElBQUksS0FBSyxLQVZ4RCxFQVlHLElBWkgsQ0FZTztBQUFBO0FBWlAsRUFZTztBQUFBO0FBWlAsRUFlSSxDQUFDO0FBQUUsRUFBQSxNQUFNLEVBQUU7QUFBVixDQUFELEVBQW1CLEtBQW5CLEtBQTRCO0FBQUEsTUFBQSxFQUFBOztBQUFDLFNBQUEsSUFBSSxNQUFBLENBQUEsRUFBQSxHQUFLLEtBQUssQ0FBQyxTQUFOLEVBQUwsTUFBc0IsSUFBdEIsSUFBc0IsRUFBQSxLQUFBLEtBQUEsQ0FBdEIsR0FBc0IsS0FBQSxDQUF0QixHQUFzQixFQUFBLENBQUUsTUFBeEIsQ0FBSjtBQUFrQyxDQWZuRSxFQWlCRyxJQWpCSCxDQWlCTztBQUFBO0FBakJQLEVBaUJPO0FBQUE7QUFqQlAsRUFvQkksQ0FBQyxJQUFELEVBQU87QUFBRSxFQUFBLE1BQU0sRUFBRTtBQUFWLENBQVAsS0FBNEI7QUFBQSxNQUFBLEVBQUE7O0FBQUMsU0FBQSxDQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxTQUFMLEVBQUEsTUFBZ0IsSUFBaEIsSUFBZ0IsRUFBQSxLQUFBLEtBQUEsQ0FBaEIsR0FBZ0IsS0FBQSxDQUFoQixHQUFnQixFQUFBLENBQUUsTUFBbEIsTUFBNkIsS0FBN0I7QUFBa0MsQ0FwQm5FLEVBc0JHLElBdEJILENBc0JRLFFBdEJSLEVBc0JrQixRQXRCbEIsRUFzQjRCLE1BQU0sS0F0QmxDLENBRGUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBTb3VyY2VQb3NpdGlvbiwgVU5LTk9XTl9QT1NJVElPTiB9IGZyb20gJy4uL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBtYXRjaCwgTWF0Y2hBbnkgfSBmcm9tICcuL21hdGNoJztcbmltcG9ydCB7IFNvdXJjZVNwYW4sIHNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPZmZzZXRLaW5kIHtcbiAgLyoqXG4gICAqIFdlIGhhdmUgYWxyZWFkeSBjb21wdXRlZCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoaXMgb2Zmc2V0IG9yIHNwYW4uXG4gICAqL1xuICBDaGFyUG9zaXRpb24gPSAnQ2hhclBvc2l0aW9uJyxcblxuICAvKipcbiAgICogVGhpcyBvZmZzZXQgb3Igc3BhbiB3YXMgaW5zdGFudGlhdGVkIHdpdGggYSBIYW5kbGViYXJzIFNvdXJjZVBvc2l0aW9uIG9yIFNvdXJjZUxvY2F0aW9uLiBJdHNcbiAgICogY2hhcmFjdGVyIHBvc2l0aW9uIHdpbGwgYmUgY29tcHV0ZWQgb24gZGVtYW5kLlxuICAgKi9cbiAgSGJzUG9zaXRpb24gPSAnSGJzUG9zaXRpb24nLFxuXG4gIC8qKlxuICAgKiBmb3IgKHJhcmUpIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIGlzIGNyZWF0ZWQgYnV0IHRoZXJlIHdhcyBubyBzb3VyY2UgbG9jYXRpb24gKGUuZy4gdGhlIG5hbWVcbiAgICogXCJkZWZhdWx0XCIgaW4gZGVmYXVsdCBibG9ja3Mgd2hlbiB0aGUgd29yZCBcImRlZmF1bHRcIiBuZXZlciBhcHBlYXJlZCBpbiBzb3VyY2UpLiBUaGlzIGlzIHVzZWRcbiAgICogYnkgdGhlIGludGVybmFscyB3aGVuIHRoZXJlIGlzIGEgbGVnaXRpbWF0ZSByZWFzb24gZm9yIHRoZSBpbnRlcm5hbHMgdG8gc3ludGhlc2l6ZSBhIG5vZGVcbiAgICogd2l0aCBubyBsb2NhdGlvbi5cbiAgICovXG4gIEludGVybmFsc1N5bnRoZXRpYyA9ICdJbnRlcm5hbHNTeW50aGV0aWMnLFxuICAvKipcbiAgICogRm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIHJlcHJlc2VudHMgemVybyBwYXJ0cyBvZiB0aGUgc291cmNlIChmb3IgZXhhbXBsZSwgZW1wdHkgYXJndW1lbnRzKS5cbiAgICogSW4gZ2VuZXJhbCwgd2UgYXR0ZW1wdCB0byBhc3NpZ24gdGhlc2Ugbm9kZXMgKnNvbWUqIHBvc2l0aW9uIChlbXB0eSBhcmd1bWVudHMgY2FuIGJlXG4gICAqIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNhbGxlZSksIGJ1dCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGVcbiAgICovXG4gIE5vbkV4aXN0ZW50ID0gJ05vbkV4aXN0ZW50JyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgc291cmNlIGxvY2F0aW9uIHdhcyBleHBlY3RlZCwgYnV0IGl0IGRpZG4ndCBjb3JyZXNwb25kIHRvIHRoZSBub2RlIGluXG4gICAqIHRoZSBzb3VyY2UuIFRoaXMgaGFwcGVucyBpZiBhIHBsdWdpbiBjcmVhdGVzIGJyb2tlbiBsb2NhdGlvbnMuXG4gICAqL1xuICBCcm9rZW4gPSAnQnJva2VuJyxcbn1cblxuLyoqXG4gKiBBbGwgcG9zaXRpb25zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uIE1vc3Qgbm90YWJseSwgYWxsIHRocmVlIGtpbmRzIG9mIHBvc2l0aW9ucyBjYW5cbiAqIG11c3QgYmUgYWJsZSB0byBhdHRlbXB0IHRvIGNvbnZlcnQgdGhlbXNlbHZlcyBpbnRvIHtAc2VlIENoYXJQb3NpdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZDtcbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGw7XG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdCB0byBjb252ZXJ0IGEgYFNvdXJjZVBvc2l0aW9uYCB0byBhIGNoYXJhY3RlciBvZmZzZXQgZmFpbGVkLiBJdFxuICogaXMgc2VwYXJhdGUgZnJvbSBgbnVsbGAgc28gdGhhdCBgbnVsbGAgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29tcHV0YXRpb24gd2Fzbid0IHlldFxuICogYXR0ZW1wdGVkIChhbmQgdGhlcmVmb3JlIHRvIGNhY2hlIHRoZSBmYWlsdXJlKVxuICovXG5leHBvcnQgY29uc3QgQlJPS0VOID0gJ0JST0tFTic7XG5leHBvcnQgdHlwZSBCUk9LRU4gPSAnQlJPS0VOJztcblxuZXhwb3J0IHR5cGUgQW55UG9zaXRpb24gPSBIYnNQb3NpdGlvbiB8IENoYXJQb3NpdGlvbiB8IEludmlzaWJsZVBvc2l0aW9uO1xuXG4vKipcbiAqIEEgYFNvdXJjZU9mZnNldGAgcmVwcmVzZW50cyBhIHNpbmdsZSBwb3NpdGlvbiBpbiB0aGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBiYWNraW5nIGRhdGEgZm9yIGBTb3VyY2VPZmZzZXRgIG9iamVjdHM6XG4gKlxuICogLSBgQ2hhclBvc2l0aW9uYCwgd2hpY2ggY29udGFpbnMgYSBjaGFyYWN0ZXIgb2Zmc2V0IGludG8gdGhlIHJhdyBzb3VyY2Ugc3RyaW5nXG4gKiAtIGBIYnNQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgYFNvdXJjZVBvc2l0aW9uYCBmcm9tIHRoZSBIYW5kbGViYXJzIEFTVCwgd2hpY2ggY2FuIGJlXG4gKiAgIGNvbnZlcnRlZCB0byBhIGBDaGFyUG9zaXRpb25gIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVBvc2l0aW9uYCwgd2hpY2ggcmVwcmVzZW50cyBhIHBvc2l0aW9uIG5vdCBpbiBzb3VyY2UgKEBzZWUge0ludmlzaWJsZVBvc2l0aW9ufSlcbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZU9mZnNldCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCBmcm9tIGEgSGFuZGxlYmFycyBgU291cmNlUG9zaXRpb25gLiBJdCdzIHN0b3JlZCBhcy1pcywgYW5kIGNvbnZlcnRlZFxuICAgKiBpbnRvIGEgY2hhcmFjdGVyIG9mZnNldCBvbiBkZW1hbmQsIHdoaWNoIGF2b2lkcyB1bm5lY2Vzc2FyaWx5IGNvbXB1dGluZyB0aGUgb2Zmc2V0IG9mIGV2ZXJ5XG4gICAqIGBTb3VyY2VMb2NhdGlvbmAsIGJ1dCBhbHNvIG1lYW5zIHRoYXQgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmBzIGFyZSBub3QgYWx3YXlzIGRldGVjdGVkLlxuICAgKi9cbiAgc3RhdGljIGZvckhic1Bvcyhzb3VyY2U6IFNvdXJjZSwgcG9zOiBTb3VyY2VQb3NpdGlvbik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIHBvcywgbnVsbCkud3JhcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBicm9rZW4gYFNvdXJjZVBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGF0IHRoZVxuICAgKiBjYWxsaW5nIGNvZGUgZGV0ZXJtaW5lZCAob3Iga25vd3MpIHRoYXQgdGhlIGBTb3VyY2VMb2NhdGlvbmAgZG9lc24ndCBjb3JyZXNwb25kIGNvcnJlY3RseSB0b1xuICAgKiBhbnkgcGFydCBvZiB0aGUgc291cmNlLlxuICAgKi9cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZVBvc2l0aW9uID0gVU5LTk9XTl9QT1NJVElPTik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbihPZmZzZXRLaW5kLkJyb2tlbiwgcG9zKS53cmFwKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYXRhOiBQb3NpdGlvbkRhdGEgJiBBbnlQb3NpdGlvbikge31cblxuICAvKipcbiAgICogR2V0IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZvciB0aGlzIGBTb3VyY2VPZmZzZXRgLCBpZiBwb3NzaWJsZS5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IG51bGwgPyBudWxsIDogY2hhclBvcy5vZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0aGlzIG9mZnNldCB3aXRoIGFub3RoZXIgb25lLlxuICAgKlxuICAgKiBJZiBib3RoIG9mZnNldHMgYXJlIGBIYnNQb3NpdGlvbmBzLCB0aGV5J3JlIGVxdWl2YWxlbnQgYXMgbG9uZyBhcyB0aGVpciBsaW5lcyBhbmQgY29sdW1ucyBhcmVcbiAgICogdGhlIHNhbWUuIFRoaXMgYXZvaWRzIGNvbXB1dGluZyBvZmZzZXRzIHVubmVjZXNzYXJpbHkuXG4gICAqXG4gICAqIE90aGVyd2lzZSwgdHdvIGBTb3VyY2VPZmZzZXRgcyBhcmUgZXF1aXZhbGVudCBpZiB0aGVpciBzdWNjZXNzZnVsbHkgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICogYXJlIHRoZSBzYW1lLlxuICAgKi9cbiAgZXFsKHJpZ2h0OiBTb3VyY2VPZmZzZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXFsKHRoaXMuZGF0YSwgcmlnaHQuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc3BhbiB0aGF0IHN0YXJ0cyBmcm9tIHRoaXMgc291cmNlIG9mZnNldCBhbmQgZW5kcyB3aXRoIGFub3RoZXIgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIGNoYXJhY3RlciBvZmZzZXRzIGlmIGJvdGggYFNvdXJjZU9mZnNldGBzIGFyZSBzdGlsbCBsYXp5LlxuICAgKi9cbiAgdW50aWwob3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgb3RoZXIuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgYnkgbW92aW5nIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gcmVwcmVzZW50ZWQgYnkgdGhpcyBzb3VyY2Ugb2Zmc2V0XG4gICAqIGZvcndhcmQgb3IgYmFja3dhcmQgKGlmIGBieWAgaXMgbmVnYXRpdmUpLCBpZiBwb3NzaWJsZS5cbiAgICpcbiAgICogSWYgdGhpcyBgU291cmNlT2Zmc2V0YCBjYW4ndCBjb21wdXRlIGEgdmFsaWQgY2hhcmFjdGVyIG9mZnNldCwgYG1vdmVgIHJldHVybnMgYSBicm9rZW4gb2Zmc2V0LlxuICAgKlxuICAgKiBJZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBvZmZzZXQgaXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBzb3VyY2UsIGBtb3ZlYFxuICAgKiByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICovXG4gIG1vdmUoYnk6IG51bWJlcik6IFNvdXJjZU9mZnNldCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFNvdXJjZU9mZnNldC5icm9rZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlc3VsdCA9IGNoYXJQb3Mub2Zmc2V0ICsgYnk7XG5cbiAgICAgIGlmIChjaGFyUG9zLnNvdXJjZS5jaGVjayhyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hhclBvc2l0aW9uKGNoYXJQb3Muc291cmNlLCByZXN1bHQpLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgdGhhdCByZXByZXNlbnRzIGEgY29sbGFwc2VkIHJhbmdlIGF0IHRoaXMgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGNvbXB1dGVkLlxuICAgKi9cbiAgY29sbGFwc2VkKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgdGhpcy5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgYFNvdXJjZU9mZnNldGAgaW50byBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciBjb21wYXRpYmlsaXR5IHdpdGhcbiAgICogZXhpc3RpbmcgcGx1Z2lucy5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50b0pTT04oKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhclBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gIC8qKiBDb21wdXRlZCBmcm9tIGNoYXIgb2Zmc2V0ICovXG4gICNsb2NQb3M6IEhic1Bvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc291cmNlOiBTb3VyY2UsIHJlYWRvbmx5IGNoYXJQb3M6IG51bWJlcikge31cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGEgYENoYXJQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIEhic1Bvc2l0aW9ufSBmb3IgdGhlIGFsdGVybmF0aXZlLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciB0aGlzIGBDaGFyUG9zaXRpb25gLiBJZiB0aGlzIGBDaGFyUG9zaXRpb25gIHdhc1xuICAgKiBjb21wdXRlZCB1c2luZyB7QHNlZSBTb3VyY2VPZmZzZXQjbW92ZX0sIHRoaXMgd2lsbCBjb21wdXRlIHRoZSBgU291cmNlUG9zaXRpb25gIGZvciB0aGUgb2Zmc2V0LlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICBsZXQgaGJzID0gdGhpcy50b0hic1BvcygpO1xuICAgIHJldHVybiBoYnMgPT09IG51bGwgPyBVTktOT1dOX1BPU0lUSU9OIDogaGJzLnRvSlNPTigpO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYENoYXJQb3NpdGlvbmAgYWx3YXlzIGhhcyBhbiBvZmZzZXQgaXQgY2FuIHByb2R1Y2Ugd2l0aG91dCBhbnkgYWRkaXRpb25hbCBjb21wdXRhdGlvbi5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIG9mZnNldCB0byBhbiBgSGJzUG9zaXRpb25gLCBpZiBpdCB3YXMgbm90IGFscmVhZHkgY29tcHV0ZWQuIE9uY2VcbiAgICogYSBgQ2hhclBvc2l0aW9uYCBoYXMgY29tcHV0ZWQgaXRzIGBIYnNQb3NpdGlvbmAsIGl0IHdpbGwgbm90IG5lZWQgdG8gZG8gY29tcHV0ZSBpdCBhZ2FpbiwgYW5kXG4gICAqIHRoZSBzYW1lIGBDaGFyUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvXG4gICAqIGNvbXB1dGluZyB0aGUgYEhic1Bvc2l0aW9uYCBzaG91bGQgYmUgYSBvbmUtdGltZSBvcGVyYXRpb24uXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3MgPSB0aGlzLiNsb2NQb3M7XG5cbiAgICBpZiAobG9jUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgaGJzUG9zID0gdGhpcy5zb3VyY2UuaGJzUG9zRm9yKHRoaXMuY2hhclBvcyk7XG5cbiAgICAgIGlmIChoYnNQb3MgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jbG9jUG9zID0gbG9jUG9zID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jbG9jUG9zID0gbG9jUG9zID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBoYnNQb3MsIHRoaXMuY2hhclBvcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY1BvcyA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1BvcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcblxuICAjY2hhclBvczogQ2hhclBvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3M6IFNvdXJjZVBvc2l0aW9uLFxuICAgIGNoYXJQb3M6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuI2NoYXJQb3MgPSBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBjaGFyUG9zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgY29tcHV0ZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSB7QHNlZSBTb3VyY2VQb3NpdGlvbn0uIE9uY2UgYW4gYEhic1Bvc2l0aW9uYCBoYXNcbiAgICogY29tcHV0ZWQgaXRzIGBDaGFyUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZCB0aGUgc2FtZVxuICAgKiBgSGJzUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvIGNvbXB1dGluZyB0aGVcbiAgICogYENoYXJQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy4jY2hhclBvcztcblxuICAgIGlmIChjaGFyUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgY2hhclBvc051bWJlciA9IHRoaXMuc291cmNlLmNoYXJQb3NGb3IodGhpcy5oYnNQb3MpO1xuXG4gICAgICBpZiAoY2hhclBvc051bWJlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLiNjaGFyUG9zID0gY2hhclBvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2NoYXJQb3MgPSBjaGFyUG9zID0gbmV3IENoYXJQb3NpdGlvbih0aGlzLnNvdXJjZSwgY2hhclBvc051bWJlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IEJST0tFTiA/IG51bGwgOiBjaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUge0BzZWUgU291cmNlUG9zaXRpb259IHRoYXQgdGhpcyBgSGJzUG9zaXRpb25gIHdhcyBpbnN0YW50aWF0ZWQgd2l0aC4gVGhpcyBvcGVyYXRpb25cbiAgICogZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIGFueXRoaW5nLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3M7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VPZmZzZXQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGFuIGBIYnNQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIENoYXJQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIHRvSGJzUG9zKCk6IEhic1Bvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kLkJyb2tlbiB8IE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudCxcbiAgICAvLyB3aGF0ZXZlciB3YXMgcHJvdmlkZWQsIHBvc3NpYmx5IGJyb2tlblxuICAgIHJlYWRvbmx5IHBvczogU291cmNlUG9zaXRpb25cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBBIGJyb2tlbiBwb3NpdGlvbiBjYW5ub3QgYmUgdHVybmVkIGludG8gYSB7QHNlZSBDaGFyYWN0ZXJQb3NpdGlvbn0uXG4gICAqL1xuICB0b0NoYXJQb3MoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlcmlhbGl6YXRpb24gb2YgYW4gYEludmlzaWJsZVBvc2l0aW9uIGlzIHdoYXRldmVyIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IHdhc1xuICAgKiBvcmlnaW5hbGx5IGlkZW50aWZpZWQgYXMgYnJva2VuLCBub24tZXhpc3RlbnQgb3Igc3ludGhldGljLlxuICAgKlxuICAgKiBJZiBhbiBgSW52aXNpYmxlUG9zaXRpb25gIG5ldmVyIGhhZCBhbiBzb3VyY2Ugb2Zmc2V0IGF0IGFsbCwgdGhpcyBtZXRob2QgcmV0dXJuc1xuICAgKiB7QHNlZSBVTktOT1dOX1BPU0lUSU9OfSBmb3IgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgZ2V0IG9mZnNldCgpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHtAc2VlIEFueVBvc2l0aW9ufSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhleSBhcmUgZXF1YWwuXG4gKlxuICogQHNlZSB7U291cmNlT2Zmc2V0I2VxbH1cbiAqL1xuY29uc3QgZXFsID0gbWF0Y2g8Ym9vbGVhbj4oKG0pID0+XG4gIG1cbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgaGJzUG9zOiBsZWZ0IH0sIHsgaGJzUG9zOiByaWdodCB9KSA9PlxuICAgICAgICBsZWZ0LmNvbHVtbiA9PT0gcmlnaHQuY29sdW1uICYmIGxlZnQubGluZSA9PT0gcmlnaHQubGluZVxuICAgIClcbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAoeyBjaGFyUG9zOiBsZWZ0IH0sIHsgY2hhclBvczogcmlnaHQgfSkgPT4gbGVmdCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICAoeyBvZmZzZXQ6IGxlZnQgfSwgcmlnaHQpID0+IGxlZnQgPT09IHJpZ2h0LnRvQ2hhclBvcygpPy5vZmZzZXRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAobGVmdCwgeyBvZmZzZXQ6IHJpZ2h0IH0pID0+IGxlZnQudG9DaGFyUG9zKCk/Lm9mZnNldCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oTWF0Y2hBbnksIE1hdGNoQW55LCAoKSA9PiBmYWxzZSlcbik7XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxTQUF5QixnQkFBekIsUUFBaUQsYUFBakQ7QUFFQSxTQUFTLEtBQVQsRUFBZ0IsUUFBaEIsUUFBZ0MsU0FBaEM7QUFDQSxTQUFxQixJQUFyQixRQUFpQyxRQUFqQztBQTRDQTs7Ozs7O0FBS0EsT0FBTyxNQUFNLE1BQU0sR0FBRyxRQUFmO0FBS1A7Ozs7Ozs7Ozs7O0FBVUEsT0FBTSxNQUFPLFlBQVAsQ0FBbUI7QUFtQnZCLEVBQUEsV0FBQSxDQUFxQixJQUFyQixFQUFxRDtBQUFoQyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9DO0FBbEJ6RDs7Ozs7OztBQUtBLFNBQU8sU0FBUCxDQUFpQixNQUFqQixFQUFpQyxHQUFqQyxFQUFvRDtBQUNsRCxXQUFPLElBQUksV0FBSixDQUFnQixNQUFoQixFQUF3QixHQUF4QixFQUE2QixJQUE3QixFQUFtQyxJQUFuQyxFQUFQO0FBQ0Q7QUFFRDs7Ozs7OztBQUtBLFNBQU8sTUFBUCxDQUFjLEdBQUEsR0FBc0IsZ0JBQXBDLEVBQW9EO0FBQ2xELFdBQU8sSUFBSSxpQkFBSixDQUFxQjtBQUFBO0FBQXJCLE1BQXlDLEdBQXpDLEVBQThDLElBQTlDLEVBQVA7QUFDRDtBQUlEOzs7OztBQUdBLE1BQUksTUFBSixHQUFVO0FBQ1IsUUFBSSxPQUFPLEdBQUcsS0FBSyxJQUFMLENBQVUsU0FBVixFQUFkO0FBQ0EsV0FBTyxPQUFPLEtBQUssSUFBWixHQUFtQixJQUFuQixHQUEwQixPQUFPLENBQUMsTUFBekM7QUFDRDtBQUVEOzs7Ozs7Ozs7OztBQVNBLEVBQUEsR0FBRyxDQUFDLEtBQUQsRUFBb0I7QUFDckIsV0FBTyxHQUFHLENBQUMsS0FBSyxJQUFOLEVBQVksS0FBSyxDQUFDLElBQWxCLENBQVY7QUFDRDtBQUVEOzs7Ozs7QUFJQSxFQUFB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aEIsSUFBZ0IsRUFBQSxLQUFBLEtBQUEsQ0FBaEIsR0FBZ0IsS0FBQSxDQUFoQixHQUFnQixFQUFBLENBQUUsTUFBbEIsTUFBNkIsS0FBN0I7QUFBa0MsQ0FwQm5FLEVBc0JHLElBdEJILENBc0JRLFFBdEJSLEVBc0JrQixRQXRCbEIsRUFzQjRCLE1BQU0sS0F0QmxDLENBRGUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBTb3VyY2VQb3NpdGlvbiwgVU5LTk9XTl9QT1NJVElPTiB9IGZyb20gJy4uL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBtYXRjaCwgTWF0Y2hBbnkgfSBmcm9tICcuL21hdGNoJztcbmltcG9ydCB7IFNvdXJjZVNwYW4sIHNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPZmZzZXRLaW5kIHtcbiAgLyoqXG4gICAqIFdlIGhhdmUgYWxyZWFkeSBjb21wdXRlZCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoaXMgb2Zmc2V0IG9yIHNwYW4uXG4gICAqL1xuICBDaGFyUG9zaXRpb24gPSAnQ2hhclBvc2l0aW9uJyxcblxuICAvKipcbiAgICogVGhpcyBvZmZzZXQgb3Igc3BhbiB3YXMgaW5zdGFudGlhdGVkIHdpdGggYSBIYW5kbGViYXJzIFNvdXJjZVBvc2l0aW9uIG9yIFNvdXJjZUxvY2F0aW9uLiBJdHNcbiAgICogY2hhcmFjdGVyIHBvc2l0aW9uIHdpbGwgYmUgY29tcHV0ZWQgb24gZGVtYW5kLlxuICAgKi9cbiAgSGJzUG9zaXRpb24gPSAnSGJzUG9zaXRpb24nLFxuXG4gIC8qKlxuICAgKiBmb3IgKHJhcmUpIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIGlzIGNyZWF0ZWQgYnV0IHRoZXJlIHdhcyBubyBzb3VyY2UgbG9jYXRpb24gKGUuZy4gdGhlIG5hbWVcbiAgICogXCJkZWZhdWx0XCIgaW4gZGVmYXVsdCBibG9ja3Mgd2hlbiB0aGUgd29yZCBcImRlZmF1bHRcIiBuZXZlciBhcHBlYXJlZCBpbiBzb3VyY2UpLiBUaGlzIGlzIHVzZWRcbiAgICogYnkgdGhlIGludGVybmFscyB3aGVuIHRoZXJlIGlzIGEgbGVnaXRpbWF0ZSByZWFzb24gZm9yIHRoZSBpbnRlcm5hbHMgdG8gc3ludGhlc2l6ZSBhIG5vZGVcbiAgICogd2l0aCBubyBsb2NhdGlvbi5cbiAgICovXG4gIEludGVybmFsc1N5bnRoZXRpYyA9ICdJbnRlcm5hbHNTeW50aGV0aWMnLFxuICAvKipcbiAgICogRm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBub2RlIHJlcHJlc2VudHMgemVybyBwYXJ0cyBvZiB0aGUgc291cmNlIChmb3IgZXhhbXBsZSwgZW1wdHkgYXJndW1lbnRzKS5cbiAgICogSW4gZ2VuZXJhbCwgd2UgYXR0ZW1wdCB0byBhc3NpZ24gdGhlc2Ugbm9kZXMgKnNvbWUqIHBvc2l0aW9uIChlbXB0eSBhcmd1bWVudHMgY2FuIGJlXG4gICAqIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNhbGxlZSksIGJ1dCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGVcbiAgICovXG4gIE5vbkV4aXN0ZW50ID0gJ05vbkV4aXN0ZW50JyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgc291cmNlIGxvY2F0aW9uIHdhcyBleHBlY3RlZCwgYnV0IGl0IGRpZG4ndCBjb3JyZXNwb25kIHRvIHRoZSBub2RlIGluXG4gICAqIHRoZSBzb3VyY2UuIFRoaXMgaGFwcGVucyBpZiBhIHBsdWdpbiBjcmVhdGVzIGJyb2tlbiBsb2NhdGlvbnMuXG4gICAqL1xuICBCcm9rZW4gPSAnQnJva2VuJyxcbn1cblxuLyoqXG4gKiBBbGwgcG9zaXRpb25zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uIE1vc3Qgbm90YWJseSwgYWxsIHRocmVlIGtpbmRzIG9mIHBvc2l0aW9ucyBjYW5cbiAqIG11c3QgYmUgYWJsZSB0byBhdHRlbXB0IHRvIGNvbnZlcnQgdGhlbXNlbHZlcyBpbnRvIHtAc2VlIENoYXJQb3NpdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZDtcbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGw7XG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbjtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdCB0byBjb252ZXJ0IGEgYFNvdXJjZVBvc2l0aW9uYCB0byBhIGNoYXJhY3RlciBvZmZzZXQgZmFpbGVkLiBJdFxuICogaXMgc2VwYXJhdGUgZnJvbSBgbnVsbGAgc28gdGhhdCBgbnVsbGAgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29tcHV0YXRpb24gd2Fzbid0IHlldFxuICogYXR0ZW1wdGVkIChhbmQgdGhlcmVmb3JlIHRvIGNhY2hlIHRoZSBmYWlsdXJlKVxuICovXG5leHBvcnQgY29uc3QgQlJPS0VOID0gJ0JST0tFTic7XG5leHBvcnQgdHlwZSBCUk9LRU4gPSAnQlJPS0VOJztcblxuZXhwb3J0IHR5cGUgQW55UG9zaXRpb24gPSBIYnNQb3NpdGlvbiB8IENoYXJQb3NpdGlvbiB8IEludmlzaWJsZVBvc2l0aW9uO1xuXG4vKipcbiAqIEEgYFNvdXJjZU9mZnNldGAgcmVwcmVzZW50cyBhIHNpbmdsZSBwb3NpdGlvbiBpbiB0aGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBiYWNraW5nIGRhdGEgZm9yIGBTb3VyY2VPZmZzZXRgIG9iamVjdHM6XG4gKlxuICogLSBgQ2hhclBvc2l0aW9uYCwgd2hpY2ggY29udGFpbnMgYSBjaGFyYWN0ZXIgb2Zmc2V0IGludG8gdGhlIHJhdyBzb3VyY2Ugc3RyaW5nXG4gKiAtIGBIYnNQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgYFNvdXJjZVBvc2l0aW9uYCBmcm9tIHRoZSBIYW5kbGViYXJzIEFTVCwgd2hpY2ggY2FuIGJlXG4gKiAgIGNvbnZlcnRlZCB0byBhIGBDaGFyUG9zaXRpb25gIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVBvc2l0aW9uYCwgd2hpY2ggcmVwcmVzZW50cyBhIHBvc2l0aW9uIG5vdCBpbiBzb3VyY2UgKEBzZWUge0ludmlzaWJsZVBvc2l0aW9ufSlcbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZU9mZnNldCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCBmcm9tIGEgSGFuZGxlYmFycyBgU291cmNlUG9zaXRpb25gLiBJdCdzIHN0b3JlZCBhcy1pcywgYW5kIGNvbnZlcnRlZFxuICAgKiBpbnRvIGEgY2hhcmFjdGVyIG9mZnNldCBvbiBkZW1hbmQsIHdoaWNoIGF2b2lkcyB1bm5lY2Vzc2FyaWx5IGNvbXB1dGluZyB0aGUgb2Zmc2V0IG9mIGV2ZXJ5XG4gICAqIGBTb3VyY2VMb2NhdGlvbmAsIGJ1dCBhbHNvIG1lYW5zIHRoYXQgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmBzIGFyZSBub3QgYWx3YXlzIGRldGVjdGVkLlxuICAgKi9cbiAgc3RhdGljIGZvckhic1Bvcyhzb3VyY2U6IFNvdXJjZSwgcG9zOiBTb3VyY2VQb3NpdGlvbik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIHBvcywgbnVsbCkud3JhcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBicm9rZW4gYFNvdXJjZVBvc2l0aW9uYC4gVGhpcyBtZWFucyB0aGF0IHRoZVxuICAgKiBjYWxsaW5nIGNvZGUgZGV0ZXJtaW5lZCAob3Iga25vd3MpIHRoYXQgdGhlIGBTb3VyY2VMb2NhdGlvbmAgZG9lc24ndCBjb3JyZXNwb25kIGNvcnJlY3RseSB0b1xuICAgKiBhbnkgcGFydCBvZiB0aGUgc291cmNlLlxuICAgKi9cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZVBvc2l0aW9uID0gVU5LTk9XTl9QT1NJVElPTik6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbihPZmZzZXRLaW5kLkJyb2tlbiwgcG9zKS53cmFwKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYXRhOiBQb3NpdGlvbkRhdGEgJiBBbnlQb3NpdGlvbikge31cblxuICAvKipcbiAgICogR2V0IHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZvciB0aGlzIGBTb3VyY2VPZmZzZXRgLCBpZiBwb3NzaWJsZS5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IG51bGwgPyBudWxsIDogY2hhclBvcy5vZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSB0aGlzIG9mZnNldCB3aXRoIGFub3RoZXIgb25lLlxuICAgKlxuICAgKiBJZiBib3RoIG9mZnNldHMgYXJlIGBIYnNQb3NpdGlvbmBzLCB0aGV5J3JlIGVxdWl2YWxlbnQgYXMgbG9uZyBhcyB0aGVpciBsaW5lcyBhbmQgY29sdW1ucyBhcmVcbiAgICogdGhlIHNhbWUuIFRoaXMgYXZvaWRzIGNvbXB1dGluZyBvZmZzZXRzIHVubmVjZXNzYXJpbHkuXG4gICAqXG4gICAqIE90aGVyd2lzZSwgdHdvIGBTb3VyY2VPZmZzZXRgcyBhcmUgZXF1aXZhbGVudCBpZiB0aGVpciBzdWNjZXNzZnVsbHkgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICogYXJlIHRoZSBzYW1lLlxuICAgKi9cbiAgZXFsKHJpZ2h0OiBTb3VyY2VPZmZzZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXFsKHRoaXMuZGF0YSwgcmlnaHQuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc3BhbiB0aGF0IHN0YXJ0cyBmcm9tIHRoaXMgc291cmNlIG9mZnNldCBhbmQgZW5kcyB3aXRoIGFub3RoZXIgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIGNoYXJhY3RlciBvZmZzZXRzIGlmIGJvdGggYFNvdXJjZU9mZnNldGBzIGFyZSBzdGlsbCBsYXp5LlxuICAgKi9cbiAgdW50aWwob3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgb3RoZXIuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgYnkgbW92aW5nIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gcmVwcmVzZW50ZWQgYnkgdGhpcyBzb3VyY2Ugb2Zmc2V0XG4gICAqIGZvcndhcmQgb3IgYmFja3dhcmQgKGlmIGBieWAgaXMgbmVnYXRpdmUpLCBpZiBwb3NzaWJsZS5cbiAgICpcbiAgICogSWYgdGhpcyBgU291cmNlT2Zmc2V0YCBjYW4ndCBjb21wdXRlIGEgdmFsaWQgY2hhcmFjdGVyIG9mZnNldCwgYG1vdmVgIHJldHVybnMgYSBicm9rZW4gb2Zmc2V0LlxuICAgKlxuICAgKiBJZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBvZmZzZXQgaXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBzb3VyY2UsIGBtb3ZlYFxuICAgKiByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICovXG4gIG1vdmUoYnk6IG51bWJlcik6IFNvdXJjZU9mZnNldCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLmRhdGEudG9DaGFyUG9zKCk7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFNvdXJjZU9mZnNldC5icm9rZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlc3VsdCA9IGNoYXJQb3Mub2Zmc2V0ICsgYnk7XG5cbiAgICAgIGlmIChjaGFyUG9zLnNvdXJjZS5jaGVjayhyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hhclBvc2l0aW9uKGNoYXJQb3Muc291cmNlLCByZXN1bHQpLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgdGhhdCByZXByZXNlbnRzIGEgY29sbGFwc2VkIHJhbmdlIGF0IHRoaXMgc291cmNlIG9mZnNldC4gQXZvaWRcbiAgICogY29tcHV0aW5nIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGNvbXB1dGVkLlxuICAgKi9cbiAgY29sbGFwc2VkKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YSwgdGhpcy5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgYFNvdXJjZU9mZnNldGAgaW50byBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciBjb21wYXRpYmlsaXR5IHdpdGhcbiAgICogZXhpc3RpbmcgcGx1Z2lucy5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50b0pTT04oKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hhclBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gIC8qKiBDb21wdXRlZCBmcm9tIGNoYXIgb2Zmc2V0ICovXG4gIF9sb2NQb3M6IEhic1Bvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc291cmNlOiBTb3VyY2UsIHJlYWRvbmx5IGNoYXJQb3M6IG51bWJlcikge31cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGEgYENoYXJQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIEhic1Bvc2l0aW9ufSBmb3IgdGhlIGFsdGVybmF0aXZlLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IGZvciB0aGlzIGBDaGFyUG9zaXRpb25gLiBJZiB0aGlzIGBDaGFyUG9zaXRpb25gIHdhc1xuICAgKiBjb21wdXRlZCB1c2luZyB7QHNlZSBTb3VyY2VPZmZzZXQjbW92ZX0sIHRoaXMgd2lsbCBjb21wdXRlIHRoZSBgU291cmNlUG9zaXRpb25gIGZvciB0aGUgb2Zmc2V0LlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICBsZXQgaGJzID0gdGhpcy50b0hic1BvcygpO1xuICAgIHJldHVybiBoYnMgPT09IG51bGwgPyBVTktOT1dOX1BPU0lUSU9OIDogaGJzLnRvSlNPTigpO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgYENoYXJQb3NpdGlvbmAgYWx3YXlzIGhhcyBhbiBvZmZzZXQgaXQgY2FuIHByb2R1Y2Ugd2l0aG91dCBhbnkgYWRkaXRpb25hbCBjb21wdXRhdGlvbi5cbiAgICovXG4gIGdldCBvZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIG9mZnNldCB0byBhbiBgSGJzUG9zaXRpb25gLCBpZiBpdCB3YXMgbm90IGFscmVhZHkgY29tcHV0ZWQuIE9uY2VcbiAgICogYSBgQ2hhclBvc2l0aW9uYCBoYXMgY29tcHV0ZWQgaXRzIGBIYnNQb3NpdGlvbmAsIGl0IHdpbGwgbm90IG5lZWQgdG8gZG8gY29tcHV0ZSBpdCBhZ2FpbiwgYW5kXG4gICAqIHRoZSBzYW1lIGBDaGFyUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvXG4gICAqIGNvbXB1dGluZyB0aGUgYEhic1Bvc2l0aW9uYCBzaG91bGQgYmUgYSBvbmUtdGltZSBvcGVyYXRpb24uXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3MgPSB0aGlzLl9sb2NQb3M7XG5cbiAgICBpZiAobG9jUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgaGJzUG9zID0gdGhpcy5zb3VyY2UuaGJzUG9zRm9yKHRoaXMuY2hhclBvcyk7XG5cbiAgICAgIGlmIChoYnNQb3MgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbG9jUG9zID0gbG9jUG9zID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbG9jUG9zID0gbG9jUG9zID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBoYnNQb3MsIHRoaXMuY2hhclBvcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY1BvcyA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1BvcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcblxuICBfY2hhclBvczogQ2hhclBvc2l0aW9uIHwgQlJPS0VOIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3M6IFNvdXJjZVBvc2l0aW9uLFxuICAgIGNoYXJQb3M6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuX2NoYXJQb3MgPSBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBjaGFyUG9zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXppbHkgY29tcHV0ZSB0aGUgY2hhcmFjdGVyIG9mZnNldCBmcm9tIHRoZSB7QHNlZSBTb3VyY2VQb3NpdGlvbn0uIE9uY2UgYW4gYEhic1Bvc2l0aW9uYCBoYXNcbiAgICogY29tcHV0ZWQgaXRzIGBDaGFyUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZCB0aGUgc2FtZVxuICAgKiBgSGJzUG9zaXRpb25gIGlzIHJldGFpbmVkIHdoZW4gdXNlZCBhcyBvbmUgb2YgdGhlIGVuZHMgb2YgYSBgU291cmNlU3BhbmAsIHNvIGNvbXB1dGluZyB0aGVcbiAgICogYENoYXJQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IENoYXJQb3NpdGlvbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5fY2hhclBvcztcblxuICAgIGlmIChjaGFyUG9zID09PSBudWxsKSB7XG4gICAgICBsZXQgY2hhclBvc051bWJlciA9IHRoaXMuc291cmNlLmNoYXJQb3NGb3IodGhpcy5oYnNQb3MpO1xuXG4gICAgICBpZiAoY2hhclBvc051bWJlciA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9jaGFyUG9zID0gY2hhclBvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2NoYXJQb3MgPSBjaGFyUG9zID0gbmV3IENoYXJQb3NpdGlvbih0aGlzLnNvdXJjZSwgY2hhclBvc051bWJlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IEJST0tFTiA/IG51bGwgOiBjaGFyUG9zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUge0BzZWUgU291cmNlUG9zaXRpb259IHRoYXQgdGhpcyBgSGJzUG9zaXRpb25gIHdhcyBpbnN0YW50aWF0ZWQgd2l0aC4gVGhpcyBvcGVyYXRpb25cbiAgICogZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIGFueXRoaW5nLlxuICAgKlxuICAgKiBAaW1wbGVtZW50cyB7UG9zaXRpb25EYXRhfVxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3M7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VPZmZzZXQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhbHJlYWR5IGFuIGBIYnNQb3NpdGlvbmAuXG4gICAqXG4gICAqIHtAc2VlIENoYXJQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICovXG4gIHRvSGJzUG9zKCk6IEhic1Bvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52aXNpYmxlUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kLkJyb2tlbiB8IE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudCxcbiAgICAvLyB3aGF0ZXZlciB3YXMgcHJvdmlkZWQsIHBvc3NpYmx5IGJyb2tlblxuICAgIHJlYWRvbmx5IHBvczogU291cmNlUG9zaXRpb25cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBBIGJyb2tlbiBwb3NpdGlvbiBjYW5ub3QgYmUgdHVybmVkIGludG8gYSB7QHNlZSBDaGFyYWN0ZXJQb3NpdGlvbn0uXG4gICAqL1xuICB0b0NoYXJQb3MoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlcmlhbGl6YXRpb24gb2YgYW4gYEludmlzaWJsZVBvc2l0aW9uIGlzIHdoYXRldmVyIEhhbmRsZWJhcnMge0BzZWUgU291cmNlUG9zaXRpb259IHdhc1xuICAgKiBvcmlnaW5hbGx5IGlkZW50aWZpZWQgYXMgYnJva2VuLCBub24tZXhpc3RlbnQgb3Igc3ludGhldGljLlxuICAgKlxuICAgKiBJZiBhbiBgSW52aXNpYmxlUG9zaXRpb25gIG5ldmVyIGhhZCBhbiBzb3VyY2Ugb2Zmc2V0IGF0IGFsbCwgdGhpcyBtZXRob2QgcmV0dXJuc1xuICAgKiB7QHNlZSBVTktOT1dOX1BPU0lUSU9OfSBmb3IgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgZ2V0IG9mZnNldCgpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHtAc2VlIEFueVBvc2l0aW9ufSBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhleSBhcmUgZXF1YWwuXG4gKlxuICogQHNlZSB7U291cmNlT2Zmc2V0I2VxbH1cbiAqL1xuY29uc3QgZXFsID0gbWF0Y2g8Ym9vbGVhbj4oKG0pID0+XG4gIG1cbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgaGJzUG9zOiBsZWZ0IH0sIHsgaGJzUG9zOiByaWdodCB9KSA9PlxuICAgICAgICBsZWZ0LmNvbHVtbiA9PT0gcmlnaHQuY29sdW1uICYmIGxlZnQubGluZSA9PT0gcmlnaHQubGluZVxuICAgIClcbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAoeyBjaGFyUG9zOiBsZWZ0IH0sIHsgY2hhclBvczogcmlnaHQgfSkgPT4gbGVmdCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICAoeyBvZmZzZXQ6IGxlZnQgfSwgcmlnaHQpID0+IGxlZnQgPT09IHJpZ2h0LnRvQ2hhclBvcygpPy5vZmZzZXRcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICAobGVmdCwgeyBvZmZzZXQ6IHJpZ2h0IH0pID0+IGxlZnQudG9DaGFyUG9zKCk/Lm9mZnNldCA9PT0gcmlnaHRcbiAgICApXG4gICAgLndoZW4oTWF0Y2hBbnksIE1hdGNoQW55LCAoKSA9PiBmYWxzZSlcbik7XG4iXSwic291cmNlUm9vdCI6IiJ9

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

var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPosSpan, _charPosSpan, _providedHbsLoc; // eslint-disable-next-line import/no-extraneous-dependencies
// eslint-disable-next-line import/no-extraneous-dependencies
import { DEBUG } from '@glimmer/env';

@@ -313,4 +294,3 @@ import { assertNever } from '@glimmer/util';

;
_locPosSpan.set(this, null);
this._locPosSpan = null;
}

@@ -348,3 +328,3 @@

toHbsSpan() {
let locPosSpan = __classPrivateFieldGet(this, _locPosSpan);
let locPosSpan = this._locPosSpan;

@@ -356,8 +336,8 @@ if (locPosSpan === null) {

if (start === null || end === null) {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, BROKEN);
locPosSpan = this._locPosSpan = BROKEN;
} else {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, new HbsSpan(this.source, {
locPosSpan = this._locPosSpan = new HbsSpan(this.source, {
start,
end
}));
});
}

@@ -392,3 +372,2 @@ }

_locPosSpan = new WeakMap();
export class HbsSpan {

@@ -401,9 +380,4 @@ constructor(source, hbsPositions, providedHbsLoc = null) {

;
_charPosSpan.set(this, null); // the source location from Handlebars + AST Plugins -- could be wrong
_providedHbsLoc.set(this, void 0);
__classPrivateFieldSet(this, _providedHbsLoc, providedHbsLoc);
this._charPosSpan = null;
this._providedHbsLoc = providedHbsLoc;
}

@@ -423,13 +397,12 @@

updateProvided(pos, edge) {
if (__classPrivateFieldGet(this, _providedHbsLoc)) {
__classPrivateFieldGet(this, _providedHbsLoc)[edge] = pos;
if (this._providedHbsLoc) {
this._providedHbsLoc[edge] = pos;
} // invalidate computed character offsets
__classPrivateFieldSet(this, _charPosSpan, null);
__classPrivateFieldSet(this, _providedHbsLoc, {
this._charPosSpan = null;
this._providedHbsLoc = {
start: pos,
end: pos
});
};
}

@@ -481,3 +454,3 @@

toCharPosSpan() {
let charPosSpan = __classPrivateFieldGet(this, _charPosSpan);
let charPosSpan = this._charPosSpan;

@@ -489,8 +462,8 @@ if (charPosSpan === null) {

if (start && end) {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, new CharPositionSpan(this.source, {
charPosSpan = this._charPosSpan = new CharPositionSpan(this.source, {
start,
end
}));
});
} else {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, BROKEN);
charPosSpan = this._charPosSpan = BROKEN;
return null;

@@ -504,3 +477,2 @@ }

}
_charPosSpan = new WeakMap(), _providedHbsLoc = new WeakMap();

@@ -624,2 +596,2 @@ class InvisibleSpan {

}).when(IsInvisible, MatchAny, left => new InvisibleSpan(left.kind, BROKEN_LOCATION).wrap()).when(MatchAny, IsInvisible, (_, right) => new InvisibleSpan(right.kind, BROKEN_LOCATION).wrap()));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEQUFBOzs7QUFDQSxTQUFTLEtBQVQsUUFBc0IsY0FBdEI7QUFFQSxTQUFTLFdBQVQsUUFBNEIsZUFBNUI7QUFFQSxTQUNFLGVBREYsRUFFRSxxQkFGRixRQUtPLGFBTFA7QUFNQSxTQUFTLFdBQVQsUUFBNEIsVUFBNUI7QUFFQSxTQUFTLFdBQVQsRUFBc0IsS0FBdEIsRUFBNkIsUUFBN0IsUUFBc0QsU0FBdEQ7QUFDQSxTQUVFLE1BRkYsRUFHRSxZQUhGLEVBSUUsV0FKRixFQUtFLGlCQUxGLFFBUU8sVUFSUDtBQXlEQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ0EsT0FBTSxNQUFPLFVBQVAsQ0FBaUI7QUE0Q3JCLEVBQUEsV0FBQSxDQUFvQixJQUFwQixFQUE0QztBQUF4QixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ2xCLFNBQUssV0FBTCxHQUNFLElBQUksQ0FBQyxJQUFMLEtBQVM7QUFBQTtBQUFULE9BQXlDLElBQUksQ0FBQyxJQUFMLEtBQVM7QUFBQTtBQURwRDtBQUVEOztBQTlDRCxhQUFXLFlBQVgsR0FBdUI7QUFDckIsV0FBTyxJQUFJLGFBQUosQ0FBaUI7QUFBQTtBQUFqQixNQUEwQyxxQkFBMUMsRUFBaUUsSUFBakUsRUFBUDtBQUNEOztBQUVELFNBQU8sSUFBUCxDQUFZLE1BQVosRUFBNEIsVUFBNUIsRUFBNEQ7QUFDMUQsUUFBSSxPQUFPLFVBQVAsS0FBc0IsUUFBMUIsRUFBb0M7QUFDbEMsYUFBTyxVQUFVLENBQUMsZ0JBQVgsQ0FBNEIsTUFBNUIsRUFBb0MsVUFBcEMsRUFBZ0QsVUFBaEQsQ0FBUDtBQUNELEtBRkQsTUFFTyxJQUFJLE9BQU8sVUFBUCxLQUFzQixRQUExQixFQUFvQztBQUN6QyxhQUFPLFVBQVUsQ0FB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Q0FBQyxDQUFELEVBQUksS0FBSixLQUMzQixJQUFJLGFBQUosQ0FBa0IsS0FBSyxDQUFDLElBQXhCLEVBQThCLGVBQTlCLEVBQStDLElBQS9DLEVBakNKLENBRDRDLENBQXZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgTE9DQUxfREVCVUcgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQge1xuICBCUk9LRU5fTE9DQVRJT04sXG4gIE5PTl9FWElTVEVOVF9MT0NBVElPTixcbiAgU291cmNlTG9jYXRpb24sXG4gIFNvdXJjZVBvc2l0aW9uLFxufSBmcm9tICcuLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4uL3NsaWNlJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBJc0ludmlzaWJsZSwgbWF0Y2gsIE1hdGNoQW55LCBNYXRjaEZuIH0gZnJvbSAnLi9tYXRjaCc7XG5pbXBvcnQge1xuICBBbnlQb3NpdGlvbixcbiAgQlJPS0VOLFxuICBDaGFyUG9zaXRpb24sXG4gIEhic1Bvc2l0aW9uLFxuICBJbnZpc2libGVQb3NpdGlvbixcbiAgT2Zmc2V0S2luZCxcbiAgU291cmNlT2Zmc2V0LFxufSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogQWxsIHNwYW5zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uXG4gKi9cbmludGVyZmFjZSBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQ7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBzcGFuIGludG8gYSBzdHJpbmcuIElmIHRoZSBzcGFuIGlzIGJyb2tlbiwgcmV0dXJuIGAnJ2AuXG4gICAqL1xuICBhc1N0cmluZygpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1vZHVsZSB0aGUgc3BhbiB3YXMgbG9jYXRlZCBpbi5cbiAgICovXG4gIGdldE1vZHVsZSgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoaXMgc3Bhbi4gVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBwb3NpdGlvbiBvYmplY3RzLCBhcyB0aGV5XG4gICAqIGNhY2hlIGNvbXB1dGF0aW9ucy5cbiAgICovXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVuZGluZyBwb3NpdGlvbiBmb3IgdGhpcyBzcGFuLiBUcnkgdG8gYXZvaWQgY3JlYXRpbmcgbmV3IHBvc2l0aW9uIG9iamVjdHMsIGFzIHRoZXlcbiAgICogY2FjaGUgY29tcHV0YXRpb25zLlxuICAgKi9cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSBgU291cmNlTG9jYXRpb25gIGZvciB0aGlzIHNwYW4sIHJldHVybmVkIGFzIGFuIGluc3RhbmNlIG9mIGBIYnNTcGFuYC5cbiAgICovXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHwgbnVsbDtcblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHksIHdoZW5ldmVyIHRoZSBgc3RhcnRgIG9yIGBlbmRgIG9mIGEge0BzZWUgU291cmNlT2Zmc2V0fSBjaGFuZ2VzLCBzcGFucyBhcmVcbiAgICogbm90aWZpZWQgb2YgdGhlIGNoYW5nZSBzbyB0aGV5IGNhbiB1cGRhdGUgdGhlbXNlbHZlcy4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIG91dHNpZGUgb2YgQVNUXG4gICAqIHBsdWdpbnMuXG4gICAqL1xuICBsb2NEaWRVcGRhdGUoY2hhbmdlczogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KTogdm9pZDtcblxuICAvKipcbiAgICogU2VyaWFsaXplIGludG8gYSB7QHNlZSBTZXJpYWxpemVkU291cmNlU3Bhbn0sIHdoaWNoIGlzIGNvbXBhY3QgYW5kIGRlc2lnbmVkIGZvciByZWFkYWJpbGl0eSBpblxuICAgKiBjb250ZXh0IGxpa2UgQVNUIEV4cGxvcmVyLiBJZiB5b3UgbmVlZCBhIHtAc2VlIFNvdXJjZUxvY2F0aW9ufSwgdXNlIHtAc2VlIHRvSlNPTn0uXG4gICAqL1xuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQSBgU291cmNlU3BhbmAgb2JqZWN0IHJlcHJlc2VudHMgYSBzcGFuIG9mIGNoYXJhY3RlcnMgaW5zaWRlIG9mIGEgdGVtcGxhdGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBgU291cmNlU3BhbmAgb2JqZWN0czpcbiAqXG4gKiAtIGBDb25jcmV0ZVNvdXJjZVNwYW5gLCB3aGljaCBjb250YWlucyBieXRlIG9mZnNldHNcbiAqIC0gYExhenlTb3VyY2VTcGFuYCwgd2hpY2ggY29udGFpbnMgYFNvdXJjZUxvY2F0aW9uYHMgZnJvbSB0aGUgSGFuZGxlYmFycyBBU1QsIHdoaWNoIGNhbiBiZVxuICogICBjb252ZXJ0ZWQgdG8gYnl0ZSBvZmZzZXRzIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVNvdXJjZVNwYW5gLCB3aGljaCByZXByZXNlbnQgc291cmNlIHN0cmluZ3MgdGhhdCBhcmVuJ3QgcHJlc2VudCBpbiB0aGUgc291cmNlLFxuICogICBiZWNhdXNlOlxuICogICAgIC0gdGhleSB3ZXJlIGNyZWF0ZWQgc3ludGhldGljYWxseVxuICogICAgIC0gdGhlaXIgbG9jYXRpb24gaXMgbm9uc2Vuc2ljYWwgKHRoZSBzcGFuIGlzIGJyb2tlbilcbiAqICAgICAtIHRoZXkgcmVwcmVzZW50IG5vdGhpbmcgaW4gdGhlIHNvdXJjZSAodGhpcyBjdXJyZW50bHkgaGFwcGVucyBvbmx5IHdoZW4gYSBidWcgaW4gdGhlXG4gKiAgICAgICB1cHN0cmVhbSBIYW5kbGViYXJzIHBhcnNlciBmYWlscyB0byBhc3NpZ24gYSBsb2NhdGlvbiB0byBlbXB0eSBibG9ja3MpXG4gKlxuICogQXQgYSBoaWdoIGxldmVsLCBhbGwgYFNvdXJjZVNwYW5gIG9iamVjdHMgcHJvdmlkZTpcbiAqXG4gKiAtIGJ5dGUgb2Zmc2V0c1xuICogLSBzb3VyY2UgaW4gY29sdW1uIGFuZCBsaW5lIGZvcm1hdFxuICpcbiAqIEFuZCB5b3UgY2FuIGRvIHRoZXNlIG9wZXJhdGlvbnMgb24gYFNvdXJjZVNwYW5gczpcbiAqXG4gKiAtIGNvbGxhcHNlIGl0IHRvIGEgYFNvdXJjZVNwYW5gIHJlcHJlc2VudGluZyBpdHMgc3RhcnRpbmcgb3IgZW5kaW5nIHBvc2l0aW9uXG4gKiAtIHNsaWNlIG91dCBzb21lIGNoYXJhY3RlcnMsIG9wdGlvbmFsbHkgc2tpcHBpbmcgc29tZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kXG4gKiAtIGNyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgd2l0aCBhIGRpZmZlcmVudCBzdGFydGluZyBvciBlbmRpbmcgb2Zmc2V0XG4gKlxuICogQWxsIFNvdXJjZVNwYW4gb2JqZWN0cyBpbXBsZW1lbnQgYFNvdXJjZUxvY2F0aW9uYCwgZm9yIGNvbXBhdGliaWxpdHkuIEFsbCBTb3VyY2VTcGFuXG4gKiBvYmplY3RzIGhhdmUgYSBgdG9KU09OYCB0aGF0IGVtaXRzIGBTb3VyY2VMb2NhdGlvbmAsIGFsc28gZm9yIGNvbXBhdGliaWxpdHkuXG4gKlxuICogRm9yIGNvbXBhdGliaWxpdHksIHN1YmNsYXNzZXMgb2YgYEFic3RyYWN0U291cmNlU3BhbmAgbXVzdCBpbXBsZW1lbnQgYGxvY0RpZFVwZGF0ZWAsIHdoaWNoXG4gKiBoYXBwZW5zIHdoZW4gYW4gQVNUIHBsdWdpbiBhdHRlbXB0cyB0byBtb2RpZnkgdGhlIGBzdGFydGAgb3IgYGVuZGAgb2YgYSBzcGFuIGRpcmVjdGx5LlxuICpcbiAqIFRoZSBnb2FsIGlzIHRvIGF2b2lkIGNyZWF0aW5nIGFueSBwcm9ibGVtcyBmb3IgdXNlLWNhc2VzIGxpa2UgQVNUIEV4cGxvcmVyLlxuICovXG5leHBvcnQgY2xhc3MgU291cmNlU3BhbiBpbXBsZW1lbnRzIFNvdXJjZUxvY2F0aW9uIHtcbiAgc3RhdGljIGdldCBOT05fRVhJU1RFTlQoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsIE5PTl9FWElTVEVOVF9MT0NBVElPTikud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGxvYWQoc291cmNlOiBTb3VyY2UsIHNlcmlhbGl6ZWQ6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIHNlcmlhbGl6ZWQsIHNlcmlhbGl6ZWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5zeW50aGV0aWMoc2VyaWFsaXplZCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNlcmlhbGl6ZWQpKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgc2VyaWFsaXplZFswXSwgc2VyaWFsaXplZFsxXSk7XG4gICAgfSBlbHNlIGlmIChzZXJpYWxpemVkID09PSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50KSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQ7XG4gICAgfSBlbHNlIGlmIChzZXJpYWxpemVkID09PSBPZmZzZXRLaW5kLkJyb2tlbikge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uYnJva2VuKEJST0tFTl9MT0NBVElPTik7XG4gICAgfVxuXG4gICAgYXNzZXJ0TmV2ZXIoc2VyaWFsaXplZCk7XG4gIH1cblxuICBzdGF0aWMgZm9ySGJzTG9jKHNvdXJjZTogU291cmNlLCBsb2M6IFNvdXJjZUxvY2F0aW9uKTogU291cmNlU3BhbiB7XG4gICAgbGV0IHN0YXJ0ID0gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgbG9jLnN0YXJ0KTtcbiAgICBsZXQgZW5kID0gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgbG9jLmVuZCk7XG4gICAgcmV0dXJuIG5ldyBIYnNTcGFuKHNvdXJjZSwgeyBzdGFydCwgZW5kIH0sIGxvYykud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGZvckNoYXJQb3NpdGlvbnMoc291cmNlOiBTb3VyY2UsIHN0YXJ0UG9zOiBudW1iZXIsIGVuZFBvczogbnVtYmVyKTogU291cmNlU3BhbiB7XG4gICAgbGV0IHN0YXJ0ID0gbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIHN0YXJ0UG9zKTtcbiAgICBsZXQgZW5kID0gbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIGVuZFBvcyk7XG5cbiAgICByZXR1cm4gbmV3IENoYXJQb3NpdGlvblNwYW4oc291cmNlLCB7IHN0YXJ0LCBlbmQgfSkud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIHN5bnRoZXRpYyhjaGFyczogc3RyaW5nKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljLCBOT05fRVhJU1RFTlRfTE9DQVRJT04sIGNoYXJzKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgYnJva2VuKHBvczogU291cmNlTG9jYXRpb24gPSBCUk9LRU5fTE9DQVRJT04pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIHBvcykud3JhcCgpO1xuICB9XG5cbiAgcmVhZG9ubHkgaXNJbnZpc2libGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBTcGFuRGF0YSAmIEFueVNwYW4pIHtcbiAgICB0aGlzLmlzSW52aXNpYmxlID1cbiAgICAgIGRhdGEua2luZCAhPT0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24gJiYgZGF0YS5raW5kICE9PSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldFN0YXJ0KCkud3JhcCgpO1xuICB9XG5cbiAgZ2V0RW5kKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRFbmQoKS53cmFwKCk7XG4gIH1cblxuICBnZXQgbG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICBsZXQgc3BhbiA9IHRoaXMuZGF0YS50b0hic1NwYW4oKTtcbiAgICByZXR1cm4gc3BhbiA9PT0gbnVsbCA/IEJST0tFTl9MT0NBVElPTiA6IHNwYW4udG9IYnNMb2MoKTtcbiAgfVxuXG4gIGdldCBtb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldE1vZHVsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhcnRpbmcgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhpcyBgU291cmNlU3BhbmAsIGxhemlseSBjb21wdXRpbmcgaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IHN0YXJ0UG9zaXRpb24oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5zdGFydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVuZGluZyBgU291cmNlUG9zaXRpb25gIGZvciB0aGlzIGBTb3VyY2VTcGFuYCwgbGF6aWx5IGNvbXB1dGluZyBpdCBpZiBuZWVkZWQuXG4gICAqL1xuICBnZXQgZW5kUG9zaXRpb24oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5lbmQ7XG4gIH1cblxuICAvKipcbiAgICogU3VwcG9ydCBjb252ZXJ0aW5nIEFTVHYxIG5vZGVzIGludG8gYSBzZXJpYWxpemVkIGZvcm1hdCB1c2luZyBKU09OLnN0cmluZ2lmeS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzcGFuIHdpdGggdGhlIGN1cnJlbnQgc3BhbidzIGVuZCBhbmQgYSBuZXcgYmVnaW5uaW5nLlxuICAgKi9cbiAgd2l0aFN0YXJ0KG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3BhbihvdGhlci5kYXRhLCB0aGlzLmRhdGEuZ2V0RW5kKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzcGFuIHdpdGggdGhlIGN1cnJlbnQgc3BhbidzIGJlZ2lubmluZyBhbmQgYSBuZXcgZW5kaW5nLlxuICAgKi9cbiAgd2l0aEVuZCh0aGlzOiBTb3VyY2VTcGFuLCBvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLmdldFN0YXJ0KCksIG90aGVyLmRhdGEpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmFzU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIGBTb3VyY2VTcGFuYCBpbnRvIGEgYFNvdXJjZVNsaWNlYC4gSW4gZGVidWcgbW9kZSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSBjaGVja3NcbiAgICogdGhhdCB0aGUgYnl0ZSBvZmZzZXRzIHJlcHJlc2VudGVkIGJ5IHRoaXMgYFNvdXJjZVNwYW5gIGFjdHVhbGx5IGNvcnJlc3BvbmQgdG8gdGhlIGV4cGVjdGVkXG4gICAqIHN0cmluZy5cbiAgICovXG4gIHRvU2xpY2UoZXhwZWN0ZWQ/OiBzdHJpbmcpOiBTb3VyY2VTbGljZSB7XG4gICAgbGV0IGNoYXJzID0gdGhpcy5kYXRhLmFzU3RyaW5nKCk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGlmIChleHBlY3RlZCAhPT0gdW5kZWZpbmVkICYmIGNoYXJzICE9PSBleHBlY3RlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYHVuZXhwZWN0ZWRseSBmb3VuZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgY2hhcnNcbiAgICAgICAgICApfSB3aGVuIHNsaWNpbmcgc291cmNlLCBidXQgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShleHBlY3RlZCl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgU291cmNlU2xpY2Uoe1xuICAgICAgbG9jOiB0aGlzLFxuICAgICAgY2hhcnM6IGV4cGVjdGVkIHx8IGNoYXJzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHN0YXJ0UG9zaXRpb24gaW5zdGVhZFxuICAgKi9cbiAgZ2V0IHN0YXJ0KCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2Muc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2l0aFN0YXJ0IGluc3RlYWRcbiAgICovXG4gIHNldCBzdGFydChwb3NpdGlvbjogU291cmNlUG9zaXRpb24pIHtcbiAgICB0aGlzLmRhdGEubG9jRGlkVXBkYXRlKHsgc3RhcnQ6IHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGVuZFBvc2l0aW9uIGluc3RlYWRcbiAgICovXG4gIGdldCBlbmQoKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5lbmQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2l0aEVuZCBpbnN0ZWFkXG4gICAqL1xuICBzZXQgZW5kKHBvc2l0aW9uOiBTb3VyY2VQb3NpdGlvbikge1xuICAgIHRoaXMuZGF0YS5sb2NEaWRVcGRhdGUoeyBlbmQ6IHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIG1vZHVsZSBpbnN0ZWFkXG4gICAqL1xuICBnZXQgc291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlO1xuICB9XG5cbiAgY29sbGFwc2Uod2hlcmU6ICdzdGFydCcgfCAnZW5kJyk6IFNvdXJjZVNwYW4ge1xuICAgIHN3aXRjaCAod2hlcmUpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhcnQoKS5jb2xsYXBzZWQoKTtcbiAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldEVuZCgpLmNvbGxhcHNlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGV4dGVuZChvdGhlcjogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YS5nZXRTdGFydCgpLCBvdGhlci5kYXRhLmdldEVuZCgpKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHNsaWNlKHsgc2tpcFN0YXJ0ID0gMCwgc2tpcEVuZCA9IDAgfTogeyBza2lwU3RhcnQ/OiBudW1iZXI7IHNraXBFbmQ/OiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCkuZGF0YSwgdGhpcy5nZXRFbmQoKS5tb3ZlKC1za2lwRW5kKS5kYXRhKTtcbiAgfVxuXG4gIHNsaWNlU3RhcnRDaGFycyh7IHNraXBTdGFydCA9IDAsIGNoYXJzIH06IHsgc2tpcFN0YXJ0PzogbnVtYmVyOyBjaGFyczogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQpLmRhdGEsIHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCArIGNoYXJzKS5kYXRhKTtcbiAgfVxuXG4gIHNsaWNlRW5kQ2hhcnMoeyBza2lwRW5kID0gMCwgY2hhcnMgfTogeyBza2lwRW5kPzogbnVtYmVyOyBjaGFyczogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldEVuZCgpLm1vdmUoc2tpcEVuZCAtIGNoYXJzKS5kYXRhLCB0aGlzLmdldFN0YXJ0KCkubW92ZSgtc2tpcEVuZCkuZGF0YSk7XG4gIH1cbn1cblxudHlwZSBBbnlTcGFuID0gSGJzU3BhbiB8IENoYXJQb3NpdGlvblNwYW4gfCBJbnZpc2libGVTcGFuO1xuXG5jbGFzcyBDaGFyUG9zaXRpb25TcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb247XG5cbiAgI2xvY1Bvc1NwYW46IEhic1NwYW4gfCBCUk9LRU4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBjaGFyUG9zaXRpb25zOiB7IHN0YXJ0OiBDaGFyUG9zaXRpb247IGVuZDogQ2hhclBvc2l0aW9uIH1cbiAgKSB7fVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uuc2xpY2UodGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0LmNoYXJQb3MsIHRoaXMuY2hhclBvc2l0aW9ucy5lbmQuY2hhclBvcyk7XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubW9kdWxlO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQ7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kO1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKCkge1xuICAgIGlmIChMT0NBTF9ERUJVRykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYHVwZGF0aW5nIGEgbG9jYXRpb24gdGhhdCBjYW1lIGZyb20gYSBDaGFyUG9zaXRpb24gc3BhbiBkb2Vzbid0IHdvcmsgcmVsaWFibHkuIERvbid0IHRyeSB0byB1cGRhdGUgbG9jYXRpb25zIGFmdGVyIHRoZSBwbHVnaW4gcGhhc2VgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHwgbnVsbCB7XG4gICAgbGV0IGxvY1Bvc1NwYW4gPSB0aGlzLiNsb2NQb3NTcGFuO1xuXG4gICAgaWYgKGxvY1Bvc1NwYW4gPT09IG51bGwpIHtcbiAgICAgIGxldCBzdGFydCA9IHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydC50b0hic1BvcygpO1xuICAgICAgbGV0IGVuZCA9IHRoaXMuY2hhclBvc2l0aW9ucy5lbmQudG9IYnNQb3MoKTtcblxuICAgICAgaWYgKHN0YXJ0ID09PSBudWxsIHx8IGVuZCA9PT0gbnVsbCkge1xuICAgICAgICBsb2NQb3NTcGFuID0gdGhpcy4jbG9jUG9zU3BhbiA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY1Bvc1NwYW4gPSB0aGlzLiNsb2NQb3NTcGFuID0gbmV3IEhic1NwYW4odGhpcy5zb3VyY2UsIHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NQb3NTcGFuID09PSBCUk9LRU4gPyBudWxsIDogbG9jUG9zU3BhbjtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3BhbiB7XG4gICAgbGV0IHtcbiAgICAgIHN0YXJ0OiB7IGNoYXJQb3M6IHN0YXJ0IH0sXG4gICAgICBlbmQ6IHsgY2hhclBvczogZW5kIH0sXG4gICAgfSA9IHRoaXMuY2hhclBvc2l0aW9ucztcblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgICByZXR1cm4gc3RhcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG4gICAgfVxuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBDaGFyUG9zaXRpb25TcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG5cbiAgI2NoYXJQb3NTcGFuOiBDaGFyUG9zaXRpb25TcGFuIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gdGhlIHNvdXJjZSBsb2NhdGlvbiBmcm9tIEhhbmRsZWJhcnMgKyBBU1QgUGx1Z2lucyAtLSBjb3VsZCBiZSB3cm9uZ1xuICAjcHJvdmlkZWRIYnNMb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3NpdGlvbnM6IHsgc3RhcnQ6IEhic1Bvc2l0aW9uOyBlbmQ6IEhic1Bvc2l0aW9uIH0sXG4gICAgcHJvdmlkZWRIYnNMb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy4jcHJvdmlkZWRIYnNMb2MgPSBwcm92aWRlZEhic0xvYztcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMudG9DaGFyUG9zU3BhbigpO1xuICAgIHJldHVybiBjaGFyUG9zID09PSBudWxsID8gT2Zmc2V0S2luZC5Ccm9rZW4gOiBjaGFyUG9zLndyYXAoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcm92aWRlZChwb3M6IFNvdXJjZVBvc2l0aW9uLCBlZGdlOiAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICBpZiAodGhpcy4jcHJvdmlkZWRIYnNMb2MpIHtcbiAgICAgIHRoaXMuI3Byb3ZpZGVkSGJzTG9jW2VkZ2VdID0gcG9zO1xuICAgIH1cblxuICAgIC8vIGludmFsaWRhdGUgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICB0aGlzLiNjaGFyUG9zU3BhbiA9IG51bGw7XG4gICAgdGhpcy4jcHJvdmlkZWRIYnNMb2MgPSB7XG4gICAgICBzdGFydDogcG9zLFxuICAgICAgZW5kOiBwb3MsXG4gICAgfTtcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSh7IHN0YXJ0LCBlbmQgfTogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KTogdm9pZCB7XG4gICAgaWYgKHN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvdmlkZWQoc3RhcnQsICdzdGFydCcpO1xuICAgICAgdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIHN0YXJ0LCBudWxsKTtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvdmlkZWQoZW5kLCAnZW5kJyk7XG4gICAgICB0aGlzLmhic1Bvc2l0aW9ucy5lbmQgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIGVuZCwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBsZXQgc3BhbiA9IHRoaXMudG9DaGFyUG9zU3BhbigpO1xuICAgIHJldHVybiBzcGFuID09PSBudWxsID8gJycgOiBzcGFuLmFzU3RyaW5nKCk7XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubW9kdWxlO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydDtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zaXRpb25zLmVuZDtcbiAgfVxuXG4gIHRvSGJzTG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0Lmhic1BvcyxcbiAgICAgIGVuZDogdGhpcy5oYnNQb3NpdGlvbnMuZW5kLmhic1BvcyxcbiAgICB9O1xuICB9XG5cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBDaGFyUG9zaXRpb25TcGFuIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3NTcGFuID0gdGhpcy4jY2hhclBvc1NwYW47XG5cbiAgICBpZiAoY2hhclBvc1NwYW4gPT09IG51bGwpIHtcbiAgICAgIGxldCBzdGFydCA9IHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0LnRvQ2hhclBvcygpO1xuICAgICAgbGV0IGVuZCA9IHRoaXMuaGJzUG9zaXRpb25zLmVuZC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICBjaGFyUG9zU3BhbiA9IHRoaXMuI2NoYXJQb3NTcGFuID0gbmV3IENoYXJQb3NpdGlvblNwYW4odGhpcy5zb3VyY2UsIHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhclBvc1NwYW4gPSB0aGlzLiNjaGFyUG9zU3BhbiA9IEJST0tFTjtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3NTcGFuID09PSBCUk9LRU4gPyBudWxsIDogY2hhclBvc1NwYW47XG4gIH1cbn1cblxuY2xhc3MgSW52aXNpYmxlU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZC5Ccm9rZW4gfCBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYyB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsXG4gICAgLy8gd2hhdGV2ZXIgd2FzIHByb3ZpZGVkLCBwb3NzaWJseSBicm9rZW5cbiAgICByZWFkb25seSBsb2M6IFNvdXJjZUxvY2F0aW9uLFxuICAgIC8vIGlmIHRoZSBzcGFuIHJlcHJlc2VudHMgYSBzeW50aGV0aWMgc3RyaW5nXG4gICAgcmVhZG9ubHkgc3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHt9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4ge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIE9mZnNldEtpbmQuQnJva2VuOlxuICAgICAgY2FzZSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5raW5kO1xuICAgICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmcgfHwgJyc7XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoeyBzdGFydCwgZW5kIH06IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSkge1xuICAgIGlmIChzdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvYy5zdGFydCA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2MuZW5kID0gZW5kO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyByZWZsZWN0IHRoZSBhY3R1YWwgbW9kdWxlIHRoaXMgc3BhbiBvcmlnaW5hdGVkIGZyb21cbiAgICByZXR1cm4gJ2FuIHVua25vd24gbW9kdWxlJztcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKHRoaXMua2luZCwgdGhpcy5sb2Muc3RhcnQpO1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKHRoaXMua2luZCwgdGhpcy5sb2MuZW5kKTtcbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogSW52aXNpYmxlU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0hic1NwYW4oKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0b0hic0xvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIEJST0tFTl9MT0NBVElPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3BhbjogTWF0Y2hGbjxTb3VyY2VTcGFuPiA9IG1hdGNoKChtKSA9PlxuICBtXG4gICAgLndoZW4oT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgbmV3IEhic1NwYW4obGVmdC5zb3VyY2UsIHtcbiAgICAgICAgc3RhcnQ6IGxlZnQsXG4gICAgICAgIGVuZDogcmlnaHQsXG4gICAgICB9KS53cmFwKClcbiAgICApXG4gICAgLndoZW4oT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+XG4gICAgICBuZXcgQ2hhclBvc2l0aW9uU3BhbihsZWZ0LnNvdXJjZSwge1xuICAgICAgICBzdGFydDogbGVmdCxcbiAgICAgICAgZW5kOiByaWdodCxcbiAgICAgIH0pLndyYXAoKVxuICAgIClcbiAgICAud2hlbihPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICBsZXQgcmlnaHRDaGFyUG9zID0gcmlnaHQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChyaWdodENoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzcGFuKGxlZnQsIHJpZ2h0Q2hhclBvcyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAud2hlbihPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICBsZXQgbGVmdENoYXJQb3MgPSBsZWZ0LnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAobGVmdENoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzcGFuKGxlZnRDaGFyUG9zLCByaWdodCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAud2hlbihJc0ludmlzaWJsZSwgTWF0Y2hBbnksIChsZWZ0KSA9PiBuZXcgSW52aXNpYmxlU3BhbihsZWZ0LmtpbmQsIEJST0tFTl9MT0NBVElPTikud3JhcCgpKVxuICAgIC53aGVuKE1hdGNoQW55LCBJc0ludmlzaWJsZSwgKF8sIHJpZ2h0KSA9PlxuICAgICAgbmV3IEludmlzaWJsZVNwYW4ocmlnaHQua2luZCwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKClcbiAgICApXG4pO1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuID1cbiAgfCAvKiogY29sbGFwc2VkICovIG51bWJlclxuICB8IC8qKiBub3JtYWwgKi8gW3N0YXJ0OiBudW1iZXIsIHNpemU6IG51bWJlcl1cbiAgfCAvKiogc3ludGhldGljICovIHN0cmluZztcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFNvdXJjZVNwYW4gPVxuICB8IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW5cbiAgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50XG4gIHwgT2Zmc2V0S2luZC5Ccm9rZW47XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsU0FBUyxLQUFULFFBQXNCLGNBQXRCO0FBRUEsU0FBUyxXQUFULFFBQTRCLGVBQTVCO0FBRUEsU0FDRSxlQURGLEVBRUUscUJBRkYsUUFLTyxhQUxQO0FBTUEsU0FBUyxXQUFULFFBQTRCLFVBQTVCO0FBRUEsU0FBUyxXQUFULEVBQXNCLEtBQXRCLEVBQTZCLFFBQTdCLFFBQXNELFNBQXREO0FBQ0EsU0FFRSxNQUZGLEVBR0UsWUFIRixFQUlFLFdBSkYsRUFLRSxpQkFMRixRQVFPLFVBUlA7QUF5REE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0NBLE9BQU0sTUFBTyxVQUFQLENBQWlCO0FBNENyQixFQUFBLFdBQUEsQ0FBb0IsSUFBcEIsRUFBNEM7QUFBeEIsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNsQixTQUFLLFdBQUwsR0FDRSxJQUFJLENBQUMsSUFBTCxLQUFTO0FBQUE7QUFBVCxPQUF5QyxJQUFJLENBQUMsSUFBTCxLQUFTO0FBQUE7QUFEcEQ7QUFFRDs7QUE5Q0QsYUFBVyxZQUFYLEdBQXVCO0FBQ3JCLFdBQU8sSUFBSSxhQUFKLENBQWlCO0FBQUE7QUFBakIsTUFBMEMscUJBQTFDLEVBQWlFLElBQWpFLEVBQVA7QUFDRDs7QUFFRCxTQUFPLElBQVAsQ0FBWSxNQUFaLEVBQTRCLFVBQTVCLEVBQTREO0FBQzFELFFBQUksT0FBTyxVQUFQLEtBQXNCLFFBQTFCLEVBQW9DO0FBQ2xDLGFBQU8sVUFBVSxDQUFDLGdCQUFYLENBQTRCLE1BQTVCLEVBQW9DLFVBQXBDLEVBQWdELFVBQWhELENBQVA7QUFDRCxLQUZELE1BRU8sSUFBSSxPQUFPLFVBQVAsS0FBc0IsUUFBMUIsRUFBb0M7QUFDekMsYUFBTyxVQUFVLENBQUMsU0FBWCxDQUFxQixVQUFyQixD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R0FGRCxNQUVPO0FBQ0wsV0FBTyxJQUFJLENBQUMsSUFBRCxFQUFPLFlBQVAsQ0FBWDtBQUNEO0FBQ0YsQ0FyQkgsRUFzQkcsSUF0QkgsQ0FzQk87QUFBQTtBQXRCUCxFQXNCTztBQUFBO0FBdEJQLEVBc0J5RCxDQUFDLElBQUQsRUFBTyxLQUFQLEtBQWdCO0FBQ3JFLE1BQUksV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFMLEVBQWxCOztBQUVBLE1BQUksV0FBVyxLQUFLLElBQXBCLEVBQTBCO0FBQ3hCLFdBQU8sSUFBSSxhQUFKLENBQWlCO0FBQUE7QUFBakIsTUFBcUMsZUFBckMsRUFBc0QsSUFBdEQsRUFBUDtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU8sSUFBSSxDQUFDLFdBQUQsRUFBYyxLQUFkLENBQVg7QUFDRDtBQUNGLENBOUJILEVBK0JHLElBL0JILENBK0JRLFdBL0JSLEVBK0JxQixRQS9CckIsRUErQmdDLElBQUQsSUFBVSxJQUFJLGFBQUosQ0FBa0IsSUFBSSxDQUFDLElBQXZCLEVBQTZCLGVBQTdCLEVBQThDLElBQTlDLEVBL0J6QyxFQWdDRyxJQWhDSCxDQWdDUSxRQWhDUixFQWdDa0IsV0FoQ2xCLEVBZ0MrQixDQUFDLENBQUQsRUFBSSxLQUFKLEtBQzNCLElBQUksYUFBSixDQUFrQixLQUFLLENBQUMsSUFBeEIsRUFBOEIsZUFBOUIsRUFBK0MsSUFBL0MsRUFqQ0osQ0FENEMsQ0FBdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5pbXBvcnQgeyBMT0NBTF9ERUJVRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7XG4gIEJST0tFTl9MT0NBVElPTixcbiAgTk9OX0VYSVNURU5UX0xPQ0FUSU9OLFxuICBTb3VyY2VMb2NhdGlvbixcbiAgU291cmNlUG9zaXRpb24sXG59IGZyb20gJy4uL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZVNsaWNlIH0gZnJvbSAnLi4vc2xpY2UnO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnLi4vc291cmNlJztcbmltcG9ydCB7IElzSW52aXNpYmxlLCBtYXRjaCwgTWF0Y2hBbnksIE1hdGNoRm4gfSBmcm9tICcuL21hdGNoJztcbmltcG9ydCB7XG4gIEFueVBvc2l0aW9uLFxuICBCUk9LRU4sXG4gIENoYXJQb3NpdGlvbixcbiAgSGJzUG9zaXRpb24sXG4gIEludmlzaWJsZVBvc2l0aW9uLFxuICBPZmZzZXRLaW5kLFxuICBTb3VyY2VPZmZzZXQsXG59IGZyb20gJy4vb2Zmc2V0JztcblxuLyoqXG4gKiBBbGwgc3BhbnMgaGF2ZSB0aGVzZSBkZXRhaWxzIGluIGNvbW1vbi5cbiAqL1xuaW50ZXJmYWNlIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZDtcblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIHNwYW4gaW50byBhIHN0cmluZy4gSWYgdGhlIHNwYW4gaXMgYnJva2VuLCByZXR1cm4gYCcnYC5cbiAgICovXG4gIGFzU3RyaW5nKCk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0cyB0aGUgbW9kdWxlIHRoZSBzcGFuIHdhcyBsb2NhdGVkIGluLlxuICAgKi9cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFydGluZyBwb3NpdGlvbiBmb3IgdGhpcyBzcGFuLiBUcnkgdG8gYXZvaWQgY3JlYXRpbmcgbmV3IHBvc2l0aW9uIG9iamVjdHMsIGFzIHRoZXlcbiAgICogY2FjaGUgY29tcHV0YXRpb25zLlxuICAgKi9cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb247XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZW5kaW5nIHBvc2l0aW9uIGZvciB0aGlzIHNwYW4uIFRyeSB0byBhdm9pZCBjcmVhdGluZyBuZXcgcG9zaXRpb24gb2JqZWN0cywgYXMgdGhleVxuICAgKiBjYWNoZSBjb21wdXRhdGlvbnMuXG4gICAqL1xuICBnZXRFbmQoKTogQW55UG9zaXRpb247XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIGBTb3VyY2VMb2NhdGlvbmAgZm9yIHRoaXMgc3BhbiwgcmV0dXJuZWQgYXMgYW4gaW5zdGFuY2Ugb2YgYEhic1NwYW5gLlxuICAgKi9cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSwgd2hlbmV2ZXIgdGhlIGBzdGFydGAgb3IgYGVuZGAgb2YgYSB7QHNlZSBTb3VyY2VPZmZzZXR9IGNoYW5nZXMsIHNwYW5zIGFyZVxuICAgKiBub3RpZmllZCBvZiB0aGUgY2hhbmdlIHNvIHRoZXkgY2FuIHVwZGF0ZSB0aGVtc2VsdmVzLiBUaGlzIHNob3VsZG4ndCBoYXBwZW4gb3V0c2lkZSBvZiBBU1RcbiAgICogcGx1Z2lucy5cbiAgICovXG4gIGxvY0RpZFVwZGF0ZShjaGFuZ2VzOiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgaW50byBhIHtAc2VlIFNlcmlhbGl6ZWRTb3VyY2VTcGFufSwgd2hpY2ggaXMgY29tcGFjdCBhbmQgZGVzaWduZWQgZm9yIHJlYWRhYmlsaXR5IGluXG4gICAqIGNvbnRleHQgbGlrZSBBU1QgRXhwbG9yZXIuIElmIHlvdSBuZWVkIGEge0BzZWUgU291cmNlTG9jYXRpb259LCB1c2Uge0BzZWUgdG9KU09OfS5cbiAgICovXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBBIGBTb3VyY2VTcGFuYCBvYmplY3QgcmVwcmVzZW50cyBhIHNwYW4gb2YgY2hhcmFjdGVycyBpbnNpZGUgb2YgYSB0ZW1wbGF0ZSBzb3VyY2UuXG4gKlxuICogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGBTb3VyY2VTcGFuYCBvYmplY3RzOlxuICpcbiAqIC0gYENvbmNyZXRlU291cmNlU3BhbmAsIHdoaWNoIGNvbnRhaW5zIGJ5dGUgb2Zmc2V0c1xuICogLSBgTGF6eVNvdXJjZVNwYW5gLCB3aGljaCBjb250YWlucyBgU291cmNlTG9jYXRpb25gcyBmcm9tIHRoZSBIYW5kbGViYXJzIEFTVCwgd2hpY2ggY2FuIGJlXG4gKiAgIGNvbnZlcnRlZCB0byBieXRlIG9mZnNldHMgb24gZGVtYW5kLlxuICogLSBgSW52aXNpYmxlU291cmNlU3BhbmAsIHdoaWNoIHJlcHJlc2VudCBzb3VyY2Ugc3RyaW5ncyB0aGF0IGFyZW4ndCBwcmVzZW50IGluIHRoZSBzb3VyY2UsXG4gKiAgIGJlY2F1c2U6XG4gKiAgICAgLSB0aGV5IHdlcmUgY3JlYXRlZCBzeW50aGV0aWNhbGx5XG4gKiAgICAgLSB0aGVpciBsb2NhdGlvbiBpcyBub25zZW5zaWNhbCAodGhlIHNwYW4gaXMgYnJva2VuKVxuICogICAgIC0gdGhleSByZXByZXNlbnQgbm90aGluZyBpbiB0aGUgc291cmNlICh0aGlzIGN1cnJlbnRseSBoYXBwZW5zIG9ubHkgd2hlbiBhIGJ1ZyBpbiB0aGVcbiAqICAgICAgIHVwc3RyZWFtIEhhbmRsZWJhcnMgcGFyc2VyIGZhaWxzIHRvIGFzc2lnbiBhIGxvY2F0aW9uIHRvIGVtcHR5IGJsb2NrcylcbiAqXG4gKiBBdCBhIGhpZ2ggbGV2ZWwsIGFsbCBgU291cmNlU3BhbmAgb2JqZWN0cyBwcm92aWRlOlxuICpcbiAqIC0gYnl0ZSBvZmZzZXRzXG4gKiAtIHNvdXJjZSBpbiBjb2x1bW4gYW5kIGxpbmUgZm9ybWF0XG4gKlxuICogQW5kIHlvdSBjYW4gZG8gdGhlc2Ugb3BlcmF0aW9ucyBvbiBgU291cmNlU3BhbmBzOlxuICpcbiAqIC0gY29sbGFwc2UgaXQgdG8gYSBgU291cmNlU3BhbmAgcmVwcmVzZW50aW5nIGl0cyBzdGFydGluZyBvciBlbmRpbmcgcG9zaXRpb25cbiAqIC0gc2xpY2Ugb3V0IHNvbWUgY2hhcmFjdGVycywgb3B0aW9uYWxseSBza2lwcGluZyBzb21lIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvciBlbmRcbiAqIC0gY3JlYXRlIGEgbmV3IGBTb3VyY2VTcGFuYCB3aXRoIGEgZGlmZmVyZW50IHN0YXJ0aW5nIG9yIGVuZGluZyBvZmZzZXRcbiAqXG4gKiBBbGwgU291cmNlU3BhbiBvYmplY3RzIGltcGxlbWVudCBgU291cmNlTG9jYXRpb25gLCBmb3IgY29tcGF0aWJpbGl0eS4gQWxsIFNvdXJjZVNwYW5cbiAqIG9iamVjdHMgaGF2ZSBhIGB0b0pTT05gIHRoYXQgZW1pdHMgYFNvdXJjZUxvY2F0aW9uYCwgYWxzbyBmb3IgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSwgc3ViY2xhc3NlcyBvZiBgQWJzdHJhY3RTb3VyY2VTcGFuYCBtdXN0IGltcGxlbWVudCBgbG9jRGlkVXBkYXRlYCwgd2hpY2hcbiAqIGhhcHBlbnMgd2hlbiBhbiBBU1QgcGx1Z2luIGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgYHN0YXJ0YCBvciBgZW5kYCBvZiBhIHNwYW4gZGlyZWN0bHkuXG4gKlxuICogVGhlIGdvYWwgaXMgdG8gYXZvaWQgY3JlYXRpbmcgYW55IHByb2JsZW1zIGZvciB1c2UtY2FzZXMgbGlrZSBBU1QgRXhwbG9yZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2VTcGFuIGltcGxlbWVudHMgU291cmNlTG9jYXRpb24ge1xuICBzdGF0aWMgZ2V0IE5PTl9FWElTVEVOVCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ob25FeGlzdGVudCwgTk9OX0VYSVNURU5UX0xPQ0FUSU9OKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgbG9hZChzb3VyY2U6IFNvdXJjZSwgc2VyaWFsaXplZDogU2VyaWFsaXplZFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgc2VyaWFsaXplZCwgc2VyaWFsaXplZCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLnN5bnRoZXRpYyhzZXJpYWxpemVkKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoc2VyaWFsaXplZCkpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCBzZXJpYWxpemVkWzBdLCBzZXJpYWxpemVkWzFdKTtcbiAgICB9IGVsc2UgaWYgKHNlcmlhbGl6ZWQgPT09IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLk5PTl9FWElTVEVOVDtcbiAgICB9IGVsc2UgaWYgKHNlcmlhbGl6ZWQgPT09IE9mZnNldEtpbmQuQnJva2VuKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5icm9rZW4oQlJPS0VOX0xPQ0FUSU9OKTtcbiAgICB9XG5cbiAgICBhc3NlcnROZXZlcihzZXJpYWxpemVkKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JIYnNMb2Moc291cmNlOiBTb3VyY2UsIGxvYzogU291cmNlTG9jYXRpb24pOiBTb3VyY2VTcGFuIHtcbiAgICBsZXQgc3RhcnQgPSBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBsb2Muc3RhcnQpO1xuICAgIGxldCBlbmQgPSBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBsb2MuZW5kKTtcbiAgICByZXR1cm4gbmV3IEhic1NwYW4oc291cmNlLCB7IHN0YXJ0LCBlbmQgfSwgbG9jKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2U6IFNvdXJjZSwgc3RhcnRQb3M6IG51bWJlciwgZW5kUG9zOiBudW1iZXIpOiBTb3VyY2VTcGFuIHtcbiAgICBsZXQgc3RhcnQgPSBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgc3RhcnRQb3MpO1xuICAgIGxldCBlbmQgPSBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgZW5kUG9zKTtcblxuICAgIHJldHVybiBuZXcgQ2hhclBvc2l0aW9uU3Bhbihzb3VyY2UsIHsgc3RhcnQsIGVuZCB9KS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgc3ludGhldGljKGNoYXJzOiBzdHJpbmcpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWMsIE5PTl9FWElTVEVOVF9MT0NBVElPTiwgY2hhcnMpLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBicm9rZW4ocG9zOiBTb3VyY2VMb2NhdGlvbiA9IEJST0tFTl9MT0NBVElPTik6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgcG9zKS53cmFwKCk7XG4gIH1cblxuICByZWFkb25seSBpc0ludmlzaWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IFNwYW5EYXRhICYgQW55U3Bhbikge1xuICAgIHRoaXMuaXNJbnZpc2libGUgPVxuICAgICAgZGF0YS5raW5kICE9PSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiAmJiBkYXRhLmtpbmQgIT09IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG4gIH1cblxuICBnZXRTdGFydCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0U3RhcnQoKS53cmFwKCk7XG4gIH1cblxuICBnZXRFbmQoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldEVuZCgpLndyYXAoKTtcbiAgfVxuXG4gIGdldCBsb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIGxldCBzcGFuID0gdGhpcy5kYXRhLnRvSGJzU3BhbigpO1xuICAgIHJldHVybiBzcGFuID09PSBudWxsID8gQlJPS0VOX0xPQ0FUSU9OIDogc3Bhbi50b0hic0xvYygpO1xuICB9XG5cbiAgZ2V0IG1vZHVsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0TW9kdWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFydGluZyBgU291cmNlUG9zaXRpb25gIGZvciB0aGlzIGBTb3VyY2VTcGFuYCwgbGF6aWx5IGNvbXB1dGluZyBpdCBpZiBuZWVkZWQuXG4gICAqL1xuICBnZXQgc3RhcnRQb3NpdGlvbigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLnN0YXJ0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZW5kaW5nIGBTb3VyY2VQb3NpdGlvbmAgZm9yIHRoaXMgYFNvdXJjZVNwYW5gLCBsYXppbHkgY29tcHV0aW5nIGl0IGlmIG5lZWRlZC5cbiAgICovXG4gIGdldCBlbmRQb3NpdGlvbigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLmVuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdXBwb3J0IGNvbnZlcnRpbmcgQVNUdjEgbm9kZXMgaW50byBhIHNlcmlhbGl6ZWQgZm9ybWF0IHVzaW5nIEpTT04uc3RyaW5naWZ5LlxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2M7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHNwYW4gd2l0aCB0aGUgY3VycmVudCBzcGFuJ3MgZW5kIGFuZCBhIG5ldyBiZWdpbm5pbmcuXG4gICAqL1xuICB3aXRoU3RhcnQob3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKG90aGVyLmRhdGEsIHRoaXMuZGF0YS5nZXRFbmQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHNwYW4gd2l0aCB0aGUgY3VycmVudCBzcGFuJ3MgYmVnaW5uaW5nIGFuZCBhIG5ldyBlbmRpbmcuXG4gICAqL1xuICB3aXRoRW5kKHRoaXM6IFNvdXJjZVNwYW4sIG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEuZ2V0U3RhcnQoKSwgb3RoZXIuZGF0YSk7XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGEuYXNTdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgYFNvdXJjZVNwYW5gIGludG8gYSBgU291cmNlU2xpY2VgLiBJbiBkZWJ1ZyBtb2RlLCB0aGlzIG1ldGhvZCBvcHRpb25hbGx5IGNoZWNrc1xuICAgKiB0aGF0IHRoZSBieXRlIG9mZnNldHMgcmVwcmVzZW50ZWQgYnkgdGhpcyBgU291cmNlU3BhbmAgYWN0dWFsbHkgY29ycmVzcG9uZCB0byB0aGUgZXhwZWN0ZWRcbiAgICogc3RyaW5nLlxuICAgKi9cbiAgdG9TbGljZShleHBlY3RlZD86IHN0cmluZyk6IFNvdXJjZVNsaWNlIHtcbiAgICBsZXQgY2hhcnMgPSB0aGlzLmRhdGEuYXNTdHJpbmcoKTtcblxuICAgIGlmIChERUJVRykge1xuICAgICAgaWYgKGV4cGVjdGVkICE9PSB1bmRlZmluZWQgJiYgY2hhcnMgIT09IGV4cGVjdGVkKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgdW5leHBlY3RlZGx5IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBjaGFyc1xuICAgICAgICAgICl9IHdoZW4gc2xpY2luZyBzb3VyY2UsIGJ1dCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KGV4cGVjdGVkKX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTbGljZSh7XG4gICAgICBsb2M6IHRoaXMsXG4gICAgICBjaGFyczogZXhwZWN0ZWQgfHwgY2hhcnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugc3RhcnRQb3NpdGlvbiBpbnN0ZWFkXG4gICAqL1xuICBnZXQgc3RhcnQoKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5zdGFydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aXRoU3RhcnQgaW5zdGVhZFxuICAgKi9cbiAgc2V0IHN0YXJ0KHBvc2l0aW9uOiBTb3VyY2VQb3NpdGlvbikge1xuICAgIHRoaXMuZGF0YS5sb2NEaWRVcGRhdGUoeyBzdGFydDogcG9zaXRpb24gfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZW5kUG9zaXRpb24gaW5zdGVhZFxuICAgKi9cbiAgZ2V0IGVuZCgpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLmVuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSB3aXRoRW5kIGluc3RlYWRcbiAgICovXG4gIHNldCBlbmQocG9zaXRpb246IFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgdGhpcy5kYXRhLmxvY0RpZFVwZGF0ZSh7IGVuZDogcG9zaXRpb24gfSk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgbW9kdWxlIGluc3RlYWRcbiAgICovXG4gIGdldCBzb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGU7XG4gIH1cblxuICBjb2xsYXBzZSh3aGVyZTogJ3N0YXJ0JyB8ICdlbmQnKTogU291cmNlU3BhbiB7XG4gICAgc3dpdGNoICh3aGVyZSkge1xuICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFydCgpLmNvbGxhcHNlZCgpO1xuICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW5kKCkuY29sbGFwc2VkKCk7XG4gICAgfVxuICB9XG5cbiAgZXh0ZW5kKG90aGVyOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLmdldFN0YXJ0KCksIG90aGVyLmRhdGEuZ2V0RW5kKCkpO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgc2xpY2UoeyBza2lwU3RhcnQgPSAwLCBza2lwRW5kID0gMCB9OiB7IHNraXBTdGFydD86IG51bWJlcjsgc2tpcEVuZD86IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0KS5kYXRhLCB0aGlzLmdldEVuZCgpLm1vdmUoLXNraXBFbmQpLmRhdGEpO1xuICB9XG5cbiAgc2xpY2VTdGFydENoYXJzKHsgc2tpcFN0YXJ0ID0gMCwgY2hhcnMgfTogeyBza2lwU3RhcnQ/OiBudW1iZXI7IGNoYXJzOiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCkuZGF0YSwgdGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0ICsgY2hhcnMpLmRhdGEpO1xuICB9XG5cbiAgc2xpY2VFbmRDaGFycyh7IHNraXBFbmQgPSAwLCBjaGFycyB9OiB7IHNraXBFbmQ/OiBudW1iZXI7IGNoYXJzOiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0RW5kKCkubW92ZShza2lwRW5kIC0gY2hhcnMpLmRhdGEsIHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKC1za2lwRW5kKS5kYXRhKTtcbiAgfVxufVxuXG50eXBlIEFueVNwYW4gPSBIYnNTcGFuIHwgQ2hhclBvc2l0aW9uU3BhbiB8IEludmlzaWJsZVNwYW47XG5cbmNsYXNzIENoYXJQb3NpdGlvblNwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbjtcblxuICBfbG9jUG9zU3BhbjogSGJzU3BhbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHNvdXJjZTogU291cmNlLFxuICAgIHJlYWRvbmx5IGNoYXJQb3NpdGlvbnM6IHsgc3RhcnQ6IENoYXJQb3NpdGlvbjsgZW5kOiBDaGFyUG9zaXRpb24gfVxuICApIHt9XG5cbiAgd3JhcCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZVNwYW4odGhpcyk7XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5zbGljZSh0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQuY2hhclBvcywgdGhpcy5jaGFyUG9zaXRpb25zLmVuZC5jaGFyUG9zKTtcbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5tb2R1bGU7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydDtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvc2l0aW9ucy5lbmQ7XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoKSB7XG4gICAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgdXBkYXRpbmcgYSBsb2NhdGlvbiB0aGF0IGNhbWUgZnJvbSBhIENoYXJQb3NpdGlvbiBzcGFuIGRvZXNuJ3Qgd29yayByZWxpYWJseS4gRG9uJ3QgdHJ5IHRvIHVwZGF0ZSBsb2NhdGlvbnMgYWZ0ZXIgdGhlIHBsdWdpbiBwaGFzZWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4gfCBudWxsIHtcbiAgICBsZXQgbG9jUG9zU3BhbiA9IHRoaXMuX2xvY1Bvc1NwYW47XG5cbiAgICBpZiAobG9jUG9zU3BhbiA9PT0gbnVsbCkge1xuICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0LnRvSGJzUG9zKCk7XG4gICAgICBsZXQgZW5kID0gdGhpcy5jaGFyUG9zaXRpb25zLmVuZC50b0hic1BvcygpO1xuXG4gICAgICBpZiAoc3RhcnQgPT09IG51bGwgfHwgZW5kID09PSBudWxsKSB7XG4gICAgICAgIGxvY1Bvc1NwYW4gPSB0aGlzLl9sb2NQb3NTcGFuID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jUG9zU3BhbiA9IHRoaXMuX2xvY1Bvc1NwYW4gPSBuZXcgSGJzU3Bhbih0aGlzLnNvdXJjZSwge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY1Bvc1NwYW4gPT09IEJST0tFTiA/IG51bGwgOiBsb2NQb3NTcGFuO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuIHtcbiAgICBsZXQge1xuICAgICAgc3RhcnQ6IHsgY2hhclBvczogc3RhcnQgfSxcbiAgICAgIGVuZDogeyBjaGFyUG9zOiBlbmQgfSxcbiAgICB9ID0gdGhpcy5jaGFyUG9zaXRpb25zO1xuXG4gICAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICAgIHJldHVybiBzdGFydDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtzdGFydCwgZW5kXTtcbiAgICB9XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IENoYXJQb3NpdGlvblNwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIYnNTcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcblxuICBfY2hhclBvc1NwYW46IENoYXJQb3NpdGlvblNwYW4gfCBCUk9LRU4gfCBudWxsID0gbnVsbDtcblxuICAvLyB0aGUgc291cmNlIGxvY2F0aW9uIGZyb20gSGFuZGxlYmFycyArIEFTVCBQbHVnaW5zIC0tIGNvdWxkIGJlIHdyb25nXG4gIF9wcm92aWRlZEhic0xvYzogU291cmNlTG9jYXRpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHNvdXJjZTogU291cmNlLFxuICAgIHJlYWRvbmx5IGhic1Bvc2l0aW9uczogeyBzdGFydDogSGJzUG9zaXRpb247IGVuZDogSGJzUG9zaXRpb24gfSxcbiAgICBwcm92aWRlZEhic0xvYzogU291cmNlTG9jYXRpb24gfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLl9wcm92aWRlZEhic0xvYyA9IHByb3ZpZGVkSGJzTG9jO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4ge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy50b0NoYXJQb3NTcGFuKCk7XG4gICAgcmV0dXJuIGNoYXJQb3MgPT09IG51bGwgPyBPZmZzZXRLaW5kLkJyb2tlbiA6IGNoYXJQb3Mud3JhcCgpLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZVNwYW4odGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVByb3ZpZGVkKHBvczogU291cmNlUG9zaXRpb24sIGVkZ2U6ICdzdGFydCcgfCAnZW5kJykge1xuICAgIGlmICh0aGlzLl9wcm92aWRlZEhic0xvYykge1xuICAgICAgdGhpcy5fcHJvdmlkZWRIYnNMb2NbZWRnZV0gPSBwb3M7XG4gICAgfVxuXG4gICAgLy8gaW52YWxpZGF0ZSBjb21wdXRlZCBjaGFyYWN0ZXIgb2Zmc2V0c1xuICAgIHRoaXMuX2NoYXJQb3NTcGFuID0gbnVsbDtcbiAgICB0aGlzLl9wcm92aWRlZEhic0xvYyA9IHtcbiAgICAgIHN0YXJ0OiBwb3MsXG4gICAgICBlbmQ6IHBvcyxcbiAgICB9O1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKHsgc3RhcnQsIGVuZCB9OiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pOiB2b2lkIHtcbiAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVQcm92aWRlZChzdGFydCwgJ3N0YXJ0Jyk7XG4gICAgICB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydCA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgc3RhcnQsIG51bGwpO1xuICAgIH1cblxuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGVQcm92aWRlZChlbmQsICdlbmQnKTtcbiAgICAgIHRoaXMuaGJzUG9zaXRpb25zLmVuZCA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgZW5kLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBzcGFuID0gdGhpcy50b0NoYXJQb3NTcGFuKCk7XG4gICAgcmV0dXJuIHNwYW4gPT09IG51bGwgPyAnJyA6IHNwYW4uYXNTdHJpbmcoKTtcbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5tb2R1bGU7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0O1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3NpdGlvbnMuZW5kO1xuICB9XG5cbiAgdG9IYnNMb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQuaGJzUG9zLFxuICAgICAgZW5kOiB0aGlzLmhic1Bvc2l0aW9ucy5lbmQuaGJzUG9zLFxuICAgIH07XG4gIH1cblxuICB0b0hic1NwYW4oKTogSGJzU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IENoYXJQb3NpdGlvblNwYW4gfCBudWxsIHtcbiAgICBsZXQgY2hhclBvc1NwYW4gPSB0aGlzLl9jaGFyUG9zU3BhbjtcblxuICAgIGlmIChjaGFyUG9zU3BhbiA9PT0gbnVsbCkge1xuICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQudG9DaGFyUG9zKCk7XG4gICAgICBsZXQgZW5kID0gdGhpcy5oYnNQb3NpdGlvbnMuZW5kLnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgIGNoYXJQb3NTcGFuID0gdGhpcy5fY2hhclBvc1NwYW4gPSBuZXcgQ2hhclBvc2l0aW9uU3Bhbih0aGlzLnNvdXJjZSwge1xuICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgIGVuZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFyUG9zU3BhbiA9IHRoaXMuX2NoYXJQb3NTcGFuID0gQlJPS0VOO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhclBvc1NwYW4gPT09IEJST0tFTiA/IG51bGwgOiBjaGFyUG9zU3BhbjtcbiAgfVxufVxuXG5jbGFzcyBJbnZpc2libGVTcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kLkJyb2tlbiB8IE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudCxcbiAgICAvLyB3aGF0ZXZlciB3YXMgcHJvdmlkZWQsIHBvc3NpYmx5IGJyb2tlblxuICAgIHJlYWRvbmx5IGxvYzogU291cmNlTG9jYXRpb24sXG4gICAgLy8gaWYgdGhlIHNwYW4gcmVwcmVzZW50cyBhIHN5bnRoZXRpYyBzdHJpbmdcbiAgICByZWFkb25seSBzdHJpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge31cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiB7XG4gICAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5Ccm9rZW46XG4gICAgICBjYXNlIE9mZnNldEtpbmQuTm9uRXhpc3RlbnQ6XG4gICAgICAgIHJldHVybiB0aGlzLmtpbmQ7XG4gICAgICBjYXNlIE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljOlxuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZVNwYW4odGhpcyk7XG4gIH1cblxuICBhc1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0cmluZyB8fCAnJztcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSh7IHN0YXJ0LCBlbmQgfTogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KSB7XG4gICAgaWYgKHN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9jLnN0YXJ0ID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvYy5lbmQgPSBlbmQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIHJlZmxlY3QgdGhlIGFjdHVhbCBtb2R1bGUgdGhpcyBzcGFuIG9yaWdpbmF0ZWQgZnJvbVxuICAgIHJldHVybiAnYW4gdW5rbm93biBtb2R1bGUnO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24odGhpcy5raW5kLCB0aGlzLmxvYy5zdGFydCk7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24odGhpcy5raW5kLCB0aGlzLmxvYy5lbmQpO1xuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBJbnZpc2libGVTcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRvSGJzTG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4gQlJPS0VOX0xPQ0FUSU9OO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzcGFuOiBNYXRjaEZuPFNvdXJjZVNwYW4+ID0gbWF0Y2goKG0pID0+XG4gIG1cbiAgICAud2hlbihPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+XG4gICAgICBuZXcgSGJzU3BhbihsZWZ0LnNvdXJjZSwge1xuICAgICAgICBzdGFydDogbGVmdCxcbiAgICAgICAgZW5kOiByaWdodCxcbiAgICAgIH0pLndyYXAoKVxuICAgIClcbiAgICAud2hlbihPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT5cbiAgICAgIG5ldyBDaGFyUG9zaXRpb25TcGFuKGxlZnQuc291cmNlLCB7XG4gICAgICAgIHN0YXJ0OiBsZWZ0LFxuICAgICAgICBlbmQ6IHJpZ2h0LFxuICAgICAgfSkud3JhcCgpXG4gICAgKVxuICAgIC53aGVuKE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgIGxldCByaWdodENoYXJQb3MgPSByaWdodC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKHJpZ2h0Q2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIEJST0tFTl9MT0NBVElPTikud3JhcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwYW4obGVmdCwgcmlnaHRDaGFyUG9zKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC53aGVuKE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+IHtcbiAgICAgIGxldCBsZWZ0Q2hhclBvcyA9IGxlZnQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChsZWZ0Q2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIEJST0tFTl9MT0NBVElPTikud3JhcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwYW4obGVmdENoYXJQb3MsIHJpZ2h0KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC53aGVuKElzSW52aXNpYmxlLCBNYXRjaEFueSwgKGxlZnQpID0+IG5ldyBJbnZpc2libGVTcGFuKGxlZnQua2luZCwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCkpXG4gICAgLndoZW4oTWF0Y2hBbnksIElzSW52aXNpYmxlLCAoXywgcmlnaHQpID0+XG4gICAgICBuZXcgSW52aXNpYmxlU3BhbihyaWdodC5raW5kLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKVxuICAgIClcbik7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4gPVxuICB8IC8qKiBjb2xsYXBzZWQgKi8gbnVtYmVyXG4gIHwgLyoqIG5vcm1hbCAqLyBbc3RhcnQ6IG51bWJlciwgc2l6ZTogbnVtYmVyXVxuICB8IC8qKiBzeW50aGV0aWMgKi8gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkU291cmNlU3BhbiA9XG4gIHwgU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhblxuICB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnRcbiAgfCBPZmZzZXRLaW5kLkJyb2tlbjtcbiJdLCJzb3VyY2VSb290IjoiIn0=

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

var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _span;
import { SourceSpan } from './span';
export class SpanList {
constructor(span = []) {
_span.set(this, void 0);
__classPrivateFieldSet(this, _span, span);
this._span = span;
}

@@ -33,13 +12,11 @@

add(offset) {
__classPrivateFieldGet(this, _span).push(offset);
this._span.push(offset);
}
getRangeOffset(fallback) {
if (__classPrivateFieldGet(this, _span).length === 0) {
if (this._span.length === 0) {
return fallback;
} else {
let first = __classPrivateFieldGet(this, _span)[0];
let last = __classPrivateFieldGet(this, _span)[__classPrivateFieldGet(this, _span).length - 1];
let first = this._span[0];
let last = this._span[this._span.length - 1];
return first.extend(last);

@@ -50,3 +27,2 @@ }

}
_span = new WeakMap();
export function loc(span) {

@@ -77,2 +53,2 @@ if (Array.isArray(span)) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsU0FBdUIsVUFBdkIsUUFBeUMsUUFBekM7QUFPQSxPQUFNLE1BQU8sUUFBUCxDQUFlO0FBU25CLEVBQUEsV0FBQSxDQUFZLElBQUEsR0FBcUIsRUFBakMsRUFBbUM7QUFGbkMsSUFBQSxLQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUE7O0FBR0UsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBSSxLQUFKLEVBQWEsSUFBYixDQUFBO0FBQ0Q7O0FBUkQsU0FBTyxLQUFQLENBQWEsSUFBYixFQUFvQyxRQUFBLEdBQXVCLFVBQVUsQ0FBQyxZQUF0RSxFQUFrRjtBQUNoRixXQUFPLElBQUksUUFBSixDQUFhLElBQUksQ0FBQyxHQUFMLENBQVMsR0FBVCxDQUFiLEVBQTRCLGNBQTVCLENBQTJDLFFBQTNDLENBQVA7QUFDRDs7QUFRRCxFQUFBLEdBQUcsQ0FBQyxNQUFELEVBQW1CO0FBQ3BCLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQVcsSUFBWCxDQUFnQixNQUFoQjtBQUNEOztBQUVELEVBQUEsY0FBYyxDQUFDLFFBQUQsRUFBcUI7QUFDakMsUUFBSSxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBVyxNQUFYLEtBQXNCLENBQTFCLEVBQTZCO0FBQzNCLGFBQU8sUUFBUDtBQUNELEtBRkQsTUFFTztBQUNMLFVBQUksS0FBSyxHQUFHLHNCQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFXLENBQVgsQ0FBWjs7QUFDQSxVQUFJLElBQUksR0FBRyxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBVyxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBVyxNQUFYLEdBQW9CLENBQS9CLENBQVg7O0FBRUEsYUFBTyxLQUFLLENBQUMsTUFBTixDQUFhLElBQWIsQ0FBUDtBQUNEO0FBQ0Y7O0FBMUJrQjs7QUErQnJCLE9BQU0sU0FBVSxHQUFWLENBQWMsSUFBZCxFQUFpQztBQUNyQyxNQUFJLEtBQUssQ0FBQyxPQUFOLENBQWMsSUFBZCxDQUFKLEVBQXlCO0FBQ3ZCLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFELENBQWhCO0FBQ0EsUUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFMLEdBQWMsQ0FBZixDQUFmO0FBRUEsV0FBTyxHQUFHLENBQUMsS0FBRCxDQUFILENBQVcsTUFBWCxDQUFrQixHQUFHLENBQUMsSUFBRCxDQUFyQixDQUFQO0FBQ0QsR0FMRCxNQUtPLElBQUksSUFBSSxZQUFZLFVBQXBCLEVBQWdDO0FBQ3JDLFdBQU8sSUFBUDtBQUNELEdBRk0sTUFFQTtBQUNMLFdBQU8sSUFBSSxDQUFDLEdBQVo7QUFDRDtBQUNGO0FBSUQsT0FBTSxTQUFVLE9BQVYsQ0FBa0IsSUFBbEIsRUFBMEM7QUFDOUMsTUFBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQWQsS0FBdUIsSUFBSSxDQUFDLE1BQUwsS0FBZ0IsQ0FBM0MsRUFBOEM7QUFDNUMsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsU0FBTyxJQUFQO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsUUFBVixDQUFtQixRQUFuQixFQUFpRCxRQUFqRCxFQUFxRTtBQUN6RSxNQUFJLE9BQU8sQ0FBQyxRQUFELENBQVgsRUFBdUI7QUFDckIsV0FBTyxHQUFHLENBQUMsUUFBRCxDQUFWO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBTyxRQUFQO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB0eXBlIHsgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuLCBMb2NhdGVkV2l0aFNwYW4gfSBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4vc3Bhbic7XG5cbmV4cG9ydCB0eXBlIEhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhTcGFuIHwgUHJlc2VudEFycmF5PExvY2F0ZWRXaXRoU3Bhbj47XG5leHBvcnQgdHlwZSBNYXliZUhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbltdIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgVG9Tb3VyY2VPZmZzZXQgPSBudW1iZXIgfCBTb3VyY2VPZmZzZXQ7XG5cbmV4cG9ydCBjbGFzcyBTcGFuTGlzdCB7XG4gIHN0YXRpYyByYW5nZShzcGFuOiBQcmVzZW50QXJyYXk8SGFzU291cmNlU3Bhbj4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuID0gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNwYW5MaXN0KHNwYW4ubWFwKGxvYykpLmdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrKTtcbiAgfVxuXG4gICNzcGFuOiBTb3VyY2VTcGFuW107XG5cbiAgY29uc3RydWN0b3Ioc3BhbjogU291cmNlU3BhbltdID0gW10pIHtcbiAgICB0aGlzLiNzcGFuID0gc3BhbjtcbiAgfVxuXG4gIGFkZChvZmZzZXQ6IFNvdXJjZVNwYW4pOiB2b2lkIHtcbiAgICB0aGlzLiNzcGFuLnB1c2gob2Zmc2V0KTtcbiAgfVxuXG4gIGdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHRoaXMuI3NwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdCA9IHRoaXMuI3NwYW5bMF07XG4gICAgICBsZXQgbGFzdCA9IHRoaXMuI3NwYW5bdGhpcy4jc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgICAgcmV0dXJuIGZpcnN0LmV4dGVuZChsYXN0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgW0hhc1NvdXJjZVNwYW4sIC4uLkhhc1NvdXJjZVNwYW5bXV07XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2Moc3BhbjogSGFzU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSkge1xuICAgIGxldCBmaXJzdCA9IHNwYW5bMF07XG4gICAgbGV0IGxhc3QgPSBzcGFuW3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gbG9jKGZpcnN0KS5leHRlbmQobG9jKGxhc3QpKTtcbiAgfSBlbHNlIGlmIChzcGFuIGluc3RhbmNlb2YgU291cmNlU3Bhbikge1xuICAgIHJldHVybiBzcGFuO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGFuLmxvYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXliZUhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IE1heWJlSGFzU291cmNlU3BhbltdO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3BhbihzcGFuOiBNYXliZUhhc1NvdXJjZVNwYW4pOiBzcGFuIGlzIEhhc1NvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSAmJiBzcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVMb2MobG9jYXRpb246IE1heWJlSGFzU291cmNlU3BhbiwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKGhhc1NwYW4obG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvYyhsb2NhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxTQUF1QixVQUF2QixRQUF5QyxRQUF6QztBQU9BLE9BQU0sTUFBTyxRQUFQLENBQWU7QUFTbkIsRUFBQSxXQUFBLENBQVksSUFBQSxHQUFxQixFQUFqQyxFQUFtQztBQUNqQyxTQUFLLEtBQUwsR0FBYSxJQUFiO0FBQ0Q7O0FBUkQsU0FBTyxLQUFQLENBQWEsSUFBYixFQUFvQyxRQUFBLEdBQXVCLFVBQVUsQ0FBQyxZQUF0RSxFQUFrRjtBQUNoRixXQUFPLElBQUksUUFBSixDQUFhLElBQUksQ0FBQyxHQUFMLENBQVMsR0FBVCxDQUFiLEVBQTRCLGNBQTVCLENBQTJDLFFBQTNDLENBQVA7QUFDRDs7QUFRRCxFQUFBLEdBQUcsQ0FBQyxNQUFELEVBQW1CO0FBQ3BCLFNBQUssS0FBTCxDQUFXLElBQVgsQ0FBZ0IsTUFBaEI7QUFDRDs7QUFFRCxFQUFBLGNBQWMsQ0FBQyxRQUFELEVBQXFCO0FBQ2pDLFFBQUksS0FBSyxLQUFMLENBQVcsTUFBWCxLQUFzQixDQUExQixFQUE2QjtBQUMzQixhQUFPLFFBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJLEtBQUssR0FBRyxLQUFLLEtBQUwsQ0FBVyxDQUFYLENBQVo7QUFDQSxVQUFJLElBQUksR0FBRyxLQUFLLEtBQUwsQ0FBVyxLQUFLLEtBQUwsQ0FBVyxNQUFYLEdBQW9CLENBQS9CLENBQVg7QUFFQSxhQUFPLEtBQUssQ0FBQyxNQUFOLENBQWEsSUFBYixDQUFQO0FBQ0Q7QUFDRjs7QUExQmtCO0FBK0JyQixPQUFNLFNBQVUsR0FBVixDQUFjLElBQWQsRUFBaUM7QUFDckMsTUFBSSxLQUFLLENBQUMsT0FBTixDQUFjLElBQWQsQ0FBSixFQUF5QjtBQUN2QixRQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBRCxDQUFoQjtBQUNBLFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTCxHQUFjLENBQWYsQ0FBZjtBQUVBLFdBQU8sR0FBRyxDQUFDLEtBQUQsQ0FBSCxDQUFXLE1BQVgsQ0FBa0IsR0FBRyxDQUFDLElBQUQsQ0FBckIsQ0FBUDtBQUNELEdBTEQsTUFLTyxJQUFJLElBQUksWUFBWSxVQUFwQixFQUFnQztBQUNyQyxXQUFPLElBQVA7QUFDRCxHQUZNLE1BRUE7QUFDTCxXQUFPLElBQUksQ0FBQyxHQUFaO0FBQ0Q7QUFDRjtBQUlELE9BQU0sU0FBVSxPQUFWLENBQWtCLElBQWxCLEVBQTBDO0FBQzlDLE1BQUksS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFkLEtBQXVCLElBQUksQ0FBQyxNQUFMLEtBQWdCLENBQTNDLEVBQThDO0FBQzVDLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU8sSUFBUDtBQUNEO0FBRUQsT0FBTSxTQUFVLFFBQVYsQ0FBbUIsUUFBbkIsRUFBaUQsUUFBakQsRUFBcUU7QUFDekUsTUFBSSxPQUFPLENBQUMsUUFBRCxDQUFYLEVBQXVCO0FBQ3JCLFdBQU8sR0FBRyxDQUFDLFFBQUQsQ0FBVjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU8sUUFBUDtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgdHlwZSB7IFByZXNlbnRBcnJheSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbiwgTG9jYXRlZFdpdGhTcGFuIH0gZnJvbSAnLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgdHlwZSBIYXNTcGFuID0gU291cmNlU3BhbiB8IExvY2F0ZWRXaXRoU3BhbiB8IFByZXNlbnRBcnJheTxMb2NhdGVkV2l0aFNwYW4+O1xuZXhwb3J0IHR5cGUgTWF5YmVIYXNTcGFuID0gU291cmNlU3BhbiB8IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW5bXSB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFRvU291cmNlT2Zmc2V0ID0gbnVtYmVyIHwgU291cmNlT2Zmc2V0O1xuXG5leHBvcnQgY2xhc3MgU3Bhbkxpc3Qge1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogUHJlc2VudEFycmF5PEhhc1NvdXJjZVNwYW4+KTogU291cmNlU3BhbjtcbiAgc3RhdGljIHJhbmdlKHNwYW46IEhhc1NvdXJjZVNwYW5bXSwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3BhbiA9IFNvdXJjZVNwYW4uTk9OX0VYSVNURU5UKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTcGFuTGlzdChzcGFuLm1hcChsb2MpKS5nZXRSYW5nZU9mZnNldChmYWxsYmFjayk7XG4gIH1cblxuICBfc3BhbjogU291cmNlU3BhbltdO1xuXG4gIGNvbnN0cnVjdG9yKHNwYW46IFNvdXJjZVNwYW5bXSA9IFtdKSB7XG4gICAgdGhpcy5fc3BhbiA9IHNwYW47XG4gIH1cblxuICBhZGQob2Zmc2V0OiBTb3VyY2VTcGFuKTogdm9pZCB7XG4gICAgdGhpcy5fc3Bhbi5wdXNoKG9mZnNldCk7XG4gIH1cblxuICBnZXRSYW5nZU9mZnNldChmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIGlmICh0aGlzLl9zcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZmlyc3QgPSB0aGlzLl9zcGFuWzBdO1xuICAgICAgbGV0IGxhc3QgPSB0aGlzLl9zcGFuW3RoaXMuX3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICAgIHJldHVybiBmaXJzdC5leHRlbmQobGFzdCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IFtIYXNTb3VyY2VTcGFuLCAuLi5IYXNTb3VyY2VTcGFuW11dO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jKHNwYW46IEhhc1NvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BhbikpIHtcbiAgICBsZXQgZmlyc3QgPSBzcGFuWzBdO1xuICAgIGxldCBsYXN0ID0gc3BhbltzcGFuLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGxvYyhmaXJzdCkuZXh0ZW5kKGxvYyhsYXN0KSk7XG4gIH0gZWxzZSBpZiAoc3BhbiBpbnN0YW5jZW9mIFNvdXJjZVNwYW4pIHtcbiAgICByZXR1cm4gc3BhbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3Bhbi5sb2M7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWF5YmVIYXNTb3VyY2VTcGFuID0geyBsb2M6IFNvdXJjZVNwYW4gfSB8IFNvdXJjZVNwYW4gfCBNYXliZUhhc1NvdXJjZVNwYW5bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1NwYW4oc3BhbjogTWF5YmVIYXNTb3VyY2VTcGFuKTogc3BhbiBpcyBIYXNTb3VyY2VTcGFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BhbikgJiYgc3Bhbi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heWJlTG9jKGxvY2F0aW9uOiBNYXliZUhhc1NvdXJjZVNwYW4sIGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gIGlmIChoYXNTcGFuKGxvY2F0aW9uKSkge1xuICAgIHJldHVybiBsb2MobG9jYXRpb24pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -1,20 +0,1 @@

var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _hasEval;
import { dict } from '@glimmer/util';

@@ -44,4 +25,3 @@ import { isUpperCase } from './utils';

this.usedTemplateLocals = [];
_hasEval.set(this, false);
this._hasEval = false;
}

@@ -54,7 +34,7 @@

setHasEval() {
__classPrivateFieldSet(this, _hasEval, true);
this._hasEval = true;
}
get hasEval() {
return __classPrivateFieldGet(this, _hasEval);
return this._hasEval;
}

@@ -137,3 +117,2 @@

}
_hasEval = new WeakMap();
export class BlockSymbolTable extends SymbolTable {

@@ -192,2 +171,2 @@ constructor(parent, symbols, slots) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxTQUFTLElBQVQsUUFBcUIsZUFBckI7QUFHQSxTQUFTLFdBQVQsUUFBNEIsU0FBNUI7QUFFQSxPQUFNLE1BQWdCLFdBQWhCLENBQTJCO0FBQy9CLFNBQU8sR0FBUCxDQUNFLE1BREYsRUFFRSxzQkFGRixFQUVtRDtBQUVqRCxXQUFPLElBQUksa0JBQUosQ0FBdUIsTUFBdkIsRUFBK0Isc0JBQS9CLENBQVA7QUFDRDs7QUFlRCxFQUFBLEtBQUssQ0FBQyxNQUFELEVBQWlCO0FBQ3BCLFFBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFQLENBQVksSUFBRCxJQUFVLEtBQUssUUFBTCxDQUFjLElBQWQsQ0FBckIsQ0FBZDtBQUNBLFdBQU8sSUFBSSxnQkFBSixDQUFxQixJQUFyQixFQUEyQixNQUEzQixFQUFtQyxPQUFuQyxDQUFQO0FBQ0Q7O0FBeEI4QjtBQTJCakMsT0FBTSxNQUFPLGtCQUFQLFNBQWtDLFdBQWxDLENBQTZDO0FBQ2pELEVBQUEsV0FBQSxDQUNVLGNBRFYsRUFFVSxzQkFGVixFQUUyRDtBQUV6RDtBQUhRLFNBQUEsY0FBQSxHQUFBLGNBQUE7QUFDQSxTQUFBLHNCQUFBLEdBQUEsc0JBQUE7QUFLSCxTQUFBLE9BQUEsR0FBb0IsRUFBcEI7QUFDQSxTQUFBLE1BQUEsR0FBbUIsRUFBbkI7QUFFQyxTQUFBLElBQUEsR0FBTyxDQUFQO0FBQ0EsU0FBQSxLQUFBLEdBQVEsSUFBSSxFQUFaO0FBQ0EsU0FBQSxNQUFBLEdBQVMsSUFBSSxFQUFiO0FBQ0EsU0FBQSxrQkFBQSxHQUErQixFQUEvQjs7QUFFUixJQUFBLFFBQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUFXLEtBQVg7QUFWQzs7QUFZRCxFQUFBLHFCQUFxQixHQUFBO0FBQ25CLFdBQU8sS0FBSyxrQkFB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LE1BQUwsQ0FBWSxVQUFaO0FBQ0Q7O0FBRUQsRUFBQSxZQUFZLENBQUMsSUFBRCxFQUFlLFVBQWYsRUFBa0Q7QUFDNUQsV0FBTyxLQUFLLE1BQUwsQ0FBWSxZQUFaLENBQXlCLElBQXpCLEVBQStCLFVBQS9CLENBQVA7QUFDRDs7QUFFRCxFQUFBLGFBQWEsQ0FBQyxJQUFELEVBQWE7QUFDeEIsV0FBTyxLQUFLLE1BQUwsQ0FBWSxhQUFaLENBQTBCLElBQTFCLENBQVA7QUFDRDs7QUFFRCxFQUFBLGFBQWEsQ0FBQyxJQUFELEVBQWE7QUFDeEIsV0FBTyxLQUFLLE1BQUwsQ0FBWSxhQUFaLENBQTBCLElBQTFCLENBQVA7QUFDRDs7QUFFRCxFQUFBLFFBQVEsQ0FBQyxVQUFELEVBQW1CO0FBQ3pCLFdBQU8sS0FBSyxNQUFMLENBQVksUUFBWixDQUFxQixVQUFyQixDQUFQO0FBQ0Q7O0FBL0M4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmUsIERpY3QsIFNleHBPcGNvZGVzIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBkaWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEFTVHYyIH0gZnJvbSAnLi4nO1xuaW1wb3J0IHsgaXNVcHBlckNhc2UgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN5bWJvbFRhYmxlIHtcbiAgc3RhdGljIHRvcChcbiAgICBsb2NhbHM6IHN0cmluZ1tdLFxuICAgIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU6IChpbnB1dDogc3RyaW5nKSA9PiBzdHJpbmdcbiAgKTogUHJvZ3JhbVN5bWJvbFRhYmxlIHtcbiAgICByZXR1cm4gbmV3IFByb2dyYW1TeW1ib2xUYWJsZShsb2NhbHMsIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWUpO1xuICB9XG5cbiAgYWJzdHJhY3QgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldChuYW1lOiBzdHJpbmcpOiBbc3ltYm9sOiBudW1iZXIsIGlzUm9vdDogYm9vbGVhbl07XG5cbiAgYWJzdHJhY3QgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPjtcbiAgYWJzdHJhY3QgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbztcblxuICBhYnN0cmFjdCBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZShpZGVudGlmaWVyOiBzdHJpbmcpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3Qgc2V0SGFzRXZhbCgpOiB2b2lkO1xuXG4gIGNoaWxkKGxvY2Fsczogc3RyaW5nW10pOiBCbG9ja1N5bWJvbFRhYmxlIHtcbiAgICBsZXQgc3ltYm9scyA9IGxvY2Fscy5tYXAoKG5hbWUpID0+IHRoaXMuYWxsb2NhdGUobmFtZSkpO1xuICAgIHJldHVybiBuZXcgQmxvY2tTeW1ib2xUYWJsZSh0aGlzLCBsb2NhbHMsIHN5bWJvbHMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9ncmFtU3ltYm9sVGFibGUgZXh0ZW5kcyBTeW1ib2xUYWJsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVMb2NhbHM6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgY3VzdG9taXplQ29tcG9uZW50TmFtZTogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHN5bWJvbHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyB1cHZhcnM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBzaXplID0gMTtcbiAgcHJpdmF0ZSBuYW1lZCA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIGJsb2NrcyA9IGRpY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIHVzZWRUZW1wbGF0ZUxvY2Fsczogc3RyaW5nW10gPSBbXTtcblxuICAjaGFzRXZhbCA9IGZhbHNlO1xuXG4gIGdldFVzZWRUZW1wbGF0ZUxvY2FscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzO1xuICB9XG5cbiAgc2V0SGFzRXZhbCgpOiB2b2lkIHtcbiAgICB0aGlzLiNoYXNFdmFsID0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBoYXNFdmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNoYXNFdmFsO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlTG9jYWxzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IFtudW1iZXIsIGJvb2xlYW5dIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIFtpbmRleCwgdHJ1ZV07XG4gICAgfVxuXG4gICAgaW5kZXggPSB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5sZW5ndGg7XG4gICAgdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMucHVzaChuYW1lKTtcbiAgICByZXR1cm4gW2luZGV4LCB0cnVlXTtcbiAgfVxuXG4gIGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj4ge1xuICAgIHJldHVybiBkaWN0KCk7XG4gIH1cblxuICBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvIHtcbiAgICBsZXQgbG9jYWxzID0gdGhpcy5nZXRMb2NhbHNNYXAoKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9jYWxzKS5tYXAoKHN5bWJvbCkgPT4gbG9jYWxzW3N5bWJvbF0pO1xuICB9XG5cbiAgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXIge1xuICAgIC8vIElmIHRoZSBuYW1lIGluIHF1ZXN0aW9uIGlzIGFuIHVwcGVyY2FzZSAoaS5lLiBhbmdsZS1icmFja2V0KSBjb21wb25lbnQgaW52b2NhdGlvbiwgcnVuXG4gICAgLy8gdGhlIG9wdGlvbmFsIGBjdXN0b21pemVDb21wb25lbnROYW1lYCBmdW5jdGlvbiBwcm92aWRlZCB0byB0aGUgcHJlY29tcGlsZXIuXG4gICAgaWYgKFxuICAgICAgcmVzb2x1dGlvbi5yZXNvbHV0aW9uKCkgPT09IFNleHBPcGNvZGVzLkdldEZyZWVBc0NvbXBvbmVudEhlYWQgJiZcbiAgICAgIHJlc29sdXRpb24uaXNBbmdsZUJyYWNrZXQgJiZcbiAgICAgIGlzVXBwZXJDYXNlKG5hbWUpXG4gICAgKSB7XG4gICAgICBuYW1lID0gdGhpcy5jdXN0b21pemVDb21wb25lbnROYW1lKG5hbWUpO1xuICAgIH1cblxuICAgIGxldCBpbmRleCA9IHRoaXMudXB2YXJzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgaW5kZXggPSB0aGlzLnVwdmFycy5sZW5ndGg7XG4gICAgdGhpcy51cHZhcnMucHVzaChuYW1lKTtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZFtuYW1lXTtcblxuICAgIGlmICghbmFtZWQpIHtcbiAgICAgIG5hbWVkID0gdGhpcy5uYW1lZFtuYW1lXSA9IHRoaXMuYWxsb2NhdGUobmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVkO1xuICB9XG5cbiAgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmIChuYW1lID09PSAnaW52ZXJzZScpIHtcbiAgICAgIG5hbWUgPSAnZWxzZSc7XG4gICAgfVxuXG4gICAgbGV0IGJsb2NrID0gdGhpcy5ibG9ja3NbbmFtZV07XG5cbiAgICBpZiAoIWJsb2NrKSB7XG4gICAgICBibG9jayA9IHRoaXMuYmxvY2tzW25hbWVdID0gdGhpcy5hbGxvY2F0ZShgJiR7bmFtZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2s7XG4gIH1cblxuICBhbGxvY2F0ZShpZGVudGlmaWVyOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHRoaXMuc3ltYm9scy5wdXNoKGlkZW50aWZpZXIpO1xuICAgIHJldHVybiB0aGlzLnNpemUrKztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tTeW1ib2xUYWJsZSBleHRlbmRzIFN5bWJvbFRhYmxlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYXJlbnQ6IFN5bWJvbFRhYmxlLCBwdWJsaWMgc3ltYm9sczogc3RyaW5nW10sIHB1YmxpYyBzbG90czogbnVtYmVyW10pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGxvY2FscygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9scztcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xzLmluZGV4T2YobmFtZSkgIT09IC0xIHx8IHRoaXMucGFyZW50LmhhcyhuYW1lKTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBbbnVtYmVyLCBib29sZWFuXSB7XG4gICAgbGV0IHNsb3QgPSB0aGlzLnN5bWJvbHMuaW5kZXhPZihuYW1lKTtcbiAgICByZXR1cm4gc2xvdCA9PT0gLTEgPyB0aGlzLnBhcmVudC5nZXQobmFtZSkgOiBbdGhpcy5zbG90c1tzbG90XSwgZmFsc2VdO1xuICB9XG5cbiAgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPiB7XG4gICAgbGV0IGRpY3QgPSB0aGlzLnBhcmVudC5nZXRMb2NhbHNNYXAoKTtcbiAgICB0aGlzLnN5bWJvbHMuZm9yRWFjaCgoc3ltYm9sKSA9PiAoZGljdFtzeW1ib2xdID0gdGhpcy5nZXQoc3ltYm9sKVswXSkpO1xuICAgIHJldHVybiBkaWN0O1xuICB9XG5cbiAgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbyB7XG4gICAgbGV0IGxvY2FscyA9IHRoaXMuZ2V0TG9jYWxzTWFwKCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxvY2FscykubWFwKChzeW1ib2wpID0+IGxvY2Fsc1tzeW1ib2xdKTtcbiAgfVxuXG4gIHNldEhhc0V2YWwoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnQuc2V0SGFzRXZhbCgpO1xuICB9XG5cbiAgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZUZyZWUobmFtZSwgcmVzb2x1dGlvbik7XG4gIH1cblxuICBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlTmFtZWQobmFtZSk7XG4gIH1cblxuICBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlQmxvY2sobmFtZSk7XG4gIH1cblxuICBhbGxvY2F0ZShpZGVudGlmaWVyOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZShpZGVudGlmaWVyKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsSUFBVCxRQUFxQixlQUFyQjtBQUdBLFNBQVMsV0FBVCxRQUE0QixTQUE1QjtBQUVBLE9BQU0sTUFBZ0IsV0FBaEIsQ0FBMkI7QUFDL0IsU0FBTyxHQUFQLENBQ0UsTUFERixFQUVFLHNCQUZGLEVBRW1EO0FBRWpELFdBQU8sSUFBSSxrQkFBSixDQUF1QixNQUF2QixFQUErQixzQkFBL0IsQ0FBUDtBQUNEOztBQWVELEVBQUEsS0FBSyxDQUFDLE1BQUQsRUFBaUI7QUFDcEIsUUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQVAsQ0FBWSxJQUFELElBQVUsS0FBSyxRQUFMLENBQWMsSUFBZCxDQUFyQixDQUFkO0FBQ0EsV0FBTyxJQUFJLGdCQUFKLENBQXFCLElBQXJCLEVBQTJCLE1BQTNCLEVBQW1DLE9BQW5DLENBQVA7QUFDRDs7QUF4QjhCO0FBMkJqQyxPQUFNLE1BQU8sa0JBQVAsU0FBa0MsV0FBbEMsQ0FBNkM7QUFDakQsRUFBQSxXQUFBLENBQ1UsY0FEVixFQUVVLHNCQUZWLEVBRTJEO0FBRXpEO0FBSFEsU0FBQSxjQUFBLEdBQUEsY0FBQTtBQUNBLFNBQUEsc0JBQUEsR0FBQSxzQkFBQTtBQUtILFNBQUEsT0FBQSxHQUFvQixFQUFwQjtBQUNBLFNBQUEsTUFBQSxHQUFtQixFQUFuQjtBQUVDLFNBQUEsSUFBQSxHQUFPLENBQVA7QUFDQSxTQUFBLEtBQUEsR0FBUSxJQUFJLEVBQVo7QUFDQSxTQUFBLE1BQUEsR0FBUyxJQUFJLEVBQWI7QUFDQSxTQUFBLGtCQUFBLEdBQStCLEVBQS9CO0FBRVIsU0FBQSxRQUFBLEdBQVcsS0FBWDtBQVZDOztBQVlELEVBQUEscUJBQXFCLEdBQUE7QUFDbkIsV0FBTyxLQUFLLGtCQUFaO0FBQ0Q7O0FBRUQsRUFBQSxVQUFVLEdBQUE7QUFDUixTQUFLLFFB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LFlBQVosQ0FBeUIsSUFBekIsRUFBK0IsVUFBL0IsQ0FBUDtBQUNEOztBQUVELEVBQUEsYUFBYSxDQUFDLElBQUQsRUFBYTtBQUN4QixXQUFPLEtBQUssTUFBTCxDQUFZLGFBQVosQ0FBMEIsSUFBMUIsQ0FBUDtBQUNEOztBQUVELEVBQUEsYUFBYSxDQUFDLElBQUQsRUFBYTtBQUN4QixXQUFPLEtBQUssTUFBTCxDQUFZLGFBQVosQ0FBMEIsSUFBMUIsQ0FBUDtBQUNEOztBQUVELEVBQUEsUUFBUSxDQUFDLFVBQUQsRUFBbUI7QUFDekIsV0FBTyxLQUFLLE1BQUwsQ0FBWSxRQUFaLENBQXFCLFVBQXJCLENBQVA7QUFDRDs7QUEvQzhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZSwgRGljdCwgU2V4cE9wY29kZXMgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgQVNUdjIgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBpc1VwcGVyQ2FzZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3ltYm9sVGFibGUge1xuICBzdGF0aWMgdG9wKFxuICAgIGxvY2Fsczogc3RyaW5nW10sXG4gICAgY3VzdG9taXplQ29tcG9uZW50TmFtZTogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZ1xuICApOiBQcm9ncmFtU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBuZXcgUHJvZ3JhbVN5bWJvbFRhYmxlKGxvY2FscywgY3VzdG9taXplQ29tcG9uZW50TmFtZSk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0KG5hbWU6IHN0cmluZyk6IFtzeW1ib2w6IG51bWJlciwgaXNSb290OiBib29sZWFuXTtcblxuICBhYnN0cmFjdCBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+O1xuICBhYnN0cmFjdCBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvO1xuXG4gIGFic3RyYWN0IGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlcjtcblxuICBhYnN0cmFjdCBzZXRIYXNFdmFsKCk6IHZvaWQ7XG5cbiAgY2hpbGQobG9jYWxzOiBzdHJpbmdbXSk6IEJsb2NrU3ltYm9sVGFibGUge1xuICAgIGxldCBzeW1ib2xzID0gbG9jYWxzLm1hcCgobmFtZSkgPT4gdGhpcy5hbGxvY2F0ZShuYW1lKSk7XG4gICAgcmV0dXJuIG5ldyBCbG9ja1N5bWJvbFRhYmxlKHRoaXMsIGxvY2Fscywgc3ltYm9scyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW1TeW1ib2xUYWJsZSBleHRlbmRzIFN5bWJvbFRhYmxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZUxvY2Fsczogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSBjdXN0b21pemVDb21wb25lbnROYW1lOiAoaW5wdXQ6IHN0cmluZykgPT4gc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc3ltYm9sczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHVwdmFyczogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIHNpemUgPSAxO1xuICBwcml2YXRlIG5hbWVkID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgYmxvY2tzID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdXNlZFRlbXBsYXRlTG9jYWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIF9oYXNFdmFsID0gZmFsc2U7XG5cbiAgZ2V0VXNlZFRlbXBsYXRlTG9jYWxzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHM7XG4gIH1cblxuICBzZXRIYXNFdmFsKCk6IHZvaWQge1xuICAgIHRoaXMuX2hhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGhhc0V2YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0V2YWw7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVMb2NhbHMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogW251bWJlciwgYm9vbGVhbl0ge1xuICAgIGxldCBpbmRleCA9IHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICByZXR1cm4gW2luZGV4LCB0cnVlXTtcbiAgICB9XG5cbiAgICBpbmRleCA9IHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmxlbmd0aDtcbiAgICB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiBbaW5kZXgsIHRydWVdO1xuICB9XG5cbiAgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGRpY3QoKTtcbiAgfVxuXG4gIGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm8ge1xuICAgIGxldCBsb2NhbHMgPSB0aGlzLmdldExvY2Fsc01hcCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2NhbHMpLm1hcCgoc3ltYm9sKSA9PiBsb2NhbHNbc3ltYm9sXSk7XG4gIH1cblxuICBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlciB7XG4gICAgLy8gSWYgdGhlIG5hbWUgaW4gcXVlc3Rpb24gaXMgYW4gdXBwZXJjYXNlIChpLmUuIGFuZ2xlLWJyYWNrZXQpIGNvbXBvbmVudCBpbnZvY2F0aW9uLCBydW5cbiAgICAvLyB0aGUgb3B0aW9uYWwgYGN1c3RvbWl6ZUNvbXBvbmVudE5hbWVgIGZ1bmN0aW9uIHByb3ZpZGVkIHRvIHRoZSBwcmVjb21waWxlci5cbiAgICBpZiAoXG4gICAgICByZXNvbHV0aW9uLnJlc29sdXRpb24oKSA9PT0gU2V4cE9wY29kZXMuR2V0RnJlZUFzQ29tcG9uZW50SGVhZCAmJlxuICAgICAgcmVzb2x1dGlvbi5pc0FuZ2xlQnJhY2tldCAmJlxuICAgICAgaXNVcHBlckNhc2UobmFtZSlcbiAgICApIHtcbiAgICAgIG5hbWUgPSB0aGlzLmN1c3RvbWl6ZUNvbXBvbmVudE5hbWUobmFtZSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gdGhpcy51cHZhcnMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBpbmRleCA9IHRoaXMudXB2YXJzLmxlbmd0aDtcbiAgICB0aGlzLnVwdmFycy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkW25hbWVdO1xuXG4gICAgaWYgKCFuYW1lZCkge1xuICAgICAgbmFtZWQgPSB0aGlzLm5hbWVkW25hbWVdID0gdGhpcy5hbGxvY2F0ZShuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZWQ7XG4gIH1cblxuICBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKG5hbWUgPT09ICdpbnZlcnNlJykge1xuICAgICAgbmFtZSA9ICdlbHNlJztcbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSB0aGlzLmJsb2Nrc1tuYW1lXTtcblxuICAgIGlmICghYmxvY2spIHtcbiAgICAgIGJsb2NrID0gdGhpcy5ibG9ja3NbbmFtZV0gPSB0aGlzLmFsbG9jYXRlKGAmJHtuYW1lfWApO1xuICAgIH1cblxuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdGhpcy5zeW1ib2xzLnB1c2goaWRlbnRpZmllcik7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSsrO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja1N5bWJvbFRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU3ltYm9sVGFibGUsIHB1YmxpYyBzeW1ib2xzOiBzdHJpbmdbXSwgcHVibGljIHNsb3RzOiBudW1iZXJbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgbG9jYWxzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbHMuaW5kZXhPZihuYW1lKSAhPT0gLTEgfHwgdGhpcy5wYXJlbnQuaGFzKG5hbWUpO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IFtudW1iZXIsIGJvb2xlYW5dIHtcbiAgICBsZXQgc2xvdCA9IHRoaXMuc3ltYm9scy5pbmRleE9mKG5hbWUpO1xuICAgIHJldHVybiBzbG90ID09PSAtMSA/IHRoaXMucGFyZW50LmdldChuYW1lKSA6IFt0aGlzLnNsb3RzW3Nsb3RdLCBmYWxzZV07XG4gIH1cblxuICBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+IHtcbiAgICBsZXQgZGljdCA9IHRoaXMucGFyZW50LmdldExvY2Fsc01hcCgpO1xuICAgIHRoaXMuc3ltYm9scy5mb3JFYWNoKChzeW1ib2wpID0+IChkaWN0W3N5bWJvbF0gPSB0aGlzLmdldChzeW1ib2wpWzBdKSk7XG4gICAgcmV0dXJuIGRpY3Q7XG4gIH1cblxuICBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvIHtcbiAgICBsZXQgbG9jYWxzID0gdGhpcy5nZXRMb2NhbHNNYXAoKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9jYWxzKS5tYXAoKHN5bWJvbCkgPT4gbG9jYWxzW3N5bWJvbF0pO1xuICB9XG5cbiAgc2V0SGFzRXZhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudC5zZXRIYXNFdmFsKCk7XG4gIH1cblxuICBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlRnJlZShuYW1lLCByZXNvbHV0aW9uKTtcbiAgfVxuXG4gIGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVOYW1lZChuYW1lKTtcbiAgfVxuXG4gIGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVCbG9jayhuYW1lKTtcbiAgfVxuXG4gIGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlKGlkZW50aWZpZXIpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

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

import RootTransformScope from './scope';
export default class WalkerPath {

@@ -7,12 +6,2 @@ constructor(node, parent = null, parentKey = null) {

this.parentKey = parentKey;
this.scope = parent ? parent.scope.child(node) : new RootTransformScope(node); // Consume in scope values
if (node.type === 'PathExpression') {
this.scope.useLocal(node);
}
if (node.type === 'ElementNode') {
this.scope.useLocal(node);
node.children.forEach(node => this.scope.useLocal(node));
}
}

@@ -55,2 +44,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxrQkFBUCxNQUFtRCxTQUFuRDtBQUVBLGVBQWMsTUFBTyxVQUFQLENBQWlCO0FBTTdCLEVBQUEsV0FBQSxDQUNFLElBREYsRUFFRSxNQUFBLEdBQXdDLElBRjFDLEVBR0UsU0FBQSxHQUEyQixJQUg3QixFQUdpQztBQUUvQixTQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0EsU0FBSyxNQUFMLEdBQWMsTUFBZDtBQUNBLFNBQUssU0FBTCxHQUFpQixTQUFqQjtBQUNBLFNBQUssS0FBTCxHQUFhLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBUCxDQUFhLEtBQWIsQ0FBbUIsSUFBbkIsQ0FBSCxHQUE4QixJQUFJLGtCQUFKLENBQXVCLElBQXZCLENBQWpELENBTCtCLENBTy9COztBQUNBLFFBQUksSUFBSSxDQUFDLElBQUwsS0FBYyxnQkFBbEIsRUFBb0M7QUFDbEMsV0FBSyxLQUFMLENBQVcsUUFBWCxDQUFvQixJQUFwQjtBQUNEOztBQUVELFFBQUksSUFBSSxDQUFDLElBQUwsS0FBYyxhQUFsQixFQUFpQztBQUMvQixXQUFLLEtBQUwsQ0FBVyxRQUFYLENBQW9CLElBQXBCO0FBRUMsTUFBQSxJQUEwQixDQUFDLFFBQTNCLENBQW9DLE9BQXBDLENBQTZDLElBQUQsSUFDM0MsS0FBSyxLQUFMLENBQVcsUUFBWCxDQUFvQixJQUFwQixDQUREO0FBR0Y7QUFDRjs7QUFFRCxNQUFJLFVBQUosR0FBYztBQUNaLFdBQU8sS0FBSyxNQUFMLEdBQWMsS0FBSyxNQUFMLENBQVksSUFBMUIsR0FBaUMsSUFBeEM7QUFDRDs7QUFFRCxFQUFBLE9BQU8sR0FBQTtBQUNMLFdBQU87QUFDTCxPQUFDLE1BQU0sQ0FBQyxRQUFSLEdBQW1CLE1BQUs7QUFDdEIsZUFBTyxJQUFJLG1CQUFKLENBQXdCLElBQXhCLENBQVA7QUFDRDtBQUhJLEtBQVA7QUFLRDs7QUF4QzRCOztBQTJDL0IsTUFBTSxtQkFBTixDQUF5QjtBQUd2QixFQUFBLFdBQUEsQ0FBWSxJQUFaLEVBQXdDO0FBQ3RDLFNBQUssSUFBTCxHQUFZLElBQVo7QUFDRDs7QUFFRCxFQUFBLElBQUksR0FBQTtBQUNGLFFBQUksS0FBSyxJQUFMLENBQVUsTUFBZCxFQUFzQjtBQUNwQixXQUFLLElBQUwsR0FBWSxLQUFLLElBQUwsQ0FBVSxNQUF0QjtBQUNBLGFBQU87QUFBRSxRQUFBLElBQUksRUFBRSxLQUFSO0FBQWUsUUFBQSxLQUFLLEVBQUUsS0FBSztBQUEzQixPQUFQO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFFLElBQVI7QUFBYyxRQUFBLEtBQUssRUFBRTtBQUFyQixPQUFQO0FBQ0Q7QUFDRjs7QUFkc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBU1R2MSBmcm9tICcuLi92MS9hcGknO1xuaW1wb3J0IFJvb3RUcmFuc2Zvcm1TY29wZSwgeyBUcmFuc2Zvcm1TY29wZSB9IGZyb20gJy4vc2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXJQYXRoPE4gZXh0ZW5kcyBBU1R2MS5Ob2RlPiB7XG4gIG5vZGU6IE47XG4gIHBhcmVudDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw7XG4gIHBhcmVudEtleTogc3RyaW5nIHwgbnVsbDtcbiAgc2NvcGU6IFRyYW5zZm9ybVNjb3BlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vZGU6IE4sXG4gICAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbCA9IG51bGwsXG4gICAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMucGFyZW50S2V5ID0gcGFyZW50S2V5O1xuICAgIHRoaXMuc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGUuY2hpbGQobm9kZSkgOiBuZXcgUm9vdFRyYW5zZm9ybVNjb3BlKG5vZGUpO1xuXG4gICAgLy8gQ29uc3VtZSBpbiBzY29wZSB2YWx1ZXNcbiAgICBpZiAobm9kZS50eXBlID09PSAnUGF0aEV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnNjb3BlLnVzZUxvY2FsKG5vZGUpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSk7XG5cbiAgICAgIChub2RlIGFzIEFTVHYxLkVsZW1lbnROb2RlKS5jaGlsZHJlbi5mb3JFYWNoKChub2RlOiBBU1R2MS5TdGF0ZW1lbnQpID0+XG4gICAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBhcmVudE5vZGUoKTogQVNUdjEuTm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50Lm5vZGUgOiBudWxsO1xuICB9XG5cbiAgcGFyZW50cygpOiBJdGVyYWJsZTxXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBhdGhQYXJlbnRzSXRlcmF0b3IodGhpcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgUGF0aFBhcmVudHNJdGVyYXRvciBpbXBsZW1lbnRzIEl0ZXJhdG9yPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gIHBhdGg6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT47XG5cbiAgY29uc3RydWN0b3IocGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPikge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnBhdGgucGFyZW50KSB7XG4gICAgICB0aGlzLnBhdGggPSB0aGlzLnBhdGgucGFyZW50O1xuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiB0aGlzLnBhdGggfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG51bGwgfTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZUFBYyxNQUFPLFVBQVAsQ0FBaUI7QUFLN0IsRUFBQSxXQUFBLENBQ0UsSUFERixFQUVFLE1BQUEsR0FBd0MsSUFGMUMsRUFHRSxTQUFBLEdBQTJCLElBSDdCLEVBR2lDO0FBRS9CLFNBQUssSUFBTCxHQUFZLElBQVo7QUFDQSxTQUFLLE1BQUwsR0FBYyxNQUFkO0FBQ0EsU0FBSyxTQUFMLEdBQWlCLFNBQWpCO0FBQ0Q7O0FBRUQsTUFBSSxVQUFKLEdBQWM7QUFDWixXQUFPLEtBQUssTUFBTCxHQUFjLEtBQUssTUFBTCxDQUFZLElBQTFCLEdBQWlDLElBQXhDO0FBQ0Q7O0FBRUQsRUFBQSxPQUFPLEdBQUE7QUFDTCxXQUFPO0FBQ0wsT0FBQyxNQUFNLENBQUMsUUFBUixHQUFtQixNQUFLO0FBQ3RCLGVBQU8sSUFBSSxtQkFBSixDQUF3QixJQUF4QixDQUFQO0FBQ0Q7QUFISSxLQUFQO0FBS0Q7O0FBekI0Qjs7QUE0Qi9CLE1BQU0sbUJBQU4sQ0FBeUI7QUFHdkIsRUFBQSxXQUFBLENBQVksSUFBWixFQUF3QztBQUN0QyxTQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0Q7O0FBRUQsRUFBQSxJQUFJLEdBQUE7QUFDRixRQUFJLEtBQUssSUFBTCxDQUFVLE1BQWQsRUFBc0I7QUFDcEIsV0FBSyxJQUFMLEdBQVksS0FBSyxJQUFMLENBQVUsTUFBdEI7QUFDQSxhQUFPO0FBQUUsUUFBQSxJQUFJLEVBQUUsS0FBUjtBQUFlLFFBQUEsS0FBSyxFQUFFLEtBQUs7QUFBM0IsT0FBUDtBQUNELEtBSEQsTUFHTztBQUNMLGFBQU87QUFBRSxRQUFBLElBQUksRUFBRSxJQUFSO0FBQWMsUUFBQSxLQUFLLEVBQUU7QUFBckIsT0FBUDtBQUNEO0FBQ0Y7O0FBZHNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2Fsa2VyUGF0aDxOIGV4dGVuZHMgQVNUdjEuTm9kZT4ge1xuICBub2RlOiBOO1xuICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsO1xuICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbm9kZTogTixcbiAgICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsID0gbnVsbCxcbiAgICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5wYXJlbnRLZXkgPSBwYXJlbnRLZXk7XG4gIH1cblxuICBnZXQgcGFyZW50Tm9kZSgpOiBBU1R2MS5Ob2RlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQubm9kZSA6IG51bGw7XG4gIH1cblxuICBwYXJlbnRzKCk6IEl0ZXJhYmxlPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGF0aFBhcmVudHNJdGVyYXRvcih0aGlzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBQYXRoUGFyZW50c0l0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3I8V2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw+IHtcbiAgcGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPjtcblxuICBjb25zdHJ1Y3RvcihwYXRoOiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+KSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMucGF0aC5wYXJlbnQpIHtcbiAgICAgIHRoaXMucGF0aCA9IHRoaXMucGF0aC5wYXJlbnQ7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IHRoaXMucGF0aCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -8,3 +8,5 @@ import b from './public-builders';

this.this = false;
this.data = false;
this.data = false; // Cache for the head value.
this._head = undefined;
let parts = tail.slice();

@@ -25,2 +27,6 @@

get head() {
if (this._head) {
return this._head;
}
let firstPart;

@@ -39,3 +45,3 @@

}).loc;
return b.head(firstPart, firstPartLoc);
return this._head = b.head(firstPart, firstPartLoc);
}

@@ -48,2 +54,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxDQUFQLE1BQWMsbUJBQWQ7QUFFQSxPQUFNLE1BQU8sb0JBQVAsQ0FBMkI7QUFNL0IsRUFBQSxXQUFBLENBQW1CLFFBQW5CLEVBQXFDLElBQXJDLEVBQXFELElBQXJELEVBQTRFLEdBQTVFLEVBQTJGO0FBQXhFLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFBeUQsU0FBQSxHQUFBLEdBQUEsR0FBQTtBQUw1RSxTQUFBLElBQUEsR0FBeUIsZ0JBQXpCO0FBRU8sU0FBQSxJQUFBLEdBQU8sS0FBUDtBQUNBLFNBQUEsSUFBQSxHQUFPLEtBQVA7QUFHTCxRQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBTCxFQUFaOztBQUVBLFFBQUksSUFBSSxDQUFDLElBQUwsS0FBYyxVQUFsQixFQUE4QjtBQUM1QixXQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUksSUFBSSxDQUFDLElBQUwsS0FBYyxRQUFsQixFQUE0QjtBQUNqQyxXQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0EsTUFBQSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBVixDQUFnQixDQUFoQixDQUFkO0FBQ0QsS0FITSxNQUdBO0FBQ0wsTUFBQSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFuQjtBQUNEOztBQUVELFNBQUssS0FBTCxHQUFhLEtBQWI7QUFDRDs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFFBQUksU0FBSjs7QUFFQSxRQUFJLEtBQUssSUFBVCxFQUFlO0FBQ2IsTUFBQSxTQUFTLEdBQUcsTUFBWjtBQUNELEtBRkQsTUFFTyxJQUFJLEtBQUssSUFBVCxFQUFlO0FBQ3BCLE1BQUEsU0FBUyxHQUFHLElBQUksS0FBSyxLQUFMLENBQVcsQ0FBWCxDQUFhLEVBQTdCO0FBQ0QsS0FGTSxNQUVBO0FBQ0wsTUFBQSxTQUFTLEdBQUcsS0FBSyxLQUFMLENBQVcsQ0FBWCxDQUFaO0FBQ0Q7O0FBRUQsUUFBSSxZQUFZLEdBQUcsS0FBSyxHQUFMLENBQVMsUUFBVCxDQUFrQixPQUFsQixFQUEyQixlQUEzQixDQUEyQztBQUM1RCxNQUFBLEtBQUssRUFBRSxTQUFTLENBQUM7QUFEMkMsS0FBM0MsRUFFaEIsR0FGSDtBQUlBLFdBQU8sQ0FBQyxDQUFDLElBQUYsQ0FBTyxTQUFQLEVBQWtCLFlBQWxCLENBQVA7QUFDRDs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFdBQU8sS0FBSyxJQUFMLEdBQVksS0FBSyxLQUFqQixHQUF5QixLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLENBQWpCLENBQWhDO0FBQ0Q7O0FBekM4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBQYXRoRXhwcmVzc2lvbiwgUGF0aEhlYWQgfSBmcm9tICcuL25vZGVzLXYxJztcbmltcG9ydCBiIGZyb20gJy4vcHVibGljLWJ1aWxkZXJzJztcblxuZXhwb3J0IGNsYXNzIFBhdGhFeHByZXNzaW9uSW1wbFYxIGltcGxlbWVudHMgUGF0aEV4cHJlc3Npb24ge1xuICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nID0gJ1BhdGhFeHByZXNzaW9uJztcbiAgcHVibGljIHBhcnRzOiBzdHJpbmdbXTtcbiAgcHVibGljIHRoaXMgPSBmYWxzZTtcbiAgcHVibGljIGRhdGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3JpZ2luYWw6IHN0cmluZywgaGVhZDogUGF0aEhlYWQsIHRhaWw6IHN0cmluZ1tdLCBwdWJsaWMgbG9jOiBTb3VyY2VTcGFuKSB7XG4gICAgbGV0IHBhcnRzID0gdGFpbC5zbGljZSgpO1xuXG4gICAgaWYgKGhlYWQudHlwZSA9PT0gJ1RoaXNIZWFkJykge1xuICAgICAgdGhpcy50aGlzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhlYWQudHlwZSA9PT0gJ0F0SGVhZCcpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRydWU7XG4gICAgICBwYXJ0cy51bnNoaWZ0KGhlYWQubmFtZS5zbGljZSgxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICBnZXQgaGVhZCgpOiBQYXRoSGVhZCB7XG4gICAgbGV0IGZpcnN0UGFydDogc3RyaW5nO1xuXG4gICAgaWYgKHRoaXMudGhpcykge1xuICAgICAgZmlyc3RQYXJ0ID0gJ3RoaXMnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhKSB7XG4gICAgICBmaXJzdFBhcnQgPSBgQCR7dGhpcy5wYXJ0c1swXX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaXJzdFBhcnQgPSB0aGlzLnBhcnRzWzBdO1xuICAgIH1cblxuICAgIGxldCBmaXJzdFBhcnRMb2MgPSB0aGlzLmxvYy5jb2xsYXBzZSgnc3RhcnQnKS5zbGljZVN0YXJ0Q2hhcnMoe1xuICAgICAgY2hhcnM6IGZpcnN0UGFydC5sZW5ndGgsXG4gICAgfSkubG9jO1xuXG4gICAgcmV0dXJuIGIuaGVhZChmaXJzdFBhcnQsIGZpcnN0UGFydExvYyk7XG4gIH1cblxuICBnZXQgdGFpbCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGhpcyA/IHRoaXMucGFydHMgOiB0aGlzLnBhcnRzLnNsaWNlKDEpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxDQUFQLE1BQWMsbUJBQWQ7QUFFQSxPQUFNLE1BQU8sb0JBQVAsQ0FBMkI7QUFNL0IsRUFBQSxXQUFBLENBQW1CLFFBQW5CLEVBQXFDLElBQXJDLEVBQXFELElBQXJELEVBQTRFLEdBQTVFLEVBQTJGO0FBQXhFLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFBeUQsU0FBQSxHQUFBLEdBQUEsR0FBQTtBQUw1RSxTQUFBLElBQUEsR0FBeUIsZ0JBQXpCO0FBRU8sU0FBQSxJQUFBLEdBQU8sS0FBUDtBQUNBLFNBQUEsSUFBQSxHQUFPLEtBQVAsQ0FFb0YsQ0FlM0Y7O0FBQ0EsU0FBQSxLQUFBLEdBQW1CLFNBQW5CO0FBZkUsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUwsRUFBWjs7QUFFQSxRQUFJLElBQUksQ0FBQyxJQUFMLEtBQWMsVUFBbEIsRUFBOEI7QUFDNUIsV0FBSyxJQUFMLEdBQVksSUFBWjtBQUNELEtBRkQsTUFFTyxJQUFJLElBQUksQ0FBQyxJQUFMLEtBQWMsUUFBbEIsRUFBNEI7QUFDakMsV0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLE1BQUEsS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLEtBQVYsQ0FBZ0IsQ0FBaEIsQ0FBZDtBQUNELEtBSE0sTUFHQTtBQUNMLE1BQUEsS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBbkI7QUFDRDs7QUFFRCxTQUFLLEtBQUwsR0FBYSxLQUFiO0FBQ0Q7O0FBS0QsTUFBSSxJQUFKLEdBQVE7QUFDTixRQUFJLEtBQUssS0FBVCxFQUFnQjtBQUNkLGFBQU8sS0FBSyxLQUFaO0FBQ0Q7O0FBRUQsUUFBSSxTQUFKOztBQUVBLFFBQUksS0FBSyxJQUFULEVBQWU7QUFDYixNQUFBLFNBQVMsR0FBRyxNQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUksS0FBSyxJQUFULEVBQWU7QUFDcEIsTUFBQSxTQUFTLEdBQUcsSUFBSSxLQUFLLEtBQUwsQ0FBVyxDQUFYLENBQWEsRUFBN0I7QUFDRCxLQUZNLE1BRUE7QUFDTCxNQUFBLFNBQVMsR0FBRyxLQUFLLEtBQUwsQ0FBVyxDQUFYLENBQVo7QUFDRDs7QUFFRCxRQUFJLFlBQVksR0FBRyxLQUFLLEdBQUwsQ0FBUyxRQUFULENBQWtCLE9BQWxCLEVBQTJCLGVBQTNCLENBQTJDO0FBQzVELE1BQUEsS0FBSyxFQUFFLFNBQVMsQ0FBQztBQUQyQyxLQUEzQyxFQUVoQixHQUZIO0FBSUEsV0FBUSxLQUFLLEtBQUwsR0FBYSxDQUFDLENBQUMsSUFBRixDQUFPLFNBQVAsRUFBa0IsWUFBbEIsQ0FBckI7QUFDRDs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFdBQU8sS0FBSyxJQUFMLEdBQVksS0FBSyxLQUFqQixHQUF5QixLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLENBQWpCLENBQWhDO0FBQ0Q7O0FBaEQ4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBQYXRoRXhwcmVzc2lvbiwgUGF0aEhlYWQgfSBmcm9tICcuL25vZGVzLXYxJztcbmltcG9ydCBiIGZyb20gJy4vcHVibGljLWJ1aWxkZXJzJztcblxuZXhwb3J0IGNsYXNzIFBhdGhFeHByZXNzaW9uSW1wbFYxIGltcGxlbWVudHMgUGF0aEV4cHJlc3Npb24ge1xuICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nID0gJ1BhdGhFeHByZXNzaW9uJztcbiAgcHVibGljIHBhcnRzOiBzdHJpbmdbXTtcbiAgcHVibGljIHRoaXMgPSBmYWxzZTtcbiAgcHVibGljIGRhdGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3JpZ2luYWw6IHN0cmluZywgaGVhZDogUGF0aEhlYWQsIHRhaWw6IHN0cmluZ1tdLCBwdWJsaWMgbG9jOiBTb3VyY2VTcGFuKSB7XG4gICAgbGV0IHBhcnRzID0gdGFpbC5zbGljZSgpO1xuXG4gICAgaWYgKGhlYWQudHlwZSA9PT0gJ1RoaXNIZWFkJykge1xuICAgICAgdGhpcy50aGlzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhlYWQudHlwZSA9PT0gJ0F0SGVhZCcpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRydWU7XG4gICAgICBwYXJ0cy51bnNoaWZ0KGhlYWQubmFtZS5zbGljZSgxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICAvLyBDYWNoZSBmb3IgdGhlIGhlYWQgdmFsdWUuXG4gIF9oZWFkPzogUGF0aEhlYWQgPSB1bmRlZmluZWQ7XG5cbiAgZ2V0IGhlYWQoKTogUGF0aEhlYWQge1xuICAgIGlmICh0aGlzLl9oZWFkKSB7XG4gICAgICByZXR1cm4gdGhpcy5faGVhZDtcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RQYXJ0OiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy50aGlzKSB7XG4gICAgICBmaXJzdFBhcnQgPSAndGhpcyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGZpcnN0UGFydCA9IGBAJHt0aGlzLnBhcnRzWzBdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0UGFydCA9IHRoaXMucGFydHNbMF07XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0UGFydExvYyA9IHRoaXMubG9jLmNvbGxhcHNlKCdzdGFydCcpLnNsaWNlU3RhcnRDaGFycyh7XG4gICAgICBjaGFyczogZmlyc3RQYXJ0Lmxlbmd0aCxcbiAgICB9KS5sb2M7XG5cbiAgICByZXR1cm4gKHRoaXMuX2hlYWQgPSBiLmhlYWQoZmlyc3RQYXJ0LCBmaXJzdFBhcnRMb2MpKTtcbiAgfVxuXG4gIGdldCB0YWlsKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50aGlzID8gdGhpcy5wYXJ0cyA6IHRoaXMucGFydHMuc2xpY2UoMSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

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

import { assign } from '@glimmer/util';
export function node(name) {

@@ -9,4 +10,3 @@ if (name !== undefined) {

this.type = type;
this.loc = fields.loc;
copy(fields, this);
assign(this, fields);
}

@@ -23,4 +23,3 @@

constructor(fields) {
this.loc = fields.loc;
copy(fields, this);
assign(this, fields);
}

@@ -34,12 +33,2 @@

}
function keys(object) {
return Object.keys(object);
}
function copy(object1, object2) {
for (let key of keys(object1)) {
object2[key] = object1[key];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMENBLE9BQU0sU0FBVSxJQUFWLENBQ0osSUFESSxFQUNJO0FBUVIsTUFBSSxJQUFJLEtBQUssU0FBYixFQUF3QjtBQUN0QixVQUFNLElBQUksR0FBRyxJQUFiO0FBQ0EsV0FBTztBQUNMLE1BQUEsTUFBTSxHQUFBO0FBQ0osZUFBTyxNQUFBO0FBSUwsVUFBQSxXQUFBLENBQVksTUFBWixFQUEyQztBQUN6QyxpQkFBSyxJQUFMLEdBQVksSUFBWjtBQUNBLGlCQUFLLEdBQUwsR0FBVyxNQUFNLENBQUMsR0FBbEI7QUFDQSxZQUFBLElBQUksQ0FBQyxNQUFELEVBQVUsSUFBVixDQUFKO0FBQ0Q7O0FBUkksU0FBUDtBQVVEOztBQVpJLEtBQVA7QUFjRCxHQWhCRCxNQWdCTztBQUNMLFdBQU87QUFDTCxNQUFBLE1BQU0sR0FBQTtBQUNKLGVBQU8sTUFBQTtBQUdMLFVBQUEsV0FBQSxDQUFZLE1BQVosRUFBMkM7QUFDekMsaUJBQUssR0FBTCxHQUFXLE1BQU0sQ0FBQyxHQUFsQjtBQUVBLFlBQUEsSUFBSSxDQUFDLE1BQUQsRUFBVSxJQUFWLENBQUo7QUFDRDs7QUFQSSxTQUFQO0FBU0Q7O0FBWEksS0FBUDtBQWFEO0FBQ0Y7O0FBZ0JELFNBQVMsSUFBVCxDQUFnQyxNQUFoQyxFQUF5QztBQUN2QyxTQUFPLE1BQU0sQ0FBQyxJQUFQLENBQVksTUFBWixDQUFQO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULENBQWdDLE9BQWhDLEVBQTRDLE9BQTVDLEVBQXNEO0FBQ3BELE9BQUssSUFBSSxHQUFULElBQWdCLElBQUksQ0FBQyxPQUFELENBQXBCLEVBQStCO0FBQzdCLElBQUEsT0FBTyxDQUFDLEdBQUQsQ0FBUCxHQUFlLE9BQU8sQ0FBQyxHQUFELENBQXRCO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi8uLi9zb3VyY2Uvc3Bhbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5vZGVGaWVsZHMge1xuICBsb2M6IFNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBBU1R2MiBub2Rlcywgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGFuZCB0aGUgbm9kZSdzXG4gKiBvcHRpb25zLlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY2xhc3MgSHRtbFRleHQgZXh0ZW5kcyBub2RlKCdIdG1sVGV4dCcpLmZpZWxkczx7IGNoYXJzOiBzdHJpbmcgfT4oKSB7fVxuICogYGBgXG4gKlxuICogVGhpcyBjcmVhdGVzIGEgbmV3IEFTVHYyIG5vZGUgd2l0aCB0aGUgbmFtZSBgJ0h0bWxUZXh0J2AgYW5kIG9uZSBmaWVsZCBgY2hhcnM6IHN0cmluZ2AgKGluXG4gKiBhZGRpdGlvbiB0byBhIGBsb2M6IFNvdXJjZU9mZnNldHNgIGZpZWxkLCB3aGljaCBhbGwgbm9kZXMgaGF2ZSkuXG4gKlxuICogYGBgdHNcbiAqIGV4cG9ydCBjbGFzcyBBcmdzIGV4dGVuZHMgbm9kZSgpLmZpZWxkczx7XG4gKiAgcG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3VtZW50cztcbiAqICBuYW1lZDogTmFtZWRBcmd1bWVudHNcbiAqIH0+KCkge31cbiAqIGBgYFxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIG5ldyB1bi1uYW1lZCBBU1R2MiBub2RlIHdpdGggdHdvIGZpZWxkcyAoYHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxgIGFuZCBgbmFtZWQ6XG4gKiBOYW1lZGAsIGluIGFkZGl0aW9uIHRvIHRoZSBnZW5lcmljIGBsb2M6IFNvdXJjZU9mZnNldHNgIGZpZWxkKS5cbiAqXG4gKiBPbmNlIHlvdSBjcmVhdGUgYSBub2RlIHVzaW5nIGBub2RlYCwgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggYWxsIG9mIGl0cyBmaWVsZHMgKGluY2x1ZGluZyBgbG9jYCk6XG4gKlxuICogYGBgdHNcbiAqIG5ldyBIdG1sVGV4dCh7IGxvYzogb2Zmc2V0cywgY2hhcnM6IHNvbWVTdHJpbmcgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGUoKToge1xuICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xufTtcbmV4cG9ydCBmdW5jdGlvbiBub2RlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICBuYW1lOiBUXG4pOiB7XG4gIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICBuYW1lPzogVFxuKTpcbiAgfCB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG4gICAgfVxuICB8IHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG4gICAgfSB7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB0eXBlID0gbmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzIHtcbiAgICAgICAgICByZWFkb25seSBsb2M6IFNvdXJjZVNwYW47XG4gICAgICAgICAgcmVhZG9ubHkgdHlwZTogVDtcblxuICAgICAgICAgIGNvbnN0cnVjdG9yKGZpZWxkczogQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0aGlzLmxvYyA9IGZpZWxkcy5sb2M7XG4gICAgICAgICAgICBjb3B5KGZpZWxkcywgKHRoaXMgYXMgdW5rbm93bikgYXMgQ29uc3RydWN0aW5nVHlwZWROb2RlPEZpZWxkcz4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz47XG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczxGaWVsZHM+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz4ge1xuICAgICAgICByZXR1cm4gY2xhc3Mge1xuICAgICAgICAgIHJlYWRvbmx5IGxvYzogU291cmNlU3BhbjtcblxuICAgICAgICAgIGNvbnN0cnVjdG9yKGZpZWxkczogQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMubG9jID0gZmllbGRzLmxvYztcblxuICAgICAgICAgICAgY29weShmaWVsZHMsICh0aGlzIGFzIHVua25vd24pIGFzIENvbnN0cnVjdGluZ05vZGU8RmllbGRzPik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIE5vZGVDb25zdHJ1Y3RvcjxCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz47XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxudHlwZSBDb25zdHJ1Y3RpbmdUeXBlZE5vZGU8RmllbGRzPiA9IEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzO1xuXG50eXBlIENvbnN0cnVjdGluZ05vZGU8RmllbGRzPiA9IEJhc2VOb2RlRmllbGRzICYgRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHM+IHtcbiAgbmV3IChmaWVsZHM6IEZpZWxkcyk6IFJlYWRvbmx5PEZpZWxkcz47XG59XG5cbnR5cGUgVHlwZWROb2RlPFQgZXh0ZW5kcyBzdHJpbmcsIEZpZWxkcz4gPSB7IHR5cGU6IFQgfSAmIFJlYWRvbmx5PEZpZWxkcz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWROb2RlQ29uc3RydWN0b3I8VCBleHRlbmRzIHN0cmluZywgRmllbGRzPiB7XG4gIG5ldyAob3B0aW9uczogRmllbGRzKTogVHlwZWROb2RlPFQsIEZpZWxkcz47XG59XG5cbmZ1bmN0aW9uIGtleXM8TyBleHRlbmRzIG9iamVjdD4ob2JqZWN0OiBPKTogKGtleW9mIE8pW10ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KSBhcyAoa2V5b2YgTylbXTtcbn1cblxuZnVuY3Rpb24gY29weTxPIGV4dGVuZHMgb2JqZWN0PihvYmplY3QxOiBPLCBvYmplY3QyOiBPKSB7XG4gIGZvciAobGV0IGtleSBvZiBrZXlzKG9iamVjdDEpKSB7XG4gICAgb2JqZWN0MltrZXldID0gb2JqZWN0MVtrZXldO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFULFFBQXVCLGVBQXZCO0FBNENBLE9BQU0sU0FBVSxJQUFWLENBQ0osSUFESSxFQUNJO0FBUVIsTUFBSSxJQUFJLEtBQUssU0FBYixFQUF3QjtBQUN0QixVQUFNLElBQUksR0FBRyxJQUFiO0FBQ0EsV0FBTztBQUNMLE1BQUEsTUFBTSxHQUFBO0FBQ0osZUFBTyxNQUFBO0FBS0wsVUFBQSxXQUFBLENBQVksTUFBWixFQUEyQztBQUN6QyxpQkFBSyxJQUFMLEdBQVksSUFBWjtBQUNBLFlBQUEsTUFBTSxDQUFDLElBQUQsRUFBTyxNQUFQLENBQU47QUFDRDs7QUFSSSxTQUFQO0FBVUQ7O0FBWkksS0FBUDtBQWNELEdBaEJELE1BZ0JPO0FBQ0wsV0FBTztBQUNMLE1BQUEsTUFBTSxHQUFBO0FBQ0osZUFBTyxNQUFBO0FBSUwsVUFBQSxXQUFBLENBQVksTUFBWixFQUEyQztBQUN6QyxZQUFBLE1BQU0sQ0FBQyxJQUFELEVBQU8sTUFBUCxDQUFOO0FBQ0Q7O0FBTkksU0FBUDtBQVFEOztBQVZJLEtBQVA7QUFZRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi8uLi9zb3VyY2Uvc3Bhbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5vZGVGaWVsZHMge1xuICBsb2M6IFNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBBU1R2MiBub2Rlcywgd2l0aCBhbiBvcHRpb25hbCBuYW1lIGFuZCB0aGUgbm9kZSdzXG4gKiBvcHRpb25zLlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY2xhc3MgSHRtbFRleHQgZXh0ZW5kcyBub2RlKCdIdG1sVGV4dCcpLmZpZWxkczx7IGNoYXJzOiBzdHJpbmcgfT4oKSB7fVxuICogYGBgXG4gKlxuICogVGhpcyBjcmVhdGVzIGEgbmV3IEFTVHYyIG5vZGUgd2l0aCB0aGUgbmFtZSBgJ0h0bWxUZXh0J2AgYW5kIG9uZSBmaWVsZCBgY2hhcnM6IHN0cmluZ2AgKGluXG4gKiBhZGRpdGlvbiB0byBhIGBsb2M6IFNvdXJjZU9mZnNldHNgIGZpZWxkLCB3aGljaCBhbGwgbm9kZXMgaGF2ZSkuXG4gKlxuICogYGBgdHNcbiAqIGV4cG9ydCBjbGFzcyBBcmdzIGV4dGVuZHMgbm9kZSgpLmZpZWxkczx7XG4gKiAgcG9zaXRpb25hbDogUG9zaXRpb25hbEFyZ3VtZW50cztcbiAqICBuYW1lZDogTmFtZWRBcmd1bWVudHNcbiAqIH0+KCkge31cbiAqIGBgYFxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIG5ldyB1bi1uYW1lZCBBU1R2MiBub2RlIHdpdGggdHdvIGZpZWxkcyAoYHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxgIGFuZCBgbmFtZWQ6XG4gKiBOYW1lZGAsIGluIGFkZGl0aW9uIHRvIHRoZSBnZW5lcmljIGBsb2M6IFNvdXJjZU9mZnNldHNgIGZpZWxkKS5cbiAqXG4gKiBPbmNlIHlvdSBjcmVhdGUgYSBub2RlIHVzaW5nIGBub2RlYCwgaXQgaXMgaW5zdGFudGlhdGVkIHdpdGggYWxsIG9mIGl0cyBmaWVsZHMgKGluY2x1ZGluZyBgbG9jYCk6XG4gKlxuICogYGBgdHNcbiAqIG5ldyBIdG1sVGV4dCh7IGxvYzogb2Zmc2V0cywgY2hhcnM6IHNvbWVTdHJpbmcgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGUoKToge1xuICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xufTtcbmV4cG9ydCBmdW5jdGlvbiBub2RlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICBuYW1lOiBUXG4pOiB7XG4gIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlPFQgZXh0ZW5kcyBzdHJpbmc+KFxuICBuYW1lPzogVFxuKTpcbiAgfCB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG4gICAgfVxuICB8IHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG4gICAgfSB7XG4gIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB0eXBlID0gbmFtZTtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzIHtcbiAgICAgICAgICAvLyBTQUZFVFk6IGluaXRpYWxpemVkIHZpYSBgYXNzaWduYCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAgZGVjbGFyZSByZWFkb25seSBsb2M6IFNvdXJjZVNwYW47XG4gICAgICAgICAgcmVhZG9ubHkgdHlwZTogVDtcblxuICAgICAgICAgIGNvbnN0cnVjdG9yKGZpZWxkczogQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHMpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICBhc3NpZ24odGhpcywgZmllbGRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM+O1xuICAgICAgfSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM8RmllbGRzPigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzIHtcbiAgICAgICAgICAvLyBTQUZFVFk6IGluaXRpYWxpemVkIHZpYSBgYXNzaWduYCBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICAgICAgZGVjbGFyZSByZWFkb25seSBsb2M6IFNvdXJjZVNwYW47XG5cbiAgICAgICAgICBjb25zdHJ1Y3RvcihmaWVsZHM6IEJhc2VOb2RlRmllbGRzICYgRmllbGRzKSB7XG4gICAgICAgICAgICBhc3NpZ24odGhpcywgZmllbGRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgTm9kZUNvbnN0cnVjdG9yPEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHM+IHtcbiAgbmV3IChmaWVsZHM6IEZpZWxkcyk6IFJlYWRvbmx5PEZpZWxkcz47XG59XG5cbnR5cGUgVHlwZWROb2RlPFQgZXh0ZW5kcyBzdHJpbmcsIEZpZWxkcz4gPSB7IHR5cGU6IFQgfSAmIFJlYWRvbmx5PEZpZWxkcz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZWROb2RlQ29uc3RydWN0b3I8VCBleHRlbmRzIHN0cmluZywgRmllbGRzPiB7XG4gIG5ldyAob3B0aW9uczogRmllbGRzKTogVHlwZWROb2RlPFQsIEZpZWxkcz47XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -7,21 +7,2 @@ 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 __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _whens, _map, _whens_1;
import { assert, isPresent } from '@glimmer/util';

@@ -42,5 +23,3 @@ /**

function WhenList(whens) {
_whens.set(this, void 0);
__classPrivateFieldSet(this, _whens, whens);
this._whens = whens;
}

@@ -51,3 +30,3 @@

_proto.first = function first(kind) {
for (var _iterator = _createForOfIteratorHelperLoose(__classPrivateFieldGet(this, _whens)), _step; !(_step = _iterator()).done;) {
for (var _iterator = _createForOfIteratorHelperLoose(this._whens), _step; !(_step = _iterator()).done;) {
var when = _step.value;

@@ -67,7 +46,5 @@ var value = when.match(kind);

_whens = new WeakMap();
var When = /*#__PURE__*/function () {
function When() {
_map.set(this, new Map());
this._map = new Map();
}

@@ -78,3 +55,3 @@

_proto2.get = function get(pattern, or) {
var value = __classPrivateFieldGet(this, _map).get(pattern);
var value = this._map.get(pattern);

@@ -87,3 +64,3 @@ if (value) {

__classPrivateFieldGet(this, _map).set(pattern, value);
this._map.set(pattern, value);

@@ -94,3 +71,3 @@ return value;

_proto2.add = function add(pattern, out) {
__classPrivateFieldGet(this, _map).set(pattern, out);
this._map.set(pattern, out);
};

@@ -102,5 +79,5 @@

var exact = __classPrivateFieldGet(this, _map).get(pattern);
var exact = this._map.get(pattern);
var fallback = __classPrivateFieldGet(this, _map).get(MatchAny);
var fallback = this._map.get(MatchAny);

@@ -121,3 +98,2 @@ if (exact) {

_map = new WeakMap();
export function match(callback) {

@@ -129,3 +105,3 @@ return callback(new Matcher()).check();

function Matcher() {
_whens_1.set(this, new When());
this._whens = new When();
}

@@ -148,3 +124,3 @@ /**

_proto3.matchFor = function matchFor(left, right) {
var nesteds = __classPrivateFieldGet(this, _whens_1).match(left);
var nesteds = this._whens.match(left);

@@ -159,3 +135,3 @@ false && assert(isPresent(nesteds), "no match defined for (" + left + ", " + right + ") and no AnyMatch defined either");

callback) {
__classPrivateFieldGet(this, _whens_1).get(left, function () {
this._whens.get(left, function () {
return new When();

@@ -170,4 +146,2 @@ }).add(right, callback);

_whens_1 = new WeakMap();
function patternFor(kind) {

@@ -190,2 +164,2 @@ switch (kind) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBQSxNQUFBLEVBQUEsU0FBQSxRQUFBLGVBQUE7QUFJQTs7Ozs7Ozs7O0FBU0EsT0FBTyxJQUFNLFFBQVEsR0FBZCxXQUFBO0FBV1AsT0FBTyxJQUFNLFdBQVcsR0FBakIsY0FBQTs7SUFLUCxRO0FBR0Usb0JBQUEsS0FBQSxFQUE4QjtBQUY5QixJQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQTs7QUFHRSxJQUFBLHNCQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLENBQUE7QUFDRDs7OztTQUVELEssR0FBQSxlQUFLLElBQUwsRUFBc0I7QUFDcEIseURBQWEsc0JBQUEsQ0FBQSxJQUFBLEVBQWIsTUFBYSxDQUFiLHdDQUE4QjtBQUFBLFVBQTlCLElBQThCO0FBQzVCLFVBQUksS0FBSyxHQUFHLElBQUksQ0FBSixLQUFBLENBQVosSUFBWSxDQUFaOztBQUNBLFVBQUksU0FBUyxDQUFiLEtBQWEsQ0FBYixFQUFzQjtBQUNwQixlQUFPLEtBQUssQ0FBWixDQUFZLENBQVo7QUFDRDtBQUNGOztBQUVELFdBQUEsSUFBQTtBQUNELEc7Ozs7Ozs7SUFHSCxJO0FBQUEsa0JBQUE7QUFDRSxJQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUEwQixJQUExQixHQUEwQixFQUExQjtBQXNDRDs7OztVQXBDQyxHLEdBQUEsYUFBRyxPQUFILEVBQUcsRUFBSCxFQUFtQztBQUNqQyxRQUFJLEtBQUssR0FBRyxzQkFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQSxHQUFBLENBQVosT0FBWSxDQUFaOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsYUFBQSxLQUFBO0FBQ0Q7O0FBRUQsSUFBQSxLQUFLLEdBQUcsRUFBUixFQUFBOztBQUVBLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUEsR0FBQSxDQUFBLE9BQUEsRUFBQSxLQUFBOztBQUVBLFdBQUEsS0FBQTtBQUNELEc7O1VBRUQsRyxHQUFBLGFBQUcsT0FBSCxFQUFHLEdBQUgsRUFBOEI7QUFDNUIsSUFBQSxzQkFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEdBQUE7QUFDRCxHOztVQUVELEssR0FBQSxlQUFLLElBQUwsRUFBc0I7QUFDcEIsUUFBSSxPQUFPLEdBQUcsVUFBVSxDQUF4QixJQUF3QixDQUF4QjtBQUVBLFFBQUksR0FBRyxHQUFQLEVBQUE7O0FBRUEsUUFBSSxLQUFLLEdBQUcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUEsR0FBQSxDQUFaLE9BQVksQ0FBWjs7QUFDQSxRQUFJLFFBQVEsR0FBRyxzQkFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQSxHQUFBLENBQWYsUUFBZSxDQUFmOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsTUFBQSxHQUFHLENBQUgsSUFBQSxDQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFBLFFBQUEsRUFBYztBQUNaLE1BQUEsR0FBRyxDQUFILElBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsV0FBQSxHQUFBO0FBQ0QsRzs7Ozs7O0FBZ0JILE9BQU0sU0FBQSxLQUFBLENBQUEsUUFBQSxFQUEwRTtBQUM5RSxTQUFPLFFBQVEsQ0FBQyxJQUFULE9BQVMsRUFBRCxDQUFSLENBQVAsS0FBTyxFQUFQO0FBQ0Q7O0lBRUQsTztBQUFBLHFCQUFBO0FBQ0UsSUFBQSxRQUFBLENBQUEsR0FBQSxDQUFBLElBQUEsRUFBdUUsSUFBdkUsSUFBdUUsRUFBdkU7QUE4RUQ7QUE1RUM7Ozs7Ozs7VUFHVSxLLEdBQUEsaUJBQUs7QUFBQTs7QUFDYixXQUFPLFVBQUEsSUFBQSxFQUFBLEtBQUE7QUFBQSxhQUFpQixLQUFBLENBQUEsUUFBQSxDQUFjLElBQUksQ0FBbEIsSUFBQSxFQUF5QixLQUFLLENBQTlCLElBQUEsRUFBQSxJQUFBLEVBQXhCLEtBQXdCLENBQWpCO0FBQUEsS0FBUDtBQUNELEc7O1VBRU8sUSxHQUFBLGtCQUFRLElBQVIsRUFBUSxLQUFSLEVBRVc7QUFFakIsUUFBSSxPQUFPLEdBQUcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsS0FBQSxDQUFkLElBQWMsQ0FBZDs7QUFGaUIsYUFJakIsTUFBTSxDQUNKLFNBQVMsQ0FETCxPQUNLLENBREwsNkJBRXFCLElBRnJCLFVBSlcsS0FJWCxzQ0FKVztBQVNqQixRQUFJLFFBQVEsR0FBRyxJQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsS0FBQSxDQUFmLEtBQWUsQ0FBZjtBQVRpQixhQVdqQixNQUFNLENBQ0osUUFBUSxLQURKLElBQUEsNkJBRXFCLElBRnJCLFVBWFcsS0FXWCxzQ0FYVztBQWdCakIsV0FBQSxRQUFBO0FBQ0QsRzs7VUF3Q0QsSSxHQUFBLGNBQUksSUFBSixFQUFJLEtBQUosRUFHRTtBQUhFLEVBQUEsUUFBSixFQUkwQztBQUV4QyxJQUFBLHNCQUFBLENBQUEsSUFBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQXNCO0FBQUEsYUFBTSxJQUE1QixJQUE0QixFQUFOO0FBQUEsS0FBdEIsRUFBQSxHQUFBLENBQUEsS0FBQSxFQUFBLFFBQUE7O0FBRUEsV0FBQSxJQUFBO0FBQ0QsRzs7Ozs7OztBQUdILFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBb0M7QUFDbEMsVUFBQSxJQUFBO0FBQ0UsU0FBQTtBQUFBO0FBQUE7QUFDQSxTQUFBO0FBQUE7QUFBQTtBQUNBLFNBQUE7QUFBQTtBQUFBO0FBQ0UsYUFBQSxXQUFBOztBQUNGO0FBQ0UsYUFBQSxJQUFBO0FBTko7QUFRRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCwgaXNQcmVzZW50IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IENoYXJQb3NpdGlvbiwgSGJzUG9zaXRpb24sIEludmlzaWJsZVBvc2l0aW9uLCBPZmZzZXRLaW5kLCBQb3NpdGlvbkRhdGEgfSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIERTTCB1c2VkIGJ5IHNwYW4gYW5kIG9mZnNldCBpbiBwbGFjZXMgd2hlcmUgdGhleSBuZWVkIHRvIGV4aGF1c3RpdmVseVxuICogY29uc2lkZXIgYWxsIGNvbWJpbmF0aW9ucyBvZiBzdGF0ZXMgKEhhbmRsZWJhcnMgb2Zmc2V0cywgY2hhcmFjdGVyIG9mZnNldHMgYW5kIGludmlzaWJsZS9icm9rZW5cbiAqIG9mZnNldHMpLlxuICpcbiAqIEl0J3MgcHJvYmFibHkgb3ZlcmtpbGwsIGJ1dCBpdCBtYWtlcyB0aGUgY29kZSB0aGF0IHVzZXMgaXQgY2xlYXIuIEl0IGNvdWxkIGJlIHJlZmFjdG9yZWQgb3JcbiAqIHJlbW92ZWQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IE1hdGNoQW55ID0gJ01BVENIX0FOWSc7XG5leHBvcnQgdHlwZSBNYXRjaEFueSA9ICdNQVRDSF9BTlknO1xuXG50eXBlIE1hdGNoZXMgPVxuICB8ICdDaGFyLEhicydcbiAgfCAnSGJzLENoYXInXG4gIHwgJ0hicyxIYnMnXG4gIHwgJ0NoYXIsQ2hhcidcbiAgfCAnSW52aXNpYmxlLEFueSdcbiAgfCAnQW55LEludmlzaWJsZSc7XG5cbmV4cG9ydCBjb25zdCBJc0ludmlzaWJsZSA9ICdJU19JTlZJU0lCTEUnO1xuZXhwb3J0IHR5cGUgSXNJbnZpc2libGUgPSAnSVNfSU5WSVNJQkxFJztcblxudHlwZSBQYXR0ZXJuID0gT2Zmc2V0S2luZCB8IElzSW52aXNpYmxlIHwgTWF0Y2hBbnk7XG5cbmNsYXNzIFdoZW5MaXN0PE91dD4ge1xuICAjd2hlbnM6IFdoZW48T3V0PltdO1xuXG4gIGNvbnN0cnVjdG9yKHdoZW5zOiBXaGVuPE91dD5bXSkge1xuICAgIHRoaXMuI3doZW5zID0gd2hlbnM7XG4gIH1cblxuICBmaXJzdChraW5kOiBPZmZzZXRLaW5kKTogT3V0IHwgbnVsbCB7XG4gICAgZm9yIChsZXQgd2hlbiBvZiB0aGlzLiN3aGVucykge1xuICAgICAgbGV0IHZhbHVlID0gd2hlbi5tYXRjaChraW5kKTtcbiAgICAgIGlmIChpc1ByZXNlbnQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZVswXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5jbGFzcyBXaGVuPE91dD4ge1xuICAjbWFwOiBNYXA8UGF0dGVybiwgT3V0PiA9IG5ldyBNYXAoKTtcblxuICBnZXQocGF0dGVybjogUGF0dGVybiwgb3I6ICgpID0+IE91dCk6IE91dCB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy4jbWFwLmdldChwYXR0ZXJuKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gb3IoKTtcblxuICAgIHRoaXMuI21hcC5zZXQocGF0dGVybiwgdmFsdWUpO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRkKHBhdHRlcm46IFBhdHRlcm4sIG91dDogT3V0KTogdm9pZCB7XG4gICAgdGhpcy4jbWFwLnNldChwYXR0ZXJuLCBvdXQpO1xuICB9XG5cbiAgbWF0Y2goa2luZDogT2Zmc2V0S2luZCk6IE91dFtdIHtcbiAgICBsZXQgcGF0dGVybiA9IHBhdHRlcm5Gb3Ioa2luZCk7XG5cbiAgICBsZXQgb3V0OiBPdXRbXSA9IFtdO1xuXG4gICAgbGV0IGV4YWN0ID0gdGhpcy4jbWFwLmdldChwYXR0ZXJuKTtcbiAgICBsZXQgZmFsbGJhY2sgPSB0aGlzLiNtYXAuZ2V0KE1hdGNoQW55KTtcblxuICAgIGlmIChleGFjdCkge1xuICAgICAgb3V0LnB1c2goZXhhY3QpO1xuICAgIH1cblxuICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgb3V0LnB1c2goZmFsbGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cblxudHlwZSBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBJbiBleHRlbmRzIE1hdGNoZXMsIFJlbW92ZWQgZXh0ZW5kcyBNYXRjaGVzPiA9IEV4Y2x1ZGU8XG4gIEluLFxuICBSZW1vdmVkXG4+IGV4dGVuZHMgbmV2ZXJcbiAgPyBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+XG4gIDogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8SW4sIFJlbW92ZWQ+PjtcblxuZXhwb3J0IHR5cGUgTWF0Y2hGbjxPdXQ+ID0gKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0O1xuXG5pbnRlcmZhY2UgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gIGNoZWNrKCk6IE1hdGNoRm48T3V0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoPE91dD4oY2FsbGJhY2s6IChtOiBNYXRjaGVyPE91dD4pID0+IEV4aGF1c3RpdmVNYXRjaGVyPE91dD4pOiBNYXRjaEZuPE91dD4ge1xuICByZXR1cm4gY2FsbGJhY2sobmV3IE1hdGNoZXIoKSkuY2hlY2soKTtcbn1cblxuY2xhc3MgTWF0Y2hlcjxPdXQsIE0gZXh0ZW5kcyBNYXRjaGVzID0gTWF0Y2hlcz4ge1xuICAjd2hlbnM6IFdoZW48V2hlbjwobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQ+PiA9IG5ldyBXaGVuKCk7XG5cbiAgLyoqXG4gICAqIFlvdSBkaWRuJ3QgZXhoYXVzdGl2ZWx5IG1hdGNoIGFsbCBwb3NzaWJpbGl0aWVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNoZWNrKCk6IE1hdGNoRm48T3V0PiB7XG4gICAgcmV0dXJuIChsZWZ0LCByaWdodCkgPT4gdGhpcy5tYXRjaEZvcihsZWZ0LmtpbmQsIHJpZ2h0LmtpbmQpKGxlZnQsIHJpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hGb3IoXG4gICAgbGVmdDogT2Zmc2V0S2luZCxcbiAgICByaWdodDogT2Zmc2V0S2luZFxuICApOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQge1xuICAgIGxldCBuZXN0ZWRzID0gdGhpcy4jd2hlbnMubWF0Y2gobGVmdCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBpc1ByZXNlbnQobmVzdGVkcyksXG4gICAgICBgbm8gbWF0Y2ggZGVmaW5lZCBmb3IgKCR7bGVmdH0sICR7cmlnaHR9KSBhbmQgbm8gQW55TWF0Y2ggZGVmaW5lZCBlaXRoZXJgXG4gICAgKTtcblxuICAgIGxldCBjYWxsYmFjayA9IG5ldyBXaGVuTGlzdChuZXN0ZWRzKS5maXJzdChyaWdodCk7XG5cbiAgICBhc3NlcnQoXG4gICAgICBjYWxsYmFjayAhPT0gbnVsbCxcbiAgICAgIGBubyBtYXRjaCBkZWZpbmVkIGZvciAoJHtsZWZ0fSwgJHtyaWdodH0pIGFuZCBubyBBbnlNYXRjaCBkZWZpbmVkIGVpdGhlcmBcbiAgICApO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9XG5cbiAgLy8gVGhpcyBiaWcgYmxvY2sgaXMgdGhlIGJ1bGsgb2YgdGhlIGhlYXZ5IGxpZnRpbmcgaW4gdGhpcyBmaWxlLiBJdCBmYWNpbGl0YXRlcyBleGhhdXN0aXZlbmVzc1xuICAvLyBjaGVja2luZyBzbyB0aGF0IG1hdGNoZXJzIGNhbiBlbnN1cmUgdGhleSd2ZSBhY3R1YWxseSBjb3ZlcmVkIGFsbCB0aGUgY2FzZXMgKGFuZCBUeXBlU2NyaXB0XG4gIC8vIHdpbGwgdHJlYXQgaXQgYXMgYW4gZXhoYXVzdGl2ZSBtYXRjaCkuXG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBDaGFyUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdDaGFyLEhicyc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBDaGFyUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnSGJzLENoYXInPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogSGJzUG9zaXRpb24sIHJpZ2h0OiBIYnNQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdIYnMsSGJzJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgIGNhbGxiYWNrOiAobGVmdDogQ2hhclBvc2l0aW9uLCByaWdodDogQ2hhclBvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0NoYXIsQ2hhcic+O1xuICB3aGVuKFxuICAgIGxlZnQ6IElzSW52aXNpYmxlLFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IEludmlzaWJsZVBvc2l0aW9uLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIEV4Y2x1ZGU8TSwgJ0ludmlzaWJsZSxBbnknPj47XG4gIHdoZW4oXG4gICAgbGVmdDogTWF0Y2hBbnksXG4gICAgcmlnaHQ6IElzSW52aXNpYmxlLFxuICAgIGNhbGxiYWNrOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogSW52aXNpYmxlUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQW55LEludmlzaWJsZSc+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE1hdGNoQW55LFxuICAgIHJpZ2h0OiBNYXRjaEFueSxcbiAgICBjYWxsYmFjazogKGxlZnQ6IFBvc2l0aW9uRGF0YSwgcmlnaHQ6IFBvc2l0aW9uRGF0YSkgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVNYXRjaGVyPE91dD47XG4gIHdoZW4oXG4gICAgbGVmdDogUGF0dGVybixcbiAgICByaWdodDogUGF0dGVybixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNhbGxiYWNrOiAobGVmdDogYW55LCByaWdodDogYW55KSA9PiBPdXRcbiAgKTogTWF0Y2hlcjxPdXQsIE1hdGNoZXM+IHwgRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PiB7XG4gICAgdGhpcy4jd2hlbnMuZ2V0KGxlZnQsICgpID0+IG5ldyBXaGVuKCkpLmFkZChyaWdodCwgY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGF0dGVybkZvcihraW5kOiBPZmZzZXRLaW5kKTogUGF0dGVybiB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgT2Zmc2V0S2luZC5Ccm9rZW46XG4gICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICBjYXNlIE9mZnNldEtpbmQuTm9uRXhpc3RlbnQ6XG4gICAgICByZXR1cm4gSXNJbnZpc2libGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBraW5kO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9tYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFBLE1BQUEsRUFBQSxTQUFBLFFBQUEsZUFBQTtBQUlBOzs7Ozs7Ozs7QUFTQSxPQUFPLElBQU0sUUFBUSxHQUFkLFdBQUE7QUFXUCxPQUFPLElBQU0sV0FBVyxHQUFqQixjQUFBOztJQUtQLFE7QUFHRSxvQkFBQSxLQUFBLEVBQThCO0FBQzVCLFNBQUEsTUFBQSxHQUFBLEtBQUE7QUFDRDs7OztTQUVELEssR0FBQSxlQUFLLElBQUwsRUFBc0I7QUFDcEIseURBQWlCLEtBQWpCLE1BQUEsd0NBQThCO0FBQUEsVUFBOUIsSUFBOEI7QUFDNUIsVUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFKLEtBQUEsQ0FBWixJQUFZLENBQVo7O0FBQ0EsVUFBSSxTQUFTLENBQWIsS0FBYSxDQUFiLEVBQXNCO0FBQ3BCLGVBQU8sS0FBSyxDQUFaLENBQVksQ0FBWjtBQUNEO0FBQ0Y7O0FBRUQsV0FBQSxJQUFBO0FBQ0QsRzs7Ozs7SUFHSCxJO0FBQUEsa0JBQUE7QUFDRSxTQUFBLElBQUEsR0FBMEIsSUFBMUIsR0FBMEIsRUFBMUI7QUFzQ0Q7Ozs7VUFwQ0MsRyxHQUFBLGFBQUcsT0FBSCxFQUFHLEVBQUgsRUFBbUM7QUFDakMsUUFBSSxLQUFLLEdBQUcsS0FBQSxJQUFBLENBQUEsR0FBQSxDQUFaLE9BQVksQ0FBWjs7QUFFQSxRQUFBLEtBQUEsRUFBVztBQUNULGFBQUEsS0FBQTtBQUNEOztBQUVELElBQUEsS0FBSyxHQUFHLEVBQVIsRUFBQTs7QUFFQSxTQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEtBQUE7O0FBRUEsV0FBQSxLQUFBO0FBQ0QsRzs7VUFFRCxHLEdBQUEsYUFBRyxPQUFILEVBQUcsR0FBSCxFQUE4QjtBQUM1QixTQUFBLElBQUEsQ0FBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEdBQUE7QUFDRCxHOztVQUVELEssR0FBQSxlQUFLLElBQUwsRUFBc0I7QUFDcEIsUUFBSSxPQUFPLEdBQUcsVUFBVSxDQUF4QixJQUF3QixDQUF4QjtBQUVBLFFBQUksR0FBRyxHQUFQLEVBQUE7O0FBRUEsUUFBSSxLQUFLLEdBQUcsS0FBQSxJQUFBLENBQUEsR0FBQSxDQUFaLE9BQVksQ0FBWjs7QUFDQSxRQUFJLFFBQVEsR0FBRyxLQUFBLElBQUEsQ0FBQSxHQUFBLENBQWYsUUFBZSxDQUFmOztBQUVBLFFBQUEsS0FBQSxFQUFXO0FBQ1QsTUFBQSxHQUFHLENBQUgsSUFBQSxDQUFBLEtBQUE7QUFDRDs7QUFFRCxRQUFBLFFBQUEsRUFBYztBQUNaLE1BQUEsR0FBRyxDQUFILElBQUEsQ0FBQSxRQUFBO0FBQ0Q7O0FBRUQsV0FBQSxHQUFBO0FBQ0QsRzs7Ozs7QUFnQkgsT0FBTSxTQUFBLEtBQUEsQ0FBQSxRQUFBLEVBQTBFO0FBQzlFLFNBQU8sUUFBUSxDQUFDLElBQVQsT0FBUyxFQUFELENBQVIsQ0FBUCxLQUFPLEVBQVA7QUFDRDs7SUFFRCxPO0FBQUEscUJBQUE7QUFDRSxTQUFBLE1BQUEsR0FBdUUsSUFBdkUsSUFBdUUsRUFBdkU7QUE4RUQ7QUE1RUM7Ozs7Ozs7VUFHVSxLLEdBQUEsaUJBQUs7QUFBQTs7QUFDYixXQUFPLFVBQUEsSUFBQSxFQUFBLEtBQUE7QUFBQSxhQUFpQixLQUFBLENBQUEsUUFBQSxDQUFjLElBQUksQ0FBbEIsSUFBQSxFQUF5QixLQUFLLENBQTlCLElBQUEsRUFBQSxJQUFBLEVBQXhCLEtBQXdCLENBQWpCO0FBQUEsS0FBUDtBQUNELEc7O1VBRU8sUSxHQUFBLGtCQUFRLElBQVIsRUFBUSxLQUFSLEVBRVc7QUFFakIsUUFBSSxPQUFPLEdBQUcsS0FBQSxNQUFBLENBQUEsS0FBQSxDQUFkLElBQWMsQ0FBZDs7QUFGaUIsYUFJakIsTUFBTSxDQUNKLFNBQVMsQ0FETCxPQUNLLENBREwsNkJBRXFCLElBRnJCLFVBSlcsS0FJWCxzQ0FKVztBQVNqQixRQUFJLFFBQVEsR0FBRyxJQUFBLFFBQUEsQ0FBQSxPQUFBLEVBQUEsS0FBQSxDQUFmLEtBQWUsQ0FBZjtBQVRpQixhQVdqQixNQUFNLENBQ0osUUFBUSxLQURKLElBQUEsNkJBRXFCLElBRnJCLFVBWFcsS0FXWCxzQ0FYVztBQWdCakIsV0FBQSxRQUFBO0FBQ0QsRzs7VUF3Q0QsSSxHQUFBLGNBQUksSUFBSixFQUFJLEtBQUosRUFHRTtBQUhFLEVBQUEsUUFBSixFQUkwQztBQUV4QyxTQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsSUFBQSxFQUFzQjtBQUFBLGFBQU0sSUFBNUIsSUFBNEIsRUFBTjtBQUFBLEtBQXRCLEVBQUEsR0FBQSxDQUFBLEtBQUEsRUFBQSxRQUFBOztBQUVBLFdBQUEsSUFBQTtBQUNELEc7Ozs7O0FBR0gsU0FBQSxVQUFBLENBQUEsSUFBQSxFQUFvQztBQUNsQyxVQUFBLElBQUE7QUFDRSxTQUFBO0FBQUE7QUFBQTtBQUNBLFNBQUE7QUFBQTtBQUFBO0FBQ0EsU0FBQTtBQUFBO0FBQUE7QUFDRSxhQUFBLFdBQUE7O0FBQ0Y7QUFDRSxhQUFBLElBQUE7QUFOSjtBQVFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0LCBpc1ByZXNlbnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgQ2hhclBvc2l0aW9uLCBIYnNQb3NpdGlvbiwgSW52aXNpYmxlUG9zaXRpb24sIE9mZnNldEtpbmQsIFBvc2l0aW9uRGF0YSB9IGZyb20gJy4vb2Zmc2V0JztcblxuLyoqXG4gKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgRFNMIHVzZWQgYnkgc3BhbiBhbmQgb2Zmc2V0IGluIHBsYWNlcyB3aGVyZSB0aGV5IG5lZWQgdG8gZXhoYXVzdGl2ZWx5XG4gKiBjb25zaWRlciBhbGwgY29tYmluYXRpb25zIG9mIHN0YXRlcyAoSGFuZGxlYmFycyBvZmZzZXRzLCBjaGFyYWN0ZXIgb2Zmc2V0cyBhbmQgaW52aXNpYmxlL2Jyb2tlblxuICogb2Zmc2V0cykuXG4gKlxuICogSXQncyBwcm9iYWJseSBvdmVya2lsbCwgYnV0IGl0IG1ha2VzIHRoZSBjb2RlIHRoYXQgdXNlcyBpdCBjbGVhci4gSXQgY291bGQgYmUgcmVmYWN0b3JlZCBvclxuICogcmVtb3ZlZC5cbiAqL1xuXG5leHBvcnQgY29uc3QgTWF0Y2hBbnkgPSAnTUFUQ0hfQU5ZJztcbmV4cG9ydCB0eXBlIE1hdGNoQW55ID0gJ01BVENIX0FOWSc7XG5cbnR5cGUgTWF0Y2hlcyA9XG4gIHwgJ0NoYXIsSGJzJ1xuICB8ICdIYnMsQ2hhcidcbiAgfCAnSGJzLEhicydcbiAgfCAnQ2hhcixDaGFyJ1xuICB8ICdJbnZpc2libGUsQW55J1xuICB8ICdBbnksSW52aXNpYmxlJztcblxuZXhwb3J0IGNvbnN0IElzSW52aXNpYmxlID0gJ0lTX0lOVklTSUJMRSc7XG5leHBvcnQgdHlwZSBJc0ludmlzaWJsZSA9ICdJU19JTlZJU0lCTEUnO1xuXG50eXBlIFBhdHRlcm4gPSBPZmZzZXRLaW5kIHwgSXNJbnZpc2libGUgfCBNYXRjaEFueTtcblxuY2xhc3MgV2hlbkxpc3Q8T3V0PiB7XG4gIF93aGVuczogV2hlbjxPdXQ+W107XG5cbiAgY29uc3RydWN0b3Iod2hlbnM6IFdoZW48T3V0PltdKSB7XG4gICAgdGhpcy5fd2hlbnMgPSB3aGVucztcbiAgfVxuXG4gIGZpcnN0KGtpbmQ6IE9mZnNldEtpbmQpOiBPdXQgfCBudWxsIHtcbiAgICBmb3IgKGxldCB3aGVuIG9mIHRoaXMuX3doZW5zKSB7XG4gICAgICBsZXQgdmFsdWUgPSB3aGVuLm1hdGNoKGtpbmQpO1xuICAgICAgaWYgKGlzUHJlc2VudCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlWzBdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmNsYXNzIFdoZW48T3V0PiB7XG4gIF9tYXA6IE1hcDxQYXR0ZXJuLCBPdXQ+ID0gbmV3IE1hcCgpO1xuXG4gIGdldChwYXR0ZXJuOiBQYXR0ZXJuLCBvcjogKCkgPT4gT3V0KTogT3V0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl9tYXAuZ2V0KHBhdHRlcm4pO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdmFsdWUgPSBvcigpO1xuXG4gICAgdGhpcy5fbWFwLnNldChwYXR0ZXJuLCB2YWx1ZSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBhZGQocGF0dGVybjogUGF0dGVybiwgb3V0OiBPdXQpOiB2b2lkIHtcbiAgICB0aGlzLl9tYXAuc2V0KHBhdHRlcm4sIG91dCk7XG4gIH1cblxuICBtYXRjaChraW5kOiBPZmZzZXRLaW5kKTogT3V0W10ge1xuICAgIGxldCBwYXR0ZXJuID0gcGF0dGVybkZvcihraW5kKTtcblxuICAgIGxldCBvdXQ6IE91dFtdID0gW107XG5cbiAgICBsZXQgZXhhY3QgPSB0aGlzLl9tYXAuZ2V0KHBhdHRlcm4pO1xuICAgIGxldCBmYWxsYmFjayA9IHRoaXMuX21hcC5nZXQoTWF0Y2hBbnkpO1xuXG4gICAgaWYgKGV4YWN0KSB7XG4gICAgICBvdXQucHVzaChleGFjdCk7XG4gICAgfVxuXG4gICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICBvdXQucHVzaChmYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG50eXBlIEV4aGF1c3RpdmVDaGVjazxPdXQsIEluIGV4dGVuZHMgTWF0Y2hlcywgUmVtb3ZlZCBleHRlbmRzIE1hdGNoZXM+ID0gRXhjbHVkZTxcbiAgSW4sXG4gIFJlbW92ZWRcbj4gZXh0ZW5kcyBuZXZlclxuICA/IEV4aGF1c3RpdmVNYXRjaGVyPE91dD5cbiAgOiBNYXRjaGVyPE91dCwgRXhjbHVkZTxJbiwgUmVtb3ZlZD4+O1xuXG5leHBvcnQgdHlwZSBNYXRjaEZuPE91dD4gPSAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXQ7XG5cbmludGVyZmFjZSBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+IHtcbiAgY2hlY2soKTogTWF0Y2hGbjxPdXQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2g8T3V0PihjYWxsYmFjazogKG06IE1hdGNoZXI8T3V0PikgPT4gRXhoYXVzdGl2ZU1hdGNoZXI8T3V0Pik6IE1hdGNoRm48T3V0PiB7XG4gIHJldHVybiBjYWxsYmFjayhuZXcgTWF0Y2hlcigpKS5jaGVjaygpO1xufVxuXG5jbGFzcyBNYXRjaGVyPE91dCwgTSBleHRlbmRzIE1hdGNoZXMgPSBNYXRjaGVzPiB7XG4gIF93aGVuczogV2hlbjxXaGVuPChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dD4+ID0gbmV3IFdoZW4oKTtcblxuICAvKipcbiAgICogWW91IGRpZG4ndCBleGhhdXN0aXZlbHkgbWF0Y2ggYWxsIHBvc3NpYmlsaXRpZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2soKTogTWF0Y2hGbjxPdXQ+IHtcbiAgICByZXR1cm4gKGxlZnQsIHJpZ2h0KSA9PiB0aGlzLm1hdGNoRm9yKGxlZnQua2luZCwgcmlnaHQua2luZCkobGVmdCwgcmlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXRjaEZvcihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLFxuICAgIHJpZ2h0OiBPZmZzZXRLaW5kXG4gICk6IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dCB7XG4gICAgbGV0IG5lc3RlZHMgPSB0aGlzLl93aGVucy5tYXRjaChsZWZ0KTtcblxuICAgIGFzc2VydChcbiAgICAgIGlzUHJlc2VudChuZXN0ZWRzKSxcbiAgICAgIGBubyBtYXRjaCBkZWZpbmVkIGZvciAoJHtsZWZ0fSwgJHtyaWdodH0pIGFuZCBubyBBbnlNYXRjaCBkZWZpbmVkIGVpdGhlcmBcbiAgICApO1xuXG4gICAgbGV0IGNhbGxiYWNrID0gbmV3IFdoZW5MaXN0KG5lc3RlZHMpLmZpcnN0KHJpZ2h0KTtcblxuICAgIGFzc2VydChcbiAgICAgIGNhbGxiYWNrICE9PSBudWxsLFxuICAgICAgYG5vIG1hdGNoIGRlZmluZWQgZm9yICgke2xlZnR9LCAke3JpZ2h0fSkgYW5kIG5vIEFueU1hdGNoIGRlZmluZWQgZWl0aGVyYFxuICAgICk7XG5cbiAgICByZXR1cm4gY2FsbGJhY2s7XG4gIH1cblxuICAvLyBUaGlzIGJpZyBibG9jayBpcyB0aGUgYnVsayBvZiB0aGUgaGVhdnkgbGlmdGluZyBpbiB0aGlzIGZpbGUuIEl0IGZhY2lsaXRhdGVzIGV4aGF1c3RpdmVuZXNzXG4gIC8vIGNoZWNraW5nIHNvIHRoYXQgbWF0Y2hlcnMgY2FuIGVuc3VyZSB0aGV5J3ZlIGFjdHVhbGx5IGNvdmVyZWQgYWxsIHRoZSBjYXNlcyAoYW5kIFR5cGVTY3JpcHRcbiAgLy8gd2lsbCB0cmVhdCBpdCBhcyBhbiBleGhhdXN0aXZlIG1hdGNoKS5cbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICBjYWxsYmFjazogKGxlZnQ6IENoYXJQb3NpdGlvbiwgcmlnaHQ6IEhic1Bvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0NoYXIsSGJzJz47XG4gIHdoZW4oXG4gICAgbGVmdDogT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBIYnNQb3NpdGlvbiwgcmlnaHQ6IENoYXJQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdIYnMsQ2hhcic+O1xuICB3aGVuKFxuICAgIGxlZnQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgcmlnaHQ6IE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBIYnNQb3NpdGlvbiwgcmlnaHQ6IEhic1Bvc2l0aW9uKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZUNoZWNrPE91dCwgTSwgJ0hicyxIYnMnPjtcbiAgd2hlbihcbiAgICBsZWZ0OiBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICByaWdodDogT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBDaGFyUG9zaXRpb24sIHJpZ2h0OiBDaGFyUG9zaXRpb24pID0+IE91dFxuICApOiBFeGhhdXN0aXZlQ2hlY2s8T3V0LCBNLCAnQ2hhcixDaGFyJz47XG4gIHdoZW4oXG4gICAgbGVmdDogSXNJbnZpc2libGUsXG4gICAgcmlnaHQ6IE1hdGNoQW55LFxuICAgIGNhbGxiYWNrOiAobGVmdDogSW52aXNpYmxlUG9zaXRpb24sIHJpZ2h0OiBQb3NpdGlvbkRhdGEpID0+IE91dFxuICApOiBNYXRjaGVyPE91dCwgRXhjbHVkZTxNLCAnSW52aXNpYmxlLEFueSc+PjtcbiAgd2hlbihcbiAgICBsZWZ0OiBNYXRjaEFueSxcbiAgICByaWdodDogSXNJbnZpc2libGUsXG4gICAgY2FsbGJhY2s6IChsZWZ0OiBQb3NpdGlvbkRhdGEsIHJpZ2h0OiBJbnZpc2libGVQb3NpdGlvbikgPT4gT3V0XG4gICk6IEV4aGF1c3RpdmVDaGVjazxPdXQsIE0sICdBbnksSW52aXNpYmxlJz47XG4gIHdoZW4oXG4gICAgbGVmdDogTWF0Y2hBbnksXG4gICAgcmlnaHQ6IE1hdGNoQW55LFxuICAgIGNhbGxiYWNrOiAobGVmdDogUG9zaXRpb25EYXRhLCByaWdodDogUG9zaXRpb25EYXRhKSA9PiBPdXRcbiAgKTogRXhoYXVzdGl2ZU1hdGNoZXI8T3V0PjtcbiAgd2hlbihcbiAgICBsZWZ0OiBQYXR0ZXJuLFxuICAgIHJpZ2h0OiBQYXR0ZXJuLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY2FsbGJhY2s6IChsZWZ0OiBhbnksIHJpZ2h0OiBhbnkpID0+IE91dFxuICApOiBNYXRjaGVyPE91dCwgTWF0Y2hlcz4gfCBFeGhhdXN0aXZlTWF0Y2hlcjxPdXQ+IHtcbiAgICB0aGlzLl93aGVucy5nZXQobGVmdCwgKCkgPT4gbmV3IFdoZW4oKSkuYWRkKHJpZ2h0LCBjYWxsYmFjayk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXR0ZXJuRm9yKGtpbmQ6IE9mZnNldEtpbmQpOiBQYXR0ZXJuIHtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSBPZmZzZXRLaW5kLkJyb2tlbjpcbiAgICBjYXNlIE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljOlxuICAgIGNhc2UgT2Zmc2V0S2luZC5Ob25FeGlzdGVudDpcbiAgICAgIHJldHVybiBJc0ludmlzaWJsZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGtpbmQ7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -5,22 +5,3 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPos, _charPos; // eslint-disable-next-line import/no-extraneous-dependencies
// eslint-disable-next-line import/no-extraneous-dependencies
import { UNKNOWN_POSITION } from '../location';

@@ -169,3 +150,3 @@ import { match, MatchAny } from './match';

_locPos.set(this, null);
this._locPos = null;
}

@@ -214,3 +195,3 @@ /**

_proto2.toHbsPos = function toHbsPos() {
var locPos = __classPrivateFieldGet(this, _locPos);
var locPos = this._locPos;

@@ -221,5 +202,5 @@ if (locPos === null) {

if (hbsPos === null) {
__classPrivateFieldSet(this, _locPos, locPos = BROKEN);
this._locPos = locPos = BROKEN;
} else {
__classPrivateFieldSet(this, _locPos, locPos = new HbsPosition(this.source, hbsPos, this.charPos));
this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);
}

@@ -240,3 +221,2 @@ }

}();
_locPos = new WeakMap();
export var HbsPosition = /*#__PURE__*/function () {

@@ -253,6 +233,3 @@ function HbsPosition(source, hbsPos, charPos) {

;
_charPos.set(this, void 0);
__classPrivateFieldSet(this, _charPos, charPos === null ? null : new CharPosition(source, charPos));
this._charPos = charPos === null ? null : new CharPosition(source, charPos);
}

@@ -272,3 +249,3 @@ /**

_proto3.toCharPos = function toCharPos() {
var charPos = __classPrivateFieldGet(this, _charPos);
var charPos = this._charPos;

@@ -279,5 +256,5 @@ if (charPos === null) {

if (charPosNumber === null) {
__classPrivateFieldSet(this, _charPos, charPos = BROKEN);
this._charPos = charPos = BROKEN;
} else {
__classPrivateFieldSet(this, _charPos, charPos = new CharPosition(this.source, charPosNumber));
this._charPos = charPos = new CharPosition(this.source, charPosNumber);
}

@@ -316,3 +293,2 @@ }

}();
_charPos = new WeakMap();
export var InvisiblePosition = /*#__PURE__*/function () {

@@ -407,2 +383,2 @@ function InvisiblePosition(kind, // whatever was provided, possibly broken

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQUFBOzs7QUFDQSxTQUFBLGdCQUFBLFFBQUEsYUFBQTtBQUVBLFNBQUEsS0FBQSxFQUFBLFFBQUEsUUFBQSxTQUFBO0FBQ0EsU0FBQSxJQUFBLFFBQUEsUUFBQTtBQTRDQTs7Ozs7O0FBS0EsT0FBTyxJQUFNLE1BQU0sR0FBWixRQUFBO0FBS1A7Ozs7Ozs7Ozs7O0FBVUEsV0FBTSxZQUFOO0FBbUJFLHdCQUFBLElBQUEsRUFBcUQ7QUFBaEMsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUFvQztBQWxCekQ7Ozs7Ozs7QUFERixlQU1FLFNBTkYsR0FNRSxtQkFBQSxNQUFBLEVBQUEsR0FBQSxFQUFvRDtBQUNsRCxXQUFPLElBQUEsV0FBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsSUFBQSxFQUFQLElBQU8sRUFBUDtBQUNEO0FBRUQ7Ozs7O0FBVkY7O0FBQUEsZUFlRSxNQWZGLEdBZUUsZ0JBQWMsR0FBZCxFQUFvRDtBQUFBLFFBQXRDLEdBQXNDO0FBQXRDLE1BQUEsR0FBc0MsR0FBcEQsZ0JBQW9EO0FBQUE7O0FBQ2xELFdBQU8sSUFBQSxpQkFBQSxDQUFxQjtBQUFBO0FBQXJCLE1BQUEsR0FBQSxFQUFQLElBQU8sRUFBUDtBQUNEO0FBSUQ7OztBQXJCRjs7QUFBQTs7QUE2QkU7Ozs7Ozs7OztBQTdCRixTQXNDRSxHQXRDRixHQXNDRSxhQUFHLEtBQUgsRUFBdUI7QUFDckIsV0FBTyxJQUFHLENBQUMsS0FBRCxJQUFBLEVBQVksS0FBSyxDQUEzQixJQUFVLENBQVY7QUFDRDtBQUVEOzs7O0FBMUNGOztBQUFBLFNBOENFLEtBOUNGLEdBOENFLGVBQUssS0FBTCxFQUF5QjtBQUN2QixXQUFPLElBQUksQ0FBQyxLQUFELElBQUEsRUFBWSxLQUFLLENBQTVC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QUEsUUFBK0IsS0FBL0IsU0FBc0IsT0FBdEI7QUFBQSxXQUEyQyxJQUFJLEtBVm5ELEtBVUk7QUFBQSxHQVZKLEVBQUEsSUFBQSxDQVlPO0FBQUE7QUFaUCxJQVlPO0FBQUE7QUFaUCxJQWVJLGlCQUFBLEtBQUEsRUFBNEI7QUFBQSxRQUFqQixJQUFpQixTQUF6QixNQUF5Qjs7QUFBQSxRQUFBLEVBQUE7O0FBQUMsV0FBQSxJQUFJLE1BQUEsQ0FBQSxFQUFBLEdBQUssS0FBSyxDQUFWLFNBQUssRUFBTCxNQUFBLElBQUEsSUFBc0IsRUFBQSxLQUFBLEtBQXRCLENBQUEsR0FBc0IsS0FBdEIsQ0FBQSxHQUFzQixFQUFBLENBQTFCLE1BQUksQ0FBSjtBQWZqQyxHQUFBLEVBQUEsSUFBQSxDQWlCTztBQUFBO0FBakJQLElBaUJPO0FBQUE7QUFqQlAsSUFvQkksVUFBQSxJQUFBLFNBQTRCO0FBQUEsUUFBWCxLQUFXLFNBQW5CLE1BQW1COztBQUFBLFFBQUEsRUFBQTs7QUFBQyxXQUFBLENBQUEsQ0FBQSxFQUFBLEdBQUEsSUFBSSxDQUFKLFNBQUEsRUFBQSxNQUFBLElBQUEsSUFBZ0IsRUFBQSxLQUFBLEtBQWhCLENBQUEsR0FBZ0IsS0FBaEIsQ0FBQSxHQUFnQixFQUFBLENBQWhCLE1BQUEsTUFBQSxLQUFBO0FBcEJqQyxHQUFBLEVBQUEsSUFBQSxDQUFBLFFBQUEsRUFBQSxRQUFBLEVBc0I0QjtBQUFBLFdBdkI5QixLQXVCOEI7QUFBQSxHQXRCNUIsQ0FEeUI7QUFBQSxDQUFWLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgU291cmNlUG9zaXRpb24sIFVOS05PV05fUE9TSVRJT04gfSBmcm9tICcuLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2UnO1xuaW1wb3J0IHsgbWF0Y2gsIE1hdGNoQW55IH0gZnJvbSAnLi9tYXRjaCc7XG5pbXBvcnQgeyBTb3VyY2VTcGFuLCBzcGFuIH0gZnJvbSAnLi9zcGFuJztcblxuZXhwb3J0IGNvbnN0IGVudW0gT2Zmc2V0S2luZCB7XG4gIC8qKlxuICAgKiBXZSBoYXZlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiBvZiB0aGlzIG9mZnNldCBvciBzcGFuLlxuICAgKi9cbiAgQ2hhclBvc2l0aW9uID0gJ0NoYXJQb3NpdGlvbicsXG5cbiAgLyoqXG4gICAqIFRoaXMgb2Zmc2V0IG9yIHNwYW4gd2FzIGluc3RhbnRpYXRlZCB3aXRoIGEgSGFuZGxlYmFycyBTb3VyY2VQb3NpdGlvbiBvciBTb3VyY2VMb2NhdGlvbi4gSXRzXG4gICAqIGNoYXJhY3RlciBwb3NpdGlvbiB3aWxsIGJlIGNvbXB1dGVkIG9uIGRlbWFuZC5cbiAgICovXG4gIEhic1Bvc2l0aW9uID0gJ0hic1Bvc2l0aW9uJyxcblxuICAvKipcbiAgICogZm9yIChyYXJlKSBzaXR1YXRpb25zIHdoZXJlIGEgbm9kZSBpcyBjcmVhdGVkIGJ1dCB0aGVyZSB3YXMgbm8gc291cmNlIGxvY2F0aW9uIChlLmcuIHRoZSBuYW1lXG4gICAqIFwiZGVmYXVsdFwiIGluIGRlZmF1bHQgYmxvY2tzIHdoZW4gdGhlIHdvcmQgXCJkZWZhdWx0XCIgbmV2ZXIgYXBwZWFyZWQgaW4gc291cmNlKS4gVGhpcyBpcyB1c2VkXG4gICAqIGJ5IHRoZSBpbnRlcm5hbHMgd2hlbiB0aGVyZSBpcyBhIGxlZ2l0aW1hdGUgcmVhc29uIGZvciB0aGUgaW50ZXJuYWxzIHRvIHN5bnRoZXNpemUgYSBub2RlXG4gICAqIHdpdGggbm8gbG9jYXRpb24uXG4gICAqL1xuICBJbnRlcm5hbHNTeW50aGV0aWMgPSAnSW50ZXJuYWxzU3ludGhldGljJyxcbiAgLyoqXG4gICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIGEgbm9kZSByZXByZXNlbnRzIHplcm8gcGFydHMgb2YgdGhlIHNvdXJjZSAoZm9yIGV4YW1wbGUsIGVtcHR5IGFyZ3VtZW50cykuXG4gICAqIEluIGdlbmVyYWwsIHdlIGF0dGVtcHQgdG8gYXNzaWduIHRoZXNlIG5vZGVzICpzb21lKiBwb3NpdGlvbiAoZW1wdHkgYXJndW1lbnRzIGNhbiBiZVxuICAgKiBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsZWUpLCBidXQgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlXG4gICAqL1xuICBOb25FeGlzdGVudCA9ICdOb25FeGlzdGVudCcsXG4gIC8qKlxuICAgKiBGb3Igc2l0dWF0aW9ucyB3aGVyZSBhIHNvdXJjZSBsb2NhdGlvbiB3YXMgZXhwZWN0ZWQsIGJ1dCBpdCBkaWRuJ3QgY29ycmVzcG9uZCB0byB0aGUgbm9kZSBpblxuICAgKiB0aGUgc291cmNlLiBUaGlzIGhhcHBlbnMgaWYgYSBwbHVnaW4gY3JlYXRlcyBicm9rZW4gbG9jYXRpb25zLlxuICAgKi9cbiAgQnJva2VuID0gJ0Jyb2tlbicsXG59XG5cbi8qKlxuICogQWxsIHBvc2l0aW9ucyBoYXZlIHRoZXNlIGRldGFpbHMgaW4gY29tbW9uLiBNb3N0IG5vdGFibHksIGFsbCB0aHJlZSBraW5kcyBvZiBwb3NpdGlvbnMgY2FuXG4gKiBtdXN0IGJlIGFibGUgdG8gYXR0ZW1wdCB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgaW50byB7QHNlZSBDaGFyUG9zaXRpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQ7XG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24gfCBudWxsO1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb247XG59XG5cbi8qKlxuICogVXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIGF0dGVtcHQgdG8gY29udmVydCBhIGBTb3VyY2VQb3NpdGlvbmAgdG8gYSBjaGFyYWN0ZXIgb2Zmc2V0IGZhaWxlZC4gSXRcbiAqIGlzIHNlcGFyYXRlIGZyb20gYG51bGxgIHNvIHRoYXQgYG51bGxgIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGNvbXB1dGF0aW9uIHdhc24ndCB5ZXRcbiAqIGF0dGVtcHRlZCAoYW5kIHRoZXJlZm9yZSB0byBjYWNoZSB0aGUgZmFpbHVyZSlcbiAqL1xuZXhwb3J0IGNvbnN0IEJST0tFTiA9ICdCUk9LRU4nO1xuZXhwb3J0IHR5cGUgQlJPS0VOID0gJ0JST0tFTic7XG5cbmV4cG9ydCB0eXBlIEFueVBvc2l0aW9uID0gSGJzUG9zaXRpb24gfCBDaGFyUG9zaXRpb24gfCBJbnZpc2libGVQb3NpdGlvbjtcblxuLyoqXG4gKiBBIGBTb3VyY2VPZmZzZXRgIHJlcHJlc2VudHMgYSBzaW5nbGUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZS5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgYmFja2luZyBkYXRhIGZvciBgU291cmNlT2Zmc2V0YCBvYmplY3RzOlxuICpcbiAqIC0gYENoYXJQb3NpdGlvbmAsIHdoaWNoIGNvbnRhaW5zIGEgY2hhcmFjdGVyIG9mZnNldCBpbnRvIHRoZSByYXcgc291cmNlIHN0cmluZ1xuICogLSBgSGJzUG9zaXRpb25gLCB3aGljaCBjb250YWlucyBhIGBTb3VyY2VQb3NpdGlvbmAgZnJvbSB0aGUgSGFuZGxlYmFycyBBU1QsIHdoaWNoIGNhbiBiZVxuICogICBjb252ZXJ0ZWQgdG8gYSBgQ2hhclBvc2l0aW9uYCBvbiBkZW1hbmQuXG4gKiAtIGBJbnZpc2libGVQb3NpdGlvbmAsIHdoaWNoIHJlcHJlc2VudHMgYSBwb3NpdGlvbiBub3QgaW4gc291cmNlIChAc2VlIHtJbnZpc2libGVQb3NpdGlvbn0pXG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VyY2VPZmZzZXQge1xuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgZnJvbSBhIEhhbmRsZWJhcnMgYFNvdXJjZVBvc2l0aW9uYC4gSXQncyBzdG9yZWQgYXMtaXMsIGFuZCBjb252ZXJ0ZWRcbiAgICogaW50byBhIGNoYXJhY3RlciBvZmZzZXQgb24gZGVtYW5kLCB3aGljaCBhdm9pZHMgdW5uZWNlc3NhcmlseSBjb21wdXRpbmcgdGhlIG9mZnNldCBvZiBldmVyeVxuICAgKiBgU291cmNlTG9jYXRpb25gLCBidXQgYWxzbyBtZWFucyB0aGF0IGJyb2tlbiBgU291cmNlUG9zaXRpb25gcyBhcmUgbm90IGFsd2F5cyBkZXRlY3RlZC5cbiAgICovXG4gIHN0YXRpYyBmb3JIYnNQb3Moc291cmNlOiBTb3VyY2UsIHBvczogU291cmNlUG9zaXRpb24pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgSGJzUG9zaXRpb24oc291cmNlLCBwb3MsIG51bGwpLndyYXAoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgYnJva2VuIGBTb3VyY2VQb3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogY2FsbGluZyBjb2RlIGRldGVybWluZWQgKG9yIGtub3dzKSB0aGF0IHRoZSBgU291cmNlTG9jYXRpb25gIGRvZXNuJ3QgY29ycmVzcG9uZCBjb3JyZWN0bHkgdG9cbiAgICogYW55IHBhcnQgb2YgdGhlIHNvdXJjZS5cbiAgICovXG4gIHN0YXRpYyBicm9rZW4ocG9zOiBTb3VyY2VQb3NpdGlvbiA9IFVOS05PV05fUE9TSVRJT04pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlUG9zaXRpb24oT2Zmc2V0S2luZC5Ccm9rZW4sIHBvcykud3JhcCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZGF0YTogUG9zaXRpb25EYXRhICYgQW55UG9zaXRpb24pIHt9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY2hhcmFjdGVyIG9mZnNldCBmb3IgdGhpcyBgU291cmNlT2Zmc2V0YCwgaWYgcG9zc2libGUuXG4gICAqL1xuICBnZXQgb2Zmc2V0KCk6IG51bWJlciB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5kYXRhLnRvQ2hhclBvcygpO1xuICAgIHJldHVybiBjaGFyUG9zID09PSBudWxsID8gbnVsbCA6IGNoYXJQb3Mub2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdGhpcyBvZmZzZXQgd2l0aCBhbm90aGVyIG9uZS5cbiAgICpcbiAgICogSWYgYm90aCBvZmZzZXRzIGFyZSBgSGJzUG9zaXRpb25gcywgdGhleSdyZSBlcXVpdmFsZW50IGFzIGxvbmcgYXMgdGhlaXIgbGluZXMgYW5kIGNvbHVtbnMgYXJlXG4gICAqIHRoZSBzYW1lLiBUaGlzIGF2b2lkcyBjb21wdXRpbmcgb2Zmc2V0cyB1bm5lY2Vzc2FyaWx5LlxuICAgKlxuICAgKiBPdGhlcndpc2UsIHR3byBgU291cmNlT2Zmc2V0YHMgYXJlIGVxdWl2YWxlbnQgaWYgdGhlaXIgc3VjY2Vzc2Z1bGx5IGNvbXB1dGVkIGNoYXJhY3RlciBvZmZzZXRzXG4gICAqIGFyZSB0aGUgc2FtZS5cbiAgICovXG4gIGVxbChyaWdodDogU291cmNlT2Zmc2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVxbCh0aGlzLmRhdGEsIHJpZ2h0LmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNwYW4gdGhhdCBzdGFydHMgZnJvbSB0aGlzIHNvdXJjZSBvZmZzZXQgYW5kIGVuZHMgd2l0aCBhbm90aGVyIHNvdXJjZSBvZmZzZXQuIEF2b2lkXG4gICAqIGNvbXB1dGluZyBjaGFyYWN0ZXIgb2Zmc2V0cyBpZiBib3RoIGBTb3VyY2VPZmZzZXRgcyBhcmUgc3RpbGwgbGF6eS5cbiAgICovXG4gIHVudGlsKG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEsIG90aGVyLmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIGJ5IG1vdmluZyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMgc291cmNlIG9mZnNldFxuICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkIChpZiBgYnlgIGlzIG5lZ2F0aXZlKSwgaWYgcG9zc2libGUuXG4gICAqXG4gICAqIElmIHRoaXMgYFNvdXJjZU9mZnNldGAgY2FuJ3QgY29tcHV0ZSBhIHZhbGlkIGNoYXJhY3RlciBvZmZzZXQsIGBtb3ZlYCByZXR1cm5zIGEgYnJva2VuIG9mZnNldC5cbiAgICpcbiAgICogSWYgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIgb2Zmc2V0IGlzIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgc291cmNlLCBgbW92ZWBcbiAgICogcmV0dXJucyBhIGJyb2tlbiBvZmZzZXQuXG4gICAqL1xuICBtb3ZlKGJ5OiBudW1iZXIpOiBTb3VyY2VPZmZzZXQge1xuICAgIGxldCBjaGFyUG9zID0gdGhpcy5kYXRhLnRvQ2hhclBvcygpO1xuXG4gICAgaWYgKGNoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBTb3VyY2VPZmZzZXQuYnJva2VuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHQgPSBjaGFyUG9zLm9mZnNldCArIGJ5O1xuXG4gICAgICBpZiAoY2hhclBvcy5zb3VyY2UuY2hlY2socmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gbmV3IENoYXJQb3NpdGlvbihjaGFyUG9zLnNvdXJjZSwgcmVzdWx0KS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gU291cmNlT2Zmc2V0LmJyb2tlbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgYFNvdXJjZVNwYW5gIHRoYXQgcmVwcmVzZW50cyBhIGNvbGxhcHNlZCByYW5nZSBhdCB0aGlzIHNvdXJjZSBvZmZzZXQuIEF2b2lkXG4gICAqIGNvbXB1dGluZyB0aGUgY2hhcmFjdGVyIG9mZnNldCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBjb21wdXRlZC5cbiAgICovXG4gIGNvbGxhcHNlZCgpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEsIHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIGBTb3VyY2VPZmZzZXRgIGludG8gYSBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoXG4gICAqIGV4aXN0aW5nIHBsdWdpbnMuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmRhdGEudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoYXJQb3NpdGlvbiBpbXBsZW1lbnRzIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbjtcblxuICAvKiogQ29tcHV0ZWQgZnJvbSBjaGFyIG9mZnNldCAqL1xuICAjbG9jUG9zOiBIYnNQb3NpdGlvbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHNvdXJjZTogU291cmNlLCByZWFkb25seSBjaGFyUG9zOiBudW1iZXIpIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYWxyZWFkeSBhIGBDaGFyUG9zaXRpb25gLlxuICAgKlxuICAgKiB7QHNlZSBIYnNQb3NpdGlvbn0gZm9yIHRoZSBhbHRlcm5hdGl2ZS5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2UgYSBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSBmb3IgdGhpcyBgQ2hhclBvc2l0aW9uYC4gSWYgdGhpcyBgQ2hhclBvc2l0aW9uYCB3YXNcbiAgICogY29tcHV0ZWQgdXNpbmcge0BzZWUgU291cmNlT2Zmc2V0I21vdmV9LCB0aGlzIHdpbGwgY29tcHV0ZSB0aGUgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhlIG9mZnNldC5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgbGV0IGhicyA9IHRoaXMudG9IYnNQb3MoKTtcbiAgICByZXR1cm4gaGJzID09PSBudWxsID8gVU5LTk9XTl9QT1NJVElPTiA6IGhicy50b0pTT04oKTtcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGBDaGFyUG9zaXRpb25gIGFsd2F5cyBoYXMgYW4gb2Zmc2V0IGl0IGNhbiBwcm9kdWNlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY29tcHV0YXRpb24uXG4gICAqL1xuICBnZXQgb2Zmc2V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2hhclBvcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBjdXJyZW50IGNoYXJhY3RlciBvZmZzZXQgdG8gYW4gYEhic1Bvc2l0aW9uYCwgaWYgaXQgd2FzIG5vdCBhbHJlYWR5IGNvbXB1dGVkLiBPbmNlXG4gICAqIGEgYENoYXJQb3NpdGlvbmAgaGFzIGNvbXB1dGVkIGl0cyBgSGJzUG9zaXRpb25gLCBpdCB3aWxsIG5vdCBuZWVkIHRvIGRvIGNvbXB1dGUgaXQgYWdhaW4sIGFuZFxuICAgKiB0aGUgc2FtZSBgQ2hhclBvc2l0aW9uYCBpcyByZXRhaW5lZCB3aGVuIHVzZWQgYXMgb25lIG9mIHRoZSBlbmRzIG9mIGEgYFNvdXJjZVNwYW5gLCBzb1xuICAgKiBjb21wdXRpbmcgdGhlIGBIYnNQb3NpdGlvbmAgc2hvdWxkIGJlIGEgb25lLXRpbWUgb3BlcmF0aW9uLlxuICAgKi9cbiAgdG9IYnNQb3MoKTogSGJzUG9zaXRpb24gfCBudWxsIHtcbiAgICBsZXQgbG9jUG9zID0gdGhpcy4jbG9jUG9zO1xuXG4gICAgaWYgKGxvY1BvcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IGhic1BvcyA9IHRoaXMuc291cmNlLmhic1Bvc0Zvcih0aGlzLmNoYXJQb3MpO1xuXG4gICAgICBpZiAoaGJzUG9zID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuI2xvY1BvcyA9IGxvY1BvcyA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2xvY1BvcyA9IGxvY1BvcyA9IG5ldyBIYnNQb3NpdGlvbih0aGlzLnNvdXJjZSwgaGJzUG9zLCB0aGlzLmNoYXJQb3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NQb3MgPT09IEJST0tFTiA/IG51bGwgOiBsb2NQb3M7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhic1Bvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG5cbiAgI2NoYXJQb3M6IENoYXJQb3NpdGlvbiB8IEJST0tFTiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgaGJzUG9zOiBTb3VyY2VQb3NpdGlvbixcbiAgICBjaGFyUG9zOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLiNjaGFyUG9zID0gY2hhclBvcyA9PT0gbnVsbCA/IG51bGwgOiBuZXcgQ2hhclBvc2l0aW9uKHNvdXJjZSwgY2hhclBvcyk7XG4gIH1cblxuICAvKipcbiAgICogTGF6aWx5IGNvbXB1dGUgdGhlIGNoYXJhY3RlciBvZmZzZXQgZnJvbSB0aGUge0BzZWUgU291cmNlUG9zaXRpb259LiBPbmNlIGFuIGBIYnNQb3NpdGlvbmAgaGFzXG4gICAqIGNvbXB1dGVkIGl0cyBgQ2hhclBvc2l0aW9uYCwgaXQgd2lsbCBub3QgbmVlZCB0byBkbyBjb21wdXRlIGl0IGFnYWluLCBhbmQgdGhlIHNhbWVcbiAgICogYEhic1Bvc2l0aW9uYCBpcyByZXRhaW5lZCB3aGVuIHVzZWQgYXMgb25lIG9mIHRoZSBlbmRzIG9mIGEgYFNvdXJjZVNwYW5gLCBzbyBjb21wdXRpbmcgdGhlXG4gICAqIGBDaGFyUG9zaXRpb25gIHNob3VsZCBiZSBhIG9uZS10aW1lIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvQ2hhclBvcygpOiBDaGFyUG9zaXRpb24gfCBudWxsIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMuI2NoYXJQb3M7XG5cbiAgICBpZiAoY2hhclBvcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IGNoYXJQb3NOdW1iZXIgPSB0aGlzLnNvdXJjZS5jaGFyUG9zRm9yKHRoaXMuaGJzUG9zKTtcblxuICAgICAgaWYgKGNoYXJQb3NOdW1iZXIgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jY2hhclBvcyA9IGNoYXJQb3MgPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNjaGFyUG9zID0gY2hhclBvcyA9IG5ldyBDaGFyUG9zaXRpb24odGhpcy5zb3VyY2UsIGNoYXJQb3NOdW1iZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFyUG9zID09PSBCUk9LRU4gPyBudWxsIDogY2hhclBvcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSB0aGF0IHRoaXMgYEhic1Bvc2l0aW9uYCB3YXMgaW5zdGFudGlhdGVkIHdpdGguIFRoaXMgb3BlcmF0aW9uXG4gICAqIGRvZXMgbm90IG5lZWQgdG8gY29tcHV0ZSBhbnl0aGluZy5cbiAgICpcbiAgICogQGltcGxlbWVudHMge1Bvc2l0aW9uRGF0YX1cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zO1xuICB9XG5cbiAgd3JhcCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiBuZXcgU291cmNlT2Zmc2V0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYWxyZWFkeSBhbiBgSGJzUG9zaXRpb25gLlxuICAgKlxuICAgKiB7QHNlZSBDaGFyUG9zaXRpb259IGZvciB0aGUgYWx0ZXJuYXRpdmUuXG4gICAqL1xuICB0b0hic1BvcygpOiBIYnNQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmlzaWJsZVBvc2l0aW9uIGltcGxlbWVudHMgUG9zaXRpb25EYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZC5Ccm9rZW4gfCBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYyB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsXG4gICAgLy8gd2hhdGV2ZXIgd2FzIHByb3ZpZGVkLCBwb3NzaWJseSBicm9rZW5cbiAgICByZWFkb25seSBwb3M6IFNvdXJjZVBvc2l0aW9uXG4gICkge31cblxuICAvKipcbiAgICogQSBicm9rZW4gcG9zaXRpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGEge0BzZWUgQ2hhcmFjdGVyUG9zaXRpb259LlxuICAgKi9cbiAgdG9DaGFyUG9zKCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJpYWxpemF0aW9uIG9mIGFuIGBJbnZpc2libGVQb3NpdGlvbiBpcyB3aGF0ZXZlciBIYW5kbGViYXJzIHtAc2VlIFNvdXJjZVBvc2l0aW9ufSB3YXNcbiAgICogb3JpZ2luYWxseSBpZGVudGlmaWVkIGFzIGJyb2tlbiwgbm9uLWV4aXN0ZW50IG9yIHN5bnRoZXRpYy5cbiAgICpcbiAgICogSWYgYW4gYEludmlzaWJsZVBvc2l0aW9uYCBuZXZlciBoYWQgYW4gc291cmNlIG9mZnNldCBhdCBhbGwsIHRoaXMgbWV0aG9kIHJldHVybnNcbiAgICoge0BzZWUgVU5LTk9XTl9QT1NJVElPTn0gZm9yIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvcztcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIGdldCBvZmZzZXQoKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byB7QHNlZSBBbnlQb3NpdGlvbn0gYW5kIGRldGVybWluZSB3aGV0aGVyIHRoZXkgYXJlIGVxdWFsLlxuICpcbiAqIEBzZWUge1NvdXJjZU9mZnNldCNlcWx9XG4gKi9cbmNvbnN0IGVxbCA9IG1hdGNoPGJvb2xlYW4+KChtKSA9PlxuICBtXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgICh7IGhic1BvczogbGVmdCB9LCB7IGhic1BvczogcmlnaHQgfSkgPT5cbiAgICAgICAgbGVmdC5jb2x1bW4gPT09IHJpZ2h0LmNvbHVtbiAmJiBsZWZ0LmxpbmUgPT09IHJpZ2h0LmxpbmVcbiAgICApXG4gICAgLndoZW4oXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgKHsgY2hhclBvczogbGVmdCB9LCB7IGNoYXJQb3M6IHJpZ2h0IH0pID0+IGxlZnQgPT09IHJpZ2h0XG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLFxuICAgICAgKHsgb2Zmc2V0OiBsZWZ0IH0sIHJpZ2h0KSA9PiBsZWZ0ID09PSByaWdodC50b0NoYXJQb3MoKT8ub2Zmc2V0XG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgKGxlZnQsIHsgb2Zmc2V0OiByaWdodCB9KSA9PiBsZWZ0LnRvQ2hhclBvcygpPy5vZmZzZXQgPT09IHJpZ2h0XG4gICAgKVxuICAgIC53aGVuKE1hdGNoQW55LCBNYXRjaEFueSwgKCkgPT4gZmFsc2UpXG4pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9vZmZzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0EsU0FBQSxnQkFBQSxRQUFBLGFBQUE7QUFFQSxTQUFBLEtBQUEsRUFBQSxRQUFBLFFBQUEsU0FBQTtBQUNBLFNBQUEsSUFBQSxRQUFBLFFBQUE7QUE0Q0E7Ozs7OztBQUtBLE9BQU8sSUFBTSxNQUFNLEdBQVosUUFBQTtBQUtQOzs7Ozs7Ozs7OztBQVVBLFdBQU0sWUFBTjtBQW1CRSx3QkFBQSxJQUFBLEVBQXFEO0FBQWhDLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0M7QUFsQnpEOzs7Ozs7O0FBREYsZUFNRSxTQU5GLEdBTUUsbUJBQUEsTUFBQSxFQUFBLEdBQUEsRUFBb0Q7QUFDbEQsV0FBTyxJQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLElBQUEsRUFBUCxJQUFPLEVBQVA7QUFDRDtBQUVEOzs7OztBQVZGOztBQUFBLGVBZUUsTUFmRixHQWVFLGdCQUFjLEdBQWQsRUFBb0Q7QUFBQSxRQUF0QyxHQUFzQztBQUF0QyxNQUFBLEdBQXNDLEdBQXBELGdCQUFvRDtBQUFBOztBQUNsRCxXQUFPLElBQUEsaUJBQUEsQ0FBcUI7QUFBQTtBQUFyQixNQUFBLEdBQUEsRUFBUCxJQUFPLEVBQVA7QUFDRDtBQUlEOzs7QUFyQkY7O0FBQUE7O0FBNkJFOzs7Ozs7Ozs7QUE3QkYsU0FzQ0UsR0F0Q0YsR0FzQ0UsYUFBRyxLQUFILEVBQXVCO0FBQ3JCLFdBQU8sSUFBRyxDQUFDLEtBQUQsSUFBQSxFQUFZLEtBQUssQ0FBM0IsSUFBVSxDQUFWO0FBQ0Q7QUFFRDs7OztBQTFDRjs7QUFBQSxTQThDRSxLQTlDRixHQThDRSxlQUFLLEtBQUwsRUFBeUI7QUFDdkIsV0FBTyxJQUFJLENBQUMsS0FBRCxJQUFBLEVBQVksS0FBSyxDQUE1QixJQUFXLENBQVg7QUFDRDtBQUVE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QXNCLEtBQXRCLENBQUEsR0FBc0IsRUFBQSxDQUExQixNQUFJLENBQUo7QUFmakMsR0FBQSxFQUFBLElBQUEsQ0FpQk87QUFBQTtBQWpCUCxJQWlCTztBQUFBO0FBakJQLElBb0JJLFVBQUEsSUFBQSxTQUE0QjtBQUFBLFFBQVgsS0FBVyxTQUFuQixNQUFtQjs7QUFBQSxRQUFBLEVBQUE7O0FBQUMsV0FBQSxDQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBSixTQUFBLEVBQUEsTUFBQSxJQUFBLElBQWdCLEVBQUEsS0FBQSxLQUFoQixDQUFBLEdBQWdCLEtBQWhCLENBQUEsR0FBZ0IsRUFBQSxDQUFoQixNQUFBLE1BQUEsS0FBQTtBQXBCakMsR0FBQSxFQUFBLElBQUEsQ0FBQSxRQUFBLEVBQUEsUUFBQSxFQXNCNEI7QUFBQSxXQXZCOUIsS0F1QjhCO0FBQUEsR0F0QjVCLENBRHlCO0FBQUEsQ0FBVixDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IFNvdXJjZVBvc2l0aW9uLCBVTktOT1dOX1BPU0lUSU9OIH0gZnJvbSAnLi4vbG9jYXRpb24nO1xuaW1wb3J0IHsgU291cmNlIH0gZnJvbSAnLi4vc291cmNlJztcbmltcG9ydCB7IG1hdGNoLCBNYXRjaEFueSB9IGZyb20gJy4vbWF0Y2gnO1xuaW1wb3J0IHsgU291cmNlU3Bhbiwgc3BhbiB9IGZyb20gJy4vc3Bhbic7XG5cbmV4cG9ydCBjb25zdCBlbnVtIE9mZnNldEtpbmQge1xuICAvKipcbiAgICogV2UgaGF2ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gb2YgdGhpcyBvZmZzZXQgb3Igc3Bhbi5cbiAgICovXG4gIENoYXJQb3NpdGlvbiA9ICdDaGFyUG9zaXRpb24nLFxuXG4gIC8qKlxuICAgKiBUaGlzIG9mZnNldCBvciBzcGFuIHdhcyBpbnN0YW50aWF0ZWQgd2l0aCBhIEhhbmRsZWJhcnMgU291cmNlUG9zaXRpb24gb3IgU291cmNlTG9jYXRpb24uIEl0c1xuICAgKiBjaGFyYWN0ZXIgcG9zaXRpb24gd2lsbCBiZSBjb21wdXRlZCBvbiBkZW1hbmQuXG4gICAqL1xuICBIYnNQb3NpdGlvbiA9ICdIYnNQb3NpdGlvbicsXG5cbiAgLyoqXG4gICAqIGZvciAocmFyZSkgc2l0dWF0aW9ucyB3aGVyZSBhIG5vZGUgaXMgY3JlYXRlZCBidXQgdGhlcmUgd2FzIG5vIHNvdXJjZSBsb2NhdGlvbiAoZS5nLiB0aGUgbmFtZVxuICAgKiBcImRlZmF1bHRcIiBpbiBkZWZhdWx0IGJsb2NrcyB3aGVuIHRoZSB3b3JkIFwiZGVmYXVsdFwiIG5ldmVyIGFwcGVhcmVkIGluIHNvdXJjZSkuIFRoaXMgaXMgdXNlZFxuICAgKiBieSB0aGUgaW50ZXJuYWxzIHdoZW4gdGhlcmUgaXMgYSBsZWdpdGltYXRlIHJlYXNvbiBmb3IgdGhlIGludGVybmFscyB0byBzeW50aGVzaXplIGEgbm9kZVxuICAgKiB3aXRoIG5vIGxvY2F0aW9uLlxuICAgKi9cbiAgSW50ZXJuYWxzU3ludGhldGljID0gJ0ludGVybmFsc1N5bnRoZXRpYycsXG4gIC8qKlxuICAgKiBGb3Igc2l0dWF0aW9ucyB3aGVyZSBhIG5vZGUgcmVwcmVzZW50cyB6ZXJvIHBhcnRzIG9mIHRoZSBzb3VyY2UgKGZvciBleGFtcGxlLCBlbXB0eSBhcmd1bWVudHMpLlxuICAgKiBJbiBnZW5lcmFsLCB3ZSBhdHRlbXB0IHRvIGFzc2lnbiB0aGVzZSBub2RlcyAqc29tZSogcG9zaXRpb24gKGVtcHR5IGFyZ3VtZW50cyBjYW4gYmVcbiAgICogcG9zaXRpb25lZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY2FsbGVlKSwgYnV0IGl0J3Mgbm90IGFsd2F5cyBwb3NzaWJsZVxuICAgKi9cbiAgTm9uRXhpc3RlbnQgPSAnTm9uRXhpc3RlbnQnLFxuICAvKipcbiAgICogRm9yIHNpdHVhdGlvbnMgd2hlcmUgYSBzb3VyY2UgbG9jYXRpb24gd2FzIGV4cGVjdGVkLCBidXQgaXQgZGlkbid0IGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUgaW5cbiAgICogdGhlIHNvdXJjZS4gVGhpcyBoYXBwZW5zIGlmIGEgcGx1Z2luIGNyZWF0ZXMgYnJva2VuIGxvY2F0aW9ucy5cbiAgICovXG4gIEJyb2tlbiA9ICdCcm9rZW4nLFxufVxuXG4vKipcbiAqIEFsbCBwb3NpdGlvbnMgaGF2ZSB0aGVzZSBkZXRhaWxzIGluIGNvbW1vbi4gTW9zdCBub3RhYmx5LCBhbGwgdGhyZWUga2luZHMgb2YgcG9zaXRpb25zIGNhblxuICogbXVzdCBiZSBhYmxlIHRvIGF0dGVtcHQgdG8gY29udmVydCB0aGVtc2VsdmVzIGludG8ge0BzZWUgQ2hhclBvc2l0aW9ufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbkRhdGEge1xuICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kO1xuICB0b0NoYXJQb3MoKTogQ2hhclBvc2l0aW9uIHwgbnVsbDtcbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhbiBhdHRlbXB0IHRvIGNvbnZlcnQgYSBgU291cmNlUG9zaXRpb25gIHRvIGEgY2hhcmFjdGVyIG9mZnNldCBmYWlsZWQuIEl0XG4gKiBpcyBzZXBhcmF0ZSBmcm9tIGBudWxsYCBzbyB0aGF0IGBudWxsYCBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjb21wdXRhdGlvbiB3YXNuJ3QgeWV0XG4gKiBhdHRlbXB0ZWQgKGFuZCB0aGVyZWZvcmUgdG8gY2FjaGUgdGhlIGZhaWx1cmUpXG4gKi9cbmV4cG9ydCBjb25zdCBCUk9LRU4gPSAnQlJPS0VOJztcbmV4cG9ydCB0eXBlIEJST0tFTiA9ICdCUk9LRU4nO1xuXG5leHBvcnQgdHlwZSBBbnlQb3NpdGlvbiA9IEhic1Bvc2l0aW9uIHwgQ2hhclBvc2l0aW9uIHwgSW52aXNpYmxlUG9zaXRpb247XG5cbi8qKlxuICogQSBgU291cmNlT2Zmc2V0YCByZXByZXNlbnRzIGEgc2luZ2xlIHBvc2l0aW9uIGluIHRoZSBzb3VyY2UuXG4gKlxuICogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGJhY2tpbmcgZGF0YSBmb3IgYFNvdXJjZU9mZnNldGAgb2JqZWN0czpcbiAqXG4gKiAtIGBDaGFyUG9zaXRpb25gLCB3aGljaCBjb250YWlucyBhIGNoYXJhY3RlciBvZmZzZXQgaW50byB0aGUgcmF3IHNvdXJjZSBzdHJpbmdcbiAqIC0gYEhic1Bvc2l0aW9uYCwgd2hpY2ggY29udGFpbnMgYSBgU291cmNlUG9zaXRpb25gIGZyb20gdGhlIEhhbmRsZWJhcnMgQVNULCB3aGljaCBjYW4gYmVcbiAqICAgY29udmVydGVkIHRvIGEgYENoYXJQb3NpdGlvbmAgb24gZGVtYW5kLlxuICogLSBgSW52aXNpYmxlUG9zaXRpb25gLCB3aGljaCByZXByZXNlbnRzIGEgcG9zaXRpb24gbm90IGluIHNvdXJjZSAoQHNlZSB7SW52aXNpYmxlUG9zaXRpb259KVxuICovXG5leHBvcnQgY2xhc3MgU291cmNlT2Zmc2V0IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGBTb3VyY2VPZmZzZXRgIGZyb20gYSBIYW5kbGViYXJzIGBTb3VyY2VQb3NpdGlvbmAuIEl0J3Mgc3RvcmVkIGFzLWlzLCBhbmQgY29udmVydGVkXG4gICAqIGludG8gYSBjaGFyYWN0ZXIgb2Zmc2V0IG9uIGRlbWFuZCwgd2hpY2ggYXZvaWRzIHVubmVjZXNzYXJpbHkgY29tcHV0aW5nIHRoZSBvZmZzZXQgb2YgZXZlcnlcbiAgICogYFNvdXJjZUxvY2F0aW9uYCwgYnV0IGFsc28gbWVhbnMgdGhhdCBicm9rZW4gYFNvdXJjZVBvc2l0aW9uYHMgYXJlIG5vdCBhbHdheXMgZGV0ZWN0ZWQuXG4gICAqL1xuICBzdGF0aWMgZm9ySGJzUG9zKHNvdXJjZTogU291cmNlLCBwb3M6IFNvdXJjZVBvc2l0aW9uKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgcG9zLCBudWxsKS53cmFwKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYFNvdXJjZU9mZnNldGAgdGhhdCBjb3JyZXNwb25kcyB0byBhIGJyb2tlbiBgU291cmNlUG9zaXRpb25gLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG4gICAqIGNhbGxpbmcgY29kZSBkZXRlcm1pbmVkIChvciBrbm93cykgdGhhdCB0aGUgYFNvdXJjZUxvY2F0aW9uYCBkb2Vzbid0IGNvcnJlc3BvbmQgY29ycmVjdGx5IHRvXG4gICAqIGFueSBwYXJ0IG9mIHRoZSBzb3VyY2UuXG4gICAqL1xuICBzdGF0aWMgYnJva2VuKHBvczogU291cmNlUG9zaXRpb24gPSBVTktOT1dOX1BPU0lUSU9OKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKE9mZnNldEtpbmQuQnJva2VuLCBwb3MpLndyYXAoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRhdGE6IFBvc2l0aW9uRGF0YSAmIEFueVBvc2l0aW9uKSB7fVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNoYXJhY3RlciBvZmZzZXQgZm9yIHRoaXMgYFNvdXJjZU9mZnNldGAsIGlmIHBvc3NpYmxlLlxuICAgKi9cbiAgZ2V0IG9mZnNldCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMuZGF0YS50b0NoYXJQb3MoKTtcbiAgICByZXR1cm4gY2hhclBvcyA9PT0gbnVsbCA/IG51bGwgOiBjaGFyUG9zLm9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIHRoaXMgb2Zmc2V0IHdpdGggYW5vdGhlciBvbmUuXG4gICAqXG4gICAqIElmIGJvdGggb2Zmc2V0cyBhcmUgYEhic1Bvc2l0aW9uYHMsIHRoZXkncmUgZXF1aXZhbGVudCBhcyBsb25nIGFzIHRoZWlyIGxpbmVzIGFuZCBjb2x1bW5zIGFyZVxuICAgKiB0aGUgc2FtZS4gVGhpcyBhdm9pZHMgY29tcHV0aW5nIG9mZnNldHMgdW5uZWNlc3NhcmlseS5cbiAgICpcbiAgICogT3RoZXJ3aXNlLCB0d28gYFNvdXJjZU9mZnNldGBzIGFyZSBlcXVpdmFsZW50IGlmIHRoZWlyIHN1Y2Nlc3NmdWxseSBjb21wdXRlZCBjaGFyYWN0ZXIgb2Zmc2V0c1xuICAgKiBhcmUgdGhlIHNhbWUuXG4gICAqL1xuICBlcWwocmlnaHQ6IFNvdXJjZU9mZnNldCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlcWwodGhpcy5kYXRhLCByaWdodC5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzcGFuIHRoYXQgc3RhcnRzIGZyb20gdGhpcyBzb3VyY2Ugb2Zmc2V0IGFuZCBlbmRzIHdpdGggYW5vdGhlciBzb3VyY2Ugb2Zmc2V0LiBBdm9pZFxuICAgKiBjb21wdXRpbmcgY2hhcmFjdGVyIG9mZnNldHMgaWYgYm90aCBgU291cmNlT2Zmc2V0YHMgYXJlIHN0aWxsIGxhenkuXG4gICAqL1xuICB1bnRpbChvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLCBvdGhlci5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgU291cmNlT2Zmc2V0YCBieSBtb3ZpbmcgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiByZXByZXNlbnRlZCBieSB0aGlzIHNvdXJjZSBvZmZzZXRcbiAgICogZm9yd2FyZCBvciBiYWNrd2FyZCAoaWYgYGJ5YCBpcyBuZWdhdGl2ZSksIGlmIHBvc3NpYmxlLlxuICAgKlxuICAgKiBJZiB0aGlzIGBTb3VyY2VPZmZzZXRgIGNhbid0IGNvbXB1dGUgYSB2YWxpZCBjaGFyYWN0ZXIgb2Zmc2V0LCBgbW92ZWAgcmV0dXJucyBhIGJyb2tlbiBvZmZzZXQuXG4gICAqXG4gICAqIElmIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyIG9mZnNldCBpcyBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIHNvdXJjZSwgYG1vdmVgXG4gICAqIHJldHVybnMgYSBicm9rZW4gb2Zmc2V0LlxuICAgKi9cbiAgbW92ZShieTogbnVtYmVyKTogU291cmNlT2Zmc2V0IHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMuZGF0YS50b0NoYXJQb3MoKTtcblxuICAgIGlmIChjaGFyUG9zID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gU291cmNlT2Zmc2V0LmJyb2tlbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVzdWx0ID0gY2hhclBvcy5vZmZzZXQgKyBieTtcblxuICAgICAgaWYgKGNoYXJQb3Muc291cmNlLmNoZWNrKHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGFyUG9zaXRpb24oY2hhclBvcy5zb3VyY2UsIHJlc3VsdCkud3JhcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFNvdXJjZU9mZnNldC5icm9rZW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGBTb3VyY2VTcGFuYCB0aGF0IHJlcHJlc2VudHMgYSBjb2xsYXBzZWQgcmFuZ2UgYXQgdGhpcyBzb3VyY2Ugb2Zmc2V0LiBBdm9pZFxuICAgKiBjb21wdXRpbmcgdGhlIGNoYXJhY3RlciBvZmZzZXQgaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gY29tcHV0ZWQuXG4gICAqL1xuICBjb2xsYXBzZWQoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLCB0aGlzLmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBgU291cmNlT2Zmc2V0YCBpbnRvIGEgSGFuZGxlYmFycyB7QHNlZSBTb3VyY2VQb3NpdGlvbn0gZm9yIGNvbXBhdGliaWxpdHkgd2l0aFxuICAgKiBleGlzdGluZyBwbHVnaW5zLlxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnRvSlNPTigpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFyUG9zaXRpb24gaW1wbGVtZW50cyBQb3NpdGlvbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb247XG5cbiAgLyoqIENvbXB1dGVkIGZyb20gY2hhciBvZmZzZXQgKi9cbiAgX2xvY1BvczogSGJzUG9zaXRpb24gfCBCUk9LRU4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBzb3VyY2U6IFNvdXJjZSwgcmVhZG9ubHkgY2hhclBvczogbnVtYmVyKSB7fVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFscmVhZHkgYSBgQ2hhclBvc2l0aW9uYC5cbiAgICpcbiAgICoge0BzZWUgSGJzUG9zaXRpb259IGZvciB0aGUgYWx0ZXJuYXRpdmUuXG4gICAqXG4gICAqIEBpbXBsZW1lbnRzIHtQb3NpdGlvbkRhdGF9XG4gICAqL1xuICB0b0NoYXJQb3MoKTogQ2hhclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlIGEgSGFuZGxlYmFycyB7QHNlZSBTb3VyY2VQb3NpdGlvbn0gZm9yIHRoaXMgYENoYXJQb3NpdGlvbmAuIElmIHRoaXMgYENoYXJQb3NpdGlvbmAgd2FzXG4gICAqIGNvbXB1dGVkIHVzaW5nIHtAc2VlIFNvdXJjZU9mZnNldCNtb3ZlfSwgdGhpcyB3aWxsIGNvbXB1dGUgdGhlIGBTb3VyY2VQb3NpdGlvbmAgZm9yIHRoZSBvZmZzZXQuXG4gICAqXG4gICAqIEBpbXBsZW1lbnRzIHtQb3NpdGlvbkRhdGF9XG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIGxldCBoYnMgPSB0aGlzLnRvSGJzUG9zKCk7XG4gICAgcmV0dXJuIGhicyA9PT0gbnVsbCA/IFVOS05PV05fUE9TSVRJT04gOiBoYnMudG9KU09OKCk7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VPZmZzZXQodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQSBgQ2hhclBvc2l0aW9uYCBhbHdheXMgaGFzIGFuIG9mZnNldCBpdCBjYW4gcHJvZHVjZSB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNvbXB1dGF0aW9uLlxuICAgKi9cbiAgZ2V0IG9mZnNldCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3M7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgb2Zmc2V0IHRvIGFuIGBIYnNQb3NpdGlvbmAsIGlmIGl0IHdhcyBub3QgYWxyZWFkeSBjb21wdXRlZC4gT25jZVxuICAgKiBhIGBDaGFyUG9zaXRpb25gIGhhcyBjb21wdXRlZCBpdHMgYEhic1Bvc2l0aW9uYCwgaXQgd2lsbCBub3QgbmVlZCB0byBkbyBjb21wdXRlIGl0IGFnYWluLCBhbmRcbiAgICogdGhlIHNhbWUgYENoYXJQb3NpdGlvbmAgaXMgcmV0YWluZWQgd2hlbiB1c2VkIGFzIG9uZSBvZiB0aGUgZW5kcyBvZiBhIGBTb3VyY2VTcGFuYCwgc29cbiAgICogY29tcHV0aW5nIHRoZSBgSGJzUG9zaXRpb25gIHNob3VsZCBiZSBhIG9uZS10aW1lIG9wZXJhdGlvbi5cbiAgICovXG4gIHRvSGJzUG9zKCk6IEhic1Bvc2l0aW9uIHwgbnVsbCB7XG4gICAgbGV0IGxvY1BvcyA9IHRoaXMuX2xvY1BvcztcblxuICAgIGlmIChsb2NQb3MgPT09IG51bGwpIHtcbiAgICAgIGxldCBoYnNQb3MgPSB0aGlzLnNvdXJjZS5oYnNQb3NGb3IodGhpcy5jaGFyUG9zKTtcblxuICAgICAgaWYgKGhic1BvcyA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9sb2NQb3MgPSBsb2NQb3MgPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sb2NQb3MgPSBsb2NQb3MgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIGhic1BvcywgdGhpcy5jaGFyUG9zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG9jUG9zID09PSBCUk9LRU4gPyBudWxsIDogbG9jUG9zO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIYnNQb3NpdGlvbiBpbXBsZW1lbnRzIFBvc2l0aW9uRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuXG4gIF9jaGFyUG9zOiBDaGFyUG9zaXRpb24gfCBCUk9LRU4gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHNvdXJjZTogU291cmNlLFxuICAgIHJlYWRvbmx5IGhic1BvczogU291cmNlUG9zaXRpb24sXG4gICAgY2hhclBvczogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5fY2hhclBvcyA9IGNoYXJQb3MgPT09IG51bGwgPyBudWxsIDogbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIGNoYXJQb3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIExhemlseSBjb21wdXRlIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGZyb20gdGhlIHtAc2VlIFNvdXJjZVBvc2l0aW9ufS4gT25jZSBhbiBgSGJzUG9zaXRpb25gIGhhc1xuICAgKiBjb21wdXRlZCBpdHMgYENoYXJQb3NpdGlvbmAsIGl0IHdpbGwgbm90IG5lZWQgdG8gZG8gY29tcHV0ZSBpdCBhZ2FpbiwgYW5kIHRoZSBzYW1lXG4gICAqIGBIYnNQb3NpdGlvbmAgaXMgcmV0YWluZWQgd2hlbiB1c2VkIGFzIG9uZSBvZiB0aGUgZW5kcyBvZiBhIGBTb3VyY2VTcGFuYCwgc28gY29tcHV0aW5nIHRoZVxuICAgKiBgQ2hhclBvc2l0aW9uYCBzaG91bGQgYmUgYSBvbmUtdGltZSBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBpbXBsZW1lbnRzIHtQb3NpdGlvbkRhdGF9XG4gICAqL1xuICB0b0NoYXJQb3MoKTogQ2hhclBvc2l0aW9uIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLl9jaGFyUG9zO1xuXG4gICAgaWYgKGNoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgIGxldCBjaGFyUG9zTnVtYmVyID0gdGhpcy5zb3VyY2UuY2hhclBvc0Zvcih0aGlzLmhic1Bvcyk7XG5cbiAgICAgIGlmIChjaGFyUG9zTnVtYmVyID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2NoYXJQb3MgPSBjaGFyUG9zID0gQlJPS0VOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY2hhclBvcyA9IGNoYXJQb3MgPSBuZXcgQ2hhclBvc2l0aW9uKHRoaXMuc291cmNlLCBjaGFyUG9zTnVtYmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhclBvcyA9PT0gQlJPS0VOID8gbnVsbCA6IGNoYXJQb3M7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSB7QHNlZSBTb3VyY2VQb3NpdGlvbn0gdGhhdCB0aGlzIGBIYnNQb3NpdGlvbmAgd2FzIGluc3RhbnRpYXRlZCB3aXRoLiBUaGlzIG9wZXJhdGlvblxuICAgKiBkb2VzIG5vdCBuZWVkIHRvIGNvbXB1dGUgYW55dGhpbmcuXG4gICAqXG4gICAqIEBpbXBsZW1lbnRzIHtQb3NpdGlvbkRhdGF9XG4gICAqL1xuICB0b0pTT04oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1BvcztcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU9mZnNldCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFscmVhZHkgYW4gYEhic1Bvc2l0aW9uYC5cbiAgICpcbiAgICoge0BzZWUgQ2hhclBvc2l0aW9ufSBmb3IgdGhlIGFsdGVybmF0aXZlLlxuICAgKi9cbiAgdG9IYnNQb3MoKTogSGJzUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZpc2libGVQb3NpdGlvbiBpbXBsZW1lbnRzIFBvc2l0aW9uRGF0YSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQuQnJva2VuIHwgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWMgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LFxuICAgIC8vIHdoYXRldmVyIHdhcyBwcm92aWRlZCwgcG9zc2libHkgYnJva2VuXG4gICAgcmVhZG9ubHkgcG9zOiBTb3VyY2VQb3NpdGlvblxuICApIHt9XG5cbiAgLyoqXG4gICAqIEEgYnJva2VuIHBvc2l0aW9uIGNhbm5vdCBiZSB0dXJuZWQgaW50byBhIHtAc2VlIENoYXJhY3RlclBvc2l0aW9ufS5cbiAgICovXG4gIHRvQ2hhclBvcygpOiBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VyaWFsaXphdGlvbiBvZiBhbiBgSW52aXNpYmxlUG9zaXRpb24gaXMgd2hhdGV2ZXIgSGFuZGxlYmFycyB7QHNlZSBTb3VyY2VQb3NpdGlvbn0gd2FzXG4gICAqIG9yaWdpbmFsbHkgaWRlbnRpZmllZCBhcyBicm9rZW4sIG5vbi1leGlzdGVudCBvciBzeW50aGV0aWMuXG4gICAqXG4gICAqIElmIGFuIGBJbnZpc2libGVQb3NpdGlvbmAgbmV2ZXIgaGFkIGFuIHNvdXJjZSBvZmZzZXQgYXQgYWxsLCB0aGlzIG1ldGhvZCByZXR1cm5zXG4gICAqIHtAc2VlIFVOS05PV05fUE9TSVRJT059IGZvciBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgdG9KU09OKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5wb3M7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VPZmZzZXQodGhpcyk7XG4gIH1cblxuICBnZXQgb2Zmc2V0KCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28ge0BzZWUgQW55UG9zaXRpb259IGFuZCBkZXRlcm1pbmUgd2hldGhlciB0aGV5IGFyZSBlcXVhbC5cbiAqXG4gKiBAc2VlIHtTb3VyY2VPZmZzZXQjZXFsfVxuICovXG5jb25zdCBlcWwgPSBtYXRjaDxib29sZWFuPigobSkgPT5cbiAgbVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICAoeyBoYnNQb3M6IGxlZnQgfSwgeyBoYnNQb3M6IHJpZ2h0IH0pID0+XG4gICAgICAgIGxlZnQuY29sdW1uID09PSByaWdodC5jb2x1bW4gJiYgbGVmdC5saW5lID09PSByaWdodC5saW5lXG4gICAgKVxuICAgIC53aGVuKFxuICAgICAgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgICh7IGNoYXJQb3M6IGxlZnQgfSwgeyBjaGFyUG9zOiByaWdodCB9KSA9PiBsZWZ0ID09PSByaWdodFxuICAgIClcbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLFxuICAgICAgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbixcbiAgICAgICh7IG9mZnNldDogbGVmdCB9LCByaWdodCkgPT4gbGVmdCA9PT0gcmlnaHQudG9DaGFyUG9zKCk/Lm9mZnNldFxuICAgIClcbiAgICAud2hlbihcbiAgICAgIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sXG4gICAgICBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbixcbiAgICAgIChsZWZ0LCB7IG9mZnNldDogcmlnaHQgfSkgPT4gbGVmdC50b0NoYXJQb3MoKT8ub2Zmc2V0ID09PSByaWdodFxuICAgIClcbiAgICAud2hlbihNYXRjaEFueSwgTWF0Y2hBbnksICgpID0+IGZhbHNlKVxuKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -5,22 +5,3 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var _locPosSpan, _charPosSpan, _providedHbsLoc; // eslint-disable-next-line import/no-extraneous-dependencies
// eslint-disable-next-line import/no-extraneous-dependencies
import { DEBUG } from '@glimmer/env';

@@ -333,4 +314,3 @@ import { assertNever } from '@glimmer/util';

;
_locPosSpan.set(this, null);
this._locPosSpan = null;
}

@@ -370,3 +350,3 @@

_proto2.toHbsSpan = function toHbsSpan() {
var locPosSpan = __classPrivateFieldGet(this, _locPosSpan);
var locPosSpan = this._locPosSpan;

@@ -378,8 +358,8 @@ if (locPosSpan === null) {

if (start === null || end === null) {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, BROKEN);
locPosSpan = this._locPosSpan = BROKEN;
} else {
locPosSpan = __classPrivateFieldSet(this, _locPosSpan, new HbsSpan(this.source, {
locPosSpan = this._locPosSpan = new HbsSpan(this.source, {
start: start,
end: end
}));
});
}

@@ -410,3 +390,2 @@ }

_locPosSpan = new WeakMap();
export var HbsSpan = /*#__PURE__*/function () {

@@ -423,9 +402,4 @@ function HbsSpan(source, hbsPositions, providedHbsLoc) {

;
_charPosSpan.set(this, null); // the source location from Handlebars + AST Plugins -- could be wrong
_providedHbsLoc.set(this, void 0);
__classPrivateFieldSet(this, _providedHbsLoc, providedHbsLoc);
this._charPosSpan = null;
this._providedHbsLoc = providedHbsLoc;
}

@@ -447,13 +421,12 @@

_proto3.updateProvided = function updateProvided(pos, edge) {
if (__classPrivateFieldGet(this, _providedHbsLoc)) {
__classPrivateFieldGet(this, _providedHbsLoc)[edge] = pos;
if (this._providedHbsLoc) {
this._providedHbsLoc[edge] = pos;
} // invalidate computed character offsets
__classPrivateFieldSet(this, _charPosSpan, null);
__classPrivateFieldSet(this, _providedHbsLoc, {
this._charPosSpan = null;
this._providedHbsLoc = {
start: pos,
end: pos
});
};
};

@@ -505,3 +478,3 @@

_proto3.toCharPosSpan = function toCharPosSpan() {
var charPosSpan = __classPrivateFieldGet(this, _charPosSpan);
var charPosSpan = this._charPosSpan;

@@ -513,8 +486,8 @@ if (charPosSpan === null) {

if (start && end) {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, new CharPositionSpan(this.source, {
charPosSpan = this._charPosSpan = new CharPositionSpan(this.source, {
start: start,
end: end
}));
});
} else {
charPosSpan = __classPrivateFieldSet(this, _charPosSpan, BROKEN);
charPosSpan = this._charPosSpan = BROKEN;
return null;

@@ -529,3 +502,2 @@ }

}();
_charPosSpan = new WeakMap(), _providedHbsLoc = new WeakMap();

@@ -666,2 +638,2 @@ var InvisibleSpan = /*#__PURE__*/function () {

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnREFBQTs7O0FBQ0EsU0FBQSxLQUFBLFFBQUEsY0FBQTtBQUVBLFNBQUEsV0FBQSxRQUFBLGVBQUE7QUFFQSxTQUFBLGVBQUEsRUFBQSxxQkFBQSxRQUFBLGFBQUE7QUFNQSxTQUFBLFdBQUEsUUFBQSxVQUFBO0FBRUEsU0FBQSxXQUFBLEVBQUEsS0FBQSxFQUFBLFFBQUEsUUFBQSxTQUFBO0FBQ0EsU0FBQSxNQUFBLEVBQUEsWUFBQSxFQUFBLFdBQUEsRUFBQSxpQkFBQSxRQUFBLFVBQUE7QUF5REE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0NBLFdBQU0sVUFBTjtBQTRDRSxzQkFBQSxJQUFBLEVBQTRDO0FBQXhCLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFDbEIsU0FBQSxXQUFBLEdBQ0UsSUFBSSxDQUFKLElBQUEsS0FBUztBQUFBO0FBQVQsT0FBeUMsSUFBSSxDQUFKLElBQUEsS0FBUztBQUFBO0FBRHBEO0FBRUQ7O0FBL0NILGFBS0UsSUFMRixHQUtFLGNBQUEsTUFBQSxFQUFBLFVBQUEsRUFBNEQ7QUFDMUQsUUFBSSxPQUFBLFVBQUEsS0FBSixRQUFBLEVBQW9DO0FBQ2xDLGFBQU8sVUFBVSxDQUFWLGdCQUFBLENBQUEsTUFBQSxFQUFBLFVBQUEsRUFBUCxVQUFPLENBQVA7QUFERixLQUFBLE1BRU8sSUFBSSxPQUFBLFVBQUEsS0FBSixRQUFBLEVBQW9DO0FBQ3pDLGFBQU8sVUFBVSxDQUFWLFNBQUEsQ0FBUCxVQUFPLENBQVA7QUFESyxLQUFBLE1BRUEsSUFBSSxLQUFLLENBQUwsT0FBQSxDQUFKLFVBQUksQ0FBSixFQUErQjtBQUNwQyxhQUFPLFVBQVUsQ0FBVixnQkFBQSxDQUFBLE1BQUEsRUFBb0MsVUFBVSxDQUE5QyxD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QUksQ0FBQSxJQUFBLEVBQVgsWUFBVyxDQUFYO0FBQ0Q7QUFwQkwsR0FBQSxFQUFBLElBQUEsQ0FzQk87QUFBQTtBQXRCUCxJQXNCTztBQUFBO0FBdEJQLElBc0J5RCxVQUFBLElBQUEsRUFBQSxLQUFBLEVBQWdCO0FBQ3JFLFFBQUksV0FBVyxHQUFHLElBQUksQ0FBdEIsU0FBa0IsRUFBbEI7O0FBRUEsUUFBSSxXQUFXLEtBQWYsSUFBQSxFQUEwQjtBQUN4QixhQUFPLElBQUEsYUFBQSxDQUFpQjtBQUFBO0FBQWpCLFFBQUEsZUFBQSxFQUFQLElBQU8sRUFBUDtBQURGLEtBQUEsTUFFTztBQUNMLGFBQU8sSUFBSSxDQUFBLFdBQUEsRUFBWCxLQUFXLENBQVg7QUFDRDtBQTdCTCxHQUFBLEVBQUEsSUFBQSxDQUFBLFdBQUEsRUFBQSxRQUFBLEVBK0JnQyxVQUFBLElBQUQ7QUFBQSxXQUFVLElBQUEsYUFBQSxDQUFrQixJQUFJLENBQXRCLElBQUEsRUFBQSxlQUFBLEVBL0J6QyxJQStCeUMsRUFBVjtBQUFBLEdBL0IvQixFQUFBLElBQUEsQ0FBQSxRQUFBLEVBQUEsV0FBQSxFQWdDK0IsVUFBQSxDQUFBLEVBQUEsS0FBQTtBQUFBLFdBQzNCLElBQUEsYUFBQSxDQUFrQixLQUFLLENBQXZCLElBQUEsRUFBQSxlQUFBLEVBbENDLElBa0NELEVBRDJCO0FBQUEsR0FoQy9CLENBRDZDO0FBQUEsQ0FBRCxDQUF2QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgYXNzZXJ0TmV2ZXIgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHtcbiAgQlJPS0VOX0xPQ0FUSU9OLFxuICBOT05fRVhJU1RFTlRfTE9DQVRJT04sXG4gIFNvdXJjZUxvY2F0aW9uLFxuICBTb3VyY2VQb3NpdGlvbixcbn0gZnJvbSAnLi4vbG9jYXRpb24nO1xuaW1wb3J0IHsgU291cmNlU2xpY2UgfSBmcm9tICcuLi9zbGljZSc7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICcuLi9zb3VyY2UnO1xuaW1wb3J0IHsgSXNJbnZpc2libGUsIG1hdGNoLCBNYXRjaEFueSwgTWF0Y2hGbiB9IGZyb20gJy4vbWF0Y2gnO1xuaW1wb3J0IHtcbiAgQW55UG9zaXRpb24sXG4gIEJST0tFTixcbiAgQ2hhclBvc2l0aW9uLFxuICBIYnNQb3NpdGlvbixcbiAgSW52aXNpYmxlUG9zaXRpb24sXG4gIE9mZnNldEtpbmQsXG4gIFNvdXJjZU9mZnNldCxcbn0gZnJvbSAnLi9vZmZzZXQnO1xuXG4vKipcbiAqIEFsbCBzcGFucyBoYXZlIHRoZXNlIGRldGFpbHMgaW4gY29tbW9uLlxuICovXG5pbnRlcmZhY2UgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kOiBPZmZzZXRLaW5kO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoaXMgc3BhbiBpbnRvIGEgc3RyaW5nLiBJZiB0aGUgc3BhbiBpcyBicm9rZW4sIHJldHVybiBgJydgLlxuICAgKi9cbiAgYXNTdHJpbmcoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtb2R1bGUgdGhlIHNwYW4gd2FzIGxvY2F0ZWQgaW4uXG4gICAqL1xuICBnZXRNb2R1bGUoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIGZvciB0aGlzIHNwYW4uIFRyeSB0byBhdm9pZCBjcmVhdGluZyBuZXcgcG9zaXRpb24gb2JqZWN0cywgYXMgdGhleVxuICAgKiBjYWNoZSBjb21wdXRhdGlvbnMuXG4gICAqL1xuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbjtcblxuICAvKipcbiAgICogR2V0IHRoZSBlbmRpbmcgcG9zaXRpb24gZm9yIHRoaXMgc3Bhbi4gVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBwb3NpdGlvbiBvYmplY3RzLCBhcyB0aGV5XG4gICAqIGNhY2hlIGNvbXB1dGF0aW9ucy5cbiAgICovXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbjtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgYFNvdXJjZUxvY2F0aW9uYCBmb3IgdGhpcyBzcGFuLCByZXR1cm5lZCBhcyBhbiBpbnN0YW5jZSBvZiBgSGJzU3BhbmAuXG4gICAqL1xuICB0b0hic1NwYW4oKTogSGJzU3BhbiB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5LCB3aGVuZXZlciB0aGUgYHN0YXJ0YCBvciBgZW5kYCBvZiBhIHtAc2VlIFNvdXJjZU9mZnNldH0gY2hhbmdlcywgc3BhbnMgYXJlXG4gICAqIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2Ugc28gdGhleSBjYW4gdXBkYXRlIHRoZW1zZWx2ZXMuIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBvdXRzaWRlIG9mIEFTVFxuICAgKiBwbHVnaW5zLlxuICAgKi9cbiAgbG9jRGlkVXBkYXRlKGNoYW5nZXM6IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBpbnRvIGEge0BzZWUgU2VyaWFsaXplZFNvdXJjZVNwYW59LCB3aGljaCBpcyBjb21wYWN0IGFuZCBkZXNpZ25lZCBmb3IgcmVhZGFiaWxpdHkgaW5cbiAgICogY29udGV4dCBsaWtlIEFTVCBFeHBsb3Jlci4gSWYgeW91IG5lZWQgYSB7QHNlZSBTb3VyY2VMb2NhdGlvbn0sIHVzZSB7QHNlZSB0b0pTT059LlxuICAgKi9cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIEEgYFNvdXJjZVNwYW5gIG9iamVjdCByZXByZXNlbnRzIGEgc3BhbiBvZiBjaGFyYWN0ZXJzIGluc2lkZSBvZiBhIHRlbXBsYXRlIHNvdXJjZS5cbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgYFNvdXJjZVNwYW5gIG9iamVjdHM6XG4gKlxuICogLSBgQ29uY3JldGVTb3VyY2VTcGFuYCwgd2hpY2ggY29udGFpbnMgYnl0ZSBvZmZzZXRzXG4gKiAtIGBMYXp5U291cmNlU3BhbmAsIHdoaWNoIGNvbnRhaW5zIGBTb3VyY2VMb2NhdGlvbmBzIGZyb20gdGhlIEhhbmRsZWJhcnMgQVNULCB3aGljaCBjYW4gYmVcbiAqICAgY29udmVydGVkIHRvIGJ5dGUgb2Zmc2V0cyBvbiBkZW1hbmQuXG4gKiAtIGBJbnZpc2libGVTb3VyY2VTcGFuYCwgd2hpY2ggcmVwcmVzZW50IHNvdXJjZSBzdHJpbmdzIHRoYXQgYXJlbid0IHByZXNlbnQgaW4gdGhlIHNvdXJjZSxcbiAqICAgYmVjYXVzZTpcbiAqICAgICAtIHRoZXkgd2VyZSBjcmVhdGVkIHN5bnRoZXRpY2FsbHlcbiAqICAgICAtIHRoZWlyIGxvY2F0aW9uIGlzIG5vbnNlbnNpY2FsICh0aGUgc3BhbiBpcyBicm9rZW4pXG4gKiAgICAgLSB0aGV5IHJlcHJlc2VudCBub3RoaW5nIGluIHRoZSBzb3VyY2UgKHRoaXMgY3VycmVudGx5IGhhcHBlbnMgb25seSB3aGVuIGEgYnVnIGluIHRoZVxuICogICAgICAgdXBzdHJlYW0gSGFuZGxlYmFycyBwYXJzZXIgZmFpbHMgdG8gYXNzaWduIGEgbG9jYXRpb24gdG8gZW1wdHkgYmxvY2tzKVxuICpcbiAqIEF0IGEgaGlnaCBsZXZlbCwgYWxsIGBTb3VyY2VTcGFuYCBvYmplY3RzIHByb3ZpZGU6XG4gKlxuICogLSBieXRlIG9mZnNldHNcbiAqIC0gc291cmNlIGluIGNvbHVtbiBhbmQgbGluZSBmb3JtYXRcbiAqXG4gKiBBbmQgeW91IGNhbiBkbyB0aGVzZSBvcGVyYXRpb25zIG9uIGBTb3VyY2VTcGFuYHM6XG4gKlxuICogLSBjb2xsYXBzZSBpdCB0byBhIGBTb3VyY2VTcGFuYCByZXByZXNlbnRpbmcgaXRzIHN0YXJ0aW5nIG9yIGVuZGluZyBwb3NpdGlvblxuICogLSBzbGljZSBvdXQgc29tZSBjaGFyYWN0ZXJzLCBvcHRpb25hbGx5IHNraXBwaW5nIHNvbWUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZFxuICogLSBjcmVhdGUgYSBuZXcgYFNvdXJjZVNwYW5gIHdpdGggYSBkaWZmZXJlbnQgc3RhcnRpbmcgb3IgZW5kaW5nIG9mZnNldFxuICpcbiAqIEFsbCBTb3VyY2VTcGFuIG9iamVjdHMgaW1wbGVtZW50IGBTb3VyY2VMb2NhdGlvbmAsIGZvciBjb21wYXRpYmlsaXR5LiBBbGwgU291cmNlU3BhblxuICogb2JqZWN0cyBoYXZlIGEgYHRvSlNPTmAgdGhhdCBlbWl0cyBgU291cmNlTG9jYXRpb25gLCBhbHNvIGZvciBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEZvciBjb21wYXRpYmlsaXR5LCBzdWJjbGFzc2VzIG9mIGBBYnN0cmFjdFNvdXJjZVNwYW5gIG11c3QgaW1wbGVtZW50IGBsb2NEaWRVcGRhdGVgLCB3aGljaFxuICogaGFwcGVucyB3aGVuIGFuIEFTVCBwbHVnaW4gYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBgc3RhcnRgIG9yIGBlbmRgIG9mIGEgc3BhbiBkaXJlY3RseS5cbiAqXG4gKiBUaGUgZ29hbCBpcyB0byBhdm9pZCBjcmVhdGluZyBhbnkgcHJvYmxlbXMgZm9yIHVzZS1jYXNlcyBsaWtlIEFTVCBFeHBsb3Jlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvdXJjZVNwYW4gaW1wbGVtZW50cyBTb3VyY2VMb2NhdGlvbiB7XG4gIHN0YXRpYyBnZXQgTk9OX0VYSVNURU5UKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LCBOT05fRVhJU1RFTlRfTE9DQVRJT04pLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBsb2FkKHNvdXJjZTogU291cmNlLCBzZXJpYWxpemVkOiBTZXJpYWxpemVkU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmZvckNoYXJQb3NpdGlvbnMoc291cmNlLCBzZXJpYWxpemVkLCBzZXJpYWxpemVkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uc3ludGhldGljKHNlcmlhbGl6ZWQpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzZXJpYWxpemVkKSkge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIHNlcmlhbGl6ZWRbMF0sIHNlcmlhbGl6ZWRbMV0pO1xuICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplZCA9PT0gT2Zmc2V0S2luZC5Ob25FeGlzdGVudCkge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uTk9OX0VYSVNURU5UO1xuICAgIH0gZWxzZSBpZiAoc2VyaWFsaXplZCA9PT0gT2Zmc2V0S2luZC5Ccm9rZW4pIHtcbiAgICAgIHJldHVybiBTb3VyY2VTcGFuLmJyb2tlbihCUk9LRU5fTE9DQVRJT04pO1xuICAgIH1cblxuICAgIGFzc2VydE5ldmVyKHNlcmlhbGl6ZWQpO1xuICB9XG5cbiAgc3RhdGljIGZvckhic0xvYyhzb3VyY2U6IFNvdXJjZSwgbG9jOiBTb3VyY2VMb2NhdGlvbik6IFNvdXJjZVNwYW4ge1xuICAgIGxldCBzdGFydCA9IG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIGxvYy5zdGFydCk7XG4gICAgbGV0IGVuZCA9IG5ldyBIYnNQb3NpdGlvbihzb3VyY2UsIGxvYy5lbmQpO1xuICAgIHJldHVybiBuZXcgSGJzU3Bhbihzb3VyY2UsIHsgc3RhcnQsIGVuZCB9LCBsb2MpLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGFyUG9zaXRpb25zKHNvdXJjZTogU291cmNlLCBzdGFydFBvczogbnVtYmVyLCBlbmRQb3M6IG51bWJlcik6IFNvdXJjZVNwYW4ge1xuICAgIGxldCBzdGFydCA9IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBzdGFydFBvcyk7XG4gICAgbGV0IGVuZCA9IG5ldyBDaGFyUG9zaXRpb24oc291cmNlLCBlbmRQb3MpO1xuXG4gICAgcmV0dXJuIG5ldyBDaGFyUG9zaXRpb25TcGFuKHNvdXJjZSwgeyBzdGFydCwgZW5kIH0pLndyYXAoKTtcbiAgfVxuXG4gIHN0YXRpYyBzeW50aGV0aWMoY2hhcnM6IHN0cmluZyk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYywgTk9OX0VYSVNURU5UX0xPQ0FUSU9OLCBjaGFycykud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGJyb2tlbihwb3M6IFNvdXJjZUxvY2F0aW9uID0gQlJPS0VOX0xPQ0FUSU9OKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBwb3MpLndyYXAoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzSW52aXNpYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogU3BhbkRhdGEgJiBBbnlTcGFuKSB7XG4gICAgdGhpcy5pc0ludmlzaWJsZSA9XG4gICAgICBkYXRhLmtpbmQgIT09IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uICYmIGRhdGEua2luZCAhPT0gT2Zmc2V0S2luZC5IYnNQb3NpdGlvbjtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRTdGFydCgpLndyYXAoKTtcbiAgfVxuXG4gIGdldEVuZCgpOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZ2V0RW5kKCkud3JhcCgpO1xuICB9XG5cbiAgZ2V0IGxvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgbGV0IHNwYW4gPSB0aGlzLmRhdGEudG9IYnNTcGFuKCk7XG4gICAgcmV0dXJuIHNwYW4gPT09IG51bGwgPyBCUk9LRU5fTE9DQVRJT04gOiBzcGFuLnRvSGJzTG9jKCk7XG4gIH1cblxuICBnZXQgbW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRNb2R1bGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXJ0aW5nIGBTb3VyY2VQb3NpdGlvbmAgZm9yIHRoaXMgYFNvdXJjZVNwYW5gLCBsYXppbHkgY29tcHV0aW5nIGl0IGlmIG5lZWRlZC5cbiAgICovXG4gIGdldCBzdGFydFBvc2l0aW9uKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2Muc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbmRpbmcgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhpcyBgU291cmNlU3BhbmAsIGxhemlseSBjb21wdXRpbmcgaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IGVuZFBvc2l0aW9uKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2MuZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1cHBvcnQgY29udmVydGluZyBBU1R2MSBub2RlcyBpbnRvIGEgc2VyaWFsaXplZCBmb3JtYXQgdXNpbmcgSlNPTi5zdHJpbmdpZnkuXG4gICAqL1xuICB0b0pTT04oKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3BhbiB3aXRoIHRoZSBjdXJyZW50IHNwYW4ncyBlbmQgYW5kIGEgbmV3IGJlZ2lubmluZy5cbiAgICovXG4gIHdpdGhTdGFydChvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4ob3RoZXIuZGF0YSwgdGhpcy5kYXRhLmdldEVuZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc3BhbiB3aXRoIHRoZSBjdXJyZW50IHNwYW4ncyBiZWdpbm5pbmcgYW5kIGEgbmV3IGVuZGluZy5cbiAgICovXG4gIHdpdGhFbmQodGhpczogU291cmNlU3Bhbiwgb3RoZXI6IFNvdXJjZU9mZnNldCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YS5nZXRTdGFydCgpLCBvdGhlci5kYXRhKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hc1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBgU291cmNlU3BhbmAgaW50byBhIGBTb3VyY2VTbGljZWAuIEluIGRlYnVnIG1vZGUsIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgY2hlY2tzXG4gICAqIHRoYXQgdGhlIGJ5dGUgb2Zmc2V0cyByZXByZXNlbnRlZCBieSB0aGlzIGBTb3VyY2VTcGFuYCBhY3R1YWxseSBjb3JyZXNwb25kIHRvIHRoZSBleHBlY3RlZFxuICAgKiBzdHJpbmcuXG4gICAqL1xuICB0b1NsaWNlKGV4cGVjdGVkPzogc3RyaW5nKTogU291cmNlU2xpY2Uge1xuICAgIGxldCBjaGFycyA9IHRoaXMuZGF0YS5hc1N0cmluZygpO1xuXG4gICAgaWYgKERFQlVHKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiBjaGFycyAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGB1bmV4cGVjdGVkbHkgZm91bmQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGNoYXJzXG4gICAgICAgICAgKX0gd2hlbiBzbGljaW5nIHNvdXJjZSwgYnV0IGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNvdXJjZVNsaWNlKHtcbiAgICAgIGxvYzogdGhpcyxcbiAgICAgIGNoYXJzOiBleHBlY3RlZCB8fCBjaGFycyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBzdGFydFBvc2l0aW9uIGluc3RlYWRcbiAgICovXG4gIGdldCBzdGFydCgpOiBTb3VyY2VQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jLnN0YXJ0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHdpdGhTdGFydCBpbnN0ZWFkXG4gICAqL1xuICBzZXQgc3RhcnQocG9zaXRpb246IFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgdGhpcy5kYXRhLmxvY0RpZFVwZGF0ZSh7IHN0YXJ0OiBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBlbmRQb3NpdGlvbiBpbnN0ZWFkXG4gICAqL1xuICBnZXQgZW5kKCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2MuZW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHdpdGhFbmQgaW5zdGVhZFxuICAgKi9cbiAgc2V0IGVuZChwb3NpdGlvbjogU291cmNlUG9zaXRpb24pIHtcbiAgICB0aGlzLmRhdGEubG9jRGlkVXBkYXRlKHsgZW5kOiBwb3NpdGlvbiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNvdXJjZUxvY2F0aW9uIGluIEFTVCBwbHVnaW5zXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBtb2R1bGUgaW5zdGVhZFxuICAgKi9cbiAgZ2V0IHNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZHVsZTtcbiAgfVxuXG4gIGNvbGxhcHNlKHdoZXJlOiAnc3RhcnQnIHwgJ2VuZCcpOiBTb3VyY2VTcGFuIHtcbiAgICBzd2l0Y2ggKHdoZXJlKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YXJ0KCkuY29sbGFwc2VkKCk7XG4gICAgICBjYXNlICdlbmQnOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRFbmQoKS5jb2xsYXBzZWQoKTtcbiAgICB9XG4gIH1cblxuICBleHRlbmQob3RoZXI6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmRhdGEuZ2V0U3RhcnQoKSwgb3RoZXIuZGF0YS5nZXRFbmQoKSk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEuc2VyaWFsaXplKCk7XG4gIH1cblxuICBzbGljZSh7IHNraXBTdGFydCA9IDAsIHNraXBFbmQgPSAwIH06IHsgc2tpcFN0YXJ0PzogbnVtYmVyOyBza2lwRW5kPzogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQpLmRhdGEsIHRoaXMuZ2V0RW5kKCkubW92ZSgtc2tpcEVuZCkuZGF0YSk7XG4gIH1cblxuICBzbGljZVN0YXJ0Q2hhcnMoeyBza2lwU3RhcnQgPSAwLCBjaGFycyB9OiB7IHNraXBTdGFydD86IG51bWJlcjsgY2hhcnM6IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRTdGFydCgpLm1vdmUoc2tpcFN0YXJ0KS5kYXRhLCB0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQgKyBjaGFycykuZGF0YSk7XG4gIH1cblxuICBzbGljZUVuZENoYXJzKHsgc2tpcEVuZCA9IDAsIGNoYXJzIH06IHsgc2tpcEVuZD86IG51bWJlcjsgY2hhcnM6IG51bWJlciB9KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5nZXRFbmQoKS5tb3ZlKHNraXBFbmQgLSBjaGFycykuZGF0YSwgdGhpcy5nZXRTdGFydCgpLm1vdmUoLXNraXBFbmQpLmRhdGEpO1xuICB9XG59XG5cbnR5cGUgQW55U3BhbiA9IEhic1NwYW4gfCBDaGFyUG9zaXRpb25TcGFuIHwgSW52aXNpYmxlU3BhbjtcblxuY2xhc3MgQ2hhclBvc2l0aW9uU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uO1xuXG4gICNsb2NQb3NTcGFuOiBIYnNTcGFuIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgY2hhclBvc2l0aW9uczogeyBzdGFydDogQ2hhclBvc2l0aW9uOyBlbmQ6IENoYXJQb3NpdGlvbiB9XG4gICkge31cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnNsaWNlKHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydC5jaGFyUG9zLCB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLmNoYXJQb3MpO1xuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZTtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0O1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jaGFyUG9zaXRpb25zLmVuZDtcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSgpIHtcbiAgICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGB1cGRhdGluZyBhIGxvY2F0aW9uIHRoYXQgY2FtZSBmcm9tIGEgQ2hhclBvc2l0aW9uIHNwYW4gZG9lc24ndCB3b3JrIHJlbGlhYmx5LiBEb24ndCB0cnkgdG8gdXBkYXRlIGxvY2F0aW9ucyBhZnRlciB0aGUgcGx1Z2luIHBoYXNlYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB0b0hic1NwYW4oKTogSGJzU3BhbiB8IG51bGwge1xuICAgIGxldCBsb2NQb3NTcGFuID0gdGhpcy4jbG9jUG9zU3BhbjtcblxuICAgIGlmIChsb2NQb3NTcGFuID09PSBudWxsKSB7XG4gICAgICBsZXQgc3RhcnQgPSB0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQudG9IYnNQb3MoKTtcbiAgICAgIGxldCBlbmQgPSB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kLnRvSGJzUG9zKCk7XG5cbiAgICAgIGlmIChzdGFydCA9PT0gbnVsbCB8fCBlbmQgPT09IG51bGwpIHtcbiAgICAgICAgbG9jUG9zU3BhbiA9IHRoaXMuI2xvY1Bvc1NwYW4gPSBCUk9LRU47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NQb3NTcGFuID0gdGhpcy4jbG9jUG9zU3BhbiA9IG5ldyBIYnNTcGFuKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbG9jUG9zU3BhbiA9PT0gQlJPS0VOID8gbnVsbCA6IGxvY1Bvc1NwYW47XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW4ge1xuICAgIGxldCB7XG4gICAgICBzdGFydDogeyBjaGFyUG9zOiBzdGFydCB9LFxuICAgICAgZW5kOiB7IGNoYXJQb3M6IGVuZCB9LFxuICAgIH0gPSB0aGlzLmNoYXJQb3NpdGlvbnM7XG5cbiAgICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgICAgcmV0dXJuIHN0YXJ0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3N0YXJ0LCBlbmRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogQ2hhclBvc2l0aW9uU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhic1NwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQgPSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuXG4gICNjaGFyUG9zU3BhbjogQ2hhclBvc2l0aW9uU3BhbiB8IEJST0tFTiB8IG51bGwgPSBudWxsO1xuXG4gIC8vIHRoZSBzb3VyY2UgbG9jYXRpb24gZnJvbSBIYW5kbGViYXJzICsgQVNUIFBsdWdpbnMgLS0gY291bGQgYmUgd3JvbmdcbiAgI3Byb3ZpZGVkSGJzTG9jOiBTb3VyY2VMb2NhdGlvbiB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc291cmNlOiBTb3VyY2UsXG4gICAgcmVhZG9ubHkgaGJzUG9zaXRpb25zOiB7IHN0YXJ0OiBIYnNQb3NpdGlvbjsgZW5kOiBIYnNQb3NpdGlvbiB9LFxuICAgIHByb3ZpZGVkSGJzTG9jOiBTb3VyY2VMb2NhdGlvbiB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMuI3Byb3ZpZGVkSGJzTG9jID0gcHJvdmlkZWRIYnNMb2M7XG4gIH1cblxuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiB7XG4gICAgbGV0IGNoYXJQb3MgPSB0aGlzLnRvQ2hhclBvc1NwYW4oKTtcbiAgICByZXR1cm4gY2hhclBvcyA9PT0gbnVsbCA/IE9mZnNldEtpbmQuQnJva2VuIDogY2hhclBvcy53cmFwKCkuc2VyaWFsaXplKCk7XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJvdmlkZWQocG9zOiBTb3VyY2VQb3NpdGlvbiwgZWRnZTogJ3N0YXJ0JyB8ICdlbmQnKSB7XG4gICAgaWYgKHRoaXMuI3Byb3ZpZGVkSGJzTG9jKSB7XG4gICAgICB0aGlzLiNwcm92aWRlZEhic0xvY1tlZGdlXSA9IHBvcztcbiAgICB9XG5cbiAgICAvLyBpbnZhbGlkYXRlIGNvbXB1dGVkIGNoYXJhY3RlciBvZmZzZXRzXG4gICAgdGhpcy4jY2hhclBvc1NwYW4gPSBudWxsO1xuICAgIHRoaXMuI3Byb3ZpZGVkSGJzTG9jID0ge1xuICAgICAgc3RhcnQ6IHBvcyxcbiAgICAgIGVuZDogcG9zLFxuICAgIH07XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoeyBzdGFydCwgZW5kIH06IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSk6IHZvaWQge1xuICAgIGlmIChzdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3ZpZGVkKHN0YXJ0LCAnc3RhcnQnKTtcbiAgICAgIHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0ID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBzdGFydCwgbnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVByb3ZpZGVkKGVuZCwgJ2VuZCcpO1xuICAgICAgdGhpcy5oYnNQb3NpdGlvbnMuZW5kID0gbmV3IEhic1Bvc2l0aW9uKHRoaXMuc291cmNlLCBlbmQsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHNwYW4gPSB0aGlzLnRvQ2hhclBvc1NwYW4oKTtcbiAgICByZXR1cm4gc3BhbiA9PT0gbnVsbCA/ICcnIDogc3Bhbi5hc1N0cmluZygpO1xuICB9XG5cbiAgZ2V0TW9kdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1vZHVsZTtcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQ7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5lbmQ7XG4gIH1cblxuICB0b0hic0xvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydC5oYnNQb3MsXG4gICAgICBlbmQ6IHRoaXMuaGJzUG9zaXRpb25zLmVuZC5oYnNQb3MsXG4gICAgfTtcbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogQ2hhclBvc2l0aW9uU3BhbiB8IG51bGwge1xuICAgIGxldCBjaGFyUG9zU3BhbiA9IHRoaXMuI2NoYXJQb3NTcGFuO1xuXG4gICAgaWYgKGNoYXJQb3NTcGFuID09PSBudWxsKSB7XG4gICAgICBsZXQgc3RhcnQgPSB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydC50b0NoYXJQb3MoKTtcbiAgICAgIGxldCBlbmQgPSB0aGlzLmhic1Bvc2l0aW9ucy5lbmQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgY2hhclBvc1NwYW4gPSB0aGlzLiNjaGFyUG9zU3BhbiA9IG5ldyBDaGFyUG9zaXRpb25TcGFuKHRoaXMuc291cmNlLCB7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYXJQb3NTcGFuID0gdGhpcy4jY2hhclBvc1NwYW4gPSBCUk9LRU47XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFyUG9zU3BhbiA9PT0gQlJPS0VOID8gbnVsbCA6IGNoYXJQb3NTcGFuO1xuICB9XG59XG5cbmNsYXNzIEludmlzaWJsZVNwYW4gaW1wbGVtZW50cyBTcGFuRGF0YSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQuQnJva2VuIHwgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWMgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50LFxuICAgIC8vIHdoYXRldmVyIHdhcyBwcm92aWRlZCwgcG9zc2libHkgYnJva2VuXG4gICAgcmVhZG9ubHkgbG9jOiBTb3VyY2VMb2NhdGlvbixcbiAgICAvLyBpZiB0aGUgc3BhbiByZXByZXNlbnRzIGEgc3ludGhldGljIHN0cmluZ1xuICAgIHJlYWRvbmx5IHN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgKSB7fVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuIHtcbiAgICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICAgICAgY2FzZSBPZmZzZXRLaW5kLkJyb2tlbjpcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5Ob25FeGlzdGVudDpcbiAgICAgICAgcmV0dXJuIHRoaXMua2luZDtcbiAgICAgIGNhc2UgT2Zmc2V0S2luZC5JbnRlcm5hbHNTeW50aGV0aWM6XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZyB8fCAnJztcbiAgICB9XG4gIH1cblxuICB3cmFwKCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU291cmNlU3Bhbih0aGlzKTtcbiAgfVxuXG4gIGFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nIHx8ICcnO1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKHsgc3RhcnQsIGVuZCB9OiB7IHN0YXJ0PzogU291cmNlUG9zaXRpb247IGVuZD86IFNvdXJjZVBvc2l0aW9uIH0pIHtcbiAgICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2Muc3RhcnQgPSBzdGFydDtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubG9jLmVuZCA9IGVuZDtcbiAgICB9XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVmbGVjdCB0aGUgYWN0dWFsIG1vZHVsZSB0aGlzIHNwYW4gb3JpZ2luYXRlZCBmcm9tXG4gICAgcmV0dXJuICdhbiB1bmtub3duIG1vZHVsZSc7XG4gIH1cblxuICBnZXRTdGFydCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbih0aGlzLmtpbmQsIHRoaXMubG9jLnN0YXJ0KTtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVQb3NpdGlvbih0aGlzLmtpbmQsIHRoaXMubG9jLmVuZCk7XG4gIH1cblxuICB0b0NoYXJQb3NTcGFuKCk6IEludmlzaWJsZVNwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9IYnNTcGFuKCk6IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdG9IYnNMb2MoKTogU291cmNlTG9jYXRpb24ge1xuICAgIHJldHVybiBCUk9LRU5fTE9DQVRJT047XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNwYW46IE1hdGNoRm48U291cmNlU3Bhbj4gPSBtYXRjaCgobSkgPT5cbiAgbVxuICAgIC53aGVuKE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT5cbiAgICAgIG5ldyBIYnNTcGFuKGxlZnQuc291cmNlLCB7XG4gICAgICAgIHN0YXJ0OiBsZWZ0LFxuICAgICAgICBlbmQ6IHJpZ2h0LFxuICAgICAgfSkud3JhcCgpXG4gICAgKVxuICAgIC53aGVuKE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgbmV3IENoYXJQb3NpdGlvblNwYW4obGVmdC5zb3VyY2UsIHtcbiAgICAgICAgc3RhcnQ6IGxlZnQsXG4gICAgICAgIGVuZDogcmlnaHQsXG4gICAgICB9KS53cmFwKClcbiAgICApXG4gICAgLndoZW4oT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIE9mZnNldEtpbmQuSGJzUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgbGV0IHJpZ2h0Q2hhclBvcyA9IHJpZ2h0LnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAocmlnaHRDaGFyUG9zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BhbihsZWZ0LCByaWdodENoYXJQb3MpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLndoZW4oT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgbGV0IGxlZnRDaGFyUG9zID0gbGVmdC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKGxlZnRDaGFyUG9zID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgSW52aXNpYmxlU3BhbihPZmZzZXRLaW5kLkJyb2tlbiwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3BhbihsZWZ0Q2hhclBvcywgcmlnaHQpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLndoZW4oSXNJbnZpc2libGUsIE1hdGNoQW55LCAobGVmdCkgPT4gbmV3IEludmlzaWJsZVNwYW4obGVmdC5raW5kLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKSlcbiAgICAud2hlbihNYXRjaEFueSwgSXNJbnZpc2libGUsIChfLCByaWdodCkgPT5cbiAgICAgIG5ldyBJbnZpc2libGVTcGFuKHJpZ2h0LmtpbmQsIEJST0tFTl9MT0NBVElPTikud3JhcCgpXG4gICAgKVxuKTtcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZENvbmNyZXRlU291cmNlU3BhbiA9XG4gIHwgLyoqIGNvbGxhcHNlZCAqLyBudW1iZXJcbiAgfCAvKiogbm9ybWFsICovIFtzdGFydDogbnVtYmVyLCBzaXplOiBudW1iZXJdXG4gIHwgLyoqIHN5bnRoZXRpYyAqLyBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRTb3VyY2VTcGFuID1cbiAgfCBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuXG4gIHwgT2Zmc2V0S2luZC5Ob25FeGlzdGVudFxuICB8IE9mZnNldEtpbmQuQnJva2VuO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL2xvYy9zcGFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLFNBQUEsS0FBQSxRQUFBLGNBQUE7QUFFQSxTQUFBLFdBQUEsUUFBQSxlQUFBO0FBRUEsU0FBQSxlQUFBLEVBQUEscUJBQUEsUUFBQSxhQUFBO0FBTUEsU0FBQSxXQUFBLFFBQUEsVUFBQTtBQUVBLFNBQUEsV0FBQSxFQUFBLEtBQUEsRUFBQSxRQUFBLFFBQUEsU0FBQTtBQUNBLFNBQUEsTUFBQSxFQUFBLFlBQUEsRUFBQSxXQUFBLEVBQUEsaUJBQUEsUUFBQSxVQUFBO0FBeURBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtDQSxXQUFNLFVBQU47QUE0Q0Usc0JBQUEsSUFBQSxFQUE0QztBQUF4QixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ2xCLFNBQUEsV0FBQSxHQUNFLElBQUksQ0FBSixJQUFBLEtBQVM7QUFBQTtBQUFULE9BQXlDLElBQUksQ0FBSixJQUFBLEtBQVM7QUFBQTtBQURwRDtBQUVEOztBQS9DSCxhQUtFLElBTEYsR0FLRSxjQUFBLE1BQUEsRUFBQSxVQUFBLEVBQTREO0FBQzFELFFBQUksT0FBQSxVQUFBLEtBQUosUUFBQSxFQUFvQztBQUNsQyxhQUFPLFVBQVUsQ0FBVixnQkFBQSxDQUFBLE1BQUEsRUFBQSxVQUFBLEVBQVAsVUFBTyxDQUFQO0FBREYsS0FBQSxNQUVPLElBQUksT0FBQSxVQUFBLEtBQUosUUFBQSxFQUFvQztBQUN6QyxhQUFPLFVBQVUsQ0FBVixTQUFBLENBQVAsVUFBTyxDQUFQO0FBREssS0FBQSxNQUVBLElBQUksS0FBSyxDQUFMLE9BQUEsQ0FBSixVQUFJLENBQUosRUFBK0I7QUFDcEMsYUFBTyxVQUFVLENBQVYsZ0JBQUEsQ0FBQSxNQUFBLEVBQW9DLFVBQVUsQ0FBOUMsQ0FBOEMsQ0FBOUMsRUFBbUQsVUFB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QUFBLFdBQVUsSUFBQSxhQUFBLENBQWtCLElBQUksQ0FBdEIsSUFBQSxFQUFBLGVBQUEsRUEvQnpDLElBK0J5QyxFQUFWO0FBQUEsR0EvQi9CLEVBQUEsSUFBQSxDQUFBLFFBQUEsRUFBQSxXQUFBLEVBZ0MrQixVQUFBLENBQUEsRUFBQSxLQUFBO0FBQUEsV0FDM0IsSUFBQSxhQUFBLENBQWtCLEtBQUssQ0FBdkIsSUFBQSxFQUFBLGVBQUEsRUFsQ0MsSUFrQ0QsRUFEMkI7QUFBQSxHQWhDL0IsQ0FENkM7QUFBQSxDQUFELENBQXZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuaW1wb3J0IHsgTE9DQUxfREVCVUcgfSBmcm9tICdAZ2xpbW1lci9sb2NhbC1kZWJ1Zy1mbGFncyc7XG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQge1xuICBCUk9LRU5fTE9DQVRJT04sXG4gIE5PTl9FWElTVEVOVF9MT0NBVElPTixcbiAgU291cmNlTG9jYXRpb24sXG4gIFNvdXJjZVBvc2l0aW9uLFxufSBmcm9tICcuLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2VTbGljZSB9IGZyb20gJy4uL3NsaWNlJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4uL3NvdXJjZSc7XG5pbXBvcnQgeyBJc0ludmlzaWJsZSwgbWF0Y2gsIE1hdGNoQW55LCBNYXRjaEZuIH0gZnJvbSAnLi9tYXRjaCc7XG5pbXBvcnQge1xuICBBbnlQb3NpdGlvbixcbiAgQlJPS0VOLFxuICBDaGFyUG9zaXRpb24sXG4gIEhic1Bvc2l0aW9uLFxuICBJbnZpc2libGVQb3NpdGlvbixcbiAgT2Zmc2V0S2luZCxcbiAgU291cmNlT2Zmc2V0LFxufSBmcm9tICcuL29mZnNldCc7XG5cbi8qKlxuICogQWxsIHNwYW5zIGhhdmUgdGhlc2UgZGV0YWlscyBpbiBjb21tb24uXG4gKi9cbmludGVyZmFjZSBTcGFuRGF0YSB7XG4gIHJlYWRvbmx5IGtpbmQ6IE9mZnNldEtpbmQ7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBzcGFuIGludG8gYSBzdHJpbmcuIElmIHRoZSBzcGFuIGlzIGJyb2tlbiwgcmV0dXJuIGAnJ2AuXG4gICAqL1xuICBhc1N0cmluZygpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1vZHVsZSB0aGUgc3BhbiB3YXMgbG9jYXRlZCBpbi5cbiAgICovXG4gIGdldE1vZHVsZSgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhcnRpbmcgcG9zaXRpb24gZm9yIHRoaXMgc3Bhbi4gVHJ5IHRvIGF2b2lkIGNyZWF0aW5nIG5ldyBwb3NpdGlvbiBvYmplY3RzLCBhcyB0aGV5XG4gICAqIGNhY2hlIGNvbXB1dGF0aW9ucy5cbiAgICovXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVuZGluZyBwb3NpdGlvbiBmb3IgdGhpcyBzcGFuLiBUcnkgdG8gYXZvaWQgY3JlYXRpbmcgbmV3IHBvc2l0aW9uIG9iamVjdHMsIGFzIHRoZXlcbiAgICogY2FjaGUgY29tcHV0YXRpb25zLlxuICAgKi9cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSBgU291cmNlTG9jYXRpb25gIGZvciB0aGlzIHNwYW4sIHJldHVybmVkIGFzIGFuIGluc3RhbmNlIG9mIGBIYnNTcGFuYC5cbiAgICovXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHwgbnVsbDtcblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHksIHdoZW5ldmVyIHRoZSBgc3RhcnRgIG9yIGBlbmRgIG9mIGEge0BzZWUgU291cmNlT2Zmc2V0fSBjaGFuZ2VzLCBzcGFucyBhcmVcbiAgICogbm90aWZpZWQgb2YgdGhlIGNoYW5nZSBzbyB0aGV5IGNhbiB1cGRhdGUgdGhlbXNlbHZlcy4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIG91dHNpZGUgb2YgQVNUXG4gICAqIHBsdWdpbnMuXG4gICAqL1xuICBsb2NEaWRVcGRhdGUoY2hhbmdlczogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KTogdm9pZDtcblxuICAvKipcbiAgICogU2VyaWFsaXplIGludG8gYSB7QHNlZSBTZXJpYWxpemVkU291cmNlU3Bhbn0sIHdoaWNoIGlzIGNvbXBhY3QgYW5kIGRlc2lnbmVkIGZvciByZWFkYWJpbGl0eSBpblxuICAgKiBjb250ZXh0IGxpa2UgQVNUIEV4cGxvcmVyLiBJZiB5b3UgbmVlZCBhIHtAc2VlIFNvdXJjZUxvY2F0aW9ufSwgdXNlIHtAc2VlIHRvSlNPTn0uXG4gICAqL1xuICBzZXJpYWxpemUoKTogU2VyaWFsaXplZFNvdXJjZVNwYW47XG59XG5cbi8qKlxuICogQSBgU291cmNlU3BhbmAgb2JqZWN0IHJlcHJlc2VudHMgYSBzcGFuIG9mIGNoYXJhY3RlcnMgaW5zaWRlIG9mIGEgdGVtcGxhdGUgc291cmNlLlxuICpcbiAqIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBgU291cmNlU3BhbmAgb2JqZWN0czpcbiAqXG4gKiAtIGBDb25jcmV0ZVNvdXJjZVNwYW5gLCB3aGljaCBjb250YWlucyBieXRlIG9mZnNldHNcbiAqIC0gYExhenlTb3VyY2VTcGFuYCwgd2hpY2ggY29udGFpbnMgYFNvdXJjZUxvY2F0aW9uYHMgZnJvbSB0aGUgSGFuZGxlYmFycyBBU1QsIHdoaWNoIGNhbiBiZVxuICogICBjb252ZXJ0ZWQgdG8gYnl0ZSBvZmZzZXRzIG9uIGRlbWFuZC5cbiAqIC0gYEludmlzaWJsZVNvdXJjZVNwYW5gLCB3aGljaCByZXByZXNlbnQgc291cmNlIHN0cmluZ3MgdGhhdCBhcmVuJ3QgcHJlc2VudCBpbiB0aGUgc291cmNlLFxuICogICBiZWNhdXNlOlxuICogICAgIC0gdGhleSB3ZXJlIGNyZWF0ZWQgc3ludGhldGljYWxseVxuICogICAgIC0gdGhlaXIgbG9jYXRpb24gaXMgbm9uc2Vuc2ljYWwgKHRoZSBzcGFuIGlzIGJyb2tlbilcbiAqICAgICAtIHRoZXkgcmVwcmVzZW50IG5vdGhpbmcgaW4gdGhlIHNvdXJjZSAodGhpcyBjdXJyZW50bHkgaGFwcGVucyBvbmx5IHdoZW4gYSBidWcgaW4gdGhlXG4gKiAgICAgICB1cHN0cmVhbSBIYW5kbGViYXJzIHBhcnNlciBmYWlscyB0byBhc3NpZ24gYSBsb2NhdGlvbiB0byBlbXB0eSBibG9ja3MpXG4gKlxuICogQXQgYSBoaWdoIGxldmVsLCBhbGwgYFNvdXJjZVNwYW5gIG9iamVjdHMgcHJvdmlkZTpcbiAqXG4gKiAtIGJ5dGUgb2Zmc2V0c1xuICogLSBzb3VyY2UgaW4gY29sdW1uIGFuZCBsaW5lIGZvcm1hdFxuICpcbiAqIEFuZCB5b3UgY2FuIGRvIHRoZXNlIG9wZXJhdGlvbnMgb24gYFNvdXJjZVNwYW5gczpcbiAqXG4gKiAtIGNvbGxhcHNlIGl0IHRvIGEgYFNvdXJjZVNwYW5gIHJlcHJlc2VudGluZyBpdHMgc3RhcnRpbmcgb3IgZW5kaW5nIHBvc2l0aW9uXG4gKiAtIHNsaWNlIG91dCBzb21lIGNoYXJhY3RlcnMsIG9wdGlvbmFsbHkgc2tpcHBpbmcgc29tZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kXG4gKiAtIGNyZWF0ZSBhIG5ldyBgU291cmNlU3BhbmAgd2l0aCBhIGRpZmZlcmVudCBzdGFydGluZyBvciBlbmRpbmcgb2Zmc2V0XG4gKlxuICogQWxsIFNvdXJjZVNwYW4gb2JqZWN0cyBpbXBsZW1lbnQgYFNvdXJjZUxvY2F0aW9uYCwgZm9yIGNvbXBhdGliaWxpdHkuIEFsbCBTb3VyY2VTcGFuXG4gKiBvYmplY3RzIGhhdmUgYSBgdG9KU09OYCB0aGF0IGVtaXRzIGBTb3VyY2VMb2NhdGlvbmAsIGFsc28gZm9yIGNvbXBhdGliaWxpdHkuXG4gKlxuICogRm9yIGNvbXBhdGliaWxpdHksIHN1YmNsYXNzZXMgb2YgYEFic3RyYWN0U291cmNlU3BhbmAgbXVzdCBpbXBsZW1lbnQgYGxvY0RpZFVwZGF0ZWAsIHdoaWNoXG4gKiBoYXBwZW5zIHdoZW4gYW4gQVNUIHBsdWdpbiBhdHRlbXB0cyB0byBtb2RpZnkgdGhlIGBzdGFydGAgb3IgYGVuZGAgb2YgYSBzcGFuIGRpcmVjdGx5LlxuICpcbiAqIFRoZSBnb2FsIGlzIHRvIGF2b2lkIGNyZWF0aW5nIGFueSBwcm9ibGVtcyBmb3IgdXNlLWNhc2VzIGxpa2UgQVNUIEV4cGxvcmVyLlxuICovXG5leHBvcnQgY2xhc3MgU291cmNlU3BhbiBpbXBsZW1lbnRzIFNvdXJjZUxvY2F0aW9uIHtcbiAgc3RhdGljIGdldCBOT05fRVhJU1RFTlQoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsIE5PTl9FWElTVEVOVF9MT0NBVElPTikud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGxvYWQoc291cmNlOiBTb3VyY2UsIHNlcmlhbGl6ZWQ6IFNlcmlhbGl6ZWRTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uZm9yQ2hhclBvc2l0aW9ucyhzb3VyY2UsIHNlcmlhbGl6ZWQsIHNlcmlhbGl6ZWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNlcmlhbGl6ZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5zeW50aGV0aWMoc2VyaWFsaXplZCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNlcmlhbGl6ZWQpKSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5mb3JDaGFyUG9zaXRpb25zKHNvdXJjZSwgc2VyaWFsaXplZFswXSwgc2VyaWFsaXplZFsxXSk7XG4gICAgfSBlbHNlIGlmIChzZXJpYWxpemVkID09PSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50KSB7XG4gICAgICByZXR1cm4gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQ7XG4gICAgfSBlbHNlIGlmIChzZXJpYWxpemVkID09PSBPZmZzZXRLaW5kLkJyb2tlbikge1xuICAgICAgcmV0dXJuIFNvdXJjZVNwYW4uYnJva2VuKEJST0tFTl9MT0NBVElPTik7XG4gICAgfVxuXG4gICAgYXNzZXJ0TmV2ZXIoc2VyaWFsaXplZCk7XG4gIH1cblxuICBzdGF0aWMgZm9ySGJzTG9jKHNvdXJjZTogU291cmNlLCBsb2M6IFNvdXJjZUxvY2F0aW9uKTogU291cmNlU3BhbiB7XG4gICAgbGV0IHN0YXJ0ID0gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgbG9jLnN0YXJ0KTtcbiAgICBsZXQgZW5kID0gbmV3IEhic1Bvc2l0aW9uKHNvdXJjZSwgbG9jLmVuZCk7XG4gICAgcmV0dXJuIG5ldyBIYnNTcGFuKHNvdXJjZSwgeyBzdGFydCwgZW5kIH0sIGxvYykud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIGZvckNoYXJQb3NpdGlvbnMoc291cmNlOiBTb3VyY2UsIHN0YXJ0UG9zOiBudW1iZXIsIGVuZFBvczogbnVtYmVyKTogU291cmNlU3BhbiB7XG4gICAgbGV0IHN0YXJ0ID0gbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIHN0YXJ0UG9zKTtcbiAgICBsZXQgZW5kID0gbmV3IENoYXJQb3NpdGlvbihzb3VyY2UsIGVuZFBvcyk7XG5cbiAgICByZXR1cm4gbmV3IENoYXJQb3NpdGlvblNwYW4oc291cmNlLCB7IHN0YXJ0LCBlbmQgfSkud3JhcCgpO1xuICB9XG5cbiAgc3RhdGljIHN5bnRoZXRpYyhjaGFyczogc3RyaW5nKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuSW50ZXJuYWxzU3ludGhldGljLCBOT05fRVhJU1RFTlRfTE9DQVRJT04sIGNoYXJzKS53cmFwKCk7XG4gIH1cblxuICBzdGF0aWMgYnJva2VuKHBvczogU291cmNlTG9jYXRpb24gPSBCUk9LRU5fTE9DQVRJT04pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVNwYW4oT2Zmc2V0S2luZC5Ccm9rZW4sIHBvcykud3JhcCgpO1xuICB9XG5cbiAgcmVhZG9ubHkgaXNJbnZpc2libGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBTcGFuRGF0YSAmIEFueVNwYW4pIHtcbiAgICB0aGlzLmlzSW52aXNpYmxlID1cbiAgICAgIGRhdGEua2luZCAhPT0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24gJiYgZGF0YS5raW5kICE9PSBPZmZzZXRLaW5kLkhic1Bvc2l0aW9uO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogU291cmNlT2Zmc2V0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldFN0YXJ0KCkud3JhcCgpO1xuICB9XG5cbiAgZ2V0RW5kKCk6IFNvdXJjZU9mZnNldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5nZXRFbmQoKS53cmFwKCk7XG4gIH1cblxuICBnZXQgbG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICBsZXQgc3BhbiA9IHRoaXMuZGF0YS50b0hic1NwYW4oKTtcbiAgICByZXR1cm4gc3BhbiA9PT0gbnVsbCA/IEJST0tFTl9MT0NBVElPTiA6IHNwYW4udG9IYnNMb2MoKTtcbiAgfVxuXG4gIGdldCBtb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmdldE1vZHVsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhcnRpbmcgYFNvdXJjZVBvc2l0aW9uYCBmb3IgdGhpcyBgU291cmNlU3BhbmAsIGxhemlseSBjb21wdXRpbmcgaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IHN0YXJ0UG9zaXRpb24oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5zdGFydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVuZGluZyBgU291cmNlUG9zaXRpb25gIGZvciB0aGlzIGBTb3VyY2VTcGFuYCwgbGF6aWx5IGNvbXB1dGluZyBpdCBpZiBuZWVkZWQuXG4gICAqL1xuICBnZXQgZW5kUG9zaXRpb24oKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5lbmQ7XG4gIH1cblxuICAvKipcbiAgICogU3VwcG9ydCBjb252ZXJ0aW5nIEFTVHYxIG5vZGVzIGludG8gYSBzZXJpYWxpemVkIGZvcm1hdCB1c2luZyBKU09OLnN0cmluZ2lmeS5cbiAgICovXG4gIHRvSlNPTigpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubG9jO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzcGFuIHdpdGggdGhlIGN1cnJlbnQgc3BhbidzIGVuZCBhbmQgYSBuZXcgYmVnaW5uaW5nLlxuICAgKi9cbiAgd2l0aFN0YXJ0KG90aGVyOiBTb3VyY2VPZmZzZXQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3BhbihvdGhlci5kYXRhLCB0aGlzLmRhdGEuZ2V0RW5kKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzcGFuIHdpdGggdGhlIGN1cnJlbnQgc3BhbidzIGJlZ2lubmluZyBhbmQgYSBuZXcgZW5kaW5nLlxuICAgKi9cbiAgd2l0aEVuZCh0aGlzOiBTb3VyY2VTcGFuLCBvdGhlcjogU291cmNlT2Zmc2V0KTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHNwYW4odGhpcy5kYXRhLmdldFN0YXJ0KCksIG90aGVyLmRhdGEpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmFzU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0aGlzIGBTb3VyY2VTcGFuYCBpbnRvIGEgYFNvdXJjZVNsaWNlYC4gSW4gZGVidWcgbW9kZSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSBjaGVja3NcbiAgICogdGhhdCB0aGUgYnl0ZSBvZmZzZXRzIHJlcHJlc2VudGVkIGJ5IHRoaXMgYFNvdXJjZVNwYW5gIGFjdHVhbGx5IGNvcnJlc3BvbmQgdG8gdGhlIGV4cGVjdGVkXG4gICAqIHN0cmluZy5cbiAgICovXG4gIHRvU2xpY2UoZXhwZWN0ZWQ/OiBzdHJpbmcpOiBTb3VyY2VTbGljZSB7XG4gICAgbGV0IGNoYXJzID0gdGhpcy5kYXRhLmFzU3RyaW5nKCk7XG5cbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGlmIChleHBlY3RlZCAhPT0gdW5kZWZpbmVkICYmIGNoYXJzICE9PSBleHBlY3RlZCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYHVuZXhwZWN0ZWRseSBmb3VuZCAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgY2hhcnNcbiAgICAgICAgICApfSB3aGVuIHNsaWNpbmcgc291cmNlLCBidXQgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShleHBlY3RlZCl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgU291cmNlU2xpY2Uoe1xuICAgICAgbG9jOiB0aGlzLFxuICAgICAgY2hhcnM6IGV4cGVjdGVkIHx8IGNoYXJzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIHN0YXJ0UG9zaXRpb24gaW5zdGVhZFxuICAgKi9cbiAgZ2V0IHN0YXJ0KCk6IFNvdXJjZVBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sb2Muc3RhcnQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2l0aFN0YXJ0IGluc3RlYWRcbiAgICovXG4gIHNldCBzdGFydChwb3NpdGlvbjogU291cmNlUG9zaXRpb24pIHtcbiAgICB0aGlzLmRhdGEubG9jRGlkVXBkYXRlKHsgc3RhcnQ6IHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGVuZFBvc2l0aW9uIGluc3RlYWRcbiAgICovXG4gIGdldCBlbmQoKTogU291cmNlUG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmxvYy5lbmQ7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTb3VyY2VMb2NhdGlvbiBpbiBBU1QgcGx1Z2luc1xuICAgKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Ugd2l0aEVuZCBpbnN0ZWFkXG4gICAqL1xuICBzZXQgZW5kKHBvc2l0aW9uOiBTb3VyY2VQb3NpdGlvbikge1xuICAgIHRoaXMuZGF0YS5sb2NEaWRVcGRhdGUoeyBlbmQ6IHBvc2l0aW9uIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggU291cmNlTG9jYXRpb24gaW4gQVNUIHBsdWdpbnNcbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgdXNlIG1vZHVsZSBpbnN0ZWFkXG4gICAqL1xuICBnZXQgc291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kdWxlO1xuICB9XG5cbiAgY29sbGFwc2Uod2hlcmU6ICdzdGFydCcgfCAnZW5kJyk6IFNvdXJjZVNwYW4ge1xuICAgIHN3aXRjaCAod2hlcmUpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhcnQoKS5jb2xsYXBzZWQoKTtcbiAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIHJldHVybiB0aGlzLmdldEVuZCgpLmNvbGxhcHNlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGV4dGVuZChvdGhlcjogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZGF0YS5nZXRTdGFydCgpLCBvdGhlci5kYXRhLmdldEVuZCgpKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHNsaWNlKHsgc2tpcFN0YXJ0ID0gMCwgc2tpcEVuZCA9IDAgfTogeyBza2lwU3RhcnQ/OiBudW1iZXI7IHNraXBFbmQ/OiBudW1iZXIgfSk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBzcGFuKHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCkuZGF0YSwgdGhpcy5nZXRFbmQoKS5tb3ZlKC1za2lwRW5kKS5kYXRhKTtcbiAgfVxuXG4gIHNsaWNlU3RhcnRDaGFycyh7IHNraXBTdGFydCA9IDAsIGNoYXJzIH06IHsgc2tpcFN0YXJ0PzogbnVtYmVyOyBjaGFyczogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldFN0YXJ0KCkubW92ZShza2lwU3RhcnQpLmRhdGEsIHRoaXMuZ2V0U3RhcnQoKS5tb3ZlKHNraXBTdGFydCArIGNoYXJzKS5kYXRhKTtcbiAgfVxuXG4gIHNsaWNlRW5kQ2hhcnMoeyBza2lwRW5kID0gMCwgY2hhcnMgfTogeyBza2lwRW5kPzogbnVtYmVyOyBjaGFyczogbnVtYmVyIH0pOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gc3Bhbih0aGlzLmdldEVuZCgpLm1vdmUoc2tpcEVuZCAtIGNoYXJzKS5kYXRhLCB0aGlzLmdldFN0YXJ0KCkubW92ZSgtc2tpcEVuZCkuZGF0YSk7XG4gIH1cbn1cblxudHlwZSBBbnlTcGFuID0gSGJzU3BhbiB8IENoYXJQb3NpdGlvblNwYW4gfCBJbnZpc2libGVTcGFuO1xuXG5jbGFzcyBDaGFyUG9zaXRpb25TcGFuIGltcGxlbWVudHMgU3BhbkRhdGEge1xuICByZWFkb25seSBraW5kID0gT2Zmc2V0S2luZC5DaGFyUG9zaXRpb247XG5cbiAgX2xvY1Bvc1NwYW46IEhic1NwYW4gfCBCUk9LRU4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBjaGFyUG9zaXRpb25zOiB7IHN0YXJ0OiBDaGFyUG9zaXRpb247IGVuZDogQ2hhclBvc2l0aW9uIH1cbiAgKSB7fVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uuc2xpY2UodGhpcy5jaGFyUG9zaXRpb25zLnN0YXJ0LmNoYXJQb3MsIHRoaXMuY2hhclBvc2l0aW9ucy5lbmQuY2hhclBvcyk7XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubW9kdWxlO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuc3RhcnQ7XG4gIH1cblxuICBnZXRFbmQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmNoYXJQb3NpdGlvbnMuZW5kO1xuICB9XG5cbiAgbG9jRGlkVXBkYXRlKCkge1xuICAgIGlmIChMT0NBTF9ERUJVRykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYHVwZGF0aW5nIGEgbG9jYXRpb24gdGhhdCBjYW1lIGZyb20gYSBDaGFyUG9zaXRpb24gc3BhbiBkb2Vzbid0IHdvcmsgcmVsaWFibHkuIERvbid0IHRyeSB0byB1cGRhdGUgbG9jYXRpb25zIGFmdGVyIHRoZSBwbHVnaW4gcGhhc2VgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHRvSGJzU3BhbigpOiBIYnNTcGFuIHwgbnVsbCB7XG4gICAgbGV0IGxvY1Bvc1NwYW4gPSB0aGlzLl9sb2NQb3NTcGFuO1xuXG4gICAgaWYgKGxvY1Bvc1NwYW4gPT09IG51bGwpIHtcbiAgICAgIGxldCBzdGFydCA9IHRoaXMuY2hhclBvc2l0aW9ucy5zdGFydC50b0hic1BvcygpO1xuICAgICAgbGV0IGVuZCA9IHRoaXMuY2hhclBvc2l0aW9ucy5lbmQudG9IYnNQb3MoKTtcblxuICAgICAgaWYgKHN0YXJ0ID09PSBudWxsIHx8IGVuZCA9PT0gbnVsbCkge1xuICAgICAgICBsb2NQb3NTcGFuID0gdGhpcy5fbG9jUG9zU3BhbiA9IEJST0tFTjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY1Bvc1NwYW4gPSB0aGlzLl9sb2NQb3NTcGFuID0gbmV3IEhic1NwYW4odGhpcy5zb3VyY2UsIHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NQb3NTcGFuID09PSBCUk9LRU4gPyBudWxsIDogbG9jUG9zU3BhbjtcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkU291cmNlU3BhbiB7XG4gICAgbGV0IHtcbiAgICAgIHN0YXJ0OiB7IGNoYXJQb3M6IHN0YXJ0IH0sXG4gICAgICBlbmQ6IHsgY2hhclBvczogZW5kIH0sXG4gICAgfSA9IHRoaXMuY2hhclBvc2l0aW9ucztcblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgICByZXR1cm4gc3RhcnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbc3RhcnQsIGVuZF07XG4gICAgfVxuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBDaGFyUG9zaXRpb25TcGFuIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGJzU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgcmVhZG9ubHkga2luZCA9IE9mZnNldEtpbmQuSGJzUG9zaXRpb247XG5cbiAgX2NoYXJQb3NTcGFuOiBDaGFyUG9zaXRpb25TcGFuIHwgQlJPS0VOIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gdGhlIHNvdXJjZSBsb2NhdGlvbiBmcm9tIEhhbmRsZWJhcnMgKyBBU1QgUGx1Z2lucyAtLSBjb3VsZCBiZSB3cm9uZ1xuICBfcHJvdmlkZWRIYnNMb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzb3VyY2U6IFNvdXJjZSxcbiAgICByZWFkb25seSBoYnNQb3NpdGlvbnM6IHsgc3RhcnQ6IEhic1Bvc2l0aW9uOyBlbmQ6IEhic1Bvc2l0aW9uIH0sXG4gICAgcHJvdmlkZWRIYnNMb2M6IFNvdXJjZUxvY2F0aW9uIHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5fcHJvdmlkZWRIYnNMb2MgPSBwcm92aWRlZEhic0xvYztcbiAgfVxuXG4gIHNlcmlhbGl6ZSgpOiBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuIHtcbiAgICBsZXQgY2hhclBvcyA9IHRoaXMudG9DaGFyUG9zU3BhbigpO1xuICAgIHJldHVybiBjaGFyUG9zID09PSBudWxsID8gT2Zmc2V0S2luZC5Ccm9rZW4gOiBjaGFyUG9zLndyYXAoKS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcm92aWRlZChwb3M6IFNvdXJjZVBvc2l0aW9uLCBlZGdlOiAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICBpZiAodGhpcy5fcHJvdmlkZWRIYnNMb2MpIHtcbiAgICAgIHRoaXMuX3Byb3ZpZGVkSGJzTG9jW2VkZ2VdID0gcG9zO1xuICAgIH1cblxuICAgIC8vIGludmFsaWRhdGUgY29tcHV0ZWQgY2hhcmFjdGVyIG9mZnNldHNcbiAgICB0aGlzLl9jaGFyUG9zU3BhbiA9IG51bGw7XG4gICAgdGhpcy5fcHJvdmlkZWRIYnNMb2MgPSB7XG4gICAgICBzdGFydDogcG9zLFxuICAgICAgZW5kOiBwb3MsXG4gICAgfTtcbiAgfVxuXG4gIGxvY0RpZFVwZGF0ZSh7IHN0YXJ0LCBlbmQgfTogeyBzdGFydD86IFNvdXJjZVBvc2l0aW9uOyBlbmQ/OiBTb3VyY2VQb3NpdGlvbiB9KTogdm9pZCB7XG4gICAgaWYgKHN0YXJ0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvdmlkZWQoc3RhcnQsICdzdGFydCcpO1xuICAgICAgdGhpcy5oYnNQb3NpdGlvbnMuc3RhcnQgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIHN0YXJ0LCBudWxsKTtcbiAgICB9XG5cbiAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlUHJvdmlkZWQoZW5kLCAnZW5kJyk7XG4gICAgICB0aGlzLmhic1Bvc2l0aW9ucy5lbmQgPSBuZXcgSGJzUG9zaXRpb24odGhpcy5zb3VyY2UsIGVuZCwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBsZXQgc3BhbiA9IHRoaXMudG9DaGFyUG9zU3BhbigpO1xuICAgIHJldHVybiBzcGFuID09PSBudWxsID8gJycgOiBzcGFuLmFzU3RyaW5nKCk7XG4gIH1cblxuICBnZXRNb2R1bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubW9kdWxlO1xuICB9XG5cbiAgZ2V0U3RhcnQoKTogQW55UG9zaXRpb24ge1xuICAgIHJldHVybiB0aGlzLmhic1Bvc2l0aW9ucy5zdGFydDtcbiAgfVxuXG4gIGdldEVuZCgpOiBBbnlQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaGJzUG9zaXRpb25zLmVuZDtcbiAgfVxuXG4gIHRvSGJzTG9jKCk6IFNvdXJjZUxvY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0Lmhic1BvcyxcbiAgICAgIGVuZDogdGhpcy5oYnNQb3NpdGlvbnMuZW5kLmhic1BvcyxcbiAgICB9O1xuICB9XG5cbiAgdG9IYnNTcGFuKCk6IEhic1NwYW4ge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9DaGFyUG9zU3BhbigpOiBDaGFyUG9zaXRpb25TcGFuIHwgbnVsbCB7XG4gICAgbGV0IGNoYXJQb3NTcGFuID0gdGhpcy5fY2hhclBvc1NwYW47XG5cbiAgICBpZiAoY2hhclBvc1NwYW4gPT09IG51bGwpIHtcbiAgICAgIGxldCBzdGFydCA9IHRoaXMuaGJzUG9zaXRpb25zLnN0YXJ0LnRvQ2hhclBvcygpO1xuICAgICAgbGV0IGVuZCA9IHRoaXMuaGJzUG9zaXRpb25zLmVuZC50b0NoYXJQb3MoKTtcblxuICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICBjaGFyUG9zU3BhbiA9IHRoaXMuX2NoYXJQb3NTcGFuID0gbmV3IENoYXJQb3NpdGlvblNwYW4odGhpcy5zb3VyY2UsIHtcbiAgICAgICAgICBzdGFydCxcbiAgICAgICAgICBlbmQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hhclBvc1NwYW4gPSB0aGlzLl9jaGFyUG9zU3BhbiA9IEJST0tFTjtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJQb3NTcGFuID09PSBCUk9LRU4gPyBudWxsIDogY2hhclBvc1NwYW47XG4gIH1cbn1cblxuY2xhc3MgSW52aXNpYmxlU3BhbiBpbXBsZW1lbnRzIFNwYW5EYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkga2luZDogT2Zmc2V0S2luZC5Ccm9rZW4gfCBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYyB8IE9mZnNldEtpbmQuTm9uRXhpc3RlbnQsXG4gICAgLy8gd2hhdGV2ZXIgd2FzIHByb3ZpZGVkLCBwb3NzaWJseSBicm9rZW5cbiAgICByZWFkb25seSBsb2M6IFNvdXJjZUxvY2F0aW9uLFxuICAgIC8vIGlmIHRoZSBzcGFuIHJlcHJlc2VudHMgYSBzeW50aGV0aWMgc3RyaW5nXG4gICAgcmVhZG9ubHkgc3RyaW5nOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApIHt9XG5cbiAgc2VyaWFsaXplKCk6IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW4ge1xuICAgIHN3aXRjaCAodGhpcy5raW5kKSB7XG4gICAgICBjYXNlIE9mZnNldEtpbmQuQnJva2VuOlxuICAgICAgY2FzZSBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50OlxuICAgICAgICByZXR1cm4gdGhpcy5raW5kO1xuICAgICAgY2FzZSBPZmZzZXRLaW5kLkludGVybmFsc1N5bnRoZXRpYzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHdyYXAoKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VTcGFuKHRoaXMpO1xuICB9XG5cbiAgYXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmcgfHwgJyc7XG4gIH1cblxuICBsb2NEaWRVcGRhdGUoeyBzdGFydCwgZW5kIH06IHsgc3RhcnQ/OiBTb3VyY2VQb3NpdGlvbjsgZW5kPzogU291cmNlUG9zaXRpb24gfSkge1xuICAgIGlmIChzdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmxvYy5zdGFydCA9IHN0YXJ0O1xuICAgIH1cblxuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sb2MuZW5kID0gZW5kO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vZHVsZSgpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyByZWZsZWN0IHRoZSBhY3R1YWwgbW9kdWxlIHRoaXMgc3BhbiBvcmlnaW5hdGVkIGZyb21cbiAgICByZXR1cm4gJ2FuIHVua25vd24gbW9kdWxlJztcbiAgfVxuXG4gIGdldFN0YXJ0KCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKHRoaXMua2luZCwgdGhpcy5sb2Muc3RhcnQpO1xuICB9XG5cbiAgZ2V0RW5kKCk6IEFueVBvc2l0aW9uIHtcbiAgICByZXR1cm4gbmV3IEludmlzaWJsZVBvc2l0aW9uKHRoaXMua2luZCwgdGhpcy5sb2MuZW5kKTtcbiAgfVxuXG4gIHRvQ2hhclBvc1NwYW4oKTogSW52aXNpYmxlU3BhbiB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0hic1NwYW4oKTogbnVsbCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0b0hic0xvYygpOiBTb3VyY2VMb2NhdGlvbiB7XG4gICAgcmV0dXJuIEJST0tFTl9MT0NBVElPTjtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3BhbjogTWF0Y2hGbjxTb3VyY2VTcGFuPiA9IG1hdGNoKChtKSA9PlxuICBtXG4gICAgLndoZW4oT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgbmV3IEhic1NwYW4obGVmdC5zb3VyY2UsIHtcbiAgICAgICAgc3RhcnQ6IGxlZnQsXG4gICAgICAgIGVuZDogcmlnaHQsXG4gICAgICB9KS53cmFwKClcbiAgICApXG4gICAgLndoZW4oT2Zmc2V0S2luZC5DaGFyUG9zaXRpb24sIE9mZnNldEtpbmQuQ2hhclBvc2l0aW9uLCAobGVmdCwgcmlnaHQpID0+XG4gICAgICBuZXcgQ2hhclBvc2l0aW9uU3BhbihsZWZ0LnNvdXJjZSwge1xuICAgICAgICBzdGFydDogbGVmdCxcbiAgICAgICAgZW5kOiByaWdodCxcbiAgICAgIH0pLndyYXAoKVxuICAgIClcbiAgICAud2hlbihPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgT2Zmc2V0S2luZC5IYnNQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICBsZXQgcmlnaHRDaGFyUG9zID0gcmlnaHQudG9DaGFyUG9zKCk7XG5cbiAgICAgIGlmIChyaWdodENoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzcGFuKGxlZnQsIHJpZ2h0Q2hhclBvcyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAud2hlbihPZmZzZXRLaW5kLkhic1Bvc2l0aW9uLCBPZmZzZXRLaW5kLkNoYXJQb3NpdGlvbiwgKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgICBsZXQgbGVmdENoYXJQb3MgPSBsZWZ0LnRvQ2hhclBvcygpO1xuXG4gICAgICBpZiAobGVmdENoYXJQb3MgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJbnZpc2libGVTcGFuKE9mZnNldEtpbmQuQnJva2VuLCBCUk9LRU5fTE9DQVRJT04pLndyYXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzcGFuKGxlZnRDaGFyUG9zLCByaWdodCk7XG4gICAgICB9XG4gICAgfSlcbiAgICAud2hlbihJc0ludmlzaWJsZSwgTWF0Y2hBbnksIChsZWZ0KSA9PiBuZXcgSW52aXNpYmxlU3BhbihsZWZ0LmtpbmQsIEJST0tFTl9MT0NBVElPTikud3JhcCgpKVxuICAgIC53aGVuKE1hdGNoQW55LCBJc0ludmlzaWJsZSwgKF8sIHJpZ2h0KSA9PlxuICAgICAgbmV3IEludmlzaWJsZVNwYW4ocmlnaHQua2luZCwgQlJPS0VOX0xPQ0FUSU9OKS53cmFwKClcbiAgICApXG4pO1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkQ29uY3JldGVTb3VyY2VTcGFuID1cbiAgfCAvKiogY29sbGFwc2VkICovIG51bWJlclxuICB8IC8qKiBub3JtYWwgKi8gW3N0YXJ0OiBudW1iZXIsIHNpemU6IG51bWJlcl1cbiAgfCAvKiogc3ludGhldGljICovIHN0cmluZztcblxuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFNvdXJjZVNwYW4gPVxuICB8IFNlcmlhbGl6ZWRDb25jcmV0ZVNvdXJjZVNwYW5cbiAgfCBPZmZzZXRLaW5kLk5vbkV4aXN0ZW50XG4gIHwgT2Zmc2V0S2luZC5Ccm9rZW47XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -1,20 +0,1 @@

var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _span;
import { SourceSpan } from './span';

@@ -27,5 +8,3 @@ export var SpanList = /*#__PURE__*/function () {

_span.set(this, void 0);
__classPrivateFieldSet(this, _span, span);
this._span = span;
}

@@ -44,13 +23,11 @@

_proto.add = function add(offset) {
__classPrivateFieldGet(this, _span).push(offset);
this._span.push(offset);
};
_proto.getRangeOffset = function getRangeOffset(fallback) {
if (__classPrivateFieldGet(this, _span).length === 0) {
if (this._span.length === 0) {
return fallback;
} else {
var first = __classPrivateFieldGet(this, _span)[0];
var last = __classPrivateFieldGet(this, _span)[__classPrivateFieldGet(this, _span).length - 1];
var first = this._span[0];
var last = this._span[this._span.length - 1];
return first.extend(last);

@@ -62,3 +39,2 @@ }

}();
_span = new WeakMap();
export function loc(span) {

@@ -89,2 +65,2 @@ if (Array.isArray(span)) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsU0FBQSxVQUFBLFFBQUEsUUFBQTtBQU9BLFdBQU0sUUFBTjtBQVNFLG9CQUFZLElBQVosRUFBbUM7QUFBQSxRQUF2QixJQUF1QjtBQUF2QixNQUFBLElBQXVCLEdBQW5DLEVBQW1DO0FBQUE7O0FBRm5DLElBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBOztBQUdFLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQTtBQUNEOztBQVhILFdBR0UsS0FIRixHQUdFLGVBQUEsSUFBQSxFQUFvQyxRQUFwQyxFQUFrRjtBQUFBLFFBQTlDLFFBQThDO0FBQTlDLE1BQUEsUUFBOEMsR0FBdkIsVUFBVSxDQUFyRSxZQUFrRjtBQUFBOztBQUNoRixXQUFPLElBQUEsUUFBQSxDQUFhLElBQUksQ0FBSixHQUFBLENBQWIsR0FBYSxDQUFiLEVBQUEsY0FBQSxDQUFQLFFBQU8sQ0FBUDtBQUNELEdBTEg7O0FBQUE7O0FBQUEsU0FhRSxHQWJGLEdBYUUsYUFBRyxNQUFILEVBQXNCO0FBQ3BCLElBQUEsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsSUFBQSxDQUFBLE1BQUE7QUFDRCxHQWZIOztBQUFBLFNBaUJFLGNBakJGLEdBaUJFLHdCQUFjLFFBQWQsRUFBbUM7QUFDakMsUUFBSSxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQSxNQUFBLEtBQUosQ0FBQSxFQUE2QjtBQUMzQixhQUFBLFFBQUE7QUFERixLQUFBLE1BRU87QUFDTCxVQUFJLEtBQUssR0FBRyxzQkFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBWixDQUFZLENBQVo7O0FBQ0EsVUFBSSxJQUFJLEdBQUcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQVcsc0JBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsTUFBQSxHQUF0QixDQUFXLENBQVg7O0FBRUEsYUFBTyxLQUFLLENBQUwsTUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNEO0FBQ0YsR0ExQkg7O0FBQUE7QUFBQTs7QUErQkEsT0FBTSxTQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQWlDO0FBQ3JDLE1BQUksS0FBSyxDQUFMLE9BQUEsQ0FBSixJQUFJLENBQUosRUFBeUI7QUFDdkIsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFoQixDQUFnQixDQUFoQjtBQUNBLFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUosTUFBQSxHQUFoQixDQUFlLENBQWY7QUFFQSxXQUFPLEdBQUcsQ0FBSCxLQUFHLENBQUgsQ0FBQSxNQUFBLENBQWtCLEdBQUcsQ0FBNUIsSUFBNEIsQ0FBckIsQ0FBUDtBQUpGLEdBQUEsTUFLTyxJQUFJLElBQUksWUFBUixVQUFBLEVBQWdDO0FBQ3JDLFdBQUEsSUFBQTtBQURLLEdBQUEsTUFFQTtBQUNMLFdBQU8sSUFBSSxDQUFYLEdBQUE7QUFDRDtBQUNGO0FBSUQsT0FBTSxTQUFBLE9BQUEsQ0FBQSxJQUFBLEVBQTBDO0FBQzlDLE1BQUksS0FBSyxDQUFMLE9BQUEsQ0FBQSxJQUFBLEtBQXVCLElBQUksQ0FBSixNQUFBLEtBQTNCLENBQUEsRUFBOEM7QUFDNUMsV0FBQSxLQUFBO0FBQ0Q7O0FBRUQsU0FBQSxJQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsUUFBQSxDQUFBLFFBQUEsRUFBQSxRQUFBLEVBQXFFO0FBQ3pFLE1BQUksT0FBTyxDQUFYLFFBQVcsQ0FBWCxFQUF1QjtBQUNyQixXQUFPLEdBQUcsQ0FBVixRQUFVLENBQVY7QUFERixHQUFBLE1BRU87QUFDTCxXQUFBLFFBQUE7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHR5cGUgeyBQcmVzZW50QXJyYXkgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4sIExvY2F0ZWRXaXRoU3BhbiB9IGZyb20gJy4vbG9jYXRpb24nO1xuaW1wb3J0IHsgU291cmNlT2Zmc2V0LCBTb3VyY2VTcGFuIH0gZnJvbSAnLi9zcGFuJztcblxuZXhwb3J0IHR5cGUgSGFzU3BhbiA9IFNvdXJjZVNwYW4gfCBMb2NhdGVkV2l0aFNwYW4gfCBQcmVzZW50QXJyYXk8TG9jYXRlZFdpdGhTcGFuPjtcbmV4cG9ydCB0eXBlIE1heWJlSGFzU3BhbiA9IFNvdXJjZVNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbiB8IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuW10gfCBudWxsO1xuXG5leHBvcnQgdHlwZSBUb1NvdXJjZU9mZnNldCA9IG51bWJlciB8IFNvdXJjZU9mZnNldDtcblxuZXhwb3J0IGNsYXNzIFNwYW5MaXN0IHtcbiAgc3RhdGljIHJhbmdlKHNwYW46IFByZXNlbnRBcnJheTxIYXNTb3VyY2VTcGFuPik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbjtcbiAgc3RhdGljIHJhbmdlKHNwYW46IEhhc1NvdXJjZVNwYW5bXSwgZmFsbGJhY2s6IFNvdXJjZVNwYW4gPSBTb3VyY2VTcGFuLk5PTl9FWElTVEVOVCk6IFNvdXJjZVNwYW4ge1xuICAgIHJldHVybiBuZXcgU3Bhbkxpc3Qoc3Bhbi5tYXAobG9jKSkuZ2V0UmFuZ2VPZmZzZXQoZmFsbGJhY2spO1xuICB9XG5cbiAgI3NwYW46IFNvdXJjZVNwYW5bXTtcblxuICBjb25zdHJ1Y3RvcihzcGFuOiBTb3VyY2VTcGFuW10gPSBbXSkge1xuICAgIHRoaXMuI3NwYW4gPSBzcGFuO1xuICB9XG5cbiAgYWRkKG9mZnNldDogU291cmNlU3Bhbik6IHZvaWQge1xuICAgIHRoaXMuI3NwYW4ucHVzaChvZmZzZXQpO1xuICB9XG5cbiAgZ2V0UmFuZ2VPZmZzZXQoZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgICBpZiAodGhpcy4jc3Bhbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGZpcnN0ID0gdGhpcy4jc3BhblswXTtcbiAgICAgIGxldCBsYXN0ID0gdGhpcy4jc3Bhblt0aGlzLiNzcGFuLmxlbmd0aCAtIDFdO1xuXG4gICAgICByZXR1cm4gZmlyc3QuZXh0ZW5kKGxhc3QpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBIYXNTb3VyY2VTcGFuID0geyBsb2M6IFNvdXJjZVNwYW4gfSB8IFNvdXJjZVNwYW4gfCBbSGFzU291cmNlU3BhbiwgLi4uSGFzU291cmNlU3BhbltdXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxvYyhzcGFuOiBIYXNTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNwYW4pKSB7XG4gICAgbGV0IGZpcnN0ID0gc3BhblswXTtcbiAgICBsZXQgbGFzdCA9IHNwYW5bc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiBsb2MoZmlyc3QpLmV4dGVuZChsb2MobGFzdCkpO1xuICB9IGVsc2UgaWYgKHNwYW4gaW5zdGFuY2VvZiBTb3VyY2VTcGFuKSB7XG4gICAgcmV0dXJuIHNwYW47XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNwYW4ubG9jO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIE1heWJlSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgTWF5YmVIYXNTb3VyY2VTcGFuW107XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTcGFuKHNwYW46IE1heWJlSGFzU291cmNlU3Bhbik6IHNwYW4gaXMgSGFzU291cmNlU3BhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNwYW4pICYmIHNwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXliZUxvYyhsb2NhdGlvbjogTWF5YmVIYXNTb3VyY2VTcGFuLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoaGFzU3Bhbihsb2NhdGlvbikpIHtcbiAgICByZXR1cm4gbG9jKGxvY2F0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxTQUFBLFVBQUEsUUFBQSxRQUFBO0FBT0EsV0FBTSxRQUFOO0FBU0Usb0JBQVksSUFBWixFQUFtQztBQUFBLFFBQXZCLElBQXVCO0FBQXZCLE1BQUEsSUFBdUIsR0FBbkMsRUFBbUM7QUFBQTs7QUFDakMsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNEOztBQVhILFdBR0UsS0FIRixHQUdFLGVBQUEsSUFBQSxFQUFvQyxRQUFwQyxFQUFrRjtBQUFBLFFBQTlDLFFBQThDO0FBQTlDLE1BQUEsUUFBOEMsR0FBdkIsVUFBVSxDQUFyRSxZQUFrRjtBQUFBOztBQUNoRixXQUFPLElBQUEsUUFBQSxDQUFhLElBQUksQ0FBSixHQUFBLENBQWIsR0FBYSxDQUFiLEVBQUEsY0FBQSxDQUFQLFFBQU8sQ0FBUDtBQUNELEdBTEg7O0FBQUE7O0FBQUEsU0FhRSxHQWJGLEdBYUUsYUFBRyxNQUFILEVBQXNCO0FBQ3BCLFNBQUEsS0FBQSxDQUFBLElBQUEsQ0FBQSxNQUFBO0FBQ0QsR0FmSDs7QUFBQSxTQWlCRSxjQWpCRixHQWlCRSx3QkFBYyxRQUFkLEVBQW1DO0FBQ2pDLFFBQUksS0FBQSxLQUFBLENBQUEsTUFBQSxLQUFKLENBQUEsRUFBNkI7QUFDM0IsYUFBQSxRQUFBO0FBREYsS0FBQSxNQUVPO0FBQ0wsVUFBSSxLQUFLLEdBQUcsS0FBQSxLQUFBLENBQVosQ0FBWSxDQUFaO0FBQ0EsVUFBSSxJQUFJLEdBQUcsS0FBQSxLQUFBLENBQVcsS0FBQSxLQUFBLENBQUEsTUFBQSxHQUF0QixDQUFXLENBQVg7QUFFQSxhQUFPLEtBQUssQ0FBTCxNQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7QUFDRixHQTFCSDs7QUFBQTtBQUFBO0FBK0JBLE9BQU0sU0FBQSxHQUFBLENBQUEsSUFBQSxFQUFpQztBQUNyQyxNQUFJLEtBQUssQ0FBTCxPQUFBLENBQUosSUFBSSxDQUFKLEVBQXlCO0FBQ3ZCLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFDQSxRQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFKLE1BQUEsR0FBaEIsQ0FBZSxDQUFmO0FBRUEsV0FBTyxHQUFHLENBQUgsS0FBRyxDQUFILENBQUEsTUFBQSxDQUFrQixHQUFHLENBQTVCLElBQTRCLENBQXJCLENBQVA7QUFKRixHQUFBLE1BS08sSUFBSSxJQUFJLFlBQVIsVUFBQSxFQUFnQztBQUNyQyxXQUFBLElBQUE7QUFESyxHQUFBLE1BRUE7QUFDTCxXQUFPLElBQUksQ0FBWCxHQUFBO0FBQ0Q7QUFDRjtBQUlELE9BQU0sU0FBQSxPQUFBLENBQUEsSUFBQSxFQUEwQztBQUM5QyxNQUFJLEtBQUssQ0FBTCxPQUFBLENBQUEsSUFBQSxLQUF1QixJQUFJLENBQUosTUFBQSxLQUEzQixDQUFBLEVBQThDO0FBQzVDLFdBQUEsS0FBQTtBQUNEOztBQUVELFNBQUEsSUFBQTtBQUNEO0FBRUQsT0FBTSxTQUFBLFFBQUEsQ0FBQSxRQUFBLEVBQUEsUUFBQSxFQUFxRTtBQUN6RSxNQUFJLE9BQU8sQ0FBWCxRQUFXLENBQVgsRUFBdUI7QUFDckIsV0FBTyxHQUFHLENBQVYsUUFBVSxDQUFWO0FBREYsR0FBQSxNQUVPO0FBQ0wsV0FBQSxRQUFBO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB0eXBlIHsgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuLCBMb2NhdGVkV2l0aFNwYW4gfSBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4vc3Bhbic7XG5cbmV4cG9ydCB0eXBlIEhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhTcGFuIHwgUHJlc2VudEFycmF5PExvY2F0ZWRXaXRoU3Bhbj47XG5leHBvcnQgdHlwZSBNYXliZUhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbltdIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgVG9Tb3VyY2VPZmZzZXQgPSBudW1iZXIgfCBTb3VyY2VPZmZzZXQ7XG5cbmV4cG9ydCBjbGFzcyBTcGFuTGlzdCB7XG4gIHN0YXRpYyByYW5nZShzcGFuOiBQcmVzZW50QXJyYXk8SGFzU291cmNlU3Bhbj4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuID0gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNwYW5MaXN0KHNwYW4ubWFwKGxvYykpLmdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrKTtcbiAgfVxuXG4gIF9zcGFuOiBTb3VyY2VTcGFuW107XG5cbiAgY29uc3RydWN0b3Ioc3BhbjogU291cmNlU3BhbltdID0gW10pIHtcbiAgICB0aGlzLl9zcGFuID0gc3BhbjtcbiAgfVxuXG4gIGFkZChvZmZzZXQ6IFNvdXJjZVNwYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9zcGFuLnB1c2gob2Zmc2V0KTtcbiAgfVxuXG4gIGdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHRoaXMuX3NwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdCA9IHRoaXMuX3NwYW5bMF07XG4gICAgICBsZXQgbGFzdCA9IHRoaXMuX3NwYW5bdGhpcy5fc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgICAgcmV0dXJuIGZpcnN0LmV4dGVuZChsYXN0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgW0hhc1NvdXJjZVNwYW4sIC4uLkhhc1NvdXJjZVNwYW5bXV07XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2Moc3BhbjogSGFzU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSkge1xuICAgIGxldCBmaXJzdCA9IHNwYW5bMF07XG4gICAgbGV0IGxhc3QgPSBzcGFuW3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gbG9jKGZpcnN0KS5leHRlbmQobG9jKGxhc3QpKTtcbiAgfSBlbHNlIGlmIChzcGFuIGluc3RhbmNlb2YgU291cmNlU3Bhbikge1xuICAgIHJldHVybiBzcGFuO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGFuLmxvYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXliZUhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IE1heWJlSGFzU291cmNlU3BhbltdO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3BhbihzcGFuOiBNYXliZUhhc1NvdXJjZVNwYW4pOiBzcGFuIGlzIEhhc1NvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSAmJiBzcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVMb2MobG9jYXRpb246IE1heWJlSGFzU291cmNlU3BhbiwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKGhhc1NwYW4obG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvYyhsb2NhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9

@@ -5,25 +5,4 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var __classPrivateFieldSet = this && this.__classPrivateFieldSet || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = this && this.__classPrivateFieldGet || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _hasEval;
import { dict } from '@glimmer/util';

@@ -66,5 +45,3 @@ import { isUpperCase } from './utils';

_this2.usedTemplateLocals = [];
_hasEval.set(_assertThisInitialized(_this2), false);
_this2._hasEval = false;
return _this2;

@@ -80,3 +57,3 @@ }

_proto2.setHasEval = function setHasEval() {
__classPrivateFieldSet(this, _hasEval, true);
this._hasEval = true;
};

@@ -163,3 +140,3 @@

get: function get() {
return __classPrivateFieldGet(this, _hasEval);
return this._hasEval;
}

@@ -170,3 +147,2 @@ }]);

}(SymbolTable);
_hasEval = new WeakMap();
export var BlockSymbolTable = /*#__PURE__*/function (_SymbolTable2) {

@@ -242,2 +218,2 @@ _inheritsLoose(BlockSymbolTable, _SymbolTable2);

}(SymbolTable);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLFNBQUEsSUFBQSxRQUFBLGVBQUE7QUFHQSxTQUFBLFdBQUEsUUFBQSxTQUFBO0FBRUEsV0FBTSxXQUFOO0FBQUE7O0FBQUEsY0FDRSxHQURGLEdBQ0UsYUFBQSxNQUFBLEVBQUEsc0JBQUEsRUFFbUQ7QUFFakQsV0FBTyxJQUFBLGtCQUFBLENBQUEsTUFBQSxFQUFQLHNCQUFPLENBQVA7QUFDRCxHQU5IOztBQUFBOztBQUFBLFNBcUJFLEtBckJGLEdBcUJFLGVBQUssTUFBTCxFQUFzQjtBQUFBOztBQUNwQixRQUFJLE9BQU8sR0FBRyxNQUFNLENBQU4sR0FBQSxDQUFZLFVBQUEsSUFBRDtBQUFBLGFBQVUsS0FBQSxDQUFBLFFBQUEsQ0FBbkMsSUFBbUMsQ0FBVjtBQUFBLEtBQVgsQ0FBZDtBQUNBLFdBQU8sSUFBQSxnQkFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQVAsT0FBTyxDQUFQO0FBQ0QsR0F4Qkg7O0FBQUE7QUFBQTtBQTJCQSxXQUFNLGtCQUFOO0FBQUE7O0FBQ0UsOEJBQUEsY0FBQSxFQUFBLHNCQUFBLEVBRTJEO0FBQUE7O0FBRXpEO0FBSFEsV0FBQSxjQUFBLEdBQUEsY0FBQTtBQUNBLFdBQUEsc0JBQUEsR0FBQSxzQkFBQTtBQUtILFdBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxXQUFBLE1BQUEsR0FBQSxFQUFBO0FBRUMsV0FBQSxJQUFBLEdBQUEsQ0FBQTtBQUNBLFdBQUEsS0FBQSxHQUFRLElBQVIsRUFBQTtBQUNBLFdBQUEsTUFBQSxHQUFTLElBQVQsRUFBQTtBQUNBLFdBQUEsa0JBQUEsR0FBQSxFQUFBOztBQUVSLElBQUEsUUFBQSxDQUFBLEdBQUEsaUNBQUEsS0FBQTs7QUFiMkQ7QUFHMUQ7O0FBTkg7O0FBQUEsVUFrQkUscUJB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QUFDRCxHQXRCSDs7QUFBQSxVQXdCRSxXQXhCRixHQXdCRSx1QkFBVztBQUNULFFBQUksTUFBTSxHQUFHLEtBQWIsWUFBYSxFQUFiO0FBQ0EsV0FBTyxNQUFNLENBQU4sSUFBQSxDQUFBLE1BQUEsRUFBQSxHQUFBLENBQXlCLFVBQUEsTUFBRDtBQUFBLGFBQVksTUFBTSxDQUFqRCxNQUFpRCxDQUFsQjtBQUFBLEtBQXhCLENBQVA7QUFDRCxHQTNCSDs7QUFBQSxVQTZCRSxVQTdCRixHQTZCRSxzQkFBVTtBQUNSLFNBQUEsTUFBQSxDQUFBLFVBQUE7QUFDRCxHQS9CSDs7QUFBQSxVQWlDRSxZQWpDRixHQWlDRSxzQkFBWSxJQUFaLEVBQVksVUFBWixFQUE4RDtBQUM1RCxXQUFPLEtBQUEsTUFBQSxDQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQVAsVUFBTyxDQUFQO0FBQ0QsR0FuQ0g7O0FBQUEsVUFxQ0UsYUFyQ0YsR0FxQ0UsdUJBQWEsSUFBYixFQUEwQjtBQUN4QixXQUFPLEtBQUEsTUFBQSxDQUFBLGFBQUEsQ0FBUCxJQUFPLENBQVA7QUFDRCxHQXZDSDs7QUFBQSxVQXlDRSxhQXpDRixHQXlDRSx1QkFBYSxJQUFiLEVBQTBCO0FBQ3hCLFdBQU8sS0FBQSxNQUFBLENBQUEsYUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNELEdBM0NIOztBQUFBLFVBNkNFLFFBN0NGLEdBNkNFLGtCQUFRLFVBQVIsRUFBMkI7QUFDekIsV0FBTyxLQUFBLE1BQUEsQ0FBQSxRQUFBLENBQVAsVUFBTyxDQUFQO0FBQ0QsR0EvQ0g7O0FBQUE7QUFBQTtBQUFBLHdCQUtZO0FBQ1IsYUFBTyxLQUFQLE9BQUE7QUFDRDtBQVBIOztBQUFBO0FBQUEsRUFBTSxXQUFOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29yZSwgRGljdCwgU2V4cE9wY29kZXMgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuaW1wb3J0IHsgQVNUdjIgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBpc1VwcGVyQ2FzZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3ltYm9sVGFibGUge1xuICBzdGF0aWMgdG9wKFxuICAgIGxvY2Fsczogc3RyaW5nW10sXG4gICAgY3VzdG9taXplQ29tcG9uZW50TmFtZTogKGlucHV0OiBzdHJpbmcpID0+IHN0cmluZ1xuICApOiBQcm9ncmFtU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBuZXcgUHJvZ3JhbVN5bWJvbFRhYmxlKGxvY2FscywgY3VzdG9taXplQ29tcG9uZW50TmFtZSk7XG4gIH1cblxuICBhYnN0cmFjdCBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0KG5hbWU6IHN0cmluZyk6IFtzeW1ib2w6IG51bWJlciwgaXNSb290OiBib29sZWFuXTtcblxuICBhYnN0cmFjdCBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+O1xuICBhYnN0cmFjdCBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvO1xuXG4gIGFic3RyYWN0IGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZU5hbWVkKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlcjtcblxuICBhYnN0cmFjdCBzZXRIYXNFdmFsKCk6IHZvaWQ7XG5cbiAgY2hpbGQobG9jYWxzOiBzdHJpbmdbXSk6IEJsb2NrU3ltYm9sVGFibGUge1xuICAgIGxldCBzeW1ib2xzID0gbG9jYWxzLm1hcCgobmFtZSkgPT4gdGhpcy5hbGxvY2F0ZShuYW1lKSk7XG4gICAgcmV0dXJuIG5ldyBCbG9ja1N5bWJvbFRhYmxlKHRoaXMsIGxvY2Fscywgc3ltYm9scyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByb2dyYW1TeW1ib2xUYWJsZSBleHRlbmRzIFN5bWJvbFRhYmxlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZUxvY2Fsczogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSBjdXN0b21pemVDb21wb25lbnROYW1lOiAoaW5wdXQ6IHN0cmluZykgPT4gc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc3ltYm9sczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHVwdmFyczogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIHNpemUgPSAxO1xuICBwcml2YXRlIG5hbWVkID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgYmxvY2tzID0gZGljdDxudW1iZXI+KCk7XG4gIHByaXZhdGUgdXNlZFRlbXBsYXRlTG9jYWxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICNoYXNFdmFsID0gZmFsc2U7XG5cbiAgZ2V0VXNlZFRlbXBsYXRlTG9jYWxzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHM7XG4gIH1cblxuICBzZXRIYXNFdmFsKCk6IHZvaWQge1xuICAgIHRoaXMuI2hhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGhhc0V2YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2hhc0V2YWw7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVMb2NhbHMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogW251bWJlciwgYm9vbGVhbl0ge1xuICAgIGxldCBpbmRleCA9IHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmluZGV4T2YobmFtZSk7XG5cbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICByZXR1cm4gW2luZGV4LCB0cnVlXTtcbiAgICB9XG5cbiAgICBpbmRleCA9IHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLmxlbmd0aDtcbiAgICB0aGlzLnVzZWRUZW1wbGF0ZUxvY2Fscy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiBbaW5kZXgsIHRydWVdO1xuICB9XG5cbiAgZ2V0TG9jYWxzTWFwKCk6IERpY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIGRpY3QoKTtcbiAgfVxuXG4gIGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm8ge1xuICAgIGxldCBsb2NhbHMgPSB0aGlzLmdldExvY2Fsc01hcCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2NhbHMpLm1hcCgoc3ltYm9sKSA9PiBsb2NhbHNbc3ltYm9sXSk7XG4gIH1cblxuICBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlciB7XG4gICAgLy8gSWYgdGhlIG5hbWUgaW4gcXVlc3Rpb24gaXMgYW4gdXBwZXJjYXNlIChpLmUuIGFuZ2xlLWJyYWNrZXQpIGNvbXBvbmVudCBpbnZvY2F0aW9uLCBydW5cbiAgICAvLyB0aGUgb3B0aW9uYWwgYGN1c3RvbWl6ZUNvbXBvbmVudE5hbWVgIGZ1bmN0aW9uIHByb3ZpZGVkIHRvIHRoZSBwcmVjb21waWxlci5cbiAgICBpZiAoXG4gICAgICByZXNvbHV0aW9uLnJlc29sdXRpb24oKSA9PT0gU2V4cE9wY29kZXMuR2V0RnJlZUFzQ29tcG9uZW50SGVhZCAmJlxuICAgICAgcmVzb2x1dGlvbi5pc0FuZ2xlQnJhY2tldCAmJlxuICAgICAgaXNVcHBlckNhc2UobmFtZSlcbiAgICApIHtcbiAgICAgIG5hbWUgPSB0aGlzLmN1c3RvbWl6ZUNvbXBvbmVudE5hbWUobmFtZSk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gdGhpcy51cHZhcnMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBpbmRleCA9IHRoaXMudXB2YXJzLmxlbmd0aDtcbiAgICB0aGlzLnVwdmFycy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgbmFtZWQgPSB0aGlzLm5hbWVkW25hbWVdO1xuXG4gICAgaWYgKCFuYW1lZCkge1xuICAgICAgbmFtZWQgPSB0aGlzLm5hbWVkW25hbWVdID0gdGhpcy5hbGxvY2F0ZShuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZWQ7XG4gIH1cblxuICBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKG5hbWUgPT09ICdpbnZlcnNlJykge1xuICAgICAgbmFtZSA9ICdlbHNlJztcbiAgICB9XG5cbiAgICBsZXQgYmxvY2sgPSB0aGlzLmJsb2Nrc1tuYW1lXTtcblxuICAgIGlmICghYmxvY2spIHtcbiAgICAgIGJsb2NrID0gdGhpcy5ibG9ja3NbbmFtZV0gPSB0aGlzLmFsbG9jYXRlKGAmJHtuYW1lfWApO1xuICAgIH1cblxuICAgIHJldHVybiBibG9jaztcbiAgfVxuXG4gIGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgdGhpcy5zeW1ib2xzLnB1c2goaWRlbnRpZmllcik7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSsrO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja1N5bWJvbFRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudDogU3ltYm9sVGFibGUsIHB1YmxpYyBzeW1ib2xzOiBzdHJpbmdbXSwgcHVibGljIHNsb3RzOiBudW1iZXJbXSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgbG9jYWxzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xzO1xuICB9XG5cbiAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbHMuaW5kZXhPZihuYW1lKSAhPT0gLTEgfHwgdGhpcy5wYXJlbnQuaGFzKG5hbWUpO1xuICB9XG5cbiAgZ2V0KG5hbWU6IHN0cmluZyk6IFtudW1iZXIsIGJvb2xlYW5dIHtcbiAgICBsZXQgc2xvdCA9IHRoaXMuc3ltYm9scy5pbmRleE9mKG5hbWUpO1xuICAgIHJldHVybiBzbG90ID09PSAtMSA/IHRoaXMucGFyZW50LmdldChuYW1lKSA6IFt0aGlzLnNsb3RzW3Nsb3RdLCBmYWxzZV07XG4gIH1cblxuICBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+IHtcbiAgICBsZXQgZGljdCA9IHRoaXMucGFyZW50LmdldExvY2Fsc01hcCgpO1xuICAgIHRoaXMuc3ltYm9scy5mb3JFYWNoKChzeW1ib2wpID0+IChkaWN0W3N5bWJvbF0gPSB0aGlzLmdldChzeW1ib2wpWzBdKSk7XG4gICAgcmV0dXJuIGRpY3Q7XG4gIH1cblxuICBnZXRFdmFsSW5mbygpOiBDb3JlLkV2YWxJbmZvIHtcbiAgICBsZXQgbG9jYWxzID0gdGhpcy5nZXRMb2NhbHNNYXAoKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobG9jYWxzKS5tYXAoKHN5bWJvbCkgPT4gbG9jYWxzW3N5bWJvbF0pO1xuICB9XG5cbiAgc2V0SGFzRXZhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudC5zZXRIYXNFdmFsKCk7XG4gIH1cblxuICBhbGxvY2F0ZUZyZWUobmFtZTogc3RyaW5nLCByZXNvbHV0aW9uOiBBU1R2Mi5GcmVlVmFyUmVzb2x1dGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlRnJlZShuYW1lLCByZXNvbHV0aW9uKTtcbiAgfVxuXG4gIGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVOYW1lZChuYW1lKTtcbiAgfVxuXG4gIGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVCbG9jayhuYW1lKTtcbiAgfVxuXG4gIGFsbG9jYXRlKGlkZW50aWZpZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LmFsbG9jYXRlKGlkZW50aWZpZXIpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc3ltYm9sLXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLFNBQUEsSUFBQSxRQUFBLGVBQUE7QUFHQSxTQUFBLFdBQUEsUUFBQSxTQUFBO0FBRUEsV0FBTSxXQUFOO0FBQUE7O0FBQUEsY0FDRSxHQURGLEdBQ0UsYUFBQSxNQUFBLEVBQUEsc0JBQUEsRUFFbUQ7QUFFakQsV0FBTyxJQUFBLGtCQUFBLENBQUEsTUFBQSxFQUFQLHNCQUFPLENBQVA7QUFDRCxHQU5IOztBQUFBOztBQUFBLFNBcUJFLEtBckJGLEdBcUJFLGVBQUssTUFBTCxFQUFzQjtBQUFBOztBQUNwQixRQUFJLE9BQU8sR0FBRyxNQUFNLENBQU4sR0FBQSxDQUFZLFVBQUEsSUFBRDtBQUFBLGFBQVUsS0FBQSxDQUFBLFFBQUEsQ0FBbkMsSUFBbUMsQ0FBVjtBQUFBLEtBQVgsQ0FBZDtBQUNBLFdBQU8sSUFBQSxnQkFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQVAsT0FBTyxDQUFQO0FBQ0QsR0F4Qkg7O0FBQUE7QUFBQTtBQTJCQSxXQUFNLGtCQUFOO0FBQUE7O0FBQ0UsOEJBQUEsY0FBQSxFQUFBLHNCQUFBLEVBRTJEO0FBQUE7O0FBRXpEO0FBSFEsV0FBQSxjQUFBLEdBQUEsY0FBQTtBQUNBLFdBQUEsc0JBQUEsR0FBQSxzQkFBQTtBQUtILFdBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxXQUFBLE1BQUEsR0FBQSxFQUFBO0FBRUMsV0FBQSxJQUFBLEdBQUEsQ0FBQTtBQUNBLFdBQUEsS0FBQSxHQUFRLElBQVIsRUFBQTtBQUNBLFdBQUEsTUFBQSxHQUFTLElBQVQsRUFBQTtBQUNBLFdBQUEsa0JBQUEsR0FBQSxFQUFBO0FBRVIsV0FBQSxRQUFBLEdBQUEsS0FBQTtBQWIyRDtBQUcxRDs7QUFOSDs7QUFBQSxVQWtCRSxxQkFsQkYsR0FrQkUsaUNBQXFCO0FBQ25CLFdBQU8sS0FBUCxr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QUFPLE1BQU0sQ0FBTixJQUFBLENBQUEsTUFBQSxFQUFBLEdBQUEsQ0FBeUIsVUFBQSxNQUFEO0FBQUEsYUFBWSxNQUFNLENBQWpELE1BQWlELENBQWxCO0FBQUEsS0FBeEIsQ0FBUDtBQUNELEdBM0JIOztBQUFBLFVBNkJFLFVBN0JGLEdBNkJFLHNCQUFVO0FBQ1IsU0FBQSxNQUFBLENBQUEsVUFBQTtBQUNELEdBL0JIOztBQUFBLFVBaUNFLFlBakNGLEdBaUNFLHNCQUFZLElBQVosRUFBWSxVQUFaLEVBQThEO0FBQzVELFdBQU8sS0FBQSxNQUFBLENBQUEsWUFBQSxDQUFBLElBQUEsRUFBUCxVQUFPLENBQVA7QUFDRCxHQW5DSDs7QUFBQSxVQXFDRSxhQXJDRixHQXFDRSx1QkFBYSxJQUFiLEVBQTBCO0FBQ3hCLFdBQU8sS0FBQSxNQUFBLENBQUEsYUFBQSxDQUFQLElBQU8sQ0FBUDtBQUNELEdBdkNIOztBQUFBLFVBeUNFLGFBekNGLEdBeUNFLHVCQUFhLElBQWIsRUFBMEI7QUFDeEIsV0FBTyxLQUFBLE1BQUEsQ0FBQSxhQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0QsR0EzQ0g7O0FBQUEsVUE2Q0UsUUE3Q0YsR0E2Q0Usa0JBQVEsVUFBUixFQUEyQjtBQUN6QixXQUFPLEtBQUEsTUFBQSxDQUFBLFFBQUEsQ0FBUCxVQUFPLENBQVA7QUFDRCxHQS9DSDs7QUFBQTtBQUFBO0FBQUEsd0JBS1k7QUFDUixhQUFPLEtBQVAsT0FBQTtBQUNEO0FBUEg7O0FBQUE7QUFBQSxFQUFNLFdBQU4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlLCBEaWN0LCBTZXhwT3Bjb2RlcyB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBBU1R2MiB9IGZyb20gJy4uJztcbmltcG9ydCB7IGlzVXBwZXJDYXNlIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTeW1ib2xUYWJsZSB7XG4gIHN0YXRpYyB0b3AoXG4gICAgbG9jYWxzOiBzdHJpbmdbXSxcbiAgICBjdXN0b21pemVDb21wb25lbnROYW1lOiAoaW5wdXQ6IHN0cmluZykgPT4gc3RyaW5nXG4gICk6IFByb2dyYW1TeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyBQcm9ncmFtU3ltYm9sVGFibGUobG9jYWxzLCBjdXN0b21pemVDb21wb25lbnROYW1lKTtcbiAgfVxuXG4gIGFic3RyYWN0IGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuICBhYnN0cmFjdCBnZXQobmFtZTogc3RyaW5nKTogW3N5bWJvbDogbnVtYmVyLCBpc1Jvb3Q6IGJvb2xlYW5dO1xuXG4gIGFic3RyYWN0IGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj47XG4gIGFic3RyYWN0IGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm87XG5cbiAgYWJzdHJhY3QgYWxsb2NhdGVGcmVlKG5hbWU6IHN0cmluZywgcmVzb2x1dGlvbjogQVNUdjIuRnJlZVZhclJlc29sdXRpb24pOiBudW1iZXI7XG4gIGFic3RyYWN0IGFsbG9jYXRlTmFtZWQobmFtZTogc3RyaW5nKTogbnVtYmVyO1xuICBhYnN0cmFjdCBhbGxvY2F0ZUJsb2NrKG5hbWU6IHN0cmluZyk6IG51bWJlcjtcbiAgYWJzdHJhY3QgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IHNldEhhc0V2YWwoKTogdm9pZDtcblxuICBjaGlsZChsb2NhbHM6IHN0cmluZ1tdKTogQmxvY2tTeW1ib2xUYWJsZSB7XG4gICAgbGV0IHN5bWJvbHMgPSBsb2NhbHMubWFwKChuYW1lKSA9PiB0aGlzLmFsbG9jYXRlKG5hbWUpKTtcbiAgICByZXR1cm4gbmV3IEJsb2NrU3ltYm9sVGFibGUodGhpcywgbG9jYWxzLCBzeW1ib2xzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvZ3JhbVN5bWJvbFRhYmxlIGV4dGVuZHMgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbXBsYXRlTG9jYWxzOiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIGN1c3RvbWl6ZUNvbXBvbmVudE5hbWU6IChpbnB1dDogc3RyaW5nKSA9PiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW1ib2xzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgdXB2YXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2l6ZSA9IDE7XG4gIHByaXZhdGUgbmFtZWQgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSBibG9ja3MgPSBkaWN0PG51bWJlcj4oKTtcbiAgcHJpdmF0ZSB1c2VkVGVtcGxhdGVMb2NhbHM6IHN0cmluZ1tdID0gW107XG5cbiAgX2hhc0V2YWwgPSBmYWxzZTtcblxuICBnZXRVc2VkVGVtcGxhdGVMb2NhbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnVzZWRUZW1wbGF0ZUxvY2FscztcbiAgfVxuXG4gIHNldEhhc0V2YWwoKTogdm9pZCB7XG4gICAgdGhpcy5faGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICBnZXQgaGFzRXZhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRXZhbDtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZUxvY2Fscy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGdldChuYW1lOiBzdHJpbmcpOiBbbnVtYmVyLCBib29sZWFuXSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMuaW5kZXhPZihuYW1lKTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBbaW5kZXgsIHRydWVdO1xuICAgIH1cblxuICAgIGluZGV4ID0gdGhpcy51c2VkVGVtcGxhdGVMb2NhbHMubGVuZ3RoO1xuICAgIHRoaXMudXNlZFRlbXBsYXRlTG9jYWxzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIFtpbmRleCwgdHJ1ZV07XG4gIH1cblxuICBnZXRMb2NhbHNNYXAoKTogRGljdDxudW1iZXI+IHtcbiAgICByZXR1cm4gZGljdCgpO1xuICB9XG5cbiAgZ2V0RXZhbEluZm8oKTogQ29yZS5FdmFsSW5mbyB7XG4gICAgbGV0IGxvY2FscyA9IHRoaXMuZ2V0TG9jYWxzTWFwKCk7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGxvY2FscykubWFwKChzeW1ib2wpID0+IGxvY2Fsc1tzeW1ib2xdKTtcbiAgfVxuXG4gIGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyIHtcbiAgICAvLyBJZiB0aGUgbmFtZSBpbiBxdWVzdGlvbiBpcyBhbiB1cHBlcmNhc2UgKGkuZS4gYW5nbGUtYnJhY2tldCkgY29tcG9uZW50IGludm9jYXRpb24sIHJ1blxuICAgIC8vIHRoZSBvcHRpb25hbCBgY3VzdG9taXplQ29tcG9uZW50TmFtZWAgZnVuY3Rpb24gcHJvdmlkZWQgdG8gdGhlIHByZWNvbXBpbGVyLlxuICAgIGlmIChcbiAgICAgIHJlc29sdXRpb24ucmVzb2x1dGlvbigpID09PSBTZXhwT3Bjb2Rlcy5HZXRGcmVlQXNDb21wb25lbnRIZWFkICYmXG4gICAgICByZXNvbHV0aW9uLmlzQW5nbGVCcmFja2V0ICYmXG4gICAgICBpc1VwcGVyQ2FzZShuYW1lKVxuICAgICkge1xuICAgICAgbmFtZSA9IHRoaXMuY3VzdG9taXplQ29tcG9uZW50TmFtZShuYW1lKTtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSB0aGlzLnVwdmFycy5pbmRleE9mKG5hbWUpO1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIGluZGV4ID0gdGhpcy51cHZhcnMubGVuZ3RoO1xuICAgIHRoaXMudXB2YXJzLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWRbbmFtZV07XG5cbiAgICBpZiAoIW5hbWVkKSB7XG4gICAgICBuYW1lZCA9IHRoaXMubmFtZWRbbmFtZV0gPSB0aGlzLmFsbG9jYXRlKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBuYW1lZDtcbiAgfVxuXG4gIGFsbG9jYXRlQmxvY2sobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAobmFtZSA9PT0gJ2ludmVyc2UnKSB7XG4gICAgICBuYW1lID0gJ2Vsc2UnO1xuICAgIH1cblxuICAgIGxldCBibG9jayA9IHRoaXMuYmxvY2tzW25hbWVdO1xuXG4gICAgaWYgKCFibG9jaykge1xuICAgICAgYmxvY2sgPSB0aGlzLmJsb2Nrc1tuYW1lXSA9IHRoaXMuYWxsb2NhdGUoYCYke25hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJsb2NrO1xuICB9XG5cbiAgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB0aGlzLnN5bWJvbHMucHVzaChpZGVudGlmaWVyKTtcbiAgICByZXR1cm4gdGhpcy5zaXplKys7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrU3ltYm9sVGFibGUgZXh0ZW5kcyBTeW1ib2xUYWJsZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50OiBTeW1ib2xUYWJsZSwgcHVibGljIHN5bWJvbHM6IHN0cmluZ1tdLCBwdWJsaWMgc2xvdHM6IG51bWJlcltdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBsb2NhbHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbHM7XG4gIH1cblxuICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9scy5pbmRleE9mKG5hbWUpICE9PSAtMSB8fCB0aGlzLnBhcmVudC5oYXMobmFtZSk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogW251bWJlciwgYm9vbGVhbl0ge1xuICAgIGxldCBzbG90ID0gdGhpcy5zeW1ib2xzLmluZGV4T2YobmFtZSk7XG4gICAgcmV0dXJuIHNsb3QgPT09IC0xID8gdGhpcy5wYXJlbnQuZ2V0KG5hbWUpIDogW3RoaXMuc2xvdHNbc2xvdF0sIGZhbHNlXTtcbiAgfVxuXG4gIGdldExvY2Fsc01hcCgpOiBEaWN0PG51bWJlcj4ge1xuICAgIGxldCBkaWN0ID0gdGhpcy5wYXJlbnQuZ2V0TG9jYWxzTWFwKCk7XG4gICAgdGhpcy5zeW1ib2xzLmZvckVhY2goKHN5bWJvbCkgPT4gKGRpY3Rbc3ltYm9sXSA9IHRoaXMuZ2V0KHN5bWJvbClbMF0pKTtcbiAgICByZXR1cm4gZGljdDtcbiAgfVxuXG4gIGdldEV2YWxJbmZvKCk6IENvcmUuRXZhbEluZm8ge1xuICAgIGxldCBsb2NhbHMgPSB0aGlzLmdldExvY2Fsc01hcCgpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhsb2NhbHMpLm1hcCgoc3ltYm9sKSA9PiBsb2NhbHNbc3ltYm9sXSk7XG4gIH1cblxuICBzZXRIYXNFdmFsKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50LnNldEhhc0V2YWwoKTtcbiAgfVxuXG4gIGFsbG9jYXRlRnJlZShuYW1lOiBzdHJpbmcsIHJlc29sdXRpb246IEFTVHYyLkZyZWVWYXJSZXNvbHV0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGVGcmVlKG5hbWUsIHJlc29sdXRpb24pO1xuICB9XG5cbiAgYWxsb2NhdGVOYW1lZChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZU5hbWVkKG5hbWUpO1xuICB9XG5cbiAgYWxsb2NhdGVCbG9jayhuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hbGxvY2F0ZUJsb2NrKG5hbWUpO1xuICB9XG5cbiAgYWxsb2NhdGUoaWRlbnRpZmllcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuYWxsb2NhdGUoaWRlbnRpZmllcik7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -5,8 +5,4 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

import RootTransformScope from './scope';
var WalkerPath = /*#__PURE__*/function () {
function WalkerPath(node, parent, parentKey) {
var _this = this;
if (parent === void 0) {

@@ -23,14 +19,2 @@ parent = null;

this.parentKey = parentKey;
this.scope = parent ? parent.scope.child(node) : new RootTransformScope(node); // Consume in scope values
if (node.type === 'PathExpression') {
this.scope.useLocal(node);
}
if (node.type === 'ElementNode') {
this.scope.useLocal(node);
node.children.forEach(function (node) {
return _this.scope.useLocal(node);
});
}
}

@@ -41,7 +25,7 @@

_proto.parents = function parents() {
var _this2 = this,
var _this = this,
_ref;
return _ref = {}, _ref[Symbol.iterator] = function () {
return new PathParentsIterator(_this2);
return new PathParentsIterator(_this);
}, _ref;

@@ -86,2 +70,2 @@ };

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQUEsa0JBQUEsTUFBQSxTQUFBOztJQUVjLFU7QUFNWixzQkFBQSxJQUFBLEVBRUUsTUFGRixFQUdFLFNBSEYsRUFHaUM7QUFBQTs7QUFBQSxRQUQvQixNQUMrQjtBQUQvQixNQUFBLE1BQytCLEdBSGpDLElBR2lDO0FBQUE7O0FBQUEsUUFBL0IsU0FBK0I7QUFBL0IsTUFBQSxTQUErQixHQUhqQyxJQUdpQztBQUFBOztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLEdBQUcsTUFBTSxDQUFOLEtBQUEsQ0FBQSxLQUFBLENBQUgsSUFBRyxDQUFILEdBQThCLElBQUEsa0JBQUEsQ0FMbEIsSUFLa0IsQ0FBakQsQ0FMK0IsQ0FPL0I7O0FBQ0EsUUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLGdCQUFBLEVBQW9DO0FBQ2xDLFdBQUEsS0FBQSxDQUFBLFFBQUEsQ0FBQSxJQUFBO0FBQ0Q7O0FBRUQsUUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLGFBQUEsRUFBaUM7QUFDL0IsV0FBQSxLQUFBLENBQUEsUUFBQSxDQUFBLElBQUE7QUFFQyxNQUFBLElBQTBCLENBQTFCLFFBQUEsQ0FBQSxPQUFBLENBQTZDLFVBQUEsSUFBRDtBQUFBLGVBQzNDLEtBQUEsQ0FBQSxLQUFBLENBQUEsUUFBQSxDQURELElBQ0MsQ0FEMkM7QUFBQSxPQUE1QztBQUdGO0FBQ0Y7Ozs7U0FNRCxPLEdBQUEsbUJBQU87QUFBQTtBQUFBOztBQUNMLDJCQUNHLE1BQU0sQ0FBUCxRQURGLElBQ3FCLFlBQUs7QUFDdEIsYUFBTyxJQUFBLG1CQUFBLENBQVAsTUFBTyxDQUFQO0FBQ0QsS0FISDtBQUtELEc7Ozs7d0JBVmE7QUFDWixhQUFPLEtBQUEsTUFBQSxHQUFjLEtBQUEsTUFBQSxDQUFkLElBQUEsR0FBUCxJQUFBO0FBQ0Q7Ozs7OztTQWhDVyxVOztJQTJDZCxtQjtBQUdFLCtCQUFBLElBQUEsRUFBd0M7QUFDdEMsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNEOzs7O1VBRUQsSSxHQUFBLGdCQUFJO0FBQ0YsUUFBSSxLQUFBLElBQUEsQ0FBSixNQUFBLEVBQXNCO0FBQ3BCLFdBQUEsSUFBQSxHQUFZLEtBQUEsSUFBQSxDQUFaLE1BQUE7QUFDQSxhQUFPO0FBQUUsUUFBQSxJQUFJLEVBQU4sS0FBQTtBQUFlLFFBQUEsS0FBSyxFQUFFLEtBQUs7QUFBM0IsT0FBUDtBQUZGLEtBQUEsTUFHTztBQUNMLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixJQUFBO0FBQWMsUUFBQSxLQUFLLEVBQUU7QUFBckIsT0FBUDtBQUNEO0FBQ0YsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4uL3YxL2FwaSc7XG5pbXBvcnQgUm9vdFRyYW5zZm9ybVNjb3BlLCB7IFRyYW5zZm9ybVNjb3BlIH0gZnJvbSAnLi9zY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGtlclBhdGg8TiBleHRlbmRzIEFTVHYxLk5vZGU+IHtcbiAgbm9kZTogTjtcbiAgcGFyZW50OiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+IHwgbnVsbDtcbiAgcGFyZW50S2V5OiBzdHJpbmcgfCBudWxsO1xuICBzY29wZTogVHJhbnNmb3JtU2NvcGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbm9kZTogTixcbiAgICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsID0gbnVsbCxcbiAgICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5wYXJlbnRLZXkgPSBwYXJlbnRLZXk7XG4gICAgdGhpcy5zY29wZSA9IHBhcmVudCA/IHBhcmVudC5zY29wZS5jaGlsZChub2RlKSA6IG5ldyBSb290VHJhbnNmb3JtU2NvcGUobm9kZSk7XG5cbiAgICAvLyBDb25zdW1lIGluIHNjb3BlIHZhbHVlc1xuICAgIGlmIChub2RlLnR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicpIHtcbiAgICAgIHRoaXMuc2NvcGUudXNlTG9jYWwobm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ0VsZW1lbnROb2RlJykge1xuICAgICAgdGhpcy5zY29wZS51c2VMb2NhbChub2RlKTtcblxuICAgICAgKG5vZGUgYXMgQVNUdjEuRWxlbWVudE5vZGUpLmNoaWxkcmVuLmZvckVhY2goKG5vZGU6IEFTVHYxLlN0YXRlbWVudCkgPT5cbiAgICAgICAgdGhpcy5zY29wZS51c2VMb2NhbChub2RlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcGFyZW50Tm9kZSgpOiBBU1R2MS5Ob2RlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQubm9kZSA6IG51bGw7XG4gIH1cblxuICBwYXJlbnRzKCk6IEl0ZXJhYmxlPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGF0aFBhcmVudHNJdGVyYXRvcih0aGlzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBQYXRoUGFyZW50c0l0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3I8V2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw+IHtcbiAgcGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPjtcblxuICBjb25zdHJ1Y3RvcihwYXRoOiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+KSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMucGF0aC5wYXJlbnQpIHtcbiAgICAgIHRoaXMucGF0aCA9IHRoaXMucGF0aC5wYXJlbnQ7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IHRoaXMucGF0aCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3BhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztJQUVjLFU7QUFLWixzQkFBQSxJQUFBLEVBRUUsTUFGRixFQUdFLFNBSEYsRUFHaUM7QUFBQSxRQUQvQixNQUMrQjtBQUQvQixNQUFBLE1BQytCLEdBSGpDLElBR2lDO0FBQUE7O0FBQUEsUUFBL0IsU0FBK0I7QUFBL0IsTUFBQSxTQUErQixHQUhqQyxJQUdpQztBQUFBOztBQUUvQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxNQUFBLEdBQUEsTUFBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDRDs7OztTQU1ELE8sR0FBQSxtQkFBTztBQUFBO0FBQUE7O0FBQ0wsMkJBQ0csTUFBTSxDQUFQLFFBREYsSUFDcUIsWUFBSztBQUN0QixhQUFPLElBQUEsbUJBQUEsQ0FBUCxLQUFPLENBQVA7QUFDRCxLQUhIO0FBS0QsRzs7Ozt3QkFWYTtBQUNaLGFBQU8sS0FBQSxNQUFBLEdBQWMsS0FBQSxNQUFBLENBQWQsSUFBQSxHQUFQLElBQUE7QUFDRDs7Ozs7O1NBakJXLFU7O0lBNEJkLG1CO0FBR0UsK0JBQUEsSUFBQSxFQUF3QztBQUN0QyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0Q7Ozs7VUFFRCxJLEdBQUEsZ0JBQUk7QUFDRixRQUFJLEtBQUEsSUFBQSxDQUFKLE1BQUEsRUFBc0I7QUFDcEIsV0FBQSxJQUFBLEdBQVksS0FBQSxJQUFBLENBQVosTUFBQTtBQUNBLGFBQU87QUFBRSxRQUFBLElBQUksRUFBTixLQUFBO0FBQWUsUUFBQSxLQUFLLEVBQUUsS0FBSztBQUEzQixPQUFQO0FBRkYsS0FBQSxNQUdPO0FBQ0wsYUFBTztBQUFFLFFBQUEsSUFBSSxFQUFOLElBQUE7QUFBYyxRQUFBLEtBQUssRUFBRTtBQUFyQixPQUFQO0FBQ0Q7QUFDRixHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2Fsa2VyUGF0aDxOIGV4dGVuZHMgQVNUdjEuTm9kZT4ge1xuICBub2RlOiBOO1xuICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsO1xuICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbm9kZTogTixcbiAgICBwYXJlbnQ6IFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsID0gbnVsbCxcbiAgICBwYXJlbnRLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICkge1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5wYXJlbnRLZXkgPSBwYXJlbnRLZXk7XG4gIH1cblxuICBnZXQgcGFyZW50Tm9kZSgpOiBBU1R2MS5Ob2RlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQubm9kZSA6IG51bGw7XG4gIH1cblxuICBwYXJlbnRzKCk6IEl0ZXJhYmxlPFdhbGtlclBhdGg8QVNUdjEuTm9kZT4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUGF0aFBhcmVudHNJdGVyYXRvcih0aGlzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBQYXRoUGFyZW50c0l0ZXJhdG9yIGltcGxlbWVudHMgSXRlcmF0b3I8V2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPiB8IG51bGw+IHtcbiAgcGF0aDogV2Fsa2VyUGF0aDxBU1R2MS5Ob2RlPjtcblxuICBjb25zdHJ1Y3RvcihwYXRoOiBXYWxrZXJQYXRoPEFTVHYxLk5vZGU+KSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMucGF0aC5wYXJlbnQpIHtcbiAgICAgIHRoaXMucGF0aCA9IHRoaXMucGF0aC5wYXJlbnQ7XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IHRoaXMucGF0aCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbnVsbCB9O1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -12,3 +12,5 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }

this["this"] = false;
this.data = false;
this.data = false; // Cache for the head value.
this._head = undefined;
var parts = tail.slice();

@@ -31,2 +33,6 @@

get: function get() {
if (this._head) {
return this._head;
}
var firstPart;

@@ -45,3 +51,3 @@

}).loc;
return b.head(firstPart, firstPartLoc);
return this._head = b.head(firstPart, firstPartLoc);
}

@@ -57,2 +63,2 @@ }, {

}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE9BQUEsQ0FBQSxNQUFBLG1CQUFBO0FBRUEsV0FBTSxvQkFBTjtBQU1FLGdDQUFBLFFBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEdBQUEsRUFBMkY7QUFBeEUsU0FBQSxRQUFBLEdBQUEsUUFBQTtBQUF5RCxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBTDVFLFNBQUEsSUFBQSxHQUFBLGdCQUFBO0FBRU8sbUJBQUEsS0FBQTtBQUNBLFNBQUEsSUFBQSxHQUFBLEtBQUE7QUFHTCxRQUFJLEtBQUssR0FBRyxJQUFJLENBQWhCLEtBQVksRUFBWjs7QUFFQSxRQUFJLElBQUksQ0FBSixJQUFBLEtBQUosVUFBQSxFQUE4QjtBQUM1QixxQkFBQSxJQUFBO0FBREYsS0FBQSxNQUVPLElBQUksSUFBSSxDQUFKLElBQUEsS0FBSixRQUFBLEVBQTRCO0FBQ2pDLFdBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxNQUFBLEtBQUssQ0FBTCxPQUFBLENBQWMsSUFBSSxDQUFKLElBQUEsQ0FBQSxLQUFBLENBQWQsQ0FBYyxDQUFkO0FBRkssS0FBQSxNQUdBO0FBQ0wsTUFBQSxLQUFLLENBQUwsT0FBQSxDQUFjLElBQUksQ0FBbEIsSUFBQTtBQUNEOztBQUVELFNBQUEsS0FBQSxHQUFBLEtBQUE7QUFDRDs7QUFuQkg7QUFBQTtBQUFBLHdCQXFCVTtBQUNOLFVBQUEsU0FBQTs7QUFFQSxVQUFBLFlBQUEsRUFBZTtBQUNiLFFBQUEsU0FBUyxHQUFULE1BQUE7QUFERixPQUFBLE1BRU8sSUFBSSxLQUFKLElBQUEsRUFBZTtBQUNwQixRQUFBLFNBQVMsU0FBTyxLQUFBLEtBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFESyxPQUFBLE1BRUE7QUFDTCxRQUFBLFNBQVMsR0FBRyxLQUFBLEtBQUEsQ0FBWixDQUFZLENBQVo7QUFDRDs7QUFFRCxVQUFJLFlBQVksR0FBRyxLQUFBLEdBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxFQUFBLGVBQUEsQ0FBMkM7QUFDNUQsUUFBQSxLQUFLLEVBQUUsU0FBUyxDQUFDO0FBRDJDLE9BQTNDLEVBQW5CLEdBQUE7QUFJQSxhQUFPLENBQUMsQ0FBRCxJQUFBLENBQUEsU0FBQSxFQUFQLFlBQU8sQ0FBUDtBQUNEO0FBckNIO0FBQUE7QUFBQSx3QkF1Q1U7QUFDTixhQUFPLGVBQVksS0FBWixLQUFBLEdBQXlCLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBaEMsQ0FBZ0MsQ0FBaEM7QUFDRDtBQXpDSDs7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uL3NvdXJjZS9zcGFuJztcbmltcG9ydCB7IFBhdGhFeHByZXNzaW9uLCBQYXRoSGVhZCB9IGZyb20gJy4vbm9kZXMtdjEnO1xuaW1wb3J0IGIgZnJvbSAnLi9wdWJsaWMtYnVpbGRlcnMnO1xuXG5leHBvcnQgY2xhc3MgUGF0aEV4cHJlc3Npb25JbXBsVjEgaW1wbGVtZW50cyBQYXRoRXhwcmVzc2lvbiB7XG4gIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicgPSAnUGF0aEV4cHJlc3Npb24nO1xuICBwdWJsaWMgcGFydHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgdGhpcyA9IGZhbHNlO1xuICBwdWJsaWMgZGF0YSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcmlnaW5hbDogc3RyaW5nLCBoZWFkOiBQYXRoSGVhZCwgdGFpbDogc3RyaW5nW10sIHB1YmxpYyBsb2M6IFNvdXJjZVNwYW4pIHtcbiAgICBsZXQgcGFydHMgPSB0YWlsLnNsaWNlKCk7XG5cbiAgICBpZiAoaGVhZC50eXBlID09PSAnVGhpc0hlYWQnKSB7XG4gICAgICB0aGlzLnRoaXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaGVhZC50eXBlID09PSAnQXRIZWFkJykge1xuICAgICAgdGhpcy5kYXRhID0gdHJ1ZTtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lLnNsaWNlKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMudW5zaGlmdChoZWFkLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIGdldCBoZWFkKCk6IFBhdGhIZWFkIHtcbiAgICBsZXQgZmlyc3RQYXJ0OiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy50aGlzKSB7XG4gICAgICBmaXJzdFBhcnQgPSAndGhpcyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGZpcnN0UGFydCA9IGBAJHt0aGlzLnBhcnRzWzBdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0UGFydCA9IHRoaXMucGFydHNbMF07XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0UGFydExvYyA9IHRoaXMubG9jLmNvbGxhcHNlKCdzdGFydCcpLnNsaWNlU3RhcnRDaGFycyh7XG4gICAgICBjaGFyczogZmlyc3RQYXJ0Lmxlbmd0aCxcbiAgICB9KS5sb2M7XG5cbiAgICByZXR1cm4gYi5oZWFkKGZpcnN0UGFydCwgZmlyc3RQYXJ0TG9jKTtcbiAgfVxuXG4gIGdldCB0YWlsKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50aGlzID8gdGhpcy5wYXJ0cyA6IHRoaXMucGFydHMuc2xpY2UoMSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE9BQUEsQ0FBQSxNQUFBLG1CQUFBO0FBRUEsV0FBTSxvQkFBTjtBQU1FLGdDQUFBLFFBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEdBQUEsRUFBMkY7QUFBeEUsU0FBQSxRQUFBLEdBQUEsUUFBQTtBQUF5RCxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBTDVFLFNBQUEsSUFBQSxHQUFBLGdCQUFBO0FBRU8sbUJBQUEsS0FBQTtBQUNBLFNBQUEsSUFBQSxHQUFBLEtBQUEsQ0FFb0YsQ0FlM0Y7O0FBQ0EsU0FBQSxLQUFBLEdBQUEsU0FBQTtBQWZFLFFBQUksS0FBSyxHQUFHLElBQUksQ0FBaEIsS0FBWSxFQUFaOztBQUVBLFFBQUksSUFBSSxDQUFKLElBQUEsS0FBSixVQUFBLEVBQThCO0FBQzVCLHFCQUFBLElBQUE7QUFERixLQUFBLE1BRU8sSUFBSSxJQUFJLENBQUosSUFBQSxLQUFKLFFBQUEsRUFBNEI7QUFDakMsV0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLE1BQUEsS0FBSyxDQUFMLE9BQUEsQ0FBYyxJQUFJLENBQUosSUFBQSxDQUFBLEtBQUEsQ0FBZCxDQUFjLENBQWQ7QUFGSyxLQUFBLE1BR0E7QUFDTCxNQUFBLEtBQUssQ0FBTCxPQUFBLENBQWMsSUFBSSxDQUFsQixJQUFBO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNEOztBQW5CSDtBQUFBO0FBQUEsd0JBd0JVO0FBQ04sVUFBSSxLQUFKLEtBQUEsRUFBZ0I7QUFDZCxlQUFPLEtBQVAsS0FBQTtBQUNEOztBQUVELFVBQUEsU0FBQTs7QUFFQSxVQUFBLFlBQUEsRUFBZTtBQUNiLFFBQUEsU0FBUyxHQUFULE1BQUE7QUFERixPQUFBLE1BRU8sSUFBSSxLQUFKLElBQUEsRUFBZTtBQUNwQixRQUFBLFNBQVMsU0FBTyxLQUFBLEtBQUEsQ0FBaEIsQ0FBZ0IsQ0FBaEI7QUFESyxPQUFBLE1BRUE7QUFDTCxRQUFBLFNBQVMsR0FBRyxLQUFBLEtBQUEsQ0FBWixDQUFZLENBQVo7QUFDRDs7QUFFRCxVQUFJLFlBQVksR0FBRyxLQUFBLEdBQUEsQ0FBQSxRQUFBLENBQUEsT0FBQSxFQUFBLGVBQUEsQ0FBMkM7QUFDNUQsUUFBQSxLQUFLLEVBQUUsU0FBUyxDQUFDO0FBRDJDLE9BQTNDLEVBQW5CLEdBQUE7QUFJQSxhQUFRLEtBQUEsS0FBQSxHQUFhLENBQUMsQ0FBRCxJQUFBLENBQUEsU0FBQSxFQUFyQixZQUFxQixDQUFyQjtBQUNEO0FBNUNIO0FBQUE7QUFBQSx3QkE4Q1U7QUFDTixhQUFPLGVBQVksS0FBWixLQUFBLEdBQXlCLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBaEMsQ0FBZ0MsQ0FBaEM7QUFDRDtBQWhESDs7QUFBQTtBQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uL3NvdXJjZS9zcGFuJztcbmltcG9ydCB7IFBhdGhFeHByZXNzaW9uLCBQYXRoSGVhZCB9IGZyb20gJy4vbm9kZXMtdjEnO1xuaW1wb3J0IGIgZnJvbSAnLi9wdWJsaWMtYnVpbGRlcnMnO1xuXG5leHBvcnQgY2xhc3MgUGF0aEV4cHJlc3Npb25JbXBsVjEgaW1wbGVtZW50cyBQYXRoRXhwcmVzc2lvbiB7XG4gIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicgPSAnUGF0aEV4cHJlc3Npb24nO1xuICBwdWJsaWMgcGFydHM6IHN0cmluZ1tdO1xuICBwdWJsaWMgdGhpcyA9IGZhbHNlO1xuICBwdWJsaWMgZGF0YSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcmlnaW5hbDogc3RyaW5nLCBoZWFkOiBQYXRoSGVhZCwgdGFpbDogc3RyaW5nW10sIHB1YmxpYyBsb2M6IFNvdXJjZVNwYW4pIHtcbiAgICBsZXQgcGFydHMgPSB0YWlsLnNsaWNlKCk7XG5cbiAgICBpZiAoaGVhZC50eXBlID09PSAnVGhpc0hlYWQnKSB7XG4gICAgICB0aGlzLnRoaXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaGVhZC50eXBlID09PSAnQXRIZWFkJykge1xuICAgICAgdGhpcy5kYXRhID0gdHJ1ZTtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lLnNsaWNlKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMudW5zaGlmdChoZWFkLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIC8vIENhY2hlIGZvciB0aGUgaGVhZCB2YWx1ZS5cbiAgX2hlYWQ/OiBQYXRoSGVhZCA9IHVuZGVmaW5lZDtcblxuICBnZXQgaGVhZCgpOiBQYXRoSGVhZCB7XG4gICAgaWYgKHRoaXMuX2hlYWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9oZWFkO1xuICAgIH1cblxuICAgIGxldCBmaXJzdFBhcnQ6IHN0cmluZztcblxuICAgIGlmICh0aGlzLnRoaXMpIHtcbiAgICAgIGZpcnN0UGFydCA9ICd0aGlzJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgZmlyc3RQYXJ0ID0gYEAke3RoaXMucGFydHNbMF19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlyc3RQYXJ0ID0gdGhpcy5wYXJ0c1swXTtcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RQYXJ0TG9jID0gdGhpcy5sb2MuY29sbGFwc2UoJ3N0YXJ0Jykuc2xpY2VTdGFydENoYXJzKHtcbiAgICAgIGNoYXJzOiBmaXJzdFBhcnQubGVuZ3RoLFxuICAgIH0pLmxvYztcblxuICAgIHJldHVybiAodGhpcy5faGVhZCA9IGIuaGVhZChmaXJzdFBhcnQsIGZpcnN0UGFydExvYykpO1xuICB9XG5cbiAgZ2V0IHRhaWwoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnRoaXMgPyB0aGlzLnBhcnRzIDogdGhpcy5wYXJ0cy5zbGljZSgxKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

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

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); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
import { assign } from '@glimmer/util';
export function node(name) {

@@ -15,4 +10,3 @@ if (name !== undefined) {

this.type = type;
this.loc = fields.loc;
copy(fields, this);
assign(this, fields);
}

@@ -29,4 +23,3 @@

function _class2(fields) {
this.loc = fields.loc;
copy(fields, this);
assign(this, fields);
}

@@ -40,13 +33,2 @@

}
function keys(object) {
return Object.keys(object);
}
function copy(object1, object2) {
for (var _iterator = _createForOfIteratorHelperLoose(keys(object1)), _step; !(_step = _iterator()).done;) {
var key = _step.value;
object2[key] = object1[key];
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBMENBLE9BQU0sU0FBQSxJQUFBLENBQUEsSUFBQSxFQUNJO0FBUVIsTUFBSSxJQUFJLEtBQVIsU0FBQSxFQUF3QjtBQUN0QixRQUFNLElBQUksR0FBVixJQUFBO0FBQ0EsV0FBTztBQUNMLE1BQUEsTUFESyxvQkFDQztBQUNKO0FBSUUsMEJBQUEsTUFBQSxFQUEyQztBQUN6QyxpQkFBQSxJQUFBLEdBQUEsSUFBQTtBQUNBLGlCQUFBLEdBQUEsR0FBVyxNQUFNLENBQWpCLEdBQUE7QUFDQSxZQUFBLElBQUksQ0FBQSxNQUFBLEVBQUosSUFBSSxDQUFKO0FBQ0Q7O0FBUkg7QUFBQTtBQVVEO0FBWkksS0FBUDtBQUZGLEdBQUEsTUFnQk87QUFDTCxXQUFPO0FBQ0wsTUFBQSxNQURLLG9CQUNDO0FBQ0o7QUFHRSwyQkFBQSxNQUFBLEVBQTJDO0FBQ3pDLGlCQUFBLEdBQUEsR0FBVyxNQUFNLENBQWpCLEdBQUE7QUFFQSxZQUFBLElBQUksQ0FBQSxNQUFBLEVBQUosSUFBSSxDQUFKO0FBQ0Q7O0FBUEg7QUFBQTtBQVNEO0FBWEksS0FBUDtBQWFEO0FBQ0Y7O0FBZ0JELFNBQUEsSUFBQSxDQUFBLE1BQUEsRUFBeUM7QUFDdkMsU0FBTyxNQUFNLENBQU4sSUFBQSxDQUFQLE1BQU8sQ0FBUDtBQUNEOztBQUVELFNBQUEsSUFBQSxDQUFBLE9BQUEsRUFBQSxPQUFBLEVBQXNEO0FBQ3BELHVEQUFnQixJQUFJLENBQXBCLE9BQW9CLENBQXBCLHdDQUErQjtBQUFBLFFBQS9CLEdBQStCO0FBQzdCLElBQUEsT0FBTyxDQUFQLEdBQU8sQ0FBUCxHQUFlLE9BQU8sQ0FBdEIsR0FBc0IsQ0FBdEI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU291cmNlU3BhbiB9IGZyb20gJy4uLy4uL3NvdXJjZS9zcGFuJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlTm9kZUZpZWxkcyB7XG4gIGxvYzogU291cmNlU3Bhbjtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIEFTVHYyIG5vZGVzLCB3aXRoIGFuIG9wdGlvbmFsIG5hbWUgYW5kIHRoZSBub2RlJ3NcbiAqIG9wdGlvbnMuXG4gKlxuICogYGBgdHNcbiAqIGV4cG9ydCBjbGFzcyBIdG1sVGV4dCBleHRlbmRzIG5vZGUoJ0h0bWxUZXh0JykuZmllbGRzPHsgY2hhcnM6IHN0cmluZyB9PigpIHt9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNyZWF0ZXMgYSBuZXcgQVNUdjIgbm9kZSB3aXRoIHRoZSBuYW1lIGAnSHRtbFRleHQnYCBhbmQgb25lIGZpZWxkIGBjaGFyczogc3RyaW5nYCAoaW5cbiAqIGFkZGl0aW9uIHRvIGEgYGxvYzogU291cmNlT2Zmc2V0c2AgZmllbGQsIHdoaWNoIGFsbCBub2RlcyBoYXZlKS5cbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNsYXNzIEFyZ3MgZXh0ZW5kcyBub2RlKCkuZmllbGRzPHtcbiAqICBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsQXJndW1lbnRzO1xuICogIG5hbWVkOiBOYW1lZEFyZ3VtZW50c1xuICogfT4oKSB7fVxuICogYGBgXG4gKlxuICogVGhpcyBjcmVhdGVzIGEgbmV3IHVuLW5hbWVkIEFTVHYyIG5vZGUgd2l0aCB0d28gZmllbGRzIChgcG9zaXRpb25hbDogUG9zaXRpb25hbGAgYW5kIGBuYW1lZDpcbiAqIE5hbWVkYCwgaW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgYGxvYzogU291cmNlT2Zmc2V0c2AgZmllbGQpLlxuICpcbiAqIE9uY2UgeW91IGNyZWF0ZSBhIG5vZGUgdXNpbmcgYG5vZGVgLCBpdCBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhbGwgb2YgaXRzIGZpZWxkcyAoaW5jbHVkaW5nIGBsb2NgKTpcbiAqXG4gKiBgYGB0c1xuICogbmV3IEh0bWxUZXh0KHsgbG9jOiBvZmZzZXRzLCBjaGFyczogc29tZVN0cmluZyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSgpOiB7XG4gIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IE5vZGVDb25zdHJ1Y3RvcjxGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG59O1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGU8VCBleHRlbmRzIHN0cmluZz4oXG4gIG5hbWU6IFRcbik6IHtcbiAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgRmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGU8VCBleHRlbmRzIHN0cmluZz4oXG4gIG5hbWU/OiBUXG4pOlxuICB8IHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbiAgICB9XG4gIHwge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbiAgICB9IHtcbiAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHR5cGUgPSBuYW1lO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz4ge1xuICAgICAgICByZXR1cm4gY2xhc3Mge1xuICAgICAgICAgIHJlYWRvbmx5IGxvYzogU291cmNlU3BhbjtcbiAgICAgICAgICByZWFkb25seSB0eXBlOiBUO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHRoaXMubG9jID0gZmllbGRzLmxvYztcbiAgICAgICAgICAgIGNvcHkoZmllbGRzLCAodGhpcyBhcyB1bmtub3duKSBhcyBDb25zdHJ1Y3RpbmdUeXBlZE5vZGU8RmllbGRzPik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcz4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5sb2MgPSBmaWVsZHMubG9jO1xuXG4gICAgICAgICAgICBjb3B5KGZpZWxkcywgKHRoaXMgYXMgdW5rbm93bikgYXMgQ29uc3RydWN0aW5nTm9kZTxGaWVsZHM+KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgTm9kZUNvbnN0cnVjdG9yPEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG50eXBlIENvbnN0cnVjdGluZ1R5cGVkTm9kZTxGaWVsZHM+ID0gRmllbGRzICYgQmFzZU5vZGVGaWVsZHM7XG5cbnR5cGUgQ29uc3RydWN0aW5nTm9kZTxGaWVsZHM+ID0gQmFzZU5vZGVGaWVsZHMgJiBGaWVsZHM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbnN0cnVjdG9yPEZpZWxkcz4ge1xuICBuZXcgKGZpZWxkczogRmllbGRzKTogUmVhZG9ubHk8RmllbGRzPjtcbn1cblxudHlwZSBUeXBlZE5vZGU8VCBleHRlbmRzIHN0cmluZywgRmllbGRzPiA9IHsgdHlwZTogVCB9ICYgUmVhZG9ubHk8RmllbGRzPjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxUIGV4dGVuZHMgc3RyaW5nLCBGaWVsZHM+IHtcbiAgbmV3IChvcHRpb25zOiBGaWVsZHMpOiBUeXBlZE5vZGU8VCwgRmllbGRzPjtcbn1cblxuZnVuY3Rpb24ga2V5czxPIGV4dGVuZHMgb2JqZWN0PihvYmplY3Q6IE8pOiAoa2V5b2YgTylbXSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmplY3QpIGFzIChrZXlvZiBPKVtdO1xufVxuXG5mdW5jdGlvbiBjb3B5PE8gZXh0ZW5kcyBvYmplY3Q+KG9iamVjdDE6IE8sIG9iamVjdDI6IE8pIHtcbiAgZm9yIChsZXQga2V5IG9mIGtleXMob2JqZWN0MSkpIHtcbiAgICBvYmplY3QyW2tleV0gPSBvYmplY3QxW2tleV07XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjItYS9vYmplY3RzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBQSxNQUFBLFFBQUEsZUFBQTtBQTRDQSxPQUFNLFNBQUEsSUFBQSxDQUFBLElBQUEsRUFDSTtBQVFSLE1BQUksSUFBSSxLQUFSLFNBQUEsRUFBd0I7QUFDdEIsUUFBTSxJQUFJLEdBQVYsSUFBQTtBQUNBLFdBQU87QUFDTCxNQUFBLE1BREssb0JBQ0M7QUFDSjtBQUtFLDBCQUFBLE1BQUEsRUFBMkM7QUFDekMsaUJBQUEsSUFBQSxHQUFBLElBQUE7QUFDQSxZQUFBLE1BQU0sQ0FBQSxJQUFBLEVBQU4sTUFBTSxDQUFOO0FBQ0Q7O0FBUkg7QUFBQTtBQVVEO0FBWkksS0FBUDtBQUZGLEdBQUEsTUFnQk87QUFDTCxXQUFPO0FBQ0wsTUFBQSxNQURLLG9CQUNDO0FBQ0o7QUFJRSwyQkFBQSxNQUFBLEVBQTJDO0FBQ3pDLFlBQUEsTUFBTSxDQUFBLElBQUEsRUFBTixNQUFNLENBQU47QUFDRDs7QUFOSDtBQUFBO0FBUUQ7QUFWSSxLQUFQO0FBWUQ7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG5pbXBvcnQgeyBTb3VyY2VTcGFuIH0gZnJvbSAnLi4vLi4vc291cmNlL3NwYW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VOb2RlRmllbGRzIHtcbiAgbG9jOiBTb3VyY2VTcGFuO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgQVNUdjIgbm9kZXMsIHdpdGggYW4gb3B0aW9uYWwgbmFtZSBhbmQgdGhlIG5vZGUnc1xuICogb3B0aW9ucy5cbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNsYXNzIEh0bWxUZXh0IGV4dGVuZHMgbm9kZSgnSHRtbFRleHQnKS5maWVsZHM8eyBjaGFyczogc3RyaW5nIH0+KCkge31cbiAqIGBgYFxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIG5ldyBBU1R2MiBub2RlIHdpdGggdGhlIG5hbWUgYCdIdG1sVGV4dCdgIGFuZCBvbmUgZmllbGQgYGNoYXJzOiBzdHJpbmdgIChpblxuICogYWRkaXRpb24gdG8gYSBgbG9jOiBTb3VyY2VPZmZzZXRzYCBmaWVsZCwgd2hpY2ggYWxsIG5vZGVzIGhhdmUpLlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY2xhc3MgQXJncyBleHRlbmRzIG5vZGUoKS5maWVsZHM8e1xuICogIHBvc2l0aW9uYWw6IFBvc2l0aW9uYWxBcmd1bWVudHM7XG4gKiAgbmFtZWQ6IE5hbWVkQXJndW1lbnRzXG4gKiB9PigpIHt9XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGNyZWF0ZXMgYSBuZXcgdW4tbmFtZWQgQVNUdjIgbm9kZSB3aXRoIHR3byBmaWVsZHMgKGBwb3NpdGlvbmFsOiBQb3NpdGlvbmFsYCBhbmQgYG5hbWVkOlxuICogTmFtZWRgLCBpbiBhZGRpdGlvbiB0byB0aGUgZ2VuZXJpYyBgbG9jOiBTb3VyY2VPZmZzZXRzYCBmaWVsZCkuXG4gKlxuICogT25jZSB5b3UgY3JlYXRlIGEgbm9kZSB1c2luZyBgbm9kZWAsIGl0IGlzIGluc3RhbnRpYXRlZCB3aXRoIGFsbCBvZiBpdHMgZmllbGRzIChpbmNsdWRpbmcgYGxvY2ApOlxuICpcbiAqIGBgYHRzXG4gKiBuZXcgSHRtbFRleHQoeyBsb2M6IG9mZnNldHMsIGNoYXJzOiBzb21lU3RyaW5nIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2RlKCk6IHtcbiAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPjtcbn07XG5leHBvcnQgZnVuY3Rpb24gbm9kZTxUIGV4dGVuZHMgc3RyaW5nPihcbiAgbmFtZTogVFxuKToge1xuICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBUeXBlZE5vZGVDb25zdHJ1Y3RvcjxULCBGaWVsZHMgJiBCYXNlTm9kZUZpZWxkcz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZTxUIGV4dGVuZHMgc3RyaW5nPihcbiAgbmFtZT86IFRcbik6XG4gIHwge1xuICAgICAgZmllbGRzPEZpZWxkcyBleHRlbmRzIG9iamVjdD4oKTogVHlwZWROb2RlQ29uc3RydWN0b3I8VCwgRmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xuICAgIH1cbiAgfCB7XG4gICAgICBmaWVsZHM8RmllbGRzIGV4dGVuZHMgb2JqZWN0PigpOiBOb2RlQ29uc3RydWN0b3I8RmllbGRzICYgQmFzZU5vZGVGaWVsZHM+O1xuICAgIH0ge1xuICBpZiAobmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdHlwZSA9IG5hbWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpZWxkczxGaWVsZHMgZXh0ZW5kcyBvYmplY3Q+KCk6IFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgLy8gU0FGRVRZOiBpbml0aWFsaXplZCB2aWEgYGFzc2lnbmAgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIGRlY2xhcmUgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuICAgICAgICAgIHJlYWRvbmx5IHR5cGU6IFQ7XG5cbiAgICAgICAgICBjb25zdHJ1Y3RvcihmaWVsZHM6IEJhc2VOb2RlRmllbGRzICYgRmllbGRzKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQsIEJhc2VOb2RlRmllbGRzICYgRmllbGRzPjtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzPEZpZWxkcz4oKTogTm9kZUNvbnN0cnVjdG9yPEZpZWxkcyAmIEJhc2VOb2RlRmllbGRzPiB7XG4gICAgICAgIHJldHVybiBjbGFzcyB7XG4gICAgICAgICAgLy8gU0FGRVRZOiBpbml0aWFsaXplZCB2aWEgYGFzc2lnbmAgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIGRlY2xhcmUgcmVhZG9ubHkgbG9jOiBTb3VyY2VTcGFuO1xuXG4gICAgICAgICAgY29uc3RydWN0b3IoZmllbGRzOiBCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcykge1xuICAgICAgICAgICAgYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIE5vZGVDb25zdHJ1Y3RvcjxCYXNlTm9kZUZpZWxkcyAmIEZpZWxkcz47XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlQ29uc3RydWN0b3I8RmllbGRzPiB7XG4gIG5ldyAoZmllbGRzOiBGaWVsZHMpOiBSZWFkb25seTxGaWVsZHM+O1xufVxuXG50eXBlIFR5cGVkTm9kZTxUIGV4dGVuZHMgc3RyaW5nLCBGaWVsZHM+ID0geyB0eXBlOiBUIH0gJiBSZWFkb25seTxGaWVsZHM+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVkTm9kZUNvbnN0cnVjdG9yPFQgZXh0ZW5kcyBzdHJpbmcsIEZpZWxkcz4ge1xuICBuZXcgKG9wdGlvbnM6IEZpZWxkcyk6IFR5cGVkTm9kZTxULCBGaWVsZHM+O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -15,2 +15,9 @@ import { CharPosition, HbsPosition, InvisiblePosition, OffsetKind, PositionData } from './offset';

export declare type IsInvisible = 'IS_INVISIBLE';
declare type Pattern = OffsetKind | IsInvisible | MatchAny;
declare class When<Out> {
_map: Map<Pattern, Out>;
get(pattern: Pattern, or: () => Out): Out;
add(pattern: Pattern, out: Out): void;
match(kind: OffsetKind): Out[];
}
declare type ExhaustiveCheck<Out, In extends Matches, Removed extends Matches> = Exclude<In, Removed> extends never ? ExhaustiveMatcher<Out> : Matcher<Out, Exclude<In, Removed>>;

@@ -23,3 +30,3 @@ export declare type MatchFn<Out> = (left: PositionData, right: PositionData) => Out;

declare class Matcher<Out, M extends Matches = Matches> {
#private;
_whens: When<When<(left: PositionData, right: PositionData) => Out>>;
/**

@@ -26,0 +33,0 @@ * You didn't exhaustively match all possibilities.

@@ -116,6 +116,7 @@ import { SourcePosition } from '../location';

export declare class CharPosition implements PositionData {
#private;
readonly source: Source;
readonly charPos: number;
readonly kind = OffsetKind.CharPosition;
/** Computed from char offset */
_locPos: HbsPosition | BROKEN | null;
constructor(source: Source, charPos: number);

@@ -151,6 +152,6 @@ /**

export declare class HbsPosition implements PositionData {
#private;
readonly source: Source;
readonly hbsPos: SourcePosition;
readonly kind = OffsetKind.HbsPosition;
_charPos: CharPosition | BROKEN | null;
constructor(source: Source, hbsPos: SourcePosition, charPos?: number | null);

@@ -157,0 +158,0 @@ /**

@@ -5,3 +5,3 @@ import { SourceLocation, SourcePosition } from '../location';

import { MatchFn } from './match';
import { AnyPosition, CharPosition, HbsPosition, OffsetKind, SourceOffset } from './offset';
import { AnyPosition, BROKEN, CharPosition, HbsPosition, OffsetKind, SourceOffset } from './offset';
/**

@@ -172,3 +172,2 @@ * All spans have these details in common.

declare class CharPositionSpan implements SpanData {
#private;
readonly source: Source;

@@ -180,2 +179,3 @@ readonly charPositions: {

readonly kind = OffsetKind.CharPosition;
_locPosSpan: HbsSpan | BROKEN | null;
constructor(source: Source, charPositions: {

@@ -196,3 +196,2 @@ start: CharPosition;

export declare class HbsSpan implements SpanData {
#private;
readonly source: Source;

@@ -204,2 +203,4 @@ readonly hbsPositions: {

readonly kind = OffsetKind.HbsPosition;
_charPosSpan: CharPositionSpan | BROKEN | null;
_providedHbsLoc: SourceLocation | null;
constructor(source: Source, hbsPositions: {

@@ -206,0 +207,0 @@ start: HbsPosition;

@@ -8,5 +8,5 @@ import type { PresentArray } from '@glimmer/interfaces';

export declare class SpanList {
#private;
static range(span: PresentArray<HasSourceSpan>): SourceSpan;
static range(span: HasSourceSpan[], fallback: SourceSpan): SourceSpan;
_span: SourceSpan[];
constructor(span?: SourceSpan[]);

@@ -13,0 +13,0 @@ add(offset: SourceSpan): void;

@@ -17,3 +17,2 @@ import { Core, Dict } from '@glimmer/interfaces';

export declare class ProgramSymbolTable extends SymbolTable {
#private;
private templateLocals;

@@ -28,2 +27,3 @@ private customizeComponentName;

private usedTemplateLocals;
_hasEval: boolean;
getUsedTemplateLocals(): string[];

@@ -30,0 +30,0 @@ setHasEval(): void;

import * as ASTv1 from '../v1/api';
import { TransformScope } from './scope';
export default class WalkerPath<N extends ASTv1.Node> {

@@ -7,3 +6,2 @@ node: N;

parentKey: string | null;
scope: TransformScope;
constructor(node: N, parent?: WalkerPath<ASTv1.Node> | null, parentKey?: string | null);

@@ -10,0 +8,0 @@ get parentNode(): ASTv1.Node | null;

@@ -11,2 +11,3 @@ import { SourceSpan } from '../source/span';

constructor(original: string, head: PathHead, tail: string[], loc: SourceSpan);
_head?: PathHead;
get head(): PathHead;

@@ -13,0 +14,0 @@ get tail(): string[];

{
"name": "@glimmer/syntax",
"version": "0.80.2",
"version": "0.80.3",
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/syntax",
"dependencies": {
"@glimmer/interfaces": "0.80.2",
"@glimmer/util": "0.80.2",
"@glimmer/interfaces": "0.80.3",
"@glimmer/util": "0.80.3",
"@handlebars/parser": "~2.0.0",

@@ -12,3 +12,3 @@ "simple-html-tokenizer": "^0.5.10"

"devDependencies": {
"@glimmer/local-debug-flags": "0.80.2",
"@glimmer/local-debug-flags": "0.80.3",
"@types/qunit": "^2.9.0"

@@ -15,0 +15,0 @@ },

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

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

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