@dbx-tools/shared-core 0.9.119 → 0.9.120
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/index.ts +2 -2
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -3
- package/lib/src/brand-utils.d.ts +2 -2
- package/lib/src/brand-utils.js +3 -3
- package/lib/src/log.d.ts +1 -0
- package/lib/src/log.js +13 -1
- package/lib/src/options.d.ts +11 -9
- package/lib/src/options.js +21 -14
- package/lib/src/pattern.js +6 -2
- package/package.json +1 -1
- package/src/brand-utils.ts +2 -2
- package/src/log.ts +12 -0
- package/src/options.ts +24 -24
- package/src/pattern.ts +5 -1
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.120";
|
|
7
7
|
export * as asyncUtils from "./src/async-utils.ts";
|
|
8
8
|
export * as bindings from "./src/bindings.ts";
|
|
9
9
|
export * as brandUtils from "./src/brand-utils.ts";
|
|
@@ -33,7 +33,7 @@ export type { LogLevel, Logger } from "./src/log.ts";
|
|
|
33
33
|
export { MAX_TCP_PORT } from "./src/net.ts";
|
|
34
34
|
export type { UrlLike, IpVersion, ParsedIp, Cidr, UrlBuilder, ParseEmailsOptions } from "./src/net.ts";
|
|
35
35
|
export type { Sequence, Container, Collection, OneOrMany, NameLike, NonFunctionKeys, SerializablePrimitive, SerializableValue, ToNumberOptions, ToDateOptions, ToDurationOptions, DeepEqualComparator } from "./src/object.ts";
|
|
36
|
-
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.ts";
|
|
36
|
+
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema, TcpListenAddressSchema, UnixListenAddressSchema } from "./src/options.ts";
|
|
37
37
|
export type { DatabricksEnvironmentNames, PostgresEnvironmentNames, PostgresOptions, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
|
|
38
38
|
export type { PatternOptions } from "./src/pattern.ts";
|
|
39
39
|
export type { PredicateFunction, TypePredicateFunction, PredicateInput, Predicate } from "./src/predicate.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.120";
|
|
3
3
|
export * as asyncUtils from "./src/async-utils.ts";
|
|
4
4
|
export * as bindings from "./src/bindings.ts";
|
|
5
5
|
export * as brandUtils from "./src/brand-utils.ts";
|
|
@@ -29,7 +29,7 @@ export type { LogLevel, Logger } from "./src/log.ts";
|
|
|
29
29
|
export { MAX_TCP_PORT } from "./src/net.ts";
|
|
30
30
|
export type { UrlLike, IpVersion, ParsedIp, Cidr, UrlBuilder, ParseEmailsOptions } from "./src/net.ts";
|
|
31
31
|
export type { Sequence, Container, Collection, OneOrMany, NameLike, NonFunctionKeys, SerializablePrimitive, SerializableValue, ToNumberOptions, ToDateOptions, ToDurationOptions, DeepEqualComparator } from "./src/object.ts";
|
|
32
|
-
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.ts";
|
|
32
|
+
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema, TcpListenAddressSchema, UnixListenAddressSchema } from "./src/options.ts";
|
|
33
33
|
export type { DatabricksEnvironmentNames, PostgresEnvironmentNames, PostgresOptions, DatabricksOptions, OptionSerializationFormat, LakebaseOptions, OptionValueMap, ListenScheme, TcpListenAddress, UnixListenAddress, ListenAddress, ListenAddressOptions, ListenAddressInput } from "./src/options.ts";
|
|
34
34
|
export type { PatternOptions } from "./src/pattern.ts";
|
|
35
35
|
export type { PredicateFunction, TypePredicateFunction, PredicateInput, Predicate } from "./src/predicate.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.120";
|
|
6
6
|
export * as asyncUtils from "./src/async-utils.js";
|
|
7
7
|
export * as bindings from "./src/bindings.js";
|
|
8
8
|
export * as brandUtils from "./src/brand-utils.js";
|
|
@@ -23,6 +23,6 @@ export * as stringUtils from "./src/string-utils.js";
|
|
|
23
23
|
export * as token from "./src/token.js";
|
|
24
24
|
export { DEFAULT_BRAND_ASSETS, BrandAssetSetSchema, BrandColorsSchema, BrandVoiceSchema, BrandContextSchema, defaultBrandContext } from "./src/brand-utils.js";
|
|
25
25
|
export { MAX_TCP_PORT } from "./src/net.js";
|
|
26
|
-
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema } from "./src/options.js";
|
|
26
|
+
export { DatabricksEnvironmentNamesSchema, databricksEnvironmentNames, PostgresEnvironmentNamesSchema, postgresEnvironmentNames, postgresRoleSchema, PostgresOptionsSchema, tcpPortSchema, tcpPortOrZeroSchema, normalizedUrlSchema, DatabricksOptionsSchema, LakebaseOptionsSchema, TcpListenAddressSchema, UnixListenAddressSchema } from "./src/options.js";
|
|
27
27
|
export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER } from "./src/token.js";
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxnQkFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU8vSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzVDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSx3QkFBd0IsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUsvVixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTIwXCI7XG5leHBvcnQgKiBhcyBhc3luY1V0aWxzIGZyb20gXCIuL3NyYy9hc3luYy11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgYmluZGluZ3MgZnJvbSBcIi4vc3JjL2JpbmRpbmdzLnRzXCI7XG5leHBvcnQgKiBhcyBicmFuZFV0aWxzIGZyb20gXCIuL3NyYy9icmFuZC11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgZW52aXJvbm1lbnRVdGlscyBmcm9tIFwiLi9zcmMvZW52aXJvbm1lbnQtdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSBcIi4vc3JjL2Vycm9yLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBleGVjdXRpb24gZnJvbSBcIi4vc3JjL2V4ZWN1dGlvbi50c1wiO1xuZXhwb3J0ICogYXMgZnVuY3Rpb25VdGlscyBmcm9tIFwiLi9zcmMvZnVuY3Rpb24tdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGhhc2ggZnJvbSBcIi4vc3JjL2hhc2gudHNcIjtcbmV4cG9ydCAqIGFzIGh0dHAgZnJvbSBcIi4vc3JjL2h0dHAudHNcIjtcbmV4cG9ydCAqIGFzIGpzb24gZnJvbSBcIi4vc3JjL2pzb24udHNcIjtcbmV4cG9ydCAqIGFzIGxvZyBmcm9tIFwiLi9zcmMvbG9nLnRzXCI7XG5leHBvcnQgKiBhcyBuZXQgZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0ICogYXMgb2JqZWN0IGZyb20gXCIuL3NyYy9vYmplY3QudHNcIjtcbmV4cG9ydCAqIGFzIG9wdGlvbnMgZnJvbSBcIi4vc3JjL29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIHBhdHRlcm4gZnJvbSBcIi4vc3JjL3BhdHRlcm4udHNcIjtcbmV4cG9ydCAqIGFzIHByZWRpY2F0ZSBmcm9tIFwiLi9zcmMvcHJlZGljYXRlLnRzXCI7XG5leHBvcnQgKiBhcyBzdHJpbmdVdGlscyBmcm9tIFwiLi9zcmMvc3RyaW5nLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyB0b2tlbiBmcm9tIFwiLi9zcmMvdG9rZW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgQ29uY3VycmVudEVycm9yTW9kZSwgTWFwQ29uY3VycmVudE9wdGlvbnMsIFBvbGxDb250ZXh0LCBQb2xsUHJvZHVjZXIsIFBvbGxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FzeW5jLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0JSQU5EX0FTU0VUUywgQnJhbmRBc3NldFNldFNjaGVtYSwgQnJhbmRDb2xvcnNTY2hlbWEsIEJyYW5kVm9pY2VTY2hlbWEsIEJyYW5kQ29udGV4dFNjaGVtYSwgZGVmYXVsdEJyYW5kQ29udGV4dCB9IGZyb20gXCIuL3NyYy9icmFuZC11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZENvbnRleHQsIEJyYW5kQ29udGV4dElucHV0LCBCcmFuZEFzc2V0U2V0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEVycm9yQ29udGV4dCB9IGZyb20gXCIuL3NyYy9lcnJvci11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25SZXN1bHQsIEV4ZWN1dG9yLCBFeGVjdXRpb25GYWlsdXJlLCBSdW5PcHRpb25zIH0gZnJvbSBcIi4vc3JjL2V4ZWN1dGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZW1vaXplT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9mdW5jdGlvbi11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBIZWFkZXJMaWtlIH0gZnJvbSBcIi4vc3JjL2h0dHAudHNcIjtcbmV4cG9ydCB0eXBlIHsgTG9nTGV2ZWwsIExvZ2dlciB9IGZyb20gXCIuL3NyYy9sb2cudHNcIjtcbmV4cG9ydCB7IE1BWF9UQ1BfUE9SVCB9IGZyb20gXCIuL3NyYy9uZXQudHNcIjtcbmV4cG9ydCB0eXBlIHsgVXJsTGlrZSwgSXBWZXJzaW9uLCBQYXJzZWRJcCwgQ2lkciwgVXJsQnVpbGRlciwgUGFyc2VFbWFpbHNPcHRpb25zIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTZXF1ZW5jZSwgQ29udGFpbmVyLCBDb2xsZWN0aW9uLCBPbmVPck1hbnksIE5hbWVMaWtlLCBOb25GdW5jdGlvbktleXMsIFNlcmlhbGl6YWJsZVByaW1pdGl2ZSwgU2VyaWFsaXphYmxlVmFsdWUsIFRvTnVtYmVyT3B0aW9ucywgVG9EYXRlT3B0aW9ucywgVG9EdXJhdGlvbk9wdGlvbnMsIERlZXBFcXVhbENvbXBhcmF0b3IgfSBmcm9tIFwiLi9zcmMvb2JqZWN0LnRzXCI7XG5leHBvcnQgeyBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYSwgZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMsIFBvc3RncmVzRW52aXJvbm1lbnROYW1lc1NjaGVtYSwgcG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzLCBwb3N0Z3Jlc1JvbGVTY2hlbWEsIFBvc3RncmVzT3B0aW9uc1NjaGVtYSwgdGNwUG9ydFNjaGVtYSwgdGNwUG9ydE9yWmVyb1NjaGVtYSwgbm9ybWFsaXplZFVybFNjaGVtYSwgRGF0YWJyaWNrc09wdGlvbnNTY2hlbWEsIExha2ViYXNlT3B0aW9uc1NjaGVtYSwgVGNwTGlzdGVuQWRkcmVzc1NjaGVtYSwgVW5peExpc3RlbkFkZHJlc3NTY2hlbWEgfSBmcm9tIFwiLi9zcmMvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcywgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzLCBQb3N0Z3Jlc09wdGlvbnMsIERhdGFicmlja3NPcHRpb25zLCBPcHRpb25TZXJpYWxpemF0aW9uRm9ybWF0LCBMYWtlYmFzZU9wdGlvbnMsIE9wdGlvblZhbHVlTWFwLCBMaXN0ZW5TY2hlbWUsIFRjcExpc3RlbkFkZHJlc3MsIFVuaXhMaXN0ZW5BZGRyZXNzLCBMaXN0ZW5BZGRyZXNzLCBMaXN0ZW5BZGRyZXNzT3B0aW9ucywgTGlzdGVuQWRkcmVzc0lucHV0IH0gZnJvbSBcIi4vc3JjL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgUGF0dGVybk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvcGF0dGVybi50c1wiO1xuZXhwb3J0IHR5cGUgeyBQcmVkaWNhdGVGdW5jdGlvbiwgVHlwZVByZWRpY2F0ZUZ1bmN0aW9uLCBQcmVkaWNhdGVJbnB1dCwgUHJlZGljYXRlIH0gZnJvbSBcIi4vc3JjL3ByZWRpY2F0ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBUb2tlbml6ZU9wdGlvbnMsIEtleU9wdGlvbnMsIElkZW50aWZpZXJPcHRpb25zLCBEZWRlbnRPcHRpb25zLCBEZXNjcmlwdGlvbiB9IGZyb20gXCIuL3NyYy9zdHJpbmctdXRpbHMudHNcIjtcbmV4cG9ydCB7IEFDQ0VTU19UT0tFTl9IRUFERVIsIFVTRVJfSURfSEVBREVSLCBVU0VSX0VNQUlMX0hFQURFUiB9IGZyb20gXCIuL3NyYy90b2tlbi50c1wiO1xuIl19
|
package/lib/src/brand-utils.d.ts
CHANGED
|
@@ -83,8 +83,8 @@ export declare const BrandContextSchema: z.ZodObject<{
|
|
|
83
83
|
principles: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
84
84
|
avoid: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
85
85
|
}, z.core.$strict>>;
|
|
86
|
-
links: z.
|
|
87
|
-
website: z.
|
|
86
|
+
links: z.ZodPrefault<z.ZodObject<{
|
|
87
|
+
website: z.ZodDefault<z.ZodString>;
|
|
88
88
|
repository: z.ZodOptional<z.ZodString>;
|
|
89
89
|
documentation: z.ZodOptional<z.ZodString>;
|
|
90
90
|
}, z.core.$strict>>;
|
package/lib/src/brand-utils.js
CHANGED
|
@@ -97,12 +97,12 @@ export const BrandContextSchema = z
|
|
|
97
97
|
voice: BrandVoiceSchema,
|
|
98
98
|
links: z
|
|
99
99
|
.object({
|
|
100
|
-
website: z.string().url().
|
|
100
|
+
website: z.string().url().default("https://dbx.tools"),
|
|
101
101
|
repository: z.string().url().optional(),
|
|
102
102
|
documentation: z.string().url().optional(),
|
|
103
103
|
})
|
|
104
104
|
.strict()
|
|
105
|
-
.
|
|
105
|
+
.prefault({}),
|
|
106
106
|
extensions: z
|
|
107
107
|
.record(nonBlankString, z.unknown())
|
|
108
108
|
.default({})
|
|
@@ -129,4 +129,4 @@ export function brandContextPrompt(context = defaultBrandContext) {
|
|
|
129
129
|
JSON.stringify(context, null, 2),
|
|
130
130
|
].join("\n");
|
|
131
131
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnJhbmQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFcEcscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELE9BQU8sRUFBRSw4Q0FBOEM7Q0FDL0MsQ0FBQztBQUVYLHVFQUF1RTtBQUN2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDO0tBQ2pDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDO0lBQzNELElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDO0NBQzVGLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUUzRCxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQztLQUMvQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMs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QixpQkFBaUIsRUFBRSxDQUFDO0FBRXJFLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBNEIsQ0FBQztBQUN2RSxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUF3QixtQkFBbUI7SUFDNUUsT0FBTztRQUNMLHFCQUFxQixPQUFPLENBQUMsSUFBSSw4REFBOEQ7UUFDL0Ysd0VBQXdFO1FBQ3hFLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ2pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIGJyYW5kIGNvbnRyYWN0LCBkZWZhdWx0cywgYW5kIExMTSBzZXJpYWxpemF0aW9uIGhlbHBlcnMuXG4gKlxuICogQXNzZXQgdmFsdWVzIGFyZSBpbnRlbnRpb25hbGx5IHN0cmluZ3M6IHRoZXkgbWF5IGJlIHJlbGF0aXZlIGZpbGUgcGF0aHMsXG4gKiBwYWNrYWdlIGV4cG9ydHMsIGRhdGEgVVJMcywgb3IgbmV0d29yayBVUkxzIGRlcGVuZGluZyBvbiB0aGUgY29uc3VtZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBub25CbGFua1N0cmluZyA9IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKTtcbmNvbnN0IGNvbG9yID0gei5zdHJpbmcoKS5yZWdleCgvXiMoPzpbXFxkYS1mXXszfXxbXFxkYS1mXXs2fXxbXFxkYS1mXXs4fSkkL2ksIFwiRXhwZWN0ZWQgYSBoZXggY29sb3IuXCIpO1xuXG4vKiogUGFja2FnZSBhc3NldCByZWZlcmVuY2VzIHVzZWQgd2hlbiBhIGJyYW5kIGNvbnRleHQgc3VwcGxpZXMgbm8gY3VzdG9tIGFydHdvcmsuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkFORF9BU1NFVFMgPSB7XG4gIGljb246IHtcbiAgICBsaWdodDogXCJAZGJ4LXRvb2xzL3VpL2JyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxuICAgIGRhcms6IFwiQGRieC10b29scy91aS9icmFuZGluZy9hc3NldHMvaWNvbi1kYXJrLnN2Z1wiLFxuICB9LFxuICBsb2dvOiB7XG4gICAgbGlnaHQ6IFwiQGRieC10b29scy91aS9icmFuZGluZy9hc3NldHMvbG9nby1saWdodC5zdmdcIixcbiAgICBkYXJrOiBcIkBkYngtdG9vbHMvdWkvYnJhbmRpbmcvYXNzZXRzL2xvZ28tZGFyay5zdmdcIixcbiAgfSxcbiAgZmF2aWNvbjogXCJAZGJ4LXRvb2xzL3VpL2JyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxufSBhcyBjb25zdDtcblxuLyoqIFZhbGlkYXRlcyBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayB2YXJpYW50cyBmb3Igb25lIHZpc3VhbCBhc3NldC4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEFzc2V0U2V0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBsaWdodDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJBc3NldCBmb3IgbGlnaHQgc3VyZmFjZXMuXCIpLFxuICAgIGRhcms6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBc3NldCBmb3IgZGFyayBzdXJmYWNlczsgbGlnaHQgaXMgdGhlIGZhbGxiYWNrLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlRoZW1lLWF3YXJlIHJlZmVyZW5jZXMgdG8gb25lIHZpc3VhbCBhc3NldC5cIik7XG5cbi8qKiBTdHJpY3QgYnJhbmQgcGFsZXR0ZSB3aG9zZSBvbWl0dGVkIGNvbG9ycyByZXNvbHZlIHRvIHRoZSBkYnggdG9vbHMgZGVmYXVsdHMuICovXG5leHBvcnQgY29uc3QgQnJhbmRDb2xvcnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHByaW1hcnk6IGNvbG9yLmRlZmF1bHQoXCIjMUIzMTM5XCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBhY3Rpb24gYW5kIGlkZW50aXR5IGNvbG9yLlwiKSxcbiAgICBwcmltYXJ5SG92ZXI6IGNvbG9yLmRlZmF1bHQoXCIjMEU1MzhCXCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBob3ZlciBvciBwcmVzc2VkIGNvbG9yLlwiKSxcbiAgICBhY2NlbnQ6IGNvbG9yLmRlZmF1bHQoXCIjMDBBOTcyXCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IGFjY2VudCBjb2xvci5cIiksXG4gICAgZm9yZWdyb3VuZDogY29sb3IuZGVmYXVsdChcIiMxQjMxMzlcIikuZGVzY3JpYmUoXCJEZWZhdWx0IHRleHQgYW5kIG1hcmsgY29sb3IuXCIpLFxuICAgIGJhY2tncm91bmQ6IGNvbG9yLmRlZmF1bHQoXCIjRkZGRkZGXCIpLmRlc2NyaWJlKFwiRGVmYXVsdCBwYWdlIGJhY2tncm91bmQuXCIpLFxuICAgIHN1cmZhY2U6IGNvbG9yLmRlZmF1bHQoXCIjRjlGN0Y0XCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IHN1cmZhY2UgYmFja2dyb3VuZC5cIiksXG4gICAgbXV0ZWQ6IGNvbG9yLmRlZmF1bHQoXCIjNjE4Nzk0XCIpLmRlc2NyaWJlKFwiTXV0ZWQgdGV4dCBjb2xvci5cIiksXG4gICAgYm9yZGVyOiBjb2xvci5kZWZhdWx0KFwiI0U0RTJERFwiKS5kZXNjcmliZShcIkRlZmF1bHQgYm9yZGVyIGNvbG9yLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5wcmVmYXVsdCh7fSk7XG5cbi8qKiBTdHJpY3QgYXVkaWVuY2UsIHRvbmUsIHByaW5jaXBsZSwgYW5kIGF2b2lkYW5jZSBsaXN0cyB3aXRoIHByYWN0aWNhbCBkZWZhdWx0cy4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZFZvaWNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBhdWRpZW5jZTogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1wiRGF0YWJyaWNrcyBkZXZlbG9wZXJzXCIsIFwiYXBwbGljYXRpb24gZW5naW5lZXJzXCIsIFwiQUkgYWdlbnRzXCJdKSxcbiAgICB0b25lOiB6LmFycmF5KG5vbkJsYW5rU3RyaW5nKS5kZWZhdWx0KFtcImRpcmVjdFwiLCBcInByYWN0aWNhbFwiLCBcInRlY2huaWNhbFwiLCBcImFwcHJvYWNoYWJsZVwiXSksXG4gICAgcHJpbmNpcGxlczogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1xuICAgICAgICBcIkxlYWQgd2l0aCB0aGUgdXNlZnVsIG91dGNvbWUuXCIsXG4gICAgICAgIFwiUHJlZmVyIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhY2N1cmF0ZSB0ZWNobmljYWwgbGFuZ3VhZ2UuXCIsXG4gICAgICAgIFwiS2VlcCBwcm9kdWN0IGNsYWltcyBzcGVjaWZpYyBhbmQgZGVmZW5zaWJsZS5cIixcbiAgICAgIF0pLFxuICAgIGF2b2lkOiB6XG4gICAgICAuYXJyYXkobm9uQmxhbmtTdHJpbmcpXG4gICAgICAuZGVmYXVsdChbXCJ1bnN1cHBvcnRlZCBzdXBlcmxhdGl2ZXNcIiwgXCJ2YWd1ZSBBSSBjbGFpbXNcIiwgXCJ1bm5lY2Vzc2FyeSBqYXJnb25cIl0pLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLnByZWZhdWx0KHt9KTtcblxuLyoqXG4gKiBTdHJpY3QgcG9ydGFibGUgYnJhbmQgY29udHJhY3QgdGhhdCBmaWxscyBpZGVudGl0eSwgYXNzZXRzLCBjb2xvcnMsXG4gKiB0eXBvZ3JhcGh5LCB2b2ljZSwgbGlua3MsIGFuZCBleHRlbnNpb24gZGVmYXVsdHMgZHVyaW5nIHBhcnNpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZENvbnRleHRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtYVZlcnNpb246IHoubGl0ZXJhbChcIjFcIikuZGVmYXVsdChcIjFcIiksXG4gICAgbmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieCB0b29sc1wiKS5kZXNjcmliZShcIkNhbm9uaWNhbCBkaXNwbGF5IG5hbWUuXCIpLFxuICAgIHNob3J0TmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieFwiKS5kZXNjcmliZShcIkNvbXBhY3QgbmFtZSBmb3IgY29uc3RyYWluZWQgVUkuXCIpLFxuICAgIHRhZ2xpbmU6IG5vbkJsYW5rU3RyaW5nXG4gICAgICAuZGVmYXVsdChcIlByYWN0aWNhbCB0b29scyBmb3IgRGF0YWJyaWNrcyBidWlsZGVycy5cIilcbiAgICAgIC5kZXNjcmliZShcIlNob3J0IHByb2R1Y3QgbGluZSBzdWl0YWJsZSBmb3IgYSBoZWFkZXIgb3IgbWV0YWRhdGEuXCIpLFxuICAgIGRlc2NyaXB0aW9uOiBub25CbGFua1N0cmluZ1xuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIFwiQ29tcGFuaW9uIHBhY2thZ2VzIGZvciBEYXRhYnJpY2tzIGRldmVsb3BlcnMgYnVpbGRpbmcgYXBwcywgYWdlbnRzLCBkYXRhIHdvcmtmbG93cywgYW5kIHJldXNhYmxlIFVJLlwiLFxuICAgICAgKVxuICAgICAgLmRlc2NyaWJlKFwiUGxhaW4tbGFuZ3VhZ2UgcHJvZHVjdCBkZXNjcmlwdGlvbi5cIiksXG4gICAgYXNzZXRzOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgaWNvbjogQnJhbmRBc3NldFNldFNjaGVtYS5kZWZhdWx0KERFRkFVTFRfQlJBTkRfQVNTRVRTLmljb24pLFxuICAgICAgICBsb2dvOiBCcmFuZEFzc2V0U2V0U2NoZW1hLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMubG9nbyksXG4gICAgICAgIGZhdmljb246IG5vbkJsYW5rU3RyaW5nLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMuZmF2aWNvbiksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdChERUZBVUxUX0JSQU5EX0FTU0VUUyksXG4gICAgY29sb3JzOiBCcmFuZENvbG9yc1NjaGVtYSxcbiAgICB0eXBvZ3JhcGh5OiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc2Fuczogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcIidETSBTYW5zJywgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmXCIpLFxuICAgICAgICBtb25vOiBub25CbGFua1N0cmluZy5kZWZhdWx0KFwiJ0RNIE1vbm8nLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlXCIpLFxuICAgICAgfSlcbiAgICAgIC5zdHJpY3QoKVxuICAgICAgLnByZWZhdWx0KHt9KSxcbiAgICB2b2ljZTogQnJhbmRWb2ljZVNjaGVtYSxcbiAgICBsaW5rczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIHdlYnNpdGU6IHouc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKSxcbiAgICAgICAgcmVwb3NpdG9yeTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdCh7fSksXG4gICAgZXh0ZW5zaW9uczogelxuICAgICAgLnJlY29yZChub25CbGFua1N0cmluZywgei51bmtub3duKCkpXG4gICAgICAuZGVmYXVsdCh7fSlcbiAgICAgIC5kZXNjcmliZShcIk5hbWVzcGFjZWQgY29uc3VtZXItc3BlY2lmaWMgdmFsdWVzIHRoYXQgZG8gbm90IGJlbG9uZyBpbiB0aGUgcG9ydGFibGUgY29yZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQb3J0YWJsZSBpZGVudGl0eSwgdmlzdWFsLCBhbmQgdm9pY2UgY29udGV4dCBmb3IgVUksIGxpYnJhcmllcywgYW5kIExMTXMuXCIpO1xuXG4vKiogRnVsbHkgdmFsaWRhdGVkIGJyYW5kIGNvbnRleHQgYWZ0ZXIgZXZlcnkgc2NoZW1hIGRlZmF1bHQgaGFzIGJlZW4gYXBwbGllZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dCA9IHoub3V0cHV0PHR5cGVvZiBCcmFuZENvbnRleHRTY2hlbWE+O1xuLyoqIElucHV0IGFjY2VwdGVkIGJ5IHtAbGluayBCcmFuZENvbnRleHRTY2hlbWF9LCBiZWZvcmUgZGVmYXVsdHMgYXJlIG1hdGVyaWFsaXplZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dElucHV0ID0gei5pbnB1dDx0eXBlb2YgQnJhbmRDb250ZXh0U2NoZW1hPjtcbi8qKiBUaGVtZS1hd2FyZSBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayByZWZlcmVuY2VzIGZvciBvbmUgYnJhbmQgYXNzZXQuICovXG5leHBvcnQgdHlwZSBCcmFuZEFzc2V0U2V0ID0gei5vdXRwdXQ8dHlwZW9mIEJyYW5kQXNzZXRTZXRTY2hlbWE+O1xuXG4vKiogVmFsaWRhdGUgaW5wdXQgYW5kIGZpbGwgZXZlcnkgZGJ4IHRvb2xzIGRlZmF1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCcmFuZENvbnRleHQoaW5wdXQ6IHVua25vd24gPSB7fSk6IEJyYW5kQ29udGV4dCB7XG4gIHJldHVybiBCcmFuZENvbnRleHRTY2hlbWEucGFyc2UoaW5wdXQpO1xufVxuXG4vKiogQ2Fub25pY2FsIGRieCB0b29scyBicmFuZCBjb250ZXh0IHdpdGggYWxsIHNjaGVtYSBkZWZhdWx0cyByZXNvbHZlZC4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0QnJhbmRDb250ZXh0OiBCcmFuZENvbnRleHQgPSBwYXJzZUJyYW5kQ29udGV4dCgpO1xuXG4vKiogSlNPTiBTY2hlbWEgcmVwcmVzZW50YXRpb24gc3VpdGFibGUgZm9yIHN0cnVjdHVyZWQtb3V0cHV0IGFuZCB0b29sIGRlZmluaXRpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dEpzb25TY2hlbWEoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gei50b0pTT05TY2hlbWEoQnJhbmRDb250ZXh0U2NoZW1hKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIFN0YWJsZSBwcm9tcHQgYmxvY2sgZm9yIGFuIExMTSB0aGF0IG5lZWRzIHRvIHdyaXRlIG9yIGRlc2lnbiBpbiB0aGlzIGJyYW5kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dFByb21wdChjb250ZXh0OiBCcmFuZENvbnRleHQgPSBkZWZhdWx0QnJhbmRDb250ZXh0KTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBgVXNlIHRoZSBmb2xsb3dpbmcgJHtjb250ZXh0Lm5hbWV9IGJyYW5kIGNvbnRleHQgZm9yIG5hbWVzLCB2aXN1YWwgY2hvaWNlcywgYW5kIHdyaXRpbmcgdm9pY2UuYCxcbiAgICBcIlRyZWF0IGV4cGxpY2l0IHRhc2sgaW5zdHJ1Y3Rpb25zIGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoaXMgY29udGV4dC5cIixcbiAgICBcIlwiLFxuICAgIEpTT04uc3RyaW5naWZ5KGNvbnRleHQsIG51bGwsIDIpLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG4iXX0=
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnJhbmQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFFcEcscUZBQXFGO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSw4Q0FBOEM7UUFDckQsSUFBSSxFQUFFLDZDQUE2QztLQUNwRDtJQUNELE9BQU8sRUFBRSw4Q0FBOEM7Q0FDL0MsQ0FBQztBQUVYLHVFQUF1RTtBQUN2RSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDO0tBQ2pDLE1BQU0sQ0FBQztJQUNOLEtBQUssRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDO0lBQzNELElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxDQUFDO0NBQzVGLENBQUM7S0FDRCxNQUFNLEVBQUU7S0FDUixRQUFRLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUUzRCxtRkFBbUY7QUFDbkYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQztLQUMvQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMs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LG1CQUFtQixHQUFpQixpQkFBaUIsRUFBRSxDQUFDO0FBRXJFLHNGQUFzRjtBQUN0RixNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBNEIsQ0FBQztBQUN2RSxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUF3QixtQkFBbUI7SUFDNUUsT0FBTztRQUNMLHFCQUFxQixPQUFPLENBQUMsSUFBSSw4REFBOEQ7UUFDL0Ysd0VBQXdFO1FBQ3hFLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ2pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIGJyYW5kIGNvbnRyYWN0LCBkZWZhdWx0cywgYW5kIExMTSBzZXJpYWxpemF0aW9uIGhlbHBlcnMuXG4gKlxuICogQXNzZXQgdmFsdWVzIGFyZSBpbnRlbnRpb25hbGx5IHN0cmluZ3M6IHRoZXkgbWF5IGJlIHJlbGF0aXZlIGZpbGUgcGF0aHMsXG4gKiBwYWNrYWdlIGV4cG9ydHMsIGRhdGEgVVJMcywgb3IgbmV0d29yayBVUkxzIGRlcGVuZGluZyBvbiB0aGUgY29uc3VtZXIuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBub25CbGFua1N0cmluZyA9IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKTtcbmNvbnN0IGNvbG9yID0gei5zdHJpbmcoKS5yZWdleCgvXiMoPzpbXFxkYS1mXXszfXxbXFxkYS1mXXs2fXxbXFxkYS1mXXs4fSkkL2ksIFwiRXhwZWN0ZWQgYSBoZXggY29sb3IuXCIpO1xuXG4vKiogUGFja2FnZSBhc3NldCByZWZlcmVuY2VzIHVzZWQgd2hlbiBhIGJyYW5kIGNvbnRleHQgc3VwcGxpZXMgbm8gY3VzdG9tIGFydHdvcmsuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkFORF9BU1NFVFMgPSB7XG4gIGljb246IHtcbiAgICBsaWdodDogXCJAZGJ4LXRvb2xzL3VpL2JyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxuICAgIGRhcms6IFwiQGRieC10b29scy91aS9icmFuZGluZy9hc3NldHMvaWNvbi1kYXJrLnN2Z1wiLFxuICB9LFxuICBsb2dvOiB7XG4gICAgbGlnaHQ6IFwiQGRieC10b29scy91aS9icmFuZGluZy9hc3NldHMvbG9nby1saWdodC5zdmdcIixcbiAgICBkYXJrOiBcIkBkYngtdG9vbHMvdWkvYnJhbmRpbmcvYXNzZXRzL2xvZ28tZGFyay5zdmdcIixcbiAgfSxcbiAgZmF2aWNvbjogXCJAZGJ4LXRvb2xzL3VpL2JyYW5kaW5nL2Fzc2V0cy9pY29uLWxpZ2h0LnN2Z1wiLFxufSBhcyBjb25zdDtcblxuLyoqIFZhbGlkYXRlcyBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayB2YXJpYW50cyBmb3Igb25lIHZpc3VhbCBhc3NldC4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEFzc2V0U2V0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBsaWdodDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJBc3NldCBmb3IgbGlnaHQgc3VyZmFjZXMuXCIpLFxuICAgIGRhcms6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBc3NldCBmb3IgZGFyayBzdXJmYWNlczsgbGlnaHQgaXMgdGhlIGZhbGxiYWNrLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlRoZW1lLWF3YXJlIHJlZmVyZW5jZXMgdG8gb25lIHZpc3VhbCBhc3NldC5cIik7XG5cbi8qKiBTdHJpY3QgYnJhbmQgcGFsZXR0ZSB3aG9zZSBvbWl0dGVkIGNvbG9ycyByZXNvbHZlIHRvIHRoZSBkYnggdG9vbHMgZGVmYXVsdHMuICovXG5leHBvcnQgY29uc3QgQnJhbmRDb2xvcnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHByaW1hcnk6IGNvbG9yLmRlZmF1bHQoXCIjMUIzMTM5XCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBhY3Rpb24gYW5kIGlkZW50aXR5IGNvbG9yLlwiKSxcbiAgICBwcmltYXJ5SG92ZXI6IGNvbG9yLmRlZmF1bHQoXCIjMEU1MzhCXCIpLmRlc2NyaWJlKFwiUHJpbWFyeSBob3ZlciBvciBwcmVzc2VkIGNvbG9yLlwiKSxcbiAgICBhY2NlbnQ6IGNvbG9yLmRlZmF1bHQoXCIjMDBBOTcyXCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IGFjY2VudCBjb2xvci5cIiksXG4gICAgZm9yZWdyb3VuZDogY29sb3IuZGVmYXVsdChcIiMxQjMxMzlcIikuZGVzY3JpYmUoXCJEZWZhdWx0IHRleHQgYW5kIG1hcmsgY29sb3IuXCIpLFxuICAgIGJhY2tncm91bmQ6IGNvbG9yLmRlZmF1bHQoXCIjRkZGRkZGXCIpLmRlc2NyaWJlKFwiRGVmYXVsdCBwYWdlIGJhY2tncm91bmQuXCIpLFxuICAgIHN1cmZhY2U6IGNvbG9yLmRlZmF1bHQoXCIjRjlGN0Y0XCIpLmRlc2NyaWJlKFwiU2Vjb25kYXJ5IHN1cmZhY2UgYmFja2dyb3VuZC5cIiksXG4gICAgbXV0ZWQ6IGNvbG9yLmRlZmF1bHQoXCIjNjE4Nzk0XCIpLmRlc2NyaWJlKFwiTXV0ZWQgdGV4dCBjb2xvci5cIiksXG4gICAgYm9yZGVyOiBjb2xvci5kZWZhdWx0KFwiI0U0RTJERFwiKS5kZXNjcmliZShcIkRlZmF1bHQgYm9yZGVyIGNvbG9yLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5wcmVmYXVsdCh7fSk7XG5cbi8qKiBTdHJpY3QgYXVkaWVuY2UsIHRvbmUsIHByaW5jaXBsZSwgYW5kIGF2b2lkYW5jZSBsaXN0cyB3aXRoIHByYWN0aWNhbCBkZWZhdWx0cy4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZFZvaWNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBhdWRpZW5jZTogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1wiRGF0YWJyaWNrcyBkZXZlbG9wZXJzXCIsIFwiYXBwbGljYXRpb24gZW5naW5lZXJzXCIsIFwiQUkgYWdlbnRzXCJdKSxcbiAgICB0b25lOiB6LmFycmF5KG5vbkJsYW5rU3RyaW5nKS5kZWZhdWx0KFtcImRpcmVjdFwiLCBcInByYWN0aWNhbFwiLCBcInRlY2huaWNhbFwiLCBcImFwcHJvYWNoYWJsZVwiXSksXG4gICAgcHJpbmNpcGxlczogelxuICAgICAgLmFycmF5KG5vbkJsYW5rU3RyaW5nKVxuICAgICAgLmRlZmF1bHQoW1xuICAgICAgICBcIkxlYWQgd2l0aCB0aGUgdXNlZnVsIG91dGNvbWUuXCIsXG4gICAgICAgIFwiUHJlZmVyIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhY2N1cmF0ZSB0ZWNobmljYWwgbGFuZ3VhZ2UuXCIsXG4gICAgICAgIFwiS2VlcCBwcm9kdWN0IGNsYWltcyBzcGVjaWZpYyBhbmQgZGVmZW5zaWJsZS5cIixcbiAgICAgIF0pLFxuICAgIGF2b2lkOiB6XG4gICAgICAuYXJyYXkobm9uQmxhbmtTdHJpbmcpXG4gICAgICAuZGVmYXVsdChbXCJ1bnN1cHBvcnRlZCBzdXBlcmxhdGl2ZXNcIiwgXCJ2YWd1ZSBBSSBjbGFpbXNcIiwgXCJ1bm5lY2Vzc2FyeSBqYXJnb25cIl0pLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLnByZWZhdWx0KHt9KTtcblxuLyoqXG4gKiBTdHJpY3QgcG9ydGFibGUgYnJhbmQgY29udHJhY3QgdGhhdCBmaWxscyBpZGVudGl0eSwgYXNzZXRzLCBjb2xvcnMsXG4gKiB0eXBvZ3JhcGh5LCB2b2ljZSwgbGlua3MsIGFuZCBleHRlbnNpb24gZGVmYXVsdHMgZHVyaW5nIHBhcnNpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZENvbnRleHRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtYVZlcnNpb246IHoubGl0ZXJhbChcIjFcIikuZGVmYXVsdChcIjFcIiksXG4gICAgbmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieCB0b29sc1wiKS5kZXNjcmliZShcIkNhbm9uaWNhbCBkaXNwbGF5IG5hbWUuXCIpLFxuICAgIHNob3J0TmFtZTogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcImRieFwiKS5kZXNjcmliZShcIkNvbXBhY3QgbmFtZSBmb3IgY29uc3RyYWluZWQgVUkuXCIpLFxuICAgIHRhZ2xpbmU6IG5vbkJsYW5rU3RyaW5nXG4gICAgICAuZGVmYXVsdChcIlByYWN0aWNhbCB0b29scyBmb3IgRGF0YWJyaWNrcyBidWlsZGVycy5cIilcbiAgICAgIC5kZXNjcmliZShcIlNob3J0IHByb2R1Y3QgbGluZSBzdWl0YWJsZSBmb3IgYSBoZWFkZXIgb3IgbWV0YWRhdGEuXCIpLFxuICAgIGRlc2NyaXB0aW9uOiBub25CbGFua1N0cmluZ1xuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIFwiQ29tcGFuaW9uIHBhY2thZ2VzIGZvciBEYXRhYnJpY2tzIGRldmVsb3BlcnMgYnVpbGRpbmcgYXBwcywgYWdlbnRzLCBkYXRhIHdvcmtmbG93cywgYW5kIHJldXNhYmxlIFVJLlwiLFxuICAgICAgKVxuICAgICAgLmRlc2NyaWJlKFwiUGxhaW4tbGFuZ3VhZ2UgcHJvZHVjdCBkZXNjcmlwdGlvbi5cIiksXG4gICAgYXNzZXRzOiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgaWNvbjogQnJhbmRBc3NldFNldFNjaGVtYS5kZWZhdWx0KERFRkFVTFRfQlJBTkRfQVNTRVRTLmljb24pLFxuICAgICAgICBsb2dvOiBCcmFuZEFzc2V0U2V0U2NoZW1hLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMubG9nbyksXG4gICAgICAgIGZhdmljb246IG5vbkJsYW5rU3RyaW5nLmRlZmF1bHQoREVGQVVMVF9CUkFORF9BU1NFVFMuZmF2aWNvbiksXG4gICAgICB9KVxuICAgICAgLnN0cmljdCgpXG4gICAgICAuZGVmYXVsdChERUZBVUxUX0JSQU5EX0FTU0VUUyksXG4gICAgY29sb3JzOiBCcmFuZENvbG9yc1NjaGVtYSxcbiAgICB0eXBvZ3JhcGh5OiB6XG4gICAgICAub2JqZWN0KHtcbiAgICAgICAgc2Fuczogbm9uQmxhbmtTdHJpbmcuZGVmYXVsdChcIidETSBTYW5zJywgdWktc2Fucy1zZXJpZiwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmXCIpLFxuICAgICAgICBtb25vOiBub25CbGFua1N0cmluZy5kZWZhdWx0KFwiJ0RNIE1vbm8nLCB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlXCIpLFxuICAgICAgfSlcbiAgICAgIC5zdHJpY3QoKVxuICAgICAgLnByZWZhdWx0KHt9KSxcbiAgICB2b2ljZTogQnJhbmRWb2ljZVNjaGVtYSxcbiAgICBsaW5rczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIHdlYnNpdGU6IHouc3RyaW5nKCkudXJsKCkuZGVmYXVsdChcImh0dHBzOi8vZGJ4LnRvb2xzXCIpLFxuICAgICAgICByZXBvc2l0b3J5OiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCksXG4gICAgICAgIGRvY3VtZW50YXRpb246IHouc3RyaW5nKCkudXJsKCkub3B0aW9uYWwoKSxcbiAgICAgIH0pXG4gICAgICAuc3RyaWN0KClcbiAgICAgIC5wcmVmYXVsdCh7fSksXG4gICAgZXh0ZW5zaW9uczogelxuICAgICAgLnJlY29yZChub25CbGFua1N0cmluZywgei51bmtub3duKCkpXG4gICAgICAuZGVmYXVsdCh7fSlcbiAgICAgIC5kZXNjcmliZShcIk5hbWVzcGFjZWQgY29uc3VtZXItc3BlY2lmaWMgdmFsdWVzIHRoYXQgZG8gbm90IGJlbG9uZyBpbiB0aGUgcG9ydGFibGUgY29yZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQb3J0YWJsZSBpZGVudGl0eSwgdmlzdWFsLCBhbmQgdm9pY2UgY29udGV4dCBmb3IgVUksIGxpYnJhcmllcywgYW5kIExMTXMuXCIpO1xuXG4vKiogRnVsbHkgdmFsaWRhdGVkIGJyYW5kIGNvbnRleHQgYWZ0ZXIgZXZlcnkgc2NoZW1hIGRlZmF1bHQgaGFzIGJlZW4gYXBwbGllZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dCA9IHoub3V0cHV0PHR5cGVvZiBCcmFuZENvbnRleHRTY2hlbWE+O1xuLyoqIElucHV0IGFjY2VwdGVkIGJ5IHtAbGluayBCcmFuZENvbnRleHRTY2hlbWF9LCBiZWZvcmUgZGVmYXVsdHMgYXJlIG1hdGVyaWFsaXplZC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kQ29udGV4dElucHV0ID0gei5pbnB1dDx0eXBlb2YgQnJhbmRDb250ZXh0U2NoZW1hPjtcbi8qKiBUaGVtZS1hd2FyZSBsaWdodCBhbmQgb3B0aW9uYWwgZGFyayByZWZlcmVuY2VzIGZvciBvbmUgYnJhbmQgYXNzZXQuICovXG5leHBvcnQgdHlwZSBCcmFuZEFzc2V0U2V0ID0gei5vdXRwdXQ8dHlwZW9mIEJyYW5kQXNzZXRTZXRTY2hlbWE+O1xuXG4vKiogVmFsaWRhdGUgaW5wdXQgYW5kIGZpbGwgZXZlcnkgZGJ4IHRvb2xzIGRlZmF1bHQuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCcmFuZENvbnRleHQoaW5wdXQ6IHVua25vd24gPSB7fSk6IEJyYW5kQ29udGV4dCB7XG4gIHJldHVybiBCcmFuZENvbnRleHRTY2hlbWEucGFyc2UoaW5wdXQpO1xufVxuXG4vKiogQ2Fub25pY2FsIGRieCB0b29scyBicmFuZCBjb250ZXh0IHdpdGggYWxsIHNjaGVtYSBkZWZhdWx0cyByZXNvbHZlZC4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0QnJhbmRDb250ZXh0OiBCcmFuZENvbnRleHQgPSBwYXJzZUJyYW5kQ29udGV4dCgpO1xuXG4vKiogSlNPTiBTY2hlbWEgcmVwcmVzZW50YXRpb24gc3VpdGFibGUgZm9yIHN0cnVjdHVyZWQtb3V0cHV0IGFuZCB0b29sIGRlZmluaXRpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dEpzb25TY2hlbWEoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gei50b0pTT05TY2hlbWEoQnJhbmRDb250ZXh0U2NoZW1hKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIFN0YWJsZSBwcm9tcHQgYmxvY2sgZm9yIGFuIExMTSB0aGF0IG5lZWRzIHRvIHdyaXRlIG9yIGRlc2lnbiBpbiB0aGlzIGJyYW5kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kQ29udGV4dFByb21wdChjb250ZXh0OiBCcmFuZENvbnRleHQgPSBkZWZhdWx0QnJhbmRDb250ZXh0KTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBgVXNlIHRoZSBmb2xsb3dpbmcgJHtjb250ZXh0Lm5hbWV9IGJyYW5kIGNvbnRleHQgZm9yIG5hbWVzLCB2aXN1YWwgY2hvaWNlcywgYW5kIHdyaXRpbmcgdm9pY2UuYCxcbiAgICBcIlRyZWF0IGV4cGxpY2l0IHRhc2sgaW5zdHJ1Y3Rpb25zIGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoaXMgY29udGV4dC5cIixcbiAgICBcIlwiLFxuICAgIEpTT04uc3RyaW5naWZ5KGNvbnRleHQsIG51bGwsIDIpLFxuICBdLmpvaW4oXCJcXG5cIik7XG59XG4iXX0=
|
package/lib/src/log.d.ts
CHANGED
|
@@ -84,6 +84,7 @@ export declare function isLevelEnabled(level: LogLevel): boolean;
|
|
|
84
84
|
* const logger = log.logger("genie/chat");
|
|
85
85
|
* logger.info("starting");
|
|
86
86
|
* logger.warn("missing optional config", { reason: "no env var" });
|
|
87
|
+
* logger.error("request failed", { error: errorUtils.toError(cause) });
|
|
87
88
|
*/
|
|
88
89
|
export declare function logger(loggerName: NameLike | string | undefined): Logger;
|
|
89
90
|
export {};
|
package/lib/src/log.js
CHANGED
|
@@ -132,6 +132,17 @@ function consoleLoggerFactory(globalProcessStdOut, globalProcessStdErr, utils) {
|
|
|
132
132
|
return "[Circular]";
|
|
133
133
|
seen.add(value);
|
|
134
134
|
}
|
|
135
|
+
if (value instanceof Error) {
|
|
136
|
+
const error = value;
|
|
137
|
+
return {
|
|
138
|
+
...Object.fromEntries(Object.entries(error)),
|
|
139
|
+
name: error.name,
|
|
140
|
+
message: error.message,
|
|
141
|
+
stack: error.stack,
|
|
142
|
+
...(error.cause === undefined ? {} : { cause: error.cause }),
|
|
143
|
+
...(error.errors === undefined ? {} : { errors: error.errors }),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
135
146
|
return value;
|
|
136
147
|
});
|
|
137
148
|
}
|
|
@@ -333,9 +344,10 @@ function extractLoggerName(loggerName) {
|
|
|
333
344
|
* const logger = log.logger("genie/chat");
|
|
334
345
|
* logger.info("starting");
|
|
335
346
|
* logger.warn("missing optional config", { reason: "no env var" });
|
|
347
|
+
* logger.error("request failed", { error: errorUtils.toError(cause) });
|
|
336
348
|
*/
|
|
337
349
|
export function logger(loggerName) {
|
|
338
350
|
const name = extractLoggerName(loggerName);
|
|
339
351
|
return createLogger(name);
|
|
340
352
|
}
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHOzs7Ozs7Ozs7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFldkQsTUFBTSxhQUFhLEdBQUksVUFBd0MsQ0FBQyxPQUFPLENBQUM7QUFDeEUsTUFBTSxTQUFTLEdBQUksVUFBZ0MsQ0FBQyxHQUFHLENBQUM7QUFFeEQ7Ozs7O0dBS0c7QUFDSCw4REFBOEQ7QUFDOUQsTUFBTSxtQkFBbUIsR0FDdkIsYUFBYSxJQUFJLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEtBQUssVUFBVTtJQUNoRSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU07SUFDdEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQiw4REFBOEQ7QUFDOUQsTUFBTSxtQkFBbUIsR0FDdkIsYUFBYSxJQUFJLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEtBQUssVUFBVTtJQUNoRSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU07SUFDdEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUVoQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBQy9ELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3ZDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNyQixDQUFDO0FBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDekMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUss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QU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxPQUFPLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxVQUF5QztJQUM5RCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUYWdnZWQsIGxldmVsZWQgbG9nZ2luZyBmb3IgZXZlcnkgcnVudGltZSAtIHRoZSBvbmUgbG9nZ2VyIHRoZSB3aG9sZVxuICogbW9ub3JlcG8gc2hhcmVzLlxuICpcbiAqIEltcG9ydCB0aGlzIG1vZHVsZSBpbnN0ZWFkIG9mIGNvbnN0cnVjdGluZyBwYWNrYWdlLWxvY2FsIGNvbnNvbGUgd3JhcHBlcnMgc29cbiAqIGxvZyBsZXZlbHMsIHRhZ3MsIGZvcm1hdHRpbmcsIGFuZCBicm93c2VyIGJlaGF2aW9yIHJlbWFpbiBjb25zaXN0ZW50LlxuICpcbiAqIHtAbGluayBsb2dnZXJ9IHJlc29sdmVzIGEgdGFnZ2VkIHtAbGluayBMb2dnZXJ9IHRocm91Z2ggYSBzeW5jaHJvbm91cyBjb25zb2xlXG4gKiBzaW5rLCB0aGVuIHVwZ3JhZGVzIGl0cyBzZXJ2ZXItc2lkZSBmb3JtYXR0ZXIgd2hlbiBgbm9kZTp1dGlsYCByZXNvbHZlcy5cbiAqIEtlZXBpbmcgdGhlIHNpbmsgZGVwZW5kZW5jeS1mcmVlIHByZXZlbnRzIGJyb3dzZXIgYnVuZGxlcnMgZnJvbSByZXRhaW5pbmcgYW5cbiAqIG9wdGlvbmFsIGJhcmUgaW1wb3J0IHRoYXQgZG93bnN0cmVhbSBhcHBzIHdvdWxkIHN0aWxsIGhhdmUgdG8gaW5zdGFsbC5cbiAqIHtAbGluayBMb2dMZXZlbH0gZmlsdGVyaW5nIHJ1bnMgdGhyb3VnaCB7QGxpbmsgc2hvdWxkRW1pdH0gaW4gcGVyLWxldmVsXG4gKiB3cmFwcGVycyBhcm91bmQgdGhlIHBsYXRmb3JtIGNvbnNvbGUgb3Igc3RkZXJyIHNpbmsuXG4gKlxuICogVGhlIGNvbnNvbGUgZmFsbGJhY2sgd3JpdGVzIGRlYnVnL2luZm8gdG8gYHByb2Nlc3Muc3Rkb3V0YCBhbmQgd2Fybi9lcnJvciB0b1xuICogYHByb2Nlc3Muc3RkZXJyYCB3aGVuIGF2YWlsYWJsZSAoQnVuIGBpbnNwZWN0YCBwZXIgYXJndW1lbnQgd2hlblxuICogYExPR19CVU5fQ09OU09MRV9ESVNBQkxFRGAgaXMgdW5zZXQsIG90aGVyd2lzZSBgbm9kZTp1dGlsYCBpbnNwZWN0aW9uKSwgb3JcbiAqIGRlbGVnYXRlcyB0byBnbG9iYWwgYGNvbnNvbGUuKmAgd2hlbiBwcm9jZXNzIHN0cmVhbXMgYXJlIHVuYXZhaWxhYmxlLiBCcm93c2VyIGhvc3RzIG9taXRcbiAqIHRoZSBgTEVWRUxgIHRleHQgcHJlZml4IChkZXZ0b29scyBzaG93IHNldmVyaXR5KSBhbmQga2VlcCBvbmx5IHRoZSBgW25hbWVdYFxuICogdGFnLlxuICpcbiAqIEVudiB0b2dnbGVzOiBgTE9HX0xFVkVMYCAocmVhZCBwZXIgY2FsbCkgYW5kIGBMT0dfQlVOX0NPTlNPTEVfRElTQUJMRURgXG4gKiAocmVhZCBvbmNlIGR1cmluZyBmYWN0b3J5IGluaXQpLlxuICpcbiAqIEJyb3dzZXItc2FmZTogYHByb2Nlc3NgIC8gYEJ1bmAgLyBgd2luZG93YCAvIGBkb2N1bWVudGAgYXJlIGFsbCByZWFjaGVkXG4gKiB0aHJvdWdoIGBnbG9iYWxUaGlzYCBhbmQgZ3VhcmRlZCwgYW5kIGBub2RlOnV0aWxgIGlzIGltcG9ydGVkIE9OTFkgb24gYSBob3N0XG4gKiB0aGF0IGhhcyBgcHJvY2Vzcy5zdGRlcnJgIC0gbmV2ZXIgaW4gYSBicm93c2VyLCB3aGVyZSB0aGUgc3BlY2lmaWVyIGlzXG4gKiB1bnJlc29sdmFibGUgLSBzbyB0aGUgbW9kdWxlIHdvcmtzIGluIGFueSBydW50aW1lLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSBcIi4vZnVuY3Rpb24tdXRpbHMudHNcIjtcbmltcG9ydCB7IHR5cGUgTmFtZUxpa2UsIHRvQm9vbGVhbiB9IGZyb20gXCIuL29iamVjdC50c1wiO1xuXG4vKiogYHByb2Nlc3NgLXNoYXBlZCB2aWV3IG9mZiBgZ2xvYmFsVGhpc2AsIHNvIG5vIG5vZGUgdHlwZXMgYXJlIG5lZWRlZC4gKi9cbmludGVyZmFjZSBQcm9jZXNzTGlrZSB7XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHN0ZG91dD86IHsgd3JpdGU/OiAoY2h1bms6IHN0cmluZykgPT4gdm9pZDsgaXNUVFk/OiB1bmtub3duIH07XG4gIHN0ZGVycj86IHsgd3JpdGU/OiAoY2h1bms6IHN0cmluZykgPT4gdm9pZDsgaXNUVFk/OiB1bmtub3duIH07XG59XG5cbi8qKiBgQnVuYC1zaGFwZWQgdmlldyBvZmYgYGdsb2JhbFRoaXNgLCBzbyBubyBgQHR5cGVzL2J1bmAgaXMgbmVlZGVkLiAqL1xuaW50ZXJmYWNlIEJ1bkxpa2Uge1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBpbnNwZWN0PzogKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBjb2xvcnM/OiBib29sZWFuOyBkZXB0aD86IG51bWJlciB9KSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IGdsb2JhbFByb2Nlc3MgPSAoZ2xvYmFsVGhpcyBhcyB7IHByb2Nlc3M/OiBQcm9jZXNzTGlrZSB9KS5wcm9jZXNzO1xuY29uc3QgZ2xvYmFsQnVuID0gKGdsb2JhbFRoaXMgYXMgeyBCdW4/OiBCdW5MaWtlIH0pLkJ1bjtcblxuLyoqXG4gKiBOb2RlIGBwcm9jZXNzLnN0ZGVycmAgd2hlbiB3cml0YWJsZSwgZWxzZSBgdW5kZWZpbmVkYCAoc3RhYmxlIGZvciB0aGVcbiAqIHByb2Nlc3MpLiBUeXBlZCBsb29zZWx5IChgYW55YCkgYmVjYXVzZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGNvbnNvbGUgc2luaydzXG4gKiBgLndyaXRlYCwgd2hpY2ggb3VyIHN0cnVjdHVyYWwge0BsaW5rIFByb2Nlc3NMaWtlfSBzaGFwZSBkb2VzIG5vdCBzYXRpc2Z5XG4gKiBub21pbmFsbHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBnbG9iYWxQcm9jZXNzU3RkRXJyOiBhbnkgPVxuICBnbG9iYWxQcm9jZXNzICYmIHR5cGVvZiBnbG9iYWxQcm9jZXNzLnN0ZGVycj8ud3JpdGUgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZ2xvYmFsUHJvY2Vzcy5zdGRlcnJcbiAgICA6IHVuZGVmaW5lZDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBnbG9iYWxQcm9jZXNzU3RkT3V0OiBhbnkgPVxuICBnbG9iYWxQcm9jZXNzICYmIHR5cGVvZiBnbG9iYWxQcm9jZXNzLnN0ZG91dD8ud3JpdGUgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZ2xvYmFsUHJvY2Vzcy5zdGRvdXRcbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3QgTE9HX0xFVkVMUyA9IFtcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiXSBhcyBjb25zdDtcbmNvbnN0IExPR19MRVZFTF9SQU5LID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICBMT0dfTEVWRUxTLm1hcCgobGV2ZWwsIGluZGV4KSA9PiBbbGV2ZWwsIGluZGV4XSksXG4pIGFzIFJlY29yZDxMb2dMZXZlbCwgbnVtYmVyPjtcbmNvbnN0IExPR19MRVZFTF9DT0xPUlMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgIGxldCBjb2xvciA9IFwiXFx4MWJbOTBtXCI7IC8vIGdyYXlcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzRtXCI7IC8vIGJsdWVcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzNtXCI7IC8vIHllbGxvd1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzFtXCI7IC8vIHJlZFxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFtsZXZlbCwgY29sb3JdO1xuICB9KSxcbikgYXMgUmVjb3JkPExvZ0xldmVsLCBzdHJpbmc+O1xuY29uc3QgTE9HX0xFVkVMX0NPTE9SX1JFU0VUID0gXCJcXHgxYlswbVwiO1xuY29uc3QgREVGQVVMVF9MRVZFTDogTG9nTGV2ZWwgPSBcImluZm9cIjtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgc2V2ZXJpdGllcywgbG93ZXN0IHRvIGhpZ2hlc3Q6IGBkZWJ1Z2AsIGBpbmZvYCwgYHdhcm5gLCBgZXJyb3JgLlxuICogQSBjYWxsIGJlbG93IHRoZSBhY3RpdmUgdGhyZXNob2xkIGlzIGRpc2NhcmRlZCBiZWZvcmUgYW55IHN0cmluZyB3b3JrIG9yXG4gKiBzaW5rIEkvTy5cbiAqXG4gKiBUaGUgdGhyZXNob2xkIGNvbWVzIGZyb20gYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgb24gZXZlcnkgY2FsbFxuICogKGNhc2UtaW5zZW5zaXRpdmUsIGRlZmF1bHQgYGluZm9gIHdoZW4gdW5zZXQsIGVtcHR5LCBvciB1bmtub3duKSBzbyB0ZXN0XG4gKiBydW5uZXJzIGFuZCBlbWJlZGRlcnMgY2FuIGNoYW5nZSB2ZXJib3NpdHkgYWZ0ZXIgaW1wb3J0IHdpdGhvdXQgcmVzdGFydGluZ1xuICogdGhlIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gKHR5cGVvZiBMT0dfTEVWRUxTKVtudW1iZXJdO1xuXG4vKipcbiAqIERlcGVuZGVuY3ktZnJlZSBsZXZlbGVkIGxvZ2dlci4gU3RhbmRhcmQgbWV0aG9kcyBob25vciBgTE9HX0xFVkVMYDsgYHN0YXJ0YFxuICogYW5kIGBzdWNjZXNzYCBhcmUgaW5mb3JtYXRpb25hbCBhbGlhc2VzIHdpdGggZGlzdGluY3QgcHJlc2VudGF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBMb2dnZXIgPSB7XG4gIFtLIGluIExvZ0xldmVsXTogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufSAmIHtcbiAgLyoqIFN1Y2Nlc3MgbWVzc2FnZSBlbWl0dGVkIGF0IGBpbmZvYCBsZXZlbC4gKi9cbiAgc3VjY2VzczogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xuICAvKiogU3RhcnQgLyBpbi1wcm9ncmVzcyBtZXNzYWdlIGVtaXR0ZWQgYXQgYGluZm9gIGxldmVsLiAqL1xuICBzdGFydDogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuLyoqIGAobmFtZT8pID0+IExvZ2dlcmAgc2luayBjb25zdHJ1Y3RvciByZXR1cm5lZCBieSB0aGUgaW5pdC10aW1lIGZhY3RvcnkgY2hhaW4uICovXG50eXBlIExvZ2dlckZhY3RvcnkgPSAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyO1xuXG4vKipcbiAqIENvbnNvbGUge0BsaW5rIExvZ2dlckZhY3Rvcnl9OyBhbHdheXMgc3VjY2VlZHMuXG4gKlxuICogV2hlbiBwcm9jZXNzIHN0cmVhbXMgYXJlIGF2YWlsYWJsZSwgZm9ybWF0cyBlYWNoIGxpbmUgYW5kIHdyaXRlcyBkZWJ1Zy9pbmZvXG4gKiB0byBzdGRvdXQgYW5kIHdhcm4vZXJyb3IgdG8gc3RkZXJyLiBCdW4gYGluc3BlY3RgIGZvcm1hdHMgZWFjaCBhcmd1bWVudCB3aGVuXG4gKiBlbmFibGVkOyBvdGhlcndpc2UgYHV0aWwuaW5zcGVjdGAgd2hlbiBgbm9kZTp1dGlsYCBsb2Fkcywgb3IgYVxuICogYEpTT04uc3RyaW5naWZ5YCBmYWxsYmFjayB3aGVuIGl0IGRvZXMgbm90LiBXaGVuIHByb2Nlc3Mgc3RyZWFtcyBhcmVcbiAqIHVuYXZhaWxhYmxlIChldmVyeSBicm93c2VyKSwgYmluZHNcbiAqIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9IHByZWZpeGVzIGludG8gZ2xvYmFsIGBjb25zb2xlLipgIGNhbGxzIGFuZCBza2lwcyB0aGVcbiAqIGBub2RlOnV0aWxgIGltcG9ydCBlbnRpcmVseS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29uc29sZUxvZ2dlckZhY3RvcnkoXG4gIGdsb2JhbFByb2Nlc3NTdGRPdXQ6IGFueSxcbiAgZ2xvYmFsUHJvY2Vzc1N0ZEVycjogYW55LFxuKTogUHJvbWlzZTxMb2dnZXJGYWN0b3J5PiB7XG4gIC8vIEluZGlyZWN0IHNwZWNpZmllciBzbyB0aGlzIGJyb3dzZXItc2FmZSBtb2R1bGUgZG9lc24ndCBzdGF0aWNhbGx5IHB1bGwgaW5cbiAgLy8gbm9kZSB0eXBlczogYG5vZGU6dXRpbGAgaXMgb3B0aW9uYWwgKHRoZSBKU09OIGZhbGxiYWNrIGNvdmVycyBpdHMgYWJzZW5jZSkuXG4gIGNvbnN0IG5vZGVVdGlsID0gXCJub2RlOnV0aWxcIjtcbiAgLy8gR2F0ZWQsIG5vdCBqdXN0IGNhdWdodDogdGhlIGluZGlyZWN0IHNwZWNpZmllciBkZWZlYXRzIGJ1bmRsZXIgYW5hbHlzaXMgYnlcbiAgLy8gZGVzaWduLCBzbyBhIGNsaWVudCBidWlsZCBlbWl0cyBhIGxpdGVyYWwgYGltcG9ydChcIm5vZGU6dXRpbFwiKWAgdGhhdCBub1xuICAvLyBicm93c2VyIGNhbiByZXNvbHZlLCBhbmQgdGhlIGNhdWdodCByZWplY3Rpb24gc3RpbGwgc3VyZmFjZWQgYXMgYSBjb25zb2xlXG4gIC8vIGVycm9yLiBgdXRpbHNgIG9ubHkgZmVlZHMgdGhlIHByb2Nlc3Mtc3RyZWFtIGJyYW5jaCBvZiB0aGUgZW1pdHRlciBiZWxvdyxcbiAgLy8gc28gbm8gd3JpdGFibGUgc3RyZWFtIG1lYW5zIHRoZSBpbXBvcnQgaGFzIG5vdGhpbmcgdG8gc2VydmUgYW5kIGlzIHNraXBwZWQuXG4gIGNvbnN0IHV0aWxzOiB7IGluc3BlY3Q/OiBhbnkgfSB8IHVuZGVmaW5lZCA9XG4gICAgZ2xvYmFsUHJvY2Vzc1N0ZE91dCA9PT0gdW5kZWZpbmVkICYmIGdsb2JhbFByb2Nlc3NTdGRFcnIgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogYXdhaXQgaW1wb3J0KC8qIEB2aXRlLWlnbm9yZSAqLyBub2RlVXRpbCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgcmV0dXJuIGNvbnNvbGVMb2dnZXJGYWN0b3J5KGdsb2JhbFByb2Nlc3NTdGRPdXQsIGdsb2JhbFByb2Nlc3NTdGRFcnIsIHV0aWxzKTtcbn1cblxuLyoqXG4gKiBUaGUgc3luY2hyb25vdXMgY29yZSBvZiB7QGxpbmsgY3JlYXRlQ29uc29sZUxvZ2dlckZhY3Rvcnl9LCBzcGxpdCBvdXQgc28gdGhlXG4gKiBzYW1lIGVtaXR0ZXIgYWxzbyBzZXJ2ZXMgYXMgdGhlIGJvb3RzdHJhcCBzaW5rIGJlZm9yZSBhbnkgYXN5bmMgZmFjdG9yeSBoYXNcbiAqIHJlc29sdmVkLiBgdXRpbHNgIGlzIGBub2RlOnV0aWxgIHdoZW4gaXQgbG9hZGVkOyB3aXRob3V0IGl0LCBvYmplY3QgYXJndW1lbnRzXG4gKiBmb3JtYXQgdGhyb3VnaCB0aGUgYEpTT04uc3RyaW5naWZ5YCBmYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gY29uc29sZUxvZ2dlckZhY3RvcnkoXG4gIGdsb2JhbFByb2Nlc3NTdGRPdXQ6IGFueSxcbiAgZ2xvYmFsUHJvY2Vzc1N0ZEVycjogYW55LFxuICB1dGlscz86IHsgaW5zcGVjdD86IGFueSB9IHwgdW5kZWZpbmVkLFxuKTogTG9nZ2VyRmFjdG9yeSB7XG4gIGNvbnN0IGJ1bkluc3BlY3QgPVxuICAgIGdsb2JhbEJ1biAhPT0gdW5kZWZpbmVkICYmICF0b0Jvb2xlYW4oZ2xvYmFsQnVuLmVudj8uTE9HX0JVTl9DT05TT0xFX0RJU0FCTEVEKVxuICAgICAgPyBnbG9iYWxCdW4uaW5zcGVjdFxuICAgICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc2V0Q29sb3JzUHJlZml4ID0gYnVuSW5zcGVjdCAhPT0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGluc3BlY3QgPSAoYXJnOiBhbnksIGNvbG9ycz86IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpIHx8ICh0eXBlb2YgYXJnID09PSBcIm9iamVjdFwiICYmIGFyZyAhPT0gbnVsbCkpIHtcbiAgICAgIGlmIChidW5JbnNwZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGJ1bkluc3BlY3QoYXJnLCB7XG4gICAgICAgICAgY29sb3JzOiBjb2xvcnMsXG4gICAgICAgICAgZGVwdGg6IHV0aWxzPy5pbnNwZWN0Py5kZWZhdWx0T3B0aW9ucz8uZGVwdGggPz8gdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdXRpbHMuaW5zcGVjdChhcmcsIHtcbiAgICAgICAgICAuLi51dGlscz8uaW5zcGVjdD8uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgY29sb3JzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZywgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIFwiW0NpcmN1bGFyXVwiO1xuICAgICAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGFyZyk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZhY3RvcnkgPSAobmFtZT86IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgICAgICBjb25zdCBwcmVmZXJyZWRTdHJlYW0gPVxuICAgICAgICAgIGxldmVsID09PSBcIndhcm5cIiB8fCBsZXZlbCA9PT0gXCJlcnJvclwiID8gZ2xvYmFsUHJvY2Vzc1N0ZEVyciA6IGdsb2JhbFByb2Nlc3NTdGRPdXQ7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IHByZWZlcnJlZFN0cmVhbSA/PyBnbG9iYWxQcm9jZXNzU3RkRXJyID8/IGdsb2JhbFByb2Nlc3NTdGRPdXQ7XG4gICAgICAgIGNvbnN0IHByZWZpeEZvcm1hdHRlciA9IGNyZWF0ZUZvcm1hdHRlcihuYW1lLCBzdHJlYW0sIHJlc2V0Q29sb3JzUHJlZml4KTtcbiAgICAgICAgY29uc3QgeyBwcmVmaXgsIGNvbG9ycywgcmVzZXRDb2xvcnMgfSA9IHByZWZpeEZvcm1hdHRlcihsZXZlbCk7XG4gICAgICAgIGNvbnN0IGVtaXR0ZXIgPSAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICBpZiAoIXNob3VsZEVtaXQobGV2ZWwsIHRydWUpKSByZXR1cm47XG4gICAgICAgICAgaWYgKHN0cmVhbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlUGFydHMgPSBwcmVmaXggPyBbcHJlZml4XSA6IFtdO1xuICAgICAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goLi4uYXJncy5tYXAoKGFyZykgPT4gaW5zcGVjdChhcmcsIGNvbG9ycykpKTtcbiAgICAgICAgICAgIGlmIChyZXNldENvbG9ycykgbWVzc2FnZVBhcnRzLnB1c2goTE9HX0xFVkVMX0NPTE9SX1JFU0VUKTtcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZShtZXNzYWdlUGFydHMuam9pbihcIiBcIikgKyBcIlxcblwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGxldmVsRm4gPSBjb25zb2xlW2xldmVsXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGV2ZWxGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgIGxldmVsRm4gPSBjb25zb2xlLmxvZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmVmaXgpIGxldmVsRm4gPSBsZXZlbEZuLmJpbmQoY29uc29sZSwgcHJlZml4KTtcbiAgICAgICAgICAgIGxldmVsRm4oLi4uYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gW2xldmVsLCBlbWl0dGVyXTtcbiAgICAgIH0pLFxuICAgICkgYXMgTG9nZ2VyO1xuICAgIC8vIENvbnZlbmllbmNlIGxldmVscyBzaGFyZSB0aGUgaW5mbyBzaW5rLlxuICAgIGxvZ2dlci5zdWNjZXNzID0gbG9nZ2VyLmluZm87XG4gICAgbG9nZ2VyLnN0YXJ0ID0gbG9nZ2VyLmluZm87XG4gICAgcmV0dXJuIGxvZ2dlcjtcbiAgfTtcbiAgY29uc3QgZGVmYXVsdEZhY3RvcnkgPSBtZW1vaXplKGZhY3RvcnkpO1xuICByZXR1cm4gKG5hbWU/OiBzdHJpbmcpID0+IChuYW1lID8gZmFjdG9yeShuYW1lKSA6IGRlZmF1bHRGYWN0b3J5KCkpO1xufVxuXG4vKipcbiAqIEZ1bGwgY29uc29sZSBzaW5rIHdpdGggb3B0aW9uYWwgYG5vZGU6dXRpbGAgaW5zcGVjdGlvbi4gTWVtb2l6ZWQgc29cbiAqIGNvbmN1cnJlbnQgYW5kIHJlcGVhdCBjYWxsZXJzIHNoYXJlIG9uZSBpbi1mbGlnaHQgcHJvbWlzZSBhbmQgc2V0dGxlZCByZXN1bHQuXG4gKi9cbmNvbnN0IHJlc29sdmVGYWN0b3J5ID0gbWVtb2l6ZShhc3luYyAoKTogUHJvbWlzZTxMb2dnZXJGYWN0b3J5PiA9PiB7XG4gIHJldHVybiBjcmVhdGVDb25zb2xlTG9nZ2VyRmFjdG9yeShnbG9iYWxQcm9jZXNzU3RkT3V0LCBnbG9iYWxQcm9jZXNzU3RkRXJyKTtcbn0pO1xuXG4vKipcbiAqIEFjdGl2ZSBmYWN0b3J5IHN0YXJ0cyBhcyBhIHN5bmMgY29uc29sZSBzaW5rIChubyBgYXdhaXRgLCBzbyB0aGlzIG1vZHVsZVxuICogZmluaXNoZXMgZXZhbHVhdGluZyBpbW1lZGlhdGVseSkgYW5kIHN3YXBzIHRvIHtAbGluayByZXNvbHZlRmFjdG9yeX0nc1xuICogcmVzdWx0IHdoZW4gc2VydmVyLXNpZGUgYXJndW1lbnQgaW5zcGVjdGlvbiBpcyByZWFkeS5cbiAqL1xubGV0IGFjdGl2ZUZhY3Rvcnk6IExvZ2dlckZhY3RvcnkgPSBjb25zb2xlTG9nZ2VyRmFjdG9yeShnbG9iYWxQcm9jZXNzU3RkT3V0LCBnbG9iYWxQcm9jZXNzU3RkRXJyKTtcbnZvaWQgcmVzb2x2ZUZhY3RvcnkoKS50aGVuKFxuICAoZmFjdG9yeSkgPT4ge1xuICAgIGFjdGl2ZUZhY3RvcnkgPSBmYWN0b3J5O1xuICB9LFxuICAoKSA9PiB7XG4gICAgLy8gS2VlcCB0aGUgc3luYyBjb25zb2xlIHNpbms7IG5ldmVyIGxlYXZlIGltcG9ydGVycyB3aXRob3V0IGEgZmFjdG9yeS5cbiAgfSxcbik7XG5cbi8qKlxuICogQnVpbGQgYSBsb2dnZXIgdGhhdCByZWJpbmRzIHdoZW4ge0BsaW5rIGFjdGl2ZUZhY3Rvcnl9IHVwZ3JhZGVzLiBDYWxsZXJzIHRoYXRcbiAqIGNhcHR1cmUgYGNvbnN0IGxvZyA9IGxvZ2dlcihcInhcIilgIGF0IG1vZHVsZSBzY29wZSBzdGlsbCBnZXQgdGhlIHVwZ3JhZGVkXG4gKiBmb3JtYXR0ZXIgb25jZSBpdCBhcnJpdmVzLCB3aXRob3V0IGV2ZXJ5IGNhbGwgc2l0ZSB3YWl0aW5nIG9uIGEgcHJvbWlzZS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKG5hbWU/OiBzdHJpbmcpOiBMb2dnZXIge1xuICBsZXQgYm91bmQ6IHsgZmFjdG9yeTogTG9nZ2VyRmFjdG9yeTsgbG9nZ2VyOiBMb2dnZXIgfSB8IHVuZGVmaW5lZDtcbiAgY29uc3Qgc2luayA9ICgpOiBMb2dnZXIgPT4ge1xuICAgIGlmIChib3VuZD8uZmFjdG9yeSAhPT0gYWN0aXZlRmFjdG9yeSkge1xuICAgICAgYm91bmQgPSB7IGZhY3Rvcnk6IGFjdGl2ZUZhY3RvcnksIGxvZ2dlcjogYWN0aXZlRmFjdG9yeShuYW1lKSB9O1xuICAgIH1cbiAgICByZXR1cm4gYm91bmQubG9nZ2VyO1xuICB9O1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIFsuLi5MT0dfTEVWRUxTLCBcInN1Y2Nlc3NcIiwgXCJzdGFydFwiXS5tYXAoKGxldmVsKSA9PiBbXG4gICAgICBsZXZlbCxcbiAgICAgICguLi5hcmdzOiBhbnlbXSkgPT4gc2luaygpW2xldmVsIGFzIGtleW9mIExvZ2dlcl0oLi4uYXJncyksXG4gICAgXSksXG4gICkgYXMgTG9nZ2VyO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgbGluZSBwcmVmaXggb2YgYExFVkVMIFtuYW1lXWAgb24gTm9kZS9CdW4gaG9zdHMsIG9yIGBbbmFtZV1gIGFsb25lXG4gKiBpbiBicm93c2VycyAoZWl0aGVyIHBhcnQgb21pdHRlZCB3aGVuIGFic2VudCkuIEFwcGxpZXMgcGVyLWxldmVsIEFOU0kgY29sb3JcbiAqIHdoZW4gYHN0cmVhbVN1cHBvcnRzQ29sb3JgIGlzIHRydWUgZm9yIHRoZSBnaXZlbiBzdGRlcnIgc3RyZWFtLlxuICovXG5mdW5jdGlvbiBjcmVhdGVGb3JtYXR0ZXIoXG4gIG5hbWU6IGFueSxcbiAgc3RyZWFtOiBhbnksXG4gIHJlc2V0Q29sb3JzUHJlZml4PzogYm9vbGVhbixcbik6IChsZXZlbD86IExvZ0xldmVsKSA9PiB7IHByZWZpeDogc3RyaW5nOyBjb2xvcnM6IGJvb2xlYW47IHJlc2V0Q29sb3JzOiBib29sZWFuIH0ge1xuICBjb25zdCBnbG9iID0gZ2xvYmFsVGhpcyBhcyB7IHdpbmRvdz86IHVua25vd247IGRvY3VtZW50PzogdW5rbm93biB9O1xuICBjb25zdCBpc0Jyb3dzZXIgPSBnbG9iLndpbmRvdyAhPT0gdW5kZWZpbmVkICYmIGdsb2IuZG9jdW1lbnQgIT09IHVuZGVmaW5lZDtcbiAgY29uc3Qgc3VwcG9ydHNDb2xvciA9ICFpc0Jyb3dzZXIgPyBzdHJlYW1TdXBwb3J0c0NvbG9yKHN0cmVhbSkgOiBmYWxzZTtcbiAgY29uc3QgbmFtZVByZWZpeCA9IG5hbWUgPyBcIltcIiArIG5hbWUgKyBcIl1cIiA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIChsZXZlbD86IExvZ0xldmVsKSA9PiB7XG4gICAgY29uc3QgY29sb3IgPSBzdXBwb3J0c0NvbG9yICYmIGxldmVsICE9PSB1bmRlZmluZWQgPyBMT0dfTEVWRUxfQ09MT1JTW2xldmVsXSA6IHVuZGVmaW5lZDtcbiAgICBsZXQgcHJlZml4ID0gWyFpc0Jyb3dzZXIgJiYgbGV2ZWwgPyBsZXZlbC50b1VwcGVyQ2FzZSgpIDogdW5kZWZpbmVkLCBuYW1lUHJlZml4XVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oXCIgXCIpO1xuICAgIGxldCByZXNldENvbG9ycyA9IGZhbHNlO1xuICAgIGlmIChjb2xvcikge1xuICAgICAgY29uc3QgYXBwbHlSZXNldENvbG9yc1ByZWZpeCA9IHJlc2V0Q29sb3JzUHJlZml4IHx8IFwiaW5mb1wiID09PSBsZXZlbDtcbiAgICAgIGlmICghYXBwbHlSZXNldENvbG9yc1ByZWZpeCkgcmVzZXRDb2xvcnMgPSB0cnVlO1xuICAgICAgcHJlZml4ID0gYXBwbHlSZXNldENvbG9yc1ByZWZpeCA/IGNvbG9yICsgcHJlZml4ICsgTE9HX0xFVkVMX0NPTE9SX1JFU0VUIDogY29sb3IgKyBwcmVmaXg7XG4gICAgfVxuICAgIHJldHVybiB7IHByZWZpeCwgY29sb3JzOiBjb2xvciA/IHRydWUgOiBmYWxzZSwgcmVzZXRDb2xvcnMgfTtcbiAgfTtcbn1cblxuLyoqIFRydWUgd2hlbiBgc3RyZWFtYCBpcyBhIFRUWSBhbmQgdGhlIHRlcm1pbmFsIGlzIG5vdCBgZHVtYmAuICovXG5mdW5jdGlvbiBzdHJlYW1TdXBwb3J0c0NvbG9yKHN0cmVhbT86IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKGdsb2JhbFByb2Nlc3MgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2Ygc3RyZWFtICE9PSBcIm9iamVjdFwiIHx8IHN0cmVhbSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCB7IGlzVFRZIH0gPSBzdHJlYW0gYXMgeyBpc1RUWT86IHVua25vd24gfTtcbiAgaWYgKGlzVFRZICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHRlcm0gPSBnbG9iYWxQcm9jZXNzLmVudj8uVEVSTT8udG9Mb3dlckNhc2UoKTtcbiAgaWYgKFwiZHVtYlwiID09IHRlcm0pIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBQYXJzZSBhIHJhdyB2YWx1ZSBhcyB7QGxpbmsgTG9nTGV2ZWx9ICh0cmltbWVkLCBjYXNlLWluc2Vuc2l0aXZlKS4gKi9cbmZ1bmN0aW9uIHBhcnNlTG9nTGV2ZWwocmF3OiB1bmtub3duKTogTG9nTGV2ZWwgfCB1bmRlZmluZWQge1xuICBpZiAocmF3ID09PSB1bmRlZmluZWQgfHwgcmF3ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBsZXQgdGV4dCA9IHR5cGVvZiByYXcgPT09IFwic3RyaW5nXCIgPyByYXcgOiBTdHJpbmcocmF3KTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHtcbiAgICBpZiAoaSA+IDApIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0ZXh0LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHRleHQgPT09IG5vcm1hbGl6ZWQpIGJyZWFrO1xuICAgICAgdGV4dCA9IG5vcm1hbGl6ZWQ7XG4gICAgfVxuICAgIGlmICghdGV4dCkge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmICh0ZXh0IGluIExPR19MRVZFTF9SQU5LKSB7XG4gICAgICByZXR1cm4gdGV4dCBhcyBMb2dMZXZlbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIEFjdGl2ZSB0aHJlc2hvbGQgZnJvbSBgcHJvY2Vzcy5lbnYuTE9HX0xFVkVMYCwgZGVmYXVsdCB7QGxpbmsgREVGQVVMVF9MRVZFTH0uICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZlTGV2ZWwoKTogTG9nTGV2ZWwge1xuICByZXR1cm4gcGFyc2VMb2dMZXZlbChnbG9iYWxQcm9jZXNzPy5lbnY/LkxPR19MRVZFTCkgPz8gREVGQVVMVF9MRVZFTDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGByYXdgIG1lZXRzIHRoZSBjdXJyZW50IGBMT0dfTEVWRUxgIHRocmVzaG9sZC5cbiAqXG4gKiBQYXJzZXMgYHJhd2AgYXMgYSB7QGxpbmsgTG9nTGV2ZWx9OyB3aGVuIHBhcnNpbmcgZmFpbHMsIHJldHVybnNcbiAqIGBkZWZhdWx0UmVzdWx0YCBpZiBzdXBwbGllZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNob3VsZEVtaXQocmF3OiB1bmtub3duLCBkZWZhdWx0UmVzdWx0PzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICBjb25zdCBsZXZlbCA9IHBhcnNlTG9nTGV2ZWwocmF3KTtcbiAgaWYgKGxldmVsID09PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0UmVzdWx0ID8/IGZhbHNlO1xuICByZXR1cm4gTE9HX0xFVkVMX1JBTktbbGV2ZWxdID49IExPR19MRVZFTF9SQU5LW2FjdGl2ZUxldmVsKCldO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBjYWxsIGF0IGBsZXZlbGAgd291bGQgYmUgZW1pdHRlZCBhdCB0aGUgY3VycmVudFxuICogYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgdGhyZXNob2xkLiBVc2UgYmVmb3JlIGJ1aWxkaW5nIGV4cGVuc2l2ZSBkZWJ1Z1xuICogcGF5bG9hZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmIChpc0xldmVsRW5hYmxlZChcImRlYnVnXCIpKSB7XG4gKiAgIGxvZy5kZWJ1ZyhcIm1vdW50czpyZXNvbHZlclwiLCB7IGNvbnRyaWJ1dGlvbjogYXdhaXQgaGVhdnlTbmFwc2hvdCgpIH0pO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMZXZlbEVuYWJsZWQobGV2ZWw6IExvZ0xldmVsKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRFbWl0KGxldmVsKTtcbn1cblxuY29uc3QgTE9HR0VSX05BTUVfUkVHRVggPSAvXig/OlthLXpdW2EtejAtOSsuLV0qOlxcL1xcLyk/LipcXC8oW14vLl0rKSg/OlxcLlteL10rKT8kL2k7XG5cbi8qKlxuICogRGVyaXZlIHRoZSB0YWcgc3RyaW5nIGZyb20gYSBsb2dnZXIgbmFtZSwgcGx1Z2luLCBvciBwYXRoLiBTbGFzaC0gYW5kXG4gKiBVUkwtc2hhcGVkIHN0cmluZ3MgdXNlIHRoZSBsYXN0IHBhdGggc2VnbWVudCAoZXh0ZW5zaW9uIHN0cmlwcGVkKTsgcGxhaW5cbiAqIHN0cmluZ3MgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4gRW1wdHkgb3IgbWlzc2luZyBuYW1lcyAtPiBgdW5kZWZpbmVkYFxuICogKHVudGFnZ2VkIHNpbmspLlxuICovXG5mdW5jdGlvbiBleHRyYWN0TG9nZ2VyTmFtZShsb2dnZXJOYW1lOiBOYW1lTGlrZSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghbG9nZ2VyTmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBsb2dnZXJOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBsb2dnZXJOYW1lLm1hdGNoKExPR0dFUl9OQU1FX1JFR0VYKTtcbiAgICByZXR1cm4gbWF0Y2g/LlsxXSA/PyBsb2dnZXJOYW1lO1xuICB9XG4gIHJldHVybiBleHRyYWN0TG9nZ2VyTmFtZShsb2dnZXJOYW1lLm5hbWUpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgdGFnZ2VkIGxvZ2dlciBmb3IgYSBwbHVnaW4gb3IgbW9kdWxlLlxuICpcbiAqIFRoZSB0YWcgaXMgYFtuYW1lXWAgd2hlbiBgbG9nZ2VyTmFtZWAgaXMgYSBub24tZW1wdHkgc3RyaW5nLCBhXG4gKiB7QGxpbmsgTmFtZUxpa2V9IHdpdGggYG5hbWVgLCBvciBhIGZpbGUgLyBVUkwgcGF0aCAodGhlIGJhc2VuYW1lIHdpdGhvdXRcbiAqIGV4dGVuc2lvbiBpcyB1c2VkKS4gVGhlIGNvbnNvbGUgc2luayBwcmVwZW5kcyBgTEVWRUwgW25hbWVdYCBvbiBOb2RlL0J1blxuICogaG9zdHMgb3IgYFtuYW1lXWAgYWxvbmUgaW4gYnJvd3NlcnMgdmlhIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9LlxuICpcbiAqIENhbGxzIGJlbG93IGBwcm9jZXNzLmVudi5MT0dfTEVWRUxgIGFyZSBkcm9wcGVkIGJ5IHtAbGluayBzaG91bGRFbWl0fSBiZWZvcmVcbiAqIHRoZSBzaW5rIGZvcm1hdHMgb3Igd3JpdGVzIHRoZSBsaW5lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuICpcbiAqIGNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJnZW5pZS9jaGF0XCIpO1xuICogbG9nZ2VyLmluZm8oXCJzdGFydGluZ1wiKTtcbiAqIGxvZ2dlci53YXJuKFwibWlzc2luZyBvcHRpb25hbCBjb25maWdcIiwgeyByZWFzb246IFwibm8gZW52IHZhclwiIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VyKGxvZ2dlck5hbWU6IE5hbWVMaWtlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogTG9nZ2VyIHtcbiAgY29uc3QgbmFtZSA9IGV4dHJhY3RMb2dnZXJOYW1lKGxvZ2dlck5hbWUpO1xuICByZXR1cm4gY3JlYXRlTG9nZ2VyKG5hbWUpO1xufVxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHOzs7Ozs7Ozs7QUFFSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFldkQsTUFBTSxhQUFhLEdBQUksVUFBd0MsQ0FBQyxPQUFPLENBQUM7QUFDeEUsTUFBTSxTQUFTLEdBQUksVUFBZ0MsQ0FBQyxHQUFHLENBQUM7QUFFeEQ7Ozs7O0dBS0c7QUFDSCw4REFBOEQ7QUFDOUQsTUFBTSxtQkFBbUIsR0FDdkIsYUFBYSxJQUFJLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEtBQUssVUFBVTtJQUNoRSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU07SUFDdEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQiw4REFBOEQ7QUFDOUQsTUFBTSxtQkFBbUIsR0FDdkIsYUFBYSxJQUFJLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEtBQUssVUFBVTtJQUNoRSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU07SUFDdEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUVoQixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBQy9ELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3ZDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNyQixDQUFDO0FBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDekMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUss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O0lBQ3ZELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxhQUFhLElBQUksS0FBSyxDQUFDO0lBQ3ZELE9BQU8sY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWU7SUFDNUMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0saUJBQWlCLEdBQUcsd0RBQXdELENBQUM7QUFFbkY7Ozs7O0dBS0c7QUFDSCxTQUFTLGlCQUFpQixDQUFDLFVBQXlDO0lBQ2xFLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDbEMsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEQsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUNELE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxVQUF5QztJQUM5RCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUYWdnZWQsIGxldmVsZWQgbG9nZ2luZyBmb3IgZXZlcnkgcnVudGltZSAtIHRoZSBvbmUgbG9nZ2VyIHRoZSB3aG9sZVxuICogbW9ub3JlcG8gc2hhcmVzLlxuICpcbiAqIEltcG9ydCB0aGlzIG1vZHVsZSBpbnN0ZWFkIG9mIGNvbnN0cnVjdGluZyBwYWNrYWdlLWxvY2FsIGNvbnNvbGUgd3JhcHBlcnMgc29cbiAqIGxvZyBsZXZlbHMsIHRhZ3MsIGZvcm1hdHRpbmcsIGFuZCBicm93c2VyIGJlaGF2aW9yIHJlbWFpbiBjb25zaXN0ZW50LlxuICpcbiAqIHtAbGluayBsb2dnZXJ9IHJlc29sdmVzIGEgdGFnZ2VkIHtAbGluayBMb2dnZXJ9IHRocm91Z2ggYSBzeW5jaHJvbm91cyBjb25zb2xlXG4gKiBzaW5rLCB0aGVuIHVwZ3JhZGVzIGl0cyBzZXJ2ZXItc2lkZSBmb3JtYXR0ZXIgd2hlbiBgbm9kZTp1dGlsYCByZXNvbHZlcy5cbiAqIEtlZXBpbmcgdGhlIHNpbmsgZGVwZW5kZW5jeS1mcmVlIHByZXZlbnRzIGJyb3dzZXIgYnVuZGxlcnMgZnJvbSByZXRhaW5pbmcgYW5cbiAqIG9wdGlvbmFsIGJhcmUgaW1wb3J0IHRoYXQgZG93bnN0cmVhbSBhcHBzIHdvdWxkIHN0aWxsIGhhdmUgdG8gaW5zdGFsbC5cbiAqIHtAbGluayBMb2dMZXZlbH0gZmlsdGVyaW5nIHJ1bnMgdGhyb3VnaCB7QGxpbmsgc2hvdWxkRW1pdH0gaW4gcGVyLWxldmVsXG4gKiB3cmFwcGVycyBhcm91bmQgdGhlIHBsYXRmb3JtIGNvbnNvbGUgb3Igc3RkZXJyIHNpbmsuXG4gKlxuICogVGhlIGNvbnNvbGUgZmFsbGJhY2sgd3JpdGVzIGRlYnVnL2luZm8gdG8gYHByb2Nlc3Muc3Rkb3V0YCBhbmQgd2Fybi9lcnJvciB0b1xuICogYHByb2Nlc3Muc3RkZXJyYCB3aGVuIGF2YWlsYWJsZSAoQnVuIGBpbnNwZWN0YCBwZXIgYXJndW1lbnQgd2hlblxuICogYExPR19CVU5fQ09OU09MRV9ESVNBQkxFRGAgaXMgdW5zZXQsIG90aGVyd2lzZSBgbm9kZTp1dGlsYCBpbnNwZWN0aW9uKSwgb3JcbiAqIGRlbGVnYXRlcyB0byBnbG9iYWwgYGNvbnNvbGUuKmAgd2hlbiBwcm9jZXNzIHN0cmVhbXMgYXJlIHVuYXZhaWxhYmxlLiBCcm93c2VyIGhvc3RzIG9taXRcbiAqIHRoZSBgTEVWRUxgIHRleHQgcHJlZml4IChkZXZ0b29scyBzaG93IHNldmVyaXR5KSBhbmQga2VlcCBvbmx5IHRoZSBgW25hbWVdYFxuICogdGFnLlxuICpcbiAqIEVudiB0b2dnbGVzOiBgTE9HX0xFVkVMYCAocmVhZCBwZXIgY2FsbCkgYW5kIGBMT0dfQlVOX0NPTlNPTEVfRElTQUJMRURgXG4gKiAocmVhZCBvbmNlIGR1cmluZyBmYWN0b3J5IGluaXQpLlxuICpcbiAqIEJyb3dzZXItc2FmZTogYHByb2Nlc3NgIC8gYEJ1bmAgLyBgd2luZG93YCAvIGBkb2N1bWVudGAgYXJlIGFsbCByZWFjaGVkXG4gKiB0aHJvdWdoIGBnbG9iYWxUaGlzYCBhbmQgZ3VhcmRlZCwgYW5kIGBub2RlOnV0aWxgIGlzIGltcG9ydGVkIE9OTFkgb24gYSBob3N0XG4gKiB0aGF0IGhhcyBgcHJvY2Vzcy5zdGRlcnJgIC0gbmV2ZXIgaW4gYSBicm93c2VyLCB3aGVyZSB0aGUgc3BlY2lmaWVyIGlzXG4gKiB1bnJlc29sdmFibGUgLSBzbyB0aGUgbW9kdWxlIHdvcmtzIGluIGFueSBydW50aW1lLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSBcIi4vZnVuY3Rpb24tdXRpbHMudHNcIjtcbmltcG9ydCB7IHR5cGUgTmFtZUxpa2UsIHRvQm9vbGVhbiB9IGZyb20gXCIuL29iamVjdC50c1wiO1xuXG4vKiogYHByb2Nlc3NgLXNoYXBlZCB2aWV3IG9mZiBgZ2xvYmFsVGhpc2AsIHNvIG5vIG5vZGUgdHlwZXMgYXJlIG5lZWRlZC4gKi9cbmludGVyZmFjZSBQcm9jZXNzTGlrZSB7XG4gIGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIHN0ZG91dD86IHsgd3JpdGU/OiAoY2h1bms6IHN0cmluZykgPT4gdm9pZDsgaXNUVFk/OiB1bmtub3duIH07XG4gIHN0ZGVycj86IHsgd3JpdGU/OiAoY2h1bms6IHN0cmluZykgPT4gdm9pZDsgaXNUVFk/OiB1bmtub3duIH07XG59XG5cbi8qKiBgQnVuYC1zaGFwZWQgdmlldyBvZmYgYGdsb2JhbFRoaXNgLCBzbyBubyBgQHR5cGVzL2J1bmAgaXMgbmVlZGVkLiAqL1xuaW50ZXJmYWNlIEJ1bkxpa2Uge1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBpbnNwZWN0PzogKHZhbHVlOiB1bmtub3duLCBvcHRpb25zPzogeyBjb2xvcnM/OiBib29sZWFuOyBkZXB0aD86IG51bWJlciB9KSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IGdsb2JhbFByb2Nlc3MgPSAoZ2xvYmFsVGhpcyBhcyB7IHByb2Nlc3M/OiBQcm9jZXNzTGlrZSB9KS5wcm9jZXNzO1xuY29uc3QgZ2xvYmFsQnVuID0gKGdsb2JhbFRoaXMgYXMgeyBCdW4/OiBCdW5MaWtlIH0pLkJ1bjtcblxuLyoqXG4gKiBOb2RlIGBwcm9jZXNzLnN0ZGVycmAgd2hlbiB3cml0YWJsZSwgZWxzZSBgdW5kZWZpbmVkYCAoc3RhYmxlIGZvciB0aGVcbiAqIHByb2Nlc3MpLiBUeXBlZCBsb29zZWx5IChgYW55YCkgYmVjYXVzZSBpdCBpcyBoYW5kZWQgdG8gdGhlIGNvbnNvbGUgc2luaydzXG4gKiBgLndyaXRlYCwgd2hpY2ggb3VyIHN0cnVjdHVyYWwge0BsaW5rIFByb2Nlc3NMaWtlfSBzaGFwZSBkb2VzIG5vdCBzYXRpc2Z5XG4gKiBub21pbmFsbHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBnbG9iYWxQcm9jZXNzU3RkRXJyOiBhbnkgPVxuICBnbG9iYWxQcm9jZXNzICYmIHR5cGVvZiBnbG9iYWxQcm9jZXNzLnN0ZGVycj8ud3JpdGUgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZ2xvYmFsUHJvY2Vzcy5zdGRlcnJcbiAgICA6IHVuZGVmaW5lZDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBnbG9iYWxQcm9jZXNzU3RkT3V0OiBhbnkgPVxuICBnbG9iYWxQcm9jZXNzICYmIHR5cGVvZiBnbG9iYWxQcm9jZXNzLnN0ZG91dD8ud3JpdGUgPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZ2xvYmFsUHJvY2Vzcy5zdGRvdXRcbiAgICA6IHVuZGVmaW5lZDtcblxuY29uc3QgTE9HX0xFVkVMUyA9IFtcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiXSBhcyBjb25zdDtcbmNvbnN0IExPR19MRVZFTF9SQU5LID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICBMT0dfTEVWRUxTLm1hcCgobGV2ZWwsIGluZGV4KSA9PiBbbGV2ZWwsIGluZGV4XSksXG4pIGFzIFJlY29yZDxMb2dMZXZlbCwgbnVtYmVyPjtcbmNvbnN0IExPR19MRVZFTF9DT0xPUlMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIExPR19MRVZFTFMubWFwKChsZXZlbCkgPT4ge1xuICAgIGxldCBjb2xvciA9IFwiXFx4MWJbOTBtXCI7IC8vIGdyYXlcbiAgICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgICBjYXNlIFwiaW5mb1wiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzRtXCI7IC8vIGJsdWVcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwid2FyblwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzNtXCI7IC8vIHllbGxvd1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICBjb2xvciA9IFwiXFx4MWJbMzFtXCI7IC8vIHJlZFxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIFtsZXZlbCwgY29sb3JdO1xuICB9KSxcbikgYXMgUmVjb3JkPExvZ0xldmVsLCBzdHJpbmc+O1xuY29uc3QgTE9HX0xFVkVMX0NPTE9SX1JFU0VUID0gXCJcXHgxYlswbVwiO1xuY29uc3QgREVGQVVMVF9MRVZFTDogTG9nTGV2ZWwgPSBcImluZm9cIjtcblxuLyoqXG4gKiBTdXBwb3J0ZWQgc2V2ZXJpdGllcywgbG93ZXN0IHRvIGhpZ2hlc3Q6IGBkZWJ1Z2AsIGBpbmZvYCwgYHdhcm5gLCBgZXJyb3JgLlxuICogQSBjYWxsIGJlbG93IHRoZSBhY3RpdmUgdGhyZXNob2xkIGlzIGRpc2NhcmRlZCBiZWZvcmUgYW55IHN0cmluZyB3b3JrIG9yXG4gKiBzaW5rIEkvTy5cbiAqXG4gKiBUaGUgdGhyZXNob2xkIGNvbWVzIGZyb20gYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgb24gZXZlcnkgY2FsbFxuICogKGNhc2UtaW5zZW5zaXRpdmUsIGRlZmF1bHQgYGluZm9gIHdoZW4gdW5zZXQsIGVtcHR5LCBvciB1bmtub3duKSBzbyB0ZXN0XG4gKiBydW5uZXJzIGFuZCBlbWJlZGRlcnMgY2FuIGNoYW5nZSB2ZXJib3NpdHkgYWZ0ZXIgaW1wb3J0IHdpdGhvdXQgcmVzdGFydGluZ1xuICogdGhlIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gKHR5cGVvZiBMT0dfTEVWRUxTKVtudW1iZXJdO1xuXG4vKipcbiAqIERlcGVuZGVuY3ktZnJlZSBsZXZlbGVkIGxvZ2dlci4gU3RhbmRhcmQgbWV0aG9kcyBob25vciBgTE9HX0xFVkVMYDsgYHN0YXJ0YFxuICogYW5kIGBzdWNjZXNzYCBhcmUgaW5mb3JtYXRpb25hbCBhbGlhc2VzIHdpdGggZGlzdGluY3QgcHJlc2VudGF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBMb2dnZXIgPSB7XG4gIFtLIGluIExvZ0xldmVsXTogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufSAmIHtcbiAgLyoqIFN1Y2Nlc3MgbWVzc2FnZSBlbWl0dGVkIGF0IGBpbmZvYCBsZXZlbC4gKi9cbiAgc3VjY2VzczogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xuICAvKiogU3RhcnQgLyBpbi1wcm9ncmVzcyBtZXNzYWdlIGVtaXR0ZWQgYXQgYGluZm9gIGxldmVsLiAqL1xuICBzdGFydDogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkO1xufTtcblxuLyoqIGAobmFtZT8pID0+IExvZ2dlcmAgc2luayBjb25zdHJ1Y3RvciByZXR1cm5lZCBieSB0aGUgaW5pdC10aW1lIGZhY3RvcnkgY2hhaW4uICovXG50eXBlIExvZ2dlckZhY3RvcnkgPSAobmFtZT86IHN0cmluZykgPT4gTG9nZ2VyO1xuXG4vKipcbiAqIENvbnNvbGUge0BsaW5rIExvZ2dlckZhY3Rvcnl9OyBhbHdheXMgc3VjY2VlZHMuXG4gKlxuICogV2hlbiBwcm9jZXNzIHN0cmVhbXMgYXJlIGF2YWlsYWJsZSwgZm9ybWF0cyBlYWNoIGxpbmUgYW5kIHdyaXRlcyBkZWJ1Zy9pbmZvXG4gKiB0byBzdGRvdXQgYW5kIHdhcm4vZXJyb3IgdG8gc3RkZXJyLiBCdW4gYGluc3BlY3RgIGZvcm1hdHMgZWFjaCBhcmd1bWVudCB3aGVuXG4gKiBlbmFibGVkOyBvdGhlcndpc2UgYHV0aWwuaW5zcGVjdGAgd2hlbiBgbm9kZTp1dGlsYCBsb2Fkcywgb3IgYVxuICogYEpTT04uc3RyaW5naWZ5YCBmYWxsYmFjayB3aGVuIGl0IGRvZXMgbm90LiBXaGVuIHByb2Nlc3Mgc3RyZWFtcyBhcmVcbiAqIHVuYXZhaWxhYmxlIChldmVyeSBicm93c2VyKSwgYmluZHNcbiAqIHtAbGluayBjcmVhdGVGb3JtYXR0ZXJ9IHByZWZpeGVzIGludG8gZ2xvYmFsIGBjb25zb2xlLipgIGNhbGxzIGFuZCBza2lwcyB0aGVcbiAqIGBub2RlOnV0aWxgIGltcG9ydCBlbnRpcmVseS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29uc29sZUxvZ2dlckZhY3RvcnkoXG4gIGdsb2JhbFByb2Nlc3NTdGRPdXQ6IGFueSxcbiAgZ2xvYmFsUHJvY2Vzc1N0ZEVycjogYW55LFxuKTogUHJvbWlzZTxMb2dnZXJGYWN0b3J5PiB7XG4gIC8vIEluZGlyZWN0IHNwZWNpZmllciBzbyB0aGlzIGJyb3dzZXItc2FmZSBtb2R1bGUgZG9lc24ndCBzdGF0aWNhbGx5IHB1bGwgaW5cbiAgLy8gbm9kZSB0eXBlczogYG5vZGU6dXRpbGAgaXMgb3B0aW9uYWwgKHRoZSBKU09OIGZhbGxiYWNrIGNvdmVycyBpdHMgYWJzZW5jZSkuXG4gIGNvbnN0IG5vZGVVdGlsID0gXCJub2RlOnV0aWxcIjtcbiAgLy8gR2F0ZWQsIG5vdCBqdXN0IGNhdWdodDogdGhlIGluZGlyZWN0IHNwZWNpZmllciBkZWZlYXRzIGJ1bmRsZXIgYW5hbHlzaXMgYnlcbiAgLy8gZGVzaWduLCBzbyBhIGNsaWVudCBidWlsZCBlbWl0cyBhIGxpdGVyYWwgYGltcG9ydChcIm5vZGU6dXRpbFwiKWAgdGhhdCBub1xuICAvLyBicm93c2VyIGNhbiByZXNvbHZlLCBhbmQgdGhlIGNhdWdodCByZWplY3Rpb24gc3RpbGwgc3VyZmFjZWQgYXMgYSBjb25zb2xlXG4gIC8vIGVycm9yLiBgdXRpbHNgIG9ubHkgZmVlZHMgdGhlIHByb2Nlc3Mtc3RyZWFtIGJyYW5jaCBvZiB0aGUgZW1pdHRlciBiZWxvdyxcbiAgLy8gc28gbm8gd3JpdGFibGUgc3RyZWFtIG1lYW5zIHRoZSBpbXBvcnQgaGFzIG5vdGhpbmcgdG8gc2VydmUgYW5kIGlzIHNraXBwZWQuXG4gIGNvbnN0IHV0aWxzOiB7IGluc3BlY3Q/OiBhbnkgfSB8IHVuZGVmaW5lZCA9XG4gICAgZ2xvYmFsUHJvY2Vzc1N0ZE91dCA9PT0gdW5kZWZpbmVkICYmIGdsb2JhbFByb2Nlc3NTdGRFcnIgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogYXdhaXQgaW1wb3J0KC8qIEB2aXRlLWlnbm9yZSAqLyBub2RlVXRpbCkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgcmV0dXJuIGNvbnNvbGVMb2dnZXJGYWN0b3J5KGdsb2JhbFByb2Nlc3NTdGRPdXQsIGdsb2JhbFByb2Nlc3NTdGRFcnIsIHV0aWxzKTtcbn1cblxuLyoqXG4gKiBUaGUgc3luY2hyb25vdXMgY29yZSBvZiB7QGxpbmsgY3JlYXRlQ29uc29sZUxvZ2dlckZhY3Rvcnl9LCBzcGxpdCBvdXQgc28gdGhlXG4gKiBzYW1lIGVtaXR0ZXIgYWxzbyBzZXJ2ZXMgYXMgdGhlIGJvb3RzdHJhcCBzaW5rIGJlZm9yZSBhbnkgYXN5bmMgZmFjdG9yeSBoYXNcbiAqIHJlc29sdmVkLiBgdXRpbHNgIGlzIGBub2RlOnV0aWxgIHdoZW4gaXQgbG9hZGVkOyB3aXRob3V0IGl0LCBvYmplY3QgYXJndW1lbnRzXG4gKiBmb3JtYXQgdGhyb3VnaCB0aGUgYEpTT04uc3RyaW5naWZ5YCBmYWxsYmFjay5cbiAqL1xuZnVuY3Rpb24gY29uc29sZUxvZ2dlckZhY3RvcnkoXG4gIGdsb2JhbFByb2Nlc3NTdGRPdXQ6IGFueSxcbiAgZ2xvYmFsUHJvY2Vzc1N0ZEVycjogYW55LFxuICB1dGlscz86IHsgaW5zcGVjdD86IGFueSB9IHwgdW5kZWZpbmVkLFxuKTogTG9nZ2VyRmFjdG9yeSB7XG4gIGNvbnN0IGJ1bkluc3BlY3QgPVxuICAgIGdsb2JhbEJ1biAhPT0gdW5kZWZpbmVkICYmICF0b0Jvb2xlYW4oZ2xvYmFsQnVuLmVudj8uTE9HX0JVTl9DT05TT0xFX0RJU0FCTEVEKVxuICAgICAgPyBnbG9iYWxCdW4uaW5zcGVjdFxuICAgICAgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJlc2V0Q29sb3JzUHJlZml4ID0gYnVuSW5zcGVjdCAhPT0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGluc3BlY3QgPSAoYXJnOiBhbnksIGNvbG9ycz86IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpIHx8ICh0eXBlb2YgYXJnID09PSBcIm9iamVjdFwiICYmIGFyZyAhPT0gbnVsbCkpIHtcbiAgICAgIGlmIChidW5JbnNwZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGJ1bkluc3BlY3QoYXJnLCB7XG4gICAgICAgICAgY29sb3JzOiBjb2xvcnMsXG4gICAgICAgICAgZGVwdGg6IHV0aWxzPy5pbnNwZWN0Py5kZWZhdWx0T3B0aW9ucz8uZGVwdGggPz8gdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdXRpbHMuaW5zcGVjdChhcmcsIHtcbiAgICAgICAgICAuLi51dGlscz8uaW5zcGVjdD8uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgICAgY29sb3JzOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZywgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIFwiW0NpcmN1bGFyXVwiO1xuICAgICAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB2YWx1ZSBhcyBFcnJvciAmIHsgY2F1c2U/OiB1bmtub3duOyBlcnJvcnM/OiB1bmtub3duIH07XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZXJyb3IpKSxcbiAgICAgICAgICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGVycm9yLnN0YWNrLFxuICAgICAgICAgICAgICAuLi4oZXJyb3IuY2F1c2UgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBjYXVzZTogZXJyb3IuY2F1c2UgfSksXG4gICAgICAgICAgICAgIC4uLihlcnJvci5lcnJvcnMgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBlcnJvcnM6IGVycm9yLmVycm9ycyB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBTdHJpbmcoYXJnKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZmFjdG9yeSA9IChuYW1lPzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbG9nZ2VyID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgTE9HX0xFVkVMUy5tYXAoKGxldmVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZWZlcnJlZFN0cmVhbSA9XG4gICAgICAgICAgbGV2ZWwgPT09IFwid2FyblwiIHx8IGxldmVsID09PSBcImVycm9yXCIgPyBnbG9iYWxQcm9jZXNzU3RkRXJyIDogZ2xvYmFsUHJvY2Vzc1N0ZE91dDtcbiAgICAgICAgY29uc3Qgc3RyZWFtID0gcHJlZmVycmVkU3RyZWFtID8/IGdsb2JhbFByb2Nlc3NTdGRFcnIgPz8gZ2xvYmFsUHJvY2Vzc1N0ZE91dDtcbiAgICAgICAgY29uc3QgcHJlZml4Rm9ybWF0dGVyID0gY3JlYXRlRm9ybWF0dGVyKG5hbWUsIHN0cmVhbSwgcmVzZXRDb2xvcnNQcmVmaXgpO1xuICAgICAgICBjb25zdCB7IHByZWZpeCwgY29sb3JzLCByZXNldENvbG9ycyB9ID0gcHJlZml4Rm9ybWF0dGVyKGxldmVsKTtcbiAgICAgICAgY29uc3QgZW1pdHRlciA9ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIGlmICghc2hvdWxkRW1pdChsZXZlbCwgdHJ1ZSkpIHJldHVybjtcbiAgICAgICAgICBpZiAoc3RyZWFtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VQYXJ0cyA9IHByZWZpeCA/IFtwcmVmaXhdIDogW107XG4gICAgICAgICAgICBtZXNzYWdlUGFydHMucHVzaCguLi5hcmdzLm1hcCgoYXJnKSA9PiBpbnNwZWN0KGFyZywgY29sb3JzKSkpO1xuICAgICAgICAgICAgaWYgKHJlc2V0Q29sb3JzKSBtZXNzYWdlUGFydHMucHVzaChMT0dfTEVWRUxfQ09MT1JfUkVTRVQpO1xuICAgICAgICAgICAgc3RyZWFtLndyaXRlKG1lc3NhZ2VQYXJ0cy5qb2luKFwiIFwiKSArIFwiXFxuXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbGV2ZWxGbiA9IGNvbnNvbGVbbGV2ZWxdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsZXZlbEZuICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgbGV2ZWxGbiA9IGNvbnNvbGUubG9nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHByZWZpeCkgbGV2ZWxGbiA9IGxldmVsRm4uYmluZChjb25zb2xlLCBwcmVmaXgpO1xuICAgICAgICAgICAgbGV2ZWxGbiguLi5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBbbGV2ZWwsIGVtaXR0ZXJdO1xuICAgICAgfSksXG4gICAgKSBhcyBMb2dnZXI7XG4gICAgLy8gQ29udmVuaWVuY2UgbGV2ZWxzIHNoYXJlIHRoZSBpbmZvIHNpbmsuXG4gICAgbG9nZ2VyLnN1Y2Nlc3MgPSBsb2dnZXIuaW5mbztcbiAgICBsb2dnZXIuc3RhcnQgPSBsb2dnZXIuaW5mbztcbiAgICByZXR1cm4gbG9nZ2VyO1xuICB9O1xuICBjb25zdCBkZWZhdWx0RmFjdG9yeSA9IG1lbW9pemUoZmFjdG9yeSk7XG4gIHJldHVybiAobmFtZT86IHN0cmluZykgPT4gKG5hbWUgPyBmYWN0b3J5KG5hbWUpIDogZGVmYXVsdEZhY3RvcnkoKSk7XG59XG5cbi8qKlxuICogRnVsbCBjb25zb2xlIHNpbmsgd2l0aCBvcHRpb25hbCBgbm9kZTp1dGlsYCBpbnNwZWN0aW9uLiBNZW1vaXplZCBzb1xuICogY29uY3VycmVudCBhbmQgcmVwZWF0IGNhbGxlcnMgc2hhcmUgb25lIGluLWZsaWdodCBwcm9taXNlIGFuZCBzZXR0bGVkIHJlc3VsdC5cbiAqL1xuY29uc3QgcmVzb2x2ZUZhY3RvcnkgPSBtZW1vaXplKGFzeW5jICgpOiBQcm9taXNlPExvZ2dlckZhY3Rvcnk+ID0+IHtcbiAgcmV0dXJuIGNyZWF0ZUNvbnNvbGVMb2dnZXJGYWN0b3J5KGdsb2JhbFByb2Nlc3NTdGRPdXQsIGdsb2JhbFByb2Nlc3NTdGRFcnIpO1xufSk7XG5cbi8qKlxuICogQWN0aXZlIGZhY3Rvcnkgc3RhcnRzIGFzIGEgc3luYyBjb25zb2xlIHNpbmsgKG5vIGBhd2FpdGAsIHNvIHRoaXMgbW9kdWxlXG4gKiBmaW5pc2hlcyBldmFsdWF0aW5nIGltbWVkaWF0ZWx5KSBhbmQgc3dhcHMgdG8ge0BsaW5rIHJlc29sdmVGYWN0b3J5fSdzXG4gKiByZXN1bHQgd2hlbiBzZXJ2ZXItc2lkZSBhcmd1bWVudCBpbnNwZWN0aW9uIGlzIHJlYWR5LlxuICovXG5sZXQgYWN0aXZlRmFjdG9yeTogTG9nZ2VyRmFjdG9yeSA9IGNvbnNvbGVMb2dnZXJGYWN0b3J5KGdsb2JhbFByb2Nlc3NTdGRPdXQsIGdsb2JhbFByb2Nlc3NTdGRFcnIpO1xudm9pZCByZXNvbHZlRmFjdG9yeSgpLnRoZW4oXG4gIChmYWN0b3J5KSA9PiB7XG4gICAgYWN0aXZlRmFjdG9yeSA9IGZhY3Rvcnk7XG4gIH0sXG4gICgpID0+IHtcbiAgICAvLyBLZWVwIHRoZSBzeW5jIGNvbnNvbGUgc2luazsgbmV2ZXIgbGVhdmUgaW1wb3J0ZXJzIHdpdGhvdXQgYSBmYWN0b3J5LlxuICB9LFxuKTtcblxuLyoqXG4gKiBCdWlsZCBhIGxvZ2dlciB0aGF0IHJlYmluZHMgd2hlbiB7QGxpbmsgYWN0aXZlRmFjdG9yeX0gdXBncmFkZXMuIENhbGxlcnMgdGhhdFxuICogY2FwdHVyZSBgY29uc3QgbG9nID0gbG9nZ2VyKFwieFwiKWAgYXQgbW9kdWxlIHNjb3BlIHN0aWxsIGdldCB0aGUgdXBncmFkZWRcbiAqIGZvcm1hdHRlciBvbmNlIGl0IGFycml2ZXMsIHdpdGhvdXQgZXZlcnkgY2FsbCBzaXRlIHdhaXRpbmcgb24gYSBwcm9taXNlLlxuICovXG5mdW5jdGlvbiBjcmVhdGVMb2dnZXIobmFtZT86IHN0cmluZyk6IExvZ2dlciB7XG4gIGxldCBib3VuZDogeyBmYWN0b3J5OiBMb2dnZXJGYWN0b3J5OyBsb2dnZXI6IExvZ2dlciB9IHwgdW5kZWZpbmVkO1xuICBjb25zdCBzaW5rID0gKCk6IExvZ2dlciA9PiB7XG4gICAgaWYgKGJvdW5kPy5mYWN0b3J5ICE9PSBhY3RpdmVGYWN0b3J5KSB7XG4gICAgICBib3VuZCA9IHsgZmFjdG9yeTogYWN0aXZlRmFjdG9yeSwgbG9nZ2VyOiBhY3RpdmVGYWN0b3J5KG5hbWUpIH07XG4gICAgfVxuICAgIHJldHVybiBib3VuZC5sb2dnZXI7XG4gIH07XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgWy4uLkxPR19MRVZFTFMsIFwic3VjY2Vzc1wiLCBcInN0YXJ0XCJdLm1hcCgobGV2ZWwpID0+IFtcbiAgICAgIGxldmVsLFxuICAgICAgKC4uLmFyZ3M6IGFueVtdKSA9PiBzaW5rKClbbGV2ZWwgYXMga2V5b2YgTG9nZ2VyXSguLi5hcmdzKSxcbiAgICBdKSxcbiAgKSBhcyBMb2dnZXI7XG59XG5cbi8qKlxuICogQnVpbGQgYSBsaW5lIHByZWZpeCBvZiBgTEVWRUwgW25hbWVdYCBvbiBOb2RlL0J1biBob3N0cywgb3IgYFtuYW1lXWAgYWxvbmVcbiAqIGluIGJyb3dzZXJzIChlaXRoZXIgcGFydCBvbWl0dGVkIHdoZW4gYWJzZW50KS4gQXBwbGllcyBwZXItbGV2ZWwgQU5TSSBjb2xvclxuICogd2hlbiBgc3RyZWFtU3VwcG9ydHNDb2xvcmAgaXMgdHJ1ZSBmb3IgdGhlIGdpdmVuIHN0ZGVyciBzdHJlYW0uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUZvcm1hdHRlcihcbiAgbmFtZTogYW55LFxuICBzdHJlYW06IGFueSxcbiAgcmVzZXRDb2xvcnNQcmVmaXg/OiBib29sZWFuLFxuKTogKGxldmVsPzogTG9nTGV2ZWwpID0+IHsgcHJlZml4OiBzdHJpbmc7IGNvbG9yczogYm9vbGVhbjsgcmVzZXRDb2xvcnM6IGJvb2xlYW4gfSB7XG4gIGNvbnN0IGdsb2IgPSBnbG9iYWxUaGlzIGFzIHsgd2luZG93PzogdW5rbm93bjsgZG9jdW1lbnQ/OiB1bmtub3duIH07XG4gIGNvbnN0IGlzQnJvd3NlciA9IGdsb2Iud2luZG93ICE9PSB1bmRlZmluZWQgJiYgZ2xvYi5kb2N1bWVudCAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCBzdXBwb3J0c0NvbG9yID0gIWlzQnJvd3NlciA/IHN0cmVhbVN1cHBvcnRzQ29sb3Ioc3RyZWFtKSA6IGZhbHNlO1xuICBjb25zdCBuYW1lUHJlZml4ID0gbmFtZSA/IFwiW1wiICsgbmFtZSArIFwiXVwiIDogdW5kZWZpbmVkO1xuICByZXR1cm4gKGxldmVsPzogTG9nTGV2ZWwpID0+IHtcbiAgICBjb25zdCBjb2xvciA9IHN1cHBvcnRzQ29sb3IgJiYgbGV2ZWwgIT09IHVuZGVmaW5lZCA/IExPR19MRVZFTF9DT0xPUlNbbGV2ZWxdIDogdW5kZWZpbmVkO1xuICAgIGxldCBwcmVmaXggPSBbIWlzQnJvd3NlciAmJiBsZXZlbCA/IGxldmVsLnRvVXBwZXJDYXNlKCkgOiB1bmRlZmluZWQsIG5hbWVQcmVmaXhdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbihcIiBcIik7XG4gICAgbGV0IHJlc2V0Q29sb3JzID0gZmFsc2U7XG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICBjb25zdCBhcHBseVJlc2V0Q29sb3JzUHJlZml4ID0gcmVzZXRDb2xvcnNQcmVmaXggfHwgXCJpbmZvXCIgPT09IGxldmVsO1xuICAgICAgaWYgKCFhcHBseVJlc2V0Q29sb3JzUHJlZml4KSByZXNldENvbG9ycyA9IHRydWU7XG4gICAgICBwcmVmaXggPSBhcHBseVJlc2V0Q29sb3JzUHJlZml4ID8gY29sb3IgKyBwcmVmaXggKyBMT0dfTEVWRUxfQ09MT1JfUkVTRVQgOiBjb2xvciArIHByZWZpeDtcbiAgICB9XG4gICAgcmV0dXJuIHsgcHJlZml4LCBjb2xvcnM6IGNvbG9yID8gdHJ1ZSA6IGZhbHNlLCByZXNldENvbG9ycyB9O1xuICB9O1xufVxuXG4vKiogVHJ1ZSB3aGVuIGBzdHJlYW1gIGlzIGEgVFRZIGFuZCB0aGUgdGVybWluYWwgaXMgbm90IGBkdW1iYC4gKi9cbmZ1bmN0aW9uIHN0cmVhbVN1cHBvcnRzQ29sb3Ioc3RyZWFtPzogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoZ2xvYmFsUHJvY2VzcyA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBzdHJlYW0gIT09IFwib2JqZWN0XCIgfHwgc3RyZWFtID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IHsgaXNUVFkgfSA9IHN0cmVhbSBhcyB7IGlzVFRZPzogdW5rbm93biB9O1xuICBpZiAoaXNUVFkgIT09IHRydWUpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgdGVybSA9IGdsb2JhbFByb2Nlc3MuZW52Py5URVJNPy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoXCJkdW1iXCIgPT0gdGVybSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIFBhcnNlIGEgcmF3IHZhbHVlIGFzIHtAbGluayBMb2dMZXZlbH0gKHRyaW1tZWQsIGNhc2UtaW5zZW5zaXRpdmUpLiAqL1xuZnVuY3Rpb24gcGFyc2VMb2dMZXZlbChyYXc6IHVua25vd24pOiBMb2dMZXZlbCB8IHVuZGVmaW5lZCB7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCB8fCByYXcgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGxldCB0ZXh0ID0gdHlwZW9mIHJhdyA9PT0gXCJzdHJpbmdcIiA/IHJhdyA6IFN0cmluZyhyYXcpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykge1xuICAgIGlmIChpID4gMCkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHRleHQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGV4dCA9PT0gbm9ybWFsaXplZCkgYnJlYWs7XG4gICAgICB0ZXh0ID0gbm9ybWFsaXplZDtcbiAgICB9XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKHRleHQgaW4gTE9HX0xFVkVMX1JBTkspIHtcbiAgICAgIHJldHVybiB0ZXh0IGFzIExvZ0xldmVsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogQWN0aXZlIHRocmVzaG9sZCBmcm9tIGBwcm9jZXNzLmVudi5MT0dfTEVWRUxgLCBkZWZhdWx0IHtAbGluayBERUZBVUxUX0xFVkVMfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmVMZXZlbCgpOiBMb2dMZXZlbCB7XG4gIHJldHVybiBwYXJzZUxvZ0xldmVsKGdsb2JhbFByb2Nlc3M/LmVudj8uTE9HX0xFVkVMKSA/PyBERUZBVUxUX0xFVkVMO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYHJhd2AgbWVldHMgdGhlIGN1cnJlbnQgYExPR19MRVZFTGAgdGhyZXNob2xkLlxuICpcbiAqIFBhcnNlcyBgcmF3YCBhcyBhIHtAbGluayBMb2dMZXZlbH07IHdoZW4gcGFyc2luZyBmYWlscywgcmV0dXJuc1xuICogYGRlZmF1bHRSZXN1bHRgIGlmIHN1cHBsaWVkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkRW1pdChyYXc6IHVua25vd24sIGRlZmF1bHRSZXN1bHQ/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGxldmVsID0gcGFyc2VMb2dMZXZlbChyYXcpO1xuICBpZiAobGV2ZWwgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGRlZmF1bHRSZXN1bHQgPz8gZmFsc2U7XG4gIHJldHVybiBMT0dfTEVWRUxfUkFOS1tsZXZlbF0gPj0gTE9HX0xFVkVMX1JBTktbYWN0aXZlTGV2ZWwoKV07XG59XG5cbi8qKlxuICogV2hldGhlciBhIGNhbGwgYXQgYGxldmVsYCB3b3VsZCBiZSBlbWl0dGVkIGF0IHRoZSBjdXJyZW50XG4gKiBgcHJvY2Vzcy5lbnYuTE9HX0xFVkVMYCB0aHJlc2hvbGQuIFVzZSBiZWZvcmUgYnVpbGRpbmcgZXhwZW5zaXZlIGRlYnVnXG4gKiBwYXlsb2Fkcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogaWYgKGlzTGV2ZWxFbmFibGVkKFwiZGVidWdcIikpIHtcbiAqICAgbG9nLmRlYnVnKFwibW91bnRzOnJlc29sdmVyXCIsIHsgY29udHJpYnV0aW9uOiBhd2FpdCBoZWF2eVNuYXBzaG90KCkgfSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xldmVsRW5hYmxlZChsZXZlbDogTG9nTGV2ZWwpOiBib29sZWFuIHtcbiAgcmV0dXJuIHNob3VsZEVtaXQobGV2ZWwpO1xufVxuXG5jb25zdCBMT0dHRVJfTkFNRV9SRUdFWCA9IC9eKD86W2Etel1bYS16MC05Ky4tXSo6XFwvXFwvKT8uKlxcLyhbXi8uXSspKD86XFwuW14vXSspPyQvaTtcblxuLyoqXG4gKiBEZXJpdmUgdGhlIHRhZyBzdHJpbmcgZnJvbSBhIGxvZ2dlciBuYW1lLCBwbHVnaW4sIG9yIHBhdGguIFNsYXNoLSBhbmRcbiAqIFVSTC1zaGFwZWQgc3RyaW5ncyB1c2UgdGhlIGxhc3QgcGF0aCBzZWdtZW50IChleHRlbnNpb24gc3RyaXBwZWQpOyBwbGFpblxuICogc3RyaW5ncyBwYXNzIHRocm91Z2ggdW5jaGFuZ2VkLiBFbXB0eSBvciBtaXNzaW5nIG5hbWVzIC0+IGB1bmRlZmluZWRgXG4gKiAodW50YWdnZWQgc2luaykuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RMb2dnZXJOYW1lKGxvZ2dlck5hbWU6IE5hbWVMaWtlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFsb2dnZXJOYW1lKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIGxvZ2dlck5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBtYXRjaCA9IGxvZ2dlck5hbWUubWF0Y2goTE9HR0VSX05BTUVfUkVHRVgpO1xuICAgIHJldHVybiBtYXRjaD8uWzFdID8/IGxvZ2dlck5hbWU7XG4gIH1cbiAgcmV0dXJuIGV4dHJhY3RMb2dnZXJOYW1lKGxvZ2dlck5hbWUubmFtZSk7XG59XG5cbi8qKlxuICogQnVpbGQgYSB0YWdnZWQgbG9nZ2VyIGZvciBhIHBsdWdpbiBvciBtb2R1bGUuXG4gKlxuICogVGhlIHRhZyBpcyBgW25hbWVdYCB3aGVuIGBsb2dnZXJOYW1lYCBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIGFcbiAqIHtAbGluayBOYW1lTGlrZX0gd2l0aCBgbmFtZWAsIG9yIGEgZmlsZSAvIFVSTCBwYXRoICh0aGUgYmFzZW5hbWUgd2l0aG91dFxuICogZXh0ZW5zaW9uIGlzIHVzZWQpLiBUaGUgY29uc29sZSBzaW5rIHByZXBlbmRzIGBMRVZFTCBbbmFtZV1gIG9uIE5vZGUvQnVuXG4gKiBob3N0cyBvciBgW25hbWVdYCBhbG9uZSBpbiBicm93c2VycyB2aWEge0BsaW5rIGNyZWF0ZUZvcm1hdHRlcn0uXG4gKlxuICogQ2FsbHMgYmVsb3cgYHByb2Nlc3MuZW52LkxPR19MRVZFTGAgYXJlIGRyb3BwZWQgYnkge0BsaW5rIHNob3VsZEVtaXR9IGJlZm9yZVxuICogdGhlIHNpbmsgZm9ybWF0cyBvciB3cml0ZXMgdGhlIGxpbmUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG4gKlxuICogY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImdlbmllL2NoYXRcIik7XG4gKiBsb2dnZXIuaW5mbyhcInN0YXJ0aW5nXCIpO1xuICogbG9nZ2VyLndhcm4oXCJtaXNzaW5nIG9wdGlvbmFsIGNvbmZpZ1wiLCB7IHJlYXNvbjogXCJubyBlbnYgdmFyXCIgfSk7XG4gKiBsb2dnZXIuZXJyb3IoXCJyZXF1ZXN0IGZhaWxlZFwiLCB7IGVycm9yOiBlcnJvclV0aWxzLnRvRXJyb3IoY2F1c2UpIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VyKGxvZ2dlck5hbWU6IE5hbWVMaWtlIHwgc3RyaW5nIHwgdW5kZWZpbmVkKTogTG9nZ2VyIHtcbiAgY29uc3QgbmFtZSA9IGV4dHJhY3RMb2dnZXJOYW1lKGxvZ2dlck5hbWUpO1xuICByZXR1cm4gY3JlYXRlTG9nZ2VyKG5hbWUpO1xufVxuIl19
|
package/lib/src/options.d.ts
CHANGED
|
@@ -83,17 +83,19 @@ export type OptionValueMap = Readonly<Record<string, unknown>> | null;
|
|
|
83
83
|
export declare function parseOpts<T extends z.ZodRawShape>(schema: z.ZodObject<T>, flags?: OptionValueMap, environment?: OptionValueMap): Partial<z.output<z.ZodObject<T>>>;
|
|
84
84
|
/** Supported listener transport schemes. */
|
|
85
85
|
export type ListenScheme = "tcp" | "unix";
|
|
86
|
+
export declare const TcpListenAddressSchema: z.ZodObject<{
|
|
87
|
+
scheme: z.ZodLiteral<"tcp">;
|
|
88
|
+
host: z.ZodString;
|
|
89
|
+
port: z.ZodCoercedNumber<number>;
|
|
90
|
+
}, z.core.$strict>;
|
|
91
|
+
export declare const UnixListenAddressSchema: z.ZodObject<{
|
|
92
|
+
scheme: z.ZodLiteral<"unix">;
|
|
93
|
+
path: z.ZodString;
|
|
94
|
+
}, z.core.$strict>;
|
|
86
95
|
/** TCP listener returned by {@link listenAddressSchema}. */
|
|
87
|
-
export
|
|
88
|
-
readonly scheme: "tcp";
|
|
89
|
-
readonly host: string;
|
|
90
|
-
readonly port: number;
|
|
91
|
-
}
|
|
96
|
+
export type TcpListenAddress = z.output<typeof TcpListenAddressSchema>;
|
|
92
97
|
/** Unix-domain listener returned by {@link listenAddressSchema}. */
|
|
93
|
-
export
|
|
94
|
-
readonly scheme: "unix";
|
|
95
|
-
readonly path: string;
|
|
96
|
-
}
|
|
98
|
+
export type UnixListenAddress = z.output<typeof UnixListenAddressSchema>;
|
|
97
99
|
/** Transport-aware listener address. */
|
|
98
100
|
export type ListenAddress = TcpListenAddress | UnixListenAddress;
|
|
99
101
|
/** Defaults and validation policy for {@link listenAddressSchema}. */
|
package/lib/src/options.js
CHANGED
|
@@ -138,6 +138,21 @@ export function parseOpts(schema, flags = null, environment = null) {
|
|
|
138
138
|
const parsed = schema.parse(configured);
|
|
139
139
|
return Object.fromEntries(Object.keys(configured).map((key) => [key, parsed[key]]));
|
|
140
140
|
}
|
|
141
|
+
export const TcpListenAddressSchema = z
|
|
142
|
+
.object({
|
|
143
|
+
scheme: z.literal("tcp"),
|
|
144
|
+
host: z.string().trim().toLowerCase().min(1),
|
|
145
|
+
port: tcpPortOrZeroSchema,
|
|
146
|
+
})
|
|
147
|
+
.strict()
|
|
148
|
+
.describe("TCP listener address.");
|
|
149
|
+
export const UnixListenAddressSchema = z
|
|
150
|
+
.object({
|
|
151
|
+
scheme: z.literal("unix"),
|
|
152
|
+
path: z.string().trim().min(1),
|
|
153
|
+
})
|
|
154
|
+
.strict()
|
|
155
|
+
.describe("Unix-domain listener address.");
|
|
141
156
|
/** Build a transport-aware listener schema. Bare addresses use the configured default scheme. */
|
|
142
157
|
export function listenAddressSchema(options) {
|
|
143
158
|
const defaults = {
|
|
@@ -148,19 +163,11 @@ export function listenAddressSchema(options) {
|
|
|
148
163
|
const allowed = new Set(options.schemes ?? ["tcp"]);
|
|
149
164
|
const schema = z
|
|
150
165
|
.preprocess((value) => parseListenAddress(value, defaults, options.scheme ?? "tcp"), z.discriminatedUnion("scheme", [
|
|
151
|
-
|
|
152
|
-
.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
})
|
|
157
|
-
.strict(),
|
|
158
|
-
z
|
|
159
|
-
.object({
|
|
160
|
-
scheme: z.literal("unix"),
|
|
161
|
-
path: z.string().trim().min(1),
|
|
162
|
-
})
|
|
163
|
-
.strict(),
|
|
166
|
+
TcpListenAddressSchema.extend({
|
|
167
|
+
host: TcpListenAddressSchema.shape.host.default(defaults.host),
|
|
168
|
+
port: TcpListenAddressSchema.shape.port.default(defaults.port),
|
|
169
|
+
}),
|
|
170
|
+
UnixListenAddressSchema,
|
|
164
171
|
]))
|
|
165
172
|
.refine((address) => allowed.has(address.scheme), "Listener scheme is not allowed.")
|
|
166
173
|
.refine((address) => address.scheme !== "tcp" || !options.loopback || isLoopbackHost(address.host), "Listener host must be loopback.")
|
|
@@ -312,4 +319,4 @@ function normalizeUrl(value) {
|
|
|
312
319
|
const normalized = url.toString();
|
|
313
320
|
return url.pathname === "/" && !url.search && !url.hash ? normalized.slice(0, -1) : normalized;
|
|
314
321
|
}
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxlQUFlLEdBQUcsQ0FBbUIsSUFBTyxFQUFFLFdBQW1CLEVBQUUsRUFBRSxDQUN6RSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQztLQUM5QyxNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsZUFBZSxDQUFDLDJCQUEyQixFQUFFLHFDQUFxQyxDQUFDO0lBQzVGLElBQUksRUFBRSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsOEJBQThCLENBQUM7SUFDeEUsU0FBUyxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxvQ0FBb0MsQ0FBQztJQUN6RixXQUFXLEVBQUUsZUFBZSxDQUFDLHlCQUF5QixFQUFFLHNDQUFzQyxDQUFDO0lBQy9GLFVBQVUsRUFBRSxlQUFlLENBQ3pCLHdCQUF3QixFQUN4Qix5Q0FBeUMsQ0FDMUM7SUFDRCxRQUFRLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixFQUFFLHlDQUF5QyxDQUFDO0lBQzVGLFlBQVksRUFBRSxlQUFlLENB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QUssUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0QsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxhQUFhLEtBQUssS0FBSztZQUM1QixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDckQsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFD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QUMxRSxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDakMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdkIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJyb3dzZXItc2FmZSBvcHRpb24gcHJpbWl0aXZlcyBzaGFyZWQgYWNyb3NzIGRieC10b29scyBwYWNrYWdlcy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGlzTG9vcGJhY2tIb3N0LCBNQVhfVENQX1BPUlQsIHVybEJ1aWxkZXIgfSBmcm9tIFwiLi9uZXQudHNcIjtcbmltcG9ydCB7IGlzUmVjb3JkLCB0b0Jvb2xlYW4gfSBmcm9tIFwiLi9vYmplY3QudHNcIjtcbmltcG9ydCB7IHBhcnNlTGlzdCwgdG9JZGVudGlmaWVyV2l0aE9wdGlvbnMsIHRvU2x1ZyB9IGZyb20gXCIuL3N0cmluZy11dGlscy50c1wiO1xuXG5leHBvcnQgeyBNQVhfVENQX1BPUlQgfSBmcm9tIFwiLi9uZXQudHNcIjtcblxuY29uc3QgZW52aXJvbm1lbnROYW1lID0gPFQgZXh0ZW5kcyBzdHJpbmc+KG5hbWU6IFQsIGRlc2NyaXB0aW9uOiBzdHJpbmcpID0+XG4gIHoubGl0ZXJhbChuYW1lKS5kZWZhdWx0KG5hbWUpLmRlc2NyaWJlKGRlc2NyaXB0aW9uKTtcblxuZXhwb3J0IGNvbnN0IERhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwcm9maWxlOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0NPTkZJR19QUk9GSUxFXCIsIFwiRGF0YWJyaWNrcyBDTEkgcHJvZmlsZSBlbnZpcm9ubWVudC5cIiksXG4gICAgaG9zdDogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19IT1NUXCIsIFwiRGF0YWJyaWNrcyBob3N0IGVudmlyb25tZW50LlwiKSxcbiAgICBhY2NvdW50SWQ6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQUNDT1VOVF9JRFwiLCBcIkRhdGFicmlja3MgYWNjb3VudCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgd29ya3NwYWNlSWQ6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfV09SS1NQQUNFX0lEXCIsIFwiRGF0YWJyaWNrcyB3b3Jrc3BhY2UgSUQgZW52aXJvbm1lbnQuXCIpLFxuICAgIGNvbmZpZ0ZpbGU6IGVudmlyb25tZW50TmFtZShcbiAgICAgIFwiREFUQUJSSUNLU19DT05GSUdfRklMRVwiLFxuICAgICAgXCJEYXRhYnJpY2tzIENMSSBjb25maWcgZmlsZSBlbnZpcm9ubWVudC5cIixcbiAgICApLFxuICAgIGNsaWVudElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0NMSUVOVF9JRFwiLCBcIkRhdGFicmlja3MgT0F1dGggY2xpZW50IElEIGVudmlyb25tZW50LlwiKSxcbiAgICBjbGllbnRTZWNyZXQ6IGVudmlyb25tZW50TmFtZShcbiAgICAgIFwiREFUQUJSSUNLU19DTElFTlRfU0VDUkVUXCIsXG4gICAgICBcIkRhdGFicmlja3MgT0F1dGggY2xpZW50IHNlY3JldCBlbnZpcm9ubWVudC5cIixcbiAgICApLFxuICAgIGFjY2Vzc1Rva2VuOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX1RPS0VOXCIsIFwiRGF0YWJyaWNrcyBhY2Nlc3MgdG9rZW4gZW52aXJvbm1lbnQuXCIpLFxuICAgIGdyb3VwSWQ6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfR1JPVVBfSURcIiwgXCJEYXRhYnJpY2tzIGdyb3VwIElEIGVudmlyb25tZW50LlwiKSxcbiAgICBhdXRoVHlwZTogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19BVVRIX1RZUEVcIiwgXCJEYXRhYnJpY2tzIGF1dGggdHlwZSBlbnZpcm9ubWVudC5cIiksXG4gICAgYXBwTmFtZTogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19BUFBfTkFNRVwiLCBcIkRhdGFicmlja3MgQXBwIG5hbWUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGFwcFBvcnQ6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVBQX1BPUlRcIiwgXCJEYXRhYnJpY2tzIEFwcCBwb3J0IGVudmlyb25tZW50LlwiKSxcbiAgICBsYWtlYmFzZUVuZHBvaW50OiBlbnZpcm9ubWVudE5hbWUoXCJMQUtFQkFTRV9FTkRQT0lOVFwiLCBcIkxha2ViYXNlIGVuZHBvaW50IGVudmlyb25tZW50LlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkNhbm9uaWNhbCBEYXRhYnJpY2tzIENMSSwgU0RLLCBBcHBzLCBhbmQgTGFrZWJhc2UgZW52aXJvbm1lbnQgbmFtZXMuXCIpO1xuXG5leHBvcnQgdHlwZSBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcyA9IHoub3V0cHV0PHR5cGVvZiBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYT47XG5cbi8qKiBDYW5vbmljYWwgRGF0YWJyaWNrcyBlbnZpcm9ubWVudCBuYW1lcyBkZXJpdmVkIGZyb20gdGhlIG93bmluZyBzY2hlbWEuICovXG5leHBvcnQgY29uc3QgZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMgPSBPYmplY3QuZnJlZXplKERhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzU2NoZW1hLnBhcnNlKHt9KSk7XG5cbmV4cG9ydCBjb25zdCBQb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHBvc3RncmVzUm9sZTogZW52aXJvbm1lbnROYW1lKFxuICAgICAgXCJEQlhfVE9PTFNfUE9TVEdSRVNfUk9MRVwiLFxuICAgICAgXCJQb3N0Z3JlU1FMIGFzc3VtZWQtcm9sZSBlbnZpcm9ubWVudC5cIixcbiAgICApLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiQ2Fub25pY2FsIGRieC10b29scyBQb3N0Z3JlU1FMIGVudmlyb25tZW50IG5hbWVzLlwiKTtcblxuZXhwb3J0IHR5cGUgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzID0gei5vdXRwdXQ8dHlwZW9mIFBvc3RncmVzRW52aXJvbm1lbnROYW1lc1NjaGVtYT47XG5cbi8qKiBDYW5vbmljYWwgUG9zdGdyZVNRTCBlbnZpcm9ubWVudCBuYW1lcyBkZXJpdmVkIGZyb20gdGhlIG93bmluZyBzY2hlbWEuICovXG5leHBvcnQgY29uc3QgcG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzID0gT2JqZWN0LmZyZWV6ZShQb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXNTY2hlbWEucGFyc2Uoe30pKTtcblxuZXhwb3J0IGNvbnN0IHBvc3RncmVzUm9sZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC50cmltKClcbiAgLm1pbigxKVxuICAucmVnZXgoXG4gICAgL15bQS1aYS16MC05Ll9AKy1dezEsMjU1fSQvLFxuICAgIFwiUG9zdGdyZVNRTCByb2xlIG11c3QgY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGRvdCwgdW5kZXJzY29yZSwgYXQsIHBsdXMsIG9yIGh5cGhlbi5cIixcbiAgKVxuICAuZGVzY3JpYmUoXCJQb3N0Z3JlU1FMIHJvbGUgYXNzdW1lZCBhZnRlciBhdXRoZW50aWNhdGlvbi5cIik7XG5cbmV4cG9ydCBjb25zdCBQb3N0Z3Jlc09wdGlvbnNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHBvc3RncmVzUm9sZTogcG9zdGdyZXNSb2xlU2NoZW1hXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiUG9zdGdyZVNRTCByb2xlIGFzc3VtZWQgYWZ0ZXIgYXV0aGVudGljYXRpb24uXCIpXG4gICAgICAubWV0YSh7IGVudjogcG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzLnBvc3RncmVzUm9sZSB9KSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlNoYXJlZCBQb3N0Z3JlU1FMIHNlc3Npb24gb3B0aW9ucy5cIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RncmVzT3B0aW9ucyA9IHouaW5wdXQ8dHlwZW9mIFBvc3RncmVzT3B0aW9uc1NjaGVtYT47XG5cbmV4cG9ydCBjb25zdCB0Y3BQb3J0U2NoZW1hID0gei5jb2VyY2VcbiAgLm51bWJlcjxudW1iZXI+KClcbiAgLmludCgpXG4gIC5taW4oMSlcbiAgLm1heChNQVhfVENQX1BPUlQpXG4gIC5kZXNjcmliZShcIlRDUCBwb3J0IGZyb20gMSB0aHJvdWdoIDY1NTM1LlwiKTtcblxuZXhwb3J0IGNvbnN0IHRjcFBvcnRPclplcm9TY2hlbWEgPSB6LmNvZXJjZVxuICAubnVtYmVyPG51bWJlcj4oKVxuICAuaW50KClcbiAgLm1pbigwKVxuICAubWF4KE1BWF9UQ1BfUE9SVClcbiAgLmRlc2NyaWJlKFwiVENQIHBvcnQgZnJvbSAwIHRocm91Z2ggNjU1MzUsIHdoZXJlIHplcm8gcmVxdWVzdHMgYXV0b21hdGljIGFsbG9jYXRpb24uXCIpO1xuXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplZFVybFNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC50cmltKClcbiAgLm1pbigxKVxuICAucmVmaW5lKCh2YWx1ZSkgPT4gdXJsQnVpbGRlcih2YWx1ZSkgIT09IHVuZGVmaW5lZCwge1xuICAgIG1lc3NhZ2U6IFwiRXhwZWN0ZWQgYSB2YWxpZCBVUkwgb3IgaG9zdC5cIixcbiAgfSlcbiAgLm92ZXJ3cml0ZShub3JtYWxpemVVcmwpXG4gIC5kZXNjcmliZShcIlVSTCBub3JtYWxpemVkIHRocm91Z2ggdGhlIHNoYXJlZCBVUkwgYnVpbGRlci5cIik7XG5cbmNvbnN0IGRhdGFicmlja3NUZXh0ID0gKGRlc2NyaXB0aW9uOiBzdHJpbmcpID0+XG4gIHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKGRlc2NyaXB0aW9uKTtcbmNvbnN0IGRhdGFicmlja3NPcHRpb25NZXRhID0gKGVudjogc3RyaW5nLCBmbGFnID0gdHJ1ZSkgPT4gKHtcbiAgZW52LFxuICBmbGFnLFxuICBoZWxwRGVmYXVsdDogZmFsc2UsXG59KTtcblxuZXhwb3J0IGNvbnN0IERhdGFicmlja3NPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwcm9maWxlOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgQ0xJIHByb2ZpbGUuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5wcm9maWxlKSxcbiAgICApLFxuICAgIGhvc3Q6IG5vcm1hbGl6ZWRVcmxTY2hlbWFcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJEYXRhYnJpY2tzIGhvc3QuXCIpXG4gICAgICAubWV0YShkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5ob3N0LCBmYWxzZSkpLFxuICAgIGFjY291bnRJZDogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIGFjY291bnQgSUQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5hY2NvdW50SWQsIGZhbHNlKSxcbiAgICApLFxuICAgIHdvcmtzcGFjZUlkOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3Mgd29ya3NwYWNlIElELlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMud29ya3NwYWNlSWQsIGZhbHNlKSxcbiAgICApLFxuICAgIGNvbmZpZ0ZpbGU6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBDTEkgY29uZmlnIGZpbGUuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5jb25maWdGaWxlLCBmYWxzZSksXG4gICAgKSxcbiAgICBjbGllbnRJZDogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBJRC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmNsaWVudElkLCBmYWxzZSksXG4gICAgKSxcbiAgICBjbGllbnRTZWNyZXQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBPQXV0aCBjbGllbnQgc2VjcmV0LlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuY2xpZW50U2VjcmV0LCBmYWxzZSksXG4gICAgKSxcbiAgICBhY2Nlc3NUb2tlbjogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIGFjY2VzcyB0b2tlbi5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFjY2Vzc1Rva2VuLCBmYWxzZSksXG4gICAgKSxcbiAgICBncm91cElkOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgZ3JvdXAgSUQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5ncm91cElkLCBmYWxzZSksXG4gICAgKSxcbiAgICBhdXRoVHlwZTogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIGF1dGhlbnRpY2F0aW9uIHR5cGUuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5hdXRoVHlwZSwgZmFsc2UpLFxuICAgICksXG4gICAgYXBwTmFtZTogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIEFwcCBuYW1lLlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYXBwTmFtZSwgZmFsc2UpLFxuICAgICksXG4gICAgYXBwUG9ydDogdGNwUG9ydFNjaGVtYVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIkRhdGFicmlja3MgQXBwIHBvcnQuXCIpXG4gICAgICAubWV0YShkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5hcHBQb3J0LCBmYWxzZSkpLFxuICAgIGxha2ViYXNlRW5kcG9pbnQ6IGRhdGFicmlja3NUZXh0KFwiTGFrZWJhc2UgZW5kcG9pbnQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5sYWtlYmFzZUVuZHBvaW50LCBmYWxzZSksXG4gICAgKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkNvbW1vbiBEYXRhYnJpY2tzIENMSSwgU0RLLCBBcHBzLCBhbmQgTGFrZWJhc2Ugb3B0aW9ucy5cIik7XG5cbmV4cG9ydCB0eXBlIERhdGFicmlja3NPcHRpb25zID0gei5pbnB1dDx0eXBlb2YgRGF0YWJyaWNrc09wdGlvbnNTY2hlbWE+O1xuXG4vKiogS2V5IGZvcm1hdCB1c2VkIHdoZW4gc2VyaWFsaXppbmcgcGFyc2VkIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBPcHRpb25TZXJpYWxpemF0aW9uRm9ybWF0ID0gXCJmbGFnXCIgfCBcImVudlwiO1xuXG5pbnRlcmZhY2UgT3B0aW9uUHJvcGVydHkge1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW107XG4gIHJlYWRvbmx5IGZsYWc/OiBib29sZWFuO1xufVxuXG4vKiogU2VyaWFsaXplIGNvbXBsZXRlIHBhcnNlZCBvcHRpb25zIGFzIGEgcHJvY2VzcyBlbnZpcm9ubWVudCBtYXAuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplT3B0c0Vudmlyb25tZW50PFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihcbiAgc2NoZW1hOiB6LlpvZE9iamVjdDxUPixcbiAgdmFsdWVzOiB6LmlucHV0PHouWm9kT2JqZWN0PFQ+Pixcbik6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhzZXJpYWxpemVkT3B0cyhzY2hlbWEsIHZhbHVlcywgXCJlbnZcIikpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG4gICAgICBrZXksXG4gICAgICBlbnZpcm9ubWVudE9wdGlvblZhbHVlKHZhbHVlKSxcbiAgICBdKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplZE9wdHM8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KFxuICBzY2hlbWE6IHouWm9kT2JqZWN0PFQ+LFxuICB2YWx1ZXM6IHouaW5wdXQ8ei5ab2RPYmplY3Q8VD4+LFxuICBmb3JtYXQ6IE9wdGlvblNlcmlhbGl6YXRpb25Gb3JtYXQsXG4pOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCBwYXJzZWQgPSBzY2hlbWEucGFyc2UodmFsdWVzKSBhcyBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG4gIGNvbnN0IGVudHJpZXMgPSBvcHRpb25Qcm9wZXJ0aWVzKHNjaGVtYSkuZmxhdE1hcCgocHJvcGVydHkpID0+IHtcbiAgICBpZiAoZm9ybWF0ID09PSBcImZsYWdcIiAmJiBwcm9wZXJ0eS5mbGFnID09PSBmYWxzZSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGtleSA9XG4gICAgICBmb3JtYXQgPT09IFwiZmxhZ1wiXG4gICAgICAgID8gYC0tJHt0b1NsdWcocHJvcGVydHkua2V5KX1gXG4gICAgICAgIDogKG9wdGlvbkVudmlyb25tZW50TmFtZXMocHJvcGVydHkua2V5LCBwcm9wZXJ0eS5lbnYpWzBdID8/IFwiXCIpO1xuICAgIGlmICgha2V5KSByZXR1cm4gW107XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZWRbcHJvcGVydHkua2V5XTtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IFtdIDogW1trZXksIHNlcmlhbGl6ZWRPcHRpb25WYWx1ZSh2YWx1ZSldIGFzIGNvbnN0XTtcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7XG59XG5cbmNvbnN0IG9wdGlvbmFsVGV4dCA9IChkZXNjcmlwdGlvbjogc3RyaW5nLCBlbnY6IHN0cmluZykgPT5cbiAgei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoZGVzY3JpcHRpb24pLm1ldGEoeyBlbnYsIGZsYWc6IGZhbHNlIH0pO1xuXG5leHBvcnQgY29uc3QgTGFrZWJhc2VPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBsYWtlYmFzZUVuZHBvaW50OiBvcHRpb25hbFRleHQoXG4gICAgICBcIkxha2ViYXNlIHByb2plY3QsIHJlc291cmNlIHBhdGgsIGhvc3QsIG9yIFVSTC5cIixcbiAgICAgIGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmxha2ViYXNlRW5kcG9pbnQsXG4gICAgKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkNvbW1vbiBMYWtlYmFzZSBvcHRpb25zLlwiKTtcblxuZXhwb3J0IHR5cGUgTGFrZWJhc2VPcHRpb25zID0gei5pbnB1dDx0eXBlb2YgTGFrZWJhc2VPcHRpb25zU2NoZW1hPjtcblxuLyoqIEV4cGxpY2l0IG9wdGlvbiB2YWx1ZXMgb3IgZW52aXJvbm1lbnQgZW50cmllcyBjb25zdW1lZCBieSBvcHRpb24gcGFyc2luZyBoZWxwZXJzLiAqL1xuZXhwb3J0IHR5cGUgT3B0aW9uVmFsdWVNYXAgPSBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gfCBudWxsO1xuXG4vKiogUGFyc2Ugb25seSBzdXBwbGllZCBmbGFnIGFuZCBlbnZpcm9ubWVudCB2YWx1ZXMgdGhyb3VnaCBhbiBvd25pbmcgWm9kIG9iamVjdCBzY2hlbWEuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VPcHRzPFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihcbiAgc2NoZW1hOiB6LlpvZE9iamVjdDxUPixcbiAgZmxhZ3M6IE9wdGlvblZhbHVlTWFwID0gbnVsbCxcbiAgZW52aXJvbm1lbnQ6IE9wdGlvblZhbHVlTWFwID0gbnVsbCxcbik6IFBhcnRpYWw8ei5vdXRwdXQ8ei5ab2RPYmplY3Q8VD4+PiB7XG4gIGNvbnN0IGNvbmZpZ3VyZWQgPSBvcHRpb25WYWx1ZXMoc2NoZW1hLCBmbGFncywgZW52aXJvbm1lbnQpO1xuICBjb25zdCBwYXJzZWQgPSBzY2hlbWEucGFyc2UoY29uZmlndXJlZCk7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmtleXMoY29uZmlndXJlZCkubWFwKChrZXkpID0+IFtrZXksIHBhcnNlZFtrZXkgYXMga2V5b2YgdHlwZW9mIHBhcnNlZF1dKSxcbiAgKSBhcyBQYXJ0aWFsPHoub3V0cHV0PHouWm9kT2JqZWN0PFQ+Pj47XG59XG5cbi8qKiBTdXBwb3J0ZWQgbGlzdGVuZXIgdHJhbnNwb3J0IHNjaGVtZXMuICovXG5leHBvcnQgdHlwZSBMaXN0ZW5TY2hlbWUgPSBcInRjcFwiIHwgXCJ1bml4XCI7XG5cbi8qKiBUQ1AgbGlzdGVuZXIgcmV0dXJuZWQgYnkge0BsaW5rIGxpc3RlbkFkZHJlc3NTY2hlbWF9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBUY3BMaXN0ZW5BZGRyZXNzIHtcbiAgcmVhZG9ubHkgc2NoZW1lOiBcInRjcFwiO1xuICByZWFkb25seSBob3N0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcbn1cblxuLyoqIFVuaXgtZG9tYWluIGxpc3RlbmVyIHJldHVybmVkIGJ5IHtAbGluayBsaXN0ZW5BZGRyZXNzU2NoZW1hfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5peExpc3RlbkFkZHJlc3Mge1xuICByZWFkb25seSBzY2hlbWU6IFwidW5peFwiO1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKiBUcmFuc3BvcnQtYXdhcmUgbGlzdGVuZXIgYWRkcmVzcy4gKi9cbmV4cG9ydCB0eXBlIExpc3RlbkFkZHJlc3MgPSBUY3BMaXN0ZW5BZGRyZXNzIHwgVW5peExpc3RlbkFkZHJlc3M7XG5cbi8qKiBEZWZhdWx0cyBhbmQgdmFsaWRhdGlvbiBwb2xpY3kgZm9yIHtAbGluayBsaXN0ZW5BZGRyZXNzU2NoZW1hfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdGVuQWRkcmVzc09wdGlvbnMge1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvb3BiYWNrPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc2NoZW1lPzogTGlzdGVuU2NoZW1lO1xuICByZWFkb25seSBzY2hlbWVzPzogcmVhZG9ubHkgTGlzdGVuU2NoZW1lW107XG4gIHJlYWRvbmx5IHdpdGhEZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuLyoqIFJhdyBsaXN0ZW5lciBpbnB1dCBhY2NlcHRlZCBiZWZvcmUgdHJhbnNwb3J0LWF3YXJlIG5vcm1hbGl6YXRpb24uICovXG5leHBvcnQgdHlwZSBMaXN0ZW5BZGRyZXNzSW5wdXQgPSBMaXN0ZW5BZGRyZXNzIHwgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuQWRkcmVzc1NjaGVtYShcbiAgb3B0aW9uczogTGlzdGVuQWRkcmVzc09wdGlvbnMgJiB7XG4gICAgcmVhZG9ubHkgc2NoZW1lczogcmVhZG9ubHkgW1widGNwXCIsIFwidW5peFwiXTtcbiAgICByZWFkb25seSB3aXRoRGVmYXVsdDogZmFsc2U7XG4gIH0sXG4pOiB6LlpvZFR5cGU8TGlzdGVuQWRkcmVzcywgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyAmIHsgcmVhZG9ubHkgc2NoZW1lczogcmVhZG9ubHkgW1widGNwXCIsIFwidW5peFwiXSB9LFxuKTogei5ab2REZWZhdWx0PHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPj47XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyAmIHsgcmVhZG9ubHkgd2l0aERlZmF1bHQ6IGZhbHNlIH0sXG4pOiB6LlpvZFR5cGU8VGNwTGlzdGVuQWRkcmVzcywgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5BZGRyZXNzU2NoZW1hKFxuICBvcHRpb25zOiBMaXN0ZW5BZGRyZXNzT3B0aW9ucyxcbik6IHouWm9kRGVmYXVsdDx6LlpvZFR5cGU8VGNwTGlzdGVuQWRkcmVzcywgdW5rbm93bj4+O1xuXG4vKiogQnVpbGQgYSB0cmFuc3BvcnQtYXdhcmUgbGlzdGVuZXIgc2NoZW1hLiBCYXJlIGFkZHJlc3NlcyB1c2UgdGhlIGNvbmZpZ3VyZWQgZGVmYXVsdCBzY2hlbWUuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuQWRkcmVzc1NjaGVtYShcbiAgb3B0aW9uczogTGlzdGVuQWRkcmVzc09wdGlvbnMsXG4pOiB6LlpvZFR5cGU8TGlzdGVuQWRkcmVzcywgdW5rbm93bj4gfCB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPExpc3RlbkFkZHJlc3MsIHVua25vd24+PiB7XG4gIGNvbnN0IGRlZmF1bHRzOiBUY3BMaXN0ZW5BZGRyZXNzID0ge1xuICAgIHNjaGVtZTogXCJ0Y3BcIixcbiAgICBob3N0OiBvcHRpb25zLmhvc3QgPz8gXCJsb2NhbGhvc3RcIixcbiAgICBwb3J0OiBvcHRpb25zLnBvcnQsXG4gIH07XG4gIGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0PExpc3RlblNjaGVtZT4ob3B0aW9ucy5zY2hlbWVzID8/IFtcInRjcFwiXSk7XG4gIGNvbnN0IHNjaGVtYSA9IHpcbiAgICAucHJlcHJvY2VzcyhcbiAgICAgICh2YWx1ZSkgPT4gcGFyc2VMaXN0ZW5BZGRyZXNzKHZhbHVlLCBkZWZhdWx0cywgb3B0aW9ucy5zY2hlbWUgPz8gXCJ0Y3BcIiksXG4gICAgICB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInNjaGVtZVwiLCBbXG4gICAgICAgIHpcbiAgICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgICAgIHNjaGVtZTogei5saXRlcmFsKFwidGNwXCIpLFxuICAgICAgICAgICAgaG9zdDogei5zdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKS5taW4oMSkuZGVmYXVsdChkZWZhdWx0cy5ob3N0KSxcbiAgICAgICAgICAgIHBvcnQ6IHRjcFBvcnRPclplcm9TY2hlbWEuZGVmYXVsdChkZWZhdWx0cy5wb3J0KSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zdHJpY3QoKSxcbiAgICAgICAgelxuICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgc2NoZW1lOiB6LmxpdGVyYWwoXCJ1bml4XCIpLFxuICAgICAgICAgICAgcGF0aDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnN0cmljdCgpLFxuICAgICAgXSksXG4gICAgKVxuICAgIC5yZWZpbmUoKGFkZHJlc3MpID0+IGFsbG93ZWQuaGFzKGFkZHJlc3Muc2NoZW1lKSwgXCJMaXN0ZW5lciBzY2hlbWUgaXMgbm90IGFsbG93ZWQuXCIpXG4gICAgLnJlZmluZShcbiAgICAgIChhZGRyZXNzKSA9PiBhZGRyZXNzLnNjaGVtZSAhPT0gXCJ0Y3BcIiB8fCAhb3B0aW9ucy5sb29wYmFjayB8fCBpc0xvb3BiYWNrSG9zdChhZGRyZXNzLmhvc3QpLFxuICAgICAgXCJMaXN0ZW5lciBob3N0IG11c3QgYmUgbG9vcGJhY2suXCIsXG4gICAgKVxuICAgIC5kZXNjcmliZShcIlRDUCBvciBVbml4LWRvbWFpbiBsaXN0ZW5lciBhZGRyZXNzLlwiKSBhcyB6LlpvZFR5cGU8TGlzdGVuQWRkcmVzcywgdW5rbm93bj47XG4gIHJldHVybiBvcHRpb25zLndpdGhEZWZhdWx0ID09PSBmYWxzZSA/IHNjaGVtYSA6IHNjaGVtYS5kZWZhdWx0KGRlZmF1bHRzKTtcbn1cblxuLyoqIFJlbmRlciBhIGxpc3RlbmVyIGFkZHJlc3MgYXMgYSBgdGNwOi8vYCBvciBgdW5peDovL2AgVVJMLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExpc3RlbkFkZHJlc3MoYWRkcmVzczogTGlzdGVuQWRkcmVzcyk6IHN0cmluZyB7XG4gIGlmIChhZGRyZXNzLnNjaGVtZSA9PT0gXCJ1bml4XCIpIHtcbiAgICByZXR1cm4gYHVuaXg6Ly8ke2FkZHJlc3MucGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIn0ke2FkZHJlc3MucGF0aH1gO1xuICB9XG4gIGNvbnN0IGhvc3QgPSBhZGRyZXNzLmhvc3QuaW5jbHVkZXMoXCI6XCIpID8gYFske2FkZHJlc3MuaG9zdH1dYCA6IGFkZHJlc3MuaG9zdDtcbiAgcmV0dXJuIGB0Y3A6Ly8ke2hvc3R9OiR7YWRkcmVzcy5wb3J0fWA7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTGlzdGVuQWRkcmVzcyhcbiAgdmFsdWU6IHVua25vd24sXG4gIGRlZmF1bHRzOiBUY3BMaXN0ZW5BZGRyZXNzLFxuICBkZWZhdWx0U2NoZW1lOiBMaXN0ZW5TY2hlbWUsXG4pOiB1bmtub3duIHtcbiAgaWYgKGlzUmVjb3JkKHZhbHVlKSAmJiB2YWx1ZS5zY2hlbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUuaG9zdCA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5wb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7IC4uLnZhbHVlLCBzY2hlbWU6IFwidGNwXCIgfTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZS5wYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4geyAuLi52YWx1ZSwgc2NoZW1lOiBcInVuaXhcIiB9O1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRTY2hlbWUgPT09IFwidGNwXCJcbiAgICAgID8geyBzY2hlbWU6IFwidGNwXCIsIGhvc3Q6IGRlZmF1bHRzLmhvc3QsIHBvcnQ6IHZhbHVlIH1cbiAgICAgIDogeyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiBTdHJpbmcodmFsdWUpIH07XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlO1xuICBjb25zdCB0ZXh0ID0gdmFsdWUudHJpbSgpO1xuICBpZiAodGV4dC5zdGFydHNXaXRoKFwidW5peDovL1wiKSkge1xuICAgIGNvbnN0IHBhdGggPSB0ZXh0LnNsaWNlKFwidW5peDovL1wiLmxlbmd0aCk7XG4gICAgcmV0dXJuIHsgc2NoZW1lOiBcInVuaXhcIiwgcGF0aDogcGF0aC5zdGFydHNXaXRoKFwiL1wiKSA/IHBhdGggOiBgLyR7cGF0aH1gIH07XG4gIH1cbiAgY29uc3QgdGNwID0gdGV4dC5zdGFydHNXaXRoKFwidGNwOi8vXCIpID8gdGV4dC5zbGljZShcInRjcDovL1wiLmxlbmd0aCkgOiB0ZXh0O1xuICBpZiAoZGVmYXVsdFNjaGVtZSA9PT0gXCJ1bml4XCIgJiYgIXRleHQuc3RhcnRzV2l0aChcInRjcDovL1wiKSkge1xuICAgIHJldHVybiB7IHNjaGVtZTogXCJ1bml4XCIsIHBhdGg6IHRleHQgfTtcbiAgfVxuICBpZiAoL15cXGQrJC8udGVzdCh0Y3ApKSByZXR1cm4geyBzY2hlbWU6IFwidGNwXCIsIGhvc3Q6IGRlZmF1bHRzLmhvc3QsIHBvcnQ6IHRjcCB9O1xuICBpZiAoL146XFxkKyQvLnRlc3QodGNwKSkge1xuICAgIHJldHVybiB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogZGVmYXVsdHMuaG9zdCwgcG9ydDogdGNwLnNsaWNlKDEpIH07XG4gIH1cbiAgY29uc3QgYnJhY2tldGVkID0gdGNwLm1hdGNoKC9eXFxbKFteXFxdXSspXFxdKD86OihcXGQrKSk/JC8pO1xuICBpZiAoYnJhY2tldGVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtZTogXCJ0Y3BcIixcbiAgICAgIGhvc3Q6IGJyYWNrZXRlZFsxXSxcbiAgICAgIHBvcnQ6IGJyYWNrZXRlZFsyXSA/PyBkZWZhdWx0cy5wb3J0LFxuICAgIH07XG4gIH1cbiAgY29uc3Qgc2VwYXJhdG9yID0gdGNwLmxhc3RJbmRleE9mKFwiOlwiKTtcbiAgaWYgKHNlcGFyYXRvciA+IDAgJiYgIXRjcC5zbGljZSgwLCBzZXBhcmF0b3IpLmluY2x1ZGVzKFwiOlwiKSkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWU6IFwidGNwXCIsXG4gICAgICBob3N0OiB0Y3Auc2xpY2UoMCwgc2VwYXJhdG9yKSxcbiAgICAgIHBvcnQ6IHRjcC5zbGljZShzZXBhcmF0b3IgKyAxKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB7IHNjaGVtZTogXCJ0Y3BcIiwgaG9zdDogdGNwIHx8IGRlZmF1bHRzLmhvc3QsIHBvcnQ6IGRlZmF1bHRzLnBvcnQgfTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uUHJvcGVydGllcyhzY2hlbWE6IHouWm9kT2JqZWN0PHouWm9kUmF3U2hhcGU+KTogT3B0aW9uUHJvcGVydHlbXSB7XG4gIGNvbnN0IGRvY3VtZW50ID0gei50b0pTT05TY2hlbWEoc2NoZW1hKTtcbiAgaWYgKCFpc1JlY29yZChkb2N1bWVudC5wcm9wZXJ0aWVzKSkgcmV0dXJuIFtdO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZG9jdW1lbnQucHJvcGVydGllcykuZmxhdE1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKCFpc1JlY29yZCh2YWx1ZSkpIHJldHVybiBbXTtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBrZXksXG4gICAgICAgIHR5cGU6IHR5cGVvZiB2YWx1ZS50eXBlID09PSBcInN0cmluZ1wiID8gdmFsdWUudHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZW52OlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS5lbnYgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZS5lbnYpXG4gICAgICAgICAgICA/ICh2YWx1ZS5lbnYgYXMgc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW10pXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZmxhZzogdHlwZW9mIHZhbHVlLmZsYWcgPT09IFwiYm9vbGVhblwiID8gdmFsdWUuZmxhZyA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZWRPcHRpb25WYWx1ZSh2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAoaXNSZWNvcmQodmFsdWUpICYmIHZhbHVlLnNjaGVtZSA9PT0gXCJ0Y3BcIikge1xuICAgIGlmICh0eXBlb2YgdmFsdWUuaG9zdCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsdWUucG9ydCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgcmV0dXJuIGZvcm1hdExpc3RlbkFkZHJlc3MoeyBzY2hlbWU6IFwidGNwXCIsIGhvc3Q6IHZhbHVlLmhvc3QsIHBvcnQ6IHZhbHVlLnBvcnQgfSk7XG4gICAgfVxuICB9XG4gIGlmIChpc1JlY29yZCh2YWx1ZSkgJiYgdmFsdWUuc2NoZW1lID09PSBcInVuaXhcIiAmJiB0eXBlb2YgdmFsdWUucGF0aCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBmb3JtYXRMaXN0ZW5BZGRyZXNzKHsgc2NoZW1lOiBcInVuaXhcIiwgcGF0aDogdmFsdWUucGF0aCB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGVudmlyb25tZW50T3B0aW9uVmFsdWUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5tYXAoU3RyaW5nKS5qb2luKFwiLFwiKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCkgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG9wdGlvblZhbHVlczxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIHZhbHVlczogT3B0aW9uVmFsdWVNYXAsXG4gIGVudmlyb25tZW50OiBPcHRpb25WYWx1ZU1hcCxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgZG9jdW1lbnQgPSB6LnRvSlNPTlNjaGVtYShzY2hlbWEpO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gaXNSZWNvcmQoZG9jdW1lbnQucHJvcGVydGllcykgPyBkb2N1bWVudC5wcm9wZXJ0aWVzIDoge307XG4gIGNvbnN0IGNvbmZpZ3VyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgcHJvcGVydHldIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKSB7XG4gICAgaWYgKCFpc1JlY29yZChwcm9wZXJ0eSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGV4cGxpY2l0ID0gZmlyc3RPcHRpb25WYWx1ZSh2YWx1ZXMsIFtrZXksIGAtLSR7dG9TbHVnKGtleSl9YF0pO1xuICAgIGlmIChleHBsaWNpdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25maWd1cmVkW2tleV0gPSBvcHRpb25FbnZpcm9ubWVudFZhbHVlKHByb3BlcnR5LnR5cGUsIGV4cGxpY2l0KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBuYW1lcyA9IG9wdGlvbkVudmlyb25tZW50TmFtZXMoa2V5LCBwcm9wZXJ0eS5lbnYpO1xuICAgIGNvbnN0IHNvdXJjZWQgPSBmaXJzdE9wdGlvblZhbHVlKGVudmlyb25tZW50LCBuYW1lcyk7XG4gICAgaWYgKHNvdXJjZWQgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgY29uZmlndXJlZFtrZXldID0gb3B0aW9uRW52aXJvbm1lbnRWYWx1ZShwcm9wZXJ0eS50eXBlLCBzb3VyY2VkKTtcbiAgfVxuICByZXR1cm4gY29uZmlndXJlZDtcbn1cblxuZnVuY3Rpb24gb3B0aW9uRW52aXJvbm1lbnROYW1lcyhrZXk6IHN0cmluZywgY29uZmlndXJlZDogdW5rbm93bik6IHN0cmluZ1tdIHtcbiAgaWYgKHR5cGVvZiBjb25maWd1cmVkID09PSBcInN0cmluZ1wiKSByZXR1cm4gW2NvbmZpZ3VyZWRdO1xuICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmVkKSkge1xuICAgIHJldHVybiBjb25maWd1cmVkLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKTtcbiAgfVxuICByZXR1cm4gW3RvSWRlbnRpZmllcldpdGhPcHRpb25zKHsgZGVsaW1pdGVyOiBcIl9cIiB9LCBrZXkpLnRvVXBwZXJDYXNlKCldO1xufVxuXG5mdW5jdGlvbiBvcHRpb25FbnZpcm9ubWVudFZhbHVlKHR5cGU6IHVua25vd24sIHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmICh0eXBlID09PSBcImJvb2xlYW5cIikgcmV0dXJuIHRvQm9vbGVhbih2YWx1ZSkgPz8gdmFsdWU7XG4gIGlmICh0eXBlID09PSBcImFycmF5XCIgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSByZXR1cm4gcGFyc2VMaXN0KHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBmaXJzdE9wdGlvblZhbHVlKHNvdXJjZTogT3B0aW9uVmFsdWVNYXAsIGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogdW5rbm93biB8IHVuZGVmaW5lZCB7XG4gIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gXCJcIikgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVVybCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgdXJsID0gdXJsQnVpbGRlcih2YWx1ZSk7XG4gIGlmICghdXJsKSByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB1cmwudG9TdHJpbmcoKTtcbiAgcmV0dXJuIHVybC5wYXRobmFtZSA9PT0gXCIvXCIgJiYgIXVybC5zZWFyY2ggJiYgIXVybC5oYXNoID8gbm9ybWFsaXplZC5zbGljZSgwLCAtMSkgOiBub3JtYWxpemVkO1xufVxuIl19
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxlQUFlLEdBQUcsQ0FBbUIsSUFBTyxFQUFFLFdBQW1CLEVBQUUsRUFBRSxDQUN6RSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFdEQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQztLQUM5QyxNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsZUFBZSxDQUFDLDJCQUEyQixFQUFFLHFDQUFxQyxDQUFDO0lBQzVGLElBQUksRUFBRSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsOEJBQThCLENBQUM7SUFDeEUsU0FBUyxFQUFFLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxvQ0FBb0MsQ0FBQztJQUN6RixXQUFXLEVBQUUsZUFBZSxDQUFDLHlCQUF5QixFQUFFLHNDQUFzQyxDQUFDO0lBQy9GLFVBQVUsRUFBRSxlQUFlLENBQ3pCLHdCQUF3QixFQUN4Qix5Q0FBeUMsQ0FDMUM7SUFDRCxRQUFRLEVBQUUsZUFBZSxDQUFDLHNCQUFzQixFQUFFLHlDQUF5QyxDQUFDO0lBQzVGLFlBQVksRUFBRSxlQUFlLENB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L0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNFLElBQUksYUFBYSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEYsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3pELElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPO1lBQ0wsTUFBTSxF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Q0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsTUFBc0IsRUFBRSxJQUF1QjtJQUN2RSxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7SUFDMUUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNqRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcm93c2VyLXNhZmUgb3B0aW9uIHByaW1pdGl2ZXMgc2hhcmVkIGFjcm9zcyBkYngtdG9vbHMgcGFja2FnZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBpc0xvb3BiYWNrSG9zdCwgTUFYX1RDUF9QT1JULCB1cmxCdWlsZGVyIH0gZnJvbSBcIi4vbmV0LnRzXCI7XG5pbXBvcnQgeyBpc1JlY29yZCwgdG9Cb29sZWFuIH0gZnJvbSBcIi4vb2JqZWN0LnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpc3QsIHRvSWRlbnRpZmllcldpdGhPcHRpb25zLCB0b1NsdWcgfSBmcm9tIFwiLi9zdHJpbmctdXRpbHMudHNcIjtcblxuZXhwb3J0IHsgTUFYX1RDUF9QT1JUIH0gZnJvbSBcIi4vbmV0LnRzXCI7XG5cbmNvbnN0IGVudmlyb25tZW50TmFtZSA9IDxUIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBULCBkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICB6LmxpdGVyYWwobmFtZSkuZGVmYXVsdChuYW1lKS5kZXNjcmliZShkZXNjcmlwdGlvbik7XG5cbmV4cG9ydCBjb25zdCBEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcHJvZmlsZTogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19DT05GSUdfUFJPRklMRVwiLCBcIkRhdGFicmlja3MgQ0xJIHByb2ZpbGUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGhvc3Q6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfSE9TVFwiLCBcIkRhdGFicmlja3MgaG9zdCBlbnZpcm9ubWVudC5cIiksXG4gICAgYWNjb3VudElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0FDQ09VTlRfSURcIiwgXCJEYXRhYnJpY2tzIGFjY291bnQgSUQgZW52aXJvbm1lbnQuXCIpLFxuICAgIHdvcmtzcGFjZUlkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX1dPUktTUEFDRV9JRFwiLCBcIkRhdGFicmlja3Mgd29ya3NwYWNlIElEIGVudmlyb25tZW50LlwiKSxcbiAgICBjb25maWdGaWxlOiBlbnZpcm9ubWVudE5hbWUoXG4gICAgICBcIkRBVEFCUklDS1NfQ09ORklHX0ZJTEVcIixcbiAgICAgIFwiRGF0YWJyaWNrcyBDTEkgY29uZmlnIGZpbGUgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgICBjbGllbnRJZDogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19DTElFTlRfSURcIiwgXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgY2xpZW50U2VjcmV0OiBlbnZpcm9ubWVudE5hbWUoXG4gICAgICBcIkRBVEFCUklDS1NfQ0xJRU5UX1NFQ1JFVFwiLFxuICAgICAgXCJEYXRhYnJpY2tzIE9BdXRoIGNsaWVudCBzZWNyZXQgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgICBhY2Nlc3NUb2tlbjogZW52aXJvbm1lbnROYW1lKFwiREFUQUJSSUNLU19UT0tFTlwiLCBcIkRhdGFicmlja3MgYWNjZXNzIHRva2VuIGVudmlyb25tZW50LlwiKSxcbiAgICBncm91cElkOiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0dST1VQX0lEXCIsIFwiRGF0YWJyaWNrcyBncm91cCBJRCBlbnZpcm9ubWVudC5cIiksXG4gICAgYXV0aFR5cGU6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVVUSF9UWVBFXCIsIFwiRGF0YWJyaWNrcyBhdXRoIHR5cGUgZW52aXJvbm1lbnQuXCIpLFxuICAgIGFwcE5hbWU6IGVudmlyb25tZW50TmFtZShcIkRBVEFCUklDS1NfQVBQX05BTUVcIiwgXCJEYXRhYnJpY2tzIEFwcCBuYW1lIGVudmlyb25tZW50LlwiKSxcbiAgICBhcHBQb3J0OiBlbnZpcm9ubWVudE5hbWUoXCJEQVRBQlJJQ0tTX0FQUF9QT1JUXCIsIFwiRGF0YWJyaWNrcyBBcHAgcG9ydCBlbnZpcm9ubWVudC5cIiksXG4gICAgbGFrZWJhc2VFbmRwb2ludDogZW52aXJvbm1lbnROYW1lKFwiTEFLRUJBU0VfRU5EUE9JTlRcIiwgXCJMYWtlYmFzZSBlbmRwb2ludCBlbnZpcm9ubWVudC5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJDYW5vbmljYWwgRGF0YWJyaWNrcyBDTEksIFNESywgQXBwcywgYW5kIExha2ViYXNlIGVudmlyb25tZW50IG5hbWVzLlwiKTtcblxuZXhwb3J0IHR5cGUgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMgPSB6Lm91dHB1dDx0eXBlb2YgRGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXNTY2hlbWE+O1xuXG4vKiogQ2Fub25pY2FsIERhdGFicmlja3MgZW52aXJvbm1lbnQgbmFtZXMgZGVyaXZlZCBmcm9tIHRoZSBvd25pbmcgc2NoZW1hLiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzID0gT2JqZWN0LmZyZWV6ZShEYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lc1NjaGVtYS5wYXJzZSh7fSkpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwb3N0Z3Jlc1JvbGU6IGVudmlyb25tZW50TmFtZShcbiAgICAgIFwiREJYX1RPT0xTX1BPU1RHUkVTX1JPTEVcIixcbiAgICAgIFwiUG9zdGdyZVNRTCBhc3N1bWVkLXJvbGUgZW52aXJvbm1lbnQuXCIsXG4gICAgKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkNhbm9uaWNhbCBkYngtdG9vbHMgUG9zdGdyZVNRTCBlbnZpcm9ubWVudCBuYW1lcy5cIik7XG5cbmV4cG9ydCB0eXBlIFBvc3RncmVzRW52aXJvbm1lbnROYW1lcyA9IHoub3V0cHV0PHR5cGVvZiBQb3N0Z3Jlc0Vudmlyb25tZW50TmFtZXNTY2hlbWE+O1xuXG4vKiogQ2Fub25pY2FsIFBvc3RncmVTUUwgZW52aXJvbm1lbnQgbmFtZXMgZGVyaXZlZCBmcm9tIHRoZSBvd25pbmcgc2NoZW1hLiAqL1xuZXhwb3J0IGNvbnN0IHBvc3RncmVzRW52aXJvbm1lbnROYW1lcyA9IE9iamVjdC5mcmVlemUoUG9zdGdyZXNFbnZpcm9ubWVudE5hbWVzU2NoZW1hLnBhcnNlKHt9KSk7XG5cbmV4cG9ydCBjb25zdCBwb3N0Z3Jlc1JvbGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAudHJpbSgpXG4gIC5taW4oMSlcbiAgLnJlZ2V4KFxuICAgIC9eW0EtWmEtejAtOS5fQCstXXsxLDI1NX0kLyxcbiAgICBcIlBvc3RncmVTUUwgcm9sZSBtdXN0IGNvbnRhaW4gb25seSBsZXR0ZXJzLCBudW1iZXJzLCBkb3QsIHVuZGVyc2NvcmUsIGF0LCBwbHVzLCBvciBoeXBoZW4uXCIsXG4gIClcbiAgLmRlc2NyaWJlKFwiUG9zdGdyZVNRTCByb2xlIGFzc3VtZWQgYWZ0ZXIgYXV0aGVudGljYXRpb24uXCIpO1xuXG5leHBvcnQgY29uc3QgUG9zdGdyZXNPcHRpb25zU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwb3N0Z3Jlc1JvbGU6IHBvc3RncmVzUm9sZVNjaGVtYVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlBvc3RncmVTUUwgcm9sZSBhc3N1bWVkIGFmdGVyIGF1dGhlbnRpY2F0aW9uLlwiKVxuICAgICAgLm1ldGEoeyBlbnY6IHBvc3RncmVzRW52aXJvbm1lbnROYW1lcy5wb3N0Z3Jlc1JvbGUgfSksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJTaGFyZWQgUG9zdGdyZVNRTCBzZXNzaW9uIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgdHlwZSBQb3N0Z3Jlc09wdGlvbnMgPSB6LmlucHV0PHR5cGVvZiBQb3N0Z3Jlc09wdGlvbnNTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgdGNwUG9ydFNjaGVtYSA9IHouY29lcmNlXG4gIC5udW1iZXI8bnVtYmVyPigpXG4gIC5pbnQoKVxuICAubWluKDEpXG4gIC5tYXgoTUFYX1RDUF9QT1JUKVxuICAuZGVzY3JpYmUoXCJUQ1AgcG9ydCBmcm9tIDEgdGhyb3VnaCA2NTUzNS5cIik7XG5cbmV4cG9ydCBjb25zdCB0Y3BQb3J0T3JaZXJvU2NoZW1hID0gei5jb2VyY2VcbiAgLm51bWJlcjxudW1iZXI+KClcbiAgLmludCgpXG4gIC5taW4oMClcbiAgLm1heChNQVhfVENQX1BPUlQpXG4gIC5kZXNjcmliZShcIlRDUCBwb3J0IGZyb20gMCB0aHJvdWdoIDY1NTM1LCB3aGVyZSB6ZXJvIHJlcXVlc3RzIGF1dG9tYXRpYyBhbGxvY2F0aW9uLlwiKTtcblxuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZWRVcmxTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAudHJpbSgpXG4gIC5taW4oMSlcbiAgLnJlZmluZSgodmFsdWUpID0+IHVybEJ1aWxkZXIodmFsdWUpICE9PSB1bmRlZmluZWQsIHtcbiAgICBtZXNzYWdlOiBcIkV4cGVjdGVkIGEgdmFsaWQgVVJMIG9yIGhvc3QuXCIsXG4gIH0pXG4gIC5vdmVyd3JpdGUobm9ybWFsaXplVXJsKVxuICAuZGVzY3JpYmUoXCJVUkwgbm9ybWFsaXplZCB0aHJvdWdoIHRoZSBzaGFyZWQgVVJMIGJ1aWxkZXIuXCIpO1xuXG5jb25zdCBkYXRhYnJpY2tzVGV4dCA9IChkZXNjcmlwdGlvbjogc3RyaW5nKSA9PlxuICB6LnN0cmluZygpLnRyaW0oKS5taW4oMSkub3B0aW9uYWwoKS5kZXNjcmliZShkZXNjcmlwdGlvbik7XG5jb25zdCBkYXRhYnJpY2tzT3B0aW9uTWV0YSA9IChlbnY6IHN0cmluZywgZmxhZyA9IHRydWUpID0+ICh7XG4gIGVudixcbiAgZmxhZyxcbiAgaGVscERlZmF1bHQ6IGZhbHNlLFxufSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhYnJpY2tzT3B0aW9uc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcHJvZmlsZTogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIENMSSBwcm9maWxlLlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMucHJvZmlsZSksXG4gICAgKSxcbiAgICBob3N0OiBub3JtYWxpemVkVXJsU2NoZW1hXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiRGF0YWJyaWNrcyBob3N0LlwiKVxuICAgICAgLm1ldGEoZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuaG9zdCwgZmFsc2UpKSxcbiAgICBhY2NvdW50SWQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBhY2NvdW50IElELlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYWNjb3VudElkLCBmYWxzZSksXG4gICAgKSxcbiAgICB3b3Jrc3BhY2VJZDogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIHdvcmtzcGFjZSBJRC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLndvcmtzcGFjZUlkLCBmYWxzZSksXG4gICAgKSxcbiAgICBjb25maWdGaWxlOiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgQ0xJIGNvbmZpZyBmaWxlLlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuY29uZmlnRmlsZSwgZmFsc2UpLFxuICAgICksXG4gICAgY2xpZW50SWQ6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBPQXV0aCBjbGllbnQgSUQuXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5jbGllbnRJZCwgZmFsc2UpLFxuICAgICksXG4gICAgY2xpZW50U2VjcmV0OiBkYXRhYnJpY2tzVGV4dChcIkRhdGFicmlja3MgT0F1dGggY2xpZW50IHNlY3JldC5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmNsaWVudFNlY3JldCwgZmFsc2UpLFxuICAgICksXG4gICAgYWNjZXNzVG9rZW46IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBhY2Nlc3MgdG9rZW4uXCIpLm1ldGEoXG4gICAgICBkYXRhYnJpY2tzT3B0aW9uTWV0YShkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5hY2Nlc3NUb2tlbiwgZmFsc2UpLFxuICAgICksXG4gICAgZ3JvdXBJZDogZGF0YWJyaWNrc1RleHQoXCJEYXRhYnJpY2tzIGdyb3VwIElELlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuZ3JvdXBJZCwgZmFsc2UpLFxuICAgICksXG4gICAgYXV0aFR5cGU6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBhdXRoZW50aWNhdGlvbiB0eXBlLlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYXV0aFR5cGUsIGZhbHNlKSxcbiAgICApLFxuICAgIGFwcE5hbWU6IGRhdGFicmlja3NUZXh0KFwiRGF0YWJyaWNrcyBBcHAgbmFtZS5cIikubWV0YShcbiAgICAgIGRhdGFicmlja3NPcHRpb25NZXRhKGRhdGFicmlja3NFbnZpcm9ubWVudE5hbWVzLmFwcE5hbWUsIGZhbHNlKSxcbiAgICApLFxuICAgIGFwcFBvcnQ6IHRjcFBvcnRTY2hlbWFcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJEYXRhYnJpY2tzIEFwcCBwb3J0LlwiKVxuICAgICAgLm1ldGEoZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMuYXBwUG9ydCwgZmFsc2UpKSxcbiAgICBsYWtlYmFzZUVuZHBvaW50OiBkYXRhYnJpY2tzVGV4dChcIkxha2ViYXNlIGVuZHBvaW50LlwiKS5tZXRhKFxuICAgICAgZGF0YWJyaWNrc09wdGlvbk1ldGEoZGF0YWJyaWNrc0Vudmlyb25tZW50TmFtZXMubGFrZWJhc2VFbmRwb2ludCwgZmFsc2UpLFxuICAgICksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJDb21tb24gRGF0YWJyaWNrcyBDTEksIFNESywgQXBwcywgYW5kIExha2ViYXNlIG9wdGlvbnMuXCIpO1xuXG5leHBvcnQgdHlwZSBEYXRhYnJpY2tzT3B0aW9ucyA9IHouaW5wdXQ8dHlwZW9mIERhdGFicmlja3NPcHRpb25zU2NoZW1hPjtcblxuLyoqIEtleSBmb3JtYXQgdXNlZCB3aGVuIHNlcmlhbGl6aW5nIHBhcnNlZCBvcHRpb25zLiAqL1xuZXhwb3J0IHR5cGUgT3B0aW9uU2VyaWFsaXphdGlvbkZvcm1hdCA9IFwiZmxhZ1wiIHwgXCJlbnZcIjtcblxuaW50ZXJmYWNlIE9wdGlvblByb3BlcnR5IHtcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudj86IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBmbGFnPzogYm9vbGVhbjtcbn1cblxuLyoqIFNlcmlhbGl6ZSBjb21wbGV0ZSBwYXJzZWQgb3B0aW9ucyBhcyBhIHByb2Nlc3MgZW52aXJvbm1lbnQgbWFwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU9wdHNFbnZpcm9ubWVudDxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIHZhbHVlczogei5pbnB1dDx6LlpvZE9iamVjdDxUPj4sXG4pOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoc2VyaWFsaXplZE9wdHMoc2NoZW1hLCB2YWx1ZXMsIFwiZW52XCIpKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAga2V5LFxuICAgICAgZW52aXJvbm1lbnRPcHRpb25WYWx1ZSh2YWx1ZSksXG4gICAgXSksXG4gICk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZWRPcHRzPFQgZXh0ZW5kcyB6LlpvZFJhd1NoYXBlPihcbiAgc2NoZW1hOiB6LlpvZE9iamVjdDxUPixcbiAgdmFsdWVzOiB6LmlucHV0PHouWm9kT2JqZWN0PFQ+PixcbiAgZm9ybWF0OiBPcHRpb25TZXJpYWxpemF0aW9uRm9ybWF0LFxuKTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnBhcnNlKHZhbHVlcykgYXMgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBjb25zdCBlbnRyaWVzID0gb3B0aW9uUHJvcGVydGllcyhzY2hlbWEpLmZsYXRNYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgaWYgKGZvcm1hdCA9PT0gXCJmbGFnXCIgJiYgcHJvcGVydHkuZmxhZyA9PT0gZmFsc2UpIHJldHVybiBbXTtcbiAgICBjb25zdCBrZXkgPVxuICAgICAgZm9ybWF0ID09PSBcImZsYWdcIlxuICAgICAgICA/IGAtLSR7dG9TbHVnKHByb3BlcnR5LmtleSl9YFxuICAgICAgICA6IChvcHRpb25FbnZpcm9ubWVudE5hbWVzKHByb3BlcnR5LmtleSwgcHJvcGVydHkuZW52KVswXSA/PyBcIlwiKTtcbiAgICBpZiAoIWtleSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VkW3Byb3BlcnR5LmtleV07XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyBbXSA6IFtba2V5LCBzZXJpYWxpemVkT3B0aW9uVmFsdWUodmFsdWUpXSBhcyBjb25zdF07XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpO1xufVxuXG5jb25zdCBvcHRpb25hbFRleHQgPSAoZGVzY3JpcHRpb246IHN0cmluZywgZW52OiBzdHJpbmcpID0+XG4gIHouc3RyaW5nKCkudHJpbSgpLm1pbigxKS5vcHRpb25hbCgpLmRlc2NyaWJlKGRlc2NyaXB0aW9uKS5tZXRhKHsgZW52LCBmbGFnOiBmYWxzZSB9KTtcblxuZXhwb3J0IGNvbnN0IExha2ViYXNlT3B0aW9uc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbGFrZWJhc2VFbmRwb2ludDogb3B0aW9uYWxUZXh0KFxuICAgICAgXCJMYWtlYmFzZSBwcm9qZWN0LCByZXNvdXJjZSBwYXRoLCBob3N0LCBvciBVUkwuXCIsXG4gICAgICBkYXRhYnJpY2tzRW52aXJvbm1lbnROYW1lcy5sYWtlYmFzZUVuZHBvaW50LFxuICAgICksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJDb21tb24gTGFrZWJhc2Ugb3B0aW9ucy5cIik7XG5cbmV4cG9ydCB0eXBlIExha2ViYXNlT3B0aW9ucyA9IHouaW5wdXQ8dHlwZW9mIExha2ViYXNlT3B0aW9uc1NjaGVtYT47XG5cbi8qKiBFeHBsaWNpdCBvcHRpb24gdmFsdWVzIG9yIGVudmlyb25tZW50IGVudHJpZXMgY29uc3VtZWQgYnkgb3B0aW9uIHBhcnNpbmcgaGVscGVycy4gKi9cbmV4cG9ydCB0eXBlIE9wdGlvblZhbHVlTWFwID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHwgbnVsbDtcblxuLyoqIFBhcnNlIG9ubHkgc3VwcGxpZWQgZmxhZyBhbmQgZW52aXJvbm1lbnQgdmFsdWVzIHRocm91Z2ggYW4gb3duaW5nIFpvZCBvYmplY3Qgc2NoZW1hLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT3B0czxUIGV4dGVuZHMgei5ab2RSYXdTaGFwZT4oXG4gIHNjaGVtYTogei5ab2RPYmplY3Q8VD4sXG4gIGZsYWdzOiBPcHRpb25WYWx1ZU1hcCA9IG51bGwsXG4gIGVudmlyb25tZW50OiBPcHRpb25WYWx1ZU1hcCA9IG51bGwsXG4pOiBQYXJ0aWFsPHoub3V0cHV0PHouWm9kT2JqZWN0PFQ+Pj4ge1xuICBjb25zdCBjb25maWd1cmVkID0gb3B0aW9uVmFsdWVzKHNjaGVtYSwgZmxhZ3MsIGVudmlyb25tZW50KTtcbiAgY29uc3QgcGFyc2VkID0gc2NoZW1hLnBhcnNlKGNvbmZpZ3VyZWQpO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5rZXlzKGNvbmZpZ3VyZWQpLm1hcCgoa2V5KSA9PiBba2V5LCBwYXJzZWRba2V5IGFzIGtleW9mIHR5cGVvZiBwYXJzZWRdXSksXG4gICkgYXMgUGFydGlhbDx6Lm91dHB1dDx6LlpvZE9iamVjdDxUPj4+O1xufVxuXG4vKiogU3VwcG9ydGVkIGxpc3RlbmVyIHRyYW5zcG9ydCBzY2hlbWVzLiAqL1xuZXhwb3J0IHR5cGUgTGlzdGVuU2NoZW1lID0gXCJ0Y3BcIiB8IFwidW5peFwiO1xuXG5leHBvcnQgY29uc3QgVGNwTGlzdGVuQWRkcmVzc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc2NoZW1lOiB6LmxpdGVyYWwoXCJ0Y3BcIiksXG4gICAgaG9zdDogei5zdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKS5taW4oMSksXG4gICAgcG9ydDogdGNwUG9ydE9yWmVyb1NjaGVtYSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIlRDUCBsaXN0ZW5lciBhZGRyZXNzLlwiKTtcblxuZXhwb3J0IGNvbnN0IFVuaXhMaXN0ZW5BZGRyZXNzU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzY2hlbWU6IHoubGl0ZXJhbChcInVuaXhcIiksXG4gICAgcGF0aDogei5zdHJpbmcoKS50cmltKCkubWluKDEpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiVW5peC1kb21haW4gbGlzdGVuZXIgYWRkcmVzcy5cIik7XG5cbi8qKiBUQ1AgbGlzdGVuZXIgcmV0dXJuZWQgYnkge0BsaW5rIGxpc3RlbkFkZHJlc3NTY2hlbWF9LiAqL1xuZXhwb3J0IHR5cGUgVGNwTGlzdGVuQWRkcmVzcyA9IHoub3V0cHV0PHR5cGVvZiBUY3BMaXN0ZW5BZGRyZXNzU2NoZW1hPjtcbi8qKiBVbml4LWRvbWFpbiBsaXN0ZW5lciByZXR1cm5lZCBieSB7QGxpbmsgbGlzdGVuQWRkcmVzc1NjaGVtYX0uICovXG5leHBvcnQgdHlwZSBVbml4TGlzdGVuQWRkcmVzcyA9IHoub3V0cHV0PHR5cGVvZiBVbml4TGlzdGVuQWRkcmVzc1NjaGVtYT47XG4vKiogVHJhbnNwb3J0LWF3YXJlIGxpc3RlbmVyIGFkZHJlc3MuICovXG5leHBvcnQgdHlwZSBMaXN0ZW5BZGRyZXNzID0gVGNwTGlzdGVuQWRkcmVzcyB8IFVuaXhMaXN0ZW5BZGRyZXNzO1xuXG4vKiogRGVmYXVsdHMgYW5kIHZhbGlkYXRpb24gcG9saWN5IGZvciB7QGxpbmsgbGlzdGVuQWRkcmVzc1NjaGVtYX0uICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RlbkFkZHJlc3NPcHRpb25zIHtcbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuICByZWFkb25seSBob3N0Pzogc3RyaW5nO1xuICByZWFkb25seSBsb29wYmFjaz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNjaGVtZT86IExpc3RlblNjaGVtZTtcbiAgcmVhZG9ubHkgc2NoZW1lcz86IHJlYWRvbmx5IExpc3RlblNjaGVtZVtdO1xuICByZWFkb25seSB3aXRoRGVmYXVsdD86IGJvb2xlYW47XG59XG5cbi8qKiBSYXcgbGlzdGVuZXIgaW5wdXQgYWNjZXB0ZWQgYmVmb3JlIHRyYW5zcG9ydC1hd2FyZSBub3JtYWxpemF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgTGlzdGVuQWRkcmVzc0lucHV0ID0gTGlzdGVuQWRkcmVzcyB8IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zICYge1xuICAgIHJlYWRvbmx5IHNjaGVtZXM6IHJlYWRvbmx5IFtcInRjcFwiLCBcInVuaXhcIl07XG4gICAgcmVhZG9ubHkgd2l0aERlZmF1bHQ6IGZhbHNlO1xuICB9LFxuKTogei5ab2RUeXBlPExpc3RlbkFkZHJlc3MsIHVua25vd24+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuQWRkcmVzc1NjaGVtYShcbiAgb3B0aW9uczogTGlzdGVuQWRkcmVzc09wdGlvbnMgJiB7IHJlYWRvbmx5IHNjaGVtZXM6IHJlYWRvbmx5IFtcInRjcFwiLCBcInVuaXhcIl0gfSxcbik6IHouWm9kRGVmYXVsdDx6LlpvZFR5cGU8TGlzdGVuQWRkcmVzcywgdW5rbm93bj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuQWRkcmVzc1NjaGVtYShcbiAgb3B0aW9uczogTGlzdGVuQWRkcmVzc09wdGlvbnMgJiB7IHJlYWRvbmx5IHdpdGhEZWZhdWx0OiBmYWxzZSB9LFxuKTogei5ab2RUeXBlPFRjcExpc3RlbkFkZHJlc3MsIHVua25vd24+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuQWRkcmVzc1NjaGVtYShcbiAgb3B0aW9uczogTGlzdGVuQWRkcmVzc09wdGlvbnMsXG4pOiB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPFRjcExpc3RlbkFkZHJlc3MsIHVua25vd24+PjtcblxuLyoqIEJ1aWxkIGEgdHJhbnNwb3J0LWF3YXJlIGxpc3RlbmVyIHNjaGVtYS4gQmFyZSBhZGRyZXNzZXMgdXNlIHRoZSBjb25maWd1cmVkIGRlZmF1bHQgc2NoZW1lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlbkFkZHJlc3NTY2hlbWEoXG4gIG9wdGlvbnM6IExpc3RlbkFkZHJlc3NPcHRpb25zLFxuKTogei5ab2RUeXBlPExpc3RlbkFkZHJlc3MsIHVua25vd24+IHwgei5ab2REZWZhdWx0PHouWm9kVHlwZTxMaXN0ZW5BZGRyZXNzLCB1bmtub3duPj4ge1xuICBjb25zdCBkZWZhdWx0czogVGNwTGlzdGVuQWRkcmVzcyA9IHtcbiAgICBzY2hlbWU6IFwidGNwXCIsXG4gICAgaG9zdDogb3B0aW9ucy5ob3N0ID8/IFwibG9jYWxob3N0XCIsXG4gICAgcG9ydDogb3B0aW9ucy5wb3J0LFxuICB9O1xuICBjb25zdCBhbGxvd2VkID0gbmV3IFNldDxMaXN0ZW5TY2hlbWU+KG9wdGlvbnMuc2NoZW1lcyA/PyBbXCJ0Y3BcIl0pO1xuICBjb25zdCBzY2hlbWEgPSB6XG4gICAgLnByZXByb2Nlc3MoXG4gICAgICAodmFsdWUpID0+IHBhcnNlTGlzdGVuQWRkcmVzcyh2YWx1ZSwgZGVmYXVsdHMsIG9wdGlvbnMuc2NoZW1lID8/IFwidGNwXCIpLFxuICAgICAgei5kaXNjcmltaW5hdGVkVW5pb24oXCJzY2hlbWVcIiwgW1xuICAgICAgICBUY3BMaXN0ZW5BZGRyZXNzU2NoZW1hLmV4dGVuZCh7XG4gICAgICAgICAgaG9zdDogVGNwTGlzdGVuQWRkcmVzc1NjaGVtYS5zaGFwZS5ob3N0LmRlZmF1bHQoZGVmYXVsdHMuaG9zdCksXG4gICAgICAgICAgcG9ydDogVGNwTGlzdGVuQWRkcmVzc1NjaGVtYS5zaGFwZS5wb3J0LmRlZmF1bHQoZGVmYXVsdHMucG9ydCksXG4gICAgICAgIH0pLFxuICAgICAgICBVbml4TGlzdGVuQWRkcmVzc1NjaGVtYSxcbiAgICAgIF0pLFxuICAgIClcbiAgICAucmVmaW5lKChhZGRyZXNzKSA9PiBhbGxvd2VkLmhhcyhhZGRyZXNzLnNjaGVtZSksIFwiTGlzdGVuZXIgc2NoZW1lIGlzIG5vdCBhbGxvd2VkLlwiKVxuICAgIC5yZWZpbmUoXG4gICAgICAoYWRkcmVzcykgPT4gYWRkcmVzcy5zY2hlbWUgIT09IFwidGNwXCIgfHwgIW9wdGlvbnMubG9vcGJhY2sgfHwgaXNMb29wYmFja0hvc3QoYWRkcmVzcy5ob3N0KSxcbiAgICAgIFwiTGlzdGVuZXIgaG9zdCBtdXN0IGJlIGxvb3BiYWNrLlwiLFxuICAgIClcbiAgICAuZGVzY3JpYmUoXCJUQ1Agb3IgVW5peC1kb21haW4gbGlzdGVuZXIgYWRkcmVzcy5cIikgYXMgei5ab2RUeXBlPExpc3RlbkFkZHJlc3MsIHVua25vd24+O1xuICByZXR1cm4gb3B0aW9ucy53aXRoRGVmYXVsdCA9PT0gZmFsc2UgPyBzY2hlbWEgOiBzY2hlbWEuZGVmYXVsdChkZWZhdWx0cyk7XG59XG5cbi8qKiBSZW5kZXIgYSBsaXN0ZW5lciBhZGRyZXNzIGFzIGEgYHRjcDovL2Agb3IgYHVuaXg6Ly9gIFVSTC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMaXN0ZW5BZGRyZXNzKGFkZHJlc3M6IExpc3RlbkFkZHJlc3MpOiBzdHJpbmcge1xuICBpZiAoYWRkcmVzcy5zY2hlbWUgPT09IFwidW5peFwiKSB7XG4gICAgcmV0dXJuIGB1bml4Oi8vJHthZGRyZXNzLnBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBcIlwiIDogXCIvXCJ9JHthZGRyZXNzLnBhdGh9YDtcbiAgfVxuICBjb25zdCBob3N0ID0gYWRkcmVzcy5ob3N0LmluY2x1ZGVzKFwiOlwiKSA/IGBbJHthZGRyZXNzLmhvc3R9XWAgOiBhZGRyZXNzLmhvc3Q7XG4gIHJldHVybiBgdGNwOi8vJHtob3N0fToke2FkZHJlc3MucG9ydH1gO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxpc3RlbkFkZHJlc3MoXG4gIHZhbHVlOiB1bmtub3duLFxuICBkZWZhdWx0czogVGNwTGlzdGVuQWRkcmVzcyxcbiAgZGVmYXVsdFNjaGVtZTogTGlzdGVuU2NoZW1lLFxuKTogdW5rbm93biB7XG4gIGlmIChpc1JlY29yZCh2YWx1ZSkgJiYgdmFsdWUuc2NoZW1lID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlLmhvc3QgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUucG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyAuLi52YWx1ZSwgc2NoZW1lOiBcInRjcFwiIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUucGF0aCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHsgLi4udmFsdWUsIHNjaGVtZTogXCJ1bml4XCIgfTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBkZWZhdWx0U2NoZW1lID09PSBcInRjcFwiXG4gICAgICA/IHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiBkZWZhdWx0cy5ob3N0LCBwb3J0OiB2YWx1ZSB9XG4gICAgICA6IHsgc2NoZW1lOiBcInVuaXhcIiwgcGF0aDogU3RyaW5nKHZhbHVlKSB9O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiB2YWx1ZTtcbiAgY29uc3QgdGV4dCA9IHZhbHVlLnRyaW0oKTtcbiAgaWYgKHRleHQuc3RhcnRzV2l0aChcInVuaXg6Ly9cIikpIHtcbiAgICBjb25zdCBwYXRoID0gdGV4dC5zbGljZShcInVuaXg6Ly9cIi5sZW5ndGgpO1xuICAgIHJldHVybiB7IHNjaGVtZTogXCJ1bml4XCIsIHBhdGg6IHBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBwYXRoIDogYC8ke3BhdGh9YCB9O1xuICB9XG4gIGNvbnN0IHRjcCA9IHRleHQuc3RhcnRzV2l0aChcInRjcDovL1wiKSA/IHRleHQuc2xpY2UoXCJ0Y3A6Ly9cIi5sZW5ndGgpIDogdGV4dDtcbiAgaWYgKGRlZmF1bHRTY2hlbWUgPT09IFwidW5peFwiICYmICF0ZXh0LnN0YXJ0c1dpdGgoXCJ0Y3A6Ly9cIikpIHtcbiAgICByZXR1cm4geyBzY2hlbWU6IFwidW5peFwiLCBwYXRoOiB0ZXh0IH07XG4gIH1cbiAgaWYgKC9eXFxkKyQvLnRlc3QodGNwKSkgcmV0dXJuIHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiBkZWZhdWx0cy5ob3N0LCBwb3J0OiB0Y3AgfTtcbiAgaWYgKC9eOlxcZCskLy50ZXN0KHRjcCkpIHtcbiAgICByZXR1cm4geyBzY2hlbWU6IFwidGNwXCIsIGhvc3Q6IGRlZmF1bHRzLmhvc3QsIHBvcnQ6IHRjcC5zbGljZSgxKSB9O1xuICB9XG4gIGNvbnN0IGJyYWNrZXRlZCA9IHRjcC5tYXRjaCgvXlxcWyhbXlxcXV0rKVxcXSg/OjooXFxkKykpPyQvKTtcbiAgaWYgKGJyYWNrZXRlZCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWU6IFwidGNwXCIsXG4gICAgICBob3N0OiBicmFja2V0ZWRbMV0sXG4gICAgICBwb3J0OiBicmFja2V0ZWRbMl0gPz8gZGVmYXVsdHMucG9ydCxcbiAgICB9O1xuICB9XG4gIGNvbnN0IHNlcGFyYXRvciA9IHRjcC5sYXN0SW5kZXhPZihcIjpcIik7XG4gIGlmIChzZXBhcmF0b3IgPiAwICYmICF0Y3Auc2xpY2UoMCwgc2VwYXJhdG9yKS5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1lOiBcInRjcFwiLFxuICAgICAgaG9zdDogdGNwLnNsaWNlKDAsIHNlcGFyYXRvciksXG4gICAgICBwb3J0OiB0Y3Auc2xpY2Uoc2VwYXJhdG9yICsgMSksXG4gICAgfTtcbiAgfVxuICByZXR1cm4geyBzY2hlbWU6IFwidGNwXCIsIGhvc3Q6IHRjcCB8fCBkZWZhdWx0cy5ob3N0LCBwb3J0OiBkZWZhdWx0cy5wb3J0IH07XG59XG5cbmZ1bmN0aW9uIG9wdGlvblByb3BlcnRpZXMoc2NoZW1hOiB6LlpvZE9iamVjdDx6LlpvZFJhd1NoYXBlPik6IE9wdGlvblByb3BlcnR5W10ge1xuICBjb25zdCBkb2N1bWVudCA9IHoudG9KU09OU2NoZW1hKHNjaGVtYSk7XG4gIGlmICghaXNSZWNvcmQoZG9jdW1lbnQucHJvcGVydGllcykpIHJldHVybiBbXTtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRvY3VtZW50LnByb3BlcnRpZXMpLmZsYXRNYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGlmICghaXNSZWNvcmQodmFsdWUpKSByZXR1cm4gW107XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAga2V5LFxuICAgICAgICB0eXBlOiB0eXBlb2YgdmFsdWUudHlwZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlLnR5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIGVudjpcbiAgICAgICAgICB0eXBlb2YgdmFsdWUuZW52ID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUuZW52KVxuICAgICAgICAgICAgPyAodmFsdWUuZW52IGFzIHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGZsYWc6IHR5cGVvZiB2YWx1ZS5mbGFnID09PSBcImJvb2xlYW5cIiA/IHZhbHVlLmZsYWcgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIF07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVkT3B0aW9uVmFsdWUodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKGlzUmVjb3JkKHZhbHVlKSAmJiB2YWx1ZS5zY2hlbWUgPT09IFwidGNwXCIpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlLmhvc3QgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbHVlLnBvcnQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiBmb3JtYXRMaXN0ZW5BZGRyZXNzKHsgc2NoZW1lOiBcInRjcFwiLCBob3N0OiB2YWx1ZS5ob3N0LCBwb3J0OiB2YWx1ZS5wb3J0IH0pO1xuICAgIH1cbiAgfVxuICBpZiAoaXNSZWNvcmQodmFsdWUpICYmIHZhbHVlLnNjaGVtZSA9PT0gXCJ1bml4XCIgJiYgdHlwZW9mIHZhbHVlLnBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZm9ybWF0TGlzdGVuQWRkcmVzcyh7IHNjaGVtZTogXCJ1bml4XCIsIHBhdGg6IHZhbHVlLnBhdGggfSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBlbnZpcm9ubWVudE9wdGlvblZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubWFwKFN0cmluZykuam9pbihcIixcIik7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwpIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBvcHRpb25WYWx1ZXM8VCBleHRlbmRzIHouWm9kUmF3U2hhcGU+KFxuICBzY2hlbWE6IHouWm9kT2JqZWN0PFQ+LFxuICB2YWx1ZXM6IE9wdGlvblZhbHVlTWFwLFxuICBlbnZpcm9ubWVudDogT3B0aW9uVmFsdWVNYXAsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IGRvY3VtZW50ID0gei50b0pTT05TY2hlbWEoc2NoZW1hKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IGlzUmVjb3JkKGRvY3VtZW50LnByb3BlcnRpZXMpID8gZG9jdW1lbnQucHJvcGVydGllcyA6IHt9O1xuICBjb25zdCBjb25maWd1cmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHByb3BlcnR5XSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgIGlmICghaXNSZWNvcmQocHJvcGVydHkpKSBjb250aW51ZTtcbiAgICBjb25zdCBleHBsaWNpdCA9IGZpcnN0T3B0aW9uVmFsdWUodmFsdWVzLCBba2V5LCBgLS0ke3RvU2x1ZyhrZXkpfWBdKTtcbiAgICBpZiAoZXhwbGljaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uZmlndXJlZFtrZXldID0gb3B0aW9uRW52aXJvbm1lbnRWYWx1ZShwcm9wZXJ0eS50eXBlLCBleHBsaWNpdCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmFtZXMgPSBvcHRpb25FbnZpcm9ubWVudE5hbWVzKGtleSwgcHJvcGVydHkuZW52KTtcbiAgICBjb25zdCBzb3VyY2VkID0gZmlyc3RPcHRpb25WYWx1ZShlbnZpcm9ubWVudCwgbmFtZXMpO1xuICAgIGlmIChzb3VyY2VkID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgIGNvbmZpZ3VyZWRba2V5XSA9IG9wdGlvbkVudmlyb25tZW50VmFsdWUocHJvcGVydHkudHlwZSwgc291cmNlZCk7XG4gIH1cbiAgcmV0dXJuIGNvbmZpZ3VyZWQ7XG59XG5cbmZ1bmN0aW9uIG9wdGlvbkVudmlyb25tZW50TmFtZXMoa2V5OiBzdHJpbmcsIGNvbmZpZ3VyZWQ6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgY29uZmlndXJlZCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIFtjb25maWd1cmVkXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJlZCkpIHtcbiAgICByZXR1cm4gY29uZmlndXJlZC5maWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIik7XG4gIH1cbiAgcmV0dXJuIFt0b0lkZW50aWZpZXJXaXRoT3B0aW9ucyh7IGRlbGltaXRlcjogXCJfXCIgfSwga2V5KS50b1VwcGVyQ2FzZSgpXTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uRW52aXJvbm1lbnRWYWx1ZSh0eXBlOiB1bmtub3duLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBpZiAodHlwZSA9PT0gXCJib29sZWFuXCIpIHJldHVybiB0b0Jvb2xlYW4odmFsdWUpID8/IHZhbHVlO1xuICBpZiAodHlwZSA9PT0gXCJhcnJheVwiICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHBhcnNlTGlzdCh2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZmlyc3RPcHRpb25WYWx1ZShzb3VyY2U6IE9wdGlvblZhbHVlTWFwLCBrZXlzOiByZWFkb25seSBzdHJpbmdbXSk6IHVua25vd24gfCB1bmRlZmluZWQge1xuICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IFwiXCIpIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVVcmwodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVybCA9IHVybEJ1aWxkZXIodmFsdWUpO1xuICBpZiAoIXVybCkgcmV0dXJuIHZhbHVlO1xuICBjb25zdCBub3JtYWxpemVkID0gdXJsLnRvU3RyaW5nKCk7XG4gIHJldHVybiB1cmwucGF0aG5hbWUgPT09IFwiL1wiICYmICF1cmwuc2VhcmNoICYmICF1cmwuaGFzaCA/IG5vcm1hbGl6ZWQuc2xpY2UoMCwgLTEpIDogbm9ybWFsaXplZDtcbn1cbiJdfQ==
|
package/lib/src/pattern.js
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
*
|
|
36
36
|
* @module
|
|
37
37
|
*/
|
|
38
|
+
import * as errorUtils from "./error-utils.js";
|
|
38
39
|
import { logger } from "./log.js";
|
|
39
40
|
import * as predicate from "./predicate.js";
|
|
40
41
|
import { parseList } from "./string-utils.js";
|
|
@@ -65,7 +66,10 @@ function compileRegexLiteral(pattern, caseSensitive) {
|
|
|
65
66
|
return new RegExp(body, caseSensitive || flags.includes("i") ? flags : `${flags}i`);
|
|
66
67
|
}
|
|
67
68
|
catch (error) {
|
|
68
|
-
log.warn("ignoring invalid regex pattern", {
|
|
69
|
+
log.warn("ignoring invalid regex pattern", {
|
|
70
|
+
pattern,
|
|
71
|
+
error: errorUtils.toError(error),
|
|
72
|
+
});
|
|
69
73
|
return undefined;
|
|
70
74
|
}
|
|
71
75
|
}
|
|
@@ -125,4 +129,4 @@ export function toPatternMatcher(patterns, options = {}) {
|
|
|
125
129
|
return predicate.create(() => false);
|
|
126
130
|
return compiled.slice(1).reduce((acc, next) => acc.or(next), compiled[0]);
|
|
127
131
|
}
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXR0ZXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxTQUFTLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBUXJDLHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWE7SUFDeEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCwyREFBMkQ7QUFDM0QsU0FBUyxjQUFjLENBQUMsT0FBZTtJQUNyQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQsb0RBQW9EO0FBQ3BELFNBQVMsTUFBTSxDQUFDLE9BQWU7SUFDN0IsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQUMsT0FBZSxFQUFFLGFBQXNCO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0s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QUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDN0MsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUF3QyxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFTLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExpdGVyYWwgLyBnbG9iIC8gcmVnZXggc3RyaW5nIG1hdGNoaW5nLCBjb21waWxlZCB0byBhIGNvbXBvc2FibGVcbiAqIHtAbGluayBQcmVkaWNhdGV9LlxuICpcbiAqIEEgY29uZmlndXJhYmxlIGFsbG93LWxpc3QgaXMgdGhlIHNhbWUgc2hhcGUgZXZlcnl3aGVyZSBpbiB0aGlzIHJlcG86IGEgbGlzdCBvZlxuICogcGF0dGVybnMgZnJvbSBhIGNvbmZpZyBmaWVsZCBvciBhbiBlbnYgdmFyLCB3aGVyZSBhbiBvcGVyYXRvciByZWFzb25hYmx5XG4gKiBleHBlY3RzIHRvIHdyaXRlIGEgcGxhaW4gdmFsdWUsIGEgYCpgIHdpbGRjYXJkLCBvciAtIHdoZW4gbmVpdGhlciBpcyBlbm91Z2ggLVxuICogYSByZWFsIHJlZ2V4LiBUaGlzIG1vZHVsZSBpcyB0aGUgc2luZ2xlIHBhcnNlciBmb3IgdGhvc2UgdGhyZWUgZm9ybXMuXG4gKlxuICogVGhyZWUgc2hhcGVzIGFyZSByZWNvZ25pemVkIHBlciBlbnRyeSwgdHJpZWQgaW4gb3JkZXI6XG4gKlxuICogLSAqKnJlZ2V4KiogLSB3cmFwcGVkIGluIHNsYXNoZXMgKGAvXngtbWFzdHJhLS9gLCB3aXRoIG9wdGlvbmFsIHRyYWlsaW5nXG4gKiAgIGZsYWdzKS4gQ29tcGlsZWQgYXMgd3JpdHRlbi4gQW4gaW52YWxpZCByZWdleCBuZXZlciBtYXRjaGVzOiBpdCBpcyBza2lwcGVkXG4gKiAgIHdpdGggYSB3YXJuaW5nIHJhdGhlciB0aGFuIHRocm93aW5nLCBzbyBvbmUgYmFkIGVudHJ5IGNhbm5vdCB0YWtlIGEgcHJvY2Vzc1xuICogICBkb3duIGF0IHN0YXJ0dXAuXG4gKiAtICoqZ2xvYioqIC0gY29udGFpbnMgYCpgIG9yIGA/YCAoYHgtbWFzdHJhLSpgKS4gU2hlbGwtc3R5bGUsIGFuY2hvcmVkIGF0IGJvdGhcbiAqICAgZW5kczogYCpgIG1hdGNoZXMgYW55IHJ1biBvZiBjaGFyYWN0ZXJzLCBgP2AgZXhhY3RseSBvbmUuXG4gKiAtICoqbGl0ZXJhbCoqIC0gYW55dGhpbmcgZWxzZS4gV2hvbGUtc3RyaW5nIGVxdWFsaXR5LlxuICpcbiAqIE1hdGNoaW5nIGlzIGNhc2UtSU5TRU5TSVRJVkUgYnkgZGVmYXVsdCwgd2hpY2ggaXMgd2hhdCB0aGUgY2FsbGVycyB3YW50IChIVFRQXG4gKiBoZWFkZXIgbmFtZXMgYW5kIGVtYWlsIGFkZHJlc3NlcyBhcmUgYm90aCBjYXNlLWluc2Vuc2l0aXZlKTsgcGFzc1xuICogYGNhc2VTZW5zaXRpdmVgIHRvIG9wdCBvdXQuIEFuIGVtcHR5IHBhdHRlcm4gbGlzdCBtYXRjaGVzIE5PVEhJTkcsIHNvIGFcbiAqIGNhbGxlciB0aGF0IHRyZWF0cyBcIm5vIHBhdHRlcm5zXCIgYXMgXCJwZXJtaXQgZXZlcnl0aGluZ1wiIG11c3Qgc3BlY2lhbC1jYXNlIGl0XG4gKiByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHRoZSBtYXRjaGVyLlxuICpcbiAqIEJyb3dzZXItc2FmZTogaGFuZC1jb21waWxlZCB0byBgUmVnRXhwYCB3aXRoIG5vIGdsb2IgZGVwZW5kZW5jeSwgc28gdGhpcyBzdGF5c1xuICogdXNhYmxlIGZyb20gYSBjbGllbnQgYnVuZGxlLiBOb2RlIGNvZGUgdGhhdCBuZWVkcyBwYXRoLWF3YXJlIGdsb2JiaW5nXG4gKiAoYC9gIGFzIGEgc2VnbWVudCBib3VuZGFyeSwgYCoqYCkgd2FudHMgYEBkYngtdG9vbHMvcGF0aGAncyBgdG9QYXRoTWF0Y2hlcmBcbiAqIGluc3RlYWQgLSB0aGF0IG9uZSBpcyBgbWluaW1hdGNoYC1iYWNrZWQgYW5kIHVuZGVyc3RhbmRzIHBhdGggc2VtYW50aWNzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBhbGxvd2VkID0gdG9QYXR0ZXJuTWF0Y2hlcihbXCJ4LW1hc3RyYS0qXCIsIFwiL154LXRyYWNlLS9cIl0pO1xuICogYWxsb3dlZChcIngtbWFzdHJhLXRocmVhZC1pZFwiKTsgLy8gdHJ1ZVxuICogYWxsb3dlZChcIngtZm9yd2FyZGVkLXVzZXJcIik7ICAgLy8gZmFsc2VcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nLnRzXCI7XG5pbXBvcnQgKiBhcyBwcmVkaWNhdGUgZnJvbSBcIi4vcHJlZGljYXRlLnRzXCI7XG5pbXBvcnQgeyBwYXJzZUxpc3QgfSBmcm9tIFwiLi9zdHJpbmctdXRpbHMudHNcIjtcblxuY29uc3QgbG9nID0gbG9nZ2VyKFwic2hhcmVkL3BhdHRlcm5cIik7XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgdG9QYXR0ZXJufSAvIHtAbGluayB0b1BhdHRlcm5NYXRjaGVyfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybk9wdGlvbnMge1xuICAvKiogTWF0Y2ggY2FzZS1zZW5zaXRpdmVseS4gRGVmYXVsdCBgZmFsc2VgIChjYXNlLWluc2Vuc2l0aXZlKS4gKi9cbiAgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG5cbi8qKiBFc2NhcGUgYSBzdHJpbmcgZm9yIGxpdGVyYWwgdXNlIGluc2lkZSBhIGBSZWdFeHBgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuLyoqIFRydWUgd2hlbiBgcGF0dGVybmAgaXMgYSBgLy4uLi9mbGFnc2AgcmVnZXggbGl0ZXJhbC4gKi9cbmZ1bmN0aW9uIGlzUmVnZXhMaXRlcmFsKHBhdHRlcm46IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcGF0dGVybi5sZW5ndGggPiAxICYmIHBhdHRlcm4uc3RhcnRzV2l0aChcIi9cIikgJiYgL1xcL1thLXpdKiQvaS50ZXN0KHBhdHRlcm4pO1xufVxuXG4vKiogVHJ1ZSB3aGVuIGBwYXR0ZXJuYCBjb250YWlucyBhIGdsb2Igd2lsZGNhcmQuICovXG5mdW5jdGlvbiBpc0dsb2IocGF0dGVybjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBwYXR0ZXJuLmluY2x1ZGVzKFwiKlwiKSB8fCBwYXR0ZXJuLmluY2x1ZGVzKFwiP1wiKTtcbn1cblxuLyoqXG4gKiBDb21waWxlIGEgYC9wYXR0ZXJuL2ZsYWdzYCBsaXRlcmFsLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGlzIG1hbGZvcm1lZCBvclxuICogdGhlIGJvZHkgaXMgbm90IGEgdmFsaWQgcmVnZXguXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVSZWdleExpdGVyYWwocGF0dGVybjogc3RyaW5nLCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuKTogUmVnRXhwIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGFyc2VkID0gL15cXC8oLispXFwvKFthLXpdKikkL2lzLmV4ZWMocGF0dGVybik7XG4gIGlmICghcGFyc2VkKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBib2R5ID0gcGFyc2VkWzFdITtcbiAgY29uc3QgZmxhZ3MgPSBwYXJzZWRbMl0hO1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGJvZHksIGNhc2VTZW5zaXRpdmUgfHwgZmxhZ3MuaW5jbHVkZXMoXCJpXCIpID8gZmxhZ3MgOiBgJHtmbGFnc31pYCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nLndhcm4oXCJpZ25vcmluZyBpbnZhbGlkIHJlZ2V4IHBhdHRlcm5cIiwgeyBwYXR0ZXJuLCBlcnJvciB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSBhIHNoZWxsLXN0eWxlIGdsb2IgKGAqYCwgYD9gKSBpbnRvIGFuIGFuY2hvcmVkIGBSZWdFeHBgLiBFdmVyeSBvdGhlclxuICogY2hhcmFjdGVyIGlzIGVzY2FwZWQsIHNvIGEgZ2xvYiBjYW4gc2FmZWx5IGNvbnRhaW4gcmVnZXggbWV0YWNoYXJhY3RlcnNcbiAqIChgeC1hcHAuKmAgbWF0Y2hlcyBhIGxpdGVyYWwgZG90IGZvbGxvd2VkIGJ5IGFueXRoaW5nKS5cbiAqL1xuZnVuY3Rpb24gY29tcGlsZUdsb2IocGF0dGVybjogc3RyaW5nLCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuKTogUmVnRXhwIHtcbiAgY29uc3QgYm9keSA9IHBhdHRlcm5cbiAgICAuc3BsaXQoLyhbKj9dKS8pXG4gICAgLm1hcCgocGFydCkgPT4gKHBhcnQgPT09IFwiKlwiID8gXCIuKlwiIDogcGFydCA9PT0gXCI/XCIgPyBcIi5cIiA6IGVzY2FwZVJlZ0V4cChwYXJ0KSkpXG4gICAgLmpvaW4oXCJcIik7XG4gIHJldHVybiBuZXcgUmVnRXhwKGBeJHtib2R5fSRgLCBjYXNlU2Vuc2l0aXZlID8gXCJcIiA6IFwiaVwiKTtcbn1cblxuLyoqXG4gKiBDb21waWxlIE9ORSBwYXR0ZXJuIGludG8gYSBwcmVkaWNhdGUsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlIGVudHJ5IGlzIGVtcHR5XG4gKiBvciBhbiB1bnBhcnNlYWJsZSByZWdleCBsaXRlcmFsLlxuICpcbiAqIENhbGxlcnMgdGhhdCB3YW50IGEgd2hvbGUgbGlzdCBzaG91bGQgdXNlIHtAbGluayB0b1BhdHRlcm5NYXRjaGVyfTsgdGhpcyBpc1xuICogZXhwb3J0ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIGEgY29uc3VtZXIgYXBwbGllcyBpdHMgb3duIHNlbWFudGljcyB0byBzb21lXG4gKiBzaGFwZXMgYW5kIG9ubHkgd2FudHMgdGhlIGdsb2IvcmVnZXggaGFuZGxpbmcgKHRoZSBlbWFpbCBnYXRlJ3MgYmFyZS1kb21haW5cbiAqIHNob3J0Y3V0LCBmb3Igb25lKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGF0dGVybihcbiAgcGF0dGVybjogc3RyaW5nLFxuICBvcHRpb25zOiBQYXR0ZXJuT3B0aW9ucyA9IHt9LFxuKTogcHJlZGljYXRlLlByZWRpY2F0ZTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdHJpbW1lZCA9IHBhdHRlcm4udHJpbSgpO1xuICBpZiAoIXRyaW1tZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGNhc2VTZW5zaXRpdmUgPSBvcHRpb25zLmNhc2VTZW5zaXRpdmUgPz8gZmFsc2U7XG5cbiAgaWYgKGlzUmVnZXhMaXRlcmFsKHRyaW1tZWQpKSB7XG4gICAgY29uc3QgY29tcGlsZWQgPSBjb21waWxlUmVnZXhMaXRlcmFsKHRyaW1tZWQsIGNhc2VTZW5zaXRpdmUpO1xuICAgIHJldHVybiBjb21waWxlZCAmJiBwcmVkaWNhdGUuY3JlYXRlPHN0cmluZz4oKHZhbHVlKSA9PiBjb21waWxlZC50ZXN0KHZhbHVlKSk7XG4gIH1cbiAgaWYgKGlzR2xvYih0cmltbWVkKSkge1xuICAgIGNvbnN0IGNvbXBpbGVkID0gY29tcGlsZUdsb2IodHJpbW1lZCwgY2FzZVNlbnNpdGl2ZSk7XG4gICAgcmV0dXJuIHByZWRpY2F0ZS5jcmVhdGU8c3RyaW5nPigodmFsdWUpID0+IGNvbXBpbGVkLnRlc3QodmFsdWUpKTtcbiAgfVxuICAvLyBMaXRlcmFsOiB3aG9sZS1zdHJpbmcgZXF1YWxpdHkuXG4gIGNvbnN0IGV4cGVjdGVkID0gY2FzZVNlbnNpdGl2ZSA/IHRyaW1tZWQgOiB0cmltbWVkLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBwcmVkaWNhdGUuY3JlYXRlPHN0cmluZz4oKHZhbHVlKSA9PlxuICAgIGNhc2VTZW5zaXRpdmUgPyB2YWx1ZSA9PT0gZXhwZWN0ZWQgOiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBleHBlY3RlZCxcbiAgKTtcbn1cblxuLyoqXG4gKiBDb21waWxlIHBhdHRlcm5zIGludG8gYSBzaW5nbGUgT1InZCB7QGxpbmsgUHJlZGljYXRlfS4gQWNjZXB0cyB0aGUgcmF3IGNvbmZpZ1xuICogc2hhcGVzIHtAbGluayBwYXJzZUxpc3R9IGRvZXMgLSBhbiBhcnJheSwgb3Igb25lIGNvbW1hL3doaXRlc3BhY2Utc2VwYXJhdGVkXG4gKiBzdHJpbmcgLSBzbyBhIGZpZWxkIGFuZCBpdHMgZW52IHZhciBuZWVkIG5vIHNlcGFyYXRlIGhhbmRsaW5nLlxuICpcbiAqIFdpdGggbm8gdXNhYmxlIHBhdHRlcm5zIHRoZSByZXN1bHQgYWx3YXlzIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZm9yd2FyZGFibGUgPSB0b1BhdHRlcm5NYXRjaGVyKHByb2Nlc3MuZW52LlRVTk5FTF9GT1JXQVJEX0hFQURFUlMpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QYXR0ZXJuTWF0Y2hlcihcbiAgcGF0dGVybnM6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCxcbiAgb3B0aW9uczogUGF0dGVybk9wdGlvbnMgPSB7fSxcbik6IHByZWRpY2F0ZS5QcmVkaWNhdGU8c3RyaW5nPiB7XG4gIGNvbnN0IGNvbXBpbGVkID0gcGFyc2VMaXN0KHBhdHRlcm5zKVxuICAgIC5tYXAoKHBhdHRlcm4pID0+IHRvUGF0dGVybihwYXR0ZXJuLCBvcHRpb25zKSlcbiAgICAuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHByZWRpY2F0ZS5QcmVkaWNhdGU8c3RyaW5nPiA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKTtcbiAgaWYgKGNvbXBpbGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHByZWRpY2F0ZS5jcmVhdGU8c3RyaW5nPigoKSA9PiBmYWxzZSk7XG4gIHJldHVybiBjb21waWxlZC5zbGljZSgxKS5yZWR1Y2UoKGFjYywgbmV4dCkgPT4gYWNjLm9yKG5leHQpLCBjb21waWxlZFswXSEpO1xufVxuIl19
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXR0ZXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFFSCxPQUFPLEtBQUssVUFBVSxNQUFNLGtCQUFrQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxLQUFLLFNBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFOUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFRckMseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBYTtJQUN4QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxTQUFTLGNBQWMsQ0FBQyxPQUFlO0lBQ3JDLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFFRCxvREFBb0Q7QUFDcEQsU0FBUyxNQUFNLENBQUMsT0FBZTtJQUM3QixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxPQUFlLEVBQUUsYUFBc0I7SUFDbEUsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxNQUFNO1FBQUUsT0FB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RUFBRTtJQUU1QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQ2pDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM3QyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQXdDLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDaEYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQVMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7QUFDN0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGl0ZXJhbCAvIGdsb2IgLyByZWdleCBzdHJpbmcgbWF0Y2hpbmcsIGNvbXBpbGVkIHRvIGEgY29tcG9zYWJsZVxuICoge0BsaW5rIFByZWRpY2F0ZX0uXG4gKlxuICogQSBjb25maWd1cmFibGUgYWxsb3ctbGlzdCBpcyB0aGUgc2FtZSBzaGFwZSBldmVyeXdoZXJlIGluIHRoaXMgcmVwbzogYSBsaXN0IG9mXG4gKiBwYXR0ZXJucyBmcm9tIGEgY29uZmlnIGZpZWxkIG9yIGFuIGVudiB2YXIsIHdoZXJlIGFuIG9wZXJhdG9yIHJlYXNvbmFibHlcbiAqIGV4cGVjdHMgdG8gd3JpdGUgYSBwbGFpbiB2YWx1ZSwgYSBgKmAgd2lsZGNhcmQsIG9yIC0gd2hlbiBuZWl0aGVyIGlzIGVub3VnaCAtXG4gKiBhIHJlYWwgcmVnZXguIFRoaXMgbW9kdWxlIGlzIHRoZSBzaW5nbGUgcGFyc2VyIGZvciB0aG9zZSB0aHJlZSBmb3Jtcy5cbiAqXG4gKiBUaHJlZSBzaGFwZXMgYXJlIHJlY29nbml6ZWQgcGVyIGVudHJ5LCB0cmllZCBpbiBvcmRlcjpcbiAqXG4gKiAtICoqcmVnZXgqKiAtIHdyYXBwZWQgaW4gc2xhc2hlcyAoYC9eeC1tYXN0cmEtL2AsIHdpdGggb3B0aW9uYWwgdHJhaWxpbmdcbiAqICAgZmxhZ3MpLiBDb21waWxlZCBhcyB3cml0dGVuLiBBbiBpbnZhbGlkIHJlZ2V4IG5ldmVyIG1hdGNoZXM6IGl0IGlzIHNraXBwZWRcbiAqICAgd2l0aCBhIHdhcm5pbmcgcmF0aGVyIHRoYW4gdGhyb3dpbmcsIHNvIG9uZSBiYWQgZW50cnkgY2Fubm90IHRha2UgYSBwcm9jZXNzXG4gKiAgIGRvd24gYXQgc3RhcnR1cC5cbiAqIC0gKipnbG9iKiogLSBjb250YWlucyBgKmAgb3IgYD9gIChgeC1tYXN0cmEtKmApLiBTaGVsbC1zdHlsZSwgYW5jaG9yZWQgYXQgYm90aFxuICogICBlbmRzOiBgKmAgbWF0Y2hlcyBhbnkgcnVuIG9mIGNoYXJhY3RlcnMsIGA/YCBleGFjdGx5IG9uZS5cbiAqIC0gKipsaXRlcmFsKiogLSBhbnl0aGluZyBlbHNlLiBXaG9sZS1zdHJpbmcgZXF1YWxpdHkuXG4gKlxuICogTWF0Y2hpbmcgaXMgY2FzZS1JTlNFTlNJVElWRSBieSBkZWZhdWx0LCB3aGljaCBpcyB3aGF0IHRoZSBjYWxsZXJzIHdhbnQgKEhUVFBcbiAqIGhlYWRlciBuYW1lcyBhbmQgZW1haWwgYWRkcmVzc2VzIGFyZSBib3RoIGNhc2UtaW5zZW5zaXRpdmUpOyBwYXNzXG4gKiBgY2FzZVNlbnNpdGl2ZWAgdG8gb3B0IG91dC4gQW4gZW1wdHkgcGF0dGVybiBsaXN0IG1hdGNoZXMgTk9USElORywgc28gYVxuICogY2FsbGVyIHRoYXQgdHJlYXRzIFwibm8gcGF0dGVybnNcIiBhcyBcInBlcm1pdCBldmVyeXRoaW5nXCIgbXVzdCBzcGVjaWFsLWNhc2UgaXRcbiAqIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIG1hdGNoZXIuXG4gKlxuICogQnJvd3Nlci1zYWZlOiBoYW5kLWNvbXBpbGVkIHRvIGBSZWdFeHBgIHdpdGggbm8gZ2xvYiBkZXBlbmRlbmN5LCBzbyB0aGlzIHN0YXlzXG4gKiB1c2FibGUgZnJvbSBhIGNsaWVudCBidW5kbGUuIE5vZGUgY29kZSB0aGF0IG5lZWRzIHBhdGgtYXdhcmUgZ2xvYmJpbmdcbiAqIChgL2AgYXMgYSBzZWdtZW50IGJvdW5kYXJ5LCBgKipgKSB3YW50cyBgQGRieC10b29scy9wYXRoYCdzIGB0b1BhdGhNYXRjaGVyYFxuICogaW5zdGVhZCAtIHRoYXQgb25lIGlzIGBtaW5pbWF0Y2hgLWJhY2tlZCBhbmQgdW5kZXJzdGFuZHMgcGF0aCBzZW1hbnRpY3MuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFsbG93ZWQgPSB0b1BhdHRlcm5NYXRjaGVyKFtcIngtbWFzdHJhLSpcIiwgXCIvXngtdHJhY2UtL1wiXSk7XG4gKiBhbGxvd2VkKFwieC1tYXN0cmEtdGhyZWFkLWlkXCIpOyAvLyB0cnVlXG4gKiBhbGxvd2VkKFwieC1mb3J3YXJkZWQtdXNlclwiKTsgICAvLyBmYWxzZVxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgKiBhcyBlcnJvclV0aWxzIGZyb20gXCIuL2Vycm9yLXV0aWxzLnRzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi9sb2cudHNcIjtcbmltcG9ydCAqIGFzIHByZWRpY2F0ZSBmcm9tIFwiLi9wcmVkaWNhdGUudHNcIjtcbmltcG9ydCB7IHBhcnNlTGlzdCB9IGZyb20gXCIuL3N0cmluZy11dGlscy50c1wiO1xuXG5jb25zdCBsb2cgPSBsb2dnZXIoXCJzaGFyZWQvcGF0dGVyblwiKTtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGluayB0b1BhdHRlcm59IC8ge0BsaW5rIHRvUGF0dGVybk1hdGNoZXJ9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuT3B0aW9ucyB7XG4gIC8qKiBNYXRjaCBjYXNlLXNlbnNpdGl2ZWx5LiBEZWZhdWx0IGBmYWxzZWAgKGNhc2UtaW5zZW5zaXRpdmUpLiAqL1xuICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcbn1cblxuLyoqIEVzY2FwZSBhIHN0cmluZyBmb3IgbGl0ZXJhbCB1c2UgaW5zaWRlIGEgYFJlZ0V4cGAuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xufVxuXG4vKiogVHJ1ZSB3aGVuIGBwYXR0ZXJuYCBpcyBhIGAvLi4uL2ZsYWdzYCByZWdleCBsaXRlcmFsLiAqL1xuZnVuY3Rpb24gaXNSZWdleExpdGVyYWwocGF0dGVybjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBwYXR0ZXJuLmxlbmd0aCA+IDEgJiYgcGF0dGVybi5zdGFydHNXaXRoKFwiL1wiKSAmJiAvXFwvW2Etel0qJC9pLnRlc3QocGF0dGVybik7XG59XG5cbi8qKiBUcnVlIHdoZW4gYHBhdHRlcm5gIGNvbnRhaW5zIGEgZ2xvYiB3aWxkY2FyZC4gKi9cbmZ1bmN0aW9uIGlzR2xvYihwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhdHRlcm4uaW5jbHVkZXMoXCIqXCIpIHx8IHBhdHRlcm4uaW5jbHVkZXMoXCI/XCIpO1xufVxuXG4vKipcbiAqIENvbXBpbGUgYSBgL3BhdHRlcm4vZmxhZ3NgIGxpdGVyYWwsIG9yIGB1bmRlZmluZWRgIHdoZW4gaXQgaXMgbWFsZm9ybWVkIG9yXG4gKiB0aGUgYm9keSBpcyBub3QgYSB2YWxpZCByZWdleC5cbiAqL1xuZnVuY3Rpb24gY29tcGlsZVJlZ2V4TGl0ZXJhbChwYXR0ZXJuOiBzdHJpbmcsIGNhc2VTZW5zaXRpdmU6IGJvb2xlYW4pOiBSZWdFeHAgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXJzZWQgPSAvXlxcLyguKylcXC8oW2Etel0qKSQvaXMuZXhlYyhwYXR0ZXJuKTtcbiAgaWYgKCFwYXJzZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJvZHkgPSBwYXJzZWRbMV0hO1xuICBjb25zdCBmbGFncyA9IHBhcnNlZFsyXSE7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYm9keSwgY2FzZVNlbnNpdGl2ZSB8fCBmbGFncy5pbmNsdWRlcyhcImlcIikgPyBmbGFncyA6IGAke2ZsYWdzfWlgKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2cud2FybihcImlnbm9yaW5nIGludmFsaWQgcmVnZXggcGF0dGVyblwiLCB7XG4gICAgICBwYXR0ZXJuLFxuICAgICAgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnJvciksXG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIENvbXBpbGUgYSBzaGVsbC1zdHlsZSBnbG9iIChgKmAsIGA/YCkgaW50byBhbiBhbmNob3JlZCBgUmVnRXhwYC4gRXZlcnkgb3RoZXJcbiAqIGNoYXJhY3RlciBpcyBlc2NhcGVkLCBzbyBhIGdsb2IgY2FuIHNhZmVseSBjb250YWluIHJlZ2V4IG1ldGFjaGFyYWN0ZXJzXG4gKiAoYHgtYXBwLipgIG1hdGNoZXMgYSBsaXRlcmFsIGRvdCBmb2xsb3dlZCBieSBhbnl0aGluZykuXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVHbG9iKHBhdHRlcm46IHN0cmluZywgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbik6IFJlZ0V4cCB7XG4gIGNvbnN0IGJvZHkgPSBwYXR0ZXJuXG4gICAgLnNwbGl0KC8oWyo/XSkvKVxuICAgIC5tYXAoKHBhcnQpID0+IChwYXJ0ID09PSBcIipcIiA/IFwiLipcIiA6IHBhcnQgPT09IFwiP1wiID8gXCIuXCIgOiBlc2NhcGVSZWdFeHAocGFydCkpKVxuICAgIC5qb2luKFwiXCIpO1xuICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7Ym9keX0kYCwgY2FzZVNlbnNpdGl2ZSA/IFwiXCIgOiBcImlcIik7XG59XG5cbi8qKlxuICogQ29tcGlsZSBPTkUgcGF0dGVybiBpbnRvIGEgcHJlZGljYXRlLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSBlbnRyeSBpcyBlbXB0eVxuICogb3IgYW4gdW5wYXJzZWFibGUgcmVnZXggbGl0ZXJhbC5cbiAqXG4gKiBDYWxsZXJzIHRoYXQgd2FudCBhIHdob2xlIGxpc3Qgc2hvdWxkIHVzZSB7QGxpbmsgdG9QYXR0ZXJuTWF0Y2hlcn07IHRoaXMgaXNcbiAqIGV4cG9ydGVkIGZvciB0aGUgY2FzZSB3aGVyZSBhIGNvbnN1bWVyIGFwcGxpZXMgaXRzIG93biBzZW1hbnRpY3MgdG8gc29tZVxuICogc2hhcGVzIGFuZCBvbmx5IHdhbnRzIHRoZSBnbG9iL3JlZ2V4IGhhbmRsaW5nICh0aGUgZW1haWwgZ2F0ZSdzIGJhcmUtZG9tYWluXG4gKiBzaG9ydGN1dCwgZm9yIG9uZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhdHRlcm4oXG4gIHBhdHRlcm46IHN0cmluZyxcbiAgb3B0aW9uczogUGF0dGVybk9wdGlvbnMgPSB7fSxcbik6IHByZWRpY2F0ZS5QcmVkaWNhdGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRyaW1tZWQgPSBwYXR0ZXJuLnRyaW0oKTtcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9ucy5jYXNlU2Vuc2l0aXZlID8/IGZhbHNlO1xuXG4gIGlmIChpc1JlZ2V4TGl0ZXJhbCh0cmltbWVkKSkge1xuICAgIGNvbnN0IGNvbXBpbGVkID0gY29tcGlsZVJlZ2V4TGl0ZXJhbCh0cmltbWVkLCBjYXNlU2Vuc2l0aXZlKTtcbiAgICByZXR1cm4gY29tcGlsZWQgJiYgcHJlZGljYXRlLmNyZWF0ZTxzdHJpbmc+KCh2YWx1ZSkgPT4gY29tcGlsZWQudGVzdCh2YWx1ZSkpO1xuICB9XG4gIGlmIChpc0dsb2IodHJpbW1lZCkpIHtcbiAgICBjb25zdCBjb21waWxlZCA9IGNvbXBpbGVHbG9iKHRyaW1tZWQsIGNhc2VTZW5zaXRpdmUpO1xuICAgIHJldHVybiBwcmVkaWNhdGUuY3JlYXRlPHN0cmluZz4oKHZhbHVlKSA9PiBjb21waWxlZC50ZXN0KHZhbHVlKSk7XG4gIH1cbiAgLy8gTGl0ZXJhbDogd2hvbGUtc3RyaW5nIGVxdWFsaXR5LlxuICBjb25zdCBleHBlY3RlZCA9IGNhc2VTZW5zaXRpdmUgPyB0cmltbWVkIDogdHJpbW1lZC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gcHJlZGljYXRlLmNyZWF0ZTxzdHJpbmc+KCh2YWx1ZSkgPT5cbiAgICBjYXNlU2Vuc2l0aXZlID8gdmFsdWUgPT09IGV4cGVjdGVkIDogdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gZXhwZWN0ZWQsXG4gICk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBwYXR0ZXJucyBpbnRvIGEgc2luZ2xlIE9SJ2Qge0BsaW5rIFByZWRpY2F0ZX0uIEFjY2VwdHMgdGhlIHJhdyBjb25maWdcbiAqIHNoYXBlcyB7QGxpbmsgcGFyc2VMaXN0fSBkb2VzIC0gYW4gYXJyYXksIG9yIG9uZSBjb21tYS93aGl0ZXNwYWNlLXNlcGFyYXRlZFxuICogc3RyaW5nIC0gc28gYSBmaWVsZCBhbmQgaXRzIGVudiB2YXIgbmVlZCBubyBzZXBhcmF0ZSBoYW5kbGluZy5cbiAqXG4gKiBXaXRoIG5vIHVzYWJsZSBwYXR0ZXJucyB0aGUgcmVzdWx0IGFsd2F5cyByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGZvcndhcmRhYmxlID0gdG9QYXR0ZXJuTWF0Y2hlcihwcm9jZXNzLmVudi5UVU5ORUxfRk9SV0FSRF9IRUFERVJTKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGF0dGVybk1hdGNoZXIoXG4gIHBhdHRlcm5zOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGwsXG4gIG9wdGlvbnM6IFBhdHRlcm5PcHRpb25zID0ge30sXG4pOiBwcmVkaWNhdGUuUHJlZGljYXRlPHN0cmluZz4ge1xuICBjb25zdCBjb21waWxlZCA9IHBhcnNlTGlzdChwYXR0ZXJucylcbiAgICAubWFwKChwYXR0ZXJuKSA9PiB0b1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucykpXG4gICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBwcmVkaWNhdGUuUHJlZGljYXRlPHN0cmluZz4gPT4gdmFsdWUgIT09IHVuZGVmaW5lZCk7XG4gIGlmIChjb21waWxlZC5sZW5ndGggPT09IDApIHJldHVybiBwcmVkaWNhdGUuY3JlYXRlPHN0cmluZz4oKCkgPT4gZmFsc2UpO1xuICByZXR1cm4gY29tcGlsZWQuc2xpY2UoMSkucmVkdWNlKChhY2MsIG5leHQpID0+IGFjYy5vcihuZXh0KSwgY29tcGlsZWRbMF0hKTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
package/src/brand-utils.ts
CHANGED
|
@@ -105,12 +105,12 @@ export const BrandContextSchema = z
|
|
|
105
105
|
voice: BrandVoiceSchema,
|
|
106
106
|
links: z
|
|
107
107
|
.object({
|
|
108
|
-
website: z.string().url().
|
|
108
|
+
website: z.string().url().default("https://dbx.tools"),
|
|
109
109
|
repository: z.string().url().optional(),
|
|
110
110
|
documentation: z.string().url().optional(),
|
|
111
111
|
})
|
|
112
112
|
.strict()
|
|
113
|
-
.
|
|
113
|
+
.prefault({}),
|
|
114
114
|
extensions: z
|
|
115
115
|
.record(nonBlankString, z.unknown())
|
|
116
116
|
.default({})
|
package/src/log.ts
CHANGED
|
@@ -184,6 +184,17 @@ function consoleLoggerFactory(
|
|
|
184
184
|
if (seen.has(value)) return "[Circular]";
|
|
185
185
|
seen.add(value);
|
|
186
186
|
}
|
|
187
|
+
if (value instanceof Error) {
|
|
188
|
+
const error = value as Error & { cause?: unknown; errors?: unknown };
|
|
189
|
+
return {
|
|
190
|
+
...Object.fromEntries(Object.entries(error)),
|
|
191
|
+
name: error.name,
|
|
192
|
+
message: error.message,
|
|
193
|
+
stack: error.stack,
|
|
194
|
+
...(error.cause === undefined ? {} : { cause: error.cause }),
|
|
195
|
+
...(error.errors === undefined ? {} : { errors: error.errors }),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
187
198
|
return value;
|
|
188
199
|
});
|
|
189
200
|
}
|
|
@@ -397,6 +408,7 @@ function extractLoggerName(loggerName: NameLike | string | undefined): string |
|
|
|
397
408
|
* const logger = log.logger("genie/chat");
|
|
398
409
|
* logger.info("starting");
|
|
399
410
|
* logger.warn("missing optional config", { reason: "no env var" });
|
|
411
|
+
* logger.error("request failed", { error: errorUtils.toError(cause) });
|
|
400
412
|
*/
|
|
401
413
|
export function logger(loggerName: NameLike | string | undefined): Logger {
|
|
402
414
|
const name = extractLoggerName(loggerName);
|
package/src/options.ts
CHANGED
|
@@ -238,19 +238,27 @@ export function parseOpts<T extends z.ZodRawShape>(
|
|
|
238
238
|
/** Supported listener transport schemes. */
|
|
239
239
|
export type ListenScheme = "tcp" | "unix";
|
|
240
240
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
241
|
+
export const TcpListenAddressSchema = z
|
|
242
|
+
.object({
|
|
243
|
+
scheme: z.literal("tcp"),
|
|
244
|
+
host: z.string().trim().toLowerCase().min(1),
|
|
245
|
+
port: tcpPortOrZeroSchema,
|
|
246
|
+
})
|
|
247
|
+
.strict()
|
|
248
|
+
.describe("TCP listener address.");
|
|
247
249
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
250
|
+
export const UnixListenAddressSchema = z
|
|
251
|
+
.object({
|
|
252
|
+
scheme: z.literal("unix"),
|
|
253
|
+
path: z.string().trim().min(1),
|
|
254
|
+
})
|
|
255
|
+
.strict()
|
|
256
|
+
.describe("Unix-domain listener address.");
|
|
253
257
|
|
|
258
|
+
/** TCP listener returned by {@link listenAddressSchema}. */
|
|
259
|
+
export type TcpListenAddress = z.output<typeof TcpListenAddressSchema>;
|
|
260
|
+
/** Unix-domain listener returned by {@link listenAddressSchema}. */
|
|
261
|
+
export type UnixListenAddress = z.output<typeof UnixListenAddressSchema>;
|
|
254
262
|
/** Transport-aware listener address. */
|
|
255
263
|
export type ListenAddress = TcpListenAddress | UnixListenAddress;
|
|
256
264
|
|
|
@@ -300,19 +308,11 @@ export function listenAddressSchema(
|
|
|
300
308
|
.preprocess(
|
|
301
309
|
(value) => parseListenAddress(value, defaults, options.scheme ?? "tcp"),
|
|
302
310
|
z.discriminatedUnion("scheme", [
|
|
303
|
-
|
|
304
|
-
.
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
})
|
|
309
|
-
.strict(),
|
|
310
|
-
z
|
|
311
|
-
.object({
|
|
312
|
-
scheme: z.literal("unix"),
|
|
313
|
-
path: z.string().trim().min(1),
|
|
314
|
-
})
|
|
315
|
-
.strict(),
|
|
311
|
+
TcpListenAddressSchema.extend({
|
|
312
|
+
host: TcpListenAddressSchema.shape.host.default(defaults.host),
|
|
313
|
+
port: TcpListenAddressSchema.shape.port.default(defaults.port),
|
|
314
|
+
}),
|
|
315
|
+
UnixListenAddressSchema,
|
|
316
316
|
]),
|
|
317
317
|
)
|
|
318
318
|
.refine((address) => allowed.has(address.scheme), "Listener scheme is not allowed.")
|
package/src/pattern.ts
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
* @module
|
|
37
37
|
*/
|
|
38
38
|
|
|
39
|
+
import * as errorUtils from "./error-utils.ts";
|
|
39
40
|
import { logger } from "./log.ts";
|
|
40
41
|
import * as predicate from "./predicate.ts";
|
|
41
42
|
import { parseList } from "./string-utils.ts";
|
|
@@ -75,7 +76,10 @@ function compileRegexLiteral(pattern: string, caseSensitive: boolean): RegExp |
|
|
|
75
76
|
try {
|
|
76
77
|
return new RegExp(body, caseSensitive || flags.includes("i") ? flags : `${flags}i`);
|
|
77
78
|
} catch (error) {
|
|
78
|
-
log.warn("ignoring invalid regex pattern", {
|
|
79
|
+
log.warn("ignoring invalid regex pattern", {
|
|
80
|
+
pattern,
|
|
81
|
+
error: errorUtils.toError(error),
|
|
82
|
+
});
|
|
79
83
|
return undefined;
|
|
80
84
|
}
|
|
81
85
|
}
|