ts2famix 2.0.3 → 2.1.0-beta.2
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/.eslintrc.json +24 -24
- package/.vscode/settings.json +4 -0
- package/LICENSE +24 -24
- package/README.md +78 -78
- package/TODO +1 -0
- package/arwea-fix.json +1 -0
- package/bogus.ts +3 -0
- package/class-diagram.puml +792 -0
- package/debug.txt +13332 -0
- package/debuglog.txt +12073 -0
- package/dist/analyze.js +19 -9
- package/dist/analyze_functions/process_functions.js +101 -71
- package/dist/famix2puml.js +126 -0
- package/dist/famix_functions/EntityDictionary.js +881 -509
- package/dist/famix_functions/helpers_creation.js +18 -8
- package/dist/fqn.js +44 -11
- package/dist/getClasses-arrow-body.js +43 -0
- package/dist/lib/famix/famix_JSON_exporter.js +1 -1
- package/dist/lib/famix/famix_base_element.js +1 -1
- package/dist/lib/famix/famix_repository.js +67 -2
- package/dist/lib/famix/index.js +18 -8
- package/dist/lib/famix/model/famix/access.js +1 -1
- package/dist/lib/famix/model/famix/accessor.js +1 -1
- package/dist/lib/famix/model/famix/alias.js +1 -1
- package/dist/lib/famix/model/famix/arrow_function.js +1 -1
- package/dist/lib/famix/model/famix/behavioral_entity.js +1 -1
- package/dist/lib/famix/model/famix/class.js +1 -1
- package/dist/lib/famix/model/famix/comment.js +1 -1
- package/dist/lib/famix/model/famix/concretisation.js +1 -1
- package/dist/lib/famix/model/famix/container_entity.js +1 -1
- package/dist/lib/famix/model/famix/decorator.js +1 -1
- package/dist/lib/famix/model/famix/entity.js +1 -1
- package/dist/lib/famix/model/famix/enum.js +1 -1
- package/dist/lib/famix/model/famix/enum_value.js +1 -1
- package/dist/lib/famix/model/famix/function.js +1 -1
- package/dist/lib/famix/model/famix/import_clause.js +1 -1
- package/dist/lib/famix/model/famix/index.js +1 -1
- package/dist/lib/famix/model/famix/indexed_file_anchor.js +1 -1
- package/dist/lib/famix/model/famix/inheritance.js +1 -1
- package/dist/lib/famix/model/famix/interface.js +1 -1
- package/dist/lib/famix/model/famix/invocation.js +1 -1
- package/dist/lib/famix/model/famix/method.js +1 -1
- package/dist/lib/famix/model/famix/module.js +1 -1
- package/dist/lib/famix/model/famix/named_entity.js +1 -1
- package/dist/lib/famix/model/famix/parameter.js +1 -1
- package/dist/lib/famix/model/famix/parameter_concretisation.js +1 -1
- package/dist/lib/famix/model/famix/parameter_type.js +1 -1
- package/dist/lib/famix/model/famix/parametric_arrow_function.js +1 -1
- package/dist/lib/famix/model/famix/parametric_class.js +1 -1
- package/dist/lib/famix/model/famix/parametric_function.js +1 -1
- package/dist/lib/famix/model/famix/parametric_interface.js +1 -1
- package/dist/lib/famix/model/famix/parametric_method.js +1 -1
- package/dist/lib/famix/model/famix/primitive_type.js +1 -1
- package/dist/lib/famix/model/famix/property.js +1 -1
- package/dist/lib/famix/model/famix/reference.js +1 -1
- package/dist/lib/famix/model/famix/scoping_entity.js +1 -1
- package/dist/lib/famix/model/famix/script_entity.js +1 -1
- package/dist/lib/famix/model/famix/source_anchor.js +1 -1
- package/dist/lib/famix/model/famix/source_language.js +1 -1
- package/dist/lib/famix/model/famix/sourced_entity.js +1 -1
- package/dist/lib/famix/model/famix/structural_entity.js +1 -1
- package/dist/lib/famix/model/famix/type.js +1 -1
- package/dist/lib/famix/model/famix/variable.js +1 -1
- package/dist/lib/famix/src/famix_JSON_exporter.js +55 -0
- package/dist/lib/famix/src/famix_base_element.js +18 -0
- package/dist/lib/famix/src/famix_repository.js +224 -0
- package/dist/lib/famix/src/index.js +31 -0
- package/dist/lib/famix/src/model/famix/access.js +40 -0
- package/dist/lib/famix/src/model/famix/accessor.js +17 -0
- package/dist/lib/famix/src/model/famix/alias.js +33 -0
- package/dist/lib/famix/src/model/famix/arrowFunction.js +17 -0
- package/dist/lib/famix/src/model/famix/arrow_function.js +17 -0
- package/dist/lib/famix/src/model/famix/behavioral_entity.js +79 -0
- package/dist/lib/famix/src/model/famix/class.js +71 -0
- package/dist/lib/famix/src/model/famix/comment.js +39 -0
- package/dist/lib/famix/src/model/famix/concretisation.js +31 -0
- package/dist/lib/famix/src/model/famix/container_entity.js +126 -0
- package/dist/lib/famix/src/model/famix/decorator.js +32 -0
- package/dist/lib/famix/src/model/famix/entity.js +17 -0
- package/dist/lib/famix/src/model/famix/enum.js +31 -0
- package/dist/lib/famix/src/model/famix/enum_value.js +25 -0
- package/dist/lib/famix/src/model/famix/function.js +17 -0
- package/dist/lib/famix/src/model/famix/implicit_variable.js +17 -0
- package/dist/lib/famix/src/model/famix/import_clause.js +41 -0
- package/dist/lib/famix/src/model/famix/index.js +86 -0
- package/dist/lib/famix/src/model/famix/indexed_file_anchor.js +38 -0
- package/dist/lib/famix/src/model/famix/inheritance.js +33 -0
- package/dist/lib/famix/src/model/famix/interface.js +64 -0
- package/dist/lib/famix/src/model/famix/invocation.js +54 -0
- package/dist/lib/famix/src/model/famix/method.js +67 -0
- package/dist/lib/famix/src/model/famix/module.js +60 -0
- package/dist/lib/famix/src/model/famix/named_entity.js +78 -0
- package/dist/lib/famix/src/model/famix/parameter.js +25 -0
- package/dist/lib/famix/src/model/famix/parameterConcretisation.js +44 -0
- package/dist/lib/famix/src/model/famix/parameter_concretisation.js +44 -0
- package/dist/lib/famix/src/model/famix/parameter_type.js +45 -0
- package/dist/lib/famix/src/model/famix/parametricArrowFunction.js +29 -0
- package/dist/lib/famix/src/model/famix/parametric_arrow_function.js +31 -0
- package/dist/lib/famix/src/model/famix/parametric_class.js +44 -0
- package/dist/lib/famix/src/model/famix/parametric_function.js +31 -0
- package/dist/lib/famix/src/model/famix/parametric_interface.js +44 -0
- package/dist/lib/famix/src/model/famix/parametric_method.js +31 -0
- package/dist/lib/famix/src/model/famix/primitive_type.js +17 -0
- package/dist/lib/famix/src/model/famix/property.js +73 -0
- package/dist/lib/famix/src/model/famix/reference.js +33 -0
- package/dist/lib/famix/src/model/famix/scoping_entity.js +36 -0
- package/dist/lib/famix/src/model/famix/script_entity.js +29 -0
- package/dist/lib/famix/src/model/famix/source_anchor.js +27 -0
- package/dist/lib/famix/src/model/famix/source_language.js +35 -0
- package/dist/lib/famix/src/model/famix/sourced_entity.js +60 -0
- package/dist/lib/famix/src/model/famix/structural_entity.js +39 -0
- package/dist/lib/famix/src/model/famix/text_anchor.js +38 -0
- package/dist/lib/famix/src/model/famix/type.js +73 -0
- package/dist/lib/famix/src/model/famix/variable.js +24 -0
- package/dist/lib/ts-complex/cyclomatic-service.js +1 -1
- package/dist/refactorer/refactor-getter-setter.js +18 -8
- package/dist/ts2famix-cli-wrapper.js +18 -8
- package/dist/ts2famix-cli.js +18 -8
- package/dist/ts2famix-tsconfig.js +18 -8
- package/doc-uml/famix-typescript-model.puml +607 -607
- package/eslint.config.mjs +28 -0
- package/fqn-model.json +1 -0
- package/iterateGenericTypes.ts +69 -0
- package/out/class-diagram/class-diagram.svg +1 -0
- package/package.json +70 -66
- package/sample.json +1 -0
- package/sample.ts +1 -0
- package/src/analyze.ts +120 -120
- package/src/analyze_functions/process_functions.ts +1040 -1019
- package/src/famix_functions/EntityDictionary.ts +2016 -1593
- package/src/famix_functions/helpers_creation.ts +135 -135
- package/src/fqn.ts +50 -16
- package/src/generate_uml.sh +20 -20
- package/src/lib/famix/License.md +22 -22
- package/src/lib/famix/famix_JSON_exporter.ts +56 -56
- package/src/lib/famix/famix_base_element.ts +22 -22
- package/src/lib/famix/famix_repository.ts +278 -243
- package/src/lib/famix/index.ts +8 -8
- package/src/lib/famix/model/famix/access.ts +50 -50
- package/src/lib/famix/model/famix/accessor.ts +15 -15
- package/src/lib/famix/model/famix/alias.ts +39 -39
- package/src/lib/famix/model/famix/arrow_function.ts +15 -15
- package/src/lib/famix/model/famix/behavioral_entity.ts +97 -97
- package/src/lib/famix/model/famix/class.ts +85 -85
- package/src/lib/famix/model/famix/comment.ts +47 -47
- package/src/lib/famix/model/famix/concretisation.ts +40 -40
- package/src/lib/famix/model/famix/container_entity.ts +160 -160
- package/src/lib/famix/model/famix/decorator.ts +37 -37
- package/src/lib/famix/model/famix/entity.ts +15 -15
- package/src/lib/famix/model/famix/enum.ts +30 -30
- package/src/lib/famix/model/famix/enum_value.ts +28 -28
- package/src/lib/famix/model/famix/function.ts +15 -15
- package/src/lib/famix/model/famix/import_clause.ts +51 -51
- package/src/lib/famix/model/famix/index.ts +41 -41
- package/src/lib/famix/model/famix/indexed_file_anchor.ts +46 -46
- package/src/lib/famix/model/famix/inheritance.ts +40 -40
- package/src/lib/famix/model/famix/interface.ts +75 -75
- package/src/lib/famix/model/famix/invocation.ts +65 -65
- package/src/lib/famix/model/famix/method.ts +89 -89
- package/src/lib/famix/model/famix/module.ts +71 -71
- package/src/lib/famix/model/famix/named_entity.ts +95 -95
- package/src/lib/famix/model/famix/parameter.ts +28 -28
- package/src/lib/famix/model/famix/parameter_concretisation.ts +51 -51
- package/src/lib/famix/model/famix/parameter_type.ts +58 -58
- package/src/lib/famix/model/famix/parametric_arrow_function.ts +32 -32
- package/src/lib/famix/model/famix/parametric_class.ts +49 -49
- package/src/lib/famix/model/famix/parametric_function.ts +32 -32
- package/src/lib/famix/model/famix/parametric_interface.ts +49 -49
- package/src/lib/famix/model/famix/parametric_method.ts +32 -32
- package/src/lib/famix/model/famix/primitive_type.ts +15 -15
- package/src/lib/famix/model/famix/property.ts +94 -94
- package/src/lib/famix/model/famix/reference.ts +40 -40
- package/src/lib/famix/model/famix/scoping_entity.ts +35 -35
- package/src/lib/famix/model/famix/script_entity.ts +34 -34
- package/src/lib/famix/model/famix/source_anchor.ts +30 -30
- package/src/lib/famix/model/famix/source_language.ts +35 -35
- package/src/lib/famix/model/famix/sourced_entity.ts +70 -70
- package/src/lib/famix/model/famix/structural_entity.ts +43 -43
- package/src/lib/famix/model/famix/type.ts +87 -87
- package/src/lib/famix/model/famix/variable.ts +27 -27
- package/src/lib/famix/package.json +28 -28
- package/src/lib/ts-complex/cyclomatic-service.ts +83 -83
- package/src/refactorer/refactor-getter-setter.ts +140 -140
- package/src/ts2famix-cli-wrapper.ts +21 -21
- package/src/ts2famix-cli.ts +60 -60
- package/stats.txt +3091 -0
- package/tabby-debug-output.txt +19433 -0
- package/ts2famix.log +22656 -0
- package/tsconfig.check-tests.json +14 -14
- package/tsconfig.json +72 -72
- package/validate-references.js +103 -0
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.indexOfSplitArray = indexOfSplitArray;
|
|
27
37
|
exports.getSubTypeName = getSubTypeName;
|
|
@@ -145,4 +155,4 @@ function replaceLastBetweenTags(input, replacement) {
|
|
|
145
155
|
const afterTag = input.substring(closingTagIndex); // Include '>'
|
|
146
156
|
return beforeTag + replacement + afterTag;
|
|
147
157
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyc19jcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYW1peF9mdW5jdGlvbnMvaGVscGVyc19jcmVhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsOENBZUM7QUFFRCx3Q0FpQkM7QUFPRCw0Q0FHQztBQU9ELG9DQWdCQztBQU9ELDRDQWtCQztBQUVELHdDQU1DO0FBRUQsd0RBaUJDO0FBdElELGdFQUFrRDtBQUNsRCx3Q0FBb0M7QUFDcEMsdUNBQWtVO0FBU2xVOzs7R0FHRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE1BQXdCO0lBQ3RELE1BQU0sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUMsR0FBRyxNQUFNLENBQUM7SUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztRQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLElBQUksV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDZCxNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTyxDQUFDLENBQUMsQ0FBQyxvREFBb0Q7UUFDbEUsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsa0VBQWtFO0FBQ2pGLENBQUM7QUFFRCxTQUFnQixjQUFjLENB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QyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsV0FBbUI7SUFDckUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU1QyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLENBQUMsa0RBQWtEO0lBQ3BFLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxJQUFJLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLENBQUMsd0RBQXdEO0lBQzFFLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBRWpFLE9BQU8sU0FBUyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEZhbWl4IGZyb20gXCIuLi9saWIvZmFtaXgvbW9kZWwvZmFtaXhcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi9hbmFseXplXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLCBJZGVudGlmaWVyLCBGdW5jdGlvbkRlY2xhcmF0aW9uLCBNZXRob2REZWNsYXJhdGlvbiwgTWV0aG9kU2lnbmF0dXJlLCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBQcm9wZXJ0eVNpZ25hdHVyZSwgVmFyaWFibGVEZWNsYXJhdGlvbiwgUGFyYW1ldGVyRGVjbGFyYXRpb24sIEdldEFjY2Vzc29yRGVjbGFyYXRpb24sIFNldEFjY2Vzc29yRGVjbGFyYXRpb24sIEVudW1NZW1iZXIsIFR5cGVBbGlhc0RlY2xhcmF0aW9uLCBOb2RlLCBTeW50YXhLaW5kLCBGdW5jdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwidHMtbW9ycGhcIjtcbmltcG9ydCB7IFR5cGVEZWNsYXJhdGlvbiB9IGZyb20gXCIuL0VudGl0eURpY3Rpb25hcnlcIjtcblxuaW50ZXJmYWNlIFNlYXJjaFBhcmFtZXRlcnMge1xuICAgIHNlYXJjaEFycmF5OiBzdHJpbmdbXTtcbiAgICB0YXJnZXRBcnJheTogc3RyaW5nW107XG4gICAgc3RhcnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB3b3JrcyBsaWtlIGluZGV4T2YsIGJ1dCBpdCB3b3JrcyB3aXRoIGFycmF5cyBvZiBncmFwaGVtZSBjbHVzdGVycy5cbiAqIEBwYXJhbSB0YXJnZXRBcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhPZlNwbGl0QXJyYXkocGFyYW1zOiBTZWFyY2hQYXJhbWV0ZXJzKTogbnVtYmVyIHtcbiAgICBjb25zdCB7c2VhcmNoQXJyYXksIHRhcmdldEFycmF5LCBzdGFydCA9IDB9ID0gcGFyYW1zO1xuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBzZWFyY2hBcnJheS5sZW5ndGggLSB0YXJnZXRBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgZm91bmQgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRhcmdldEFycmF5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoc2VhcmNoQXJyYXlbaSArIGpdICE9PSB0YXJnZXRBcnJheVtqXSkge1xuICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gaTsgLy8gUmV0dXJuIHRoZSBpbmRleCB3aGVyZSB0aGUgdGFyZ2V0IGFycmF5IHdhcyBmb3VuZFxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTsgLy8gUmV0dXJuIC0xIGlmIHRoZSB0YXJnZXQgYXJyYXkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIGFycmF5XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJUeXBlTmFtZShmbXhOYW1lZEVudGl0eTogRmFtaXguTmFtZWRFbnRpdHkpIHtcbiAgICBjb25zdCBuYW1lID0gZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5DbGFzcyA/ICdDbGFzcycgOlxuICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkludGVyZmFjZSA/ICdJbnRlcmZhY2UnIDpcbiAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguRnVuY3Rpb24gPyAnRnVuY3Rpb24nIDpcbiAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkVudW0gPyAnRW51bScgOlxuICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkVudW1WYWx1ZSA/ICdFbnVtVmFsdWUnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguQWxpYXMgPyAnQWxpYXMnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LlZhcmlhYmxlID8gJ1ZhcmlhYmxlJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguVHlwZSA/ICdUeXBlJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4Lk1ldGhvZCA/ICdNZXRob2QnIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkRlY29yYXRvciA/ICdEZWNvcmF0b3InIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5BY2Nlc3NvciA/ICdBY2Nlc3NvcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5QYXJhbWV0ZXIgPyAnUGFyYW1ldGVyJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5Qcm9wZXJ0eSA/ICdQcm9wZXJ0eScgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTmFtZWRFbnRpdHknO1xuICAgIGxvZ2dlci5kZWJ1ZyhgJHtmbXhOYW1lZEVudGl0eS5uYW1lfSBpcyBvZiB0eXBlICR7bmFtZX1gKTtcbiAgICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBzaWduYXR1cmUgb2YgYSBtZXRob2Qgb3IgYSBmdW5jdGlvblxuICogQHBhcmFtIHRleHQgQSBtZXRob2Qgb3IgYSBmdW5jdGlvbiBzb3VyY2UgY29kZVxuICogQHJldHVybnMgVGhlIHNpZ25hdHVyZSBvZiB0aGUgbWV0aG9kIG9yIHRoZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNpZ25hdHVyZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuZFNpZ25hdHVyZVRleHQgPSB0ZXh0LmluZGV4T2YoXCJ7XCIpO1xuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZygwLCBlbmRTaWduYXR1cmVUZXh0KS50cmltKCk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGFuY2VzdG9yIG9mIGEgbm9kZVxuICogQHBhcmFtIG5vZGUgQSBub2RlXG4gKiBAcmV0dXJucyBUaGUgYW5jZXN0b3Igb2YgdGhlIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbmNlc3Rvcihub2RlOiBJZGVudGlmaWVyKTogTm9kZSB7XG4gICAgbGV0IGFuY2VzdG9yOiBOb2RlIHwgdW5kZWZpbmVkO1xuICAgIGFuY2VzdG9yID0gbm9kZS5nZXRBbmNlc3RvcnMoKS5maW5kKGEgPT4gXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uIHx8IFxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5Db25zdHJ1Y3RvciB8fCBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbiB8fCBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuRnVuY3Rpb25FeHByZXNzaW9uIHx8IFxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbiB8fCBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuU291cmNlRmlsZSB8fCBcbiAgICAgICAgYS5nZXRLaW5kTmFtZSgpID09PSBcIkdldEFjY2Vzc29yXCIgfHwgXG4gICAgICAgIGEuZ2V0S2luZE5hbWUoKSA9PT0gXCJTZXRBY2Nlc3NvclwiIHx8IFxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9uKTtcbiAgICBpZiAoIWFuY2VzdG9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQW5jZXN0b3Igbm90IGZvdW5kIGZvciAke25vZGUuZ2V0VGV4dCgpfWApO1xuICAgIH1cbiAgICByZXR1cm4gYW5jZXN0b3Jcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgYW5jZXN0b3Igb2YgYSB0cy1tb3JwaCBlbGVtZW50XG4gKiBAcGFyYW0gZWxlbWVudCBBIHRzLW1vcnBoIGVsZW1lbnRcbiAqIEByZXR1cm5zIFRoZSBhbmNlc3RvciBvZiB0aGUgdHMtbW9ycGggZWxlbWVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFR5cGVBbmNlc3RvcihlbGVtZW50OiBUeXBlRGVjbGFyYXRpb24pOiBOb2RlIHtcbiAgICBsZXQgYW5jZXN0b3I6IE5vZGUgfCB1bmRlZmluZWQ7XG4gICAgYW5jZXN0b3IgPSBlbGVtZW50LmdldEFuY2VzdG9ycygpLmZpbmQoYSA9PiBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb24gfHwgXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNvbnN0cnVjdG9yIHx8IFxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5NZXRob2RTaWduYXR1cmUgfHwgXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb24gfHwgXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkZ1bmN0aW9uRXhwcmVzc2lvbiB8fCBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuTW9kdWxlRGVjbGFyYXRpb24gfHwgXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLlNvdXJjZUZpbGUgfHwgXG4gICAgICAgIGEuZ2V0S2luZE5hbWUoKSA9PT0gXCJHZXRBY2Nlc3NvclwiIHx8IFxuICAgICAgICBhLmdldEtpbmROYW1lKCkgPT09IFwiU2V0QWNjZXNzb3JcIiB8fCBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbiB8fCBcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pO1xuICAgIGlmICghYW5jZXN0b3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUeXBlIGFuY2VzdG9yIG5vdCBmb3VuZCBmb3IgJHtlbGVtZW50LmdldEtpbmROYW1lKCl9YCk7XG4gICAgfVxuICAgIHJldHVybiBhbmNlc3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5c0FyZUVxdWFsKGFycmF5MTogc3RyaW5nW10sIGFycmF5Mjogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBpZiAoYXJyYXkxICYmIGFycmF5MiApIHtcbiAgICAgICAgcmV0dXJuIGFycmF5MS5sZW5ndGggPT09IGFycmF5Mi5sZW5ndGggJiYgYXJyYXkxLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBhcnJheTJbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUxhc3RCZXR3ZWVuVGFncyhpbnB1dDogc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXN0VGFnSW5kZXggPSBpbnB1dC5sYXN0SW5kZXhPZignPCcpO1xuICAgIFxuICAgIGlmIChsYXN0VGFnSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgaWYgbm8gdGFncyBhcmUgZm91bmRcbiAgICB9XG5cbiAgICBjb25zdCBjbG9zaW5nVGFnSW5kZXggPSBpbnB1dC5pbmRleE9mKCc+JywgbGFzdFRhZ0luZGV4KTtcbiAgICBcbiAgICBpZiAoY2xvc2luZ1RhZ0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7IC8vIFJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nIGlmIG5vIGNsb3NpbmcgdGFnIGlzIGZvdW5kXG4gICAgfVxuXG4gICAgY29uc3QgYmVmb3JlVGFnID0gaW5wdXQuc3Vic3RyaW5nKDAsIGxhc3RUYWdJbmRleCArIDEpOyAvLyBJbmNsdWRlICc8J1xuICAgIGNvbnN0IGFmdGVyVGFnID0gaW5wdXQuc3Vic3RyaW5nKGNsb3NpbmdUYWdJbmRleCk7IC8vIEluY2x1ZGUgJz4nXG5cbiAgICByZXR1cm4gYmVmb3JlVGFnICsgcmVwbGFjZW1lbnQgKyBhZnRlclRhZztcbn1cbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyc19jcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYW1peF9mdW5jdGlvbnMvaGVscGVyc19jcmVhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWVBLDhDQWVDO0FBRUQsd0NBaUJDO0FBT0QsNENBR0M7QUFPRCxvQ0FnQkM7QUFPRCw0Q0FrQkM7QUFFRCx3Q0FNQztBQUVELHdEQWlCQztBQXRJRCxnRUFBa0Q7QUFDbEQsd0NBQW9DO0FBQ3BDLHVDQUFrVTtBQVNsVTs7O0dBR0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUF3QjtJQUN0RCxNQUFNLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNwRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ2QsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0RBQW9EO1FBQ2xFLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtFQUFrRTtBQUNqRixDQUFDO0FBRUQsU0FB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TyxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsS0FBYSxFQUFFLFdBQW1CO0lBQ3JFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFNUMsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLEtBQUssQ0FBQyxDQUFDLGtEQUFrRDtJQUNwRSxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFekQsSUFBSSxlQUFlLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxDQUFDLHdEQUF3RDtJQUMxRSxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYztJQUN0RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsY0FBYztJQUVqRSxPQUFPLFNBQVMsR0FBRyxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBGYW1peCBmcm9tIFwiLi4vbGliL2ZhbWl4L21vZGVsL2ZhbWl4XCI7XHJcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi9hbmFseXplXCI7XHJcbmltcG9ydCB7IENvbnN0cnVjdG9yRGVjbGFyYXRpb24sIElkZW50aWZpZXIsIEZ1bmN0aW9uRGVjbGFyYXRpb24sIE1ldGhvZERlY2xhcmF0aW9uLCBNZXRob2RTaWduYXR1cmUsIFByb3BlcnR5RGVjbGFyYXRpb24sIFByb3BlcnR5U2lnbmF0dXJlLCBWYXJpYWJsZURlY2xhcmF0aW9uLCBQYXJhbWV0ZXJEZWNsYXJhdGlvbiwgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbiwgU2V0QWNjZXNzb3JEZWNsYXJhdGlvbiwgRW51bU1lbWJlciwgVHlwZUFsaWFzRGVjbGFyYXRpb24sIE5vZGUsIFN5bnRheEtpbmQsIEZ1bmN0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCJ0cy1tb3JwaFwiO1xyXG5pbXBvcnQgeyBUU01vcnBoVHlwZURlY2xhcmF0aW9uIH0gZnJvbSBcIi4vRW50aXR5RGljdGlvbmFyeVwiO1xyXG5cclxuaW50ZXJmYWNlIFNlYXJjaFBhcmFtZXRlcnMge1xyXG4gICAgc2VhcmNoQXJyYXk6IHN0cmluZ1tdO1xyXG4gICAgdGFyZ2V0QXJyYXk6IHN0cmluZ1tdO1xyXG4gICAgc3RhcnQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGxpa2UgaW5kZXhPZiwgYnV0IGl0IHdvcmtzIHdpdGggYXJyYXlzIG9mIGdyYXBoZW1lIGNsdXN0ZXJzLlxyXG4gKiBAcGFyYW0gdGFyZ2V0QXJyYXlcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mU3BsaXRBcnJheShwYXJhbXM6IFNlYXJjaFBhcmFtZXRlcnMpOiBudW1iZXIge1xyXG4gICAgY29uc3Qge3NlYXJjaEFycmF5LCB0YXJnZXRBcnJheSwgc3RhcnQgPSAwfSA9IHBhcmFtcztcclxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBzZWFyY2hBcnJheS5sZW5ndGggLSB0YXJnZXRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBmb3VuZCA9IHRydWU7XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0YXJnZXRBcnJheS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBpZiAoc2VhcmNoQXJyYXlbaSArIGpdICE9PSB0YXJnZXRBcnJheVtqXSkge1xyXG4gICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaTsgLy8gUmV0dXJuIHRoZSBpbmRleCB3aGVyZSB0aGUgdGFyZ2V0IGFycmF5IHdhcyBmb3VuZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAtMTsgLy8gUmV0dXJuIC0xIGlmIHRoZSB0YXJnZXQgYXJyYXkgd2FzIG5vdCBmb3VuZCBpbiB0aGUgc2VhcmNoIGFycmF5XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdWJUeXBlTmFtZShmbXhOYW1lZEVudGl0eTogRmFtaXguTmFtZWRFbnRpdHkpIHtcclxuICAgIGNvbnN0IG5hbWUgPSBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkNsYXNzID8gJ0NsYXNzJyA6XHJcbiAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5JbnRlcmZhY2UgPyAnSW50ZXJmYWNlJyA6XHJcbiAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguRnVuY3Rpb24gPyAnRnVuY3Rpb24nIDpcclxuICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguRW51bSA/ICdFbnVtJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5FbnVtVmFsdWUgPyAnRW51bVZhbHVlJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguQWxpYXMgPyAnQWxpYXMnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguVmFyaWFibGUgPyAnVmFyaWFibGUnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LlR5cGUgPyAnVHlwZScgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4Lk1ldGhvZCA/ICdNZXRob2QnIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguRGVjb3JhdG9yID8gJ0RlY29yYXRvcicgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguQWNjZXNzb3IgPyAnQWNjZXNzb3InIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5QYXJhbWV0ZXIgPyAnUGFyYW1ldGVyJyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LlByb3BlcnR5ID8gJ1Byb3BlcnR5JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05hbWVkRW50aXR5JztcclxuICAgIGxvZ2dlci5kZWJ1ZyhgJHtmbXhOYW1lZEVudGl0eS5uYW1lfSBpcyBvZiB0eXBlICR7bmFtZX1gKTtcclxuICAgIHJldHVybiBuYW1lO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0cyB0aGUgc2lnbmF0dXJlIG9mIGEgbWV0aG9kIG9yIGEgZnVuY3Rpb25cclxuICogQHBhcmFtIHRleHQgQSBtZXRob2Qgb3IgYSBmdW5jdGlvbiBzb3VyY2UgY29kZVxyXG4gKiBAcmV0dXJucyBUaGUgc2lnbmF0dXJlIG9mIHRoZSBtZXRob2Qgb3IgdGhlIGZ1bmN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNpZ25hdHVyZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZW5kU2lnbmF0dXJlVGV4dCA9IHRleHQuaW5kZXhPZihcIntcIik7XHJcbiAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoMCwgZW5kU2lnbmF0dXJlVGV4dCkudHJpbSgpO1xyXG59XHJcblxyXG4vKipcclxuICogRmluZHMgdGhlIGFuY2VzdG9yIG9mIGEgbm9kZVxyXG4gKiBAcGFyYW0gbm9kZSBBIG5vZGVcclxuICogQHJldHVybnMgVGhlIGFuY2VzdG9yIG9mIHRoZSBub2RlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZmluZEFuY2VzdG9yKG5vZGU6IElkZW50aWZpZXIpOiBOb2RlIHtcclxuICAgIGxldCBhbmNlc3RvcjogTm9kZSB8IHVuZGVmaW5lZDtcclxuICAgIGFuY2VzdG9yID0gbm9kZS5nZXRBbmNlc3RvcnMoKS5maW5kKGEgPT4gXHJcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb24gfHwgXHJcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuQ29uc3RydWN0b3IgfHwgXHJcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbiB8fCBcclxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb24gfHwgXHJcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuTW9kdWxlRGVjbGFyYXRpb24gfHwgXHJcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuU291cmNlRmlsZSB8fCBcclxuICAgICAgICBhLmdldEtpbmROYW1lKCkgPT09IFwiR2V0QWNjZXNzb3JcIiB8fCBcclxuICAgICAgICBhLmdldEtpbmROYW1lKCkgPT09IFwiU2V0QWNjZXNzb3JcIiB8fCBcclxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9uKTtcclxuICAgIGlmICghYW5jZXN0b3IpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFuY2VzdG9yIG5vdCBmb3VuZCBmb3IgJHtub2RlLmdldFRleHQoKX1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbmNlc3RvclxyXG59XHJcblxyXG4vKipcclxuICogRmluZHMgdGhlIGFuY2VzdG9yIG9mIGEgdHMtbW9ycGggZWxlbWVudFxyXG4gKiBAcGFyYW0gZWxlbWVudCBBIHRzLW1vcnBoIGVsZW1lbnRcclxuICogQHJldHVybnMgVGhlIGFuY2VzdG9yIG9mIHRoZSB0cy1tb3JwaCBlbGVtZW50XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZmluZFR5cGVBbmNlc3RvcihlbGVtZW50OiBUU01vcnBoVHlwZURlY2xhcmF0aW9uKTogTm9kZSB7XHJcbiAgICBsZXQgYW5jZXN0b3I6IE5vZGUgfCB1bmRlZmluZWQ7XHJcbiAgICBhbmNlc3RvciA9IGVsZW1lbnQuZ2V0QW5jZXN0b3JzKCkuZmluZChhID0+IFxyXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uIHx8IFxyXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNvbnN0cnVjdG9yIHx8IFxyXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1ldGhvZFNpZ25hdHVyZSB8fCBcclxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uIHx8IFxyXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkZ1bmN0aW9uRXhwcmVzc2lvbiB8fCBcclxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbiB8fCBcclxuICAgICAgICBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5Tb3VyY2VGaWxlIHx8IFxyXG4gICAgICAgIGEuZ2V0S2luZE5hbWUoKSA9PT0gXCJHZXRBY2Nlc3NvclwiIHx8IFxyXG4gICAgICAgIGEuZ2V0S2luZE5hbWUoKSA9PT0gXCJTZXRBY2Nlc3NvclwiIHx8IFxyXG4gICAgICAgIGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24gfHwgXHJcbiAgICAgICAgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pO1xyXG4gICAgaWYgKCFhbmNlc3Rvcikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHlwZSBhbmNlc3RvciBub3QgZm91bmQgZm9yICR7ZWxlbWVudC5nZXRLaW5kTmFtZSgpfWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFuY2VzdG9yO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlzQXJlRXF1YWwoYXJyYXkxOiBzdHJpbmdbXSwgYXJyYXkyOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFycmF5MSAmJiBhcnJheTIgKSB7XHJcbiAgICAgICAgcmV0dXJuIGFycmF5MS5sZW5ndGggPT09IGFycmF5Mi5sZW5ndGggJiYgYXJyYXkxLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBhcnJheTJbaW5kZXhdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUxhc3RCZXR3ZWVuVGFncyhpbnB1dDogc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGxhc3RUYWdJbmRleCA9IGlucHV0Lmxhc3RJbmRleE9mKCc8Jyk7XHJcbiAgICBcclxuICAgIGlmIChsYXN0VGFnSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIGlucHV0OyAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyBpZiBubyB0YWdzIGFyZSBmb3VuZFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNsb3NpbmdUYWdJbmRleCA9IGlucHV0LmluZGV4T2YoJz4nLCBsYXN0VGFnSW5kZXgpO1xyXG4gICAgXHJcbiAgICBpZiAoY2xvc2luZ1RhZ0luZGV4ID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiBpbnB1dDsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgaWYgbm8gY2xvc2luZyB0YWcgaXMgZm91bmRcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBiZWZvcmVUYWcgPSBpbnB1dC5zdWJzdHJpbmcoMCwgbGFzdFRhZ0luZGV4ICsgMSk7IC8vIEluY2x1ZGUgJzwnXHJcbiAgICBjb25zdCBhZnRlclRhZyA9IGlucHV0LnN1YnN0cmluZyhjbG9zaW5nVGFnSW5kZXgpOyAvLyBJbmNsdWRlICc+J1xyXG5cclxuICAgIHJldHVybiBiZWZvcmVUYWcgKyByZXBsYWNlbWVudCArIGFmdGVyVGFnO1xyXG59XHJcbiJdfQ==
|
package/dist/fqn.js
CHANGED
|
@@ -10,13 +10,14 @@ exports.getParameters = getParameters;
|
|
|
10
10
|
const ts_morph_1 = require("ts-morph");
|
|
11
11
|
const analyze_1 = require("./analyze");
|
|
12
12
|
const path_1 = __importDefault(require("path"));
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
14
|
function isFQNNode(node) {
|
|
14
15
|
return ts_morph_1.Node.isVariableDeclaration(node) || ts_morph_1.Node.isArrowFunction(node) || ts_morph_1.Node.isIdentifier(node) || ts_morph_1.Node.isMethodDeclaration(node) || ts_morph_1.Node.isClassDeclaration(node) || ts_morph_1.Node.isClassExpression(node) || ts_morph_1.Node.isDecorator(node) || ts_morph_1.Node.isModuleDeclaration(node) || ts_morph_1.Node.isCallExpression(node);
|
|
15
16
|
}
|
|
16
17
|
function getFQN(node) {
|
|
17
18
|
const absolutePathProject = analyze_1.entityDictionary.famixRep.getAbsolutePath();
|
|
18
19
|
const sourceFile = node.getSourceFile();
|
|
19
|
-
|
|
20
|
+
const parts = [];
|
|
20
21
|
let currentNode = node;
|
|
21
22
|
while (currentNode && !ts_morph_1.Node.isSourceFile(currentNode)) {
|
|
22
23
|
const { line, column } = sourceFile.getLineAndColumnAtPos(currentNode.getStart());
|
|
@@ -30,11 +31,23 @@ function getFQN(node) {
|
|
|
30
31
|
ts_morph_1.Node.isVariableDeclaration(currentNode) ||
|
|
31
32
|
ts_morph_1.Node.isGetAccessorDeclaration(currentNode) ||
|
|
32
33
|
ts_morph_1.Node.isSetAccessorDeclaration(currentNode) ||
|
|
34
|
+
ts_morph_1.Node.isTypeParameterDeclaration(currentNode) ||
|
|
35
|
+
ts_morph_1.Node.isPropertyDeclaration(currentNode) ||
|
|
36
|
+
ts_morph_1.Node.isParameterDeclaration(currentNode) ||
|
|
37
|
+
ts_morph_1.Node.isDecorator(currentNode) ||
|
|
38
|
+
ts_morph_1.Node.isTypeAliasDeclaration(currentNode) ||
|
|
39
|
+
ts_morph_1.Node.isEnumDeclaration(currentNode) ||
|
|
40
|
+
ts_morph_1.Node.isEnumMember(currentNode) ||
|
|
41
|
+
ts_morph_1.Node.isParametered(currentNode) ||
|
|
42
|
+
ts_morph_1.Node.isPropertySignature(currentNode) ||
|
|
43
|
+
ts_morph_1.Node.isArrayLiteralExpression(currentNode) ||
|
|
44
|
+
ts_morph_1.Node.isImportSpecifier(currentNode) ||
|
|
33
45
|
ts_morph_1.Node.isIdentifier(currentNode)) {
|
|
34
|
-
|
|
46
|
+
const name = ts_morph_1.Node.isIdentifier(currentNode) ? currentNode.getText()
|
|
35
47
|
: getNameOfNode(currentNode) /* currentNode.getName() */ || 'Unnamed_' + currentNode.getKindName() + `(${lc})`;
|
|
36
48
|
parts.unshift(name);
|
|
37
49
|
}
|
|
50
|
+
// unnamed nodes
|
|
38
51
|
else if (ts_morph_1.Node.isArrowFunction(currentNode) ||
|
|
39
52
|
ts_morph_1.Node.isBlock(currentNode) ||
|
|
40
53
|
ts_morph_1.Node.isForInStatement(currentNode) ||
|
|
@@ -48,20 +61,26 @@ function getFQN(node) {
|
|
|
48
61
|
}
|
|
49
62
|
else {
|
|
50
63
|
// For other kinds, you might want to handle them specifically or ignore
|
|
51
|
-
|
|
64
|
+
analyze_1.logger.debug(`Ignoring node kind: ${currentNode.getKindName()}`);
|
|
52
65
|
}
|
|
53
66
|
currentNode = currentNode.getParent();
|
|
54
67
|
}
|
|
55
68
|
// Prepend the relative path of the source file
|
|
56
|
-
|
|
69
|
+
let relativePath = analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(sourceFile.getFilePath()), absolutePathProject).replace(/\\/sg, "/");
|
|
70
|
+
if (relativePath.includes("..")) {
|
|
71
|
+
analyze_1.logger.error(`Relative path contains ../: ${relativePath}`);
|
|
72
|
+
}
|
|
73
|
+
if (relativePath.startsWith("/")) {
|
|
74
|
+
relativePath = relativePath.substring(1);
|
|
75
|
+
}
|
|
57
76
|
parts.unshift(`{${relativePath}}`);
|
|
58
77
|
const fqn = parts.join(".") + `[${node.getKindName()}]`; // disambiguate
|
|
59
|
-
analyze_1.logger.debug(fqn);
|
|
78
|
+
analyze_1.logger.debug(`Generated FQN: ${fqn} for node: ${node.getKindName()}`);
|
|
60
79
|
return fqn;
|
|
61
80
|
}
|
|
62
81
|
function getUniqueFQN(node) {
|
|
63
82
|
const absolutePathProject = analyze_1.entityDictionary.famixRep.getAbsolutePath();
|
|
64
|
-
|
|
83
|
+
const parts = [];
|
|
65
84
|
if (node instanceof ts_morph_1.SourceFile) {
|
|
66
85
|
return analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(node.getFilePath()), absolutePathProject).replace(/\\/g, "/");
|
|
67
86
|
}
|
|
@@ -69,6 +88,9 @@ function getUniqueFQN(node) {
|
|
|
69
88
|
while (currentNode) {
|
|
70
89
|
if (ts_morph_1.Node.isSourceFile(currentNode)) {
|
|
71
90
|
const relativePath = analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(currentNode.getFilePath()), absolutePathProject).replace(/\\/g, "/");
|
|
91
|
+
if (relativePath.includes("..")) {
|
|
92
|
+
analyze_1.logger.error(`Relative path contains ../: ${relativePath}`);
|
|
93
|
+
}
|
|
72
94
|
parts.unshift(relativePath); // Add file path at the start
|
|
73
95
|
break;
|
|
74
96
|
}
|
|
@@ -88,13 +110,18 @@ function getUniqueFQN(node) {
|
|
|
88
110
|
* @returns The name of the node, or an empty string if it doesn't have one
|
|
89
111
|
*/
|
|
90
112
|
function getNameOfNode(a) {
|
|
113
|
+
let cKind;
|
|
114
|
+
let iKind;
|
|
115
|
+
let mKind;
|
|
116
|
+
let fKind;
|
|
117
|
+
let alias;
|
|
91
118
|
switch (a.getKind()) {
|
|
92
119
|
case ts_morph_1.SyntaxKind.SourceFile:
|
|
93
120
|
return a.asKind(ts_morph_1.SyntaxKind.SourceFile).getBaseName();
|
|
94
121
|
case ts_morph_1.SyntaxKind.ModuleDeclaration:
|
|
95
122
|
return a.asKind(ts_morph_1.SyntaxKind.ModuleDeclaration).getName();
|
|
96
123
|
case ts_morph_1.SyntaxKind.ClassDeclaration:
|
|
97
|
-
|
|
124
|
+
cKind = a.asKind(ts_morph_1.SyntaxKind.ClassDeclaration);
|
|
98
125
|
if (cKind && cKind.getTypeParameters().length > 0) {
|
|
99
126
|
return cKind.getName() + getParameters(a);
|
|
100
127
|
}
|
|
@@ -102,7 +129,7 @@ function getNameOfNode(a) {
|
|
|
102
129
|
return cKind?.getName() || "";
|
|
103
130
|
}
|
|
104
131
|
case ts_morph_1.SyntaxKind.InterfaceDeclaration:
|
|
105
|
-
|
|
132
|
+
iKind = a.asKind(ts_morph_1.SyntaxKind.InterfaceDeclaration);
|
|
106
133
|
if (iKind && iKind.getTypeParameters().length > 0) {
|
|
107
134
|
return iKind.getName() + getParameters(a);
|
|
108
135
|
}
|
|
@@ -114,7 +141,7 @@ function getNameOfNode(a) {
|
|
|
114
141
|
case ts_morph_1.SyntaxKind.PropertySignature:
|
|
115
142
|
return a.asKind(ts_morph_1.SyntaxKind.PropertySignature).getName();
|
|
116
143
|
case ts_morph_1.SyntaxKind.MethodDeclaration:
|
|
117
|
-
|
|
144
|
+
mKind = a.asKind(ts_morph_1.SyntaxKind.MethodDeclaration);
|
|
118
145
|
if (mKind && mKind.getTypeParameters().length > 0) {
|
|
119
146
|
return mKind.getName() + getParameters(a);
|
|
120
147
|
}
|
|
@@ -128,7 +155,7 @@ function getNameOfNode(a) {
|
|
|
128
155
|
case ts_morph_1.SyntaxKind.SetAccessor:
|
|
129
156
|
return a.asKind(ts_morph_1.SyntaxKind.SetAccessor).getName();
|
|
130
157
|
case ts_morph_1.SyntaxKind.FunctionDeclaration:
|
|
131
|
-
|
|
158
|
+
fKind = a.asKind(ts_morph_1.SyntaxKind.FunctionDeclaration);
|
|
132
159
|
if (fKind && fKind.getTypeParameters().length > 0) {
|
|
133
160
|
return fKind.getName() + getParameters(a);
|
|
134
161
|
}
|
|
@@ -150,10 +177,16 @@ function getNameOfNode(a) {
|
|
|
150
177
|
case ts_morph_1.SyntaxKind.EnumMember:
|
|
151
178
|
return a.asKind(ts_morph_1.SyntaxKind.EnumMember).getName();
|
|
152
179
|
case ts_morph_1.SyntaxKind.TypeAliasDeclaration:
|
|
180
|
+
// special case for parameterized types
|
|
181
|
+
alias = a.asKind(ts_morph_1.SyntaxKind.TypeAliasDeclaration);
|
|
182
|
+
if (alias && alias.getTypeParameters().length > 0) {
|
|
183
|
+
return alias.getName() + "<" + alias.getTypeParameters().map(tp => tp.getName()).join(", ") + ">";
|
|
184
|
+
}
|
|
153
185
|
return a.asKind(ts_morph_1.SyntaxKind.TypeAliasDeclaration).getName();
|
|
154
186
|
case ts_morph_1.SyntaxKind.Constructor:
|
|
155
187
|
return "constructor";
|
|
156
188
|
default:
|
|
189
|
+
// throw new Error(`getNameOfNode called on a node that doesn't have a name: ${a.getKindName()}`);
|
|
157
190
|
// ancestor hasn't got a useful name
|
|
158
191
|
return "";
|
|
159
192
|
}
|
|
@@ -183,4 +216,4 @@ function getParameters(a) {
|
|
|
183
216
|
}
|
|
184
217
|
return paramString;
|
|
185
218
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Zxbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVlBLHdCQWtEQztBQUdELG9DQXdCQztBQU9ELHNDQXNGQztBQU9ELHNDQW1CQztBQWhORCx1Q0FBZ2Q7QUFDaGQsdUNBQXFEO0FBQ3JELGdEQUF3QjtBQUt4QixTQUFTLFNBQVMsQ0FBQyxJQUFVO0lBQ3pCLE9BQU8sZUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFblMsQ0FBQztBQUVELFNBQWdCLE1BQU0sQ0FBQyxJQUFvQjtJQUN2QyxNQUFNLG1CQUFtQixHQUFHLDBCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUV4RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEMsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBQ3pCLElBQUksV0FBVyxHQUFxQixJQUFJLENBQUM7SUFFekMsT0FBTyxXQUFXLElBQUksQ0FBQyxlQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDcEQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLFFB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QUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3pILE1BQU07UUFDVixLQUFLLHFCQUFVLENBQUMsbUJBQW1CO1lBQy9CLFdBQVcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBVSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQzNILE1BQU07UUFDVjtZQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJvd0Z1bmN0aW9uLCBDYWxsRXhwcmVzc2lvbiwgQ2xhc3NEZWNsYXJhdGlvbiwgQ2xhc3NFeHByZXNzaW9uLCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLCBEZWNvcmF0b3IsIEVudW1EZWNsYXJhdGlvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25FeHByZXNzaW9uLCBHZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBJZGVudGlmaWVyLCBJbXBvcnREZWNsYXJhdGlvbiwgSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24sIEludGVyZmFjZURlY2xhcmF0aW9uLCBNZXRob2REZWNsYXJhdGlvbiwgTWV0aG9kU2lnbmF0dXJlLCBNb2R1bGVEZWNsYXJhdGlvbiwgTm9kZSwgUHJvcGVydHlEZWNsYXJhdGlvbiwgU2V0QWNjZXNzb3JEZWNsYXJhdGlvbiwgU291cmNlRmlsZSwgU3ludGF4S2luZCwgVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uLCBWYXJpYWJsZURlY2xhcmF0aW9uIH0gZnJvbSBcInRzLW1vcnBoXCI7XHJcbmltcG9ydCB7IGVudGl0eURpY3Rpb25hcnksIGxvZ2dlciB9IGZyb20gXCIuL2FuYWx5emVcIjtcclxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHsgVHlwZURlY2xhcmF0aW9uIH0gZnJvbSBcIi4vZmFtaXhfZnVuY3Rpb25zL0VudGl0eURpY3Rpb25hcnlcIjtcclxuXHJcbnR5cGUgRlFOTm9kZSA9IFNvdXJjZUZpbGUgfCBWYXJpYWJsZURlY2xhcmF0aW9uIHwgQXJyb3dGdW5jdGlvbiB8IElkZW50aWZpZXIgfCBNZXRob2REZWNsYXJhdGlvbiB8IE1ldGhvZFNpZ25hdHVyZSB8IEZ1bmN0aW9uRGVjbGFyYXRpb24gfCBGdW5jdGlvbkV4cHJlc3Npb24gfCBQcm9wZXJ0eURlY2xhcmF0aW9uIHwgVHlwZURlY2xhcmF0aW9uIHwgRW51bURlY2xhcmF0aW9uIHwgSW1wb3J0RGVjbGFyYXRpb24gfCBJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiB8IENhbGxFeHByZXNzaW9uIHwgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbiB8IFNldEFjY2Vzc29yRGVjbGFyYXRpb24gfCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIHwgVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uIHwgQ2xhc3NEZWNsYXJhdGlvbiB8IEludGVyZmFjZURlY2xhcmF0aW9uIHwgRGVjb3JhdG9yIHwgTW9kdWxlRGVjbGFyYXRpb247XHJcblxyXG5mdW5jdGlvbiBpc0ZRTk5vZGUobm9kZTogTm9kZSk6IG5vZGUgaXMgRlFOTm9kZSB7XHJcbiAgICByZXR1cm4gTm9kZS5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSkgfHwgTm9kZS5pc0Fycm93RnVuY3Rpb24obm9kZSkgfHwgTm9kZS5pc0lkZW50aWZpZXIobm9kZSkgfHwgTm9kZS5pc01ldGhvZERlY2xhcmF0aW9uKG5vZGUpIHx8IE5vZGUuaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpIHx8IE5vZGUuaXNDbGFzc0V4cHJlc3Npb24obm9kZSkgfHwgTm9kZS5pc0RlY29yYXRvcihub2RlKSB8fCBOb2RlLmlzTW9kdWxlRGVjbGFyYXRpb24obm9kZSkgfHwgTm9kZS5pc0NhbGxFeHByZXNzaW9uKG5vZGUpO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZRTihub2RlOiBGUU5Ob2RlIHwgTm9kZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGhQcm9qZWN0ID0gZW50aXR5RGljdGlvbmFyeS5mYW1peFJlcC5nZXRBYnNvbHV0ZVBhdGgoKTtcclxuXHJcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gbm9kZS5nZXRTb3VyY2VGaWxlKCk7XHJcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBsZXQgY3VycmVudE5vZGU6IE5vZGUgfCB1bmRlZmluZWQgPSBub2RlO1xyXG5cclxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSAmJiAhTm9kZS5pc1NvdXJjZUZpbGUoY3VycmVudE5vZGUpKSB7XHJcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjb2x1bW4gfSA9IHNvdXJjZUZpbGUuZ2V0TGluZUFuZENvbHVtbkF0UG9zKGN1cnJlbnROb2RlLmdldFN0YXJ0KCkpO1xyXG4gICAgICAgIGNvbnN0IGxjID0gYCR7bGluZX06JHtjb2x1bW59YDtcclxuICAgICAgICBpZiAoTm9kZS5pc0NsYXNzRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICBOb2RlLmlzQ2xhc3NFeHByZXNzaW9uKGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgTm9kZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNNZXRob2REZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNNb2R1bGVEZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgTm9kZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzSWRlbnRpZmllcihjdXJyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgbGV0IG5hbWUgPSBOb2RlLmlzSWRlbnRpZmllcihjdXJyZW50Tm9kZSkgPyBjdXJyZW50Tm9kZS5nZXRUZXh0KCkgXHJcbiAgICAgICAgICAgICAgICA6IGdldE5hbWVPZk5vZGUoY3VycmVudE5vZGUpIC8qIGN1cnJlbnROb2RlLmdldE5hbWUoKSAqLyB8fCAnVW5uYW1lZF8nICsgY3VycmVudE5vZGUuZ2V0S2luZE5hbWUoKSArIGAoJHtsY30pYDtcclxuICAgICAgICAgICAgcGFydHMudW5zaGlmdChuYW1lKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE5vZGUuaXNBcnJvd0Z1bmN0aW9uKGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgICAgICAgIE5vZGUuaXNCbG9jayhjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICBOb2RlLmlzRm9ySW5TdGF0ZW1lbnQoY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgTm9kZS5pc0Zvck9mU3RhdGVtZW50KGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgICAgICAgIE5vZGUuaXNGb3JTdGF0ZW1lbnQoY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgTm9kZS5pc0NhdGNoQ2xhdXNlKGN1cnJlbnROb2RlKSkge1xyXG4gICAgICAgICAgICBwYXJ0cy51bnNoaWZ0KGAke2N1cnJlbnROb2RlLmdldEtpbmROYW1lKCl9KCR7bGN9KWApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTm9kZS5pc0NvbnN0cnVjdG9yRGVjbGFyYXRpb24oY3VycmVudE5vZGUpKSB7XHJcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQoYGNvbnN0cnVjdG9yYCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gRm9yIG90aGVyIGtpbmRzLCB5b3UgbWlnaHQgd2FudCB0byBoYW5kbGUgdGhlbSBzcGVjaWZpY2FsbHkgb3IgaWdub3JlXHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coYElnbm9yaW5nIG5vZGUga2luZDogJHtjdXJyZW50Tm9kZS5nZXRLaW5kTmFtZSgpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmdldFBhcmVudCgpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy8gUHJlcGVuZCB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgc291cmNlIGZpbGVcclxuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGVudGl0eURpY3Rpb25hcnkuY29udmVydFRvUmVsYXRpdmVQYXRoKFxyXG4gICAgICAgIHBhdGgubm9ybWFsaXplKHNvdXJjZUZpbGUuZ2V0RmlsZVBhdGgoKSksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlUGF0aFByb2plY3QpLnJlcGxhY2UoL1xcXFwvc2csIFwiL1wiKTtcclxuICAgIHBhcnRzLnVuc2hpZnQoYHske3JlbGF0aXZlUGF0aH19YCk7XHJcbiAgICBjb25zdCBmcW4gPSBwYXJ0cy5qb2luKFwiLlwiKSArIGBbJHtub2RlLmdldEtpbmROYW1lKCl9XWA7ICAvLyBkaXNhbWJpZ3VhdGVcclxuXHJcbiAgICBsb2dnZXIuZGVidWcoZnFuKTtcclxuICAgIHJldHVybiBmcW47XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcXVlRlFOKG5vZGU6IE5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoUHJvamVjdCA9IGVudGl0eURpY3Rpb25hcnkuZmFtaXhSZXAuZ2V0QWJzb2x1dGVQYXRoKCk7XHJcbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTb3VyY2VGaWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eURpY3Rpb25hcnkuY29udmVydFRvUmVsYXRpdmVQYXRoKHBhdGgubm9ybWFsaXplKG5vZGUuZ2V0RmlsZVBhdGgoKSksIGFic29sdXRlUGF0aFByb2plY3QpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjdXJyZW50Tm9kZTogTm9kZSB8IHVuZGVmaW5lZCA9IG5vZGU7XHJcbiAgICB3aGlsZSAoY3VycmVudE5vZGUpIHtcclxuICAgICAgICBpZiAoTm9kZS5pc1NvdXJjZUZpbGUoY3VycmVudE5vZGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGVudGl0eURpY3Rpb25hcnkuY29udmVydFRvUmVsYXRpdmVQYXRoKHBhdGgubm9ybWFsaXplKGN1cnJlbnROb2RlLmdldEZpbGVQYXRoKCkpLCBhYnNvbHV0ZVBhdGhQcm9qZWN0KS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcclxuICAgICAgICAgICAgcGFydHMudW5zaGlmdChyZWxhdGl2ZVBhdGgpOyAvLyBBZGQgZmlsZSBwYXRoIGF0IHRoZSBzdGFydFxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnROb2RlLmdldFN5bWJvbCgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjdXJyZW50Tm9kZS5nZXRTeW1ib2woKSEuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICAvLyBGb3IgYW5vbnltb3VzIG5vZGVzLCB1c2Uga2luZCBhbmQgcG9zaXRpb24gYXMgdW5pcXVlIGlkZW50aWZpZXJzXHJcbiAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBuYW1lICE9PSBcIl9fY29tcHV0ZWRcIiA/IG5hbWUgOiBgJHtjdXJyZW50Tm9kZS5nZXRLaW5kTmFtZSgpfV8ke2N1cnJlbnROb2RlLmdldFN0YXJ0TGluZVBvcygpfWA7XHJcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQoaWRlbnRpZmllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuZ2V0UGFyZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oXCI6OlwiKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIG5hbWUgb2YgYSBub2RlLCBpZiBpdCBoYXMgb25lXHJcbiAqIEBwYXJhbSBhIEEgbm9kZVxyXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgbm9kZSwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lT2ZOb2RlKGE6IE5vZGUpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChhLmdldEtpbmQoKSkge1xyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5Tb3VyY2VGaWxlOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5Tb3VyY2VGaWxlKSEuZ2V0QmFzZU5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLk1vZHVsZURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbikhLmdldE5hbWUoKTsgXHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICBjb25zdCBjS2luZCA9IGEuYXNLaW5kKFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbik7XHJcbiAgICAgICAgICAgIGlmIChjS2luZCAmJiBjS2luZC5nZXRUeXBlUGFyYW1ldGVycygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjS2luZC5nZXROYW1lKCkgKyBnZXRQYXJhbWV0ZXJzKGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNLaW5kPy5nZXROYW1lKCkgfHwgXCJcIjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIGNvbnN0IGlLaW5kID0gYS5hc0tpbmQoU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbik7XHJcbiAgICAgICAgICAgIGlmIChpS2luZCAmJiBpS2luZC5nZXRUeXBlUGFyYW1ldGVycygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpS2luZC5nZXROYW1lKCkgKyBnZXRQYXJhbWV0ZXJzKGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlLaW5kPy5nZXROYW1lKCkgfHwgXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLlByb3BlcnR5RGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLlByb3BlcnR5RGVjbGFyYXRpb24pIS5nZXROYW1lKCk7ICAgIFxyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuUHJvcGVydHlTaWduYXR1cmU6XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLlByb3BlcnR5U2lnbmF0dXJlKSEuZ2V0TmFtZSgpOyAgICBcclxuICAgIFxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5NZXRob2REZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgY29uc3QgbUtpbmQgPSBhLmFzS2luZChTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uKTtcclxuICAgICAgICAgICAgaWYgKG1LaW5kICYmIG1LaW5kLmdldFR5cGVQYXJhbWV0ZXJzKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1LaW5kLmdldE5hbWUoKSArIGdldFBhcmFtZXRlcnMoYSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbUtpbmQ/LmdldE5hbWUoKSB8fCBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5NZXRob2RTaWduYXR1cmU6XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLk1ldGhvZFNpZ25hdHVyZSkhLmdldE5hbWUoKTsgICBcclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkdldEFjY2Vzc29yOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5HZXRBY2Nlc3NvcikhLmdldE5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLlNldEFjY2Vzc29yOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5TZXRBY2Nlc3NvcikhLmdldE5hbWUoKTtcclxuICAgIFxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICBjb25zdCBmS2luZCA9IGEuYXNLaW5kKFN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbik7XHJcbiAgICAgICAgICAgIGlmIChmS2luZCAmJiBmS2luZC5nZXRUeXBlUGFyYW1ldGVycygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmS2luZC5nZXROYW1lKCkgKyBnZXRQYXJhbWV0ZXJzKGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZLaW5kPy5nZXROYW1lKCkgfHwgXCJcIjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuRnVuY3Rpb25FeHByZXNzaW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb24pPy5nZXROYW1lKCkgfHwgXCJhbm9ueW1vdXNcIjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLlBhcmFtZXRlcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuUGFyYW1ldGVyKSEuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLlZhcmlhYmxlRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLlZhcmlhYmxlRGVjbGFyYXRpb24pIS5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5EZWNvcmF0b3I6XHJcbiAgICAgICAgICAgIHJldHVybiBcIkBcIiArIGEuYXNLaW5kKFN5bnRheEtpbmQuRGVjb3JhdG9yKSEuZ2V0TmFtZSgpOyAgICBcclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLlR5cGVQYXJhbWV0ZXI6XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLlR5cGVQYXJhbWV0ZXIpIS5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5FbnVtRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLkVudW1EZWNsYXJhdGlvbikhLmdldE5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkVudW1NZW1iZXI6XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLkVudW1NZW1iZXIpIS5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5UeXBlQWxpYXNEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuVHlwZUFsaWFzRGVjbGFyYXRpb24pIS5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5Db25zdHJ1Y3RvcjpcclxuICAgICAgICAgICAgcmV0dXJuIFwiY29uc3RydWN0b3JcIjsgICBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gYW5jZXN0b3IgaGFzbid0IGdvdCBhIHVzZWZ1bCBuYW1lXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIG5hbWUgb2YgYSBub2RlLCBpZiBpdCBoYXMgb25lXHJcbiAqIEBwYXJhbSBhIEEgbm9kZVxyXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgbm9kZSwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbWV0ZXJzKGE6IE5vZGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHBhcmFtU3RyaW5nID0gXCJcIjtcclxuICAgIHN3aXRjaCAoYS5nZXRLaW5kKCkpIHtcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcGFyYW1TdHJpbmcgPSBcIjxcIiArIGEuYXNLaW5kKFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbik/LmdldFR5cGVQYXJhbWV0ZXJzKCkubWFwKHRwID0+IHRwLmdldE5hbWUoKSkuam9pbihcIiwgXCIpICsgXCI+XCI7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcGFyYW1TdHJpbmcgPSBcIjxcIiArIGEuYXNLaW5kKFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pPy5nZXRUeXBlUGFyYW1ldGVycygpLm1hcCh0cCA9PiB0cC5nZXROYW1lKCkpLmpvaW4oXCIsIFwiKSArIFwiPlwiO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHBhcmFtU3RyaW5nID0gXCI8XCIgKyBhLmFzS2luZChTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uKT8uZ2V0VHlwZVBhcmFtZXRlcnMoKS5tYXAodHAgPT4gdHAuZ2V0TmFtZSgpKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHBhcmFtU3RyaW5nID0gXCI8XCIgKyBhLmFzS2luZChTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb24pPy5nZXRUeXBlUGFyYW1ldGVycygpLm1hcCh0cCA9PiB0cC5nZXROYW1lKCkpLmpvaW4oXCIsIFwiKSArIFwiPlwiO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdldFBhcmFtZXRlcnMgY2FsbGVkIG9uIGEgbm9kZSB0aGF0IGRvZXNuJ3QgaGF2ZSBwYXJhbWV0ZXJzOiAke2EuZ2V0S2luZE5hbWUoKX1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbVN0cmluZztcclxufVxyXG4iXX0=
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Zxbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVlBLHdCQXNFQztBQUdELG9DQTJCQztBQU9ELHNDQWlHQztBQU9ELHNDQW1CQztBQWxQRCx1Q0FBK2I7QUFDL2IsdUNBQXFEO0FBQ3JELGdEQUF3QjtBQUt4Qiw2REFBNkQ7QUFDN0QsU0FBUyxTQUFTLENBQUMsSUFBVTtJQUN6QixPQUFPLGVBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25TLENBQUM7QUFFRCxTQUFnQixNQUFNLENBQUMsSUFBb0I7SUFDdkMsTUFBTSxtQkFBbUIsR0FBRywwQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7SUFFeEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixJQUFJLFdBQVcsR0FBcUIsSUFBSSxDQUFDO0lBRXpDLE9BQU8sV0FBVyxJQUFJLENBQUMsZUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixDQUFD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biwgQ2xhc3NEZWNsYXJhdGlvbiwgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiwgRGVjb3JhdG9yLCBFbnVtRGVjbGFyYXRpb24sIEZ1bmN0aW9uRGVjbGFyYXRpb24sIEZ1bmN0aW9uRXhwcmVzc2lvbiwgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbiwgSWRlbnRpZmllciwgSW1wb3J0RGVjbGFyYXRpb24sIEltcG9ydEVxdWFsc0RlY2xhcmF0aW9uLCBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgTWV0aG9kRGVjbGFyYXRpb24sIE1ldGhvZFNpZ25hdHVyZSwgTW9kdWxlRGVjbGFyYXRpb24sIE5vZGUsIFByb3BlcnR5RGVjbGFyYXRpb24sIFNldEFjY2Vzc29yRGVjbGFyYXRpb24sIFNvdXJjZUZpbGUsIFN5bnRheEtpbmQsIFR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbiwgVmFyaWFibGVEZWNsYXJhdGlvbiB9IGZyb20gXCJ0cy1tb3JwaFwiO1xyXG5pbXBvcnQgeyBlbnRpdHlEaWN0aW9uYXJ5LCBsb2dnZXIgfSBmcm9tIFwiLi9hbmFseXplXCI7XHJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCB7IFRTTW9ycGhUeXBlRGVjbGFyYXRpb24gfSBmcm9tIFwiLi9mYW1peF9mdW5jdGlvbnMvRW50aXR5RGljdGlvbmFyeVwiO1xyXG5cclxudHlwZSBGUU5Ob2RlID0gU291cmNlRmlsZSB8IFZhcmlhYmxlRGVjbGFyYXRpb24gfCBBcnJvd0Z1bmN0aW9uIHwgSWRlbnRpZmllciB8IE1ldGhvZERlY2xhcmF0aW9uIHwgTWV0aG9kU2lnbmF0dXJlIHwgRnVuY3Rpb25EZWNsYXJhdGlvbiB8IEZ1bmN0aW9uRXhwcmVzc2lvbiB8IFByb3BlcnR5RGVjbGFyYXRpb24gfCBUU01vcnBoVHlwZURlY2xhcmF0aW9uIHwgRW51bURlY2xhcmF0aW9uIHwgSW1wb3J0RGVjbGFyYXRpb24gfCBJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiB8IENhbGxFeHByZXNzaW9uIHwgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbiB8IFNldEFjY2Vzc29yRGVjbGFyYXRpb24gfCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIHwgVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uIHwgQ2xhc3NEZWNsYXJhdGlvbiB8IEludGVyZmFjZURlY2xhcmF0aW9uIHwgRGVjb3JhdG9yIHwgTW9kdWxlRGVjbGFyYXRpb247XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbmZ1bmN0aW9uIGlzRlFOTm9kZShub2RlOiBOb2RlKTogbm9kZSBpcyBGUU5Ob2RlIHtcclxuICAgIHJldHVybiBOb2RlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihub2RlKSB8fCBOb2RlLmlzQXJyb3dGdW5jdGlvbihub2RlKSB8fCBOb2RlLmlzSWRlbnRpZmllcihub2RlKSB8fCBOb2RlLmlzTWV0aG9kRGVjbGFyYXRpb24obm9kZSkgfHwgTm9kZS5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkgfHwgTm9kZS5pc0NsYXNzRXhwcmVzc2lvbihub2RlKSB8fCBOb2RlLmlzRGVjb3JhdG9yKG5vZGUpIHx8IE5vZGUuaXNNb2R1bGVEZWNsYXJhdGlvbihub2RlKSB8fCBOb2RlLmlzQ2FsbEV4cHJlc3Npb24obm9kZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGUU4obm9kZTogRlFOTm9kZSB8IE5vZGUpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoUHJvamVjdCA9IGVudGl0eURpY3Rpb25hcnkuZmFtaXhSZXAuZ2V0QWJzb2x1dGVQYXRoKCk7XHJcblxyXG4gICAgY29uc3Qgc291cmNlRmlsZSA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xyXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBsZXQgY3VycmVudE5vZGU6IE5vZGUgfCB1bmRlZmluZWQgPSBub2RlO1xyXG5cclxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSAmJiAhTm9kZS5pc1NvdXJjZUZpbGUoY3VycmVudE5vZGUpKSB7XHJcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjb2x1bW4gfSA9IHNvdXJjZUZpbGUuZ2V0TGluZUFuZENvbHVtbkF0UG9zKGN1cnJlbnROb2RlLmdldFN0YXJ0KCkpO1xyXG4gICAgICAgIGNvbnN0IGxjID0gYCR7bGluZX06JHtjb2x1bW59YDtcclxuICAgICAgICBpZiAoTm9kZS5pc0NsYXNzRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICBOb2RlLmlzQ2xhc3NFeHByZXNzaW9uKGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgTm9kZS5pc0ludGVyZmFjZURlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzRnVuY3Rpb25EZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNNZXRob2REZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNNb2R1bGVEZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgTm9kZS5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzUHJvcGVydHlEZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHxcclxuICAgICAgICAgICAgTm9kZS5pc1BhcmFtZXRlckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzRGVjb3JhdG9yKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNFbnVtRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNFbnVtTWVtYmVyKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzUGFyYW1ldGVyZWQoY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNQcm9wZXJ0eVNpZ25hdHVyZShjdXJyZW50Tm9kZSkgfHxcclxuICAgICAgICAgICAgTm9kZS5pc0FycmF5TGl0ZXJhbEV4cHJlc3Npb24oY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNJbXBvcnRTcGVjaWZpZXIoY3VycmVudE5vZGUpIHx8XHJcbiAgICAgICAgICAgIE5vZGUuaXNJZGVudGlmaWVyKGN1cnJlbnROb2RlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gTm9kZS5pc0lkZW50aWZpZXIoY3VycmVudE5vZGUpID8gY3VycmVudE5vZGUuZ2V0VGV4dCgpIFxyXG4gICAgICAgICAgICAgICAgOiBnZXROYW1lT2ZOb2RlKGN1cnJlbnROb2RlKSAvKiBjdXJyZW50Tm9kZS5nZXROYW1lKCkgKi8gfHwgJ1VubmFtZWRfJyArIGN1cnJlbnROb2RlLmdldEtpbmROYW1lKCkgKyBgKCR7bGN9KWA7XHJcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQobmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVubmFtZWQgbm9kZXNcclxuICAgICAgICBlbHNlIGlmIChOb2RlLmlzQXJyb3dGdW5jdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICBOb2RlLmlzQmxvY2soY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgTm9kZS5pc0ZvckluU3RhdGVtZW50KGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgICAgICAgIE5vZGUuaXNGb3JPZlN0YXRlbWVudChjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICBOb2RlLmlzRm9yU3RhdGVtZW50KGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgICAgICAgIE5vZGUuaXNDYXRjaENsYXVzZShjdXJyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgcGFydHMudW5zaGlmdChgJHtjdXJyZW50Tm9kZS5nZXRLaW5kTmFtZSgpfSgke2xjfSlgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE5vZGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSkge1xyXG4gICAgICAgICAgICBwYXJ0cy51bnNoaWZ0KGBjb25zdHJ1Y3RvcmApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEZvciBvdGhlciBraW5kcywgeW91IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoZW0gc3BlY2lmaWNhbGx5IG9yIGlnbm9yZVxyXG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoYElnbm9yaW5nIG5vZGUga2luZDogJHtjdXJyZW50Tm9kZS5nZXRLaW5kTmFtZSgpfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmdldFBhcmVudCgpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy8gUHJlcGVuZCB0aGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgc291cmNlIGZpbGVcclxuICAgIGxldCByZWxhdGl2ZVBhdGggPSBlbnRpdHlEaWN0aW9uYXJ5LmNvbnZlcnRUb1JlbGF0aXZlUGF0aChcclxuICAgICAgICBwYXRoLm5vcm1hbGl6ZShzb3VyY2VGaWxlLmdldEZpbGVQYXRoKCkpLCBcclxuICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZVBhdGhQcm9qZWN0KS5yZXBsYWNlKC9cXFxcL3NnLCBcIi9cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICBpZiAocmVsYXRpdmVQYXRoLmluY2x1ZGVzKFwiLi5cIikpIHtcclxuICAgICAgICBsb2dnZXIuZXJyb3IoYFJlbGF0aXZlIHBhdGggY29udGFpbnMgLi4vOiAke3JlbGF0aXZlUGF0aH1gKTtcclxuICAgIH1cclxuICAgIGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi9cIikpIHtcclxuICAgICAgICByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVBhdGguc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG4gICAgcGFydHMudW5zaGlmdChgeyR7cmVsYXRpdmVQYXRofX1gKTtcclxuICAgIGNvbnN0IGZxbiA9IHBhcnRzLmpvaW4oXCIuXCIpICsgYFske25vZGUuZ2V0S2luZE5hbWUoKX1dYDsgIC8vIGRpc2FtYmlndWF0ZVxyXG5cclxuICAgIGxvZ2dlci5kZWJ1ZyhgR2VuZXJhdGVkIEZRTjogJHtmcW59IGZvciBub2RlOiAke25vZGUuZ2V0S2luZE5hbWUoKX1gKTtcclxuICAgIHJldHVybiBmcW47XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcXVlRlFOKG5vZGU6IE5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoUHJvamVjdCA9IGVudGl0eURpY3Rpb25hcnkuZmFtaXhSZXAuZ2V0QWJzb2x1dGVQYXRoKCk7XHJcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFNvdXJjZUZpbGUpIHtcclxuICAgICAgICByZXR1cm4gZW50aXR5RGljdGlvbmFyeS5jb252ZXJ0VG9SZWxhdGl2ZVBhdGgocGF0aC5ub3JtYWxpemUobm9kZS5nZXRGaWxlUGF0aCgpKSwgYWJzb2x1dGVQYXRoUHJvamVjdCkucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGN1cnJlbnROb2RlOiBOb2RlIHwgdW5kZWZpbmVkID0gbm9kZTtcclxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSkge1xyXG4gICAgICAgIGlmIChOb2RlLmlzU291cmNlRmlsZShjdXJyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gZW50aXR5RGljdGlvbmFyeS5jb252ZXJ0VG9SZWxhdGl2ZVBhdGgocGF0aC5ub3JtYWxpemUoY3VycmVudE5vZGUuZ2V0RmlsZVBhdGgoKSksIGFic29sdXRlUGF0aFByb2plY3QpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpO1xyXG4gICAgICAgICAgICBpZiAocmVsYXRpdmVQYXRoLmluY2x1ZGVzKFwiLi5cIikpIHtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihgUmVsYXRpdmUgcGF0aCBjb250YWlucyAuLi86ICR7cmVsYXRpdmVQYXRofWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQocmVsYXRpdmVQYXRoKTsgLy8gQWRkIGZpbGUgcGF0aCBhdCB0aGUgc3RhcnRcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50Tm9kZS5nZXRTeW1ib2woKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gY3VycmVudE5vZGUuZ2V0U3ltYm9sKCkhLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgLy8gRm9yIGFub255bW91cyBub2RlcywgdXNlIGtpbmQgYW5kIHBvc2l0aW9uIGFzIHVuaXF1ZSBpZGVudGlmaWVyc1xyXG4gICAgICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gbmFtZSAhPT0gXCJfX2NvbXB1dGVkXCIgPyBuYW1lIDogYCR7Y3VycmVudE5vZGUuZ2V0S2luZE5hbWUoKX1fJHtjdXJyZW50Tm9kZS5nZXRTdGFydExpbmVQb3MoKX1gO1xyXG4gICAgICAgICAgICBwYXJ0cy51bnNoaWZ0KGlkZW50aWZpZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmdldFBhcmVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJ0cy5qb2luKFwiOjpcIik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBuYW1lIG9mIGEgbm9kZSwgaWYgaXQgaGFzIG9uZVxyXG4gKiBAcGFyYW0gYSBBIG5vZGVcclxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIG5vZGUsIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBpdCBkb2Vzbid0IGhhdmUgb25lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmFtZU9mTm9kZShhOiBOb2RlKTogc3RyaW5nIHtcclxuICAgIGxldCBjS2luZDogQ2xhc3NEZWNsYXJhdGlvbiB8IHVuZGVmaW5lZDtcclxuICAgIGxldCBpS2luZDogSW50ZXJmYWNlRGVjbGFyYXRpb24gfCB1bmRlZmluZWQ7XHJcbiAgICBsZXQgbUtpbmQ6IE1ldGhvZERlY2xhcmF0aW9uIHwgdW5kZWZpbmVkO1xyXG4gICAgbGV0IGZLaW5kOiBGdW5jdGlvbkRlY2xhcmF0aW9uIHwgdW5kZWZpbmVkOyBcclxuICAgIGxldCBhbGlhczogVFNNb3JwaFR5cGVEZWNsYXJhdGlvbiB8IHVuZGVmaW5lZDtcclxuICAgIHN3aXRjaCAoYS5nZXRLaW5kKCkpIHtcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuU291cmNlRmlsZTpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuU291cmNlRmlsZSkhLmdldEJhc2VOYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuTW9kdWxlRGVjbGFyYXRpb24pIS5nZXROYW1lKCk7IFxyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgY0tpbmQgPSBhLmFzS2luZChTeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pO1xyXG4gICAgICAgICAgICBpZiAoY0tpbmQgJiYgY0tpbmQuZ2V0VHlwZVBhcmFtZXRlcnMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY0tpbmQuZ2V0TmFtZSgpICsgZ2V0UGFyYW1ldGVycyhhKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjS2luZD8uZ2V0TmFtZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkludGVyZmFjZURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICBpS2luZCA9IGEuYXNLaW5kKFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pO1xyXG4gICAgICAgICAgICBpZiAoaUtpbmQgJiYgaUtpbmQuZ2V0VHlwZVBhcmFtZXRlcnMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaUtpbmQuZ2V0TmFtZSgpICsgZ2V0UGFyYW1ldGVycyhhKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpS2luZD8uZ2V0TmFtZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5Qcm9wZXJ0eURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5Qcm9wZXJ0eURlY2xhcmF0aW9uKSEuZ2V0TmFtZSgpOyAgICBcclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLlByb3BlcnR5U2lnbmF0dXJlOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5Qcm9wZXJ0eVNpZ25hdHVyZSkhLmdldE5hbWUoKTsgICAgXHJcbiAgICBcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIG1LaW5kID0gYS5hc0tpbmQoU3ludGF4S2luZC5NZXRob2REZWNsYXJhdGlvbik7XHJcbiAgICAgICAgICAgIGlmIChtS2luZCAmJiBtS2luZC5nZXRUeXBlUGFyYW1ldGVycygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtS2luZC5nZXROYW1lKCkgKyBnZXRQYXJhbWV0ZXJzKGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1LaW5kPy5nZXROYW1lKCkgfHwgXCJcIjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuTWV0aG9kU2lnbmF0dXJlOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5NZXRob2RTaWduYXR1cmUpIS5nZXROYW1lKCk7ICAgXHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5HZXRBY2Nlc3NvcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuR2V0QWNjZXNzb3IpIS5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5TZXRBY2Nlc3NvcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuU2V0QWNjZXNzb3IpIS5nZXROYW1lKCk7XHJcbiAgICBcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgZktpbmQgPSBhLmFzS2luZChTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb24pO1xyXG4gICAgICAgICAgICBpZiAoZktpbmQgJiYgZktpbmQuZ2V0VHlwZVBhcmFtZXRlcnMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZktpbmQuZ2V0TmFtZSgpICsgZ2V0UGFyYW1ldGVycyhhKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmS2luZD8uZ2V0TmFtZSgpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkZ1bmN0aW9uRXhwcmVzc2lvbjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKFN5bnRheEtpbmQuRnVuY3Rpb25FeHByZXNzaW9uKT8uZ2V0TmFtZSgpIHx8IFwiYW5vbnltb3VzXCI7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5QYXJhbWV0ZXI6XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLlBhcmFtZXRlcikhLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5WYXJpYWJsZURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5WYXJpYWJsZURlY2xhcmF0aW9uKSEuZ2V0TmFtZSgpO1xyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuRGVjb3JhdG9yOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJAXCIgKyBhLmFzS2luZChTeW50YXhLaW5kLkRlY29yYXRvcikhLmdldE5hbWUoKTsgICAgXHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5UeXBlUGFyYW1ldGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5UeXBlUGFyYW1ldGVyKSEuZ2V0TmFtZSgpO1xyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuRW51bURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5FbnVtRGVjbGFyYXRpb24pIS5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5FbnVtTWVtYmVyOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQoU3ludGF4S2luZC5FbnVtTWVtYmVyKSEuZ2V0TmFtZSgpO1xyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuVHlwZUFsaWFzRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgcGFyYW1ldGVyaXplZCB0eXBlc1xyXG4gICAgICAgICAgICBhbGlhcyA9IGEuYXNLaW5kKFN5bnRheEtpbmQuVHlwZUFsaWFzRGVjbGFyYXRpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWxpYXMgJiYgYWxpYXMuZ2V0VHlwZVBhcmFtZXRlcnMoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxpYXMuZ2V0TmFtZSgpICsgXCI8XCIgKyBhbGlhcy5nZXRUeXBlUGFyYW1ldGVycygpLm1hcCh0cCA9PiB0cC5nZXROYW1lKCkpLmpvaW4oXCIsIFwiKSArIFwiPlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhLmFzS2luZChTeW50YXhLaW5kLlR5cGVBbGlhc0RlY2xhcmF0aW9uKSEuZ2V0TmFtZSgpO1xyXG5cclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuQ29uc3RydWN0b3I6XHJcbiAgICAgICAgICAgIHJldHVybiBcImNvbnN0cnVjdG9yXCI7ICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBnZXROYW1lT2ZOb2RlIGNhbGxlZCBvbiBhIG5vZGUgdGhhdCBkb2Vzbid0IGhhdmUgYSBuYW1lOiAke2EuZ2V0S2luZE5hbWUoKX1gKTtcclxuICAgICAgICAgICAgLy8gYW5jZXN0b3IgaGFzbid0IGdvdCBhIHVzZWZ1bCBuYW1lXHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIG5hbWUgb2YgYSBub2RlLCBpZiBpdCBoYXMgb25lXHJcbiAqIEBwYXJhbSBhIEEgbm9kZVxyXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgbm9kZSwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbWV0ZXJzKGE6IE5vZGUpOiBzdHJpbmcge1xyXG4gICAgbGV0IHBhcmFtU3RyaW5nID0gXCJcIjtcclxuICAgIHN3aXRjaCAoYS5nZXRLaW5kKCkpIHtcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcGFyYW1TdHJpbmcgPSBcIjxcIiArIGEuYXNLaW5kKFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbik/LmdldFR5cGVQYXJhbWV0ZXJzKCkubWFwKHRwID0+IHRwLmdldE5hbWUoKSkuam9pbihcIiwgXCIpICsgXCI+XCI7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcGFyYW1TdHJpbmcgPSBcIjxcIiArIGEuYXNLaW5kKFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pPy5nZXRUeXBlUGFyYW1ldGVycygpLm1hcCh0cCA9PiB0cC5nZXROYW1lKCkpLmpvaW4oXCIsIFwiKSArIFwiPlwiO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHBhcmFtU3RyaW5nID0gXCI8XCIgKyBhLmFzS2luZChTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uKT8uZ2V0VHlwZVBhcmFtZXRlcnMoKS5tYXAodHAgPT4gdHAuZ2V0TmFtZSgpKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIHBhcmFtU3RyaW5nID0gXCI8XCIgKyBhLmFzS2luZChTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb24pPy5nZXRUeXBlUGFyYW1ldGVycygpLm1hcCh0cCA9PiB0cC5nZXROYW1lKCkpLmpvaW4oXCIsIFwiKSArIFwiPlwiO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdldFBhcmFtZXRlcnMgY2FsbGVkIG9uIGEgbm9kZSB0aGF0IGRvZXNuJ3QgaGF2ZSBwYXJhbWV0ZXJzOiAke2EuZ2V0S2luZE5hbWUoKX1gKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbVN0cmluZztcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ts_morph_1 = require("ts-morph");
|
|
4
|
+
// Initialize the project
|
|
5
|
+
const project = new ts_morph_1.Project({
|
|
6
|
+
useInMemoryFileSystem: true,
|
|
7
|
+
compilerOptions: {
|
|
8
|
+
target: 2, // ES6
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
// Create a source file with a class inside an arrow function
|
|
12
|
+
const sourceFile = project.createSourceFile("test.ts", `
|
|
13
|
+
class A {}
|
|
14
|
+
const myFunction = () => {
|
|
15
|
+
class User {
|
|
16
|
+
constructor(public name: string) {}
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
`);
|
|
20
|
+
// write getArrowFunctionClasses(f) that returns the classes declared in the body of an arrow function by traversing the AST
|
|
21
|
+
// Function to get classes declared inside arrow functions
|
|
22
|
+
function getArrowFunctionClasses(f) {
|
|
23
|
+
const classes = [];
|
|
24
|
+
function findClasses(node) {
|
|
25
|
+
if (node.getKind() === ts_morph_1.SyntaxKind.ClassDeclaration) {
|
|
26
|
+
classes.push(node);
|
|
27
|
+
}
|
|
28
|
+
node.getChildren().forEach(findClasses);
|
|
29
|
+
}
|
|
30
|
+
findClasses(f);
|
|
31
|
+
return classes;
|
|
32
|
+
}
|
|
33
|
+
// Get the classes using getClasses()
|
|
34
|
+
const classes = sourceFile.getClasses();
|
|
35
|
+
const arrowFunctions = sourceFile.getDescendantsOfKind(ts_morph_1.SyntaxKind.ArrowFunction);
|
|
36
|
+
console.log("Arrow functions found:", arrowFunctions.map(f => f.getText()));
|
|
37
|
+
// find the classes declared in bodies of ArrowFunctions
|
|
38
|
+
// can't use getClasses() because it only returns classes declared in the source file
|
|
39
|
+
const classesInArrowFunctions = arrowFunctions.map(f => getArrowFunctionClasses(f)).flat();
|
|
40
|
+
// Log the results
|
|
41
|
+
console.log("Classes found:", classes.map(cls => cls.getName()));
|
|
42
|
+
console.log("Classes found in arrow functions:", classesInArrowFunctions.map(cls => cls.getName()));
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2xhc3Nlcy1hcnJvdy1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldENsYXNzZXMtYXJyb3ctYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUFnRjtBQUVoRix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDO0lBQ3hCLHFCQUFxQixFQUFFLElBQUk7SUFDM0IsZUFBZSxFQUFFO1FBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNO0tBQ3BCO0NBQ0osQ0FBQyxDQUFDO0FBRUgsNkRBQTZEO0FBQzdELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUU7Ozs7Ozs7Q0FPdEQsQ0FBQyxDQUFDO0FBRUgsNEhBQTRIO0FBQzVILDBEQUEwRDtBQUMxRCxTQUFTLHVCQUF1QixDQUFDLENBQWdCO0lBQzdDLE1BQU0sT0FBTyxHQUF1QixFQUFFLENBQUM7SUFFdkMsU0FBUyxXQUFXLENBQUMsSUFBUztRQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUF3QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNmLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFHRCxxQ0FBcUM7QUFDckMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRXhDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRWpGLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFNUUsd0RBQXdEO0FBQ3hELHFGQUFxRjtBQUNyRixNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTNGLGtCQUFrQjtBQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycm93RnVuY3Rpb24sIENsYXNzRGVjbGFyYXRpb24sIFByb2plY3QsIFN5bnRheEtpbmQgfSBmcm9tIFwidHMtbW9ycGhcIjtcclxuXHJcbi8vIEluaXRpYWxpemUgdGhlIHByb2plY3RcclxuY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KHtcclxuICAgIHVzZUluTWVtb3J5RmlsZVN5c3RlbTogdHJ1ZSxcclxuICAgIGNvbXBpbGVyT3B0aW9uczoge1xyXG4gICAgICAgIHRhcmdldDogMiwgLy8gRVM2XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuLy8gQ3JlYXRlIGEgc291cmNlIGZpbGUgd2l0aCBhIGNsYXNzIGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvblxyXG5jb25zdCBzb3VyY2VGaWxlID0gcHJvamVjdC5jcmVhdGVTb3VyY2VGaWxlKFwidGVzdC50c1wiLCBgXHJcbmNsYXNzIEEge31cclxuY29uc3QgbXlGdW5jdGlvbiA9ICgpID0+IHtcclxuICAgIGNsYXNzIFVzZXIge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHt9XHJcbiAgICB9XHJcbn07XHJcbmApO1xyXG5cclxuLy8gd3JpdGUgZ2V0QXJyb3dGdW5jdGlvbkNsYXNzZXMoZikgdGhhdCByZXR1cm5zIHRoZSBjbGFzc2VzIGRlY2xhcmVkIGluIHRoZSBib2R5IG9mIGFuIGFycm93IGZ1bmN0aW9uIGJ5IHRyYXZlcnNpbmcgdGhlIEFTVFxyXG4vLyBGdW5jdGlvbiB0byBnZXQgY2xhc3NlcyBkZWNsYXJlZCBpbnNpZGUgYXJyb3cgZnVuY3Rpb25zXHJcbmZ1bmN0aW9uIGdldEFycm93RnVuY3Rpb25DbGFzc2VzKGY6IEFycm93RnVuY3Rpb24pOiBDbGFzc0RlY2xhcmF0aW9uW10ge1xyXG4gICAgY29uc3QgY2xhc3NlczogQ2xhc3NEZWNsYXJhdGlvbltdID0gW107XHJcblxyXG4gICAgZnVuY3Rpb24gZmluZENsYXNzZXMobm9kZTogYW55KSB7XHJcbiAgICAgICAgaWYgKG5vZGUuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKG5vZGUgYXMgQ2xhc3NEZWNsYXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUuZ2V0Q2hpbGRyZW4oKS5mb3JFYWNoKGZpbmRDbGFzc2VzKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5kQ2xhc3NlcyhmKTtcclxuICAgIHJldHVybiBjbGFzc2VzO1xyXG59XHJcblxyXG5cclxuLy8gR2V0IHRoZSBjbGFzc2VzIHVzaW5nIGdldENsYXNzZXMoKVxyXG5jb25zdCBjbGFzc2VzID0gc291cmNlRmlsZS5nZXRDbGFzc2VzKCk7XHJcblxyXG5jb25zdCBhcnJvd0Z1bmN0aW9ucyA9IHNvdXJjZUZpbGUuZ2V0RGVzY2VuZGFudHNPZktpbmQoU3ludGF4S2luZC5BcnJvd0Z1bmN0aW9uKTtcclxuXHJcbmNvbnNvbGUubG9nKFwiQXJyb3cgZnVuY3Rpb25zIGZvdW5kOlwiLCBhcnJvd0Z1bmN0aW9ucy5tYXAoZiA9PiBmLmdldFRleHQoKSkpO1xyXG5cclxuLy8gZmluZCB0aGUgY2xhc3NlcyBkZWNsYXJlZCBpbiBib2RpZXMgb2YgQXJyb3dGdW5jdGlvbnNcclxuLy8gY2FuJ3QgdXNlIGdldENsYXNzZXMoKSBiZWNhdXNlIGl0IG9ubHkgcmV0dXJucyBjbGFzc2VzIGRlY2xhcmVkIGluIHRoZSBzb3VyY2UgZmlsZVxyXG5jb25zdCBjbGFzc2VzSW5BcnJvd0Z1bmN0aW9ucyA9IGFycm93RnVuY3Rpb25zLm1hcChmID0+IGdldEFycm93RnVuY3Rpb25DbGFzc2VzKGYpKS5mbGF0KCk7XHJcblxyXG4vLyBMb2cgdGhlIHJlc3VsdHNcclxuY29uc29sZS5sb2coXCJDbGFzc2VzIGZvdW5kOlwiLCBjbGFzc2VzLm1hcChjbHMgPT4gY2xzLmdldE5hbWUoKSkpO1xyXG5jb25zb2xlLmxvZyhcIkNsYXNzZXMgZm91bmQgaW4gYXJyb3cgZnVuY3Rpb25zOlwiLCBjbGFzc2VzSW5BcnJvd0Z1bmN0aW9ucy5tYXAoY2xzID0+IGNscy5nZXROYW1lKCkpKTtcclxuIl19
|
|
@@ -52,4 +52,4 @@ class FamixJSONExporter {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
exports.FamixJSONExporter = FamixJSONExporter;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfSlNPTl9leHBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZmFtaXgvZmFtaXhfSlNPTl9leHBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFBd0Q7QUFFeEQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQU0xQjs7OztPQUlHO0lBQ0gsWUFBWSxZQUFvQixFQUFFLE9BQXlCO1FBUm5ELGdCQUFXLEdBQVEsRUFBRSxDQUFDLENBQUMsd0RBQXdEO1FBQy9FLGdCQUFXLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyw4QkFBOEI7UUFRbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxJQUFZLEVBQUUsSUFBYTtRQUMxQyxJQUFJLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN0QixNQUFNLFVBQVUsR0FBbUIsRUFBRSxDQUFDO1lBQ3RDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLEtBQUssWUFBWSxxQ0FBZ0IsRUFBRSxDQUFDO29CQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO3FCQUNJLENBQUM7b0JBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUN4QyxDQUFDO2FBQ0ksSUFBSSxJQUFJLFlBQVkscUNBQWdCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxDQUFDO2FBQ0ksSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQWxERCw4Q0FrREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEJhc2VFbGVtZW50IH0gZnJvbSBcIi4vZmFtaXhfYmFzZV9lbGVtZW50XCI7XHJcblxyXG4vKipcclxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIGV4cG9ydCBGYW1peCBlbGVtZW50cyB0byBKU09OXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRmFtaXhKU09ORXhwb3J0ZXIge1xyXG5cclxuICAgIHByaXZhdGUgZWxlbWVudDogRmFtaXhCYXNlRWxlbWVudDsgLy8gQSBGYW1peCBlbGVtZW50IHRvIGV4cG9ydFxyXG4gICAgcHJpdmF0ZSBidWZmZXJBcnJheTogYW55ID0ge307IC8vIEEgYnVmZmVyIHRvIHN0b3JlIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBGYW1peCBlbGVtZW50XHJcbiAgICBwcml2YXRlIEZhbWl4UHJlZml4ID0gXCJGYW1peFR5cGVTY3JpcHRcIjsgLy8gUHJlZml4IG9mIHRoZSBGYW1peCBlbGVtZW50XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciBvZiB0aGUgRmFtaXhKU09ORXhwb3J0ZXIgY2xhc3NcclxuICAgICAqIEBwYXJhbSBwYWNrYWdlQ2xhc3MgTmFtZSBvZiBhIEZhbWl4IGNsYXNzXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBBIEZhbWl4IGVsZW1lbnQgdG8gZXhwb3J0LCB0aGlzIGVsZW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIG5hbWVkIFwicGFja2FnZUNsYXNzXCJcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocGFja2FnZUNsYXNzOiBzdHJpbmcsIGVsZW1lbnQ6IEZhbWl4QmFzZUVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMuYnVmZmVyQXJyYXlbXCJGTTNcIl0gPSB0aGlzLkZhbWl4UHJlZml4ICsgXCIuXCIgKyBwYWNrYWdlQ2xhc3M7XHJcbiAgICAgICAgdGhpcy5idWZmZXJBcnJheVtcImlkXCJdID0gdGhpcy5lbGVtZW50LmlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBGYW1peCBlbGVtZW50XHJcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBwcm9wZXJ0eVxyXG4gICAgICogQHBhcmFtIHByb3AgQSBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkUHJvcGVydHkobmFtZTogc3RyaW5nLCBwcm9wOiB1bmtub3duKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHByb3AgaW5zdGFuY2VvZiBTZXQpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWVBcnJheTogQXJyYXk8dW5rbm93bj4gPSBbXTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBBcnJheS5mcm9tKHByb3AudmFsdWVzKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGYW1peEJhc2VFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVBcnJheS5wdXNoKHsgXCJyZWZcIjogdmFsdWUuaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUFycmF5LnB1c2godmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyQXJyYXlbbmFtZV0gPSB2YWx1ZUFycmF5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwcm9wIGluc3RhbmNlb2YgRmFtaXhCYXNlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlckFycmF5W25hbWVdID0geyBcInJlZlwiOiBwcm9wLmlkIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHByb3AgIT09IHVuZGVmaW5lZCAmJiAhKHByb3AgaW5zdGFuY2VvZiBTZXQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyQXJyYXlbbmFtZV0gPSBwcm9wO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBGYW1peCBlbGVtZW50XHJcbiAgICAgKiBAcmV0dXJucyBBIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIEZhbWl4IGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5idWZmZXJBcnJheSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -15,4 +15,4 @@ class FamixBaseElement {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
exports.FamixBaseElement = FamixBaseElement;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfYmFzZV9lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9mYW1peC9mYW1peF9iYXNlX2VsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLHdEQUF3RDtBQUV4RCxNQUFzQixnQkFBZ0I7SUFJbEMsdUNBQXVDO0lBQ3ZDLDJCQUEyQjtJQUMzQixJQUFJO0lBRUo7SUFDQSxDQUFDO0lBSUQsNkRBQTZEO0lBQ3RELHVCQUF1QixDQUFDLFFBQTJCO1FBQ3RELGdCQUFNLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUMzRyxDQUFDO0NBQ0o7QUFqQkQsNENBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4uLy4uL2FuYWx5emVcIjtcclxuaW1wb3J0IHsgRmFtaXhKU09ORXhwb3J0ZXIgfSBmcm9tIFwiLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XHJcbi8vIGltcG9ydCB7IEZhbWl4UmVwb3NpdG9yeSB9IGZyb20gXCIuL2ZhbWl4X3JlcG9zaXRvcnlcIjtcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGYW1peEJhc2VFbGVtZW50IHtcclxuXHJcbiAgICBwdWJsaWMgaWQhOiBudW1iZXI7XHJcblxyXG4gICAgLy8gY29uc3RydWN0b3IocmVwbzogRmFtaXhSZXBvc2l0b3J5KSB7XHJcbiAgICAvLyAgIHJlcG8uYWRkRWxlbWVudCh0aGlzKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0SlNPTigpOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyOiBGYW1peEpTT05FeHBvcnRlcik6IHZvaWQge1xyXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcImFkZFByb3BlcnRpZXNUb0V4cG9ydGVyIG5vdCBpbXBsZW1lbnRlZCBmb3IgXCIgKyB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyBgKCR7ZXhwb3J0ZXJ9KWApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|