@mnemonica/tactica 0.4.8 → 0.5.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/README.md +114 -46
- package/SKILL.md +37 -22
- package/lib/analyzer.d.ts +46 -2
- package/lib/analyzer.js +548 -37
- package/lib/cli.js +13 -42
- package/lib/generator.d.ts +11 -25
- package/lib/generator.js +194 -165
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/plugins.d.ts +20 -9
- package/lib/plugins.js +1 -1
- package/lib/types.d.ts +16 -2
- package/lib/types.js +1 -1
- package/lib/writer.d.ts +0 -4
- package/lib/writer.js +1 -10
- package/package.json +23 -7
package/lib/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export { LocalScopeWalker } from './scopes';
|
|
|
15
15
|
export type { ScopeTypeResolver } from './scopes';
|
|
16
16
|
export { CreationGraphBuilder } from './creation-graph';
|
|
17
17
|
export { mergeTacticaPlugins } from './plugins';
|
|
18
|
-
export type { TacticaPlugin, InstrumentationVocabulary } from './plugins';
|
|
18
|
+
export type { TacticaPlugin, InstrumentationVocabulary, DecoratorArgFactory } from './plugins';
|
|
19
19
|
export type { TacticaConfig, TypeNode, TypeGraph, PropertyInfo, AnalyzeResult, AnalyzeError, GeneratedTypes, DefinitionInfo, DefinitionField, DefinitionArg, UsageInfo, DefinitionsJson, UsagesJson, InstrumentationKind, InstrumentationScope, InstrumentationPoint, InstrumentationJson, ControlJson, ModuleBindingKind, ModuleImportKind, ModuleBinding, ModuleInfo, CrossModuleUsage, ModuleGraph, ModulesJson, ScopeKind, ScopeInfo, ScopeVariable, ScopeAnalysis, ScopesJson, CreationGraphNode, CreationGraphEdge, CreationAnchor, CreationGraph, CollectionManifestEntry, CollectionsJson, } from './types';
|
|
20
20
|
export { main, run, watch, parseArgs } from './cli';
|
|
21
21
|
export declare const VERSION: string;
|
package/lib/index.js
CHANGED
|
@@ -68,4 +68,4 @@ Object.defineProperty(exports, "watch", { enumerable: true, get: function () { r
|
|
|
68
68
|
Object.defineProperty(exports, "parseArgs", { enumerable: true, get: function () { return cli_1.parseArgs; } });
|
|
69
69
|
// Version from package.json
|
|
70
70
|
exports.VERSION = pkg.version;
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFYixxREFBdUM7QUFFdkM7Ozs7OztHQU1HO0FBRUgsdUNBQStDO0FBQXRDLDZHQUFBLGlCQUFpQixPQUFBO0FBQzFCLDZEQUEyRDtBQUFsRCx5SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixpQ0FBd0M7QUFBL0Isc0dBQUEsYUFBYSxPQUFBO0FBQ3RCLHlDQUE2QztBQUFwQywyR0FBQSxjQUFjLE9BQUE7QUFDdkIsbUNBQXVDO0FBQTlCLHFHQUFBLFdBQVcsT0FBQTtBQUNwQiwrQ0FBb0Q7QUFBM0Msa0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsbUNBQTRDO0FBQW5DLDBHQUFBLGdCQUFnQixPQUFBO0FBRXpCLG1EQUF3RDtBQUEvQyxzSEFBQSxvQkFBb0IsT0FBQTtBQUM3QixxQ0FBZ0Q7QUFBdkMsOEdBQUEsbUJBQW1CLE9BQUE7QUE2QzVCLGtCQUFrQjtBQUNsQiw2QkFFZTtBQURkLDJGQUFBLElBQUksT0FBQTtBQUFFLDBGQUFBLEdBQUcsT0FBQTtBQUFFLDRGQUFBLEtBQUssT0FBQTtBQUFFLGdHQUFBLFNBQVMsT0FBQTtBQUc1Qiw0QkFBNEI7QUFDZixRQUFBLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgKiBhcyBwa2cgZnJvbSAnLi4vcGFja2FnZS5qc29uJztcblxuLyoqXG4gKiBUYWN0aWNhIC0gVHlwZSBkZWZpbml0aW9uIGdlbmVyYXRvciBmb3IgTW5lbW9uaWNhXG4gKlxuICogR2VuZXJhdGVzIHR5cGUgZGVmaW5pdGlvbnMgZm9yIE1uZW1vbmljYSdzIGR5bmFtaWMgbmVzdGVkIGNvbnN0cnVjdG9ycyxcbiAqIGVuYWJsaW5nIFR5cGVTY3JpcHQgdG8gdW5kZXJzdGFuZCBydW50aW1lIHR5cGUgaGllcmFyY2hpZXMgY3JlYXRlZCB0aHJvdWdoXG4gKiBkZWZpbmUoKSBhbmQgZGVjb3JhdGUoKSBjYWxscy5cbiAqL1xuXG5leHBvcnQgeyBNbmVtb25pY2FBbmFseXplciB9IGZyb20gJy4vYW5hbHl6ZXInO1xuZXhwb3J0IHsgVG9wb2xvZ2ljYUFuYWx5emVyIH0gZnJvbSAnLi90b3BvbG9naWNhLWFuYWx5emVyJztcbmV4cG9ydCB7IFR5cGVHcmFwaEltcGwgfSBmcm9tICcuL2dyYXBoJztcbmV4cG9ydCB7IFR5cGVzR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3InO1xuZXhwb3J0IHsgVHlwZXNXcml0ZXIgfSBmcm9tICcuL3dyaXRlcic7XG5leHBvcnQgeyBNb2R1bGVHcmFwaEJ1aWxkZXIgfSBmcm9tICcuL21vZHVsZS1ncmFwaCc7XG5leHBvcnQgeyBMb2NhbFNjb3BlV2Fsa2VyIH0gZnJvbSAnLi9zY29wZXMnO1xuZXhwb3J0IHR5cGUgeyBTY29wZVR5cGVSZXNvbHZlciB9IGZyb20gJy4vc2NvcGVzJztcbmV4cG9ydCB7IENyZWF0aW9uR3JhcGhCdWlsZGVyIH0gZnJvbSAnLi9jcmVhdGlvbi1ncmFwaCc7XG5leHBvcnQgeyBtZXJnZVRhY3RpY2FQbHVnaW5zIH0gZnJvbSAnLi9wbHVnaW5zJztcbmV4cG9ydCB0eXBlIHtcblx0VGFjdGljYVBsdWdpbiwgSW5zdHJ1bWVudGF0aW9uVm9jYWJ1bGFyeSwgRGVjb3JhdG9yQXJnRmFjdG9yeVxufSBmcm9tICcuL3BsdWdpbnMnO1xuXG5cbmV4cG9ydCB0eXBlIHtcblx0VGFjdGljYUNvbmZpZyxcblx0VHlwZU5vZGUsXG5cdFR5cGVHcmFwaCxcblx0UHJvcGVydHlJbmZvLFxuXHRBbmFseXplUmVzdWx0LFxuXHRBbmFseXplRXJyb3IsXG5cdEdlbmVyYXRlZFR5cGVzLFxuXHREZWZpbml0aW9uSW5mbyxcblx0RGVmaW5pdGlvbkZpZWxkLFxuXHREZWZpbml0aW9uQXJnLFxuXHRVc2FnZUluZm8sXG5cdERlZmluaXRpb25zSnNvbixcblx0VXNhZ2VzSnNvbixcblx0SW5zdHJ1bWVudGF0aW9uS2luZCxcblx0SW5zdHJ1bWVudGF0aW9uU2NvcGUsXG5cdEluc3RydW1lbnRhdGlvblBvaW50LFxuXHRJbnN0cnVtZW50YXRpb25Kc29uLFxuXHRDb250cm9sSnNvbixcblx0TW9kdWxlQmluZGluZ0tpbmQsXG5cdE1vZHVsZUltcG9ydEtpbmQsXG5cdE1vZHVsZUJpbmRpbmcsXG5cdE1vZHVsZUluZm8sXG5cdENyb3NzTW9kdWxlVXNhZ2UsXG5cdE1vZHVsZUdyYXBoLFxuXHRNb2R1bGVzSnNvbixcblx0U2NvcGVLaW5kLFxuXHRTY29wZUluZm8sXG5cdFNjb3BlVmFyaWFibGUsXG5cdFNjb3BlQW5hbHlzaXMsXG5cdFNjb3Blc0pzb24sXG5cdENyZWF0aW9uR3JhcGhOb2RlLFxuXHRDcmVhdGlvbkdyYXBoRWRnZSxcblx0Q3JlYXRpb25BbmNob3IsXG5cdENyZWF0aW9uR3JhcGgsXG5cdENvbGxlY3Rpb25NYW5pZmVzdEVudHJ5LFxuXHRDb2xsZWN0aW9uc0pzb24sXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBDTEkgZW50cnkgcG9pbnRcbmV4cG9ydCB7XG5cdG1haW4sIHJ1biwgd2F0Y2gsIHBhcnNlQXJncyBcbn0gZnJvbSAnLi9jbGknO1xuXG4vLyBWZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IHBrZy52ZXJzaW9uO1xuIl19
|
package/lib/plugins.d.ts
CHANGED
|
@@ -9,6 +9,22 @@ import { InstrumentationKind } from './types';
|
|
|
9
9
|
* All keys are matched by identifier TEXT only (no import resolution, no
|
|
10
10
|
* type checker), so a plugin entry fires on any same-named identifier.
|
|
11
11
|
*/
|
|
12
|
+
/**
|
|
13
|
+
* One decorator-arg factory entry: the instrumentation kind, the target
|
|
14
|
+
* argument position (default 0), and whether the factory constructs the
|
|
15
|
+
* target type on the caller's behalf (`instantiation`).
|
|
16
|
+
*/
|
|
17
|
+
export interface DecoratorArgFactory {
|
|
18
|
+
kind: InstrumentationKind;
|
|
19
|
+
targetArg?: number;
|
|
20
|
+
/**
|
|
21
|
+
* The factory constructs the type passed at `targetArg` (e.g. a pipe
|
|
22
|
+
* that runs `new Target(body)` per request): each matched call whose
|
|
23
|
+
* target resolves to a defined type is recorded in usages.json and
|
|
24
|
+
* flow.json as an `instantiation` of that type at the call site.
|
|
25
|
+
*/
|
|
26
|
+
instantiation?: boolean;
|
|
27
|
+
}
|
|
12
28
|
export interface TacticaPlugin {
|
|
13
29
|
/** Plugin name, used in verbose logging */
|
|
14
30
|
name?: string;
|
|
@@ -22,12 +38,10 @@ export interface TacticaPlugin {
|
|
|
22
38
|
* Decorator-arg factory method -> kind + target argument position
|
|
23
39
|
* (`@UsePipes(mvp.forType(Dto))`): a CallExpression arg whose callee is
|
|
24
40
|
* `<anything>.<name>(...)` matches when `name` is listed; the point's
|
|
25
|
-
* class is the identifier in `targetArg` (default 0).
|
|
41
|
+
* class is the identifier in `targetArg` (default 0). With
|
|
42
|
+
* `instantiation: true` the call is also a construction of that type.
|
|
26
43
|
*/
|
|
27
|
-
decoratorArgFactories?: Record<string,
|
|
28
|
-
kind: InstrumentationKind;
|
|
29
|
-
targetArg?: number;
|
|
30
|
-
}>;
|
|
44
|
+
decoratorArgFactories?: Record<string, DecoratorArgFactory>;
|
|
31
45
|
/**
|
|
32
46
|
* Enable middleware wiring detection: `consumer.apply(Mw).forRoutes(...)`
|
|
33
47
|
* inside a `configure()` method. Shape-based (no vocabulary keys), so it
|
|
@@ -43,10 +57,7 @@ export interface InstrumentationVocabulary {
|
|
|
43
57
|
interfaces: Record<string, InstrumentationKind>;
|
|
44
58
|
useDecorators: Record<string, InstrumentationKind>;
|
|
45
59
|
appTokens: Record<string, InstrumentationKind>;
|
|
46
|
-
decoratorArgFactories: Record<string,
|
|
47
|
-
kind: InstrumentationKind;
|
|
48
|
-
targetArg?: number;
|
|
49
|
-
}>;
|
|
60
|
+
decoratorArgFactories: Record<string, DecoratorArgFactory>;
|
|
50
61
|
middlewareWiring: boolean;
|
|
51
62
|
}
|
|
52
63
|
/**
|
package/lib/plugins.js
CHANGED
|
@@ -26,4 +26,4 @@ function mergeTacticaPlugins(plugins) {
|
|
|
26
26
|
}
|
|
27
27
|
return merged;
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUEwRWIsa0RBa0JDO0FBeEJEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUUsT0FBd0I7SUFDNUQsTUFBTSxNQUFNLEdBQThCO1FBQ3pDLFVBQVUsRUFBYyxFQUFFO1FBQzFCLGFBQWEsRUFBVyxFQUFFO1FBQzFCLFNBQVMsRUFBZSxFQUFFO1FBQzFCLHFCQUFxQixFQUFHLEVBQUU7UUFDMUIsZ0JBQWdCLEVBQVEsS0FBSztLQUM3QixDQUFDO0lBQ0YsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFFLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDO0lBQ0YsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgSW5zdHJ1bWVudGF0aW9uS2luZCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRhY3RpY2EgcGx1Z2luOiBzdXBwbGllcyB0aGUgZnJhbWV3b3JrIHZvY2FidWxhcnkgdGhlIGFuYWx5emVyIG1hdGNoZXNcbiAqIHN5bnRhY3RpY2FsbHkuIFRhY3RpY2EgY29yZSBpcyBmcmFtZXdvcmstYmxpbmQg4oCUIHdpdGggbm8gcGx1Z2lucyBsb2FkZWRcbiAqIGl0IGRldGVjdHMgbm8gaW5zdHJ1bWVudGF0aW9uIHBvaW50cyBhdCBhbGwuIEZyYW1ld29yayBhZGFwdGVycyAoZS5nLiBhXG4gKiBzZXJ2ZXItZnJhbWV3b3JrIGludGVncmF0aW9uIHBhY2thZ2UpIHNoaXAgYSBwbHVnaW47IHByb2plY3RzIGVuYWJsZSBpdFxuICogdGhyb3VnaCBhIGAudGFjdGljYS5qc2AgLyBgdGFjdGljYS5jb25maWcuanNgIGNvbmZpZyBmaWxlLlxuICpcbiAqIEFsbCBrZXlzIGFyZSBtYXRjaGVkIGJ5IGlkZW50aWZpZXIgVEVYVCBvbmx5IChubyBpbXBvcnQgcmVzb2x1dGlvbiwgbm9cbiAqIHR5cGUgY2hlY2tlciksIHNvIGEgcGx1Z2luIGVudHJ5IGZpcmVzIG9uIGFueSBzYW1lLW5hbWVkIGlkZW50aWZpZXIuXG4gKi9cbi8qKlxuICogT25lIGRlY29yYXRvci1hcmcgZmFjdG9yeSBlbnRyeTogdGhlIGluc3RydW1lbnRhdGlvbiBraW5kLCB0aGUgdGFyZ2V0XG4gKiBhcmd1bWVudCBwb3NpdGlvbiAoZGVmYXVsdCAwKSwgYW5kIHdoZXRoZXIgdGhlIGZhY3RvcnkgY29uc3RydWN0cyB0aGVcbiAqIHRhcmdldCB0eXBlIG9uIHRoZSBjYWxsZXIncyBiZWhhbGYgKGBpbnN0YW50aWF0aW9uYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVjb3JhdG9yQXJnRmFjdG9yeSB7XG5cdGtpbmQ6IEluc3RydW1lbnRhdGlvbktpbmQ7XG5cdHRhcmdldEFyZz86IG51bWJlcjtcblx0LyoqXG5cdCAqIFRoZSBmYWN0b3J5IGNvbnN0cnVjdHMgdGhlIHR5cGUgcGFzc2VkIGF0IGB0YXJnZXRBcmdgIChlLmcuIGEgcGlwZVxuXHQgKiB0aGF0IHJ1bnMgYG5ldyBUYXJnZXQoYm9keSlgIHBlciByZXF1ZXN0KTogZWFjaCBtYXRjaGVkIGNhbGwgd2hvc2Vcblx0ICogdGFyZ2V0IHJlc29sdmVzIHRvIGEgZGVmaW5lZCB0eXBlIGlzIHJlY29yZGVkIGluIHVzYWdlcy5qc29uIGFuZFxuXHQgKiBmbG93Lmpzb24gYXMgYW4gYGluc3RhbnRpYXRpb25gIG9mIHRoYXQgdHlwZSBhdCB0aGUgY2FsbCBzaXRlLlxuXHQgKi9cblx0aW5zdGFudGlhdGlvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFjdGljYVBsdWdpbiB7XG5cdC8qKiBQbHVnaW4gbmFtZSwgdXNlZCBpbiB2ZXJib3NlIGxvZ2dpbmcgKi9cblx0bmFtZT86IHN0cmluZztcblx0LyoqIEhlcml0YWdlIGludGVyZmFjZSBpZGVudGlmaWVyIC0+IGtpbmQgKGBpbXBsZW1lbnRzIFhgKSAqL1xuXHRpbnN0cnVtZW50YXRpb25JbnRlcmZhY2VzPzogUmVjb3JkPHN0cmluZywgSW5zdHJ1bWVudGF0aW9uS2luZD47XG5cdC8qKiBEZWNvcmF0b3IgaWRlbnRpZmllciAtPiBraW5kIChgQFgoSW1wbClgIG9uIGNsYXNzZXMvbWV0aG9kcykgKi9cblx0dXNlRGVjb3JhdG9ycz86IFJlY29yZDxzdHJpbmcsIEluc3RydW1lbnRhdGlvbktpbmQ+O1xuXHQvKiogUHJvdmlkZXIgdG9rZW4gaWRlbnRpZmllciAtPiBraW5kIChgeyBwcm92aWRlOiBUT0tFTiwgdXNlQ2xhc3M6IFggfWApICovXG5cdGFwcFRva2Vucz86IFJlY29yZDxzdHJpbmcsIEluc3RydW1lbnRhdGlvbktpbmQ+O1xuXHQvKipcblx0ICogRGVjb3JhdG9yLWFyZyBmYWN0b3J5IG1ldGhvZCAtPiBraW5kICsgdGFyZ2V0IGFyZ3VtZW50IHBvc2l0aW9uXG5cdCAqIChgQFVzZVBpcGVzKG12cC5mb3JUeXBlKER0bykpYCk6IGEgQ2FsbEV4cHJlc3Npb24gYXJnIHdob3NlIGNhbGxlZSBpc1xuXHQgKiBgPGFueXRoaW5nPi48bmFtZT4oLi4uKWAgbWF0Y2hlcyB3aGVuIGBuYW1lYCBpcyBsaXN0ZWQ7IHRoZSBwb2ludCdzXG5cdCAqIGNsYXNzIGlzIHRoZSBpZGVudGlmaWVyIGluIGB0YXJnZXRBcmdgIChkZWZhdWx0IDApLiBXaXRoXG5cdCAqIGBpbnN0YW50aWF0aW9uOiB0cnVlYCB0aGUgY2FsbCBpcyBhbHNvIGEgY29uc3RydWN0aW9uIG9mIHRoYXQgdHlwZS5cblx0ICovXG5cdGRlY29yYXRvckFyZ0ZhY3Rvcmllcz86IFJlY29yZDxzdHJpbmcsIERlY29yYXRvckFyZ0ZhY3Rvcnk+O1xuXHQvKipcblx0ICogRW5hYmxlIG1pZGRsZXdhcmUgd2lyaW5nIGRldGVjdGlvbjogYGNvbnN1bWVyLmFwcGx5KE13KS5mb3JSb3V0ZXMoLi4uKWBcblx0ICogaW5zaWRlIGEgYGNvbmZpZ3VyZSgpYCBtZXRob2QuIFNoYXBlLWJhc2VkIChubyB2b2NhYnVsYXJ5IGtleXMpLCBzbyBpdFxuXHQgKiBpcyBvcHQtaW4gcGVyIHBsdWdpbi5cblx0ICovXG5cdG1pZGRsZXdhcmVXaXJpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBhbmFseXplcidzIG1lcmdlZCB2aWV3IG9mIGFsbCBsb2FkZWQgcGx1Z2luczogb25lIGxvb2t1cCB0YWJsZSBwZXJcbiAqIGRldGVjdGlvbiBjaGFubmVsLCBwbHVzIHRoZSBtaWRkbGV3YXJlLXdpcmluZyBzd2l0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdHJ1bWVudGF0aW9uVm9jYWJ1bGFyeSB7XG5cdGludGVyZmFjZXM6IFJlY29yZDxzdHJpbmcsIEluc3RydW1lbnRhdGlvbktpbmQ+O1xuXHR1c2VEZWNvcmF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBJbnN0cnVtZW50YXRpb25LaW5kPjtcblx0YXBwVG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBJbnN0cnVtZW50YXRpb25LaW5kPjtcblx0ZGVjb3JhdG9yQXJnRmFjdG9yaWVzOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JBcmdGYWN0b3J5Pjtcblx0bWlkZGxld2FyZVdpcmluZzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBNZXJnZSBwbHVnaW5zIGludG8gb25lIHZvY2FidWxhcnkuIExhdGVyIHBsdWdpbnMgb3ZlcnJpZGUgZWFybGllciBvbmVzIG9uXG4gKiB0aGUgc2FtZSBpZGVudGlmaWVyIGtleTsgbWlkZGxld2FyZVdpcmluZyBpcyBhbiBPUiAoYW55IHBsdWdpbiBlbmFibGVzIGl0KS5cbiAqIEFuIGVtcHR5IHBsdWdpbiBsaXN0IHlpZWxkcyBhbiBlbXB0eSB2b2NhYnVsYXJ5IOKAlCB0aGUgYW5hbHl6ZXIgdGhlblxuICogY29sbGVjdHMgemVybyBpbnN0cnVtZW50YXRpb24gcG9pbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VUYWN0aWNhUGx1Z2lucyAocGx1Z2luczogVGFjdGljYVBsdWdpbltdKTogSW5zdHJ1bWVudGF0aW9uVm9jYWJ1bGFyeSB7XG5cdGNvbnN0IG1lcmdlZDogSW5zdHJ1bWVudGF0aW9uVm9jYWJ1bGFyeSA9IHtcblx0XHRpbnRlcmZhY2VzICAgICAgICAgICAgOiB7fSxcblx0XHR1c2VEZWNvcmF0b3JzICAgICAgICAgOiB7fSxcblx0XHRhcHBUb2tlbnMgICAgICAgICAgICAgOiB7fSxcblx0XHRkZWNvcmF0b3JBcmdGYWN0b3JpZXMgOiB7fSxcblx0XHRtaWRkbGV3YXJlV2lyaW5nICAgICAgOiBmYWxzZSxcblx0fTtcblx0Zm9yIChjb25zdCBwbHVnaW4gb2YgcGx1Z2lucykge1xuXHRcdE9iamVjdC5hc3NpZ24obWVyZ2VkLmludGVyZmFjZXMsIHBsdWdpbi5pbnN0cnVtZW50YXRpb25JbnRlcmZhY2VzKTtcblx0XHRPYmplY3QuYXNzaWduKG1lcmdlZC51c2VEZWNvcmF0b3JzLCBwbHVnaW4udXNlRGVjb3JhdG9ycyk7XG5cdFx0T2JqZWN0LmFzc2lnbihtZXJnZWQuYXBwVG9rZW5zLCBwbHVnaW4uYXBwVG9rZW5zKTtcblx0XHRPYmplY3QuYXNzaWduKG1lcmdlZC5kZWNvcmF0b3JBcmdGYWN0b3JpZXMsIHBsdWdpbi5kZWNvcmF0b3JBcmdGYWN0b3JpZXMpO1xuXHRcdGlmIChwbHVnaW4ubWlkZGxld2FyZVdpcmluZykge1xuXHRcdFx0bWVyZ2VkLm1pZGRsZXdhcmVXaXJpbmcgPSB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWVyZ2VkO1xufVxuIl19
|
package/lib/types.d.ts
CHANGED
|
@@ -10,8 +10,6 @@ export interface TacticaConfig {
|
|
|
10
10
|
exclude?: string[];
|
|
11
11
|
/** Enable verbose logging */
|
|
12
12
|
verbose?: boolean;
|
|
13
|
-
/** Generate global augmentation instead of module augmentation (default: true) */
|
|
14
|
-
globalAugmentation?: boolean;
|
|
15
13
|
}
|
|
16
14
|
export interface PropertyInfo {
|
|
17
15
|
name: string;
|
|
@@ -34,6 +32,18 @@ export interface ConstructorParamInfo {
|
|
|
34
32
|
*/
|
|
35
33
|
kind?: 'rest';
|
|
36
34
|
}
|
|
35
|
+
export interface BuilderValue {
|
|
36
|
+
/** Exported name used by registry.ts to import the builder value. */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Module whose exported binding is imported by registry.ts. */
|
|
39
|
+
sourceFile: string;
|
|
40
|
+
/** RegistryOf for builder-held values, typeof for exported free defines. */
|
|
41
|
+
kind: 'registryOf' | 'typeof';
|
|
42
|
+
/** Full path of the constructor held by the exported value. */
|
|
43
|
+
fullPath: string;
|
|
44
|
+
/** True when the binding uses default-import syntax. */
|
|
45
|
+
defaultImport?: boolean;
|
|
46
|
+
}
|
|
37
47
|
export interface TypeNode {
|
|
38
48
|
/** Type name (e.g., "SecondType") */
|
|
39
49
|
name: string;
|
|
@@ -43,6 +53,8 @@ export interface TypeNode {
|
|
|
43
53
|
properties: Map<string, PropertyInfo>;
|
|
44
54
|
/** Constructor parameters (for TypeRegistry constructor signature) */
|
|
45
55
|
constructorParams?: ConstructorParamInfo[];
|
|
56
|
+
/** Explicit instance-type override from a this: any handler annotation. */
|
|
57
|
+
instanceTypeOverride?: 'any';
|
|
46
58
|
/**
|
|
47
59
|
* True when the construct handler is an async function/arrow (detected
|
|
48
60
|
* syntactically by the async modifier). Emitted constructor shapes then
|
|
@@ -50,6 +62,8 @@ export interface TypeNode {
|
|
|
50
62
|
* they are typed by the user in userland (documented in AGENTS.md).
|
|
51
63
|
*/
|
|
52
64
|
isAsync?: boolean;
|
|
65
|
+
/** Computed loop definitions contribute graph metadata but no TS entries. */
|
|
66
|
+
metadataOnly?: boolean;
|
|
53
67
|
/** Parent type node */
|
|
54
68
|
parent?: TypeNode;
|
|
55
69
|
/** Child types */
|
package/lib/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFRhY3RpY2FcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhY3RpY2FDb25maWcge1xuXHQvKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiAudGFjdGljYSkgKi9cblx0b3V0cHV0RGlyPzogc3RyaW5nO1xuXHQvKiogRmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0aW5jbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRmlsZXMgdG8gZXhjbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0ZXhjbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyAqL1xuXHR2ZXJib3NlPzogYm9vbGVhbjtcblx0LyoqIEdlbmVyYXRlIGdsb2JhbCBhdWdtZW50YXRpb24gaW5zdGVhZCBvZiBtb2R1bGUgYXVnbWVudGF0aW9uIChkZWZhdWx0OiB0cnVlKSAqL1xuXHRnbG9iYWxBdWdtZW50YXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbDogYm9vbGVhbjtcblx0LyoqIFRydWUgaWYgdGhpcyBpcyBhIGdldHRlciBwcm9wZXJ0eSAocmVhZG9ubHkpICovXG5cdHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cblxuLyoqIENvbnN0cnVjdG9yIHBhcmFtZXRlciBpbmZvIGZvciBUeXBlUmVnaXN0cnkgc2lnbmF0dXJlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvclBhcmFtSW5mbyB7XG5cdC8qKiBQYXJhbWV0ZXIgbmFtZSAoZS5nLiwgXCJ1c2FnZXNcIiwgXCJkYXRhXCIsIFwiY29uZmlnXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIFRoZSB0eXBlIHN0cmluZyAtIGNhbiBiZSBhIHNpbXBsZSB0eXBlIG9yIGV4cGFuZGVkIG9iamVjdCBsaXRlcmFsICovXG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBIb3cgdGhlIHBhcmFtZXRlciByZWNlaXZlcyBpdHMgdmFsdWUuIE9ubHkgJ3Jlc3QnIGlzIGVtaXR0ZWQgKFRTXG5cdCAqIGAuLi54c2ApOyBhYnNlbnQgbWVhbnMgYW4gb3JkaW5hcnkgcGFyYW1ldGVyLiBNaXJyb3JzIHRoZSBga2luZGBcblx0ICogdm9jYWJ1bGFyeSBvZiB0aGUgbGV0aGUgZGVmaW5pdGlvbnMgY29udHJhY3QgKGRlZmluaXRpb25zLmpzb24gYXJncykuXG5cdCAqL1xuXHRraW5kPzogJ3Jlc3QnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVOb2RlIHtcblx0LyoqIFR5cGUgbmFtZSAoZS5nLiwgXCJTZWNvbmRUeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIEZ1bGwgcGF0aCAoZS5nLiwgXCJGaXJzdFR5cGUuU2Vjb25kVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogUHJvcGVydGllcyBkZWZpbmVkIGluIHRoaXMgdHlwZSdzIGNvbnN0cnVjdG9yICovXG5cdHByb3BlcnRpZXM6IE1hcDxzdHJpbmcsIFByb3BlcnR5SW5mbz47XG5cdC8qKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIChmb3IgVHlwZVJlZ2lzdHJ5IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSkgKi9cblx0Y29uc3RydWN0b3JQYXJhbXM/OiBDb25zdHJ1Y3RvclBhcmFtSW5mb1tdO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBjb25zdHJ1Y3QgaGFuZGxlciBpcyBhbiBhc3luYyBmdW5jdGlvbi9hcnJvdyAoZGV0ZWN0ZWRcblx0ICogc3ludGFjdGljYWxseSBieSB0aGUgYXN5bmMgbW9kaWZpZXIpLiBFbWl0dGVkIGNvbnN0cnVjdG9yIHNoYXBlcyB0aGVuXG5cdCAqIHJlc29sdmUgdG8gUHJvbWlzZTxJbnN0YW5jZVR5cGU+LiBBc3luYyBDTEFTU0VTIGFyZSBuZXZlciBmbGFnZ2VkIOKAlFxuXHQgKiB0aGV5IGFyZSB0eXBlZCBieSB0aGUgdXNlciBpbiB1c2VybGFuZCAoZG9jdW1lbnRlZCBpbiBBR0VOVFMubWQpLlxuXHQgKi9cblx0aXNBc3luYz86IGJvb2xlYW47XG5cdC8qKiBQYXJlbnQgdHlwZSBub2RlICovXG5cdHBhcmVudD86IFR5cGVOb2RlO1xuXHQvKiogQ2hpbGQgdHlwZXMgKi9cblx0Y2hpbGRyZW46IE1hcDxzdHJpbmcsIFR5cGVOb2RlPjtcblx0LyoqIFNvdXJjZSBmaWxlIHBhdGggKi9cblx0c291cmNlRmlsZTogc3RyaW5nO1xuXHQvKiogTGluZSBudW1iZXIgaW4gc291cmNlICovXG5cdGxpbmU6IG51bWJlcjtcblx0LyoqIENvbHVtbiBudW1iZXIgaW4gc291cmNlICovXG5cdGNvbHVtbjogbnVtYmVyO1xuXHQvKiogQ29uc3RydWN0b3IgZnVuY3Rpb24gbmFtZSBvciBjbGFzcyBuYW1lICovXG5cdGNvbnN0cnVjdG9yTmFtZT86IHN0cmluZztcblx0LyoqIENvbGxlY3Rpb24gaWRlbnRpZmllciBpZiB0aGUgdHlwZSBiZWxvbmdzIHRvIGEgY3VzdG9tIGNvbGxlY3Rpb24gKHVuZGVmaW5lZCA9IGRlZmF1bHQvZ2xvYmFsIHJlZ2lzdHJ5KSAqL1xuXHRjb2xsZWN0aW9uSWQ/OiBzdHJpbmc7XG5cdC8qKiBSZWdpc3RyeSBpbnRlcmZhY2UgbmFtZSBmb3IgY3VzdG9tIGNvbGxlY3Rpb25zIHVzaW5nIE9wdGlvbiBCICh1c2VyLXByb3ZpZGVkIHJlZ2lzdHJ5IGludGVyZmFjZSkgKi9cblx0cmVnaXN0cnlJbnRlcmZhY2VOYW1lPzogc3RyaW5nO1xuXHQvKipcblx0ICogU291cmNlIGZpbGUgb2YgdGhlIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIGNhbGwg4oCUIHRoZSBtb2R1bGUgdGhlXG5cdCAqIE9wdGlvbiBCIHJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiBtdXN0IHRhcmdldCAodGhlIGludGVyZmFjZSBpc1xuXHQgKiBjb25maXJtZWQgZGVjbGFyZWQgdGhlcmUpXG5cdCAqL1xuXHRjb2xsZWN0aW9uU291cmNlRmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlR3JhcGgge1xuXHQvKiogUm9vdCB0eXBlcywga2V5ZWQgYnkgZnVsbCBwYXRoIChjdXN0b20tY29sbGVjdGlvbiByb290cyBjYXJyeSB0aGUgYGNvbGxlY3Rpb25JZDo6YCBwcmVmaXgpICovXG5cdHJvb3RzOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBBbGwgdHlwZXMgYnkgZnVsbCBwYXRoICovXG5cdGFsbFR5cGVzOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBBZGQgYSByb290IHR5cGUgKi9cblx0YWRkUm9vdChub2RlOiBUeXBlTm9kZSk6IHZvaWQ7XG5cdC8qKiBGaW5kIGEgdHlwZSBieSBmdWxsIHBhdGggKi9cblx0ZmluZFR5cGUoZnVsbFBhdGg6IHN0cmluZyk6IFR5cGVOb2RlIHwgdW5kZWZpbmVkO1xuXHQvKiogR2V0IGFsbCB0eXBlcyBhcyBhcnJheSAqL1xuXHRnZXRBbGxUeXBlcygpOiBUeXBlTm9kZVtdO1xuXHQvKiogQ2xlYXIgdGhlIGdyYXBoICovXG5cdGNsZWFyKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZVJlc3VsdCB7XG5cdC8qKiBUeXBlcyBmb3VuZCBpbiB0aGUgYW5hbHlzaXMgKi9cblx0dHlwZXM6IFR5cGVOb2RlW107XG5cdC8qKiBFcnJvcnMgZW5jb3VudGVyZWQgKi9cblx0ZXJyb3JzOiBBbmFseXplRXJyb3JbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmFseXplRXJyb3Ige1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGZpbGU6IHN0cmluZztcblx0bGluZTogbnVtYmVyO1xuXHRjb2x1bW46IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZWRUeXBlcyB7XG5cdC8qKiBDb250ZW50IG9mIHRoZSAuZC50cyBmaWxlICovXG5cdGNvbnRlbnQ6IHN0cmluZztcblx0LyoqIFR5cGVzIHRoYXQgd2VyZSBnZW5lcmF0ZWQgKi9cblx0dHlwZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9uZSBvd24gZmllbGQgb2YgYSB0eXBlLCBpbiBkZWNsYXJhdGlvbiBvcmRlciAoZGVmaW5pdGlvbnMuanNvbiBgZmllbGRzYCxcbiAqIGxldGhlIGNvbnRyYWN0KS4gYHR5cGVgIGlzIHNvdXJjZS1sYW5ndWFnZSB0ZXh0IGZvciBkaXNwbGF5IG9ubHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkZpZWxkIHtcblx0bmFtZTogc3RyaW5nO1xuXHR0eXBlOiBzdHJpbmc7XG5cdG9wdGlvbmFsOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9uZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIsIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uIGBhcmdzYCxcbiAqIGxldGhlIGNvbnRyYWN0KS4gVGhlIHJlY2VpdmVyIChgdGhpc2ApIGlzIG5ldmVyIGxpc3RlZC4gYG9wdGlvbmFsYCBhYnNlbnRcbiAqIG1lYW5zIGZhbHNlOyBhIHJlc3QgcGFyYW1ldGVyIGNhcnJpZXMgYGtpbmQ6ICdyZXN0J2AgYW5kIG5vIGBvcHRpb25hbGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkFyZyB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbD86IGJvb2xlYW47XG5cdGtpbmQ/OiAncmVzdCc7XG59XG5cbi8qKlxuICogRGVmaW5pdGlvbiBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uSW5mbyB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogSG93IHR5cGUgd2FzIGNyZWF0ZWQ6ICdkZWZpbmUnIG9yICdkZWNvcmF0ZScgKi9cblx0a2luZDogJ2RlZmluZScgfCAnZGVjb3JhdGUnO1xuXHQvKiogUGFyZW50IHR5cGUgZnVsbCBwYXRoLCBudWxsIGlmIHJvb3QgKi9cblx0cGFyZW50OiBzdHJpbmcgfCBudWxsO1xuXHQvKiogc3RyaWN0Q2hhaW4gY29uZmlnIG9wdGlvbiAqL1xuXHRzdHJpY3RDaGFpbjogYm9vbGVhbjtcblx0LyoqIGJsb2NrRXJyb3JzIGNvbmZpZyBvcHRpb24gKi9cblx0YmxvY2tFcnJvcnM6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBUaGUgdHlwZSdzIG93biBmaWVsZHMgaW4gZGVjbGFyYXRpb24gb3JkZXIgKGRlZmluaXRpb25zLmpzb24gY29udHJhY3QsXG5cdCAqIGxldGhlIGBmaWVsZGApLiBBYnNlbnQgbWVhbnMgbm90IHJlY29yZGVkOyBhbiBlbXB0eSBhcnJheSBtZWFucyB0aGVcblx0ICogdHlwZSBoYXMgbm8gZmllbGRzLlxuXHQgKi9cblx0ZmllbGRzPzogRGVmaW5pdGlvbkZpZWxkW107XG5cdC8qKlxuXHQgKiBUaGUgY29uc3RydWN0b3IncyBwYXJhbWV0ZXJzIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uXG5cdCAqIGNvbnRyYWN0LCBsZXRoZSBgYXJnYCkuIEFic2VudCBtZWFucyBub3QgcmVjb3JkZWQ7IGFuIGVtcHR5IGFycmF5XG5cdCAqIG1lYW5zIHRoZSBjb25zdHJ1Y3RvciB0YWtlcyBub25lLlxuXHQgKi9cblx0YXJncz86IERlZmluaXRpb25BcmdbXTtcbn1cblxuLyoqXG4gKiBVc2FnZSBpbmZvIGZvciBjb2RlIG5hdmlnYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2FnZUluZm8ge1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBLaW5kIG9mIHVzYWdlOiBpbnN0YW50aWF0aW9uLCB0eXBlQW5ub3RhdGlvbiwgcHJvcGVydHlBY2Nlc3MsIGxvb2t1cCwgcmVmZXJlbmNlICovXG5cdGtpbmQ6ICdpbnN0YW50aWF0aW9uJyB8ICd0eXBlQW5ub3RhdGlvbicgfCAncHJvcGVydHlBY2Nlc3MnIHwgJ2xvb2t1cCcgfCAncmVmZXJlbmNlJztcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBTY29wZSBob2xkaW5nIHRoaXMgdXNhZ2UgKExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZDogbW9kdWxlIHNjb3BlIGlzIHRoZVxuXHQgKiBmaWxlIHBhdGgsIGZ1bmN0aW9uIHNjb3BlcyBhcmUgZmlsZTpsaW5lOmNvbCkuIEFkZGl0aXZlOyBhYnNlbnQgd2hlbiB0aGVcblx0ICogdXNhZ2Ugc2l0cyBvdXRzaWRlIHRyYWNrZWQgZmlsZXMuXG5cdCAqL1xuXHRob2xkZXJTY29wZUlkPzogc3RyaW5nO1xuXHQvKipcblx0ICogQ29uc3RydWN0b3IgZXhwcmVzc2lvbiB0ZXh0IGF0IGFuIGluc3RhbnRpYXRpb24gc2l0ZSAoJ1RoaW5nJyxcblx0ICogJ3VzZXIuQWRtaW5FbnRpdHknLCAnVDInIGZvciBhIGxvb2t1cCBhbGlhcykuIEFkZGl0aXZlOyBzZXQgb25seSBvblxuXHQgKiBraW5kICdpbnN0YW50aWF0aW9uJy4gRmVlZHMgQ3JlYXRpb25BbmNob3IuY29uc3RydWN0b3JUZXh0IChQaGFzZSAzKS5cblx0ICovXG5cdGNvbnN0cnVjdG9yVGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgZGVmaW5pdGlvbnMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25zSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZGVmaW5pdGlvbnM6IFJlY29yZDxzdHJpbmcsIERlZmluaXRpb25JbmZvPjtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgdXNhZ2VzLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2FnZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHR1c2FnZXM6IFJlY29yZDxzdHJpbmcsIFVzYWdlSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBFRFMgKEV4ZWN1dGlvbiBEYXRhIFN0b3JhZ2UpIGtpbmQgZm9yIHRyYWNraW5nIGV4ZWN1dGlvbiBmbG93IHBhdHRlcm5zXG4gKi9cbmV4cG9ydCB0eXBlIEVEU0tpbmQgPVxuXHR8ICd3cmFwJ1xuXHR8ICdjb250ZXh0Q29uc3VtZSdcblx0fCAnaG9va0F0dGFjaCc7XG5cbi8qKlxuICogRURTIGluZm8gZm9yIGV4ZWN1dGlvbiBkYXRhIGZsb3cgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFRFNJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiBFRFMgdXNhZ2UgKi9cblx0a2luZDogRURTS2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBSZXNvbHZlZCB0YXJnZXQgdHlwZSBpZiBkZXRlY3RhYmxlICovXG5cdHRhcmdldFR5cGU/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBFbmNsb3NpbmcgbW5lbW9uaWNhIHR5cGUgcGF0aCAoZGVmaW5lL2xhenkgaGFuZGxlciBvciBkZWNvcmF0ZWQgY2xhc3MpO1xuXHQgKiBmb3Igd3JhcCBzaXRlcyBvdXRzaWRlIGFueSBoYW5kbGVyLCBhdHRyaWJ1dGVkIHRocm91Z2ggdGhlIGluc3RhbmNlL2NvbnRleHRcblx0ICogYXJndW1lbnQgKHRyYWNrZWQgYXNzaWdubWVudCBvciBwYXJhbWV0ZXIgYW5ub3RhdGlvbiksIHRoZW4gaW5oZXJpdGVkIGRvd25cblx0ICogdGhlIHdyYXAgZ2VuZXJhdGlvbiBjaGFpbiAoYHZpYWApXG5cdCAqL1xuXHRzY29wZT86IHN0cmluZztcblx0LyoqIExvY2F0aW9uIG9mIHRoZSBlbmNsb3Npbmcgd3JhcCBzaXRlIHdob3NlIHJ1bnRpbWUgd3JhcHBpbmcgY2F1c2VkIHRoaXMgZW50cnkgKi9cblx0dmlhPzogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGhzIGluc3RhbnRpYXRlZCBpbnNpZGUgdGhlIHdyYXBwZWQgYm9keSDigJQgZ3VhcmFudGVlZCBwYXRoIGhpdHMgKi9cblx0Y3JlYXRlc1R5cGVzPzogc3RyaW5nW107XG5cdC8qKiBMYWJlbCBzdHJpbmcgbGl0ZXJhbCBwYXNzZWQgdG8gd3JhcChmbiwg4oCmLCAnbGFiZWwnKSB3aGVuIHN0YXRpY2FsbHkgdmlzaWJsZSAqL1xuXHRsYWJlbD86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgKHNjb3Blcy5qc29uKSBvZiB0aGUgd3JhcHBlZCBjYWxsYmFjaydzIG93biBzY29wZSDigJQgam9pbnMgdG8gdGhlIGNyZWF0aW9uIGdyYXBoICovXG5cdGNhbGxiYWNrU2NvcGVJZD86IHN0cmluZztcblx0LyoqIElkZW50aWZpZXIgcGFzc2VkIGFzIHRoZSBpbnN0YW5jZS9jb250ZXh0IGFyZ3VtZW50ICgndXNlcicpLCB3aGVuIGl0IGlzIG9uZSAqL1xuXHRpbnN0YW5jZUFyZz86IHN0cmluZztcblx0LyoqIHNjb3BlSWQgb2YgdGhlIHNjb3BlIGhvbGRpbmcgdGhlIHdyYXAgY2FsbCBzaXRlIOKAlCBqb2lucyB0byB0aGUgY3JlYXRpb24gZ3JhcGggKi9cblx0c2NvcGVJZD86IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSBmdWxsUGF0aCBvZiB0aGUgaW5zdGFuY2UgYXJndW1lbnQsIHJlc29sdmVkIHRocm91Z2ggc2NvcGUgdmFyaWFibGVzICovXG5cdHdyYXBzVHlwZVBhdGg/OiBzdHJpbmc7XG5cdC8qKiBXcmFwLWZhbWlseSBmdW5jdGlvbiBuYW1lICgnd3JhcCcgfCAnd3JhcENvbnN0cnVjdG9yQXJnJyB8IOKApikg4oCUIGpvaW5zIHRoZVxuXHQgKiAgY2FsbCBzaXRlIHRvIGRpdmUncyBlbmdpbmUga25vdCBpbiBncmFwaCBjb25zdW1lcnMgKi9cblx0Zm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGVkcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZWRzOiBSZWNvcmQ8c3RyaW5nLCBFRFNJbmZvW10+O1xufVxuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBraW5kIGZvciBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZHNcbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uS2luZCA9XG5cdHwgJ2ludGVyY2VwdG9yJ1xuXHR8ICdndWFyZCdcblx0fCAncGlwZSdcblx0fCAnZmlsdGVyJ1xuXHR8ICdtaWRkbGV3YXJlJztcblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24gc2NvcGU6IHdoZXJlIHRoZSBwb2ludCBhdHRhY2hlcy5cbiAqICdnbG9iYWwnIGZvciBwcm92aWRlci10b2tlbiByZWdpc3RyYXRpb25zLCAnbW9kdWxlJyBmb3IgbWlkZGxld2FyZSB3aXJlZFxuICogdmlhIGNvbnN1bWVyLmFwcGx5KCkgQU5EIGZvciBiYXJlIGhlcml0YWdlIGRlY2xhcmF0aW9ucyB3aG9zZSBhdHRhY2htZW50XG4gKiBpcyBzdGF0aWNhbGx5IHVua25vd24sIGBjb250cm9sbGVyOk5hbWVgIC8gYG1ldGhvZDpDbGFzcy5tZXRob2RgIGZvclxuICogZGVjb3JhdG9yLXNjb3BlZCBhdHRhY2htZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdHJ1bWVudGF0aW9uU2NvcGUgPVxuXHR8ICdnbG9iYWwnXG5cdHwgJ21vZHVsZSdcblx0fCBgY29udHJvbGxlcjoke3N0cmluZ31gXG5cdHwgYG1ldGhvZDoke3N0cmluZ31gO1xuXG4vKipcbiAqIEluc3RydW1lbnRhdGlvbiBwb2ludDogYSBmcmFtZXdvcmsgbGlmZWN5Y2xlIGNyb3Nzcm9hZCAoaW50ZXJjZXB0b3IsXG4gKiBndWFyZCwgcGlwZSwgZmlsdGVyLCBtaWRkbGV3YXJlKSBkZXRlY3RlZCBzeW50YWN0aWNhbGx5LiBUaGUgdm9jYWJ1bGFyeVxuICogdGhhdCB0dXJucyBhIHN5bnRhY3RpYyBzaGFwZSBpbnRvIGEgcG9pbnQgY29tZXMgZnJvbSBwbHVnaW5zIOKAlCB3aXRoIG5vXG4gKiBwbHVnaW4gbG9hZGVkLCBubyBwb2ludHMgYXJlIGNvbGxlY3RlZC5cbiAqXG4gKiBEZWR1cGUvc2NvcGUgZGVjaXNpb246IHBvaW50cyBhcmUga2V5ZWQgYnkgKGtpbmQsIGNsYXNzTmFtZSwgbG9jYXRpb24sXG4gKiBzY29wZSkgYW5kIGR1cGxpY2F0ZXMgbWVyZ2UgdGhlaXIgYHRhcmdldHNgLiBBIGNsYXNzIGRldGVjdGVkIGJvdGggYnlcbiAqIGhlcml0YWdlIChhIHBsdWdpbi1saXN0ZWQgYGltcGxlbWVudHNgIGludGVyZmFjZSkgYW5kIGJ5IGEgZGVjb3JhdG9yXG4gKiBzaXRlIHlpZWxkcyBTRVBBUkFURSBlbnRyaWVzIOKAlCB0aGUgY2xhc3MtZGVjbGFyYXRpb24gcG9pbnQga2VlcHMgc2NvcGVcbiAqICdtb2R1bGUnIChhdHRhY2htZW50IHVua25vd24pIHdoaWxlIGVhY2ggcmVnaXN0cmF0aW9uIHNpdGUgY2FycmllcyBpdHNcbiAqIG93biBzY29wZS4gT25lIHBvaW50IHNlcnZpbmcgbXVsdGlwbGUgc2NvcGVzIHZpYSBtZXJnZWQgc2NvcGUgbGlzdHMgd2FzXG4gKiByZWplY3RlZDogY29uc3VtZXJzIChtbmVtb2dyYXBoaWNhIGRpYW1vbmRzKSBrZXkgb2ZmIGEgc2luZ2xlIHNjb3BlIHBlclxuICogcG9pbnQsIGFuZCBzZXBhcmF0ZSBlbnRyaWVzIGtlZXAgdGhhdCBjb250cmFjdCBzaW1wbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdHJ1bWVudGF0aW9uUG9pbnQge1xuXHQvKiogS2luZCBvZiBsaWZlY3ljbGUgY3Jvc3Nyb2FkICovXG5cdGtpbmQ6IEluc3RydW1lbnRhdGlvbktpbmQ7XG5cdC8qKiBDbGFzcyBwcm92aWRpbmcgdGhlIGluc3RydW1lbnRhdGlvbiAoZS5nLiwgXCJBdXRoR3VhcmRcIikgKi9cblx0Y2xhc3NOYW1lOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKGNsYXNzIGRlY2xhcmF0aW9uIHdoZW4gZGVjbGFyZWQgaW4tcHJvamVjdCwgZWxzZSB0aGUgcmVnaXN0cmF0aW9uIHNpdGUpICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDb2RlIHNuaXBwZXQ6IHNpZ25hdHVyZSAvIGZpcnN0IGxpbmUsIGxpa2UgRURTIGBjb2RlYCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBXaGVyZSB0aGUgcG9pbnQgYXR0YWNoZXMgKi9cblx0c2NvcGU6IEluc3RydW1lbnRhdGlvblNjb3BlO1xuXHQvKiogQ29udHJvbGxlci9wcm92aWRlciBuYW1lcyB0aGUgcG9pbnQgYXR0YWNoZXMgdG87IGVtcHR5IGZvciBnbG9iYWwgcG9pbnRzICovXG5cdHRhcmdldHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBpbnN0cnVtZW50YXRpb24uanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RydW1lbnRhdGlvbkpzb24ge1xuXHQvKiogU2NoZW1hIHZlcnNpb246IDIgYWRkcyB0aGUgb3B0aW9uYWwgY3JlYXRpb25HcmFwaCBrZXkgKFBoYXNlIDMpICovXG5cdHZlcnNpb246IG51bWJlcjtcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xuXHQvKipcblx0ICogSW5zaWRlLW91dCBjcmVhdGlvbiB3YWxrIChpbnN0cnVtZW50YXRpb24gd2Fsa2VyIHBsYW4sIFBoYXNlIDMpOiB3aGljaFxuXHQgKiBzY29wZXMgY3JlYXRlIG1uZW1vbmljYSBpbnN0YW5jZXMgYW5kIHdobyBjYWxscyB0aGVtLCB3YWxrZWQgb3V0d2FyZCB0b1xuXHQgKiB0aGUgc3RhcnRlcnMuIEFic2VudCB3aGVuIHRoZSB3cml0ZXIgaXMgY2FsbGVkIHdpdGhvdXQgY3JlYXRpb24tZ3JhcGhcblx0ICogZGF0YSAoZGlyZWN0IGxpYnJhcnkgdXNlKTsgYWx3YXlzIHByZXNlbnQgZnJvbSB0aGUgQ0xJLlxuXHQgKi9cblx0Y3JlYXRpb25HcmFwaD86IENyZWF0aW9uR3JhcGg7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGNvbnRyb2wuanNvbiAobGV0aGUgY29udHJhY3QsIGZvcm1hdCAxLjIpOiBgY2FsbGVyc2BcbiAqIGNhcnJpZXMgdGhlIHNhbWUgY3JlYXRpb24gZ3JhcGggaW5zdHJ1bWVudGF0aW9uLmpzb24gdjIgY2FycmllcyB1bmRlclxuICogYGNyZWF0aW9uR3JhcGhgLCBgcG9pbnRzYCB0aGUgc2FtZSBwbHVnaW4tc3VwcGxpZWQgaW5zdHJ1bWVudGF0aW9uIHBvaW50cy5cbiAqIGluc3RydW1lbnRhdGlvbi5qc29uIHN0YXlzIHVuY2hhbmdlZCBmb3IgbW5lbW9ncmFwaGljYTsgY29udHJvbC5qc29uIGlzXG4gKiB0aGUgY3Jvc3MtbGFuZ3VhZ2UgY29udHJhY3QgcmVuZGVyaW5nIG9mIHRoZSBzYW1lIGRhdGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbEpzb24ge1xuXHR2ZXJzaW9uOiAnMS4yJztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0Y2FsbGVyczogQ3JlYXRpb25HcmFwaDtcblx0cG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdO1xufVxuXG4vKipcbiAqIEZsb3cga2luZCBmb3IgdHJhY2tpbmcgbmF0aXZlIGluc3RhbmNlIHVzYWdlIHBhdHRlcm5zIOKAlCBXSEFUIEZMT1dTIFdIRVJFXG4gKiBpbiBwbGFpbiBzb3VyY2Ugc2hhcGVzLiBFYWNoIGtpbmQgbmFtZXMgb25lIHN5bnRhY3RpYyBwYXR0ZXJuIHRoYXQgbW92ZXNcbiAqIGEgdHlwZWQgdmFsdWUsIHdpdGggdGhlIHNoYXBlIHRoYXQgcHJvZHVjZXMgaXQ6XG4gKlxuICogICAncHJvcGVydHlSZWFkJyAgICAgIHJlYWRpbmcgYSBmaWVsZCBvZmYgdGhlIGluc3RhbmNlIOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGB1c2VyLm5hbWVgIChhbHNvIGB1c2VyPy5uYW1lYCDigJQgb3B0aW9uYWwgY2hhaW5pbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRzIGFzIGEgcGxhaW4gcHJvcGVydHlSZWFkKVxuICogICAncHJvcGVydHlXcml0ZScgICAgIGFzc2lnbmluZyBhIGZpZWxkIOKAlCBgdXNlci5uYW1lID0gJ3gnYFxuICogICAnbWV0aG9kQ2FsbCcgICAgICAgIGNhbGxpbmcgYSBtZXRob2Qgb24gaXQg4oCUIGB1c2VyLnZhbGlkYXRlKClgXG4gKiAgICdlbGVtZW50QWNjZXNzJyAgICAgYnJhY2tldCByZWFkIOKAlCBgdXNlclsnbmFtZSddYFxuICogICAnZGVzdHJ1Y3R1cmVSZWFkJyAgIGRlc3RydWN0dXJpbmcgcHVsbHMgdGhlIGZpZWxkcyBhcGFydCDigJRcbiAqICAgICAgICAgICAgICAgICAgICAgICBgY29uc3QgeyBuYW1lIH0gPSB1c2VyYFxuICogICAncGFzc0FzQXJnJyAgICAgICAgIHRoZSB2YWx1ZSBjcm9zc2VzIGludG8gYSBjYWxsIGFzIGFuIGFyZ3VtZW50IOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGBwcm9jZXNzVXNlcih1c2VyKWAgKGNvbnRleHQgbmFtZXMgY2FsbGVlICsgc2xvdClcbiAqICAgJ3JldHVybicgICAgICAgICAgICB0aGUgdmFsdWUgbGVhdmVzIHRoZSBmdW5jdGlvbiBhcyBpdHMgcmVzdWx0IOKAlFxuICogICAgICAgICAgICAgICAgICAgICAgIGByZXR1cm4gdXNlcmBcbiAqICAgJ3NwcmVhZCcgICAgICAgICAgICB0aGUgZmllbGRzIHNjYXR0ZXIgaW50byBhIGxpdGVyYWwg4oCUIGAoeyAuLi51c2VyIH0pYFxuICogICAncmVhc3NpZ25tZW50JyAgICAgIHRoZSBiaW5kaW5nIGlzIHJlLXBvaW50ZWQg4oCUIGB1c2VyID0gb3RoZXJgXG4gKiAgICdpbnN0YW50aWF0aW9uJyAgICAgYSBjb25zdHJ1Y3Rpb24tc2hhcGVkIGNhbGwg4oCUIGBuZXcgVXNlcigpYCAoYWxzb1xuICogICAgICAgICAgICAgICAgICAgICAgIHJlY29yZGVkIGZvciBjaGFpbiB0aXBzIGFuZCBjYWxsL2FwcGx5L2ZvcmsvbWVyZ2UpXG4gKlxuICogJ2FycmF5RWxlbWVudCcgYW5kICdjb25kaXRpb25hbEFjY2VzcycgYXJlIHJlc2VydmVkIG1lbWJlcnMgb2YgdGhlXG4gKiB1bmlvbiDigJQgZGVjbGFyZWQsIG5vdCB5ZXQgZW1pdHRlZCBieSB0aGUgYW5hbHl6ZXIuXG4gKi9cbmV4cG9ydCB0eXBlIEZsb3dLaW5kID1cblx0fCAncHJvcGVydHlSZWFkJ1xuXHR8ICdwcm9wZXJ0eVdyaXRlJ1xuXHR8ICdtZXRob2RDYWxsJ1xuXHR8ICdkZXN0cnVjdHVyZVJlYWQnXG5cdHwgJ3Bhc3NBc0FyZydcblx0fCAncmV0dXJuJ1xuXHR8ICdzcHJlYWQnXG5cdHwgJ2FycmF5RWxlbWVudCdcblx0fCAnY29uZGl0aW9uYWxBY2Nlc3MnXG5cdHwgJ2VsZW1lbnRBY2Nlc3MnXG5cdHwgJ3JlYXNzaWdubWVudCdcblx0fCAnaW5zdGFudGlhdGlvbic7XG5cbi8qKlxuICogRmxvdyBpbmZvIGZvciBuYXRpdmUgaW5zdGFuY2UgdXNhZ2UgdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgZmxvdyAqL1xuXHRraW5kOiBGbG93S2luZDtcblx0LyoqIENvZGUgc25pcHBldCAqL1xuXHRjb2RlOiBzdHJpbmc7XG5cdC8qKiBQcm9wZXJ0eSBuYW1lIGlmIGFwcGxpY2FibGUgKi9cblx0cHJvcGVydHlOYW1lPzogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYga25vd24gKi9cblx0dGFyZ2V0VHlwZT86IHN0cmluZztcblx0LyoqIENvbnRleHQgKGZ1bmN0aW9uIG5hbWUsIHBhcmFtIHBvc2l0aW9uLCBldGMuKSAqL1xuXHRjb250ZXh0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBmbG93Lmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93SnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0ZmxvdzogUmVjb3JkPHN0cmluZywgRmxvd0luZm9bXT47XG59XG5cbi8qKlxuICogV2hhdCBhIG1vZHVsZS1sZXZlbCBiaW5kaW5nIGlzLiBWYXJpYWJsZXMgYXJlIGNsYXNzaWZpZWQgYXMgJ2NvbnN0J1xuICogcmVnYXJkbGVzcyBvZiBsZXQvdmFyIOKAlCBtdXRhYmlsaXR5IChyZWFzc2lnbm1lbnQgdHJhY2tpbmcpIGlzIHRoZVxuICogbG9jYWwtc2NvcGUgd2Fsa2VyJ3MgY29uY2VybiAoUGhhc2UgMiksIG5vdCB0aGUgbW9kdWxlIGdyYXBoJ3MuXG4gKi9cbmV4cG9ydCB0eXBlIE1vZHVsZUJpbmRpbmdLaW5kID1cblx0fCAnZnVuY3Rpb24nXG5cdHwgJ2NsYXNzJ1xuXHR8ICdjb25zdCdcblx0fCAndHlwZSdcblx0fCAndW5rbm93bic7XG5cbi8qKlxuICogSG93IGEgYmluZGluZyBlbnRlcnMgYSBtb2R1bGVcbiAqL1xuZXhwb3J0IHR5cGUgTW9kdWxlSW1wb3J0S2luZCA9XG5cdHwgJ25hbWVkJ1xuXHR8ICdkZWZhdWx0J1xuXHR8ICduYW1lc3BhY2UnXG5cdHwgJ3JlcXVpcmUnO1xuXG4vKipcbiAqIEEgZ2VuZXJpYyBtb2R1bGUtbGV2ZWwgYmluZGluZyAoZXhwb3J0LCBpbXBvcnQsIG9yIHJlLWV4cG9ydCkuXG4gKlxuICogYG5hbWVgIGlzIGFsd2F5cyB0aGUgbmFtZSB0aGlzIG1vZHVsZSBwcmVzZW50czogdGhlIGxvY2FsIGlkZW50aWZpZXIgZm9yXG4gKiBpbXBvcnRzLCB0aGUgZXhwb3J0ZWQgbmFtZSBmb3IgZXhwb3J0cy4gYGltcG9ydEFsaWFzYCBjYXJyaWVzIHRoZSBvcmlnaW5hbFxuICogbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGl0IGRpZmZlcnMgKGBpbXBvcnQgeyBYIGFzIFkgfWAg4oaSIG5hbWUgJ1knLFxuICogaW1wb3J0QWxpYXMgJ1gnOyBgZXhwb3J0IHsgWCBhcyBZIH0gZnJvbSDigKZgIOKGkiBuYW1lICdZJywgaW1wb3J0QWxpYXMgJ1gnKS5cbiAqIEZvciBkZWZhdWx0IGltcG9ydHMgbmFtZSBpcyB0aGUgbG9jYWwgaWRlbnRpZmllciBhbmQgdGhlIHNvdXJjZSBsb29rdXAga2V5XG4gKiBpcyAnZGVmYXVsdCcgKGltcGxpZWQgYnkgaW1wb3J0S2luZCk7IGZvciBuYW1lc3BhY2UgaW1wb3J0cy9leHBvcnRzIG5hbWUgaXNcbiAqIHRoZSBuYW1lc3BhY2UgYWxpYXMgKCcqJyBmb3IgYmFyZSBgZXhwb3J0ICogZnJvbSDigKZgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVCaW5kaW5nIHtcblx0LyoqIE5hbWUgYXMgcHJlc2VudGVkIGluIHRoaXMgbW9kdWxlIChsb2NhbCBuYW1lIGZvciBpbXBvcnRzLCBleHBvcnRlZCBuYW1lIGZvciBleHBvcnRzKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBXaGF0IHRoZSBiaW5kaW5nIGlzOyBiYWNrZmlsbGVkIGZyb20gdGhlIG9yaWdpbiBtb2R1bGUgd2hlbiByZXNvbHZhYmxlICovXG5cdGtpbmQ6IE1vZHVsZUJpbmRpbmdLaW5kO1xuXHQvKipcblx0ICogUmVzb2x2ZWQgYWJzb2x1dGUgZmlsZSBwYXRoIG9mIHRoZSBzb3VyY2UgbW9kdWxlICh0aGUgbW9kdWxlIGl0c2VsZiBmb3Jcblx0ICogbG9jYWwgZGVjbGFyYXRpb25zOyB0aGUgcmF3IHNwZWNpZmllciB3aGVuIHJlc29sdXRpb24gZmFpbHMpXG5cdCAqL1xuXHRzb3VyY2VNb2R1bGU6IHN0cmluZztcblx0LyoqIEhvdyB0aGUgYmluZGluZyBlbnRlcnMgdGhlIG1vZHVsZSAoYWJzZW50IG9uIHBsYWluIGxvY2FsIGV4cG9ydHMpICovXG5cdGltcG9ydEtpbmQ/OiBNb2R1bGVJbXBvcnRLaW5kO1xuXHQvKiogT3JpZ2luYWwgbmFtZSBpbiB0aGUgc291cmNlIG1vZHVsZSB3aGVuIGFsaWFzZWQgKi9cblx0aW1wb3J0QWxpYXM/OiBzdHJpbmc7XG5cdC8qKiBUcnVlIGZvciBgZXhwb3J0IHsgWCB9IGZyb20gJy4veSdgIC8gYGV4cG9ydCAqIGZyb20gJy4veSdgIChiYXJyZWxzKSAqL1xuXHRpc1JlRXhwb3J0OiBib29sZWFuO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBzcGVjaWZpZXIgcmVzb2x2ZWQgaW50byBub2RlX21vZHVsZXNcblx0ICogKHRzLnJlc29sdmVNb2R1bGVOYW1lJ3MgaXNFeHRlcm5hbExpYnJhcnlJbXBvcnQpLiBFeHRlcm5hbCBiaW5kaW5ncyBhcmVcblx0ICogcmVjb3JkZWQgZm9yIHJlZmVyZW5jZSBidXQgbmV2ZXIgZW50ZXIgYGRlcGVuZGVuY2llc2AgYW5kIGFyZSBuZXZlciB3YWxrZWQuXG5cdCAqIE5vZGUuanMgYnVpbHRpbnMgYXJlIG5vdCByZWNvcmRlZCBhcyBiaW5kaW5ncyBhdCBhbGwg4oCUIHNlZVxuXHQgKiBNb2R1bGVJbmZvLmJ1aWx0aW5TcGVjaWZpZXJzLlxuXHQgKi9cblx0ZXh0ZXJuYWw/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBlci1tb2R1bGUgcmVjb3JkIG9mIHRoZSBjcm9zcy1maWxlIGdyYXBoIChtb2R1bGVzLmpzb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlSW5mbyB7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKG1hcCBrZXkpICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSAqL1xuXHRkZWZpbmVkVHlwZXM6IHN0cmluZ1tdO1xuXHQvKiogRXZlcnl0aGluZyB0aGlzIG1vZHVsZSBleHBvcnRzIChsb2NhbCBkZWNsYXJhdGlvbnMgYW5kIHJlLWV4cG9ydHMpICovXG5cdGV4cG9ydGVkQmluZGluZ3M6IE1vZHVsZUJpbmRpbmdbXTtcblx0LyoqIEV2ZXJ5dGhpbmcgdGhpcyBtb2R1bGUgaW1wb3J0cyAocmUtZXhwb3J0cyBhcHBlYXIgaGVyZSB0b28sIG1hcmtlZCBpc1JlRXhwb3J0KSAqL1xuXHRpbXBvcnRlZEJpbmRpbmdzOiBNb2R1bGVCaW5kaW5nW107XG5cdC8qKiBBYnNvbHV0ZSBwYXRocyBvZiBhbmFseXplZCBwcm9qZWN0IG1vZHVsZXMgdGhpcyBtb2R1bGUgaW1wb3J0cyBmcm9tICovXG5cdGRlcGVuZGVuY2llczogc3RyaW5nW107XG5cdC8qKiBJbXBvcnQgc3BlY2lmaWVycyB0aGF0IG1vZHVsZSByZXNvbHV0aW9uIGNvdWxkIG5vdCByZXNvbHZlIChub2RlIGJ1aWx0aW5zIGV4Y2x1ZGVkIOKAlCBzZWUgYnVpbHRpblNwZWNpZmllcnMpICovXG5cdHVucmVzb2x2ZWRTcGVjaWZpZXJzOiBzdHJpbmdbXTtcblx0LyoqXG5cdCAqIE5vZGUuanMgYnVpbHRpbiBzcGVjaWZpZXJzIHRoaXMgbW9kdWxlIGltcG9ydHMgKCdwYXRoJywgJ25vZGU6ZnMnLCDigKYpLFxuXHQgKiBtYXRjaGVkIGFnYWluc3Qgbm9kZTptb2R1bGUncyBidWlsdGluTW9kdWxlcyBpbiBib3RoIGJhcmUgYW5kXG5cdCAqIGBub2RlOmAtcHJlZml4ZWQgZm9ybXMuIFJlY29yZGVkIGZvciBob25lc3R5IG9ubHk6IGJ1aWx0aW5zIHByb2R1Y2Ugbm9cblx0ICogYmluZGluZ3MsIG5ldmVyIGVudGVyIGBkZXBlbmRlbmNpZXNgL2B1bnJlc29sdmVkU3BlY2lmaWVyc2AsIGFuZCBuZXZlclxuXHQgKiBwcm9kdWNlIGVkZ2VzLlxuXHQgKi9cblx0YnVpbHRpblNwZWNpZmllcnM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgY3Jvc3MtbW9kdWxlIHVzYWdlIG9mIGEgbW5lbW9uaWNhIHR5cGU6IHVzYWdlTW9kdWxlIGltcG9ydHMgYSBiaW5kaW5nXG4gKiB3aG9zZSBvcmlnaW4gbW9kdWxlIGRlZmluZXMgdGhlIHR5cGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvc3NNb2R1bGVVc2FnZSB7XG5cdC8qKiBNYXRjaGVkIG1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIChvciB0aGUgaW1wb3J0ZWQgbmFtZSB3aGVuIHVubWF0Y2hlZCkgKi9cblx0dHlwZVBhdGg6IHN0cmluZztcblx0LyoqIEFic29sdXRlIHBhdGggb2YgdGhlIG1vZHVsZSB3aGVyZSB0aGUgdHlwZSBpcyBkZWZpbmVkIChyZS1leHBvcnQgY2hhaW5zIGNoYXNlZCB0byB0aGUgb3JpZ2luKSAqL1xuXHRkZWZpbml0aW9uTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBpbXBvcnRpbmcgbW9kdWxlICovXG5cdHVzYWdlTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBJbXBvcnQgc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR1c2FnZUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGZ1bGwgbW9kdWxlIGdyYXBoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlR3JhcGgge1xuXHQvKiogS2V5ZWQgYnkgYWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdG1vZHVsZXM6IE1hcDxzdHJpbmcsIE1vZHVsZUluZm8+O1xuXHRlZGdlczogQ3Jvc3NNb2R1bGVVc2FnZVtdO1xuXHQvKipcblx0ICogQ2lyY3VsYXIgaW1wb3J0IGNoYWlucyAoZWFjaCBhbiBhcnJheSBvZiBhYnNvbHV0ZSBwYXRocykuIFJlY29yZGVkLCBub3Rcblx0ICogYW4gZXJyb3Ig4oCUIG1uZW1vbmljYSBzdHJpY3RDaGFpbjpmYWxzZSBwZXJtaXRzIG5vbi1saW5lYXIgY29uc3RydWN0aW9uXG5cdCAqL1xuXHRjeWNsZXM6IHN0cmluZ1tdW107XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIG1vZHVsZXMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRtb2R1bGVzOiBSZWNvcmQ8c3RyaW5nLCBNb2R1bGVJbmZvPjtcblx0ZWRnZXM6IENyb3NzTW9kdWxlVXNhZ2VbXTtcblx0Y3ljbGVzOiBzdHJpbmdbXVtdO1xufVxuXG4vKipcbiAqIFdoYXQgYSB0cmFja2VkIHNjb3BlIGlzLiBEZWNpc2lvbiA1IChyZXNvbHZlZCAyMDI2LTA5LTAzKTogZnVuY3Rpb24sXG4gKiBtZXRob2QsIGFuZCBhcnJvdyBzY29wZXMgT05MWSDigJQgbm8gYmxvY2sgc2NvcGVzLiAnbW9kdWxlJyBpcyB0aGUgc3ludGhldGljXG4gKiBwZXItZmlsZSByb290IHNjb3BlIHNvIG1vZHVsZS1sZXZlbCBpbnN0YW5jZSBjcmVhdGlvbnMgYXJlIGxhYmVsZWQsIG5vdFxuICogZHJvcHBlZCAod2Fsa2VyIHBsYW46IFwicmVjb3JkZWQgYXMgYSByb290ZWQgaW5zdGFuY2VcIikuXG4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlS2luZCA9XG5cdHwgJ21vZHVsZSdcblx0fCAnZnVuY3Rpb24nXG5cdHwgJ21ldGhvZCdcblx0fCAnYXJyb3cnO1xuXG4vKipcbiAqIE9uZSB0cmFja2VkIHNjb3BlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZUluZm8ge1xuXHQvKiogVW5pcXVlIGlkOiBtb2R1bGUgc2NvcGUgaXMgdGhlIGZpbGUgcGF0aDsgZnVuY3Rpb24gc2NvcGVzIGFyZSBmaWxlOmxpbmU6Y29sIG9mIHRoZSBzY29wZSBub2RlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIERlY2lzaW9uIDggbGFiZWxpbmc6IGZ1bmN0aW9uL21ldGhvZCBuYW1lICgnQ2xhc3MubWV0aG9kJyBmb3IgbWV0aG9kcyksIGZpbGU6bGluZSBmb3IgYW5vbnltb3VzIGhvbGRlcnMgKi9cblx0bmFtZTogc3RyaW5nO1xuXHRraW5kOiBTY29wZUtpbmQ7XG5cdC8qKiBOZWFyZXN0IGVuY2xvc2luZyBzY29wZSAodW5kZWZpbmVkIG9uIG1vZHVsZSBzY29wZXMpICovXG5cdHBhcmVudFNjb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBmaWxlIHBhdGggKi9cblx0ZmlsZVBhdGg6IHN0cmluZztcblx0LyoqIFNjb3BlIHN0YXJ0OiBmaWxlLnRzOkxpbmU6Q29sIChtb2R1bGUgc2NvcGU6IGZpbGU6MToxKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSB0cmFja2VkIHZhcmlhYmxlIChzY29wZXMuanNvbilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY29wZVZhcmlhYmxlIHtcblx0bmFtZTogc3RyaW5nO1xuXHQvKiogT3duaW5nIHNjb3BlICovXG5cdHNjb3BlSWQ6IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRoIHdoZW4ga25vd24gKG5ldyBYKCkgb24gYSBrbm93biB0eXBlLCBuZXcgaW5zdC5TdWIoKSBjaGFpbmluZywgb3IgYSBrbm93biBhbm5vdGF0aW9uKSAqL1xuXHR0eXBlUGF0aD86IHN0cmluZztcblx0LyoqIENoZWFwIHRleHR1YWwgdHlwZTogYW5ub3RhdGlvbiB0ZXh0IG9yIHRpbnkgaW5pdGlhbGl6ZXIgY2xhc3NpZmljYXRpb24gKi9cblx0aW5mZXJyZWRUeXBlPzogc3RyaW5nO1xuXHQvKiogRGVjbGFyYXRpb24gc2l0ZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRkZWNsYXJhdGlvbjogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcjogYm9vbGVhbjtcblx0LyoqIGNvbnN0ID0gZmFsc2U7IGxldC92YXIgYW5kIHBhcmFtZXRlcnMgPSB0cnVlIChwYXJhbWV0ZXJzIGFyZSByZWFzc2lnbmFibGUpICovXG5cdGlzTXV0YWJsZTogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFJlYXNzaWdubWVudCBzaXRlcyAoZmlsZS50czpMaW5lOkNvbCkgb2YgdGhpcyBiaW5kaW5nIOKAlCBmbG93LXRlcm1pbmF0aW9uXG5cdCAqIHBvaW50cyAoZGVjaXNpb24gNik6IHRoZSBQaGFzZSAzIHdhbGtlciBzdG9wcyBmb2xsb3dpbmcgdGhlIGJpbmRpbmcgdGhlcmVcblx0ICovXG5cdHJlYXNzaWdubWVudHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBmdWxsIGxvY2FsLXNjb3BlIGFuYWx5c2lzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVBbmFseXNpcyB7XG5cdC8qKiBLZXllZCBieSBzY29wZUlkICovXG5cdHNjb3BlczogTWFwPHN0cmluZywgU2NvcGVJbmZvPjtcblx0LyoqIEtleWVkIGJ5IGAke3Njb3BlSWR9IyR7bmFtZX1gICovXG5cdHZhcmlhYmxlczogTWFwPHN0cmluZywgU2NvcGVWYXJpYWJsZT47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHNjb3Blcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0c2NvcGVzOiBSZWNvcmQ8c3RyaW5nLCBTY29wZUluZm8+O1xuXHR2YXJpYWJsZXM6IFNjb3BlVmFyaWFibGVbXTtcbn1cblxuLyoqXG4gKiBPbmUgbm9kZSBvZiB0aGUgY3JlYXRpb24gZ3JhcGggKGluc3RydW1lbnRhdGlvbiB3YWxrZXIgcGxhbiwgUGhhc2UgMyk6XG4gKiBhIHNjb3BlIHRoYXQgY3JlYXRlcyBtbmVtb25pY2EgaW5zdGFuY2VzLCBvciBvbmUgc2l0dGluZyBvbiBhIGNhbGwgcGF0aFxuICogdG8gYSBjcmVhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uR3JhcGhOb2RlIHtcblx0LyoqIExvY2FsU2NvcGVXYWxrZXIgc2NvcGVJZCAobW9kdWxlIHNjb3BlID0gZmlsZSBwYXRoOyBmdW5jdGlvbiBzY29wZXMgPSBmaWxlOmxpbmU6Y29sKSAqL1xuXHRzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBEZWNpc2lvbiA4IGxhYmVsOiBmdW5jdGlvbi9tZXRob2QgbmFtZSAoJ0NsYXNzLm1ldGhvZCcpLCBmaWxlOmxpbmUgZm9yIGFub255bW91cyBob2xkZXJzICovXG5cdG5hbWU6IHN0cmluZztcblx0a2luZDogU2NvcGVLaW5kO1xuXHQvKiogQWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBTY29wZSBzdGFydDogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogVHJ1ZSB3aGVuIHRoZSB3YWxrIGZvdW5kIG5vIGNhbGxlcnMg4oCUIGFuIGFwcGxpY2F0aW9uIGVudHJ5IHBvaW50ICovXG5cdHN0YXJ0ZXI6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT25lIGVkZ2Ugb2YgdGhlIGNyZWF0aW9uIGdyYXBoOiB0aGUgY2FsbGVyIHNjb3BlIGludm9rZXMgb3IgcmVmZXJlbmNlcyB0aGVcbiAqIGNhbGxlZSBzY29wZS4gRGlyZWN0aW9uIGlzIGluc2lkZS1vdXQ6IGNhbGxlciDihpIgY2FsbGVlLCB3aGVyZSB0aGUgY2FsbGVlIGlzXG4gKiBjbG9zZXIgdG8gdGhlIGNyZWF0aW9uIHNpdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25HcmFwaEVkZ2Uge1xuXHQvKiogQ2FsbGluZyBzY29wZSdzIHNjb3BlSWQgKi9cblx0Y2FsbGVyOiBzdHJpbmc7XG5cdC8qKiBDYWxsZWQgKGhvbGRlcikgc2NvcGUncyBzY29wZUlkICovXG5cdGNhbGxlZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGluc3RhbnRpYXRpb24gYW5jaG9yOiBvbmUgbW5lbW9uaWNhIGNyZWF0aW9uIHNpdGUgcGlubmVkIHRvIGl0cyBob2xkZXJcbiAqIHNjb3BlLlxuICpcbiAqIGB2YXJpYWJsZWAvYHRlcm1pbmF0ZWRBdGAgYXJlIGEgZG9jdW1lbnRlZCBoZXVyaXN0aWM6IHRoZSB2YXJpYWJsZSBkZWNsYXJlZFxuICogaW4gdGhlIGhvbGRlciBzY29wZSBvbiB0aGUgU0FNRSBsaW5lIGFzIHRoZSBjcmVhdGlvbiwgd2hvc2UgdHlwZVBhdGggKHdoZW5cbiAqIGtub3duKSBtYXRjaGVzIHRoZSBjcmVhdGVkIHR5cGUuIGB0ZXJtaW5hdGVkQXRgIGlzIHRoYXQgdmFyaWFibGUncyBmaXJzdFxuICogcmVhc3NpZ25tZW50IHNpdGUg4oCUIHRoZSBkZWNpc2lvbiA2IGZsb3ctdGVybWluYXRpb24gcG9pbnQgd2hlcmUgdGhlIHdhbGtlclxuICogc3RvcHMgZm9sbG93aW5nIHRoZSBiaW5kaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uQW5jaG9yIHtcblx0LyoqIENyZWF0aW9uIHNpdGU6IGZpbGUudHM6TGluZTpDb2wgKHRoZSB1c2FnZXMuanNvbiBsb2NhdGlvbikgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIFNjb3BlIGhvbGRpbmcgdGhlIGNyZWF0aW9uIChzY29wZXMuanNvbiBzY29wZUlkKSAqL1xuXHRob2xkZXJTY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aCBiZWluZyBjcmVhdGVkICovXG5cdHR5cGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBDb25zdHJ1Y3RvciBleHByZXNzaW9uIHRleHQgKCdUaGluZycsICd1c2VyLkFkbWluRW50aXR5JywgYSBsb29rdXAgYWxpYXMgbmFtZSkgKi9cblx0Y29uc3RydWN0b3JUZXh0Pzogc3RyaW5nO1xuXHQvKipcblx0ICogVHJ1ZSB3aGVuIHRoZSBob2xkZXIgaXMgdGhlIG1vZHVsZSBzY29wZSDigJQgYSByb290ZWQgaW5zdGFuY2UgKHBsYW46XG5cdCAqIGxlZ2l0aW1hdGUgcm9vdCBvciBkZXZlbG9wZXIgZXJyb3I7IGxhYmVsZWQsIG5vdCBwb2xpY2VkKVxuXHQgKi9cblx0cm9vdGVkPzogYm9vbGVhbjtcblx0LyoqIFZhcmlhYmxlIHRoZSBmcmVzaCBpbnN0YW5jZSB3YXMgYm91bmQgdG8gKHNhbWUtbGluZSBoZXVyaXN0aWMpICovXG5cdHZhcmlhYmxlPzogc3RyaW5nO1xuXHQvKiogRmlyc3QgcmVhc3NpZ25tZW50IHNpdGUgb2YgdGhhdCB2YXJpYWJsZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHR0ZXJtaW5hdGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGNyZWF0aW9uIGdyYXBoOiBldmVyeXRoaW5nIHRoYXQgbGVhZHMgdG8gbW5lbW9uaWNhIGluc3RhbmNlcyBiZWluZ1xuICogY3JlYXRlZC4gRW1pdHRlZCBhcyB0aGUgYGNyZWF0aW9uR3JhcGhgIGtleSBvZiBpbnN0cnVtZW50YXRpb24uanNvbiB2Mi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkdyYXBoIHtcblx0bm9kZXM6IENyZWF0aW9uR3JhcGhOb2RlW107XG5cdGVkZ2VzOiBDcmVhdGlvbkdyYXBoRWRnZVtdO1xuXHRhbmNob3JzOiBDcmVhdGlvbkFuY2hvcltdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBoaWVyYXJjaHkuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeUpzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHJvb3RzOiBIaWVyYXJjaHlOb2RlW107XG59XG5cbi8qKlxuICogT25lIGVudHJ5IG9mIHRoZSBjb2xsZWN0aW9ucy5qc29uIG1hbmlmZXN0LiBUaGUgZGVmYXVsdCBjb2xsZWN0aW9uIGlzXG4gKiBlbWl0dGVkIGZpcnN0IHdoZW5ldmVyIGRlZmF1bHQtY29sbGVjdGlvbiB0eXBlcyBleGlzdDogaXQgaGFzIG5vIGNhbGxcbiAqIHNpdGUsIHNvIGBpZGAgYW5kIGBsb2NhdGlvbmAgc3RheSBudWxsICh1bnByZWZpeGVkIGZ1bGxQYXRocyBBUkUgaXRzXG4gKiBpZGVudGl0eSkuIEZvcm1hdCAxLjI6IHRoZSByZWdpc3RyeSBpbnRlcmZhY2UgaXMgTk9UIHBhcnQgb2YgdGhlXG4gKiBtYW5pZmVzdCAoYSBUeXBlU2NyaXB0LW9ubHkgY29uY2VybiDigJQgdGhlIGluLW1lbW9yeVxuICogYHJlZ2lzdHJ5SW50ZXJmYWNlTmFtZWAgdGhhdCB0eXBlcy50cy9yZWdpc3RyeS50cyBhcmUgZ2VuZXJhdGVkIGZyb21cbiAqIHN0YXlzIG9uIHRoZSBUeXBlTm9kZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbk1hbmlmZXN0RW50cnkge1xuXHQvKiogTWludGVkIGlkIHVzZWQgaW4gYGNvbGxlY3Rpb25JZDo6YCBmdWxsUGF0aCBwcmVmaXhlczsgbnVsbCBmb3IgdGhlIGRlZmF1bHQgY29sbGVjdGlvbiAqL1xuXHRpZDogc3RyaW5nIHwgbnVsbDtcblx0LyoqIFZhcmlhYmxlIGhvbGRpbmcgdGhlIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIHJlc3VsdCAoJ2RlZmF1bHRUeXBlcycgZm9yIHRoZSBkZWZhdWx0IGNvbGxlY3Rpb24pICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIGNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpIGNhbGwgc2l0ZSAoZmlsZTpsaW5lOmNvbCk7IG51bGwgZm9yIHRoZSBkZWZhdWx0IGNvbGxlY3Rpb24gKi9cblx0bG9jYXRpb246IHN0cmluZyB8IG51bGw7XG5cdC8qKlxuXHQgKiBTb3VyY2UgbGFuZ3VhZ2Ugb2YgdGhpcyBjb2xsZWN0aW9uJ3MgY29kZWJhc2UgKGZvcm1hdCAxLjI6IHJlcXVpcmVkIOKAlFxuXHQgKiB0aGVyZSBpcyBubyBkZWZhdWx0IGxhbmd1YWdlKS4gdGFjdGljYSBpcyB0aGUgVHlwZVNjcmlwdCBnZW5lcmF0b3IsXG5cdCAqIHNvIGV2ZXJ5IGVudHJ5IGl0IHdyaXRlcyBpcyBcInR5cGVzY3JpcHRcIi5cblx0ICovXG5cdGxhbmd1YWdlOiAndHlwZXNjcmlwdCc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGNvbGxlY3Rpb25zLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb2xsZWN0aW9uc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeVtdO1xufVxuXG4vKipcbiAqIFN0cnVjdHVyZWQgaGllcmFyY2h5IG5vZGUgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGllcmFyY2h5Tm9kZSB7XG5cdC8qKiBUeXBlIG5hbWUgKGUuZy4sIFwiQWRtaW5UeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIEZ1bGwgZG90dGVkIHBhdGggKGUuZy4sIFwiVXNlclR5cGUuQWRtaW5UeXBlXCIpICovXG5cdGZ1bGxQYXRoOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIENoaWxkIHR5cGVzIGluIHRoZSBUcmllICovXG5cdGNoaWxkcmVuOiBIaWVyYXJjaHlOb2RlW107XG59XG5cbi8qKlxuICogQSBmYXRhbCByZXNvbHV0aW9uIGZhaWx1cmU6IHNhbWUtbmFtZXNwYWNlIGR1cGxpY2F0ZSBtbmVtb25pY2FcbiAqIGRlZmluaXRpb25zLCBvciBhIG1uZW1vbmljYS1ncmFwaCB0eXBlIHJlZmVyZW5jZSB0aGF0IHN0YXlzIGFtYmlndW91c1xuICogYWZ0ZXIgcGF0aC1hd2FyZSByZXNvbHV0aW9uIChvciByZXNvbHZlcyB0byBub3RoaW5nKS4gVGhlIENMSSBwcmludHNcbiAqIGV2ZXJ5IGxvY2F0aW9uIGFuZCB3cml0ZXMgbm8gLnRhY3RpY2Egb3V0cHV0IGF0IGFsbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHV0aW9uRXJyb3Ige1xuXHQvKiogaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGZhaWx1cmUgKi9cblx0bWVzc2FnZTogc3RyaW5nO1xuXHQvKiogZXZlcnkgaW52b2x2ZWQgc291cmNlIGxvY2F0aW9uLCBgZmlsZTpsaW5lOmNvbHVtbmAgKi9cblx0bG9jYXRpb25zOiBzdHJpbmdbXTtcbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFRhY3RpY2FcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhY3RpY2FDb25maWcge1xuXHQvKiogT3V0cHV0IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGVkIHR5cGVzIChkZWZhdWx0OiAudGFjdGljYSkgKi9cblx0b3V0cHV0RGlyPzogc3RyaW5nO1xuXHQvKiogRmlsZXMgdG8gaW5jbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0aW5jbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRmlsZXMgdG8gZXhjbHVkZSAoZ2xvYiBwYXR0ZXJucykgKi9cblx0ZXhjbHVkZT86IHN0cmluZ1tdO1xuXHQvKiogRW5hYmxlIHZlcmJvc2UgbG9nZ2luZyAqL1xuXHR2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUluZm8ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw6IGJvb2xlYW47XG5cdC8qKiBUcnVlIGlmIHRoaXMgaXMgYSBnZXR0ZXIgcHJvcGVydHkgKHJlYWRvbmx5KSAqL1xuXHRyZWFkb25seT86IGJvb2xlYW47XG59XG5cbi8qKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXIgaW5mbyBmb3IgVHlwZVJlZ2lzdHJ5IHNpZ25hdHVyZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3JQYXJhbUluZm8ge1xuXHQvKiogUGFyYW1ldGVyIG5hbWUgKGUuZy4sIFwidXNhZ2VzXCIsIFwiZGF0YVwiLCBcImNvbmZpZ1wiKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgdHlwZSBzdHJpbmcgLSBjYW4gYmUgYSBzaW1wbGUgdHlwZSBvciBleHBhbmRlZCBvYmplY3QgbGl0ZXJhbCAqL1xuXHR0eXBlOiBzdHJpbmc7XG5cdG9wdGlvbmFsOiBib29sZWFuO1xuXHQvKipcblx0ICogSG93IHRoZSBwYXJhbWV0ZXIgcmVjZWl2ZXMgaXRzIHZhbHVlLiBPbmx5ICdyZXN0JyBpcyBlbWl0dGVkIChUU1xuXHQgKiBgLi4ueHNgKTsgYWJzZW50IG1lYW5zIGFuIG9yZGluYXJ5IHBhcmFtZXRlci4gTWlycm9ycyB0aGUgYGtpbmRgXG5cdCAqIHZvY2FidWxhcnkgb2YgdGhlIGxldGhlIGRlZmluaXRpb25zIGNvbnRyYWN0IChkZWZpbml0aW9ucy5qc29uIGFyZ3MpLlxuXHQgKi9cblx0a2luZD86ICdyZXN0Jztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZGVyVmFsdWUge1xuXHQvKiogRXhwb3J0ZWQgbmFtZSB1c2VkIGJ5IHJlZ2lzdHJ5LnRzIHRvIGltcG9ydCB0aGUgYnVpbGRlciB2YWx1ZS4gKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKiogTW9kdWxlIHdob3NlIGV4cG9ydGVkIGJpbmRpbmcgaXMgaW1wb3J0ZWQgYnkgcmVnaXN0cnkudHMuICovXG5cdHNvdXJjZUZpbGU6IHN0cmluZztcblx0LyoqIFJlZ2lzdHJ5T2YgZm9yIGJ1aWxkZXItaGVsZCB2YWx1ZXMsIHR5cGVvZiBmb3IgZXhwb3J0ZWQgZnJlZSBkZWZpbmVzLiAqL1xuXHRraW5kOiAncmVnaXN0cnlPZicgfCAndHlwZW9mJztcblx0LyoqIEZ1bGwgcGF0aCBvZiB0aGUgY29uc3RydWN0b3IgaGVsZCBieSB0aGUgZXhwb3J0ZWQgdmFsdWUuICovXG5cdGZ1bGxQYXRoOiBzdHJpbmc7XG5cdC8qKiBUcnVlIHdoZW4gdGhlIGJpbmRpbmcgdXNlcyBkZWZhdWx0LWltcG9ydCBzeW50YXguICovXG5cdGRlZmF1bHRJbXBvcnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVOb2RlIHtcblx0LyoqIFR5cGUgbmFtZSAoZS5nLiwgXCJTZWNvbmRUeXBlXCIpICovXG5cdG5hbWU6IHN0cmluZztcblx0LyoqIEZ1bGwgcGF0aCAoZS5nLiwgXCJGaXJzdFR5cGUuU2Vjb25kVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogUHJvcGVydGllcyBkZWZpbmVkIGluIHRoaXMgdHlwZSdzIGNvbnN0cnVjdG9yICovXG5cdHByb3BlcnRpZXM6IE1hcDxzdHJpbmcsIFByb3BlcnR5SW5mbz47XG5cdC8qKiBDb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIChmb3IgVHlwZVJlZ2lzdHJ5IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSkgKi9cblx0Y29uc3RydWN0b3JQYXJhbXM/OiBDb25zdHJ1Y3RvclBhcmFtSW5mb1tdO1xuXHQvKiogRXhwbGljaXQgaW5zdGFuY2UtdHlwZSBvdmVycmlkZSBmcm9tIGEgdGhpczogYW55IGhhbmRsZXIgYW5ub3RhdGlvbi4gKi9cblx0aW5zdGFuY2VUeXBlT3ZlcnJpZGU/OiAnYW55Jztcblx0LyoqXG5cdCAqIFRydWUgd2hlbiB0aGUgY29uc3RydWN0IGhhbmRsZXIgaXMgYW4gYXN5bmMgZnVuY3Rpb24vYXJyb3cgKGRldGVjdGVkXG5cdCAqIHN5bnRhY3RpY2FsbHkgYnkgdGhlIGFzeW5jIG1vZGlmaWVyKS4gRW1pdHRlZCBjb25zdHJ1Y3RvciBzaGFwZXMgdGhlblxuXHQgKiByZXNvbHZlIHRvIFByb21pc2U8SW5zdGFuY2VUeXBlPi4gQXN5bmMgQ0xBU1NFUyBhcmUgbmV2ZXIgZmxhZ2dlZCDigJRcblx0ICogdGhleSBhcmUgdHlwZWQgYnkgdGhlIHVzZXIgaW4gdXNlcmxhbmQgKGRvY3VtZW50ZWQgaW4gQUdFTlRTLm1kKS5cblx0ICovXG5cdGlzQXN5bmM/OiBib29sZWFuO1xuXHQvKiogQ29tcHV0ZWQgbG9vcCBkZWZpbml0aW9ucyBjb250cmlidXRlIGdyYXBoIG1ldGFkYXRhIGJ1dCBubyBUUyBlbnRyaWVzLiAqL1xuXHRtZXRhZGF0YU9ubHk/OiBib29sZWFuO1xuXHQvKiogUGFyZW50IHR5cGUgbm9kZSAqL1xuXHRwYXJlbnQ/OiBUeXBlTm9kZTtcblx0LyoqIENoaWxkIHR5cGVzICovXG5cdGNoaWxkcmVuOiBNYXA8c3RyaW5nLCBUeXBlTm9kZT47XG5cdC8qKiBTb3VyY2UgZmlsZSBwYXRoICovXG5cdHNvdXJjZUZpbGU6IHN0cmluZztcblx0LyoqIExpbmUgbnVtYmVyIGluIHNvdXJjZSAqL1xuXHRsaW5lOiBudW1iZXI7XG5cdC8qKiBDb2x1bW4gbnVtYmVyIGluIHNvdXJjZSAqL1xuXHRjb2x1bW46IG51bWJlcjtcblx0LyoqIENvbnN0cnVjdG9yIGZ1bmN0aW9uIG5hbWUgb3IgY2xhc3MgbmFtZSAqL1xuXHRjb25zdHJ1Y3Rvck5hbWU/OiBzdHJpbmc7XG5cdC8qKiBDb2xsZWN0aW9uIGlkZW50aWZpZXIgaWYgdGhlIHR5cGUgYmVsb25ncyB0byBhIGN1c3RvbSBjb2xsZWN0aW9uICh1bmRlZmluZWQgPSBkZWZhdWx0L2dsb2JhbCByZWdpc3RyeSkgKi9cblx0Y29sbGVjdGlvbklkPzogc3RyaW5nO1xuXHQvKiogUmVnaXN0cnkgaW50ZXJmYWNlIG5hbWUgZm9yIGN1c3RvbSBjb2xsZWN0aW9ucyB1c2luZyBPcHRpb24gQiAodXNlci1wcm92aWRlZCByZWdpc3RyeSBpbnRlcmZhY2UpICovXG5cdHJlZ2lzdHJ5SW50ZXJmYWNlTmFtZT86IHN0cmluZztcblx0LyoqXG5cdCAqIFNvdXJjZSBmaWxlIG9mIHRoZSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKSBjYWxsIOKAlCB0aGUgbW9kdWxlIHRoZVxuXHQgKiBPcHRpb24gQiByZWdpc3RyeSBhdWdtZW50YXRpb24gbXVzdCB0YXJnZXQgKHRoZSBpbnRlcmZhY2UgaXNcblx0ICogY29uZmlybWVkIGRlY2xhcmVkIHRoZXJlKVxuXHQgKi9cblx0Y29sbGVjdGlvblNvdXJjZUZpbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUdyYXBoIHtcblx0LyoqIFJvb3QgdHlwZXMsIGtleWVkIGJ5IGZ1bGwgcGF0aCAoY3VzdG9tLWNvbGxlY3Rpb24gcm9vdHMgY2FycnkgdGhlIGBjb2xsZWN0aW9uSWQ6OmAgcHJlZml4KSAqL1xuXHRyb290czogTWFwPHN0cmluZywgVHlwZU5vZGU+O1xuXHQvKiogQWxsIHR5cGVzIGJ5IGZ1bGwgcGF0aCAqL1xuXHRhbGxUeXBlczogTWFwPHN0cmluZywgVHlwZU5vZGU+O1xuXHQvKiogQWRkIGEgcm9vdCB0eXBlICovXG5cdGFkZFJvb3Qobm9kZTogVHlwZU5vZGUpOiB2b2lkO1xuXHQvKiogRmluZCBhIHR5cGUgYnkgZnVsbCBwYXRoICovXG5cdGZpbmRUeXBlKGZ1bGxQYXRoOiBzdHJpbmcpOiBUeXBlTm9kZSB8IHVuZGVmaW5lZDtcblx0LyoqIEdldCBhbGwgdHlwZXMgYXMgYXJyYXkgKi9cblx0Z2V0QWxsVHlwZXMoKTogVHlwZU5vZGVbXTtcblx0LyoqIENsZWFyIHRoZSBncmFwaCAqL1xuXHRjbGVhcigpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5emVSZXN1bHQge1xuXHQvKiogVHlwZXMgZm91bmQgaW4gdGhlIGFuYWx5c2lzICovXG5cdHR5cGVzOiBUeXBlTm9kZVtdO1xuXHQvKiogRXJyb3JzIGVuY291bnRlcmVkICovXG5cdGVycm9yczogQW5hbHl6ZUVycm9yW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl6ZUVycm9yIHtcblx0bWVzc2FnZTogc3RyaW5nO1xuXHRmaWxlOiBzdHJpbmc7XG5cdGxpbmU6IG51bWJlcjtcblx0Y29sdW1uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVkVHlwZXMge1xuXHQvKiogQ29udGVudCBvZiB0aGUgLmQudHMgZmlsZSAqL1xuXHRjb250ZW50OiBzdHJpbmc7XG5cdC8qKiBUeXBlcyB0aGF0IHdlcmUgZ2VuZXJhdGVkICovXG5cdHR5cGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPbmUgb3duIGZpZWxkIG9mIGEgdHlwZSwgaW4gZGVjbGFyYXRpb24gb3JkZXIgKGRlZmluaXRpb25zLmpzb24gYGZpZWxkc2AsXG4gKiBsZXRoZSBjb250cmFjdCkuIGB0eXBlYCBpcyBzb3VyY2UtbGFuZ3VhZ2UgdGV4dCBmb3IgZGlzcGxheSBvbmx5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25GaWVsZCB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogc3RyaW5nO1xuXHRvcHRpb25hbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPbmUgY29uc3RydWN0b3IgcGFyYW1ldGVyLCBpbiBkZWNsYXJhdGlvbiBvcmRlciAoZGVmaW5pdGlvbnMuanNvbiBgYXJnc2AsXG4gKiBsZXRoZSBjb250cmFjdCkuIFRoZSByZWNlaXZlciAoYHRoaXNgKSBpcyBuZXZlciBsaXN0ZWQuIGBvcHRpb25hbGAgYWJzZW50XG4gKiBtZWFucyBmYWxzZTsgYSByZXN0IHBhcmFtZXRlciBjYXJyaWVzIGBraW5kOiAncmVzdCdgIGFuZCBubyBgb3B0aW9uYWxgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25Bcmcge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHR5cGU6IHN0cmluZztcblx0b3B0aW9uYWw/OiBib29sZWFuO1xuXHRraW5kPzogJ3Jlc3QnO1xufVxuXG4vKipcbiAqIERlZmluaXRpb24gaW5mbyBmb3IgY29kZSBuYXZpZ2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5pdGlvbkluZm8ge1xuXHQvKiogVHlwZSBuYW1lIChlLmcuLCBcIkFkbWluVHlwZVwiKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEhvdyB0eXBlIHdhcyBjcmVhdGVkOiAnZGVmaW5lJyBvciAnZGVjb3JhdGUnICovXG5cdGtpbmQ6ICdkZWZpbmUnIHwgJ2RlY29yYXRlJztcblx0LyoqIFBhcmVudCB0eXBlIGZ1bGwgcGF0aCwgbnVsbCBpZiByb290ICovXG5cdHBhcmVudDogc3RyaW5nIHwgbnVsbDtcblx0LyoqIHN0cmljdENoYWluIGNvbmZpZyBvcHRpb24gKi9cblx0c3RyaWN0Q2hhaW46IGJvb2xlYW47XG5cdC8qKiBibG9ja0Vycm9ycyBjb25maWcgb3B0aW9uICovXG5cdGJsb2NrRXJyb3JzOiBib29sZWFuO1xuXHQvKipcblx0ICogVGhlIHR5cGUncyBvd24gZmllbGRzIGluIGRlY2xhcmF0aW9uIG9yZGVyIChkZWZpbml0aW9ucy5qc29uIGNvbnRyYWN0LFxuXHQgKiBsZXRoZSBgZmllbGRgKS4gQWJzZW50IG1lYW5zIG5vdCByZWNvcmRlZDsgYW4gZW1wdHkgYXJyYXkgbWVhbnMgdGhlXG5cdCAqIHR5cGUgaGFzIG5vIGZpZWxkcy5cblx0ICovXG5cdGZpZWxkcz86IERlZmluaXRpb25GaWVsZFtdO1xuXHQvKipcblx0ICogVGhlIGNvbnN0cnVjdG9yJ3MgcGFyYW1ldGVycyBpbiBkZWNsYXJhdGlvbiBvcmRlciAoZGVmaW5pdGlvbnMuanNvblxuXHQgKiBjb250cmFjdCwgbGV0aGUgYGFyZ2ApLiBBYnNlbnQgbWVhbnMgbm90IHJlY29yZGVkOyBhbiBlbXB0eSBhcnJheVxuXHQgKiBtZWFucyB0aGUgY29uc3RydWN0b3IgdGFrZXMgbm9uZS5cblx0ICovXG5cdGFyZ3M/OiBEZWZpbml0aW9uQXJnW107XG59XG5cbi8qKlxuICogVXNhZ2UgaW5mbyBmb3IgY29kZSBuYXZpZ2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VJbmZvIHtcblx0LyoqIExvY2F0aW9uIGluIHNvdXJjZTogZmlsZS50czpMaW5lOkNvbCAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogS2luZCBvZiB1c2FnZTogaW5zdGFudGlhdGlvbiwgdHlwZUFubm90YXRpb24sIHByb3BlcnR5QWNjZXNzLCBsb29rdXAsIHJlZmVyZW5jZSAqL1xuXHRraW5kOiAnaW5zdGFudGlhdGlvbicgfCAndHlwZUFubm90YXRpb24nIHwgJ3Byb3BlcnR5QWNjZXNzJyB8ICdsb29rdXAnIHwgJ3JlZmVyZW5jZSc7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKipcblx0ICogU2NvcGUgaG9sZGluZyB0aGlzIHVzYWdlIChMb2NhbFNjb3BlV2Fsa2VyIHNjb3BlSWQ6IG1vZHVsZSBzY29wZSBpcyB0aGVcblx0ICogZmlsZSBwYXRoLCBmdW5jdGlvbiBzY29wZXMgYXJlIGZpbGU6bGluZTpjb2wpLiBBZGRpdGl2ZTsgYWJzZW50IHdoZW4gdGhlXG5cdCAqIHVzYWdlIHNpdHMgb3V0c2lkZSB0cmFja2VkIGZpbGVzLlxuXHQgKi9cblx0aG9sZGVyU2NvcGVJZD86IHN0cmluZztcblx0LyoqXG5cdCAqIENvbnN0cnVjdG9yIGV4cHJlc3Npb24gdGV4dCBhdCBhbiBpbnN0YW50aWF0aW9uIHNpdGUgKCdUaGluZycsXG5cdCAqICd1c2VyLkFkbWluRW50aXR5JywgJ1QyJyBmb3IgYSBsb29rdXAgYWxpYXMpLiBBZGRpdGl2ZTsgc2V0IG9ubHkgb25cblx0ICoga2luZCAnaW5zdGFudGlhdGlvbicuIEZlZWRzIENyZWF0aW9uQW5jaG9yLmNvbnN0cnVjdG9yVGV4dCAoUGhhc2UgMykuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvclRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIGRlZmluaXRpb25zLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbml0aW9uc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbml0aW9uSW5mbz47XG59XG5cbi8qKlxuICogSlNPTiBvdXRwdXQgZm9yIHVzYWdlcy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNhZ2VzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0dXNhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBVc2FnZUluZm9bXT47XG59XG5cbi8qKlxuICogRURTIChFeGVjdXRpb24gRGF0YSBTdG9yYWdlKSBraW5kIGZvciB0cmFja2luZyBleGVjdXRpb24gZmxvdyBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBFRFNLaW5kID1cblx0fCAnd3JhcCdcblx0fCAnY29udGV4dENvbnN1bWUnXG5cdHwgJ2hvb2tBdHRhY2gnO1xuXG4vKipcbiAqIEVEUyBpbmZvIGZvciBleGVjdXRpb24gZGF0YSBmbG93IHRyYWNraW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRURTSW5mbyB7XG5cdC8qKiBMb2NhdGlvbiBpbiBzb3VyY2U6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIEtpbmQgb2YgRURTIHVzYWdlICovXG5cdGtpbmQ6IEVEU0tpbmQ7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKiogUmVzb2x2ZWQgdGFyZ2V0IHR5cGUgaWYgZGV0ZWN0YWJsZSAqL1xuXHR0YXJnZXRUeXBlPzogc3RyaW5nO1xuXHQvKipcblx0ICogRW5jbG9zaW5nIG1uZW1vbmljYSB0eXBlIHBhdGggKGRlZmluZS9sYXp5IGhhbmRsZXIgb3IgZGVjb3JhdGVkIGNsYXNzKTtcblx0ICogZm9yIHdyYXAgc2l0ZXMgb3V0c2lkZSBhbnkgaGFuZGxlciwgYXR0cmlidXRlZCB0aHJvdWdoIHRoZSBpbnN0YW5jZS9jb250ZXh0XG5cdCAqIGFyZ3VtZW50ICh0cmFja2VkIGFzc2lnbm1lbnQgb3IgcGFyYW1ldGVyIGFubm90YXRpb24pLCB0aGVuIGluaGVyaXRlZCBkb3duXG5cdCAqIHRoZSB3cmFwIGdlbmVyYXRpb24gY2hhaW4gKGB2aWFgKVxuXHQgKi9cblx0c2NvcGU/OiBzdHJpbmc7XG5cdC8qKiBMb2NhdGlvbiBvZiB0aGUgZW5jbG9zaW5nIHdyYXAgc2l0ZSB3aG9zZSBydW50aW1lIHdyYXBwaW5nIGNhdXNlZCB0aGlzIGVudHJ5ICovXG5cdHZpYT86IHN0cmluZztcblx0LyoqIE1uZW1vbmljYSB0eXBlIGZ1bGxQYXRocyBpbnN0YW50aWF0ZWQgaW5zaWRlIHRoZSB3cmFwcGVkIGJvZHkg4oCUIGd1YXJhbnRlZWQgcGF0aCBoaXRzICovXG5cdGNyZWF0ZXNUeXBlcz86IHN0cmluZ1tdO1xuXHQvKiogTGFiZWwgc3RyaW5nIGxpdGVyYWwgcGFzc2VkIHRvIHdyYXAoZm4sIOKApiwgJ2xhYmVsJykgd2hlbiBzdGF0aWNhbGx5IHZpc2libGUgKi9cblx0bGFiZWw/OiBzdHJpbmc7XG5cdC8qKiBzY29wZUlkIChzY29wZXMuanNvbikgb2YgdGhlIHdyYXBwZWQgY2FsbGJhY2sncyBvd24gc2NvcGUg4oCUIGpvaW5zIHRvIHRoZSBjcmVhdGlvbiBncmFwaCAqL1xuXHRjYWxsYmFja1Njb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBJZGVudGlmaWVyIHBhc3NlZCBhcyB0aGUgaW5zdGFuY2UvY29udGV4dCBhcmd1bWVudCAoJ3VzZXInKSwgd2hlbiBpdCBpcyBvbmUgKi9cblx0aW5zdGFuY2VBcmc/OiBzdHJpbmc7XG5cdC8qKiBzY29wZUlkIG9mIHRoZSBzY29wZSBob2xkaW5nIHRoZSB3cmFwIGNhbGwgc2l0ZSDigJQgam9pbnMgdG8gdGhlIGNyZWF0aW9uIGdyYXBoICovXG5cdHNjb3BlSWQ/OiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgZnVsbFBhdGggb2YgdGhlIGluc3RhbmNlIGFyZ3VtZW50LCByZXNvbHZlZCB0aHJvdWdoIHNjb3BlIHZhcmlhYmxlcyAqL1xuXHR3cmFwc1R5cGVQYXRoPzogc3RyaW5nO1xuXHQvKiogV3JhcC1mYW1pbHkgZnVuY3Rpb24gbmFtZSAoJ3dyYXAnIHwgJ3dyYXBDb25zdHJ1Y3RvckFyZycgfCDigKYpIOKAlCBqb2lucyB0aGVcblx0ICogIGNhbGwgc2l0ZSB0byBkaXZlJ3MgZW5naW5lIGtub3QgaW4gZ3JhcGggY29uc3VtZXJzICovXG5cdGZuPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBlZHMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVEU0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGVkczogUmVjb3JkPHN0cmluZywgRURTSW5mb1tdPjtcbn1cblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24ga2luZCBmb3IgZnJhbWV3b3JrIGxpZmVjeWNsZSBjcm9zc3JvYWRzXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RydW1lbnRhdGlvbktpbmQgPVxuXHR8ICdpbnRlcmNlcHRvcidcblx0fCAnZ3VhcmQnXG5cdHwgJ3BpcGUnXG5cdHwgJ2ZpbHRlcidcblx0fCAnbWlkZGxld2FyZSc7XG5cbi8qKlxuICogSW5zdHJ1bWVudGF0aW9uIHNjb3BlOiB3aGVyZSB0aGUgcG9pbnQgYXR0YWNoZXMuXG4gKiAnZ2xvYmFsJyBmb3IgcHJvdmlkZXItdG9rZW4gcmVnaXN0cmF0aW9ucywgJ21vZHVsZScgZm9yIG1pZGRsZXdhcmUgd2lyZWRcbiAqIHZpYSBjb25zdW1lci5hcHBseSgpIEFORCBmb3IgYmFyZSBoZXJpdGFnZSBkZWNsYXJhdGlvbnMgd2hvc2UgYXR0YWNobWVudFxuICogaXMgc3RhdGljYWxseSB1bmtub3duLCBgY29udHJvbGxlcjpOYW1lYCAvIGBtZXRob2Q6Q2xhc3MubWV0aG9kYCBmb3JcbiAqIGRlY29yYXRvci1zY29wZWQgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RydW1lbnRhdGlvblNjb3BlID1cblx0fCAnZ2xvYmFsJ1xuXHR8ICdtb2R1bGUnXG5cdHwgYGNvbnRyb2xsZXI6JHtzdHJpbmd9YFxuXHR8IGBtZXRob2Q6JHtzdHJpbmd9YDtcblxuLyoqXG4gKiBJbnN0cnVtZW50YXRpb24gcG9pbnQ6IGEgZnJhbWV3b3JrIGxpZmVjeWNsZSBjcm9zc3JvYWQgKGludGVyY2VwdG9yLFxuICogZ3VhcmQsIHBpcGUsIGZpbHRlciwgbWlkZGxld2FyZSkgZGV0ZWN0ZWQgc3ludGFjdGljYWxseS4gVGhlIHZvY2FidWxhcnlcbiAqIHRoYXQgdHVybnMgYSBzeW50YWN0aWMgc2hhcGUgaW50byBhIHBvaW50IGNvbWVzIGZyb20gcGx1Z2lucyDigJQgd2l0aCBub1xuICogcGx1Z2luIGxvYWRlZCwgbm8gcG9pbnRzIGFyZSBjb2xsZWN0ZWQuXG4gKlxuICogRGVkdXBlL3Njb3BlIGRlY2lzaW9uOiBwb2ludHMgYXJlIGtleWVkIGJ5IChraW5kLCBjbGFzc05hbWUsIGxvY2F0aW9uLFxuICogc2NvcGUpIGFuZCBkdXBsaWNhdGVzIG1lcmdlIHRoZWlyIGB0YXJnZXRzYC4gQSBjbGFzcyBkZXRlY3RlZCBib3RoIGJ5XG4gKiBoZXJpdGFnZSAoYSBwbHVnaW4tbGlzdGVkIGBpbXBsZW1lbnRzYCBpbnRlcmZhY2UpIGFuZCBieSBhIGRlY29yYXRvclxuICogc2l0ZSB5aWVsZHMgU0VQQVJBVEUgZW50cmllcyDigJQgdGhlIGNsYXNzLWRlY2xhcmF0aW9uIHBvaW50IGtlZXBzIHNjb3BlXG4gKiAnbW9kdWxlJyAoYXR0YWNobWVudCB1bmtub3duKSB3aGlsZSBlYWNoIHJlZ2lzdHJhdGlvbiBzaXRlIGNhcnJpZXMgaXRzXG4gKiBvd24gc2NvcGUuIE9uZSBwb2ludCBzZXJ2aW5nIG11bHRpcGxlIHNjb3BlcyB2aWEgbWVyZ2VkIHNjb3BlIGxpc3RzIHdhc1xuICogcmVqZWN0ZWQ6IGNvbnN1bWVycyAobW5lbW9ncmFwaGljYSBkaWFtb25kcykga2V5IG9mZiBhIHNpbmdsZSBzY29wZSBwZXJcbiAqIHBvaW50LCBhbmQgc2VwYXJhdGUgZW50cmllcyBrZWVwIHRoYXQgY29udHJhY3Qgc2ltcGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RydW1lbnRhdGlvblBvaW50IHtcblx0LyoqIEtpbmQgb2YgbGlmZWN5Y2xlIGNyb3Nzcm9hZCAqL1xuXHRraW5kOiBJbnN0cnVtZW50YXRpb25LaW5kO1xuXHQvKiogQ2xhc3MgcHJvdmlkaW5nIHRoZSBpbnN0cnVtZW50YXRpb24gKGUuZy4sIFwiQXV0aEd1YXJkXCIpICovXG5cdGNsYXNzTmFtZTogc3RyaW5nO1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sIChjbGFzcyBkZWNsYXJhdGlvbiB3aGVuIGRlY2xhcmVkIGluLXByb2plY3QsIGVsc2UgdGhlIHJlZ2lzdHJhdGlvbiBzaXRlKSAqL1xuXHRsb2NhdGlvbjogc3RyaW5nO1xuXHQvKiogQ29kZSBzbmlwcGV0OiBzaWduYXR1cmUgLyBmaXJzdCBsaW5lLCBsaWtlIEVEUyBgY29kZWAgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKiogV2hlcmUgdGhlIHBvaW50IGF0dGFjaGVzICovXG5cdHNjb3BlOiBJbnN0cnVtZW50YXRpb25TY29wZTtcblx0LyoqIENvbnRyb2xsZXIvcHJvdmlkZXIgbmFtZXMgdGhlIHBvaW50IGF0dGFjaGVzIHRvOyBlbXB0eSBmb3IgZ2xvYmFsIHBvaW50cyAqL1xuXHR0YXJnZXRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgaW5zdHJ1bWVudGF0aW9uLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0cnVtZW50YXRpb25Kc29uIHtcblx0LyoqIFNjaGVtYSB2ZXJzaW9uOiAyIGFkZHMgdGhlIG9wdGlvbmFsIGNyZWF0aW9uR3JhcGgga2V5IChQaGFzZSAzKSAqL1xuXHR2ZXJzaW9uOiBudW1iZXI7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHBvaW50czogSW5zdHJ1bWVudGF0aW9uUG9pbnRbXTtcblx0LyoqXG5cdCAqIEluc2lkZS1vdXQgY3JlYXRpb24gd2FsayAoaW5zdHJ1bWVudGF0aW9uIHdhbGtlciBwbGFuLCBQaGFzZSAzKTogd2hpY2hcblx0ICogc2NvcGVzIGNyZWF0ZSBtbmVtb25pY2EgaW5zdGFuY2VzIGFuZCB3aG8gY2FsbHMgdGhlbSwgd2Fsa2VkIG91dHdhcmQgdG9cblx0ICogdGhlIHN0YXJ0ZXJzLiBBYnNlbnQgd2hlbiB0aGUgd3JpdGVyIGlzIGNhbGxlZCB3aXRob3V0IGNyZWF0aW9uLWdyYXBoXG5cdCAqIGRhdGEgKGRpcmVjdCBsaWJyYXJ5IHVzZSk7IGFsd2F5cyBwcmVzZW50IGZyb20gdGhlIENMSS5cblx0ICovXG5cdGNyZWF0aW9uR3JhcGg/OiBDcmVhdGlvbkdyYXBoO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBjb250cm9sLmpzb24gKGxldGhlIGNvbnRyYWN0LCBmb3JtYXQgMS4yKTogYGNhbGxlcnNgXG4gKiBjYXJyaWVzIHRoZSBzYW1lIGNyZWF0aW9uIGdyYXBoIGluc3RydW1lbnRhdGlvbi5qc29uIHYyIGNhcnJpZXMgdW5kZXJcbiAqIGBjcmVhdGlvbkdyYXBoYCwgYHBvaW50c2AgdGhlIHNhbWUgcGx1Z2luLXN1cHBsaWVkIGluc3RydW1lbnRhdGlvbiBwb2ludHMuXG4gKiBpbnN0cnVtZW50YXRpb24uanNvbiBzdGF5cyB1bmNoYW5nZWQgZm9yIG1uZW1vZ3JhcGhpY2E7IGNvbnRyb2wuanNvbiBpc1xuICogdGhlIGNyb3NzLWxhbmd1YWdlIGNvbnRyYWN0IHJlbmRlcmluZyBvZiB0aGUgc2FtZSBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyb2xKc29uIHtcblx0dmVyc2lvbjogJzEuMic7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGNhbGxlcnM6IENyZWF0aW9uR3JhcGg7XG5cdHBvaW50czogSW5zdHJ1bWVudGF0aW9uUG9pbnRbXTtcbn1cblxuLyoqXG4gKiBGbG93IGtpbmQgZm9yIHRyYWNraW5nIG5hdGl2ZSBpbnN0YW5jZSB1c2FnZSBwYXR0ZXJucyDigJQgV0hBVCBGTE9XUyBXSEVSRVxuICogaW4gcGxhaW4gc291cmNlIHNoYXBlcy4gRWFjaCBraW5kIG5hbWVzIG9uZSBzeW50YWN0aWMgcGF0dGVybiB0aGF0IG1vdmVzXG4gKiBhIHR5cGVkIHZhbHVlLCB3aXRoIHRoZSBzaGFwZSB0aGF0IHByb2R1Y2VzIGl0OlxuICpcbiAqICAgJ3Byb3BlcnR5UmVhZCcgICAgICByZWFkaW5nIGEgZmllbGQgb2ZmIHRoZSBpbnN0YW5jZSDigJRcbiAqICAgICAgICAgICAgICAgICAgICAgICBgdXNlci5uYW1lYCAoYWxzbyBgdXNlcj8ubmFtZWAg4oCUIG9wdGlvbmFsIGNoYWluaW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkcyBhcyBhIHBsYWluIHByb3BlcnR5UmVhZClcbiAqICAgJ3Byb3BlcnR5V3JpdGUnICAgICBhc3NpZ25pbmcgYSBmaWVsZCDigJQgYHVzZXIubmFtZSA9ICd4J2BcbiAqICAgJ21ldGhvZENhbGwnICAgICAgICBjYWxsaW5nIGEgbWV0aG9kIG9uIGl0IOKAlCBgdXNlci52YWxpZGF0ZSgpYFxuICogICAnZWxlbWVudEFjY2VzcycgICAgIGJyYWNrZXQgcmVhZCDigJQgYHVzZXJbJ25hbWUnXWBcbiAqICAgJ2Rlc3RydWN0dXJlUmVhZCcgICBkZXN0cnVjdHVyaW5nIHB1bGxzIHRoZSBmaWVsZHMgYXBhcnQg4oCUXG4gKiAgICAgICAgICAgICAgICAgICAgICAgYGNvbnN0IHsgbmFtZSB9ID0gdXNlcmBcbiAqICAgJ3Bhc3NBc0FyZycgICAgICAgICB0aGUgdmFsdWUgY3Jvc3NlcyBpbnRvIGEgY2FsbCBhcyBhbiBhcmd1bWVudCDigJRcbiAqICAgICAgICAgICAgICAgICAgICAgICBgcHJvY2Vzc1VzZXIodXNlcilgIChjb250ZXh0IG5hbWVzIGNhbGxlZSArIHNsb3QpXG4gKiAgICdyZXR1cm4nICAgICAgICAgICAgdGhlIHZhbHVlIGxlYXZlcyB0aGUgZnVuY3Rpb24gYXMgaXRzIHJlc3VsdCDigJRcbiAqICAgICAgICAgICAgICAgICAgICAgICBgcmV0dXJuIHVzZXJgXG4gKiAgICdzcHJlYWQnICAgICAgICAgICAgdGhlIGZpZWxkcyBzY2F0dGVyIGludG8gYSBsaXRlcmFsIOKAlCBgKHsgLi4udXNlciB9KWBcbiAqICAgJ3JlYXNzaWdubWVudCcgICAgICB0aGUgYmluZGluZyBpcyByZS1wb2ludGVkIOKAlCBgdXNlciA9IG90aGVyYFxuICogICAnaW5zdGFudGlhdGlvbicgICAgIGEgY29uc3RydWN0aW9uLXNoYXBlZCBjYWxsIOKAlCBgbmV3IFVzZXIoKWAgKGFsc29cbiAqICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRlZCBmb3IgY2hhaW4gdGlwcyBhbmQgY2FsbC9hcHBseS9mb3JrL21lcmdlKVxuICpcbiAqICdhcnJheUVsZW1lbnQnIGFuZCAnY29uZGl0aW9uYWxBY2Nlc3MnIGFyZSByZXNlcnZlZCBtZW1iZXJzIG9mIHRoZVxuICogdW5pb24g4oCUIGRlY2xhcmVkLCBub3QgeWV0IGVtaXR0ZWQgYnkgdGhlIGFuYWx5emVyLlxuICovXG5leHBvcnQgdHlwZSBGbG93S2luZCA9XG5cdHwgJ3Byb3BlcnR5UmVhZCdcblx0fCAncHJvcGVydHlXcml0ZSdcblx0fCAnbWV0aG9kQ2FsbCdcblx0fCAnZGVzdHJ1Y3R1cmVSZWFkJ1xuXHR8ICdwYXNzQXNBcmcnXG5cdHwgJ3JldHVybidcblx0fCAnc3ByZWFkJ1xuXHR8ICdhcnJheUVsZW1lbnQnXG5cdHwgJ2NvbmRpdGlvbmFsQWNjZXNzJ1xuXHR8ICdlbGVtZW50QWNjZXNzJ1xuXHR8ICdyZWFzc2lnbm1lbnQnXG5cdHwgJ2luc3RhbnRpYXRpb24nO1xuXG4vKipcbiAqIEZsb3cgaW5mbyBmb3IgbmF0aXZlIGluc3RhbmNlIHVzYWdlIHRyYWNraW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0luZm8ge1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBLaW5kIG9mIGZsb3cgKi9cblx0a2luZDogRmxvd0tpbmQ7XG5cdC8qKiBDb2RlIHNuaXBwZXQgKi9cblx0Y29kZTogc3RyaW5nO1xuXHQvKiogUHJvcGVydHkgbmFtZSBpZiBhcHBsaWNhYmxlICovXG5cdHByb3BlcnR5TmFtZT86IHN0cmluZztcblx0LyoqIFJlc29sdmVkIHRhcmdldCB0eXBlIGlmIGtub3duICovXG5cdHRhcmdldFR5cGU/OiBzdHJpbmc7XG5cdC8qKiBDb250ZXh0IChmdW5jdGlvbiBuYW1lLCBwYXJhbSBwb3NpdGlvbiwgZXRjLikgKi9cblx0Y29udGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgZmxvdy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdGZsb3c6IFJlY29yZDxzdHJpbmcsIEZsb3dJbmZvW10+O1xufVxuXG4vKipcbiAqIFdoYXQgYSBtb2R1bGUtbGV2ZWwgYmluZGluZyBpcy4gVmFyaWFibGVzIGFyZSBjbGFzc2lmaWVkIGFzICdjb25zdCdcbiAqIHJlZ2FyZGxlc3Mgb2YgbGV0L3ZhciDigJQgbXV0YWJpbGl0eSAocmVhc3NpZ25tZW50IHRyYWNraW5nKSBpcyB0aGVcbiAqIGxvY2FsLXNjb3BlIHdhbGtlcidzIGNvbmNlcm4gKFBoYXNlIDIpLCBub3QgdGhlIG1vZHVsZSBncmFwaCdzLlxuICovXG5leHBvcnQgdHlwZSBNb2R1bGVCaW5kaW5nS2luZCA9XG5cdHwgJ2Z1bmN0aW9uJ1xuXHR8ICdjbGFzcydcblx0fCAnY29uc3QnXG5cdHwgJ3R5cGUnXG5cdHwgJ3Vua25vd24nO1xuXG4vKipcbiAqIEhvdyBhIGJpbmRpbmcgZW50ZXJzIGEgbW9kdWxlXG4gKi9cbmV4cG9ydCB0eXBlIE1vZHVsZUltcG9ydEtpbmQgPVxuXHR8ICduYW1lZCdcblx0fCAnZGVmYXVsdCdcblx0fCAnbmFtZXNwYWNlJ1xuXHR8ICdyZXF1aXJlJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgbW9kdWxlLWxldmVsIGJpbmRpbmcgKGV4cG9ydCwgaW1wb3J0LCBvciByZS1leHBvcnQpLlxuICpcbiAqIGBuYW1lYCBpcyBhbHdheXMgdGhlIG5hbWUgdGhpcyBtb2R1bGUgcHJlc2VudHM6IHRoZSBsb2NhbCBpZGVudGlmaWVyIGZvclxuICogaW1wb3J0cywgdGhlIGV4cG9ydGVkIG5hbWUgZm9yIGV4cG9ydHMuIGBpbXBvcnRBbGlhc2AgY2FycmllcyB0aGUgb3JpZ2luYWxcbiAqIG5hbWUgaW4gdGhlIHNvdXJjZSBtb2R1bGUgd2hlbiBpdCBkaWZmZXJzIChgaW1wb3J0IHsgWCBhcyBZIH1gIOKGkiBuYW1lICdZJyxcbiAqIGltcG9ydEFsaWFzICdYJzsgYGV4cG9ydCB7IFggYXMgWSB9IGZyb20g4oCmYCDihpIgbmFtZSAnWScsIGltcG9ydEFsaWFzICdYJykuXG4gKiBGb3IgZGVmYXVsdCBpbXBvcnRzIG5hbWUgaXMgdGhlIGxvY2FsIGlkZW50aWZpZXIgYW5kIHRoZSBzb3VyY2UgbG9va3VwIGtleVxuICogaXMgJ2RlZmF1bHQnIChpbXBsaWVkIGJ5IGltcG9ydEtpbmQpOyBmb3IgbmFtZXNwYWNlIGltcG9ydHMvZXhwb3J0cyBuYW1lIGlzXG4gKiB0aGUgbmFtZXNwYWNlIGFsaWFzICgnKicgZm9yIGJhcmUgYGV4cG9ydCAqIGZyb20g4oCmYCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlQmluZGluZyB7XG5cdC8qKiBOYW1lIGFzIHByZXNlbnRlZCBpbiB0aGlzIG1vZHVsZSAobG9jYWwgbmFtZSBmb3IgaW1wb3J0cywgZXhwb3J0ZWQgbmFtZSBmb3IgZXhwb3J0cykgKi9cblx0bmFtZTogc3RyaW5nO1xuXHQvKiogV2hhdCB0aGUgYmluZGluZyBpczsgYmFja2ZpbGxlZCBmcm9tIHRoZSBvcmlnaW4gbW9kdWxlIHdoZW4gcmVzb2x2YWJsZSAqL1xuXHRraW5kOiBNb2R1bGVCaW5kaW5nS2luZDtcblx0LyoqXG5cdCAqIFJlc29sdmVkIGFic29sdXRlIGZpbGUgcGF0aCBvZiB0aGUgc291cmNlIG1vZHVsZSAodGhlIG1vZHVsZSBpdHNlbGYgZm9yXG5cdCAqIGxvY2FsIGRlY2xhcmF0aW9uczsgdGhlIHJhdyBzcGVjaWZpZXIgd2hlbiByZXNvbHV0aW9uIGZhaWxzKVxuXHQgKi9cblx0c291cmNlTW9kdWxlOiBzdHJpbmc7XG5cdC8qKiBIb3cgdGhlIGJpbmRpbmcgZW50ZXJzIHRoZSBtb2R1bGUgKGFic2VudCBvbiBwbGFpbiBsb2NhbCBleHBvcnRzKSAqL1xuXHRpbXBvcnRLaW5kPzogTW9kdWxlSW1wb3J0S2luZDtcblx0LyoqIE9yaWdpbmFsIG5hbWUgaW4gdGhlIHNvdXJjZSBtb2R1bGUgd2hlbiBhbGlhc2VkICovXG5cdGltcG9ydEFsaWFzPzogc3RyaW5nO1xuXHQvKiogVHJ1ZSBmb3IgYGV4cG9ydCB7IFggfSBmcm9tICcuL3knYCAvIGBleHBvcnQgKiBmcm9tICcuL3knYCAoYmFycmVscykgKi9cblx0aXNSZUV4cG9ydDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFRydWUgd2hlbiB0aGUgc3BlY2lmaWVyIHJlc29sdmVkIGludG8gbm9kZV9tb2R1bGVzXG5cdCAqICh0cy5yZXNvbHZlTW9kdWxlTmFtZSdzIGlzRXh0ZXJuYWxMaWJyYXJ5SW1wb3J0KS4gRXh0ZXJuYWwgYmluZGluZ3MgYXJlXG5cdCAqIHJlY29yZGVkIGZvciByZWZlcmVuY2UgYnV0IG5ldmVyIGVudGVyIGBkZXBlbmRlbmNpZXNgIGFuZCBhcmUgbmV2ZXIgd2Fsa2VkLlxuXHQgKiBOb2RlLmpzIGJ1aWx0aW5zIGFyZSBub3QgcmVjb3JkZWQgYXMgYmluZGluZ3MgYXQgYWxsIOKAlCBzZWVcblx0ICogTW9kdWxlSW5mby5idWlsdGluU3BlY2lmaWVycy5cblx0ICovXG5cdGV4dGVybmFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQZXItbW9kdWxlIHJlY29yZCBvZiB0aGUgY3Jvc3MtZmlsZSBncmFwaCAobW9kdWxlcy5qc29uKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUluZm8ge1xuXHQvKiogQWJzb2x1dGUgZmlsZSBwYXRoIChtYXAga2V5KSAqL1xuXHRmaWxlUGF0aDogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGhzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgKi9cblx0ZGVmaW5lZFR5cGVzOiBzdHJpbmdbXTtcblx0LyoqIEV2ZXJ5dGhpbmcgdGhpcyBtb2R1bGUgZXhwb3J0cyAobG9jYWwgZGVjbGFyYXRpb25zIGFuZCByZS1leHBvcnRzKSAqL1xuXHRleHBvcnRlZEJpbmRpbmdzOiBNb2R1bGVCaW5kaW5nW107XG5cdC8qKiBFdmVyeXRoaW5nIHRoaXMgbW9kdWxlIGltcG9ydHMgKHJlLWV4cG9ydHMgYXBwZWFyIGhlcmUgdG9vLCBtYXJrZWQgaXNSZUV4cG9ydCkgKi9cblx0aW1wb3J0ZWRCaW5kaW5nczogTW9kdWxlQmluZGluZ1tdO1xuXHQvKiogQWJzb2x1dGUgcGF0aHMgb2YgYW5hbHl6ZWQgcHJvamVjdCBtb2R1bGVzIHRoaXMgbW9kdWxlIGltcG9ydHMgZnJvbSAqL1xuXHRkZXBlbmRlbmNpZXM6IHN0cmluZ1tdO1xuXHQvKiogSW1wb3J0IHNwZWNpZmllcnMgdGhhdCBtb2R1bGUgcmVzb2x1dGlvbiBjb3VsZCBub3QgcmVzb2x2ZSAobm9kZSBidWlsdGlucyBleGNsdWRlZCDigJQgc2VlIGJ1aWx0aW5TcGVjaWZpZXJzKSAqL1xuXHR1bnJlc29sdmVkU3BlY2lmaWVyczogc3RyaW5nW107XG5cdC8qKlxuXHQgKiBOb2RlLmpzIGJ1aWx0aW4gc3BlY2lmaWVycyB0aGlzIG1vZHVsZSBpbXBvcnRzICgncGF0aCcsICdub2RlOmZzJywg4oCmKSxcblx0ICogbWF0Y2hlZCBhZ2FpbnN0IG5vZGU6bW9kdWxlJ3MgYnVpbHRpbk1vZHVsZXMgaW4gYm90aCBiYXJlIGFuZFxuXHQgKiBgbm9kZTpgLXByZWZpeGVkIGZvcm1zLiBSZWNvcmRlZCBmb3IgaG9uZXN0eSBvbmx5OiBidWlsdGlucyBwcm9kdWNlIG5vXG5cdCAqIGJpbmRpbmdzLCBuZXZlciBlbnRlciBgZGVwZW5kZW5jaWVzYC9gdW5yZXNvbHZlZFNwZWNpZmllcnNgLCBhbmQgbmV2ZXJcblx0ICogcHJvZHVjZSBlZGdlcy5cblx0ICovXG5cdGJ1aWx0aW5TcGVjaWZpZXJzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBIGNyb3NzLW1vZHVsZSB1c2FnZSBvZiBhIG1uZW1vbmljYSB0eXBlOiB1c2FnZU1vZHVsZSBpbXBvcnRzIGEgYmluZGluZ1xuICogd2hvc2Ugb3JpZ2luIG1vZHVsZSBkZWZpbmVzIHRoZSB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyb3NzTW9kdWxlVXNhZ2Uge1xuXHQvKiogTWF0Y2hlZCBtbmVtb25pY2EgdHlwZSBmdWxsUGF0aCAob3IgdGhlIGltcG9ydGVkIG5hbWUgd2hlbiB1bm1hdGNoZWQpICovXG5cdHR5cGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBtb2R1bGUgd2hlcmUgdGhlIHR5cGUgaXMgZGVmaW5lZCAocmUtZXhwb3J0IGNoYWlucyBjaGFzZWQgdG8gdGhlIG9yaWdpbikgKi9cblx0ZGVmaW5pdGlvbk1vZHVsZTogc3RyaW5nO1xuXHQvKiogQWJzb2x1dGUgcGF0aCBvZiB0aGUgaW1wb3J0aW5nIG1vZHVsZSAqL1xuXHR1c2FnZU1vZHVsZTogc3RyaW5nO1xuXHQvKiogSW1wb3J0IHNpdGU6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0dXNhZ2VMb2NhdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBmdWxsIG1vZHVsZSBncmFwaFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUdyYXBoIHtcblx0LyoqIEtleWVkIGJ5IGFic29sdXRlIGZpbGUgcGF0aCAqL1xuXHRtb2R1bGVzOiBNYXA8c3RyaW5nLCBNb2R1bGVJbmZvPjtcblx0ZWRnZXM6IENyb3NzTW9kdWxlVXNhZ2VbXTtcblx0LyoqXG5cdCAqIENpcmN1bGFyIGltcG9ydCBjaGFpbnMgKGVhY2ggYW4gYXJyYXkgb2YgYWJzb2x1dGUgcGF0aHMpLiBSZWNvcmRlZCwgbm90XG5cdCAqIGFuIGVycm9yIOKAlCBtbmVtb25pY2Egc3RyaWN0Q2hhaW46ZmFsc2UgcGVybWl0cyBub24tbGluZWFyIGNvbnN0cnVjdGlvblxuXHQgKi9cblx0Y3ljbGVzOiBzdHJpbmdbXVtdO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBtb2R1bGVzLmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVzSnNvbiB7XG5cdHZlcnNpb246IHN0cmluZztcblx0Z2VuZXJhdGVkQXQ6IHN0cmluZztcblx0bW9kdWxlczogUmVjb3JkPHN0cmluZywgTW9kdWxlSW5mbz47XG5cdGVkZ2VzOiBDcm9zc01vZHVsZVVzYWdlW107XG5cdGN5Y2xlczogc3RyaW5nW11bXTtcbn1cblxuLyoqXG4gKiBXaGF0IGEgdHJhY2tlZCBzY29wZSBpcy4gRGVjaXNpb24gNSAocmVzb2x2ZWQgMjAyNi0wOS0wMyk6IGZ1bmN0aW9uLFxuICogbWV0aG9kLCBhbmQgYXJyb3cgc2NvcGVzIE9OTFkg4oCUIG5vIGJsb2NrIHNjb3Blcy4gJ21vZHVsZScgaXMgdGhlIHN5bnRoZXRpY1xuICogcGVyLWZpbGUgcm9vdCBzY29wZSBzbyBtb2R1bGUtbGV2ZWwgaW5zdGFuY2UgY3JlYXRpb25zIGFyZSBsYWJlbGVkLCBub3RcbiAqIGRyb3BwZWQgKHdhbGtlciBwbGFuOiBcInJlY29yZGVkIGFzIGEgcm9vdGVkIGluc3RhbmNlXCIpLlxuICovXG5leHBvcnQgdHlwZSBTY29wZUtpbmQgPVxuXHR8ICdtb2R1bGUnXG5cdHwgJ2Z1bmN0aW9uJ1xuXHR8ICdtZXRob2QnXG5cdHwgJ2Fycm93JztcblxuLyoqXG4gKiBPbmUgdHJhY2tlZCBzY29wZSAoc2NvcGVzLmpzb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVJbmZvIHtcblx0LyoqIFVuaXF1ZSBpZDogbW9kdWxlIHNjb3BlIGlzIHRoZSBmaWxlIHBhdGg7IGZ1bmN0aW9uIHNjb3BlcyBhcmUgZmlsZTpsaW5lOmNvbCBvZiB0aGUgc2NvcGUgbm9kZSAqL1xuXHRzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBEZWNpc2lvbiA4IGxhYmVsaW5nOiBmdW5jdGlvbi9tZXRob2QgbmFtZSAoJ0NsYXNzLm1ldGhvZCcgZm9yIG1ldGhvZHMpLCBmaWxlOmxpbmUgZm9yIGFub255bW91cyBob2xkZXJzICovXG5cdG5hbWU6IHN0cmluZztcblx0a2luZDogU2NvcGVLaW5kO1xuXHQvKiogTmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgKHVuZGVmaW5lZCBvbiBtb2R1bGUgc2NvcGVzKSAqL1xuXHRwYXJlbnRTY29wZUlkPzogc3RyaW5nO1xuXHQvKiogQWJzb2x1dGUgZmlsZSBwYXRoICovXG5cdGZpbGVQYXRoOiBzdHJpbmc7XG5cdC8qKiBTY29wZSBzdGFydDogZmlsZS50czpMaW5lOkNvbCAobW9kdWxlIHNjb3BlOiBmaWxlOjE6MSkgKi9cblx0bG9jYXRpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgdHJhY2tlZCB2YXJpYWJsZSAoc2NvcGVzLmpzb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NvcGVWYXJpYWJsZSB7XG5cdG5hbWU6IHN0cmluZztcblx0LyoqIE93bmluZyBzY29wZSAqL1xuXHRzY29wZUlkOiBzdHJpbmc7XG5cdC8qKiBNbmVtb25pY2EgdHlwZSBmdWxsUGF0aCB3aGVuIGtub3duIChuZXcgWCgpIG9uIGEga25vd24gdHlwZSwgbmV3IGluc3QuU3ViKCkgY2hhaW5pbmcsIG9yIGEga25vd24gYW5ub3RhdGlvbikgKi9cblx0dHlwZVBhdGg/OiBzdHJpbmc7XG5cdC8qKiBDaGVhcCB0ZXh0dWFsIHR5cGU6IGFubm90YXRpb24gdGV4dCBvciB0aW55IGluaXRpYWxpemVyIGNsYXNzaWZpY2F0aW9uICovXG5cdGluZmVycmVkVHlwZT86IHN0cmluZztcblx0LyoqIERlY2xhcmF0aW9uIHNpdGU6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0ZGVjbGFyYXRpb246IHN0cmluZztcblx0aXNQYXJhbWV0ZXI6IGJvb2xlYW47XG5cdC8qKiBjb25zdCA9IGZhbHNlOyBsZXQvdmFyIGFuZCBwYXJhbWV0ZXJzID0gdHJ1ZSAocGFyYW1ldGVycyBhcmUgcmVhc3NpZ25hYmxlKSAqL1xuXHRpc011dGFibGU6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBSZWFzc2lnbm1lbnQgc2l0ZXMgKGZpbGUudHM6TGluZTpDb2wpIG9mIHRoaXMgYmluZGluZyDigJQgZmxvdy10ZXJtaW5hdGlvblxuXHQgKiBwb2ludHMgKGRlY2lzaW9uIDYpOiB0aGUgUGhhc2UgMyB3YWxrZXIgc3RvcHMgZm9sbG93aW5nIHRoZSBiaW5kaW5nIHRoZXJlXG5cdCAqL1xuXHRyZWFzc2lnbm1lbnRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgZnVsbCBsb2NhbC1zY29wZSBhbmFseXNpc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlQW5hbHlzaXMge1xuXHQvKiogS2V5ZWQgYnkgc2NvcGVJZCAqL1xuXHRzY29wZXM6IE1hcDxzdHJpbmcsIFNjb3BlSW5mbz47XG5cdC8qKiBLZXllZCBieSBgJHtzY29wZUlkfSMke25hbWV9YCAqL1xuXHR2YXJpYWJsZXM6IE1hcDxzdHJpbmcsIFNjb3BlVmFyaWFibGU+O1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBzY29wZXMuanNvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjb3Blc0pzb24ge1xuXHR2ZXJzaW9uOiBzdHJpbmc7XG5cdGdlbmVyYXRlZEF0OiBzdHJpbmc7XG5cdHNjb3BlczogUmVjb3JkPHN0cmluZywgU2NvcGVJbmZvPjtcblx0dmFyaWFibGVzOiBTY29wZVZhcmlhYmxlW107XG59XG5cbi8qKlxuICogT25lIG5vZGUgb2YgdGhlIGNyZWF0aW9uIGdyYXBoIChpbnN0cnVtZW50YXRpb24gd2Fsa2VyIHBsYW4sIFBoYXNlIDMpOlxuICogYSBzY29wZSB0aGF0IGNyZWF0ZXMgbW5lbW9uaWNhIGluc3RhbmNlcywgb3Igb25lIHNpdHRpbmcgb24gYSBjYWxsIHBhdGhcbiAqIHRvIGEgY3JlYXRvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkdyYXBoTm9kZSB7XG5cdC8qKiBMb2NhbFNjb3BlV2Fsa2VyIHNjb3BlSWQgKG1vZHVsZSBzY29wZSA9IGZpbGUgcGF0aDsgZnVuY3Rpb24gc2NvcGVzID0gZmlsZTpsaW5lOmNvbCkgKi9cblx0c2NvcGVJZDogc3RyaW5nO1xuXHQvKiogRGVjaXNpb24gOCBsYWJlbDogZnVuY3Rpb24vbWV0aG9kIG5hbWUgKCdDbGFzcy5tZXRob2QnKSwgZmlsZTpsaW5lIGZvciBhbm9ueW1vdXMgaG9sZGVycyAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdGtpbmQ6IFNjb3BlS2luZDtcblx0LyoqIEFic29sdXRlIGZpbGUgcGF0aCAqL1xuXHRmaWxlUGF0aDogc3RyaW5nO1xuXHQvKiogU2NvcGUgc3RhcnQ6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0bG9jYXRpb246IHN0cmluZztcblx0LyoqIFRydWUgd2hlbiB0aGUgd2FsayBmb3VuZCBubyBjYWxsZXJzIOKAlCBhbiBhcHBsaWNhdGlvbiBlbnRyeSBwb2ludCAqL1xuXHRzdGFydGVyOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9uZSBlZGdlIG9mIHRoZSBjcmVhdGlvbiBncmFwaDogdGhlIGNhbGxlciBzY29wZSBpbnZva2VzIG9yIHJlZmVyZW5jZXMgdGhlXG4gKiBjYWxsZWUgc2NvcGUuIERpcmVjdGlvbiBpcyBpbnNpZGUtb3V0OiBjYWxsZXIg4oaSIGNhbGxlZSwgd2hlcmUgdGhlIGNhbGxlZSBpc1xuICogY2xvc2VyIHRvIHRoZSBjcmVhdGlvbiBzaXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0aW9uR3JhcGhFZGdlIHtcblx0LyoqIENhbGxpbmcgc2NvcGUncyBzY29wZUlkICovXG5cdGNhbGxlcjogc3RyaW5nO1xuXHQvKiogQ2FsbGVkIChob2xkZXIpIHNjb3BlJ3Mgc2NvcGVJZCAqL1xuXHRjYWxsZWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBpbnN0YW50aWF0aW9uIGFuY2hvcjogb25lIG1uZW1vbmljYSBjcmVhdGlvbiBzaXRlIHBpbm5lZCB0byBpdHMgaG9sZGVyXG4gKiBzY29wZS5cbiAqXG4gKiBgdmFyaWFibGVgL2B0ZXJtaW5hdGVkQXRgIGFyZSBhIGRvY3VtZW50ZWQgaGV1cmlzdGljOiB0aGUgdmFyaWFibGUgZGVjbGFyZWRcbiAqIGluIHRoZSBob2xkZXIgc2NvcGUgb24gdGhlIFNBTUUgbGluZSBhcyB0aGUgY3JlYXRpb24sIHdob3NlIHR5cGVQYXRoICh3aGVuXG4gKiBrbm93bikgbWF0Y2hlcyB0aGUgY3JlYXRlZCB0eXBlLiBgdGVybWluYXRlZEF0YCBpcyB0aGF0IHZhcmlhYmxlJ3MgZmlyc3RcbiAqIHJlYXNzaWdubWVudCBzaXRlIOKAlCB0aGUgZGVjaXNpb24gNiBmbG93LXRlcm1pbmF0aW9uIHBvaW50IHdoZXJlIHRoZSB3YWxrZXJcbiAqIHN0b3BzIGZvbGxvd2luZyB0aGUgYmluZGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGlvbkFuY2hvciB7XG5cdC8qKiBDcmVhdGlvbiBzaXRlOiBmaWxlLnRzOkxpbmU6Q29sICh0aGUgdXNhZ2VzLmpzb24gbG9jYXRpb24pICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBTY29wZSBob2xkaW5nIHRoZSBjcmVhdGlvbiAoc2NvcGVzLmpzb24gc2NvcGVJZCkgKi9cblx0aG9sZGVyU2NvcGVJZDogc3RyaW5nO1xuXHQvKiogTW5lbW9uaWNhIHR5cGUgZnVsbFBhdGggYmVpbmcgY3JlYXRlZCAqL1xuXHR0eXBlUGF0aDogc3RyaW5nO1xuXHQvKiogQ29uc3RydWN0b3IgZXhwcmVzc2lvbiB0ZXh0ICgnVGhpbmcnLCAndXNlci5BZG1pbkVudGl0eScsIGEgbG9va3VwIGFsaWFzIG5hbWUpICovXG5cdGNvbnN0cnVjdG9yVGV4dD86IHN0cmluZztcblx0LyoqXG5cdCAqIFRydWUgd2hlbiB0aGUgaG9sZGVyIGlzIHRoZSBtb2R1bGUgc2NvcGUg4oCUIGEgcm9vdGVkIGluc3RhbmNlIChwbGFuOlxuXHQgKiBsZWdpdGltYXRlIHJvb3Qgb3IgZGV2ZWxvcGVyIGVycm9yOyBsYWJlbGVkLCBub3QgcG9saWNlZClcblx0ICovXG5cdHJvb3RlZD86IGJvb2xlYW47XG5cdC8qKiBWYXJpYWJsZSB0aGUgZnJlc2ggaW5zdGFuY2Ugd2FzIGJvdW5kIHRvIChzYW1lLWxpbmUgaGV1cmlzdGljKSAqL1xuXHR2YXJpYWJsZT86IHN0cmluZztcblx0LyoqIEZpcnN0IHJlYXNzaWdubWVudCBzaXRlIG9mIHRoYXQgdmFyaWFibGU6IGZpbGUudHM6TGluZTpDb2wgKi9cblx0dGVybWluYXRlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBjcmVhdGlvbiBncmFwaDogZXZlcnl0aGluZyB0aGF0IGxlYWRzIHRvIG1uZW1vbmljYSBpbnN0YW5jZXMgYmVpbmdcbiAqIGNyZWF0ZWQuIEVtaXR0ZWQgYXMgdGhlIGBjcmVhdGlvbkdyYXBoYCBrZXkgb2YgaW5zdHJ1bWVudGF0aW9uLmpzb24gdjIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRpb25HcmFwaCB7XG5cdG5vZGVzOiBDcmVhdGlvbkdyYXBoTm9kZVtdO1xuXHRlZGdlczogQ3JlYXRpb25HcmFwaEVkZ2VbXTtcblx0YW5jaG9yczogQ3JlYXRpb25BbmNob3JbXTtcbn1cblxuLyoqXG4gKiBKU09OIG91dHB1dCBmb3IgaGllcmFyY2h5Lmpzb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIaWVyYXJjaHlKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRyb290czogSGllcmFyY2h5Tm9kZVtdO1xufVxuXG4vKipcbiAqIE9uZSBlbnRyeSBvZiB0aGUgY29sbGVjdGlvbnMuanNvbiBtYW5pZmVzdC4gVGhlIGRlZmF1bHQgY29sbGVjdGlvbiBpc1xuICogZW1pdHRlZCBmaXJzdCB3aGVuZXZlciBkZWZhdWx0LWNvbGxlY3Rpb24gdHlwZXMgZXhpc3Q6IGl0IGhhcyBubyBjYWxsXG4gKiBzaXRlLCBzbyBgaWRgIGFuZCBgbG9jYXRpb25gIHN0YXkgbnVsbCAodW5wcmVmaXhlZCBmdWxsUGF0aHMgQVJFIGl0c1xuICogaWRlbnRpdHkpLiBGb3JtYXQgMS4yOiB0aGUgcmVnaXN0cnkgaW50ZXJmYWNlIGlzIE5PVCBwYXJ0IG9mIHRoZVxuICogbWFuaWZlc3QgKGEgVHlwZVNjcmlwdC1vbmx5IGNvbmNlcm4g4oCUIHRoZSBpbi1tZW1vcnlcbiAqIGByZWdpc3RyeUludGVyZmFjZU5hbWVgIHRoYXQgdHlwZXMudHMvcmVnaXN0cnkudHMgYXJlIGdlbmVyYXRlZCBmcm9tXG4gKiBzdGF5cyBvbiB0aGUgVHlwZU5vZGUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbGxlY3Rpb25NYW5pZmVzdEVudHJ5IHtcblx0LyoqIE1pbnRlZCBpZCB1c2VkIGluIGBjb2xsZWN0aW9uSWQ6OmAgZnVsbFBhdGggcHJlZml4ZXM7IG51bGwgZm9yIHRoZSBkZWZhdWx0IGNvbGxlY3Rpb24gKi9cblx0aWQ6IHN0cmluZyB8IG51bGw7XG5cdC8qKiBWYXJpYWJsZSBob2xkaW5nIHRoZSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKSByZXN1bHQgKCdkZWZhdWx0VHlwZXMnIGZvciB0aGUgZGVmYXVsdCBjb2xsZWN0aW9uKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKSBjYWxsIHNpdGUgKGZpbGU6bGluZTpjb2wpOyBudWxsIGZvciB0aGUgZGVmYXVsdCBjb2xsZWN0aW9uICovXG5cdGxvY2F0aW9uOiBzdHJpbmcgfCBudWxsO1xuXHQvKipcblx0ICogU291cmNlIGxhbmd1YWdlIG9mIHRoaXMgY29sbGVjdGlvbidzIGNvZGViYXNlIChmb3JtYXQgMS4yOiByZXF1aXJlZCDigJRcblx0ICogdGhlcmUgaXMgbm8gZGVmYXVsdCBsYW5ndWFnZSkuIHRhY3RpY2EgaXMgdGhlIFR5cGVTY3JpcHQgZ2VuZXJhdG9yLFxuXHQgKiBzbyBldmVyeSBlbnRyeSBpdCB3cml0ZXMgaXMgXCJ0eXBlc2NyaXB0XCIuXG5cdCAqL1xuXHRsYW5ndWFnZTogJ3R5cGVzY3JpcHQnO1xufVxuXG4vKipcbiAqIEpTT04gb3V0cHV0IGZvciBjb2xsZWN0aW9ucy5qc29uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sbGVjdGlvbnNKc29uIHtcblx0dmVyc2lvbjogc3RyaW5nO1xuXHRnZW5lcmF0ZWRBdDogc3RyaW5nO1xuXHRjb2xsZWN0aW9uczogQ29sbGVjdGlvbk1hbmlmZXN0RW50cnlbXTtcbn1cblxuLyoqXG4gKiBTdHJ1Y3R1cmVkIGhpZXJhcmNoeSBub2RlIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpZXJhcmNoeU5vZGUge1xuXHQvKiogVHlwZSBuYW1lIChlLmcuLCBcIkFkbWluVHlwZVwiKSAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdC8qKiBGdWxsIGRvdHRlZCBwYXRoIChlLmcuLCBcIlVzZXJUeXBlLkFkbWluVHlwZVwiKSAqL1xuXHRmdWxsUGF0aDogc3RyaW5nO1xuXHQvKiogTG9jYXRpb24gaW4gc291cmNlOiBmaWxlLnRzOkxpbmU6Q29sICovXG5cdGxvY2F0aW9uOiBzdHJpbmc7XG5cdC8qKiBDaGlsZCB0eXBlcyBpbiB0aGUgVHJpZSAqL1xuXHRjaGlsZHJlbjogSGllcmFyY2h5Tm9kZVtdO1xufVxuXG4vKipcbiAqIEEgZmF0YWwgcmVzb2x1dGlvbiBmYWlsdXJlOiBzYW1lLW5hbWVzcGFjZSBkdXBsaWNhdGUgbW5lbW9uaWNhXG4gKiBkZWZpbml0aW9ucywgb3IgYSBtbmVtb25pY2EtZ3JhcGggdHlwZSByZWZlcmVuY2UgdGhhdCBzdGF5cyBhbWJpZ3VvdXNcbiAqIGFmdGVyIHBhdGgtYXdhcmUgcmVzb2x1dGlvbiAob3IgcmVzb2x2ZXMgdG8gbm90aGluZykuIFRoZSBDTEkgcHJpbnRzXG4gKiBldmVyeSBsb2NhdGlvbiBhbmQgd3JpdGVzIG5vIC50YWN0aWNhIG91dHB1dCBhdCBhbGwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x1dGlvbkVycm9yIHtcblx0LyoqIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSBmYWlsdXJlICovXG5cdG1lc3NhZ2U6IHN0cmluZztcblx0LyoqIGV2ZXJ5IGludm9sdmVkIHNvdXJjZSBsb2NhdGlvbiwgYGZpbGU6bGluZTpjb2x1bW5gICovXG5cdGxvY2F0aW9uczogc3RyaW5nW107XG59XG4iXX0=
|
package/lib/writer.d.ts
CHANGED
|
@@ -23,10 +23,6 @@ export declare class TypesWriter {
|
|
|
23
23
|
* Write types.ts file (exportable type aliases - default mode)
|
|
24
24
|
*/
|
|
25
25
|
writeTypesFile(generated: GeneratedTypes): string;
|
|
26
|
-
/**
|
|
27
|
-
* Write global augmentation file (index.d.ts - module augmentation mode)
|
|
28
|
-
*/
|
|
29
|
-
writeGlobalAugmentation(generated: GeneratedTypes): string;
|
|
30
26
|
/**
|
|
31
27
|
* Write to a custom filename
|
|
32
28
|
*/
|
package/lib/writer.js
CHANGED
|
@@ -100,15 +100,6 @@ class TypesWriter {
|
|
|
100
100
|
fs.writeFileSync(filePath, generated.content, 'utf-8');
|
|
101
101
|
return filePath;
|
|
102
102
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Write global augmentation file (index.d.ts - module augmentation mode)
|
|
105
|
-
*/
|
|
106
|
-
writeGlobalAugmentation(generated) {
|
|
107
|
-
this.ensureDirectory();
|
|
108
|
-
const filePath = path.join(this.outputDir, 'index.d.ts');
|
|
109
|
-
fs.writeFileSync(filePath, generated.content, 'utf-8');
|
|
110
|
-
return filePath;
|
|
111
|
-
}
|
|
112
103
|
/**
|
|
113
104
|
* Write to a custom filename
|
|
114
105
|
*/
|
|
@@ -381,4 +372,4 @@ class TypesWriter {
|
|
|
381
372
|
}
|
|
382
373
|
}
|
|
383
374
|
exports.TypesWriter = TypesWriter;
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUViLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFPN0I7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFJdkIsWUFBYSxTQUFTLEdBQUcsVUFBVSxFQUFFLFdBQW9CO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxLQUFLLFNBQVM7WUFDM0MsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFVBQVUsQ0FBSyxPQUFVO1FBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7WUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxD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U0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsb0JBQW9CLENBQUUsV0FBc0M7UUFDM0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRS9ELE1BQU0sSUFBSSxHQUFvQixJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzdDLE9BQU8sRUFBTyxLQUFLO1lBQ25CLFdBQVcsRUFBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUN0QyxXQUFXO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7Q0FDRDtBQXBZRCxrQ0FvWUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuXHRHZW5lcmF0ZWRUeXBlcywgRGVmaW5pdGlvbkluZm8sIFVzYWdlSW5mbywgRURTSW5mbywgRmxvd0luZm8sIEZsb3dKc29uLCBIaWVyYXJjaHlOb2RlLCBIaWVyYXJjaHlKc29uLFxuXHRJbnN0cnVtZW50YXRpb25Qb2ludCwgSW5zdHJ1bWVudGF0aW9uSnNvbiwgTW9kdWxlR3JhcGgsIE1vZHVsZXNKc29uLCBTY29wZUFuYWx5c2lzLCBTY29wZXNKc29uLCBDcmVhdGlvbkdyYXBoLFxuXHRDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeSwgQ29sbGVjdGlvbnNKc29uLCBDb250cm9sSnNvbiwgVHlwZUdyYXBoLCBEZWZpbml0aW9uRmllbGQsIERlZmluaXRpb25Bcmdcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogV3JpdGVzIGdlbmVyYXRlZCB0eXBlcyB0byBmaWxlIHN5c3RlbVxuICovXG5leHBvcnQgY2xhc3MgVHlwZXNXcml0ZXIge1xuXHRwcml2YXRlIG91dHB1dERpcjogc3RyaW5nO1xuXHRwcml2YXRlIHByb2plY3RSb290Pzogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yIChvdXRwdXREaXIgPSAnLnRhY3RpY2EnLCBwcm9qZWN0Um9vdD86IHN0cmluZykge1xuXHRcdHRoaXMub3V0cHV0RGlyID0gb3V0cHV0RGlyO1xuXHRcdHRoaXMucHJvamVjdFJvb3QgPSBwcm9qZWN0Um9vdCA9PT0gdW5kZWZpbmVkXG5cdFx0XHQ/IHVuZGVmaW5lZFxuXHRcdFx0OiBwYXRoLnJlc29sdmUocHJvamVjdFJvb3QpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJld3JpdGUgZXZlcnkgcHJvamVjdC1yb290ZWQgYWJzb2x1dGUgcGF0aCBpbiB0aGUgcGF5bG9hZCB0byBhXG5cdCAqIHByb2plY3QtcmVsYXRpdmUgb25lICh2YWx1ZXMgQU5EIG9iamVjdCBrZXlzKSwgc28gLnRhY3RpY2Egb3V0cHV0XG5cdCAqIHN0YXlzIHBvcnRhYmxlIGFjcm9zcyBtYWNoaW5lcyBhbmQgY2hlY2tvdXRzLiBQYXRocyBvdXRzaWRlIHRoZVxuXHQgKiBwcm9qZWN0IHJvb3Qga2VlcCB0aGVpciBhYnNvbHV0ZSBmb3JtIOKAlCB0aGV5IGdlbnVpbmVseSBhcmVcblx0ICogbWFjaGluZS1zcGVjaWZpYy4gQ29uc3VtZXJzIHJlc29sdmUgcmVsYXRpdmUgZW50cmllcyBhZ2FpbnN0IHRoZVxuXHQgKiBkaXJlY3RvcnkgdGhhdCBob2xkcyAudGFjdGljYS5cblx0ICovXG5cdHByaXZhdGUgcmVsYXRpdml6ZTxUPiAocGF5bG9hZDogVCk6IFQge1xuXHRcdGlmICh0aGlzLnByb2plY3RSb290ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBwYXlsb2FkO1xuXHRcdH1cblx0XHRjb25zdCBwcmVmaXggPSB0aGlzLnByb2plY3RSb290ICsgcGF0aC5zZXA7XG5cdFx0Y29uc3Qgd2FsayA9IChpbnB1dDogdW5rbm93bik6IHVua25vd24gPT4ge1xuXHRcdFx0aWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0aWYgKCFpbnB1dC5zdGFydHNXaXRoKHByZWZpeCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gaW5wdXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgcmVsYXRpdmUgPSBpbnB1dC5zbGljZShwcmVmaXgubGVuZ3RoKTtcblx0XHRcdFx0Y29uc3Qgd2Fsa2VkID0gcmVsYXRpdmUuc3BsaXQocGF0aC5zZXApLmpvaW4oJy8nKTtcblx0XHRcdFx0cmV0dXJuIHdhbGtlZDtcblx0XHRcdH1cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuXHRcdFx0XHRjb25zdCB3YWxrZWQgPSBpbnB1dC5tYXAod2Fsayk7XG5cdFx0XHRcdHJldHVybiB3YWxrZWQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5wdXQgIT09IG51bGwgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRjb25zdCB3YWxrZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cdFx0XHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXQpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgd2Fsa2VkS2V5ID0gd2FsayhrZXkpIGFzIHN0cmluZztcblx0XHRcdFx0XHR3YWxrZWRbIHdhbGtlZEtleSBdID0gd2Fsayh2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHdhbGtlZDtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpbnB1dDtcblx0XHR9O1xuXHRcdGNvbnN0IHJlc3VsdCA9IHdhbGsocGF5bG9hZCk7XG5cdFx0cmV0dXJuIHJlc3VsdCBhcyBUO1xuXHR9XG5cblx0LyoqXG5cdCAqIExlZ2FjeSB3cml0ZSBtZXRob2QgLSBkZWxlZ2F0ZXMgdG8gd3JpdGVUeXBlc0ZpbGVcblx0ICovXG5cdHdyaXRlIChnZW5lcmF0ZWQ6IEdlbmVyYXRlZFR5cGVzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy53cml0ZVR5cGVzRmlsZShnZW5lcmF0ZWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHR5cGVzLnRzIGZpbGUgKGV4cG9ydGFibGUgdHlwZSBhbGlhc2VzIC0gZGVmYXVsdCBtb2RlKVxuXHQgKi9cblx0d3JpdGVUeXBlc0ZpbGUgKGdlbmVyYXRlZDogR2VuZXJhdGVkVHlwZXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICd0eXBlcy50cycpO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGdlbmVyYXRlZC5jb250ZW50LCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZ2xvYmFsIGF1Z21lbnRhdGlvbiBmaWxlIChpbmRleC5kLnRzIC0gbW9kdWxlIGF1Z21lbnRhdGlvbiBtb2RlKVxuXHQgKi9cblx0d3JpdGVHbG9iYWxBdWdtZW50YXRpb24gKGdlbmVyYXRlZDogR2VuZXJhdGVkVHlwZXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdpbmRleC5kLnRzJyk7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZ2VuZXJhdGVkLmNvbnRlbnQsICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0byBhIGN1c3RvbSBmaWxlbmFtZVxuXHQgKi9cblx0d3JpdGVUbyAoZmlsZW5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCBmaWxlbmFtZSk7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudCwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0c1xuXHQgKi9cblx0cHJpdmF0ZSBlbnN1cmVEaXJlY3RvcnkgKCk6IHZvaWQge1xuXHRcdGlmICghZnMuZXhpc3RzU3luYyh0aGlzLm91dHB1dERpcikpIHtcblx0XHRcdGZzLm1rZGlyU3luYyh0aGlzLm91dHB1dERpciwgeyByZWN1cnNpdmUgOiB0cnVlIH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuXHQgKi9cblx0Y2xlYW4gKCk6IHZvaWQge1xuXHRcdGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3V0cHV0RGlyKSkge1xuXHRcdFx0Y29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLm91dHB1dERpcik7XG5cdFx0XHRmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcblx0XHRcdFx0ZnMudW5saW5rU3luYyhwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsIGZpbGUpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IG91dHB1dCBkaXJlY3Rvcnlcblx0ICovXG5cdGdldE91dHB1dERpciAoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5vdXRwdXREaXI7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZGVmaW5pdGlvbnMuanNvbiBmaWxlLiBXaGVuIHRoZSB0eXBlIGdyYXBoIGlzIHBhc3NlZCAodGhlIENMSVxuXHQgKiBhbHdheXMgcGFzc2VzIGl0KSwgZWFjaCBlbnRyeSBnYWlucyBgZmllbGRzYCAodGhlIHR5cGUncyBvd24gZmllbGRzIGluXG5cdCAqIGRlY2xhcmF0aW9uIG9yZGVyLCBmcm9tIFR5cGVOb2RlLnByb3BlcnRpZXMpIGFuZCBgYXJnc2AgKHRoZVxuXHQgKiBjb25zdHJ1Y3RvcidzIHBhcmFtZXRlcnMsIGZyb20gVHlwZU5vZGUuY29uc3RydWN0b3JQYXJhbXMpIOKAlCB0aGUgc2FtZVxuXHQgKiBzb3VyY2Ugb2YgdHJ1dGggdHlwZXMudHMgcmVuZGVycy4gQSByZXN0IHBhcmFtZXRlciBpcyBlbWl0dGVkIHdpdGhcblx0ICogYGtpbmQ6ICdyZXN0J2AgYW5kIG5vIGBvcHRpb25hbGAgKGxldGhlIGRlZmluaXRpb25zIGNvbnRyYWN0KTsgYGFyZ3NgXG5cdCAqIGlzIG9taXR0ZWQgb25seSB3aGVuIGNvbnN0cnVjdG9yUGFyYW1zIHdhcyBuZXZlciBleHRyYWN0ZWQuXG5cdCAqL1xuXHR3cml0ZURlZmluaXRpb25zRmlsZSAoZGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIERlZmluaXRpb25JbmZvPiwgZ3JhcGg/OiBUeXBlR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdkZWZpbml0aW9ucy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBkZWZpbml0aW9uc09iajogUmVjb3JkPHN0cmluZywgRGVmaW5pdGlvbkluZm8+ID0ge307XG5cdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBkZWZpbml0aW9ucykge1xuXHRcdFx0ZGVmaW5pdGlvbnNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKGdyYXBoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGRlZmluaXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5vZGUgPSBncmFwaC5maW5kVHlwZShrZXkpO1xuXHRcdFx0XHRpZiAoIW5vZGUpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBlbnJpY2ggYSBjb3B5IOKAlCB0aGUgYW5hbHl6ZXIncyBkZWZpbml0aW9ucyBtYXAgc3RheXMgdW50b3VjaGVkXG5cdFx0XHRcdGNvbnN0IGVudHJ5OiBEZWZpbml0aW9uSW5mbyA9IHsgLi4udmFsdWUgfTtcblx0XHRcdFx0Y29uc3QgZmllbGRzOiBEZWZpbml0aW9uRmllbGRbXSA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHByb3BJbmZvIG9mIG5vZGUucHJvcGVydGllcy52YWx1ZXMoKSkge1xuXHRcdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRcdG5hbWUgICAgIDogcHJvcEluZm8ubmFtZSxcblx0XHRcdFx0XHRcdHR5cGUgICAgIDogcHJvcEluZm8udHlwZSxcblx0XHRcdFx0XHRcdG9wdGlvbmFsIDogcHJvcEluZm8ub3B0aW9uYWxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbnRyeS5maWVsZHMgPSBmaWVsZHM7XG5cdFx0XHRcdGlmIChub2RlLmNvbnN0cnVjdG9yUGFyYW1zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zdCBhcmdzOiBEZWZpbml0aW9uQXJnW10gPSBub2RlLmNvbnN0cnVjdG9yUGFyYW1zLm1hcCgocGFyYW0pID0+IHtcblx0XHRcdFx0XHRcdC8vIGEgcmVzdCBwYXJhbWV0ZXIgbWF5IGFsd2F5cyByZWNlaXZlIG5vdGhpbmc6XG5cdFx0XHRcdFx0XHQvLyB0aGUgY29udHJhY3QgZ2l2ZXMgaXQgYGtpbmRgIGFuZCBubyBgb3B0aW9uYWxgXG5cdFx0XHRcdFx0XHRjb25zdCBhcmc6IERlZmluaXRpb25BcmcgPSBwYXJhbS5raW5kID09PSAncmVzdCdcblx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA6IHBhcmFtLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZSA6IHBhcmFtLnR5cGUsXG5cdFx0XHRcdFx0XHRcdFx0a2luZCA6ICdyZXN0J1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgICAgIDogcGFyYW0ubmFtZSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlICAgICA6IHBhcmFtLnR5cGUsXG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uYWwgOiBwYXJhbS5vcHRpb25hbFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFyZztcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbnRyeS5hcmdzID0gYXJncztcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWZpbml0aW9uc09ialsga2V5IF0gPSBlbnRyeTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBqc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGRlZmluaXRpb25zIDogZGVmaW5pdGlvbnNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHVzYWdlcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlVXNhZ2VzRmlsZSAodXNhZ2VzOiBNYXA8c3RyaW5nLCBVc2FnZUluZm9bXT4pOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICd1c2FnZXMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXAgdG8gcGxhaW4gb2JqZWN0XG5cdFx0Y29uc3QgdXNhZ2VzT2JqOiBSZWNvcmQ8c3RyaW5nLCBVc2FnZUluZm9bXT4gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIHVzYWdlcykge1xuXHRcdFx0dXNhZ2VzT2JqWyBrZXkgXSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGpzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4yJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0dXNhZ2VzICAgICAgOiB1c2FnZXNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGVkcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlRURTRmlsZSAoZWRzOiBNYXA8c3RyaW5nLCBFRFNJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZWRzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IGVkc09iajogUmVjb3JkPHN0cmluZywgRURTSW5mb1tdPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZWRzKSB7XG5cdFx0XHRlZHNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QganNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjInLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRlZHMgICAgICAgICA6IGVkc09iaixcblx0XHR9KTtcblxuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgaW5zdHJ1bWVudGF0aW9uLmpzb24gZmlsZSAodjI6IGFkZHMgdGhlIGNyZWF0aW9uR3JhcGgga2V5IHdoZW5cblx0ICogdGhlIGNhbGxlciBwYXNzZXMgY3JlYXRpb24tZ3JhcGggZGF0YSDigJQgdGhlIENMSSBhbHdheXMgZG9lcylcblx0ICovXG5cdHdyaXRlSW5zdHJ1bWVudGF0aW9uRmlsZSAocG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdLCBjcmVhdGlvbkdyYXBoPzogQ3JlYXRpb25HcmFwaCk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2luc3RydW1lbnRhdGlvbi5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBJbnN0cnVtZW50YXRpb25Kc29uID0ge1xuXHRcdFx0dmVyc2lvbiAgICAgOiAyLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRwb2ludHMsXG5cdFx0fTtcblx0XHRpZiAoY3JlYXRpb25HcmFwaCkge1xuXHRcdFx0anNvbi5jcmVhdGlvbkdyYXBoID0gY3JlYXRpb25HcmFwaDtcblx0XHR9XG5cblx0XHRjb25zdCByZWxhdGl2aXplZCA9IHRoaXMucmVsYXRpdml6ZShqc29uKTtcblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZWxhdGl2aXplZCwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBjb250cm9sLmpzb24gZmlsZSAobGV0aGUgY29udHJhY3QsIGZvcm1hdCAxLjIpOiBgY2FsbGVyc2AgaXMgdGhlXG5cdCAqIGNyZWF0aW9uIGdyYXBoIGluc3RydW1lbnRhdGlvbi5qc29uIHYyIGNhcnJpZXMsIGBwb2ludHNgIHRoZSBzYW1lXG5cdCAqIHBsdWdpbi1zdXBwbGllZCBpbnN0cnVtZW50YXRpb24gcG9pbnRzLiBpbnN0cnVtZW50YXRpb24uanNvbiBrZWVwcyBpdHNcblx0ICogc2hhcGUgZm9yIG1uZW1vZ3JhcGhpY2E7IGNvbnRyb2wuanNvbiBpcyB0aGUgY3Jvc3MtbGFuZ3VhZ2UgY29udHJhY3Rcblx0ICogcmVuZGVyaW5nIG9mIHRoZSBzYW1lIGRhdGEuXG5cdCAqL1xuXHR3cml0ZUNvbnRyb2xGaWxlIChwb2ludHM6IEluc3RydW1lbnRhdGlvblBvaW50W10sIGNhbGxlcnM6IENyZWF0aW9uR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdjb250cm9sLmpzb24nKTtcblxuXHRcdGNvbnN0IGpzb246IENvbnRyb2xKc29uID0ge1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4yJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0Y2FsbGVycyxcblx0XHRcdHBvaW50cyxcblx0XHR9O1xuXG5cdFx0Y29uc3QgcmVsYXRpdml6ZWQgPSB0aGlzLnJlbGF0aXZpemUoanNvbik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocmVsYXRpdml6ZWQsIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZmxvdy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlRmxvd0ZpbGUgKGZsb3c6IE1hcDxzdHJpbmcsIEZsb3dJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZmxvdy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBmbG93T2JqOiBSZWNvcmQ8c3RyaW5nLCBGbG93SW5mb1tdPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZmxvdykge1xuXHRcdFx0Zmxvd09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uOiBGbG93SnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjInLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRmbG93ICAgICAgICA6IGZsb3dPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIG1vZHVsZXMuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZU1vZHVsZXNGaWxlIChncmFwaDogTW9kdWxlR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdtb2R1bGVzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IG1vZHVsZXNPYmo6IE1vZHVsZXNKc29uWyAnbW9kdWxlcycgXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZ3JhcGgubW9kdWxlcykge1xuXHRcdFx0bW9kdWxlc09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uOiBNb2R1bGVzSnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjAnLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRtb2R1bGVzICAgICA6IG1vZHVsZXNPYmosXG5cdFx0XHRlZGdlcyAgICAgICA6IGdyYXBoLmVkZ2VzLFxuXHRcdFx0Y3ljbGVzICAgICAgOiBncmFwaC5jeWNsZXMsXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHNjb3Blcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlU2NvcGVzRmlsZSAoYW5hbHlzaXM6IFNjb3BlQW5hbHlzaXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdzY29wZXMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXBzIHRvIHBsYWluIHNoYXBlc1xuXHRcdGNvbnN0IHNjb3Blc09iajogU2NvcGVzSnNvblsgJ3Njb3BlcycgXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgYW5hbHlzaXMuc2NvcGVzKSB7XG5cdFx0XHRzY29wZXNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXHRcdGNvbnN0IHZhcmlhYmxlcyA9IEFycmF5LmZyb20oYW5hbHlzaXMudmFyaWFibGVzLnZhbHVlcygpKTtcblxuXHRcdGNvbnN0IGpzb246IFNjb3Blc0pzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4wJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0c2NvcGVzICAgICAgOiBzY29wZXNPYmosXG5cdFx0XHR2YXJpYWJsZXMsXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGhpZXJhcmNoeS5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlSGllcmFyY2h5RmlsZSAocm9vdHM6IEhpZXJhcmNoeU5vZGVbXSk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2hpZXJhcmNoeS5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBIaWVyYXJjaHlKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdHJvb3RzLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0aGUgY29sbGVjdGlvbiBtYW5pZmVzdDogb25lIGVudHJ5IHBlciBjb2xsZWN0aW9uIChkZWZhdWx0XG5cdCAqIGZpcnN0IHdoZW4gZGVmYXVsdC1jb2xsZWN0aW9uIHR5cGVzIGV4aXN0KSwgaWRzICsgZGlzcGxheSBuYW1lcyArXG5cdCAqIGNhbGwgc2l0ZXMgKyBsYW5ndWFnZS4gVGhlIGBjb2xsZWN0aW9uSWQ6OmAgcHJlZml4IG9uIGdyYXBoLW91dHB1dFxuXHQgKiBmdWxsUGF0aHMgam9pbnMgdG8gdGhlIGVudHJ5IGBpZGAuIEZvcm1hdCAxLjI6IHRoZSByZWdpc3RyeVxuXHQgKiBpbnRlcmZhY2UgaXMgbm90IHBhcnQgb2YgdGhlIG1hbmlmZXN0IOKAlCB0aGUgcmVnaXN0cnktcHJlZml4ZWRcblx0ICogYWxpYXNlcyBpbiB0eXBlcy50cyAvIHJlZ2lzdHJ5LnRzIGNvbWUgZnJvbSB0aGUgaW4tbWVtb3J5XG5cdCAqIFR5cGVOb2RlLnJlZ2lzdHJ5SW50ZXJmYWNlTmFtZSBpbnN0ZWFkLlxuXHQgKi9cblx0d3JpdGVDb2xsZWN0aW9uc0ZpbGUgKGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeVtdKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnY29sbGVjdGlvbnMuanNvbicpO1xuXG5cdFx0Y29uc3QganNvbjogQ29sbGVjdGlvbnNKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGNvbGxlY3Rpb25zLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxufVxuIl19
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUViLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFPN0I7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFJdkIsWUFBYSxTQUFTLEdBQUcsVUFBVSxFQUFFLFdBQW9CO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxLQUFLLFNBQVM7WUFDM0MsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFVBQVUsQ0FBSyxPQUFVO1FBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxPQUFPLE9BQU8sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7WUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxLQUFLLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxD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L0QsTUFBTSxJQUFJLEdBQW9CLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDN0MsT0FBTyxFQUFPLEtBQUs7WUFDbkIsV0FBVyxFQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ3RDLFdBQVc7U0FDWCxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkUsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztDQUNEO0FBMVhELGtDQTBYQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG5cdEdlbmVyYXRlZFR5cGVzLCBEZWZpbml0aW9uSW5mbywgVXNhZ2VJbmZvLCBFRFNJbmZvLCBGbG93SW5mbywgRmxvd0pzb24sIEhpZXJhcmNoeU5vZGUsIEhpZXJhcmNoeUpzb24sXG5cdEluc3RydW1lbnRhdGlvblBvaW50LCBJbnN0cnVtZW50YXRpb25Kc29uLCBNb2R1bGVHcmFwaCwgTW9kdWxlc0pzb24sIFNjb3BlQW5hbHlzaXMsIFNjb3Blc0pzb24sIENyZWF0aW9uR3JhcGgsXG5cdENvbGxlY3Rpb25NYW5pZmVzdEVudHJ5LCBDb2xsZWN0aW9uc0pzb24sIENvbnRyb2xKc29uLCBUeXBlR3JhcGgsIERlZmluaXRpb25GaWVsZCwgRGVmaW5pdGlvbkFyZ1xufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBXcml0ZXMgZ2VuZXJhdGVkIHR5cGVzIHRvIGZpbGUgc3lzdGVtXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlc1dyaXRlciB7XG5cdHByaXZhdGUgb3V0cHV0RGlyOiBzdHJpbmc7XG5cdHByaXZhdGUgcHJvamVjdFJvb3Q/OiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IgKG91dHB1dERpciA9ICcudGFjdGljYScsIHByb2plY3RSb290Pzogc3RyaW5nKSB7XG5cdFx0dGhpcy5vdXRwdXREaXIgPSBvdXRwdXREaXI7XG5cdFx0dGhpcy5wcm9qZWN0Um9vdCA9IHByb2plY3RSb290ID09PSB1bmRlZmluZWRcblx0XHRcdD8gdW5kZWZpbmVkXG5cdFx0XHQ6IHBhdGgucmVzb2x2ZShwcm9qZWN0Um9vdCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV3cml0ZSBldmVyeSBwcm9qZWN0LXJvb3RlZCBhYnNvbHV0ZSBwYXRoIGluIHRoZSBwYXlsb2FkIHRvIGFcblx0ICogcHJvamVjdC1yZWxhdGl2ZSBvbmUgKHZhbHVlcyBBTkQgb2JqZWN0IGtleXMpLCBzbyAudGFjdGljYSBvdXRwdXRcblx0ICogc3RheXMgcG9ydGFibGUgYWNyb3NzIG1hY2hpbmVzIGFuZCBjaGVja291dHMuIFBhdGhzIG91dHNpZGUgdGhlXG5cdCAqIHByb2plY3Qgcm9vdCBrZWVwIHRoZWlyIGFic29sdXRlIGZvcm0g4oCUIHRoZXkgZ2VudWluZWx5IGFyZVxuXHQgKiBtYWNoaW5lLXNwZWNpZmljLiBDb25zdW1lcnMgcmVzb2x2ZSByZWxhdGl2ZSBlbnRyaWVzIGFnYWluc3QgdGhlXG5cdCAqIGRpcmVjdG9yeSB0aGF0IGhvbGRzIC50YWN0aWNhLlxuXHQgKi9cblx0cHJpdmF0ZSByZWxhdGl2aXplPFQ+IChwYXlsb2FkOiBUKTogVCB7XG5cdFx0aWYgKHRoaXMucHJvamVjdFJvb3QgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIHBheWxvYWQ7XG5cdFx0fVxuXHRcdGNvbnN0IHByZWZpeCA9IHRoaXMucHJvamVjdFJvb3QgKyBwYXRoLnNlcDtcblx0XHRjb25zdCB3YWxrID0gKGlucHV0OiB1bmtub3duKTogdW5rbm93biA9PiB7XG5cdFx0XHRpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRpZiAoIWlucHV0LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuXHRcdFx0XHRcdHJldHVybiBpbnB1dDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCByZWxhdGl2ZSA9IGlucHV0LnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuXHRcdFx0XHRjb25zdCB3YWxrZWQgPSByZWxhdGl2ZS5zcGxpdChwYXRoLnNlcCkuam9pbignLycpO1xuXHRcdFx0XHRyZXR1cm4gd2Fsa2VkO1xuXHRcdFx0fVxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG5cdFx0XHRcdGNvbnN0IHdhbGtlZCA9IGlucHV0Lm1hcCh3YWxrKTtcblx0XHRcdFx0cmV0dXJuIHdhbGtlZDtcblx0XHRcdH1cblx0XHRcdGlmIChpbnB1dCAhPT0gbnVsbCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGNvbnN0IHdhbGtlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblx0XHRcdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyhpbnB1dCkpIHtcblx0XHRcdFx0XHRjb25zdCB3YWxrZWRLZXkgPSB3YWxrKGtleSkgYXMgc3RyaW5nO1xuXHRcdFx0XHRcdHdhbGtlZFsgd2Fsa2VkS2V5IF0gPSB3YWxrKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gd2Fsa2VkO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGlucHV0O1xuXHRcdH07XG5cdFx0Y29uc3QgcmVzdWx0ID0gd2FsayhwYXlsb2FkKTtcblx0XHRyZXR1cm4gcmVzdWx0IGFzIFQ7XG5cdH1cblxuXHQvKipcblx0ICogTGVnYWN5IHdyaXRlIG1ldGhvZCAtIGRlbGVnYXRlcyB0byB3cml0ZVR5cGVzRmlsZVxuXHQgKi9cblx0d3JpdGUgKGdlbmVyYXRlZDogR2VuZXJhdGVkVHlwZXMpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLndyaXRlVHlwZXNGaWxlKGdlbmVyYXRlZCk7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgdHlwZXMudHMgZmlsZSAoZXhwb3J0YWJsZSB0eXBlIGFsaWFzZXMgLSBkZWZhdWx0IG1vZGUpXG5cdCAqL1xuXHR3cml0ZVR5cGVzRmlsZSAoZ2VuZXJhdGVkOiBHZW5lcmF0ZWRUeXBlcyk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ3R5cGVzLnRzJyk7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZ2VuZXJhdGVkLmNvbnRlbnQsICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0byBhIGN1c3RvbSBmaWxlbmFtZVxuXHQgKi9cblx0d3JpdGVUbyAoZmlsZW5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCBmaWxlbmFtZSk7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudCwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZSBvdXRwdXQgZGlyZWN0b3J5IGV4aXN0c1xuXHQgKi9cblx0cHJpdmF0ZSBlbnN1cmVEaXJlY3RvcnkgKCk6IHZvaWQge1xuXHRcdGlmICghZnMuZXhpc3RzU3luYyh0aGlzLm91dHB1dERpcikpIHtcblx0XHRcdGZzLm1rZGlyU3luYyh0aGlzLm91dHB1dERpciwgeyByZWN1cnNpdmUgOiB0cnVlIH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhbiB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuXHQgKi9cblx0Y2xlYW4gKCk6IHZvaWQge1xuXHRcdGlmIChmcy5leGlzdHNTeW5jKHRoaXMub3V0cHV0RGlyKSkge1xuXHRcdFx0Y29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLm91dHB1dERpcik7XG5cdFx0XHRmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcblx0XHRcdFx0ZnMudW5saW5rU3luYyhwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsIGZpbGUpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IG91dHB1dCBkaXJlY3Rvcnlcblx0ICovXG5cdGdldE91dHB1dERpciAoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5vdXRwdXREaXI7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZGVmaW5pdGlvbnMuanNvbiBmaWxlLiBXaGVuIHRoZSB0eXBlIGdyYXBoIGlzIHBhc3NlZCAodGhlIENMSVxuXHQgKiBhbHdheXMgcGFzc2VzIGl0KSwgZWFjaCBlbnRyeSBnYWlucyBgZmllbGRzYCAodGhlIHR5cGUncyBvd24gZmllbGRzIGluXG5cdCAqIGRlY2xhcmF0aW9uIG9yZGVyLCBmcm9tIFR5cGVOb2RlLnByb3BlcnRpZXMpIGFuZCBgYXJnc2AgKHRoZVxuXHQgKiBjb25zdHJ1Y3RvcidzIHBhcmFtZXRlcnMsIGZyb20gVHlwZU5vZGUuY29uc3RydWN0b3JQYXJhbXMpIOKAlCB0aGUgc2FtZVxuXHQgKiBzb3VyY2Ugb2YgdHJ1dGggdHlwZXMudHMgcmVuZGVycy4gQSByZXN0IHBhcmFtZXRlciBpcyBlbWl0dGVkIHdpdGhcblx0ICogYGtpbmQ6ICdyZXN0J2AgYW5kIG5vIGBvcHRpb25hbGAgKGxldGhlIGRlZmluaXRpb25zIGNvbnRyYWN0KTsgYGFyZ3NgXG5cdCAqIGlzIG9taXR0ZWQgb25seSB3aGVuIGNvbnN0cnVjdG9yUGFyYW1zIHdhcyBuZXZlciBleHRyYWN0ZWQuXG5cdCAqL1xuXHR3cml0ZURlZmluaXRpb25zRmlsZSAoZGVmaW5pdGlvbnM6IE1hcDxzdHJpbmcsIERlZmluaXRpb25JbmZvPiwgZ3JhcGg/OiBUeXBlR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdkZWZpbml0aW9ucy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBkZWZpbml0aW9uc09iajogUmVjb3JkPHN0cmluZywgRGVmaW5pdGlvbkluZm8+ID0ge307XG5cdFx0Zm9yIChjb25zdCBbIGtleSwgdmFsdWUgXSBvZiBkZWZpbml0aW9ucykge1xuXHRcdFx0ZGVmaW5pdGlvbnNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKGdyYXBoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIGRlZmluaXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IG5vZGUgPSBncmFwaC5maW5kVHlwZShrZXkpO1xuXHRcdFx0XHRpZiAoIW5vZGUpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBlbnJpY2ggYSBjb3B5IOKAlCB0aGUgYW5hbHl6ZXIncyBkZWZpbml0aW9ucyBtYXAgc3RheXMgdW50b3VjaGVkXG5cdFx0XHRcdGNvbnN0IGVudHJ5OiBEZWZpbml0aW9uSW5mbyA9IHsgLi4udmFsdWUgfTtcblx0XHRcdFx0Y29uc3QgZmllbGRzOiBEZWZpbml0aW9uRmllbGRbXSA9IFtdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHByb3BJbmZvIG9mIG5vZGUucHJvcGVydGllcy52YWx1ZXMoKSkge1xuXHRcdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRcdG5hbWUgICAgIDogcHJvcEluZm8ubmFtZSxcblx0XHRcdFx0XHRcdHR5cGUgICAgIDogcHJvcEluZm8udHlwZSxcblx0XHRcdFx0XHRcdG9wdGlvbmFsIDogcHJvcEluZm8ub3B0aW9uYWxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbnRyeS5maWVsZHMgPSBmaWVsZHM7XG5cdFx0XHRcdGlmIChub2RlLmNvbnN0cnVjdG9yUGFyYW1zICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zdCBhcmdzOiBEZWZpbml0aW9uQXJnW10gPSBub2RlLmNvbnN0cnVjdG9yUGFyYW1zLm1hcCgocGFyYW0pID0+IHtcblx0XHRcdFx0XHRcdC8vIGEgcmVzdCBwYXJhbWV0ZXIgbWF5IGFsd2F5cyByZWNlaXZlIG5vdGhpbmc6XG5cdFx0XHRcdFx0XHQvLyB0aGUgY29udHJhY3QgZ2l2ZXMgaXQgYGtpbmRgIGFuZCBubyBgb3B0aW9uYWxgXG5cdFx0XHRcdFx0XHRjb25zdCBhcmc6IERlZmluaXRpb25BcmcgPSBwYXJhbS5raW5kID09PSAncmVzdCdcblx0XHRcdFx0XHRcdFx0PyB7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZSA6IHBhcmFtLm5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dHlwZSA6IHBhcmFtLnR5cGUsXG5cdFx0XHRcdFx0XHRcdFx0a2luZCA6ICdyZXN0J1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgICAgIDogcGFyYW0ubmFtZSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlICAgICA6IHBhcmFtLnR5cGUsXG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uYWwgOiBwYXJhbS5vcHRpb25hbFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0cmV0dXJuIGFyZztcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbnRyeS5hcmdzID0gYXJncztcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWZpbml0aW9uc09ialsga2V5IF0gPSBlbnRyeTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBqc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGRlZmluaXRpb25zIDogZGVmaW5pdGlvbnNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHVzYWdlcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlVXNhZ2VzRmlsZSAodXNhZ2VzOiBNYXA8c3RyaW5nLCBVc2FnZUluZm9bXT4pOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICd1c2FnZXMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXAgdG8gcGxhaW4gb2JqZWN0XG5cdFx0Y29uc3QgdXNhZ2VzT2JqOiBSZWNvcmQ8c3RyaW5nLCBVc2FnZUluZm9bXT4gPSB7fTtcblx0XHRmb3IgKGNvbnN0IFsga2V5LCB2YWx1ZSBdIG9mIHVzYWdlcykge1xuXHRcdFx0dXNhZ2VzT2JqWyBrZXkgXSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGpzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4yJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0dXNhZ2VzICAgICAgOiB1c2FnZXNPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGVkcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlRURTRmlsZSAoZWRzOiBNYXA8c3RyaW5nLCBFRFNJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZWRzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IGVkc09iajogUmVjb3JkPHN0cmluZywgRURTSW5mb1tdPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZWRzKSB7XG5cdFx0XHRlZHNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QganNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjInLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRlZHMgICAgICAgICA6IGVkc09iaixcblx0XHR9KTtcblxuXHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgaW5zdHJ1bWVudGF0aW9uLmpzb24gZmlsZSAodjI6IGFkZHMgdGhlIGNyZWF0aW9uR3JhcGgga2V5IHdoZW5cblx0ICogdGhlIGNhbGxlciBwYXNzZXMgY3JlYXRpb24tZ3JhcGggZGF0YSDigJQgdGhlIENMSSBhbHdheXMgZG9lcylcblx0ICovXG5cdHdyaXRlSW5zdHJ1bWVudGF0aW9uRmlsZSAocG9pbnRzOiBJbnN0cnVtZW50YXRpb25Qb2ludFtdLCBjcmVhdGlvbkdyYXBoPzogQ3JlYXRpb25HcmFwaCk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2luc3RydW1lbnRhdGlvbi5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBJbnN0cnVtZW50YXRpb25Kc29uID0ge1xuXHRcdFx0dmVyc2lvbiAgICAgOiAyLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRwb2ludHMsXG5cdFx0fTtcblx0XHRpZiAoY3JlYXRpb25HcmFwaCkge1xuXHRcdFx0anNvbi5jcmVhdGlvbkdyYXBoID0gY3JlYXRpb25HcmFwaDtcblx0XHR9XG5cblx0XHRjb25zdCByZWxhdGl2aXplZCA9IHRoaXMucmVsYXRpdml6ZShqc29uKTtcblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZWxhdGl2aXplZCwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSBjb250cm9sLmpzb24gZmlsZSAobGV0aGUgY29udHJhY3QsIGZvcm1hdCAxLjIpOiBgY2FsbGVyc2AgaXMgdGhlXG5cdCAqIGNyZWF0aW9uIGdyYXBoIGluc3RydW1lbnRhdGlvbi5qc29uIHYyIGNhcnJpZXMsIGBwb2ludHNgIHRoZSBzYW1lXG5cdCAqIHBsdWdpbi1zdXBwbGllZCBpbnN0cnVtZW50YXRpb24gcG9pbnRzLiBpbnN0cnVtZW50YXRpb24uanNvbiBrZWVwcyBpdHNcblx0ICogc2hhcGUgZm9yIG1uZW1vZ3JhcGhpY2E7IGNvbnRyb2wuanNvbiBpcyB0aGUgY3Jvc3MtbGFuZ3VhZ2UgY29udHJhY3Rcblx0ICogcmVuZGVyaW5nIG9mIHRoZSBzYW1lIGRhdGEuXG5cdCAqL1xuXHR3cml0ZUNvbnRyb2xGaWxlIChwb2ludHM6IEluc3RydW1lbnRhdGlvblBvaW50W10sIGNhbGxlcnM6IENyZWF0aW9uR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdjb250cm9sLmpzb24nKTtcblxuXHRcdGNvbnN0IGpzb246IENvbnRyb2xKc29uID0ge1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4yJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0Y2FsbGVycyxcblx0XHRcdHBvaW50cyxcblx0XHR9O1xuXG5cdFx0Y29uc3QgcmVsYXRpdml6ZWQgPSB0aGlzLnJlbGF0aXZpemUoanNvbik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkocmVsYXRpdml6ZWQsIG51bGwsIDIpLCAndXRmLTgnKTtcblx0XHRyZXR1cm4gZmlsZVBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogV3JpdGUgZmxvdy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlRmxvd0ZpbGUgKGZsb3c6IE1hcDxzdHJpbmcsIEZsb3dJbmZvW10+KTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnZmxvdy5qc29uJyk7XG5cblx0XHQvLyBDb252ZXJ0IE1hcCB0byBwbGFpbiBvYmplY3Rcblx0XHRjb25zdCBmbG93T2JqOiBSZWNvcmQ8c3RyaW5nLCBGbG93SW5mb1tdPiA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZmxvdykge1xuXHRcdFx0Zmxvd09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uOiBGbG93SnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjInLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRmbG93ICAgICAgICA6IGZsb3dPYmosXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIG1vZHVsZXMuanNvbiBmaWxlXG5cdCAqL1xuXHR3cml0ZU1vZHVsZXNGaWxlIChncmFwaDogTW9kdWxlR3JhcGgpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdtb2R1bGVzLmpzb24nKTtcblxuXHRcdC8vIENvbnZlcnQgTWFwIHRvIHBsYWluIG9iamVjdFxuXHRcdGNvbnN0IG1vZHVsZXNPYmo6IE1vZHVsZXNKc29uWyAnbW9kdWxlcycgXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgZ3JhcGgubW9kdWxlcykge1xuXHRcdFx0bW9kdWxlc09ialsga2V5IF0gPSB2YWx1ZTtcblx0XHR9XG5cblx0XHRjb25zdCBqc29uOiBNb2R1bGVzSnNvbiA9IHRoaXMucmVsYXRpdml6ZSh7XG5cdFx0XHR2ZXJzaW9uICAgICA6ICcxLjAnLFxuXHRcdFx0Z2VuZXJhdGVkQXQgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG5cdFx0XHRtb2R1bGVzICAgICA6IG1vZHVsZXNPYmosXG5cdFx0XHRlZGdlcyAgICAgICA6IGdyYXBoLmVkZ2VzLFxuXHRcdFx0Y3ljbGVzICAgICAgOiBncmFwaC5jeWNsZXMsXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIHNjb3Blcy5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlU2NvcGVzRmlsZSAoYW5hbHlzaXM6IFNjb3BlQW5hbHlzaXMpOiBzdHJpbmcge1xuXHRcdHRoaXMuZW5zdXJlRGlyZWN0b3J5KCk7XG5cdFx0Y29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5vdXRwdXREaXIsICdzY29wZXMuanNvbicpO1xuXG5cdFx0Ly8gQ29udmVydCBNYXBzIHRvIHBsYWluIHNoYXBlc1xuXHRcdGNvbnN0IHNjb3Blc09iajogU2NvcGVzSnNvblsgJ3Njb3BlcycgXSA9IHt9O1xuXHRcdGZvciAoY29uc3QgWyBrZXksIHZhbHVlIF0gb2YgYW5hbHlzaXMuc2NvcGVzKSB7XG5cdFx0XHRzY29wZXNPYmpbIGtleSBdID0gdmFsdWU7XG5cdFx0fVxuXHRcdGNvbnN0IHZhcmlhYmxlcyA9IEFycmF5LmZyb20oYW5hbHlzaXMudmFyaWFibGVzLnZhbHVlcygpKTtcblxuXHRcdGNvbnN0IGpzb246IFNjb3Blc0pzb24gPSB0aGlzLnJlbGF0aXZpemUoe1xuXHRcdFx0dmVyc2lvbiAgICAgOiAnMS4wJyxcblx0XHRcdGdlbmVyYXRlZEF0IDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuXHRcdFx0c2NvcGVzICAgICAgOiBzY29wZXNPYmosXG5cdFx0XHR2YXJpYWJsZXMsXG5cdFx0fSk7XG5cblx0XHRmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSwgJ3V0Zi04Jyk7XG5cdFx0cmV0dXJuIGZpbGVQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIFdyaXRlIGhpZXJhcmNoeS5qc29uIGZpbGVcblx0ICovXG5cdHdyaXRlSGllcmFyY2h5RmlsZSAocm9vdHM6IEhpZXJhcmNoeU5vZGVbXSk6IHN0cmluZyB7XG5cdFx0dGhpcy5lbnN1cmVEaXJlY3RvcnkoKTtcblx0XHRjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLm91dHB1dERpciwgJ2hpZXJhcmNoeS5qc29uJyk7XG5cblx0XHRjb25zdCBqc29uOiBIaWVyYXJjaHlKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdHJvb3RzLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBXcml0ZSB0aGUgY29sbGVjdGlvbiBtYW5pZmVzdDogb25lIGVudHJ5IHBlciBjb2xsZWN0aW9uIChkZWZhdWx0XG5cdCAqIGZpcnN0IHdoZW4gZGVmYXVsdC1jb2xsZWN0aW9uIHR5cGVzIGV4aXN0KSwgaWRzICsgZGlzcGxheSBuYW1lcyArXG5cdCAqIGNhbGwgc2l0ZXMgKyBsYW5ndWFnZS4gVGhlIGBjb2xsZWN0aW9uSWQ6OmAgcHJlZml4IG9uIGdyYXBoLW91dHB1dFxuXHQgKiBmdWxsUGF0aHMgam9pbnMgdG8gdGhlIGVudHJ5IGBpZGAuIEZvcm1hdCAxLjI6IHRoZSByZWdpc3RyeVxuXHQgKiBpbnRlcmZhY2UgaXMgbm90IHBhcnQgb2YgdGhlIG1hbmlmZXN0IOKAlCB0aGUgcmVnaXN0cnktcHJlZml4ZWRcblx0ICogYWxpYXNlcyBpbiB0eXBlcy50cyAvIHJlZ2lzdHJ5LnRzIGNvbWUgZnJvbSB0aGUgaW4tbWVtb3J5XG5cdCAqIFR5cGVOb2RlLnJlZ2lzdHJ5SW50ZXJmYWNlTmFtZSBpbnN0ZWFkLlxuXHQgKi9cblx0d3JpdGVDb2xsZWN0aW9uc0ZpbGUgKGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uTWFuaWZlc3RFbnRyeVtdKTogc3RyaW5nIHtcblx0XHR0aGlzLmVuc3VyZURpcmVjdG9yeSgpO1xuXHRcdGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMub3V0cHV0RGlyLCAnY29sbGVjdGlvbnMuanNvbicpO1xuXG5cdFx0Y29uc3QganNvbjogQ29sbGVjdGlvbnNKc29uID0gdGhpcy5yZWxhdGl2aXplKHtcblx0XHRcdHZlcnNpb24gICAgIDogJzEuMicsXG5cdFx0XHRnZW5lcmF0ZWRBdCA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcblx0XHRcdGNvbGxlY3Rpb25zLFxuXHRcdH0pO1xuXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoanNvbiwgbnVsbCwgMiksICd1dGYtOCcpO1xuXHRcdHJldHVybiBmaWxlUGF0aDtcblx0fVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnemonica/tactica",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Type definition generator for Mnemonica: statically analyzes define() calls and emits .tactica types, registry, and metadata",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
"test": "TS_NODE_PROJECT=./tsconfig.test.json mocha test/**/*.test.ts",
|
|
23
23
|
"test:coverage": "npx nyc npm test",
|
|
24
24
|
"test:coverage:html": "npx nyc --reporter=html npm test",
|
|
25
|
+
"test:ts:compat": "node ./lib/cli.js --project ./test/fixtures/builder-compat/tsconfig.json --output ./test/fixtures/builder-compat/.tactica && tsc -p ./test/fixtures/builder-compat/tsconfig.json",
|
|
26
|
+
"test:ts:7": "node ./lib/cli.js --project ./test/fixtures/builder-compat/tsconfig.json --output ./test/fixtures/builder-compat/.tactica && npx -y -p typescript@7.0.2 tsc -p ./test/fixtures/builder-compat/tsconfig.json",
|
|
25
27
|
"lint": "npx eslint --fix ./src ./test",
|
|
26
28
|
"lint:check": "npx eslint ./src ./test",
|
|
27
29
|
"use:public": "rm -rf node_modules package-lock.json && npm install mnemonica@latest typeomatica@latest --save && npm install mnemonica@latest --save-dev && npm install mnemonica@latest --save-peer && echo 'Switched to PUBLIC npm dependencies (latest)'",
|
|
@@ -45,8 +47,22 @@
|
|
|
45
47
|
},
|
|
46
48
|
"homepage": "https://github.com/mythographica/tactica#readme",
|
|
47
49
|
"license": "MIT",
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": ">=22 <27"
|
|
52
|
+
},
|
|
53
|
+
"overrides": {
|
|
54
|
+
"serialize-javascript": "^7.0.5",
|
|
55
|
+
"diff": "^9.0.0",
|
|
56
|
+
"mocha": {
|
|
57
|
+
"minimatch": "^11.0.1",
|
|
58
|
+
"glob": "^14.0.2"
|
|
59
|
+
},
|
|
60
|
+
"@typescript-eslint/typescript-estree": {
|
|
61
|
+
"minimatch": "^11.0.1"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
48
64
|
"peerDependencies": {
|
|
49
|
-
"mnemonica": "^1.4.
|
|
65
|
+
"mnemonica": "^1.4.7"
|
|
50
66
|
},
|
|
51
67
|
"devDependencies": {
|
|
52
68
|
"@istanbuljs/nyc-config-typescript": "^1.0.2",
|
|
@@ -54,8 +70,8 @@
|
|
|
54
70
|
"@types/chai": "^4.3.20",
|
|
55
71
|
"@types/mocha": "^10.0.10",
|
|
56
72
|
"@types/node": "^20.19.43",
|
|
57
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
58
|
-
"@typescript-eslint/parser": "^8.
|
|
73
|
+
"@typescript-eslint/eslint-plugin": "^8.72.0",
|
|
74
|
+
"@typescript-eslint/parser": "^8.72.0",
|
|
59
75
|
"ajv": "^8.20.0",
|
|
60
76
|
"chai": "^4.5.0",
|
|
61
77
|
"eslint": "^9.39.5",
|
|
@@ -63,11 +79,11 @@
|
|
|
63
79
|
"eslint-plugin-no-arrow-this": "^1.3.0",
|
|
64
80
|
"globals": "^15.15.0",
|
|
65
81
|
"husky": "^9.1.7",
|
|
66
|
-
"mnemonica": "1.4.
|
|
67
|
-
"mocha": "^8.
|
|
82
|
+
"mnemonica": "1.4.7",
|
|
83
|
+
"mocha": "^11.8.0",
|
|
68
84
|
"nyc": "^18.0.0",
|
|
69
85
|
"ts-node": "^10.9.2",
|
|
70
|
-
"typeomatica": "^0.3.
|
|
86
|
+
"typeomatica": "^0.3.64",
|
|
71
87
|
"typescript": "^6.0.3"
|
|
72
88
|
},
|
|
73
89
|
"dependencies": {
|