@angular/compiler-cli 12.0.0-rc.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,4 +6,6 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
+ import { defaultLinkerPlugin } from './src/babel_plugin';
9
10
  export { createEs2015LinkerPlugin } from './src/es2015_linker_plugin';
11
+ export default defaultLinkerPlugin;
@@ -4,7 +4,7 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/linker/babel", ["require", "exports", "@angular/compiler-cli/linker/babel/src/es2015_linker_plugin"], factory);
7
+ define("@angular/compiler-cli/linker/babel", ["require", "exports", "@angular/compiler-cli/linker/babel/src/babel_plugin", "@angular/compiler-cli/linker/babel/src/es2015_linker_plugin"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
@@ -17,7 +17,9 @@
17
17
  * Use of this source code is governed by an MIT-style license that can be
18
18
  * found in the LICENSE file at https://angular.io/license
19
19
  */
20
+ var babel_plugin_1 = require("@angular/compiler-cli/linker/babel/src/babel_plugin");
20
21
  var es2015_linker_plugin_1 = require("@angular/compiler-cli/linker/babel/src/es2015_linker_plugin");
21
22
  Object.defineProperty(exports, "createEs2015LinkerPlugin", { enumerable: true, get: function () { return es2015_linker_plugin_1.createEs2015LinkerPlugin; } });
23
+ exports.default = babel_plugin_1.defaultLinkerPlugin;
22
24
  });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILG9HQUFvRTtJQUE1RCxnSUFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuZXhwb3J0IHtjcmVhdGVFczIwMTVMaW5rZXJQbHVnaW59IGZyb20gJy4vc3JjL2VzMjAxNV9saW5rZXJfcGx1Z2luJzsiXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7T0FNRztJQUNILG9GQUF1RDtJQUV2RCxvR0FBb0U7SUFBNUQsZ0lBQUEsd0JBQXdCLE9BQUE7SUFDaEMsa0JBQWUsa0NBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7ZGVmYXVsdExpbmtlclBsdWdpbn0gZnJvbSAnLi9zcmMvYmFiZWxfcGx1Z2luJztcblxuZXhwb3J0IHtjcmVhdGVFczIwMTVMaW5rZXJQbHVnaW59IGZyb20gJy4vc3JjL2VzMjAxNV9saW5rZXJfcGx1Z2luJztcbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRMaW5rZXJQbHVnaW47XG4iXX0=
@@ -17,7 +17,7 @@ export declare class BabelAstHost implements AstHost<t.Expression> {
17
17
  parseStringLiteral(str: t.Expression): string;
18
18
  isNumericLiteral: typeof t.isNumericLiteral;
19
19
  parseNumericLiteral(num: t.Expression): number;
20
- isBooleanLiteral: typeof t.isBooleanLiteral;
20
+ isBooleanLiteral(bool: t.Expression): boolean;
21
21
  parseBooleanLiteral(bool: t.Expression): boolean;
22
22
  isArrayLiteral: typeof t.isArrayExpression;
23
23
  parseArrayLiteral(array: t.Expression): t.Expression[];
@@ -27,7 +27,6 @@
27
27
  function BabelAstHost() {
28
28
  this.isStringLiteral = t.isStringLiteral;
29
29
  this.isNumericLiteral = t.isNumericLiteral;
30
- this.isBooleanLiteral = t.isBooleanLiteral;
31
30
  this.isArrayLiteral = t.isArrayExpression;
32
31
  this.isObjectLiteral = t.isObjectExpression;
33
32
  this.isCallExpression = t.isCallExpression;
@@ -51,9 +50,19 @@
51
50
  linker_1.assert(num, t.isNumericLiteral, 'a numeric literal');
52
51
  return num.value;
53
52
  };
53
+ BabelAstHost.prototype.isBooleanLiteral = function (bool) {
54
+ return t.isBooleanLiteral(bool) || isMinifiedBooleanLiteral(bool);
55
+ };
54
56
  BabelAstHost.prototype.parseBooleanLiteral = function (bool) {
55
- linker_1.assert(bool, t.isBooleanLiteral, 'a boolean literal');
56
- return bool.value;
57
+ if (t.isBooleanLiteral(bool)) {
58
+ return bool.value;
59
+ }
60
+ else if (isMinifiedBooleanLiteral(bool)) {
61
+ return !bool.argument.value;
62
+ }
63
+ else {
64
+ throw new linker_1.FatalLinkerError(bool, 'Unsupported syntax, expected a boolean literal.');
65
+ }
57
66
  };
58
67
  BabelAstHost.prototype.parseArrayLiteral = function (array) {
59
68
  linker_1.assert(array, t.isArrayExpression, 'an array literal');
@@ -161,5 +170,12 @@
161
170
  function isNotSpreadArgument(arg) {
162
171
  return !t.isSpreadElement(arg);
163
172
  }
173
+ /**
174
+ * Return true if the node is either `!0` or `!1`.
175
+ */
176
+ function isMinifiedBooleanLiteral(node) {
177
+ return t.isUnaryExpression(node) && node.prefix && node.operator === '!' &&
178
+ t.isNumericLiteral(node.argument) && (node.argument.value === 0 || node.argument.value === 1);
179
+ }
164
180
  });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFiZWxfYXN0X2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsL3NyYy9hc3QvYmFiZWxfYXN0X2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILGdDQUFrQztJQUVsQyx1REFBNEU7SUFFNUU7O09BRUc7SUFDSDtRQUFBO1lBV0Usb0JBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBT3BDLHFCQUFnQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQU90QyxxQkFBZ0IsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7WUFPdEMsbUJBQWMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFXckMsb0JBQWUsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUM7WUE0Q3ZDLHFCQUFnQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQTJCeEMsQ0FBQztRQWpIQyxvQ0FBYSxHQUFiLFVBQWMsSUFBa0I7WUFDOUIsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbEI7aUJBQU0sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7UUFJRCx5Q0FBa0IsR0FBbEIsVUFBbUIsR0FBaUI7WUFDbEMsZUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDbkQsT0FB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QUkseUJBQWdCLENBQ3RCLElBQUksRUFBRSxxRUFBcUUsQ0FBQyxDQUFDO2FBQ2xGO1lBQ0QsT0FBTztnQkFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRzthQUNqQixDQUFDO1FBQ0osQ0FBQztRQUNILG1CQUFDO0lBQUQsQ0FBQyxBQWxIRCxJQWtIQztJQWxIWSxvQ0FBWTtJQW9IekI7OztPQUdHO0lBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxDQUFvQztRQUU3RCxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsa0JBQWtCLENBQUMsQ0FBK0I7UUFDekQsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUdEOztPQUVHO0lBQ0gsU0FBUyxjQUFjLENBQUMsQ0FBZTtRQUNyQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQU9EOztPQUVHO0lBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxHQUFpQjtRQUM1QyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHQgZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHthc3NlcnQsIEFzdEhvc3QsIEZhdGFsTGlua2VyRXJyb3IsIFJhbmdlfSBmcm9tICcuLi8uLi8uLi8uLi9saW5rZXInO1xuXG4vKipcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYEFzdEhvc3RgIGlzIGFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gQmFiZWwgQVNUIG5vZGVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFiZWxBc3RIb3N0IGltcGxlbWVudHMgQXN0SG9zdDx0LkV4cHJlc3Npb24+IHtcbiAgZ2V0U3ltYm9sTmFtZShub2RlOiB0LkV4cHJlc3Npb24pOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKHQuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZS5uYW1lO1xuICAgIH0gZWxzZSBpZiAodC5pc01lbWJlckV4cHJlc3Npb24obm9kZSkgJiYgdC5pc0lkZW50aWZpZXIobm9kZS5wcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBub2RlLnByb3BlcnR5Lm5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGlzU3RyaW5nTGl0ZXJhbCA9IHQuaXNTdHJpbmdMaXRlcmFsO1xuXG4gIHBhcnNlU3RyaW5nTGl0ZXJhbChzdHI6IHQuRXhwcmVzc2lvbik6IHN0cmluZyB7XG4gICAgYXNzZXJ0KHN0ciwgdC5pc1N0cmluZ0xpdGVyYWwsICdhIHN0cmluZyBsaXRlcmFsJyk7XG4gICAgcmV0dXJuIHN0ci52YWx1ZTtcbiAgfVxuXG4gIGlzTnVtZXJpY0xpdGVyYWwgPSB0LmlzTnVtZXJpY0xpdGVyYWw7XG5cbiAgcGFyc2VOdW1lcmljTGl0ZXJhbChudW06IHQuRXhwcmVzc2lvbik6IG51bWJlciB7XG4gICAgYXNzZXJ0KG51bSwgdC5pc051bWVyaWNMaXRlcmFsLCAnYSBudW1lcmljIGxpdGVyYWwnKTtcbiAgICByZXR1cm4gbnVtLnZhbHVlO1xuICB9XG5cbiAgaXNCb29sZWFuTGl0ZXJhbCA9IHQuaXNCb29sZWFuTGl0ZXJhbDtcblxuICBwYXJzZUJvb2xlYW5MaXRlcmFsKGJvb2w6IHQuRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICAgIGFzc2VydChib29sLCB0LmlzQm9vbGVhbkxpdGVyYWwsICdhIGJvb2xlYW4gbGl0ZXJhbCcpO1xuICAgIHJldHVybiBib29sLnZhbHVlO1xuICB9XG5cbiAgaXNBcnJheUxpdGVyYWwgPSB0LmlzQXJyYXlFeHByZXNzaW9uO1xuXG4gIHBhcnNlQXJyYXlMaXRlcmFsKGFycmF5OiB0LkV4cHJlc3Npb24pOiB0LkV4cHJlc3Npb25bXSB7XG4gICAgYXNzZXJ0KGFycmF5LCB0LmlzQXJyYXlFeHByZXNzaW9uLCAnYW4gYXJyYXkgbGl0ZXJhbCcpO1xuICAgIHJldHVybiBhcnJheS5lbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICBhc3NlcnQoZWxlbWVudCwgaXNOb3RFbXB0eUVsZW1lbnQsICdlbGVtZW50IGluIGFycmF5IG5vdCB0byBiZSBlbXB0eScpO1xuICAgICAgYXNzZXJ0KGVsZW1lbnQsIGlzTm90U3ByZWFkRWxlbWVudCwgJ2VsZW1lbnQgaW4gYXJyYXkgbm90IHRvIHVzZSBzcHJlYWQgc3ludGF4Jyk7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9KTtcbiAgfVxuXG4gIGlzT2JqZWN0TGl0ZXJhbCA9IHQuaXNPYmplY3RFeHByZXNzaW9uO1xuXG4gIHBhcnNlT2JqZWN0TGl0ZXJhbChvYmo6IHQuRXhwcmVzc2lvbik6IE1hcDxzdHJpbmcsIHQuRXhwcmVzc2lvbj4ge1xuICAgIGFzc2VydChvYmosIHQuaXNPYmplY3RFeHByZXNzaW9uLCAnYW4gb2JqZWN0IGxpdGVyYWwnKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCB0LkV4cHJlc3Npb24+KCk7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBvYmoucHJvcGVydGllcykge1xuICAgICAgYXNzZXJ0KHByb3BlcnR5LCB0LmlzT2JqZWN0UHJvcGVydHksICdhIHByb3BlcnR5IGFzc2lnbm1lbnQnKTtcbiAgICAgIGFzc2VydChwcm9wZXJ0eS52YWx1ZSwgdC5pc0V4cHJlc3Npb24sICdhbiBleHByZXNzaW9uJyk7XG4gICAgICBhc3NlcnQocHJvcGVydHkua2V5LCBpc1Byb3BlcnR5TmFtZSwgJ2EgcHJvcGVydHkgbmFtZScpO1xuICAgICAgY29uc3Qga2V5ID0gdC5pc0lkZW50aWZpZXIocHJvcGVydHkua2V5KSA/IHByb3BlcnR5LmtleS5uYW1lIDogcHJvcGVydHkua2V5LnZhbHVlO1xuICAgICAgcmVzdWx0LnNldChrZXksIHByb3BlcnR5LnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IHQuRXhwcmVzc2lvbik6IG5vZGUgaXMgRXh0cmFjdDx0LkZ1bmN0aW9uLCB0LkV4cHJlc3Npb24+IHtcbiAgICByZXR1cm4gdC5pc0Z1bmN0aW9uKG5vZGUpO1xuICB9XG5cbiAgcGFyc2VSZXR1cm5WYWx1ZShmbjogdC5FeHByZXNzaW9uKTogdC5FeHByZXNzaW9uIHtcbiAgICBhc3NlcnQoZm4sIHRoaXMuaXNGdW5jdGlvbkV4cHJlc3Npb24sICdhIGZ1bmN0aW9uJyk7XG4gICAgaWYgKCF0LmlzQmxvY2tTdGF0ZW1lbnQoZm4uYm9keSkpIHtcbiAgICAgIC8vIGl0IGlzIGEgc2ltcGxlIGFycmF5IGZ1bmN0aW9uIGV4cHJlc3Npb246IGAoLi4uKSA9PiBleHByYFxuICAgICAgcmV0dXJuIGZuLmJvZHk7XG4gICAgfVxuXG4gICAgLy8gaXQgaXMgYSBmdW5jdGlvbiAoYXJyb3cgb3Igbm9ybWFsKSB3aXRoIGEgYm9keS4gRS5nLjpcbiAgICAvLyAqIGAoLi4uKSA9PiB7IHN0bXQ7IC4uLiB9YFxuICAgIC8vICogYGZ1bmN0aW9uKC4uLikgeyBzdG10OyAuLi4gfWBcblxuICAgIGlmIChmbi5ib2R5LmJvZHkubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihcbiAgICAgICAgICBmbi5ib2R5LCAnVW5zdXBwb3J0ZWQgc3ludGF4LCBleHBlY3RlZCBhIGZ1bmN0aW9uIGJvZHkgd2l0aCBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50LicpO1xuICAgIH1cbiAgICBjb25zdCBzdG10ID0gZm4uYm9keS5ib2R5WzBdO1xuICAgIGFzc2VydChzdG10LCB0LmlzUmV0dXJuU3RhdGVtZW50LCAnYSBmdW5jdGlvbiBib2R5IHdpdGggYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudCcpO1xuICAgIGlmIChzdG10LmFyZ3VtZW50ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihzdG10LCAnVW5zdXBwb3J0ZWQgc3ludGF4LCBleHBlY3RlZCBmdW5jdGlvbiB0byByZXR1cm4gYSB2YWx1ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RtdC5hcmd1bWVudDtcbiAgfVxuXG4gIGlzQ2FsbEV4cHJlc3Npb24gPSB0LmlzQ2FsbEV4cHJlc3Npb247XG4gIHBhcnNlQ2FsbGVlKGNhbGw6IHQuRXhwcmVzc2lvbik6IHQuRXhwcmVzc2lvbiB7XG4gICAgYXNzZXJ0KGNhbGwsIHQuaXNDYWxsRXhwcmVzc2lvbiwgJ2EgY2FsbCBleHByZXNzaW9uJyk7XG4gICAgYXNzZXJ0KGNhbGwuY2FsbGVlLCB0LmlzRXhwcmVzc2lvbiwgJ2FuIGV4cHJlc3Npb24nKTtcbiAgICByZXR1cm4gY2FsbC5jYWxsZWU7XG4gIH1cbiAgcGFyc2VBcmd1bWVudHMoY2FsbDogdC5FeHByZXNzaW9uKTogdC5FeHByZXNzaW9uW10ge1xuICAgIGFzc2VydChjYWxsLCB0LmlzQ2FsbEV4cHJlc3Npb24sICdhIGNhbGwgZXhwcmVzc2lvbicpO1xuICAgIHJldHVybiBjYWxsLmFyZ3VtZW50cy5tYXAoYXJnID0+IHtcbiAgICAgIGFzc2VydChhcmcsIGlzTm90U3ByZWFkQXJndW1lbnQsICdhcmd1bWVudCBub3QgdG8gdXNlIHNwcmVhZCBzeW50YXgnKTtcbiAgICAgIGFzc2VydChhcmcsIHQuaXNFeHByZXNzaW9uLCAnYXJndW1lbnQgdG8gYmUgYW4gZXhwcmVzc2lvbicpO1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJhbmdlKG5vZGU6IHQuRXhwcmVzc2lvbik6IFJhbmdlIHtcbiAgICBpZiAobm9kZS5sb2MgPT0gbnVsbCB8fCBub2RlLnN0YXJ0ID09PSBudWxsIHx8IG5vZGUuZW5kID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihcbiAgICAgICAgICBub2RlLCAnVW5hYmxlIHRvIHJlYWQgcmFuZ2UgZm9yIG5vZGUgLSBpdCBpcyBtaXNzaW5nIGxvY2F0aW9uIGluZm9ybWF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnRMaW5lOiBub2RlLmxvYy5zdGFydC5saW5lIC0gMSwgIC8vIEJhYmVsIGxpbmVzIGFyZSAxLWJhc2VkXG4gICAgICBzdGFydENvbDogbm9kZS5sb2Muc3RhcnQuY29sdW1uLFxuICAgICAgc3RhcnRQb3M6IG5vZGUuc3RhcnQsXG4gICAgICBlbmRQb3M6IG5vZGUuZW5kLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBkb2VzIG5vdCByZXByZXNlbnQgYW4gZW1wdHkgZWxlbWVudCBpbiBhbiBhcnJheSBsaXRlcmFsLlxuICogRm9yIGV4YW1wbGUgaW4gYFssZm9vXWAgdGhlIGZpcnN0IGVsZW1lbnQgaXMgXCJlbXB0eVwiLlxuICovXG5mdW5jdGlvbiBpc05vdEVtcHR5RWxlbWVudChlOiB0LkV4cHJlc3Npb258dC5TcHJlYWRFbGVtZW50fG51bGwpOiBlIGlzIHQuRXhwcmVzc2lvbnxcbiAgICB0LlNwcmVhZEVsZW1lbnQge1xuICByZXR1cm4gZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBpcyBub3QgYSBzcHJlYWQgZWxlbWVudCBvZiBhbiBhcnJheSBsaXRlcmFsLlxuICogRm9yIGV4YW1wbGUgaW4gYFt4LCAuLi5yZXN0XWAgdGhlIGAuLi5yZXN0YCBleHByZXNzaW9uIGlzIGEgc3ByZWFkIGVsZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlzTm90U3ByZWFkRWxlbWVudChlOiB0LkV4cHJlc3Npb258dC5TcHJlYWRFbGVtZW50KTogZSBpcyB0LkV4cHJlc3Npb24ge1xuICByZXR1cm4gIXQuaXNTcHJlYWRFbGVtZW50KGUpO1xufVxuXG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gY2FuIGJlIGNvbnNpZGVyZWQgYSB0ZXh0IGJhc2VkIHByb3BlcnR5IG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvcGVydHlOYW1lKGU6IHQuRXhwcmVzc2lvbik6IGUgaXMgdC5JZGVudGlmaWVyfHQuU3RyaW5nTGl0ZXJhbHx0Lk51bWVyaWNMaXRlcmFsIHtcbiAgcmV0dXJuIHQuaXNJZGVudGlmaWVyKGUpIHx8IHQuaXNTdHJpbmdMaXRlcmFsKGUpIHx8IHQuaXNOdW1lcmljTGl0ZXJhbChlKTtcbn1cblxuLyoqXG4gKiBUaGUgZGVjbGFyZWQgdHlwZSBvZiBhbiBhcmd1bWVudCB0byBhIGNhbGwgZXhwcmVzc2lvbi5cbiAqL1xudHlwZSBBcmd1bWVudFR5cGUgPSB0LkNhbGxFeHByZXNzaW9uWydhcmd1bWVudHMnXVtudW1iZXJdO1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBub3QgYSBzcHJlYWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gaXNOb3RTcHJlYWRBcmd1bWVudChhcmc6IEFyZ3VtZW50VHlwZSk6IGFyZyBpcyBFeGNsdWRlPEFyZ3VtZW50VHlwZSwgdC5TcHJlYWRFbGVtZW50PiB7XG4gIHJldHVybiAhdC5pc1NwcmVhZEVsZW1lbnQoYXJnKTtcbn1cbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFiZWxfYXN0X2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsL3NyYy9hc3QvYmFiZWxfYXN0X2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILGdDQUFrQztJQUVsQyx1REFBNEU7SUFFNUU7O09BRUc7SUFDSDtRQUFBO1lBV0Usb0JBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBT3BDLHFCQUFnQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQXFCdEMsbUJBQWMsR0FBRyxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFXckMsb0JBQWUsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUM7WUE0Q3ZDLHFCQUFnQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQTJCeEMsQ0FBQztRQXhIQyxvQ0FBYSxHQUFiLFVBQWMsSUFBa0I7WUFDOUIsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbEI7aUJBQU0sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUM7UUFJRCx5Q0FBa0IsR0FBbEIsVUFBbUIsR0FBaUI7WUFDbEMsZUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ25CLENBQUM7UUFJRCww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QUFtQixDQUFDLEdBQWlCO1FBQzVDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFJRDs7T0FFRztJQUNILFNBQVMsd0JBQXdCLENBQUMsSUFBa0I7UUFDbEQsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEdBQUc7WUFDcEUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHQgZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHthc3NlcnQsIEFzdEhvc3QsIEZhdGFsTGlua2VyRXJyb3IsIFJhbmdlfSBmcm9tICcuLi8uLi8uLi8uLi9saW5rZXInO1xuXG4vKipcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYEFzdEhvc3RgIGlzIGFibGUgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gQmFiZWwgQVNUIG5vZGVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFiZWxBc3RIb3N0IGltcGxlbWVudHMgQXN0SG9zdDx0LkV4cHJlc3Npb24+IHtcbiAgZ2V0U3ltYm9sTmFtZShub2RlOiB0LkV4cHJlc3Npb24pOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKHQuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZS5uYW1lO1xuICAgIH0gZWxzZSBpZiAodC5pc01lbWJlckV4cHJlc3Npb24obm9kZSkgJiYgdC5pc0lkZW50aWZpZXIobm9kZS5wcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBub2RlLnByb3BlcnR5Lm5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGlzU3RyaW5nTGl0ZXJhbCA9IHQuaXNTdHJpbmdMaXRlcmFsO1xuXG4gIHBhcnNlU3RyaW5nTGl0ZXJhbChzdHI6IHQuRXhwcmVzc2lvbik6IHN0cmluZyB7XG4gICAgYXNzZXJ0KHN0ciwgdC5pc1N0cmluZ0xpdGVyYWwsICdhIHN0cmluZyBsaXRlcmFsJyk7XG4gICAgcmV0dXJuIHN0ci52YWx1ZTtcbiAgfVxuXG4gIGlzTnVtZXJpY0xpdGVyYWwgPSB0LmlzTnVtZXJpY0xpdGVyYWw7XG5cbiAgcGFyc2VOdW1lcmljTGl0ZXJhbChudW06IHQuRXhwcmVzc2lvbik6IG51bWJlciB7XG4gICAgYXNzZXJ0KG51bSwgdC5pc051bWVyaWNMaXRlcmFsLCAnYSBudW1lcmljIGxpdGVyYWwnKTtcbiAgICByZXR1cm4gbnVtLnZhbHVlO1xuICB9XG5cbiAgaXNCb29sZWFuTGl0ZXJhbChib29sOiB0LkV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdC5pc0Jvb2xlYW5MaXRlcmFsKGJvb2wpIHx8IGlzTWluaWZpZWRCb29sZWFuTGl0ZXJhbChib29sKTtcbiAgfVxuXG4gIHBhcnNlQm9vbGVhbkxpdGVyYWwoYm9vbDogdC5FeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHQuaXNCb29sZWFuTGl0ZXJhbChib29sKSkge1xuICAgICAgcmV0dXJuIGJvb2wudmFsdWU7XG4gICAgfSBlbHNlIGlmIChpc01pbmlmaWVkQm9vbGVhbkxpdGVyYWwoYm9vbCkpIHtcbiAgICAgIHJldHVybiAhYm9vbC5hcmd1bWVudC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEZhdGFsTGlua2VyRXJyb3IoYm9vbCwgJ1Vuc3VwcG9ydGVkIHN5bnRheCwgZXhwZWN0ZWQgYSBib29sZWFuIGxpdGVyYWwuJyk7XG4gICAgfVxuICB9XG5cbiAgaXNBcnJheUxpdGVyYWwgPSB0LmlzQXJyYXlFeHByZXNzaW9uO1xuXG4gIHBhcnNlQXJyYXlMaXRlcmFsKGFycmF5OiB0LkV4cHJlc3Npb24pOiB0LkV4cHJlc3Npb25bXSB7XG4gICAgYXNzZXJ0KGFycmF5LCB0LmlzQXJyYXlFeHByZXNzaW9uLCAnYW4gYXJyYXkgbGl0ZXJhbCcpO1xuICAgIHJldHVybiBhcnJheS5lbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICBhc3NlcnQoZWxlbWVudCwgaXNOb3RFbXB0eUVsZW1lbnQsICdlbGVtZW50IGluIGFycmF5IG5vdCB0byBiZSBlbXB0eScpO1xuICAgICAgYXNzZXJ0KGVsZW1lbnQsIGlzTm90U3ByZWFkRWxlbWVudCwgJ2VsZW1lbnQgaW4gYXJyYXkgbm90IHRvIHVzZSBzcHJlYWQgc3ludGF4Jyk7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9KTtcbiAgfVxuXG4gIGlzT2JqZWN0TGl0ZXJhbCA9IHQuaXNPYmplY3RFeHByZXNzaW9uO1xuXG4gIHBhcnNlT2JqZWN0TGl0ZXJhbChvYmo6IHQuRXhwcmVzc2lvbik6IE1hcDxzdHJpbmcsIHQuRXhwcmVzc2lvbj4ge1xuICAgIGFzc2VydChvYmosIHQuaXNPYmplY3RFeHByZXNzaW9uLCAnYW4gb2JqZWN0IGxpdGVyYWwnKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCB0LkV4cHJlc3Npb24+KCk7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBvYmoucHJvcGVydGllcykge1xuICAgICAgYXNzZXJ0KHByb3BlcnR5LCB0LmlzT2JqZWN0UHJvcGVydHksICdhIHByb3BlcnR5IGFzc2lnbm1lbnQnKTtcbiAgICAgIGFzc2VydChwcm9wZXJ0eS52YWx1ZSwgdC5pc0V4cHJlc3Npb24sICdhbiBleHByZXNzaW9uJyk7XG4gICAgICBhc3NlcnQocHJvcGVydHkua2V5LCBpc1Byb3BlcnR5TmFtZSwgJ2EgcHJvcGVydHkgbmFtZScpO1xuICAgICAgY29uc3Qga2V5ID0gdC5pc0lkZW50aWZpZXIocHJvcGVydHkua2V5KSA/IHByb3BlcnR5LmtleS5uYW1lIDogcHJvcGVydHkua2V5LnZhbHVlO1xuICAgICAgcmVzdWx0LnNldChrZXksIHByb3BlcnR5LnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IHQuRXhwcmVzc2lvbik6IG5vZGUgaXMgRXh0cmFjdDx0LkZ1bmN0aW9uLCB0LkV4cHJlc3Npb24+IHtcbiAgICByZXR1cm4gdC5pc0Z1bmN0aW9uKG5vZGUpO1xuICB9XG5cbiAgcGFyc2VSZXR1cm5WYWx1ZShmbjogdC5FeHByZXNzaW9uKTogdC5FeHByZXNzaW9uIHtcbiAgICBhc3NlcnQoZm4sIHRoaXMuaXNGdW5jdGlvbkV4cHJlc3Npb24sICdhIGZ1bmN0aW9uJyk7XG4gICAgaWYgKCF0LmlzQmxvY2tTdGF0ZW1lbnQoZm4uYm9keSkpIHtcbiAgICAgIC8vIGl0IGlzIGEgc2ltcGxlIGFycmF5IGZ1bmN0aW9uIGV4cHJlc3Npb246IGAoLi4uKSA9PiBleHByYFxuICAgICAgcmV0dXJuIGZuLmJvZHk7XG4gICAgfVxuXG4gICAgLy8gaXQgaXMgYSBmdW5jdGlvbiAoYXJyb3cgb3Igbm9ybWFsKSB3aXRoIGEgYm9keS4gRS5nLjpcbiAgICAvLyAqIGAoLi4uKSA9PiB7IHN0bXQ7IC4uLiB9YFxuICAgIC8vICogYGZ1bmN0aW9uKC4uLikgeyBzdG10OyAuLi4gfWBcblxuICAgIGlmIChmbi5ib2R5LmJvZHkubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihcbiAgICAgICAgICBmbi5ib2R5LCAnVW5zdXBwb3J0ZWQgc3ludGF4LCBleHBlY3RlZCBhIGZ1bmN0aW9uIGJvZHkgd2l0aCBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50LicpO1xuICAgIH1cbiAgICBjb25zdCBzdG10ID0gZm4uYm9keS5ib2R5WzBdO1xuICAgIGFzc2VydChzdG10LCB0LmlzUmV0dXJuU3RhdGVtZW50LCAnYSBmdW5jdGlvbiBib2R5IHdpdGggYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudCcpO1xuICAgIGlmIChzdG10LmFyZ3VtZW50ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihzdG10LCAnVW5zdXBwb3J0ZWQgc3ludGF4LCBleHBlY3RlZCBmdW5jdGlvbiB0byByZXR1cm4gYSB2YWx1ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RtdC5hcmd1bWVudDtcbiAgfVxuXG4gIGlzQ2FsbEV4cHJlc3Npb24gPSB0LmlzQ2FsbEV4cHJlc3Npb247XG4gIHBhcnNlQ2FsbGVlKGNhbGw6IHQuRXhwcmVzc2lvbik6IHQuRXhwcmVzc2lvbiB7XG4gICAgYXNzZXJ0KGNhbGwsIHQuaXNDYWxsRXhwcmVzc2lvbiwgJ2EgY2FsbCBleHByZXNzaW9uJyk7XG4gICAgYXNzZXJ0KGNhbGwuY2FsbGVlLCB0LmlzRXhwcmVzc2lvbiwgJ2FuIGV4cHJlc3Npb24nKTtcbiAgICByZXR1cm4gY2FsbC5jYWxsZWU7XG4gIH1cbiAgcGFyc2VBcmd1bWVudHMoY2FsbDogdC5FeHByZXNzaW9uKTogdC5FeHByZXNzaW9uW10ge1xuICAgIGFzc2VydChjYWxsLCB0LmlzQ2FsbEV4cHJlc3Npb24sICdhIGNhbGwgZXhwcmVzc2lvbicpO1xuICAgIHJldHVybiBjYWxsLmFyZ3VtZW50cy5tYXAoYXJnID0+IHtcbiAgICAgIGFzc2VydChhcmcsIGlzTm90U3ByZWFkQXJndW1lbnQsICdhcmd1bWVudCBub3QgdG8gdXNlIHNwcmVhZCBzeW50YXgnKTtcbiAgICAgIGFzc2VydChhcmcsIHQuaXNFeHByZXNzaW9uLCAnYXJndW1lbnQgdG8gYmUgYW4gZXhwcmVzc2lvbicpO1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJhbmdlKG5vZGU6IHQuRXhwcmVzc2lvbik6IFJhbmdlIHtcbiAgICBpZiAobm9kZS5sb2MgPT0gbnVsbCB8fCBub2RlLnN0YXJ0ID09PSBudWxsIHx8IG5vZGUuZW5kID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihcbiAgICAgICAgICBub2RlLCAnVW5hYmxlIHRvIHJlYWQgcmFuZ2UgZm9yIG5vZGUgLSBpdCBpcyBtaXNzaW5nIGxvY2F0aW9uIGluZm9ybWF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnRMaW5lOiBub2RlLmxvYy5zdGFydC5saW5lIC0gMSwgIC8vIEJhYmVsIGxpbmVzIGFyZSAxLWJhc2VkXG4gICAgICBzdGFydENvbDogbm9kZS5sb2Muc3RhcnQuY29sdW1uLFxuICAgICAgc3RhcnRQb3M6IG5vZGUuc3RhcnQsXG4gICAgICBlbmRQb3M6IG5vZGUuZW5kLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBkb2VzIG5vdCByZXByZXNlbnQgYW4gZW1wdHkgZWxlbWVudCBpbiBhbiBhcnJheSBsaXRlcmFsLlxuICogRm9yIGV4YW1wbGUgaW4gYFssZm9vXWAgdGhlIGZpcnN0IGVsZW1lbnQgaXMgXCJlbXB0eVwiLlxuICovXG5mdW5jdGlvbiBpc05vdEVtcHR5RWxlbWVudChlOiB0LkV4cHJlc3Npb258dC5TcHJlYWRFbGVtZW50fG51bGwpOiBlIGlzIHQuRXhwcmVzc2lvbnxcbiAgICB0LlNwcmVhZEVsZW1lbnQge1xuICByZXR1cm4gZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBpcyBub3QgYSBzcHJlYWQgZWxlbWVudCBvZiBhbiBhcnJheSBsaXRlcmFsLlxuICogRm9yIGV4YW1wbGUgaW4gYFt4LCAuLi5yZXN0XWAgdGhlIGAuLi5yZXN0YCBleHByZXNzaW9uIGlzIGEgc3ByZWFkIGVsZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGlzTm90U3ByZWFkRWxlbWVudChlOiB0LkV4cHJlc3Npb258dC5TcHJlYWRFbGVtZW50KTogZSBpcyB0LkV4cHJlc3Npb24ge1xuICByZXR1cm4gIXQuaXNTcHJlYWRFbGVtZW50KGUpO1xufVxuXG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gY2FuIGJlIGNvbnNpZGVyZWQgYSB0ZXh0IGJhc2VkIHByb3BlcnR5IG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvcGVydHlOYW1lKGU6IHQuRXhwcmVzc2lvbik6IGUgaXMgdC5JZGVudGlmaWVyfHQuU3RyaW5nTGl0ZXJhbHx0Lk51bWVyaWNMaXRlcmFsIHtcbiAgcmV0dXJuIHQuaXNJZGVudGlmaWVyKGUpIHx8IHQuaXNTdHJpbmdMaXRlcmFsKGUpIHx8IHQuaXNOdW1lcmljTGl0ZXJhbChlKTtcbn1cblxuLyoqXG4gKiBUaGUgZGVjbGFyZWQgdHlwZSBvZiBhbiBhcmd1bWVudCB0byBhIGNhbGwgZXhwcmVzc2lvbi5cbiAqL1xudHlwZSBBcmd1bWVudFR5cGUgPSB0LkNhbGxFeHByZXNzaW9uWydhcmd1bWVudHMnXVtudW1iZXJdO1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBhcmd1bWVudCBpcyBub3QgYSBzcHJlYWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gaXNOb3RTcHJlYWRBcmd1bWVudChhcmc6IEFyZ3VtZW50VHlwZSk6IGFyZyBpcyBFeGNsdWRlPEFyZ3VtZW50VHlwZSwgdC5TcHJlYWRFbGVtZW50PiB7XG4gIHJldHVybiAhdC5pc1NwcmVhZEVsZW1lbnQoYXJnKTtcbn1cblxudHlwZSBNaW5pZmllZEJvb2xlYW5MaXRlcmFsID0gdC5FeHByZXNzaW9uJnQuVW5hcnlFeHByZXNzaW9uJnthcmd1bWVudDogdC5OdW1lcmljTGl0ZXJhbH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgdGhlIG5vZGUgaXMgZWl0aGVyIGAhMGAgb3IgYCExYC5cbiAqL1xuZnVuY3Rpb24gaXNNaW5pZmllZEJvb2xlYW5MaXRlcmFsKG5vZGU6IHQuRXhwcmVzc2lvbik6IG5vZGUgaXMgTWluaWZpZWRCb29sZWFuTGl0ZXJhbCB7XG4gIHJldHVybiB0LmlzVW5hcnlFeHByZXNzaW9uKG5vZGUpICYmIG5vZGUucHJlZml4ICYmIG5vZGUub3BlcmF0b3IgPT09ICchJyAmJlxuICAgICAgdC5pc051bWVyaWNMaXRlcmFsKG5vZGUuYXJndW1lbnQpICYmIChub2RlLmFyZ3VtZW50LnZhbHVlID09PSAwIHx8IG5vZGUuYXJndW1lbnQudmFsdWUgPT09IDEpO1xufVxuIl19
@@ -0,0 +1,26 @@
1
+ /// <amd-module name="@angular/compiler-cli/linker/babel/src/babel_plugin" />
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ import { ConfigAPI, PluginObj } from '@babel/core';
10
+ import { LinkerOptions } from '../../src/file_linker/linker_options';
11
+ /**
12
+ * This is the Babel plugin definition that is provided as a default export from the package, such
13
+ * that the plugin can be used using the module specifier of the package. This is the recommended
14
+ * way of integrating the Angular Linker into a build pipeline other than the Angular CLI.
15
+ *
16
+ * When the module specifier `@angular/compiler-cli/linker/babel` is used as a plugin in a Babel
17
+ * configuration, Babel invokes this function (by means of the default export) to create the plugin
18
+ * instance according to the provided options.
19
+ *
20
+ * The linker plugin that is created uses the native NodeJS filesystem APIs to interact with the
21
+ * filesystem. Any logging output is printed to the console.
22
+ *
23
+ * @param api Provides access to the Babel environment that is configuring this plugin.
24
+ * @param options The plugin options that have been configured.
25
+ */
26
+ export declare function defaultLinkerPlugin(api: ConfigAPI, options: Partial<LinkerOptions>): PluginObj;
@@ -0,0 +1,38 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define("@angular/compiler-cli/linker/babel/src/babel_plugin", ["require", "exports", "tslib", "@angular/compiler-cli/src/ngtsc/file_system", "@angular/compiler-cli/src/ngtsc/logging", "@angular/compiler-cli/linker/babel/src/es2015_linker_plugin"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.defaultLinkerPlugin = void 0;
13
+ var tslib_1 = require("tslib");
14
+ var file_system_1 = require("@angular/compiler-cli/src/ngtsc/file_system");
15
+ var logging_1 = require("@angular/compiler-cli/src/ngtsc/logging");
16
+ var es2015_linker_plugin_1 = require("@angular/compiler-cli/linker/babel/src/es2015_linker_plugin");
17
+ /**
18
+ * This is the Babel plugin definition that is provided as a default export from the package, such
19
+ * that the plugin can be used using the module specifier of the package. This is the recommended
20
+ * way of integrating the Angular Linker into a build pipeline other than the Angular CLI.
21
+ *
22
+ * When the module specifier `@angular/compiler-cli/linker/babel` is used as a plugin in a Babel
23
+ * configuration, Babel invokes this function (by means of the default export) to create the plugin
24
+ * instance according to the provided options.
25
+ *
26
+ * The linker plugin that is created uses the native NodeJS filesystem APIs to interact with the
27
+ * filesystem. Any logging output is printed to the console.
28
+ *
29
+ * @param api Provides access to the Babel environment that is configuring this plugin.
30
+ * @param options The plugin options that have been configured.
31
+ */
32
+ function defaultLinkerPlugin(api, options) {
33
+ api.assertVersion(7);
34
+ return es2015_linker_plugin_1.createEs2015LinkerPlugin(tslib_1.__assign(tslib_1.__assign({}, options), { fileSystem: new file_system_1.NodeJSFileSystem(), logger: new logging_1.ConsoleLogger(logging_1.LogLevel.info) }));
35
+ }
36
+ exports.defaultLinkerPlugin = defaultLinkerPlugin;
37
+ });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFiZWxfcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL2xpbmtlci9iYWJlbC9zcmMvYmFiZWxfcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7SUFTQSwyRUFBZ0U7SUFDaEUsbUVBQW1FO0lBR25FLG9HQUFnRTtJQUVoRTs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILFNBQWdCLG1CQUFtQixDQUFDLEdBQWMsRUFBRSxPQUErQjtRQUNqRixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJCLE9BQU8sK0NBQXdCLHVDQUMxQixPQUFPLEtBQ1YsVUFBVSxFQUFFLElBQUksOEJBQWdCLEVBQUUsRUFDbEMsTUFBTSxFQUFFLElBQUksdUJBQWEsQ0FBQyxrQkFBUSxDQUFDLElBQUksQ0FBQyxJQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQVJELGtEQVFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0NvbmZpZ0FQSSwgUGx1Z2luT2JqfSBmcm9tICdAYmFiZWwvY29yZSc7XG5cbmltcG9ydCB7Tm9kZUpTRmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcbmltcG9ydCB7Q29uc29sZUxvZ2dlciwgTG9nTGV2ZWx9IGZyb20gJy4uLy4uLy4uL3NyYy9uZ3RzYy9sb2dnaW5nJztcbmltcG9ydCB7TGlua2VyT3B0aW9uc30gZnJvbSAnLi4vLi4vc3JjL2ZpbGVfbGlua2VyL2xpbmtlcl9vcHRpb25zJztcblxuaW1wb3J0IHtjcmVhdGVFczIwMTVMaW5rZXJQbHVnaW59IGZyb20gJy4vZXMyMDE1X2xpbmtlcl9wbHVnaW4nO1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIEJhYmVsIHBsdWdpbiBkZWZpbml0aW9uIHRoYXQgaXMgcHJvdmlkZWQgYXMgYSBkZWZhdWx0IGV4cG9ydCBmcm9tIHRoZSBwYWNrYWdlLCBzdWNoXG4gKiB0aGF0IHRoZSBwbHVnaW4gY2FuIGJlIHVzZWQgdXNpbmcgdGhlIG1vZHVsZSBzcGVjaWZpZXIgb2YgdGhlIHBhY2thZ2UuIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkXG4gKiB3YXkgb2YgaW50ZWdyYXRpbmcgdGhlIEFuZ3VsYXIgTGlua2VyIGludG8gYSBidWlsZCBwaXBlbGluZSBvdGhlciB0aGFuIHRoZSBBbmd1bGFyIENMSS5cbiAqXG4gKiBXaGVuIHRoZSBtb2R1bGUgc3BlY2lmaWVyIGBAYW5ndWxhci9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsYCBpcyB1c2VkIGFzIGEgcGx1Z2luIGluIGEgQmFiZWxcbiAqIGNvbmZpZ3VyYXRpb24sIEJhYmVsIGludm9rZXMgdGhpcyBmdW5jdGlvbiAoYnkgbWVhbnMgb2YgdGhlIGRlZmF1bHQgZXhwb3J0KSB0byBjcmVhdGUgdGhlIHBsdWdpblxuICogaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICpcbiAqIFRoZSBsaW5rZXIgcGx1Z2luIHRoYXQgaXMgY3JlYXRlZCB1c2VzIHRoZSBuYXRpdmUgTm9kZUpTIGZpbGVzeXN0ZW0gQVBJcyB0byBpbnRlcmFjdCB3aXRoIHRoZVxuICogZmlsZXN5c3RlbS4gQW55IGxvZ2dpbmcgb3V0cHV0IGlzIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUuXG4gKlxuICogQHBhcmFtIGFwaSBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIEJhYmVsIGVudmlyb25tZW50IHRoYXQgaXMgY29uZmlndXJpbmcgdGhpcyBwbHVnaW4uXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgcGx1Z2luIG9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRMaW5rZXJQbHVnaW4oYXBpOiBDb25maWdBUEksIG9wdGlvbnM6IFBhcnRpYWw8TGlua2VyT3B0aW9ucz4pOiBQbHVnaW5PYmoge1xuICBhcGkuYXNzZXJ0VmVyc2lvbig3KTtcblxuICByZXR1cm4gY3JlYXRlRXMyMDE1TGlua2VyUGx1Z2luKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGZpbGVTeXN0ZW06IG5ldyBOb2RlSlNGaWxlU3lzdGVtKCksXG4gICAgbG9nZ2VyOiBuZXcgQ29uc29sZUxvZ2dlcihMb2dMZXZlbC5pbmZvKSxcbiAgfSk7XG59XG4iXX0=
@@ -142,6 +142,9 @@
142
142
  else if (t.isMemberExpression(callee) && t.isIdentifier(callee.property)) {
143
143
  return callee.property.name;
144
144
  }
145
+ else if (t.isMemberExpression(callee) && t.isStringLiteral(callee.property)) {
146
+ return callee.property.value;
147
+ }
145
148
  else {
146
149
  return null;
147
150
  }
@@ -177,4 +180,4 @@
177
180
  return filename + ": " + error.message;
178
181
  }
179
182
  });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMyMDE1X2xpbmtlcl9wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsL3NyYy9lczIwMTVfbGlua2VyX3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0EsZ0NBQWtDO0lBRWxDLHVEQUFrRjtJQUVsRixrR0FBd0Q7SUFDeEQsNEZBQWtEO0lBQ2xELDBHQUFtRjtJQUluRjs7Ozs7T0FLRztJQUNILFNBQWdCLHdCQUF3QixDQUFDLEVBQXFEO1FBQXBELElBQUEsVUFBVSxnQkFBQSxFQUFFLE1BQU0sWUFBQSxFQUFLLE9BQU8sc0JBQS9CLHdCQUFnQyxDQUFEO1FBRXRFLElBQUksVUFBVSxHQUFrRSxJQUFJLENBQUM7UUFFckYsT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUU7b0JBRVA7O3VCQUVHO29CQUNILEtBQUssRUFBTCxVQUFNLElBQXlCOzt3QkFDN0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN2QiwwRkFBMEY7d0JBQzFGLGdEQUFnRDt3QkFDaEQsSUFBTSxJQUFJLEdBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQ3RDLElBQU0sUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ2xFLElBQUksQ0FBQyxRQUFRLEVBQUU7NEJBQ2IsTUFBTSxJQUFJLEtBQUssQ0FDWCx5SUFBeUksQ0FBQyxDQUFDO3lCQUNoSjt3QkFDRCxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLG1DQUFJLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFFckUsSUFBTSxpQkFBaUIsR0FBRywwQkFBaUIs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QUcsS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxhQUFhLENBQUksR0FBVztRQUNuQyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFlLEVBQUUsT0FBZSxFQUFFLElBQVk7UUFDekUsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksZ0JBQWdCLENBQUM7UUFDeEQsSUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RCxPQUFVLFFBQVEsVUFBSyxLQUFLLENBQUMsT0FBUyxDQUFDO0lBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7UGx1Z2luT2JqfSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQge05vZGVQYXRofSBmcm9tICdAYmFiZWwvdHJhdmVyc2UnO1xuaW1wb3J0ICogYXMgdCBmcm9tICdAYmFiZWwvdHlwZXMnO1xuXG5pbXBvcnQge0ZpbGVMaW5rZXIsIGlzRmF0YWxMaW5rZXJFcnJvciwgTGlua2VyRW52aXJvbm1lbnR9IGZyb20gJy4uLy4uLy4uL2xpbmtlcic7XG5cbmltcG9ydCB7QmFiZWxBc3RGYWN0b3J5fSBmcm9tICcuL2FzdC9iYWJlbF9hc3RfZmFjdG9yeSc7XG5pbXBvcnQge0JhYmVsQXN0SG9zdH0gZnJvbSAnLi9hc3QvYmFiZWxfYXN0X2hvc3QnO1xuaW1wb3J0IHtCYWJlbERlY2xhcmF0aW9uU2NvcGUsIENvbnN0YW50U2NvcGVQYXRofSBmcm9tICcuL2JhYmVsX2RlY2xhcmF0aW9uX3Njb3BlJztcbmltcG9ydCB7TGlua2VyUGx1Z2luT3B0aW9uc30gZnJvbSAnLi9saW5rZXJfcGx1Z2luX29wdGlvbnMnO1xuXG5cbi8qKlxuICogQ3JlYXRlIGEgQmFiZWwgcGx1Z2luIHRoYXQgdmlzaXRzIHRoZSBwcm9ncmFtLCBpZGVudGlmeWluZyBhbmQgbGlua2luZyBwYXJ0aWFsIGRlY2xhcmF0aW9ucy5cbiAqXG4gKiBUaGUgcGx1Z2luIGRlbGVnYXRlcyBtb3N0IG9mIGl0cyB3b3JrIHRvIGEgZ2VuZXJpYyBgRmlsZUxpbmtlcmAgZm9yIGVhY2ggZmlsZSAoYHQuUHJvZ3JhbWAgaW5cbiAqIEJhYmVsKSB0aGF0IGlzIHZpc2l0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFczIwMTVMaW5rZXJQbHVnaW4oe2ZpbGVTeXN0ZW0sIGxvZ2dlciwgLi4ub3B0aW9uc306IExpbmtlclBsdWdpbk9wdGlvbnMpOlxuICAgIFBsdWdpbk9iaiB7XG4gIGxldCBmaWxlTGlua2VyOiBGaWxlTGlua2VyPENvbnN0YW50U2NvcGVQYXRoLCB0LlN0YXRlbWVudCwgdC5FeHByZXNzaW9uPnxudWxsID0gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIHZpc2l0b3I6IHtcbiAgICAgIFByb2dyYW06IHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ3JlYXRlIGEgbmV3IGBGaWxlTGlua2VyYCBhcyB3ZSBlbnRlciBlYWNoIGZpbGUgKGB0LlByb2dyYW1gIGluIEJhYmVsKS5cbiAgICAgICAgICovXG4gICAgICAgIGVudGVyKHBhdGg6IE5vZGVQYXRoPHQuUHJvZ3JhbT4pOiB2b2lkIHtcbiAgICAgICAgICBhc3NlcnROdWxsKGZpbGVMaW5rZXIpO1xuICAgICAgICAgIC8vIEJhYmVsIGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBgZmlsZW5hbWVgIG9yIGByZWxhdGl2ZUZpbGVuYW1lYCAob3IgYm90aCwgb3IgbmVpdGhlcikgLVxuICAgICAgICAgIC8vIHBvc3NpYmx5IHJlbGF0aXZlIHRvIHRoZSBvcHRpb25hbCBgY3dkYCBwYXRoLlxuICAgICAgICAgIGNvbnN0IGZpbGU6IEJhYmVsRmlsZSA9IHBhdGguaHViLmZpbGU7XG4gICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlLm9wdHMuZmlsZW5hbWUgPz8gZmlsZS5vcHRzLmZpbGVuYW1lUmVsYXRpdmU7XG4gICAgICAgICAgaWYgKCFmaWxlbmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdObyBmaWxlbmFtZSAobm9yIGZpbGVuYW1lUmVsYXRpdmUpIHByb3ZpZGVkIGJ5IEJhYmVsLiBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgbGlua2luZyBvZiBwYXJ0aWFsbHkgY29tcGlsZWQgZGlyZWN0aXZlcyBhbmQgY29tcG9uZW50cy4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgc291cmNlVXJsID0gZmlsZVN5c3RlbS5yZXNvbHZlKGZpbGUub3B0cy5jd2QgPz8gJy4nLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgICBjb25zdCBsaW5rZXJFbnZpcm9ubWVudCA9IExpbmtlckVudmlyb25tZW50LmNyZWF0ZTx0LlN0YXRlbWVudCwgdC5FeHByZXNzaW9uPihcbiAgICAgICAgICAgICAgZmlsZVN5c3RlbSwgbG9nZ2VyLCBuZXcgQmFiZWxBc3RIb3N0KCksIG5ldyBCYWJlbEFzdEZhY3Rvcnkoc291cmNlVXJsKSwgb3B0aW9ucyk7XG4gICAgICAgICAgZmlsZUxpbmtlciA9IG5ldyBGaWxlTGlua2VyKGxpbmtlckVudmlyb25tZW50LCBzb3VyY2VVcmwsIGZpbGUuY29kZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9uIGV4aXRpbmcgdGhlIGZpbGUsIGluc2VydCBhbnkgc2hhcmVkIGNvbnN0YW50IHN0YXRlbWVudHMgdGhhdCB3ZXJlIGdlbmVyYXRlZCBkdXJpbmdcbiAgICAgICAgICogbGlua2luZyBvZiB0aGUgcGFydGlhbCBkZWNsYXJhdGlvbnMuXG4gICAgICAgICAqL1xuICAgICAgICBleGl0KCk6IHZvaWQge1xuICAgICAgICAgIGFzc2VydE5vdE51bGwoZmlsZUxpbmtlcik7XG4gICAgICAgICAgZm9yIChjb25zdCB7Y29uc3RhbnRTY29wZSwgc3RhdGVtZW50c30gb2YgZmlsZUxpbmtlci5nZXRDb25zdGFudFN0YXRlbWVudHMoKSkge1xuICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50cyhjb25zdGFudFNjb3BlLCBzdGF0ZW1lbnRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlsZUxpbmtlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogVGVzdCBlYWNoIGNhbGwgZXhwcmVzc2lvbiB0byBzZWUgaWYgaXQgaXMgYSBwYXJ0aWFsIGRlY2xhcmF0aW9uOyBpdCBpZiBpcyB0aGVuIHJlcGxhY2UgaXRcbiAgICAgICAqIHdpdGggdGhlIHJlc3VsdHMgb2YgbGlua2luZyB0aGUgZGVjbGFyYXRpb24uXG4gICAgICAgKi9cbiAgICAgIENhbGxFeHByZXNzaW9uKGNhbGw6IE5vZGVQYXRoPHQuQ2FsbEV4cHJlc3Npb24+KTogdm9pZCB7XG4gICAgICAgIGlmIChmaWxlTGlua2VyID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gQW55IHN0YXRlbWVudHMgdGhhdCBhcmUgaW5zZXJ0ZWQgdXBvbiBwcm9ncmFtIGV4aXQgd2lsbCBiZSB2aXNpdGVkIG91dHNpZGUgb2YgYW4gYWN0aXZlXG4gICAgICAgICAgLy8gbGlua2VyIGNvbnRleHQuIFRoZXNlIGNhbGwgZXhwcmVzc2lvbnMgYXJlIGtub3duIG5vdCB0byBjb250YWluIHBhcnRpYWwgZGVjbGFyYXRpb25zLFxuICAgICAgICAgIC8vIHNvIGl0J3Mgc2FmZSB0byBza2lwIHZpc2l0aW5nIHRob3NlIGNhbGwgZXhwcmVzc2lvbnMuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjYWxsZWVOYW1lID0gZ2V0Q2FsbGVlTmFtZShjYWxsKTtcbiAgICAgICAgICBpZiAoY2FsbGVlTmFtZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhcmdzID0gY2FsbC5ub2RlLmFyZ3VtZW50cztcbiAgICAgICAgICBpZiAoIWZpbGVMaW5rZXIuaXNQYXJ0aWFsRGVjbGFyYXRpb24oY2FsbGVlTmFtZSkgfHwgIWlzRXhwcmVzc2lvbkFycmF5KGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVjbGFyYXRpb25TY29wZSA9IG5ldyBCYWJlbERlY2xhcmF0aW9uU2NvcGUoY2FsbC5zY29wZSk7XG4gICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBmaWxlTGlua2VyLmxpbmtQYXJ0aWFsRGVjbGFyYXRpb24oY2FsbGVlTmFtZSwgYXJncywgZGVjbGFyYXRpb25TY29wZSk7XG5cbiAgICAgICAgICBjYWxsLnJlcGxhY2VXaXRoKHJlcGxhY2VtZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSBpc0ZhdGFsTGlua2VyRXJyb3IoZSkgPyBlLm5vZGUgYXMgdC5Ob2RlIDogY2FsbC5ub2RlO1xuICAgICAgICAgIHRocm93IGJ1aWxkQ29kZUZyYW1lRXJyb3IoY2FsbC5odWIuZmlsZSwgZS5tZXNzYWdlLCBub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBJbnNlcnQgdGhlIGBzdGF0ZW1lbnRzYCBhdCB0aGUgbG9jYXRpb24gZGVmaW5lZCBieSBgcGF0aGAuXG4gKlxuICogVGhlIGFjdHVhbCBpbnNlcnRpb24gc3RyYXRlZ3kgZGVwZW5kcyB1cG9uIHRoZSB0eXBlIG9mIHRoZSBgcGF0aGAuXG4gKi9cbmZ1bmN0aW9uIGluc2VydFN0YXRlbWVudHMocGF0aDogQ29uc3RhbnRTY29wZVBhdGgsIHN0YXRlbWVudHM6IHQuU3RhdGVtZW50W10pOiB2b2lkIHtcbiAgaWYgKHBhdGguaXNGdW5jdGlvbigpKSB7XG4gICAgaW5zZXJ0SW50b0Z1bmN0aW9uKHBhdGgsIHN0YXRlbWVudHMpO1xuICB9IGVsc2UgaWYgKHBhdGguaXNQcm9ncmFtKCkpIHtcbiAgICBpbnNlcnRJbnRvUHJvZ3JhbShwYXRoLCBzdGF0ZW1lbnRzKTtcbiAgfVxufVxuXG4vKipcbiAqIEluc2VydCB0aGUgYHN0YXRlbWVudHNgIGF0IHRoZSB0b3Agb2YgdGhlIGJvZHkgb2YgdGhlIGBmbmAgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGluc2VydEludG9GdW5jdGlvbihmbjogTm9kZVBhdGg8dC5GdW5jdGlvbj4sIHN0YXRlbWVudHM6IHQuU3RhdGVtZW50W10pOiB2b2lkIHtcbiAgY29uc3QgYm9keSA9IGZuLmdldCgnYm9keScpO1xuICBib2R5LnVuc2hpZnRDb250YWluZXIoJ2JvZHknLCBzdGF0ZW1lbnRzKTtcbn1cblxuLyoqXG4gKiBJbnNlcnQgdGhlIGBzdGF0ZW1lbnRzYCBhdCB0aGUgdG9wIG9mIHRoZSBgcHJvZ3JhbWAsIGJlbG93IGFueSBpbXBvcnQgc3RhdGVtZW50cy5cbiAqL1xuZnVuY3Rpb24gaW5zZXJ0SW50b1Byb2dyYW0ocHJvZ3JhbTogTm9kZVBhdGg8dC5Qcm9ncmFtPiwgc3RhdGVtZW50czogdC5TdGF0ZW1lbnRbXSk6IHZvaWQge1xuICBjb25zdCBib2R5ID0gcHJvZ3JhbS5nZXQoJ2JvZHknKTtcbiAgY29uc3QgaW1wb3J0U3RhdGVtZW50cyA9IGJvZHkuZmlsdGVyKHN0YXRlbWVudCA9PiBzdGF0ZW1lbnQuaXNJbXBvcnREZWNsYXJhdGlvbigpKTtcbiAgaWYgKGltcG9ydFN0YXRlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcHJvZ3JhbS51bnNoaWZ0Q29udGFpbmVyKCdib2R5Jywgc3RhdGVtZW50cyk7XG4gIH0gZWxzZSB7XG4gICAgaW1wb3J0U3RhdGVtZW50c1tpbXBvcnRTdGF0ZW1lbnRzLmxlbmd0aCAtIDFdLmluc2VydEFmdGVyKHN0YXRlbWVudHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldENhbGxlZU5hbWUoY2FsbDogTm9kZVBhdGg8dC5DYWxsRXhwcmVzc2lvbj4pOiBzdHJpbmd8bnVsbCB7XG4gIGNvbnN0IGNhbGxlZSA9IGNhbGwubm9kZS5jYWxsZWU7XG4gIGlmICh0LmlzSWRlbnRpZmllcihjYWxsZWUpKSB7XG4gICAgcmV0dXJuIGNhbGxlZS5uYW1lO1xuICB9IGVsc2UgaWYgKHQuaXNNZW1iZXJFeHByZXNzaW9uKGNhbGxlZSkgJiYgdC5pc0lkZW50aWZpZXIoY2FsbGVlLnByb3BlcnR5KSkge1xuICAgIHJldHVybiBjYWxsZWUucHJvcGVydHkubmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIGFsbCB0aGUgYG5vZGVzYCBhcmUgQmFiZWwgZXhwcmVzc2lvbnMuXG4gKi9cbmZ1bmN0aW9uIGlzRXhwcmVzc2lvbkFycmF5KG5vZGVzOiB0Lk5vZGVbXSk6IG5vZGVzIGlzIHQuRXhwcmVzc2lvbltdIHtcbiAgcmV0dXJuIG5vZGVzLmV2ZXJ5KG5vZGUgPT4gdC5pc0V4cHJlc3Npb24obm9kZSkpO1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBgb2JqYCBpcyBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE51bGw8VD4ob2JqOiBUfG51bGwpOiBhc3NlcnRzIG9iaiBpcyBudWxsIHtcbiAgaWYgKG9iaiAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHIC0gZXhwZWN0ZWQgYG9iamAgdG8gYmUgbnVsbCcpO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIGBvYmpgIGlzIG5vdCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vdE51bGw8VD4ob2JqOiBUfG51bGwpOiBhc3NlcnRzIG9iaiBpcyBUIHtcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHIC0gZXhwZWN0ZWQgYG9iamAgbm90IHRvIGJlIG51bGwnKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBlcnJvciB0aGF0IGluY2x1ZGVzIHRoZSBjb2RlIGZyYW1lIG9mIHRoZSBgbm9kZWAuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ29kZUZyYW1lRXJyb3IoZmlsZTogQmFiZWxGaWxlLCBtZXNzYWdlOiBzdHJpbmcsIG5vZGU6IHQuTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGZpbGVuYW1lID0gZmlsZS5vcHRzLmZpbGVuYW1lIHx8ICcodW5rbm93biBmaWxlKSc7XG4gIGNvbnN0IGVycm9yID0gZmlsZS5idWlsZENvZGVGcmFtZUVycm9yKG5vZGUsIG1lc3NhZ2UpO1xuICByZXR1cm4gYCR7ZmlsZW5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YDtcbn1cblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSBpcyBtYWtpbmcgdXAgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIEJhYmVsIHR5cGluZ3MgZm9yIGBOb2RlUGF0aC5odWIuZmlsZWAgYXJlXG4gKiBsYWNraW5nLlxuICovXG5pbnRlcmZhY2UgQmFiZWxGaWxlIHtcbiAgY29kZTogc3RyaW5nO1xuICBvcHRzOiB7XG4gICAgZmlsZW5hbWU/OiBzdHJpbmcsXG4gICAgZmlsZW5hbWVSZWxhdGl2ZT86IHN0cmluZyxcbiAgICBjd2Q/OiBzdHJpbmcsXG4gIH07XG5cbiAgYnVpbGRDb2RlRnJhbWVFcnJvcihub2RlOiB0Lk5vZGUsIG1lc3NhZ2U6IHN0cmluZyk6IEVycm9yO1xufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMyMDE1X2xpbmtlcl9wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL2JhYmVsL3NyYy9lczIwMTVfbGlua2VyX3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0EsZ0NBQWtDO0lBRWxDLHVEQUFrRjtJQUVsRixrR0FBd0Q7SUFDeEQsNEZBQWtEO0lBQ2xELDBHQUFtRjtJQUluRjs7Ozs7T0FLRztJQUNILFNBQWdCLHdCQUF3QixDQUFDLEVBQXFEO1FBQXBELElBQUEsVUFBVSxnQkFBQSxFQUFFLE1BQU0sWUFBQSxFQUFLLE9BQU8sc0JBQS9CLHdCQUFnQyxDQUFEO1FBRXRFLElBQUksVUFBVSxHQUFrRSxJQUFJLENBQUM7UUFFckYsT0FBTztZQUNMLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUU7b0JBRVA7O3VCQUVHO29CQUNILEtBQUssRUFBTCxVQUFNLElBQXlCOzt3QkFDN0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN2QiwwRkFBMEY7d0JBQzFGLGdEQUFnRDt3QkFDaEQsSUFBTSxJQUFJLEdBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQ3RDLElBQU0sUUFBUSxHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ2xFLElBQUksQ0FBQyxRQUFRLEVBQUU7NEJBQ2IsTUFBTSxJQUFJLEtBQUssQ0FDWCx5SUFBeUksQ0FBQyxDQUFDO3lCQUNoSjt3QkFDRCxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLG1DQUFJLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFFckUsSUFBTSxpQkFBaUIsR0FBRywwQkFBaUIs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SyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBcEIsQ0FBb0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsVUFBVSxDQUFJLEdBQVc7UUFDaEMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsYUFBYSxDQUFJLEdBQVc7UUFDbkMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsbUJBQW1CLENBQUMsSUFBZSxFQUFFLE9BQWUsRUFBRSxJQUFZO1FBQ3pFLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLGdCQUFnQixDQUFDO1FBQ3hELElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBVSxRQUFRLFVBQUssS0FBSyxDQUFDLE9BQVMsQ0FBQztJQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1BsdWdpbk9ian0gZnJvbSAnQGJhYmVsL2NvcmUnO1xuaW1wb3J0IHtOb2RlUGF0aH0gZnJvbSAnQGJhYmVsL3RyYXZlcnNlJztcbmltcG9ydCAqIGFzIHQgZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHtGaWxlTGlua2VyLCBpc0ZhdGFsTGlua2VyRXJyb3IsIExpbmtlckVudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi9saW5rZXInO1xuXG5pbXBvcnQge0JhYmVsQXN0RmFjdG9yeX0gZnJvbSAnLi9hc3QvYmFiZWxfYXN0X2ZhY3RvcnknO1xuaW1wb3J0IHtCYWJlbEFzdEhvc3R9IGZyb20gJy4vYXN0L2JhYmVsX2FzdF9ob3N0JztcbmltcG9ydCB7QmFiZWxEZWNsYXJhdGlvblNjb3BlLCBDb25zdGFudFNjb3BlUGF0aH0gZnJvbSAnLi9iYWJlbF9kZWNsYXJhdGlvbl9zY29wZSc7XG5pbXBvcnQge0xpbmtlclBsdWdpbk9wdGlvbnN9IGZyb20gJy4vbGlua2VyX3BsdWdpbl9vcHRpb25zJztcblxuXG4vKipcbiAqIENyZWF0ZSBhIEJhYmVsIHBsdWdpbiB0aGF0IHZpc2l0cyB0aGUgcHJvZ3JhbSwgaWRlbnRpZnlpbmcgYW5kIGxpbmtpbmcgcGFydGlhbCBkZWNsYXJhdGlvbnMuXG4gKlxuICogVGhlIHBsdWdpbiBkZWxlZ2F0ZXMgbW9zdCBvZiBpdHMgd29yayB0byBhIGdlbmVyaWMgYEZpbGVMaW5rZXJgIGZvciBlYWNoIGZpbGUgKGB0LlByb2dyYW1gIGluXG4gKiBCYWJlbCkgdGhhdCBpcyB2aXNpdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXMyMDE1TGlua2VyUGx1Z2luKHtmaWxlU3lzdGVtLCBsb2dnZXIsIC4uLm9wdGlvbnN9OiBMaW5rZXJQbHVnaW5PcHRpb25zKTpcbiAgICBQbHVnaW5PYmoge1xuICBsZXQgZmlsZUxpbmtlcjogRmlsZUxpbmtlcjxDb25zdGFudFNjb3BlUGF0aCwgdC5TdGF0ZW1lbnQsIHQuRXhwcmVzc2lvbj58bnVsbCA9IG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICB2aXNpdG9yOiB7XG4gICAgICBQcm9ncmFtOiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZSBhIG5ldyBgRmlsZUxpbmtlcmAgYXMgd2UgZW50ZXIgZWFjaCBmaWxlIChgdC5Qcm9ncmFtYCBpbiBCYWJlbCkuXG4gICAgICAgICAqL1xuICAgICAgICBlbnRlcihwYXRoOiBOb2RlUGF0aDx0LlByb2dyYW0+KTogdm9pZCB7XG4gICAgICAgICAgYXNzZXJ0TnVsbChmaWxlTGlua2VyKTtcbiAgICAgICAgICAvLyBCYWJlbCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgYGZpbGVuYW1lYCBvciBgcmVsYXRpdmVGaWxlbmFtZWAgKG9yIGJvdGgsIG9yIG5laXRoZXIpIC1cbiAgICAgICAgICAvLyBwb3NzaWJseSByZWxhdGl2ZSB0byB0aGUgb3B0aW9uYWwgYGN3ZGAgcGF0aC5cbiAgICAgICAgICBjb25zdCBmaWxlOiBCYWJlbEZpbGUgPSBwYXRoLmh1Yi5maWxlO1xuICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gZmlsZS5vcHRzLmZpbGVuYW1lID8/IGZpbGUub3B0cy5maWxlbmFtZVJlbGF0aXZlO1xuICAgICAgICAgIGlmICghZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnTm8gZmlsZW5hbWUgKG5vciBmaWxlbmFtZVJlbGF0aXZlKSBwcm92aWRlZCBieSBCYWJlbC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGxpbmtpbmcgb2YgcGFydGlhbGx5IGNvbXBpbGVkIGRpcmVjdGl2ZXMgYW5kIGNvbXBvbmVudHMuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHNvdXJjZVVybCA9IGZpbGVTeXN0ZW0ucmVzb2x2ZShmaWxlLm9wdHMuY3dkID8/ICcuJywgZmlsZW5hbWUpO1xuXG4gICAgICAgICAgY29uc3QgbGlua2VyRW52aXJvbm1lbnQgPSBMaW5rZXJFbnZpcm9ubWVudC5jcmVhdGU8dC5TdGF0ZW1lbnQsIHQuRXhwcmVzc2lvbj4oXG4gICAgICAgICAgICAgIGZpbGVTeXN0ZW0sIGxvZ2dlciwgbmV3IEJhYmVsQXN0SG9zdCgpLCBuZXcgQmFiZWxBc3RGYWN0b3J5KHNvdXJjZVVybCksIG9wdGlvbnMpO1xuICAgICAgICAgIGZpbGVMaW5rZXIgPSBuZXcgRmlsZUxpbmtlcihsaW5rZXJFbnZpcm9ubWVudCwgc291cmNlVXJsLCBmaWxlLmNvZGUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbiBleGl0aW5nIHRoZSBmaWxlLCBpbnNlcnQgYW55IHNoYXJlZCBjb25zdGFudCBzdGF0ZW1lbnRzIHRoYXQgd2VyZSBnZW5lcmF0ZWQgZHVyaW5nXG4gICAgICAgICAqIGxpbmtpbmcgb2YgdGhlIHBhcnRpYWwgZGVjbGFyYXRpb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgZXhpdCgpOiB2b2lkIHtcbiAgICAgICAgICBhc3NlcnROb3ROdWxsKGZpbGVMaW5rZXIpO1xuICAgICAgICAgIGZvciAoY29uc3Qge2NvbnN0YW50U2NvcGUsIHN0YXRlbWVudHN9IG9mIGZpbGVMaW5rZXIuZ2V0Q29uc3RhbnRTdGF0ZW1lbnRzKCkpIHtcbiAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHMoY29uc3RhbnRTY29wZSwgc3RhdGVtZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbGVMaW5rZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFRlc3QgZWFjaCBjYWxsIGV4cHJlc3Npb24gdG8gc2VlIGlmIGl0IGlzIGEgcGFydGlhbCBkZWNsYXJhdGlvbjsgaXQgaWYgaXMgdGhlbiByZXBsYWNlIGl0XG4gICAgICAgKiB3aXRoIHRoZSByZXN1bHRzIG9mIGxpbmtpbmcgdGhlIGRlY2xhcmF0aW9uLlxuICAgICAgICovXG4gICAgICBDYWxsRXhwcmVzc2lvbihjYWxsOiBOb2RlUGF0aDx0LkNhbGxFeHByZXNzaW9uPik6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZUxpbmtlciA9PT0gbnVsbCkge1xuICAgICAgICAgIC8vIEFueSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGluc2VydGVkIHVwb24gcHJvZ3JhbSBleGl0IHdpbGwgYmUgdmlzaXRlZCBvdXRzaWRlIG9mIGFuIGFjdGl2ZVxuICAgICAgICAgIC8vIGxpbmtlciBjb250ZXh0LiBUaGVzZSBjYWxsIGV4cHJlc3Npb25zIGFyZSBrbm93biBub3QgdG8gY29udGFpbiBwYXJ0aWFsIGRlY2xhcmF0aW9ucyxcbiAgICAgICAgICAvLyBzbyBpdCdzIHNhZmUgdG8gc2tpcCB2aXNpdGluZyB0aG9zZSBjYWxsIGV4cHJlc3Npb25zLlxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY2FsbGVlTmFtZSA9IGdldENhbGxlZU5hbWUoY2FsbCk7XG4gICAgICAgICAgaWYgKGNhbGxlZU5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYXJncyA9IGNhbGwubm9kZS5hcmd1bWVudHM7XG4gICAgICAgICAgaWYgKCFmaWxlTGlua2VyLmlzUGFydGlhbERlY2xhcmF0aW9uKGNhbGxlZU5hbWUpIHx8ICFpc0V4cHJlc3Npb25BcnJheShhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRlY2xhcmF0aW9uU2NvcGUgPSBuZXcgQmFiZWxEZWNsYXJhdGlvblNjb3BlKGNhbGwuc2NvcGUpO1xuICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gZmlsZUxpbmtlci5saW5rUGFydGlhbERlY2xhcmF0aW9uKGNhbGxlZU5hbWUsIGFyZ3MsIGRlY2xhcmF0aW9uU2NvcGUpO1xuXG4gICAgICAgICAgY2FsbC5yZXBsYWNlV2l0aChyZXBsYWNlbWVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gaXNGYXRhbExpbmtlckVycm9yKGUpID8gZS5ub2RlIGFzIHQuTm9kZSA6IGNhbGwubm9kZTtcbiAgICAgICAgICB0aHJvdyBidWlsZENvZGVGcmFtZUVycm9yKGNhbGwuaHViLmZpbGUsIGUubWVzc2FnZSwgbm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogSW5zZXJ0IHRoZSBgc3RhdGVtZW50c2AgYXQgdGhlIGxvY2F0aW9uIGRlZmluZWQgYnkgYHBhdGhgLlxuICpcbiAqIFRoZSBhY3R1YWwgaW5zZXJ0aW9uIHN0cmF0ZWd5IGRlcGVuZHMgdXBvbiB0aGUgdHlwZSBvZiB0aGUgYHBhdGhgLlxuICovXG5mdW5jdGlvbiBpbnNlcnRTdGF0ZW1lbnRzKHBhdGg6IENvbnN0YW50U2NvcGVQYXRoLCBzdGF0ZW1lbnRzOiB0LlN0YXRlbWVudFtdKTogdm9pZCB7XG4gIGlmIChwYXRoLmlzRnVuY3Rpb24oKSkge1xuICAgIGluc2VydEludG9GdW5jdGlvbihwYXRoLCBzdGF0ZW1lbnRzKTtcbiAgfSBlbHNlIGlmIChwYXRoLmlzUHJvZ3JhbSgpKSB7XG4gICAgaW5zZXJ0SW50b1Byb2dyYW0ocGF0aCwgc3RhdGVtZW50cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnNlcnQgdGhlIGBzdGF0ZW1lbnRzYCBhdCB0aGUgdG9wIG9mIHRoZSBib2R5IG9mIHRoZSBgZm5gIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBpbnNlcnRJbnRvRnVuY3Rpb24oZm46IE5vZGVQYXRoPHQuRnVuY3Rpb24+LCBzdGF0ZW1lbnRzOiB0LlN0YXRlbWVudFtdKTogdm9pZCB7XG4gIGNvbnN0IGJvZHkgPSBmbi5nZXQoJ2JvZHknKTtcbiAgYm9keS51bnNoaWZ0Q29udGFpbmVyKCdib2R5Jywgc3RhdGVtZW50cyk7XG59XG5cbi8qKlxuICogSW5zZXJ0IHRoZSBgc3RhdGVtZW50c2AgYXQgdGhlIHRvcCBvZiB0aGUgYHByb2dyYW1gLCBiZWxvdyBhbnkgaW1wb3J0IHN0YXRlbWVudHMuXG4gKi9cbmZ1bmN0aW9uIGluc2VydEludG9Qcm9ncmFtKHByb2dyYW06IE5vZGVQYXRoPHQuUHJvZ3JhbT4sIHN0YXRlbWVudHM6IHQuU3RhdGVtZW50W10pOiB2b2lkIHtcbiAgY29uc3QgYm9keSA9IHByb2dyYW0uZ2V0KCdib2R5Jyk7XG4gIGNvbnN0IGltcG9ydFN0YXRlbWVudHMgPSBib2R5LmZpbHRlcihzdGF0ZW1lbnQgPT4gc3RhdGVtZW50LmlzSW1wb3J0RGVjbGFyYXRpb24oKSk7XG4gIGlmIChpbXBvcnRTdGF0ZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHByb2dyYW0udW5zaGlmdENvbnRhaW5lcignYm9keScsIHN0YXRlbWVudHMpO1xuICB9IGVsc2Uge1xuICAgIGltcG9ydFN0YXRlbWVudHNbaW1wb3J0U3RhdGVtZW50cy5sZW5ndGggLSAxXS5pbnNlcnRBZnRlcihzdGF0ZW1lbnRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDYWxsZWVOYW1lKGNhbGw6IE5vZGVQYXRoPHQuQ2FsbEV4cHJlc3Npb24+KTogc3RyaW5nfG51bGwge1xuICBjb25zdCBjYWxsZWUgPSBjYWxsLm5vZGUuY2FsbGVlO1xuICBpZiAodC5pc0lkZW50aWZpZXIoY2FsbGVlKSkge1xuICAgIHJldHVybiBjYWxsZWUubmFtZTtcbiAgfSBlbHNlIGlmICh0LmlzTWVtYmVyRXhwcmVzc2lvbihjYWxsZWUpICYmIHQuaXNJZGVudGlmaWVyKGNhbGxlZS5wcm9wZXJ0eSkpIHtcbiAgICByZXR1cm4gY2FsbGVlLnByb3BlcnR5Lm5hbWU7XG4gIH0gZWxzZSBpZiAodC5pc01lbWJlckV4cHJlc3Npb24oY2FsbGVlKSAmJiB0LmlzU3RyaW5nTGl0ZXJhbChjYWxsZWUucHJvcGVydHkpKSB7XG4gICAgcmV0dXJuIGNhbGxlZS5wcm9wZXJ0eS52YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIGFsbCB0aGUgYG5vZGVzYCBhcmUgQmFiZWwgZXhwcmVzc2lvbnMuXG4gKi9cbmZ1bmN0aW9uIGlzRXhwcmVzc2lvbkFycmF5KG5vZGVzOiB0Lk5vZGVbXSk6IG5vZGVzIGlzIHQuRXhwcmVzc2lvbltdIHtcbiAgcmV0dXJuIG5vZGVzLmV2ZXJ5KG5vZGUgPT4gdC5pc0V4cHJlc3Npb24obm9kZSkpO1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBgb2JqYCBpcyBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE51bGw8VD4ob2JqOiBUfG51bGwpOiBhc3NlcnRzIG9iaiBpcyBudWxsIHtcbiAgaWYgKG9iaiAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHIC0gZXhwZWN0ZWQgYG9iamAgdG8gYmUgbnVsbCcpO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIGBvYmpgIGlzIG5vdCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vdE51bGw8VD4ob2JqOiBUfG51bGwpOiBhc3NlcnRzIG9iaiBpcyBUIHtcbiAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQlVHIC0gZXhwZWN0ZWQgYG9iamAgbm90IHRvIGJlIG51bGwnKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBlcnJvciB0aGF0IGluY2x1ZGVzIHRoZSBjb2RlIGZyYW1lIG9mIHRoZSBgbm9kZWAuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ29kZUZyYW1lRXJyb3IoZmlsZTogQmFiZWxGaWxlLCBtZXNzYWdlOiBzdHJpbmcsIG5vZGU6IHQuTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGZpbGVuYW1lID0gZmlsZS5vcHRzLmZpbGVuYW1lIHx8ICcodW5rbm93biBmaWxlKSc7XG4gIGNvbnN0IGVycm9yID0gZmlsZS5idWlsZENvZGVGcmFtZUVycm9yKG5vZGUsIG1lc3NhZ2UpO1xuICByZXR1cm4gYCR7ZmlsZW5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YDtcbn1cblxuLyoqXG4gKiBUaGlzIGludGVyZmFjZSBpcyBtYWtpbmcgdXAgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIEJhYmVsIHR5cGluZ3MgZm9yIGBOb2RlUGF0aC5odWIuZmlsZWAgYXJlXG4gKiBsYWNraW5nLlxuICovXG5pbnRlcmZhY2UgQmFiZWxGaWxlIHtcbiAgY29kZTogc3RyaW5nO1xuICBvcHRzOiB7XG4gICAgZmlsZW5hbWU/OiBzdHJpbmcsXG4gICAgZmlsZW5hbWVSZWxhdGl2ZT86IHN0cmluZyxcbiAgICBjd2Q/OiBzdHJpbmcsXG4gIH07XG5cbiAgYnVpbGRDb2RlRnJhbWVFcnJvcihub2RlOiB0Lk5vZGUsIG1lc3NhZ2U6IHN0cmluZyk6IEVycm9yO1xufVxuIl19
@@ -33,11 +33,17 @@ export interface AstHost<TExpression> {
33
33
  */
34
34
  parseNumericLiteral(num: TExpression): number;
35
35
  /**
36
- * Return `true` if the given expression is a boolean literal, or false otherwise.
36
+ * Return `true` if the given expression can be considered a boolean literal, or false otherwise.
37
+ *
38
+ * Note that this should also cover the special case of some minified code where `true` and
39
+ * `false` are replaced by `!0` and `!1` respectively.
37
40
  */
38
41
  isBooleanLiteral(node: TExpression): boolean;
39
42
  /**
40
43
  * Parse the boolean value from the given expression, or throw if it is not a boolean literal.
44
+ *
45
+ * Note that this should also cover the special case of some minified code where `true` and
46
+ * `false` are replaced by `!0` and `!1` respectively.
41
47
  */
42
48
  parseBooleanLiteral(bool: TExpression): boolean;
43
49
  /**
@@ -17,4 +17,4 @@
17
17
  "use strict";
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0X2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL3NyYy9hc3QvYXN0X2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQW4gYWJzdHJhY3Rpb24gZm9yIGdldHRpbmcgaW5mb3JtYXRpb24gZnJvbSBhbiBBU1Qgd2hpbGUgYmVpbmcgYWdub3N0aWMgdG8gdGhlIHVuZGVybHlpbmcgQVNUXG4gKiBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3RIb3N0PFRFeHByZXNzaW9uPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHN5bWJvbCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBub2RlLCBvciBgbnVsbGAgaWYgaXQgaXMgbm90IGFcbiAgICogc3ltYm9sLlxuICAgKi9cbiAgZ2V0U3ltYm9sTmFtZShub2RlOiBURXhwcmVzc2lvbik6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGlzIGEgc3RyaW5nIGxpdGVyYWwsIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzU3RyaW5nTGl0ZXJhbChub2RlOiBURXhwcmVzc2lvbik6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgc3RyaW5nIHZhbHVlIGZyb20gdGhlIGdpdmVuIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdCBhIHN0cmluZyBsaXRlcmFsLlxuICAgKi9cbiAgcGFyc2VTdHJpbmdMaXRlcmFsKHN0cjogVEV4cHJlc3Npb24pOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybiBgdHJ1ZWAgaWYgdGhlIGdpdmVuIGV4cHJlc3Npb24gaXMgYSBudW1lcmljIGxpdGVyYWwsIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzTnVtZXJpY0xpdGVyYWwobm9kZTogVEV4cHJlc3Npb24pOiBib29sZWFuO1xuICAvKipcbiAgICogUGFyc2UgdGhlIG51bWVyaWMgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiwgb3IgdGhyb3cgaWYgaXQgaXMgbm90IGEgbnVtZXJpYyBsaXRlcmFsLlxuICAgKi9cbiAgcGFyc2VOdW1lcmljTGl0ZXJhbChudW06IFRFeHByZXNzaW9uKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGlzIGEgYm9vbGVhbiBsaXRlcmFsLCBvciBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0Jvb2xlYW5MaXRlcmFsKG5vZGU6IFRFeHByZXNzaW9uKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhcnNlIHRoZSBib29sZWFuIHZhbHVlIGZyb20gdGhlIGdpdmVuIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdCBhIGJvb2xlYW4gbGl0ZXJhbC5cbiAgICovXG4gIHBhcnNlQm9vbGVhbkxpdGVyYWwoYm9vbDogVEV4cHJlc3Npb24pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGlzIGFuIGFycmF5IGxpdGVyYWwsIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzQXJyYXlMaXRlcmFsKG5vZGU6IFRFeHByZXNzaW9uKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhcnNlIGFuIGFycmF5IG9mIGV4cHJlc3Npb25zIGZyb20gdGhlIGdpdmVuIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdCBhbiBhcnJheVxuICAgKiBsaXRlcmFsLlxuICAgKi9cbiAgcGFyc2VBcnJheUxpdGVyYWwoYXJyYXk6IFRFeHByZXNzaW9uKTogVEV4cHJlc3Npb25bXTtcblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNPYmplY3RMaXRlcmFsKG5vZGU6IFRFeHByZXNzaW9uKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhcnNlIHRoZSBnaXZlbiBleHByZXNzaW9uIGludG8gYSBtYXAgb2Ygb2JqZWN0IHByb3BlcnR5IG5hbWVzIHRvIHByb3BlcnR5IGV4cHJlc3Npb25zLCBvclxuICAgKiB0aHJvdyBpZiBpdCBpcyBub3QgYW4gb2JqZWN0IGxpdGVyYWwuXG4gICAqL1xuICBwYXJzZU9iamVjdExpdGVyYWwob2JqOiBURXhwcmVzc2lvbik6IE1hcDxzdHJpbmcsIFRFeHByZXNzaW9uPjtcblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpcyBhIGZ1bmN0aW9uLCBvciBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBURXhwcmVzc2lvbik6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSBcInZhbHVlXCIgb2YgYSBmdW5jdGlvbiBleHByZXNzaW9uIGJ5IHBhcnNpbmcgaXRzIGJvZHkgZm9yIGEgc2luZ2xlIGByZXR1cm5gXG4gICAqIHN0YXRlbWVudCwgZXh0cmFjdGluZyB0aGUgcmV0dXJuZWQgZXhwcmVzc2lvbiwgb3IgdGhyb3cgaWYgaXQgaXMgbm90IHBvc3NpYmxlLlxuICAgKi9cbiAgcGFyc2VSZXR1cm5WYWx1ZShmbjogVEV4cHJlc3Npb24pOiBURXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGV4cHJlc3Npb24gaXMgYSBjYWxsIGV4cHJlc3Npb24sIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzQ2FsbEV4cHJlc3Npb24obm9kZTogVEV4cHJlc3Npb24pOiBib29sZWFuO1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXhwcmVzc2lvbiB0aGF0IGlzIGNhbGxlZCBpbiB0aGUgcHJvdmlkZWQgY2FsbCBleHByZXNzaW9uLCBvciB0aHJvdyBpZiBpdCBpcyBub3RcbiAgICogYSBjYWxsIGV4cHJlc3Npb24uXG4gICAqL1xuICBwYXJzZUNhbGxlZShjYWxsOiBURXhwcmVzc2lvbik6IFRFeHByZXNzaW9uO1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXJndW1lbnQgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm92aWRlZCBjYWxsIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdFxuICAgKiBhIGNhbGwgZXhwcmVzc2lvbi5cbiAgICovXG4gIHBhcnNlQXJndW1lbnRzKGNhbGw6IFRFeHByZXNzaW9uKTogVEV4cHJlc3Npb25bXTtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgbG9jYXRpb24gcmFuZ2Ugb2YgdGhlIGV4cHJlc3Npb24gaW4gdGhlIHNvdXJjZSBmaWxlLCB0byBiZSB1c2VkIGZvciBzb3VyY2UtbWFwcGluZy5cbiAgICovXG4gIGdldFJhbmdlKG5vZGU6IFRFeHByZXNzaW9uKTogUmFuZ2U7XG59XG5cbi8qKlxuICogVGhlIGxvY2F0aW9uIG9mIHRoZSBzdGFydCBhbmQgZW5kIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlIHtcbiAgLyoqIDAtYmFzZWQgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoZSByYW5nZSBzdGFydCBpbiB0aGUgc291cmNlIGZpbGUgdGV4dC4gKi9cbiAgc3RhcnRQb3M6IG51bWJlcjtcbiAgLyoqIDAtYmFzZWQgbGluZSBpbmRleCBvZiB0aGUgcmFuZ2Ugc3RhcnQgaW4gdGhlIHNvdXJjZSBmaWxlIHRleHQuICovXG4gIHN0YXJ0TGluZTogbnVtYmVyO1xuICAvKiogMC1iYXNlZCBjb2x1bW4gcG9zaXRpb24gb2YgdGhlIHJhbmdlIHN0YXJ0IGluIHRoZSBzb3VyY2UgZmlsZSB0ZXh0LiAqL1xuICBzdGFydENvbDogbnVtYmVyO1xuICAvKiogMC1iYXNlZCBjaGFyYWN0ZXIgcG9zaXRpb24gb2YgdGhlIHJhbmdlIGVuZCBpbiB0aGUgc291cmNlIGZpbGUgdGV4dC4gKi9cbiAgZW5kUG9zOiBudW1iZXI7XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0X2hvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci1jbGkvbGlua2VyL3NyYy9hc3QvYXN0X2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQW4gYWJzdHJhY3Rpb24gZm9yIGdldHRpbmcgaW5mb3JtYXRpb24gZnJvbSBhbiBBU1Qgd2hpbGUgYmVpbmcgYWdub3N0aWMgdG8gdGhlIHVuZGVybHlpbmcgQVNUXG4gKiBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3RIb3N0PFRFeHByZXNzaW9uPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWUgb2YgdGhlIHN5bWJvbCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBub2RlLCBvciBgbnVsbGAgaWYgaXQgaXMgbm90IGFcbiAgICogc3ltYm9sLlxuICAgKi9cbiAgZ2V0U3ltYm9sTmFtZShub2RlOiBURXhwcmVzc2lvbik6IHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGlzIGEgc3RyaW5nIGxpdGVyYWwsIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzU3RyaW5nTGl0ZXJhbChub2RlOiBURXhwcmVzc2lvbik6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgc3RyaW5nIHZhbHVlIGZyb20gdGhlIGdpdmVuIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdCBhIHN0cmluZyBsaXRlcmFsLlxuICAgKi9cbiAgcGFyc2VTdHJpbmdMaXRlcmFsKHN0cjogVEV4cHJlc3Npb24pOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybiBgdHJ1ZWAgaWYgdGhlIGdpdmVuIGV4cHJlc3Npb24gaXMgYSBudW1lcmljIGxpdGVyYWwsIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzTnVtZXJpY0xpdGVyYWwobm9kZTogVEV4cHJlc3Npb24pOiBib29sZWFuO1xuICAvKipcbiAgICogUGFyc2UgdGhlIG51bWVyaWMgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiwgb3IgdGhyb3cgaWYgaXQgaXMgbm90IGEgbnVtZXJpYyBsaXRlcmFsLlxuICAgKi9cbiAgcGFyc2VOdW1lcmljTGl0ZXJhbChudW06IFRFeHByZXNzaW9uKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGNhbiBiZSBjb25zaWRlcmVkIGEgYm9vbGVhbiBsaXRlcmFsLCBvciBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIHNob3VsZCBhbHNvIGNvdmVyIHRoZSBzcGVjaWFsIGNhc2Ugb2Ygc29tZSBtaW5pZmllZCBjb2RlIHdoZXJlIGB0cnVlYCBhbmRcbiAgICogYGZhbHNlYCBhcmUgcmVwbGFjZWQgYnkgYCEwYCBhbmQgYCExYCByZXNwZWN0aXZlbHkuXG4gICAqL1xuICBpc0Jvb2xlYW5MaXRlcmFsKG5vZGU6IFRFeHByZXNzaW9uKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhcnNlIHRoZSBib29sZWFuIHZhbHVlIGZyb20gdGhlIGdpdmVuIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdCBhIGJvb2xlYW4gbGl0ZXJhbC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgc2hvdWxkIGFsc28gY292ZXIgdGhlIHNwZWNpYWwgY2FzZSBvZiBzb21lIG1pbmlmaWVkIGNvZGUgd2hlcmUgYHRydWVgIGFuZFxuICAgKiBgZmFsc2VgIGFyZSByZXBsYWNlZCBieSBgITBgIGFuZCBgITFgIHJlc3BlY3RpdmVseS5cbiAgICovXG4gIHBhcnNlQm9vbGVhbkxpdGVyYWwoYm9vbDogVEV4cHJlc3Npb24pOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYHRydWVgIGlmIHRoZSBnaXZlbiBleHByZXNzaW9uIGlzIGFuIGFycmF5IGxpdGVyYWwsIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzQXJyYXlMaXRlcmFsKG5vZGU6IFRFeHByZXNzaW9uKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhcnNlIGFuIGFycmF5IG9mIGV4cHJlc3Npb25zIGZyb20gdGhlIGdpdmVuIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdCBhbiBhcnJheVxuICAgKiBsaXRlcmFsLlxuICAgKi9cbiAgcGFyc2VBcnJheUxpdGVyYWwoYXJyYXk6IFRFeHByZXNzaW9uKTogVEV4cHJlc3Npb25bXTtcblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNPYmplY3RMaXRlcmFsKG5vZGU6IFRFeHByZXNzaW9uKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFBhcnNlIHRoZSBnaXZlbiBleHByZXNzaW9uIGludG8gYSBtYXAgb2Ygb2JqZWN0IHByb3BlcnR5IG5hbWVzIHRvIHByb3BlcnR5IGV4cHJlc3Npb25zLCBvclxuICAgKiB0aHJvdyBpZiBpdCBpcyBub3QgYW4gb2JqZWN0IGxpdGVyYWwuXG4gICAqL1xuICBwYXJzZU9iamVjdExpdGVyYWwob2JqOiBURXhwcmVzc2lvbik6IE1hcDxzdHJpbmcsIFRFeHByZXNzaW9uPjtcblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBpcyBhIGZ1bmN0aW9uLCBvciBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlOiBURXhwcmVzc2lvbik6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDb21wdXRlIHRoZSBcInZhbHVlXCIgb2YgYSBmdW5jdGlvbiBleHByZXNzaW9uIGJ5IHBhcnNpbmcgaXRzIGJvZHkgZm9yIGEgc2luZ2xlIGByZXR1cm5gXG4gICAqIHN0YXRlbWVudCwgZXh0cmFjdGluZyB0aGUgcmV0dXJuZWQgZXhwcmVzc2lvbiwgb3IgdGhyb3cgaWYgaXQgaXMgbm90IHBvc3NpYmxlLlxuICAgKi9cbiAgcGFyc2VSZXR1cm5WYWx1ZShmbjogVEV4cHJlc3Npb24pOiBURXhwcmVzc2lvbjtcblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGV4cHJlc3Npb24gaXMgYSBjYWxsIGV4cHJlc3Npb24sIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzQ2FsbEV4cHJlc3Npb24obm9kZTogVEV4cHJlc3Npb24pOiBib29sZWFuO1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZXhwcmVzc2lvbiB0aGF0IGlzIGNhbGxlZCBpbiB0aGUgcHJvdmlkZWQgY2FsbCBleHByZXNzaW9uLCBvciB0aHJvdyBpZiBpdCBpcyBub3RcbiAgICogYSBjYWxsIGV4cHJlc3Npb24uXG4gICAqL1xuICBwYXJzZUNhbGxlZShjYWxsOiBURXhwcmVzc2lvbik6IFRFeHByZXNzaW9uO1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXJndW1lbnQgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm92aWRlZCBjYWxsIGV4cHJlc3Npb24sIG9yIHRocm93IGlmIGl0IGlzIG5vdFxuICAgKiBhIGNhbGwgZXhwcmVzc2lvbi5cbiAgICovXG4gIHBhcnNlQXJndW1lbnRzKGNhbGw6IFRFeHByZXNzaW9uKTogVEV4cHJlc3Npb25bXTtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgbG9jYXRpb24gcmFuZ2Ugb2YgdGhlIGV4cHJlc3Npb24gaW4gdGhlIHNvdXJjZSBmaWxlLCB0byBiZSB1c2VkIGZvciBzb3VyY2UtbWFwcGluZy5cbiAgICovXG4gIGdldFJhbmdlKG5vZGU6IFRFeHByZXNzaW9uKTogUmFuZ2U7XG59XG5cbi8qKlxuICogVGhlIGxvY2F0aW9uIG9mIHRoZSBzdGFydCBhbmQgZW5kIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlIHtcbiAgLyoqIDAtYmFzZWQgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIHRoZSByYW5nZSBzdGFydCBpbiB0aGUgc291cmNlIGZpbGUgdGV4dC4gKi9cbiAgc3RhcnRQb3M6IG51bWJlcjtcbiAgLyoqIDAtYmFzZWQgbGluZSBpbmRleCBvZiB0aGUgcmFuZ2Ugc3RhcnQgaW4gdGhlIHNvdXJjZSBmaWxlIHRleHQuICovXG4gIHN0YXJ0TGluZTogbnVtYmVyO1xuICAvKiogMC1iYXNlZCBjb2x1bW4gcG9zaXRpb24gb2YgdGhlIHJhbmdlIHN0YXJ0IGluIHRoZSBzb3VyY2UgZmlsZSB0ZXh0LiAqL1xuICBzdGFydENvbDogbnVtYmVyO1xuICAvKiogMC1iYXNlZCBjaGFyYWN0ZXIgcG9zaXRpb24gb2YgdGhlIHJhbmdlIGVuZCBpbiB0aGUgc291cmNlIGZpbGUgdGV4dC4gKi9cbiAgZW5kUG9zOiBudW1iZXI7XG59XG4iXX0=
@@ -23,7 +23,7 @@ export declare class TypeScriptAstHost implements AstHost<ts.Expression> {
23
23
  parseStringLiteral(str: ts.Expression): string;
24
24
  isNumericLiteral: typeof ts.isNumericLiteral;
25
25
  parseNumericLiteral(num: ts.Expression): number;
26
- isBooleanLiteral(node: ts.Expression): node is ts.FalseLiteral | ts.TrueLiteral;
26
+ isBooleanLiteral(node: ts.Expression): boolean;
27
27
  parseBooleanLiteral(bool: ts.Expression): boolean;
28
28
  isArrayLiteral: typeof ts.isArrayLiteralExpression;
29
29
  parseArrayLiteral(array: ts.Expression): ts.Expression[];
@@ -58,11 +58,18 @@
58
58
  return parseInt(num.text);
59
59
  };
60
60
  TypeScriptAstHost.prototype.isBooleanLiteral = function (node) {
61
- return node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword;
61
+ return isBooleanLiteral(node) || isMinifiedBooleanLiteral(node);
62
62
  };
63
63
  TypeScriptAstHost.prototype.parseBooleanLiteral = function (bool) {
64
- utils_1.assert(bool, this.isBooleanLiteral, 'a boolean literal');
65
- return bool.kind === ts.SyntaxKind.TrueKeyword;
64
+ if (isBooleanLiteral(bool)) {
65
+ return bool.kind === ts.SyntaxKind.TrueKeyword;
66
+ }
67
+ else if (isMinifiedBooleanLiteral(bool)) {
68
+ return !(+bool.operand.text);
69
+ }
70
+ else {
71
+ throw new fatal_linker_error_1.FatalLinkerError(bool, 'Unsupported syntax, expected a boolean literal.');
72
+ }
66
73
  };
67
74
  TypeScriptAstHost.prototype.parseArrayLiteral = function (array) {
68
75
  utils_1.assert(array, this.isArrayLiteral, 'an array literal');
@@ -159,5 +166,18 @@
159
166
  function isPropertyName(e) {
160
167
  return ts.isIdentifier(e) || ts.isStringLiteral(e) || ts.isNumericLiteral(e);
161
168
  }
169
+ /**
170
+ * Return true if the node is either `true` or `false` literals.
171
+ */
172
+ function isBooleanLiteral(node) {
173
+ return node.kind === ts.SyntaxKind.TrueKeyword || node.kind === ts.SyntaxKind.FalseKeyword;
174
+ }
175
+ /**
176
+ * Return true if the node is either `!0` or `!1`.
177
+ */
178
+ function isMinifiedBooleanLiteral(node) {
179
+ return ts.isPrefixUnaryExpression(node) && node.operator === ts.SyntaxKind.ExclamationToken &&
180
+ ts.isNumericLiteral(node.operand) && (node.operand.text === '0' || node.operand.text === '1');
181
+ }
162
182
  });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9hc3RfaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9saW5rZXIvc3JjL2FzdC90eXBlc2NyaXB0L3R5cGVzY3JpcHRfYXN0X2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQywwRkFBMEQ7SUFFMUQsb0VBQWdDO0lBR2hDOzs7Ozs7OztPQVFHO0lBQ0g7UUFBQTtZQVdFLG9CQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQU9yQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFnQnZDLG1CQUFjLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1lBVzdDLG9CQUFlLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO1lBMEMvQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUEwQnpDLENBQUM7UUFoSEMseUNBQWEsR0FBYixVQUFjLElBQW1CO1lBQy9CLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCO2lCQUFNLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO1FBSUQsOENBQWtCLEdBQWxCLFVBQW1CLEdBQWtCO1lBQ25DLGNBQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sR0FB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Q0FBQztZQUN2QixJQUFBLEtBQXlDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQWxGLFNBQVMsVUFBQSxFQUFhLFFBQVEsZUFBb0QsQ0FBQztZQUNoRyxPQUFPLEVBQUMsU0FBUyxXQUFBLEVBQUUsUUFBUSxVQUFBLEVBQUUsUUFBUSxVQUFBLEVBQUUsTUFBTSxRQUFBLEVBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0gsd0JBQUM7SUFBRCxDQUFDLEFBakhELElBaUhDO0lBakhZLDhDQUFpQjtJQW1IOUI7OztPQUdHO0lBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxDQUNvQjtRQUM3QyxPQUFPLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLGtCQUFrQixDQUFDLENBQWlDO1FBQzNELE9BQU8sQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsY0FBYyxDQUFDLENBQWtCO1FBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ZhdGFsTGlua2VyRXJyb3J9IGZyb20gJy4uLy4uL2ZhdGFsX2xpbmtlcl9lcnJvcic7XG5pbXBvcnQge0FzdEhvc3QsIFJhbmdlfSBmcm9tICcuLi9hc3RfaG9zdCc7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5cbi8qKlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgQXN0SG9zdGAgaXMgYWJsZSB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSBUeXBlU2NyaXB0IEFTVCBub2Rlcy5cbiAqXG4gKiBUaGlzIGhvc3QgaXMgbm90IGFjdHVhbGx5IHVzZWQgYXQgcnVudGltZSBpbiB0aGUgY3VycmVudCBjb2RlLlxuICpcbiAqIEl0IGlzIGltcGxlbWVudGVkIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGBBc3RIb3N0YCBhYnN0cmFjdGlvbiBpcyBub3QgdW5mYWlybHkgc2tld2VkIHRvd2FyZHNcbiAqIHRoZSBCYWJlbCBpbXBsZW1lbnRhdGlvbi4gSXQgY291bGQgYWxzbyBwcm92aWRlIGEgYmFzaXMgZm9yIGEgM3JkIFR5cGVTY3JpcHQgY29tcGlsZXIgcGx1Z2luIHRvXG4gKiBkbyBsaW5raW5nIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0QXN0SG9zdCBpbXBsZW1lbnRzIEFzdEhvc3Q8dHMuRXhwcmVzc2lvbj4ge1xuICBnZXRTeW1ib2xOYW1lKG5vZGU6IHRzLkV4cHJlc3Npb24pOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGUudGV4dDtcbiAgICB9IGVsc2UgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUpICYmIHRzLmlzSWRlbnRpZmllcihub2RlLm5hbWUpKSB7XG4gICAgICByZXR1cm4gbm9kZS5uYW1lLnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGlzU3RyaW5nTGl0ZXJhbCA9IHRzLmlzU3RyaW5nTGl0ZXJhbDtcblxuICBwYXJzZVN0cmluZ0xpdGVyYWwoc3RyOiB0cy5FeHByZXNzaW9uKTogc3RyaW5nIHtcbiAgICBhc3NlcnQoc3RyLCB0aGlzLmlzU3RyaW5nTGl0ZXJhbCwgJ2Egc3RyaW5nIGxpdGVyYWwnKTtcbiAgICByZXR1cm4gc3RyLnRleHQ7XG4gIH1cblxuICBpc051bWVyaWNMaXRlcmFsID0gdHMuaXNOdW1lcmljTGl0ZXJhbDtcblxuICBwYXJzZU51bWVyaWNMaXRlcmFsKG51bTogdHMuRXhwcmVzc2lvbik6IG51bWJlciB7XG4gICAgYXNzZXJ0KG51bSwgdGhpcy5pc051bWVyaWNMaXRlcmFsLCAnYSBudW1lcmljIGxpdGVyYWwnKTtcbiAgICByZXR1cm4gcGFyc2VJbnQobnVtLnRleHQpO1xuICB9XG5cbiAgaXNCb29sZWFuTGl0ZXJhbChub2RlOiB0cy5FeHByZXNzaW9uKTogbm9kZSBpcyB0cy5GYWxzZUxpdGVyYWx8dHMuVHJ1ZUxpdGVyYWwge1xuICAgIHJldHVybiBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQgfHwgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkZhbHNlS2V5d29yZDtcbiAgfVxuXG4gIHBhcnNlQm9vbGVhbkxpdGVyYWwoYm9vbDogdHMuRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICAgIGFzc2VydChib29sLCB0aGlzLmlzQm9vbGVhbkxpdGVyYWwsICdhIGJvb2xlYW4gbGl0ZXJhbCcpO1xuICAgIHJldHVybiBib29sLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQ7XG4gIH1cblxuICBpc0FycmF5TGl0ZXJhbCA9IHRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbjtcblxuICBwYXJzZUFycmF5TGl0ZXJhbChhcnJheTogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb25bXSB7XG4gICAgYXNzZXJ0KGFycmF5LCB0aGlzLmlzQXJyYXlMaXRlcmFsLCAnYW4gYXJyYXkgbGl0ZXJhbCcpO1xuICAgIHJldHVybiBhcnJheS5lbGVtZW50cy5tYXAoZWxlbWVudCA9PiB7XG4gICAgICBhc3NlcnQoZWxlbWVudCwgaXNOb3RFbXB0eUVsZW1lbnQsICdlbGVtZW50IGluIGFycmF5IG5vdCB0byBiZSBlbXB0eScpO1xuICAgICAgYXNzZXJ0KGVsZW1lbnQsIGlzTm90U3ByZWFkRWxlbWVudCwgJ2VsZW1lbnQgaW4gYXJyYXkgbm90IHRvIHVzZSBzcHJlYWQgc3ludGF4Jyk7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9KTtcbiAgfVxuXG4gIGlzT2JqZWN0TGl0ZXJhbCA9IHRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb247XG5cbiAgcGFyc2VPYmplY3RMaXRlcmFsKG9iajogdHMuRXhwcmVzc2lvbik6IE1hcDxzdHJpbmcsIHRzLkV4cHJlc3Npb24+IHtcbiAgICBhc3NlcnQob2JqLCB0aGlzLmlzT2JqZWN0TGl0ZXJhbCwgJ2FuIG9iamVjdCBsaXRlcmFsJyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgdHMuRXhwcmVzc2lvbj4oKTtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG9iai5wcm9wZXJ0aWVzKSB7XG4gICAgICBhc3NlcnQocHJvcGVydHksIHRzLmlzUHJvcGVydHlBc3NpZ25tZW50LCAnYSBwcm9wZXJ0eSBhc3NpZ25tZW50Jyk7XG4gICAgICBhc3NlcnQocHJvcGVydHkubmFtZSwgaXNQcm9wZXJ0eU5hbWUsICdhIHByb3BlcnR5IG5hbWUnKTtcbiAgICAgIHJlc3VsdC5zZXQocHJvcGVydHkubmFtZS50ZXh0LCBwcm9wZXJ0eS5pbml0aWFsaXplcik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpc0Z1bmN0aW9uRXhwcmVzc2lvbihub2RlOiB0cy5FeHByZXNzaW9uKTogbm9kZSBpcyB0cy5GdW5jdGlvbkV4cHJlc3Npb258dHMuQXJyb3dGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRzLmlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGUpIHx8IHRzLmlzQXJyb3dGdW5jdGlvbihub2RlKTtcbiAgfVxuXG4gIHBhcnNlUmV0dXJuVmFsdWUoZm46IHRzLkV4cHJlc3Npb24pOiB0cy5FeHByZXNzaW9uIHtcbiAgICBhc3NlcnQoZm4sIHRoaXMuaXNGdW5jdGlvbkV4cHJlc3Npb24sICdhIGZ1bmN0aW9uJyk7XG4gICAgaWYgKCF0cy5pc0Jsb2NrKGZuLmJvZHkpKSB7XG4gICAgICAvLyBpdCBpcyBhIHNpbXBsZSBhcnJheSBmdW5jdGlvbiBleHByZXNzaW9uOiBgKC4uLikgPT4gZXhwcmBcbiAgICAgIHJldHVybiBmbi5ib2R5O1xuICAgIH1cblxuICAgIC8vIGl0IGlzIGEgZnVuY3Rpb24gKGFycm93IG9yIG5vcm1hbCkgd2l0aCBhIGJvZHkuIEUuZy46XG4gICAgLy8gKiBgKC4uLikgPT4geyBzdG10OyAuLi4gfWBcbiAgICAvLyAqIGBmdW5jdGlvbiguLi4pIHsgc3RtdDsgLi4uIH1gXG5cbiAgICBpZiAoZm4uYm9keS5zdGF0ZW1lbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEZhdGFsTGlua2VyRXJyb3IoXG4gICAgICAgICAgZm4uYm9keSwgJ1Vuc3VwcG9ydGVkIHN5bnRheCwgZXhwZWN0ZWQgYSBmdW5jdGlvbiBib2R5IHdpdGggYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudC4nKTtcbiAgICB9XG4gICAgY29uc3Qgc3RtdCA9IGZuLmJvZHkuc3RhdGVtZW50c1swXTtcbiAgICBhc3NlcnQoc3RtdCwgdHMuaXNSZXR1cm5TdGF0ZW1lbnQsICdhIGZ1bmN0aW9uIGJvZHkgd2l0aCBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50Jyk7XG4gICAgaWYgKHN0bXQuZXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihzdG10LCAnVW5zdXBwb3J0ZWQgc3ludGF4LCBleHBlY3RlZCBmdW5jdGlvbiB0byByZXR1cm4gYSB2YWx1ZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RtdC5leHByZXNzaW9uO1xuICB9XG5cbiAgaXNDYWxsRXhwcmVzc2lvbiA9IHRzLmlzQ2FsbEV4cHJlc3Npb247XG5cbiAgcGFyc2VDYWxsZWUoY2FsbDogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb24ge1xuICAgIGFzc2VydChjYWxsLCB0cy5pc0NhbGxFeHByZXNzaW9uLCAnYSBjYWxsIGV4cHJlc3Npb24nKTtcbiAgICByZXR1cm4gY2FsbC5leHByZXNzaW9uO1xuICB9XG5cbiAgcGFyc2VBcmd1bWVudHMoY2FsbDogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb25bXSB7XG4gICAgYXNzZXJ0KGNhbGwsIHRzLmlzQ2FsbEV4cHJlc3Npb24sICdhIGNhbGwgZXhwcmVzc2lvbicpO1xuICAgIHJldHVybiBjYWxsLmFyZ3VtZW50cy5tYXAoYXJnID0+IHtcbiAgICAgIGFzc2VydChhcmcsIGlzTm90U3ByZWFkRWxlbWVudCwgJ2FyZ3VtZW50IG5vdCB0byB1c2Ugc3ByZWFkIHN5bnRheCcpO1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJhbmdlKG5vZGU6IHRzLkV4cHJlc3Npb24pOiBSYW5nZSB7XG4gICAgY29uc3QgZmlsZSA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xuICAgIGlmIChmaWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBGYXRhbExpbmtlckVycm9yKFxuICAgICAgICAgIG5vZGUsICdVbmFibGUgdG8gcmVhZCByYW5nZSBmb3Igbm9kZSAtIGl0IGlzIG1pc3NpbmcgcGFyZW50IGluZm9ybWF0aW9uLicpO1xuICAgIH1cbiAgICBjb25zdCBzdGFydFBvcyA9IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICBjb25zdCBlbmRQb3MgPSBub2RlLmdldEVuZCgpO1xuICAgIGNvbnN0IHtsaW5lOiBzdGFydExpbmUsIGNoYXJhY3Rlcjogc3RhcnRDb2x9ID0gdHMuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZmlsZSwgc3RhcnRQb3MpO1xuICAgIHJldHVybiB7c3RhcnRMaW5lLCBzdGFydENvbCwgc3RhcnRQb3MsIGVuZFBvc307XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhwcmVzc2lvbiBkb2VzIG5vdCByZXByZXNlbnQgYW4gZW1wdHkgZWxlbWVudCBpbiBhbiBhcnJheSBsaXRlcmFsLlxuICogRm9yIGV4YW1wbGUgaW4gYFssZm9vXWAgdGhlIGZpcnN0IGVsZW1lbnQgaXMgXCJlbXB0eVwiLlxuICovXG5mdW5jdGlvbiBpc05vdEVtcHR5RWxlbWVudChlOiB0cy5FeHByZXNzaW9ufHRzLlNwcmVhZEVsZW1lbnR8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cy5PbWl0dGVkRXhwcmVzc2lvbik6IGUgaXMgdHMuRXhwcmVzc2lvbnx0cy5TcHJlYWRFbGVtZW50IHtcbiAgcmV0dXJuICF0cy5pc09taXR0ZWRFeHByZXNzaW9uKGUpO1xufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBleHByZXNzaW9uIGlzIG5vdCBhIHNwcmVhZCBlbGVtZW50IG9mIGFuIGFycmF5IGxpdGVyYWwuXG4gKiBGb3IgZXhhbXBsZSBpbiBgW3gsIC4uLnJlc3RdYCB0aGUgYC4uLnJlc3RgIGV4cHJlc3Npb24gaXMgYSBzcHJlYWQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gaXNOb3RTcHJlYWRFbGVtZW50KGU6IHRzLkV4cHJlc3Npb258dHMuU3ByZWFkRWxlbWVudCk6IGUgaXMgdHMuRXhwcmVzc2lvbiB7XG4gIHJldHVybiAhdHMuaXNTcHJlYWRFbGVtZW50KGUpO1xufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBleHByZXNzaW9uIGNhbiBiZSBjb25zaWRlcmVkIGEgdGV4dCBiYXNlZCBwcm9wZXJ0eSBuYW1lLlxuICovXG5mdW5jdGlvbiBpc1Byb3BlcnR5TmFtZShlOiB0cy5Qcm9wZXJ0eU5hbWUpOiBlIGlzIHRzLklkZW50aWZpZXJ8dHMuU3RyaW5nTGl0ZXJhbHx0cy5OdW1lcmljTGl0ZXJhbCB7XG4gIHJldHVybiB0cy5pc0lkZW50aWZpZXIoZSkgfHwgdHMuaXNTdHJpbmdMaXRlcmFsKGUpIHx8IHRzLmlzTnVtZXJpY0xpdGVyYWwoZSk7XG59XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9hc3RfaG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9saW5rZXIvc3JjL2FzdC90eXBlc2NyaXB0L3R5cGVzY3JpcHRfYXN0X2hvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7OztJQUVILCtCQUFpQztJQUVqQywwRkFBMEQ7SUFFMUQsb0VBQWdDO0lBR2hDOzs7Ozs7OztPQVFHO0lBQ0g7UUFBQTtZQVdFLG9CQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQU9yQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFxQnZDLG1CQUFjLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1lBVzdDLG9CQUFlLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO1lBMEMvQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUEwQnpDLENBQUM7UUFySEMseUNBQWEsR0FBYixVQUFjLElBQW1CO1lBQy9CLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCO2lCQUFNLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLE9BQU8sSUFBSSxDQUFDO2FBQ2I7UUFDSCxDQUFDO1FBSUQsOENBQWtCLEdBQWxCLFVBQW1CLEdBQWtCO1lBQ25DLGNBQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sR0FB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LHdCQUF3QixDQUFDLElBQW1CO1FBQ25ELE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDdkYsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0ZhdGFsTGlua2VyRXJyb3J9IGZyb20gJy4uLy4uL2ZhdGFsX2xpbmtlcl9lcnJvcic7XG5pbXBvcnQge0FzdEhvc3QsIFJhbmdlfSBmcm9tICcuLi9hc3RfaG9zdCc7XG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5cbi8qKlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgQXN0SG9zdGAgaXMgYWJsZSB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSBUeXBlU2NyaXB0IEFTVCBub2Rlcy5cbiAqXG4gKiBUaGlzIGhvc3QgaXMgbm90IGFjdHVhbGx5IHVzZWQgYXQgcnVudGltZSBpbiB0aGUgY3VycmVudCBjb2RlLlxuICpcbiAqIEl0IGlzIGltcGxlbWVudGVkIGhlcmUgdG8gZW5zdXJlIHRoYXQgdGhlIGBBc3RIb3N0YCBhYnN0cmFjdGlvbiBpcyBub3QgdW5mYWlybHkgc2tld2VkIHRvd2FyZHNcbiAqIHRoZSBCYWJlbCBpbXBsZW1lbnRhdGlvbi4gSXQgY291bGQgYWxzbyBwcm92aWRlIGEgYmFzaXMgZm9yIGEgM3JkIFR5cGVTY3JpcHQgY29tcGlsZXIgcGx1Z2luIHRvXG4gKiBkbyBsaW5raW5nIGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0QXN0SG9zdCBpbXBsZW1lbnRzIEFzdEhvc3Q8dHMuRXhwcmVzc2lvbj4ge1xuICBnZXRTeW1ib2xOYW1lKG5vZGU6IHRzLkV4cHJlc3Npb24pOiBzdHJpbmd8bnVsbCB7XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGUudGV4dDtcbiAgICB9IGVsc2UgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUpICYmIHRzLmlzSWRlbnRpZmllcihub2RlLm5hbWUpKSB7XG4gICAgICByZXR1cm4gbm9kZS5uYW1lLnRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGlzU3RyaW5nTGl0ZXJhbCA9IHRzLmlzU3RyaW5nTGl0ZXJhbDtcblxuICBwYXJzZVN0cmluZ0xpdGVyYWwoc3RyOiB0cy5FeHByZXNzaW9uKTogc3RyaW5nIHtcbiAgICBhc3NlcnQoc3RyLCB0aGlzLmlzU3RyaW5nTGl0ZXJhbCwgJ2Egc3RyaW5nIGxpdGVyYWwnKTtcbiAgICByZXR1cm4gc3RyLnRleHQ7XG4gIH1cblxuICBpc051bWVyaWNMaXRlcmFsID0gdHMuaXNOdW1lcmljTGl0ZXJhbDtcblxuICBwYXJzZU51bWVyaWNMaXRlcmFsKG51bTogdHMuRXhwcmVzc2lvbik6IG51bWJlciB7XG4gICAgYXNzZXJ0KG51bSwgdGhpcy5pc051bWVyaWNMaXRlcmFsLCAnYSBudW1lcmljIGxpdGVyYWwnKTtcbiAgICByZXR1cm4gcGFyc2VJbnQobnVtLnRleHQpO1xuICB9XG5cbiAgaXNCb29sZWFuTGl0ZXJhbChub2RlOiB0cy5FeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzQm9vbGVhbkxpdGVyYWwobm9kZSkgfHwgaXNNaW5pZmllZEJvb2xlYW5MaXRlcmFsKG5vZGUpO1xuICB9XG5cbiAgcGFyc2VCb29sZWFuTGl0ZXJhbChib29sOiB0cy5FeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQm9vbGVhbkxpdGVyYWwoYm9vbCkpIHtcbiAgICAgIHJldHVybiBib29sLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQ7XG4gICAgfSBlbHNlIGlmIChpc01pbmlmaWVkQm9vbGVhbkxpdGVyYWwoYm9vbCkpIHtcbiAgICAgIHJldHVybiAhKCtib29sLm9wZXJhbmQudGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBGYXRhbExpbmtlckVycm9yKGJvb2wsICdVbnN1cHBvcnRlZCBzeW50YXgsIGV4cGVjdGVkIGEgYm9vbGVhbiBsaXRlcmFsLicpO1xuICAgIH1cbiAgfVxuXG4gIGlzQXJyYXlMaXRlcmFsID0gdHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uO1xuXG4gIHBhcnNlQXJyYXlMaXRlcmFsKGFycmF5OiB0cy5FeHByZXNzaW9uKTogdHMuRXhwcmVzc2lvbltdIHtcbiAgICBhc3NlcnQoYXJyYXksIHRoaXMuaXNBcnJheUxpdGVyYWwsICdhbiBhcnJheSBsaXRlcmFsJyk7XG4gICAgcmV0dXJuIGFycmF5LmVsZW1lbnRzLm1hcChlbGVtZW50ID0+IHtcbiAgICAgIGFzc2VydChlbGVtZW50LCBpc05vdEVtcHR5RWxlbWVudCwgJ2VsZW1lbnQgaW4gYXJyYXkgbm90IHRvIGJlIGVtcHR5Jyk7XG4gICAgICBhc3NlcnQoZWxlbWVudCwgaXNOb3RTcHJlYWRFbGVtZW50LCAnZWxlbWVudCBpbiBhcnJheSBub3QgdG8gdXNlIHNwcmVhZCBzeW50YXgnKTtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0pO1xuICB9XG5cbiAgaXNPYmplY3RMaXRlcmFsID0gdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbjtcblxuICBwYXJzZU9iamVjdExpdGVyYWwob2JqOiB0cy5FeHByZXNzaW9uKTogTWFwPHN0cmluZywgdHMuRXhwcmVzc2lvbj4ge1xuICAgIGFzc2VydChvYmosIHRoaXMuaXNPYmplY3RMaXRlcmFsLCAnYW4gb2JqZWN0IGxpdGVyYWwnKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCB0cy5FeHByZXNzaW9uPigpO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2Ygb2JqLnByb3BlcnRpZXMpIHtcbiAgICAgIGFzc2VydChwcm9wZXJ0eSwgdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQsICdhIHByb3BlcnR5IGFzc2lnbm1lbnQnKTtcbiAgICAgIGFzc2VydChwcm9wZXJ0eS5uYW1lLCBpc1Byb3BlcnR5TmFtZSwgJ2EgcHJvcGVydHkgbmFtZScpO1xuICAgICAgcmVzdWx0LnNldChwcm9wZXJ0eS5uYW1lLnRleHQsIHByb3BlcnR5LmluaXRpYWxpemVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlzRnVuY3Rpb25FeHByZXNzaW9uKG5vZGU6IHRzLkV4cHJlc3Npb24pOiBub2RlIGlzIHRzLkZ1bmN0aW9uRXhwcmVzc2lvbnx0cy5BcnJvd0Z1bmN0aW9uIHtcbiAgICByZXR1cm4gdHMuaXNGdW5jdGlvbkV4cHJlc3Npb24obm9kZSkgfHwgdHMuaXNBcnJvd0Z1bmN0aW9uKG5vZGUpO1xuICB9XG5cbiAgcGFyc2VSZXR1cm5WYWx1ZShmbjogdHMuRXhwcmVzc2lvbik6IHRzLkV4cHJlc3Npb24ge1xuICAgIGFzc2VydChmbiwgdGhpcy5pc0Z1bmN0aW9uRXhwcmVzc2lvbiwgJ2EgZnVuY3Rpb24nKTtcbiAgICBpZiAoIXRzLmlzQmxvY2soZm4uYm9keSkpIHtcbiAgICAgIC8vIGl0IGlzIGEgc2ltcGxlIGFycmF5IGZ1bmN0aW9uIGV4cHJlc3Npb246IGAoLi4uKSA9PiBleHByYFxuICAgICAgcmV0dXJuIGZuLmJvZHk7XG4gICAgfVxuXG4gICAgLy8gaXQgaXMgYSBmdW5jdGlvbiAoYXJyb3cgb3Igbm9ybWFsKSB3aXRoIGEgYm9keS4gRS5nLjpcbiAgICAvLyAqIGAoLi4uKSA9PiB7IHN0bXQ7IC4uLiB9YFxuICAgIC8vICogYGZ1bmN0aW9uKC4uLikgeyBzdG10OyAuLi4gfWBcblxuICAgIGlmIChmbi5ib2R5LnN0YXRlbWVudHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRmF0YWxMaW5rZXJFcnJvcihcbiAgICAgICAgICBmbi5ib2R5LCAnVW5zdXBwb3J0ZWQgc3ludGF4LCBleHBlY3RlZCBhIGZ1bmN0aW9uIGJvZHkgd2l0aCBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50LicpO1xuICAgIH1cbiAgICBjb25zdCBzdG10ID0gZm4uYm9keS5zdGF0ZW1lbnRzWzBdO1xuICAgIGFzc2VydChzdG10LCB0cy5pc1JldHVyblN0YXRlbWVudCwgJ2EgZnVuY3Rpb24gYm9keSB3aXRoIGEgc2luZ2xlIHJldHVybiBzdGF0ZW1lbnQnKTtcbiAgICBpZiAoc3RtdC5leHByZXNzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBGYXRhbExpbmtlckVycm9yKHN0bXQsICdVbnN1cHBvcnRlZCBzeW50YXgsIGV4cGVjdGVkIGZ1bmN0aW9uIHRvIHJldHVybiBhIHZhbHVlLicpO1xuICAgIH1cblxuICAgIHJldHVybiBzdG10LmV4cHJlc3Npb247XG4gIH1cblxuICBpc0NhbGxFeHByZXNzaW9uID0gdHMuaXNDYWxsRXhwcmVzc2lvbjtcblxuICBwYXJzZUNhbGxlZShjYWxsOiB0cy5FeHByZXNzaW9uKTogdHMuRXhwcmVzc2lvbiB7XG4gICAgYXNzZXJ0KGNhbGwsIHRzLmlzQ2FsbEV4cHJlc3Npb24sICdhIGNhbGwgZXhwcmVzc2lvbicpO1xuICAgIHJldHVybiBjYWxsLmV4cHJlc3Npb247XG4gIH1cblxuICBwYXJzZUFyZ3VtZW50cyhjYWxsOiB0cy5FeHByZXNzaW9uKTogdHMuRXhwcmVzc2lvbltdIHtcbiAgICBhc3NlcnQoY2FsbCwgdHMuaXNDYWxsRXhwcmVzc2lvbiwgJ2EgY2FsbCBleHByZXNzaW9uJyk7XG4gICAgcmV0dXJuIGNhbGwuYXJndW1lbnRzLm1hcChhcmcgPT4ge1xuICAgICAgYXNzZXJ0KGFyZywgaXNOb3RTcHJlYWRFbGVtZW50LCAnYXJndW1lbnQgbm90IHRvIHVzZSBzcHJlYWQgc3ludGF4Jyk7XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmFuZ2Uobm9kZTogdHMuRXhwcmVzc2lvbik6IFJhbmdlIHtcbiAgICBjb25zdCBmaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XG4gICAgaWYgKGZpbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEZhdGFsTGlua2VyRXJyb3IoXG4gICAgICAgICAgbm9kZSwgJ1VuYWJsZSB0byByZWFkIHJhbmdlIGZvciBub2RlIC0gaXQgaXMgbWlzc2luZyBwYXJlbnQgaW5mb3JtYXRpb24uJyk7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0UG9zID0gbm9kZS5nZXRTdGFydCgpO1xuICAgIGNvbnN0IGVuZFBvcyA9IG5vZGUuZ2V0RW5kKCk7XG4gICAgY29uc3Qge2xpbmU6IHN0YXJ0TGluZSwgY2hhcmFjdGVyOiBzdGFydENvbH0gPSB0cy5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihmaWxlLCBzdGFydFBvcyk7XG4gICAgcmV0dXJuIHtzdGFydExpbmUsIHN0YXJ0Q29sLCBzdGFydFBvcywgZW5kUG9zfTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHRoZSBleHByZXNzaW9uIGRvZXMgbm90IHJlcHJlc2VudCBhbiBlbXB0eSBlbGVtZW50IGluIGFuIGFycmF5IGxpdGVyYWwuXG4gKiBGb3IgZXhhbXBsZSBpbiBgWyxmb29dYCB0aGUgZmlyc3QgZWxlbWVudCBpcyBcImVtcHR5XCIuXG4gKi9cbmZ1bmN0aW9uIGlzTm90RW1wdHlFbGVtZW50KGU6IHRzLkV4cHJlc3Npb258dHMuU3ByZWFkRWxlbWVudHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzLk9taXR0ZWRFeHByZXNzaW9uKTogZSBpcyB0cy5FeHByZXNzaW9ufHRzLlNwcmVhZEVsZW1lbnQge1xuICByZXR1cm4gIXRzLmlzT21pdHRlZEV4cHJlc3Npb24oZSk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gaXMgbm90IGEgc3ByZWFkIGVsZW1lbnQgb2YgYW4gYXJyYXkgbGl0ZXJhbC5cbiAqIEZvciBleGFtcGxlIGluIGBbeCwgLi4ucmVzdF1gIHRoZSBgLi4ucmVzdGAgZXhwcmVzc2lvbiBpcyBhIHNwcmVhZCBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBpc05vdFNwcmVhZEVsZW1lbnQoZTogdHMuRXhwcmVzc2lvbnx0cy5TcHJlYWRFbGVtZW50KTogZSBpcyB0cy5FeHByZXNzaW9uIHtcbiAgcmV0dXJuICF0cy5pc1NwcmVhZEVsZW1lbnQoZSk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gY2FuIGJlIGNvbnNpZGVyZWQgYSB0ZXh0IGJhc2VkIHByb3BlcnR5IG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvcGVydHlOYW1lKGU6IHRzLlByb3BlcnR5TmFtZSk6IGUgaXMgdHMuSWRlbnRpZmllcnx0cy5TdHJpbmdMaXRlcmFsfHRzLk51bWVyaWNMaXRlcmFsIHtcbiAgcmV0dXJuIHRzLmlzSWRlbnRpZmllcihlKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWwoZSkgfHwgdHMuaXNOdW1lcmljTGl0ZXJhbChlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbm9kZSBpcyBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAgbGl0ZXJhbHMuXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbkxpdGVyYWwobm9kZTogdHMuRXhwcmVzc2lvbik6IG5vZGUgaXMgdHMuVHJ1ZUxpdGVyYWx8dHMuRmFsc2VMaXRlcmFsIHtcbiAgcmV0dXJuIG5vZGUua2luZCA9PT0gdHMuU3ludGF4S2luZC5UcnVlS2V5d29yZCB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkO1xufVxuXG50eXBlIE1pbmlmaWVkQm9vbGVhbkxpdGVyYWwgPSB0cy5QcmVmaXhVbmFyeUV4cHJlc3Npb24me29wZXJhbmQ6IHRzLk51bWVyaWNMaXRlcmFsfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbm9kZSBpcyBlaXRoZXIgYCEwYCBvciBgITFgLlxuICovXG5mdW5jdGlvbiBpc01pbmlmaWVkQm9vbGVhbkxpdGVyYWwobm9kZTogdHMuRXhwcmVzc2lvbik6IG5vZGUgaXMgTWluaWZpZWRCb29sZWFuTGl0ZXJhbCB7XG4gIHJldHVybiB0cy5pc1ByZWZpeFVuYXJ5RXhwcmVzc2lvbihub2RlKSAmJiBub2RlLm9wZXJhdG9yID09PSB0cy5TeW50YXhLaW5kLkV4Y2xhbWF0aW9uVG9rZW4gJiZcbiAgICAgIHRzLmlzTnVtZXJpY0xpdGVyYWwobm9kZS5vcGVyYW5kKSAmJiAobm9kZS5vcGVyYW5kLnRleHQgPT09ICcwJyB8fCBub2RlLm9wZXJhbmQudGV4dCA9PT0gJzEnKTtcbn1cbiJdfQ==
@@ -66,7 +66,7 @@
66
66
  */
67
67
  function createLinkerMap(environment, sourceUrl, code) {
68
68
  var linkers = new Map();
69
- var LATEST_VERSION_RANGE = getRange('<=', '12.0.0-rc.0');
69
+ var LATEST_VERSION_RANGE = getRange('<=', '12.0.0');
70
70
  linkers.set(exports.ɵɵngDeclareDirective, [
71
71
  { range: LATEST_VERSION_RANGE, linker: new partial_directive_linker_1_1.PartialDirectiveLinkerVersion1(sourceUrl, code) },
72
72
  ]);
@@ -137,7 +137,7 @@
137
137
  throw new Error("Unknown partial declaration function " + functionName + ".");
138
138
  }
139
139
  var linkerRanges = this.linkers.get(functionName);
140
- if (version === '12.0.0-rc.0') {
140
+ if (version === '12.0.0') {
141
141
  // Special case if the `version` is the same as the current compiler version.
142
142
  // This helps with compliance tests where the version placeholders have not been replaced.
143
143
  return linkerRanges[linkerRanges.length - 1].linker;
@@ -9,7 +9,7 @@
9
9
  import { AbsoluteFsPath } from '../../../src/ngtsc/file_system';
10
10
  import { PackageJsonUpdater } from '../writing/package_json_updater';
11
11
  import { EntryPointPackageJson, PackageJsonFormatProperties } from './entry_point';
12
- export declare const NGCC_VERSION = "12.0.0-rc.0";
12
+ export declare const NGCC_VERSION = "12.0.0";
13
13
  /**
14
14
  * Returns true if there is a format in this entry-point that was compiled with an outdated version
15
15
  * of ngcc.
@@ -12,7 +12,7 @@
12
12
  exports.markAsProcessed = exports.hasBeenProcessed = exports.cleanPackageJson = exports.needsCleaning = exports.NGCC_VERSION = void 0;
13
13
  var tslib_1 = require("tslib");
14
14
  var new_entry_point_file_writer_1 = require("@angular/compiler-cli/ngcc/src/writing/new_entry_point_file_writer");
15
- exports.NGCC_VERSION = '12.0.0-rc.0';
15
+ exports.NGCC_VERSION = '12.0.0';
16
16
  /**
17
17
  * Returns true if there is a format in this entry-point that was compiled with an outdated version
18
18
  * of ngcc.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler-cli",
3
- "version": "12.0.0-rc.0",
3
+ "version": "12.0.0",
4
4
  "description": "Angular - the compiler CLI for Node.js",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "yargs": "^16.2.0"
28
28
  },
29
29
  "peerDependencies": {
30
- "@angular/compiler": "12.0.0-rc.0",
30
+ "@angular/compiler": "12.0.0",
31
31
  "typescript": ">=4.2.3 <4.3"
32
32
  },
33
33
  "repository": {
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  "license": "MIT",
43
43
  "engines": {
44
- "node": ">=12.14.1 <16.0.0"
44
+ "node": "^12.14.1 || ^14.0.0"
45
45
  },
46
46
  "bugs": {
47
47
  "url": "https://github.com/angular/angular/issues"
@@ -201,7 +201,6 @@ interface CommonTemplateDeclaration {
201
201
  interpolationConfig: InterpolationConfig;
202
202
  templateUrl: string;
203
203
  resolvedTemplateUrl: string;
204
- sourceMapUrl: string;
205
204
  }
206
205
  /**
207
206
  * Information extracted from the declaration of an inline template.
@@ -220,7 +219,7 @@ interface ExternalTemplateDeclaration extends CommonTemplateDeclaration {
220
219
  /**
221
220
  * The declaration of a template extracted from a component decorator.
222
221
  *
223
- * This data is extracted and stored separately to faciliate re-interpreting the template
222
+ * This data is extracted and stored separately to facilitate re-interpreting the template
224
223
  * declaration whenever the compiler is notified of a change to a template file. With this
225
224
  * information, `ComponentDecoratorHandler` is able to re-read the template and update the component
226
225
  * record without needing to parse the original decorator again.