@angular/compiler 17.1.0-next.5 → 17.1.0-rc.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.
- package/esm2022/src/compiler_facade_interface.mjs +1 -1
- package/esm2022/src/core.mjs +8 -1
- package/esm2022/src/jit_compiler_facade.mjs +5 -3
- package/esm2022/src/output/abstract_emitter.mjs +4 -1
- package/esm2022/src/output/output_ast.mjs +11 -7
- package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
- package/esm2022/src/render3/partial/directive.mjs +4 -4
- package/esm2022/src/render3/partial/factory.mjs +1 -1
- package/esm2022/src/render3/partial/injectable.mjs +1 -1
- package/esm2022/src/render3/partial/injector.mjs +1 -1
- package/esm2022/src/render3/partial/ng_module.mjs +1 -1
- package/esm2022/src/render3/partial/pipe.mjs +1 -1
- package/esm2022/src/render3/r3_identifiers.mjs +5 -1
- package/esm2022/src/render3/view/style_parser.mjs +2 -1
- package/esm2022/src/render3/view/template.mjs +5 -2
- package/esm2022/src/render3/view/util.mjs +35 -7
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +1 -11
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +1 -21
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +3 -2
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +3 -2
- package/esm2022/src/template/pipeline/src/conversion.mjs +2 -1
- package/esm2022/src/template/pipeline/src/emit.mjs +1 -3
- package/esm2022/src/template/pipeline/src/ingest.mjs +40 -15
- package/esm2022/src/template/pipeline/src/instruction.mjs +8 -7
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +6 -5
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +4 -2
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +8 -12
- package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +2 -2
- package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +3 -3
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +2 -2
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/compiler.mjs +147 -134
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +19 -7
- package/package.json +2 -2
- package/esm2022/src/template/pipeline/src/phases/repeater_derived_vars.mjs +0 -45
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v17.1.0-
|
|
2
|
+
* @license Angular v17.1.0-rc.0
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -334,12 +334,13 @@ export declare enum BinaryOperator {
|
|
|
334
334
|
Modulo = 8,
|
|
335
335
|
And = 9,
|
|
336
336
|
Or = 10,
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
337
|
+
BitwiseOr = 11,
|
|
338
|
+
BitwiseAnd = 12,
|
|
339
|
+
Lower = 13,
|
|
340
|
+
LowerEquals = 14,
|
|
341
|
+
Bigger = 15,
|
|
342
|
+
BiggerEquals = 16,
|
|
343
|
+
NullishCoalesce = 17
|
|
343
344
|
}
|
|
344
345
|
|
|
345
346
|
export declare class BinaryOperatorExpr extends Expression {
|
|
@@ -841,6 +842,7 @@ declare namespace core {
|
|
|
841
842
|
ViewEncapsulation,
|
|
842
843
|
ChangeDetectionStrategy,
|
|
843
844
|
Input,
|
|
845
|
+
InputFlags,
|
|
844
846
|
Output,
|
|
845
847
|
HostBinding,
|
|
846
848
|
HostListener,
|
|
@@ -1244,6 +1246,7 @@ export declare abstract class Expression {
|
|
|
1244
1246
|
multiply(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1245
1247
|
modulo(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1246
1248
|
and(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1249
|
+
bitwiseOr(rhs: Expression, sourceSpan?: ParseSourceSpan | null, parens?: boolean): BinaryOperatorExpr;
|
|
1247
1250
|
bitwiseAnd(rhs: Expression, sourceSpan?: ParseSourceSpan | null, parens?: boolean): BinaryOperatorExpr;
|
|
1248
1251
|
or(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
1249
1252
|
lower(rhs: Expression, sourceSpan?: ParseSourceSpan | null): BinaryOperatorExpr;
|
|
@@ -1582,6 +1585,14 @@ declare interface Input {
|
|
|
1582
1585
|
alias?: string;
|
|
1583
1586
|
required?: boolean;
|
|
1584
1587
|
transform?: (value: any) => any;
|
|
1588
|
+
isSignal: boolean;
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
/** Flags describing an input for a directive. */
|
|
1592
|
+
declare enum InputFlags {
|
|
1593
|
+
None = 0,
|
|
1594
|
+
SignalBased = 1,
|
|
1595
|
+
HasDecoratorInputTransform = 2
|
|
1585
1596
|
}
|
|
1586
1597
|
|
|
1587
1598
|
/**
|
|
@@ -3984,6 +3995,7 @@ export declare class R3Identifiers {
|
|
|
3984
3995
|
static InputTransformsFeatureFeature: outputAst.ExternalReference;
|
|
3985
3996
|
static listener: outputAst.ExternalReference;
|
|
3986
3997
|
static getInheritedFactory: outputAst.ExternalReference;
|
|
3998
|
+
static InputFlags: outputAst.ExternalReference;
|
|
3987
3999
|
static sanitizeHtml: outputAst.ExternalReference;
|
|
3988
4000
|
static sanitizeStyle: outputAst.ExternalReference;
|
|
3989
4001
|
static sanitizeResourceUrl: outputAst.ExternalReference;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/compiler",
|
|
3
|
-
"version": "17.1.0-
|
|
3
|
+
"version": "17.1.0-rc.0",
|
|
4
4
|
"description": "Angular - the compiler library",
|
|
5
5
|
"author": "angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"tslib": "^2.3.0"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@angular/core": "17.1.0-
|
|
14
|
+
"@angular/core": "17.1.0-rc.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependenciesMeta": {
|
|
17
17
|
"@angular/core": {
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as o from '../../../../output/output_ast';
|
|
9
|
-
import * as ir from '../../ir';
|
|
10
|
-
/**
|
|
11
|
-
* Inside the body of a repeater, certain context variables (such as `$first`) are ambiently
|
|
12
|
-
* available. This phase finds those variable usages, and replaces them with the appropriate
|
|
13
|
-
* expression.
|
|
14
|
-
*/
|
|
15
|
-
export function generateRepeaterDerivedVars(job) {
|
|
16
|
-
const repeaters = new Map();
|
|
17
|
-
for (const unit of job.units) {
|
|
18
|
-
for (const op of unit.ops()) {
|
|
19
|
-
if (op.kind === ir.OpKind.RepeaterCreate) {
|
|
20
|
-
repeaters.set(op.xref, op);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
for (const unit of job.units) {
|
|
25
|
-
for (const op of unit.ops()) {
|
|
26
|
-
ir.transformExpressionsInOp(op, expr => {
|
|
27
|
-
if (!(expr instanceof ir.DerivedRepeaterVarExpr)) {
|
|
28
|
-
return expr;
|
|
29
|
-
}
|
|
30
|
-
const repeaterOp = repeaters.get(expr.xref);
|
|
31
|
-
switch (expr.identity) {
|
|
32
|
-
case ir.DerivedRepeaterVarIdentity.First:
|
|
33
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new ir.LexicalReadExpr(repeaterOp.varNames.$index), o.literal(0));
|
|
34
|
-
case ir.DerivedRepeaterVarIdentity.Last:
|
|
35
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new ir.LexicalReadExpr(repeaterOp.varNames.$index), new o.BinaryOperatorExpr(o.BinaryOperator.Minus, new ir.LexicalReadExpr(repeaterOp.varNames.$count), o.literal(1)));
|
|
36
|
-
case ir.DerivedRepeaterVarIdentity.Even:
|
|
37
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.Identical, new o.BinaryOperatorExpr(o.BinaryOperator.Modulo, new ir.LexicalReadExpr(repeaterOp.varNames.$index), o.literal(2)), o.literal(0));
|
|
38
|
-
case ir.DerivedRepeaterVarIdentity.Odd:
|
|
39
|
-
return new o.BinaryOperatorExpr(o.BinaryOperator.NotIdentical, new o.BinaryOperatorExpr(o.BinaryOperator.Modulo, new ir.LexicalReadExpr(repeaterOp.varNames.$index), o.literal(2)), o.literal(0));
|
|
40
|
-
}
|
|
41
|
-
}, ir.VisitorContextFlag.None);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXJfZGVyaXZlZF92YXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvcmVwZWF0ZXJfZGVyaXZlZF92YXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0I7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxHQUFtQjtJQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUU1RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6QyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQztvQkFDakQsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUUsQ0FBQztnQkFFN0MsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3RCLEtBQUssRUFBRSxDQUFDLDBCQUEwQixDQUFDLEtBQUs7d0JBQ3RDLE9BQU8sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQzNCLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM5RSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxDQUFDLDBCQUEwQixDQUFDLElBQUk7d0JBQ3JDLE9BQU8sSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQzNCLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM5RSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FDcEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixLQUFLLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJO3dCQUNyQyxPQUFPLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUMzQixDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQ3BCLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUMzRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2pCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEIsS0FBSyxFQUFFLENBQUMsMEJBQTBCLENBQUMsR0FBRzt3QkFDcEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FDM0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQzdCLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUNwQixDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDM0UsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBvIGZyb20gJy4uLy4uLy4uLy4uL291dHB1dC9vdXRwdXRfYXN0JztcbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcblxuaW1wb3J0IHR5cGUge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogSW5zaWRlIHRoZSBib2R5IG9mIGEgcmVwZWF0ZXIsIGNlcnRhaW4gY29udGV4dCB2YXJpYWJsZXMgKHN1Y2ggYXMgYCRmaXJzdGApIGFyZSBhbWJpZW50bHlcbiAqIGF2YWlsYWJsZS4gVGhpcyBwaGFzZSBmaW5kcyB0aG9zZSB2YXJpYWJsZSB1c2FnZXMsIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggdGhlIGFwcHJvcHJpYXRlXG4gKiBleHByZXNzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSZXBlYXRlckRlcml2ZWRWYXJzKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgY29uc3QgcmVwZWF0ZXJzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLlJlcGVhdGVyQ3JlYXRlT3A+KCk7XG5cbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5vcHMoKSkge1xuICAgICAgaWYgKG9wLmtpbmQgPT09IGlyLk9wS2luZC5SZXBlYXRlckNyZWF0ZSkge1xuICAgICAgICByZXBlYXRlcnMuc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0Lm9wcygpKSB7XG4gICAgICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luT3Aob3AsIGV4cHIgPT4ge1xuICAgICAgICBpZiAoIShleHByIGluc3RhbmNlb2YgaXIuRGVyaXZlZFJlcGVhdGVyVmFyRXhwcikpIHtcbiAgICAgICAgICByZXR1cm4gZXhwcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXBlYXRlck9wID0gcmVwZWF0ZXJzLmdldChleHByLnhyZWYpITtcblxuICAgICAgICBzd2l0Y2ggKGV4cHIuaWRlbnRpdHkpIHtcbiAgICAgICAgICBjYXNlIGlyLkRlcml2ZWRSZXBlYXRlclZhcklkZW50aXR5LkZpcnN0OlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICBvLkJpbmFyeU9wZXJhdG9yLklkZW50aWNhbCwgbmV3IGlyLkxleGljYWxSZWFkRXhwcihyZXBlYXRlck9wLnZhck5hbWVzLiRpbmRleCksXG4gICAgICAgICAgICAgICAgby5saXRlcmFsKDApKTtcbiAgICAgICAgICBjYXNlIGlyLkRlcml2ZWRSZXBlYXRlclZhcklkZW50aXR5Lkxhc3Q6XG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsLCBuZXcgaXIuTGV4aWNhbFJlYWRFeHByKHJlcGVhdGVyT3AudmFyTmFtZXMuJGluZGV4KSxcbiAgICAgICAgICAgICAgICBuZXcgby5CaW5hcnlPcGVyYXRvckV4cHIoXG4gICAgICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuTWludXMsIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIocmVwZWF0ZXJPcC52YXJOYW1lcy4kY291bnQpLFxuICAgICAgICAgICAgICAgICAgICBvLmxpdGVyYWwoMSkpKTtcbiAgICAgICAgICBjYXNlIGlyLkRlcml2ZWRSZXBlYXRlclZhcklkZW50aXR5LkV2ZW46XG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuSWRlbnRpY2FsLFxuICAgICAgICAgICAgICAgIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICAgICAgby5CaW5hcnlPcGVyYXRvci5Nb2R1bG8sIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIocmVwZWF0ZXJPcC52YXJOYW1lcy4kaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICBvLmxpdGVyYWwoMikpLFxuICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCgwKSk7XG4gICAgICAgICAgY2FzZSBpci5EZXJpdmVkUmVwZWF0ZXJWYXJJZGVudGl0eS5PZGQ6XG4gICAgICAgICAgICByZXR1cm4gbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKFxuICAgICAgICAgICAgICAgIG8uQmluYXJ5T3BlcmF0b3IuTm90SWRlbnRpY2FsLFxuICAgICAgICAgICAgICAgIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICAgICAgby5CaW5hcnlPcGVyYXRvci5Nb2R1bG8sIG5ldyBpci5MZXhpY2FsUmVhZEV4cHIocmVwZWF0ZXJPcC52YXJOYW1lcy4kaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICBvLmxpdGVyYWwoMikpLFxuICAgICAgICAgICAgICAgIG8ubGl0ZXJhbCgwKSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGlyLlZpc2l0b3JDb250ZXh0RmxhZy5Ob25lKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|