@dbx-tools/teams 0.4.1 → 0.5.1

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 CHANGED
@@ -2,31 +2,31 @@
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
 
5
- export * as auth from "./src/auth";
6
- export * as builder from "./src/builder";
7
- export * as config from "./src/config";
8
- export * as connector from "./src/connector";
9
- export * as conversation from "./src/conversation";
10
- export * as defaults from "./src/defaults";
11
- export * as messaging from "./src/messaging";
12
- export * as plugin from "./src/plugin";
13
- export * as runtime from "./src/runtime";
14
- export * as tool from "./src/tool";
15
- export { BOT_OPENID_METADATA, resetTeamsAuth, verifyBotToken, connectorToken, isAllowedServiceUrl } from "./src/auth";
16
- export type { VerifiedBotToken, VerifyOptions } from "./src/auth";
17
- export { buildAdaptiveCard, buildCardResult } from "./src/builder";
18
- export { CARD_VERSION_ENV, WEBHOOK_URL_ENV, AGENT_PLUGIN_ENV, APP_ID_ENVS, APP_PASSWORD_ENVS, APP_TENANT_ENVS, ALLOW_UNAUTHENTICATED_ENV, DEFAULT_AGENT_PLUGIN, TEAMS_CONFIG_SCHEMA, resolveTeamsConfig } from "./src/config";
19
- export type { TeamsPluginConfig, ResolvedTeamsConfig } from "./src/config";
20
- export { sendActivity, sendTyping } from "./src/connector";
21
- export type { ConnectorTarget } from "./src/connector";
22
- export { BOT_ACCOUNT, CARD_FORMAT_INSTRUCTIONS, CARD_ANSWER_INSTRUCTIONS, resolveCardAgent, resolveCardContextFactory, promptOf, toReplyActivity, documentCardSpec, rejectedCardSpec, runCardTurn } from "./src/conversation";
23
- export type { CardAgentLike, AgentResult, AgentProviderLike, CardTurnOptions, CardContextFactory } from "./src/conversation";
24
- export { BUILD_TIMEOUT_MS, POST_TIMEOUT_MS, POST_ATTEMPTS, TEAMS_BUILD_SETTINGS, TURN_TIMEOUT_MS, TEAMS_TURN_SETTINGS, TEAMS_POST_SETTINGS } from "./src/defaults";
25
- export type { TeamsExecuteConfig, TeamsExecutionSettings } from "./src/defaults";
26
- export { resolveServiceUrl, deliverTurn } from "./src/messaging";
27
- export type { BotCredentials, DeliverTurnOptions } from "./src/messaging";
28
- export { TeamsPlugin, teams } from "./src/plugin";
29
- export { getTeamsRuntime, setTeamsExecutor, resetTeamsRuntime, buildCard, postCard } from "./src/runtime";
30
- export type { TeamsExecutor, TeamsRuntime } from "./src/runtime";
31
- export { CREATE_CARD_DESCRIPTION, teamsCardTool } from "./src/tool";
32
- export type { TeamsCardToolOptions } from "./src/tool";
5
+ export * as auth from "./src/auth.ts";
6
+ export * as builder from "./src/builder.ts";
7
+ export * as config from "./src/config.ts";
8
+ export * as connector from "./src/connector.ts";
9
+ export * as conversation from "./src/conversation.ts";
10
+ export * as defaults from "./src/defaults.ts";
11
+ export * as messaging from "./src/messaging.ts";
12
+ export * as plugin from "./src/plugin.ts";
13
+ export * as runtime from "./src/runtime.ts";
14
+ export * as tool from "./src/tool.ts";
15
+ export { BOT_OPENID_METADATA, resetTeamsAuth, verifyBotToken, connectorToken, isAllowedServiceUrl } from "./src/auth.ts";
16
+ export type { VerifiedBotToken, VerifyOptions } from "./src/auth.ts";
17
+ export { buildAdaptiveCard, buildCardResult } from "./src/builder.ts";
18
+ export { CARD_VERSION_ENV, WEBHOOK_URL_ENV, AGENT_PLUGIN_ENV, APP_ID_ENVS, APP_PASSWORD_ENVS, APP_TENANT_ENVS, ALLOW_UNAUTHENTICATED_ENV, DEFAULT_AGENT_PLUGIN, TEAMS_CONFIG_SCHEMA, resolveTeamsConfig } from "./src/config.ts";
19
+ export type { TeamsPluginConfig, ResolvedTeamsConfig } from "./src/config.ts";
20
+ export { sendActivity, sendTyping } from "./src/connector.ts";
21
+ export type { ConnectorTarget } from "./src/connector.ts";
22
+ export { BOT_ACCOUNT, CARD_FORMAT_INSTRUCTIONS, CARD_ANSWER_INSTRUCTIONS, resolveCardAgent, resolveCardContextFactory, promptOf, toReplyActivity, documentCardSpec, rejectedCardSpec, runCardTurn } from "./src/conversation.ts";
23
+ export type { CardAgentLike, AgentResult, AgentProviderLike, CardTurnOptions, CardContextFactory } from "./src/conversation.ts";
24
+ export { BUILD_TIMEOUT_MS, POST_TIMEOUT_MS, POST_ATTEMPTS, TEAMS_BUILD_SETTINGS, TURN_TIMEOUT_MS, TEAMS_TURN_SETTINGS, TEAMS_POST_SETTINGS } from "./src/defaults.ts";
25
+ export type { TeamsExecuteConfig, TeamsExecutionSettings } from "./src/defaults.ts";
26
+ export { resolveServiceUrl, deliverTurn } from "./src/messaging.ts";
27
+ export type { BotCredentials, DeliverTurnOptions } from "./src/messaging.ts";
28
+ export { TeamsPlugin, teams } from "./src/plugin.ts";
29
+ export { getTeamsRuntime, setTeamsExecutor, resetTeamsRuntime, buildCard, postCard } from "./src/runtime.ts";
30
+ export type { TeamsExecutor, TeamsRuntime } from "./src/runtime.ts";
31
+ export { CREATE_CARD_DESCRIPTION, teamsCardTool } from "./src/tool.ts";
32
+ export type { TeamsCardToolOptions } from "./src/tool.ts";
package/lib/index.d.ts CHANGED
@@ -1,28 +1,28 @@
1
- export * as auth from "./src/auth.js";
2
- export * as builder from "./src/builder.js";
3
- export * as config from "./src/config.js";
4
- export * as connector from "./src/connector.js";
5
- export * as conversation from "./src/conversation.js";
6
- export * as defaults from "./src/defaults.js";
7
- export * as messaging from "./src/messaging.js";
8
- export * as plugin from "./src/plugin.js";
9
- export * as runtime from "./src/runtime.js";
10
- export * as tool from "./src/tool.js";
11
- export { BOT_OPENID_METADATA, resetTeamsAuth, verifyBotToken, connectorToken, isAllowedServiceUrl } from "./src/auth.js";
12
- export type { VerifiedBotToken, VerifyOptions } from "./src/auth.js";
13
- export { buildAdaptiveCard, buildCardResult } from "./src/builder.js";
14
- export { CARD_VERSION_ENV, WEBHOOK_URL_ENV, AGENT_PLUGIN_ENV, APP_ID_ENVS, APP_PASSWORD_ENVS, APP_TENANT_ENVS, ALLOW_UNAUTHENTICATED_ENV, DEFAULT_AGENT_PLUGIN, TEAMS_CONFIG_SCHEMA, resolveTeamsConfig } from "./src/config.js";
15
- export type { TeamsPluginConfig, ResolvedTeamsConfig } from "./src/config.js";
16
- export { sendActivity, sendTyping } from "./src/connector.js";
17
- export type { ConnectorTarget } from "./src/connector.js";
18
- export { BOT_ACCOUNT, CARD_FORMAT_INSTRUCTIONS, CARD_ANSWER_INSTRUCTIONS, resolveCardAgent, resolveCardContextFactory, promptOf, toReplyActivity, documentCardSpec, rejectedCardSpec, runCardTurn } from "./src/conversation.js";
19
- export type { CardAgentLike, AgentResult, AgentProviderLike, CardTurnOptions, CardContextFactory } from "./src/conversation.js";
20
- export { BUILD_TIMEOUT_MS, POST_TIMEOUT_MS, POST_ATTEMPTS, TEAMS_BUILD_SETTINGS, TURN_TIMEOUT_MS, TEAMS_TURN_SETTINGS, TEAMS_POST_SETTINGS } from "./src/defaults.js";
21
- export type { TeamsExecuteConfig, TeamsExecutionSettings } from "./src/defaults.js";
22
- export { resolveServiceUrl, deliverTurn } from "./src/messaging.js";
23
- export type { BotCredentials, DeliverTurnOptions } from "./src/messaging.js";
24
- export { TeamsPlugin, teams } from "./src/plugin.js";
25
- export { getTeamsRuntime, setTeamsExecutor, resetTeamsRuntime, buildCard, postCard } from "./src/runtime.js";
26
- export type { TeamsExecutor, TeamsRuntime } from "./src/runtime.js";
27
- export { CREATE_CARD_DESCRIPTION, teamsCardTool } from "./src/tool.js";
28
- export type { TeamsCardToolOptions } from "./src/tool.js";
1
+ export * as auth from "./src/auth.ts";
2
+ export * as builder from "./src/builder.ts";
3
+ export * as config from "./src/config.ts";
4
+ export * as connector from "./src/connector.ts";
5
+ export * as conversation from "./src/conversation.ts";
6
+ export * as defaults from "./src/defaults.ts";
7
+ export * as messaging from "./src/messaging.ts";
8
+ export * as plugin from "./src/plugin.ts";
9
+ export * as runtime from "./src/runtime.ts";
10
+ export * as tool from "./src/tool.ts";
11
+ export { BOT_OPENID_METADATA, resetTeamsAuth, verifyBotToken, connectorToken, isAllowedServiceUrl } from "./src/auth.ts";
12
+ export type { VerifiedBotToken, VerifyOptions } from "./src/auth.ts";
13
+ export { buildAdaptiveCard, buildCardResult } from "./src/builder.ts";
14
+ export { CARD_VERSION_ENV, WEBHOOK_URL_ENV, AGENT_PLUGIN_ENV, APP_ID_ENVS, APP_PASSWORD_ENVS, APP_TENANT_ENVS, ALLOW_UNAUTHENTICATED_ENV, DEFAULT_AGENT_PLUGIN, TEAMS_CONFIG_SCHEMA, resolveTeamsConfig } from "./src/config.ts";
15
+ export type { TeamsPluginConfig, ResolvedTeamsConfig } from "./src/config.ts";
16
+ export { sendActivity, sendTyping } from "./src/connector.ts";
17
+ export type { ConnectorTarget } from "./src/connector.ts";
18
+ export { BOT_ACCOUNT, CARD_FORMAT_INSTRUCTIONS, CARD_ANSWER_INSTRUCTIONS, resolveCardAgent, resolveCardContextFactory, promptOf, toReplyActivity, documentCardSpec, rejectedCardSpec, runCardTurn } from "./src/conversation.ts";
19
+ export type { CardAgentLike, AgentResult, AgentProviderLike, CardTurnOptions, CardContextFactory } from "./src/conversation.ts";
20
+ export { BUILD_TIMEOUT_MS, POST_TIMEOUT_MS, POST_ATTEMPTS, TEAMS_BUILD_SETTINGS, TURN_TIMEOUT_MS, TEAMS_TURN_SETTINGS, TEAMS_POST_SETTINGS } from "./src/defaults.ts";
21
+ export type { TeamsExecuteConfig, TeamsExecutionSettings } from "./src/defaults.ts";
22
+ export { resolveServiceUrl, deliverTurn } from "./src/messaging.ts";
23
+ export type { BotCredentials, DeliverTurnOptions } from "./src/messaging.ts";
24
+ export { TeamsPlugin, teams } from "./src/plugin.ts";
25
+ export { getTeamsRuntime, setTeamsExecutor, resetTeamsRuntime, buildCard, postCard } from "./src/runtime.ts";
26
+ export type { TeamsExecutor, TeamsRuntime } from "./src/runtime.ts";
27
+ export { CREATE_CARD_DESCRIPTION, teamsCardTool } from "./src/tool.ts";
28
+ export type { TeamsCardToolOptions } from "./src/tool.ts";
package/lib/index.js CHANGED
@@ -21,4 +21,4 @@ export { resolveServiceUrl, deliverTurn } from "./src/messaging.js";
21
21
  export { TeamsPlugin, teams } from "./src/plugin.js";
22
22
  export { getTeamsRuntime, setTeamsExecutor, resetTeamsRuntime, buildCard, postCard } from "./src/runtime.js";
23
23
  export { CREATE_CARD_DESCRIPTION, teamsCardTool } from "./src/tool.js";
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssSUFBSSxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEtBQUssU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5TixPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5TixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuSyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgKiBhcyBhdXRoIGZyb20gXCIuL3NyYy9hdXRoXCI7XG5leHBvcnQgKiBhcyBidWlsZGVyIGZyb20gXCIuL3NyYy9idWlsZGVyXCI7XG5leHBvcnQgKiBhcyBjb25maWcgZnJvbSBcIi4vc3JjL2NvbmZpZ1wiO1xuZXhwb3J0ICogYXMgY29ubmVjdG9yIGZyb20gXCIuL3NyYy9jb25uZWN0b3JcIjtcbmV4cG9ydCAqIGFzIGNvbnZlcnNhdGlvbiBmcm9tIFwiLi9zcmMvY29udmVyc2F0aW9uXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHNcIjtcbmV4cG9ydCAqIGFzIG1lc3NhZ2luZyBmcm9tIFwiLi9zcmMvbWVzc2FnaW5nXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpblwiO1xuZXhwb3J0ICogYXMgcnVudGltZSBmcm9tIFwiLi9zcmMvcnVudGltZVwiO1xuZXhwb3J0ICogYXMgdG9vbCBmcm9tIFwiLi9zcmMvdG9vbFwiO1xuZXhwb3J0IHsgQk9UX09QRU5JRF9NRVRBREFUQSwgcmVzZXRUZWFtc0F1dGgsIHZlcmlmeUJvdFRva2VuLCBjb25uZWN0b3JUb2tlbiwgaXNBbGxvd2VkU2VydmljZVVybCB9IGZyb20gXCIuL3NyYy9hdXRoXCI7XG5leHBvcnQgdHlwZSB7IFZlcmlmaWVkQm90VG9rZW4sIFZlcmlmeU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYXV0aFwiO1xuZXhwb3J0IHsgYnVpbGRBZGFwdGl2ZUNhcmQsIGJ1aWxkQ2FyZFJlc3VsdCB9IGZyb20gXCIuL3NyYy9idWlsZGVyXCI7XG5leHBvcnQgeyBDQVJEX1ZFUlNJT05fRU5WLCBXRUJIT09LX1VSTF9FTlYsIEFHRU5UX1BMVUdJTl9FTlYsIEFQUF9JRF9FTlZTLCBBUFBfUEFTU1dPUkRfRU5WUywgQVBQX1RFTkFOVF9FTlZTLCBBTExPV19VTkFVVEhFTlRJQ0FURURfRU5WLCBERUZBVUxUX0FHRU5UX1BMVUdJTiwgVEVBTVNfQ09ORklHX1NDSEVNQSwgcmVzb2x2ZVRlYW1zQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2NvbmZpZ1wiO1xuZXhwb3J0IHR5cGUgeyBUZWFtc1BsdWdpbkNvbmZpZywgUmVzb2x2ZWRUZWFtc0NvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWdcIjtcbmV4cG9ydCB7IHNlbmRBY3Rpdml0eSwgc2VuZFR5cGluZyB9IGZyb20gXCIuL3NyYy9jb25uZWN0b3JcIjtcbmV4cG9ydCB0eXBlIHsgQ29ubmVjdG9yVGFyZ2V0IH0gZnJvbSBcIi4vc3JjL2Nvbm5lY3RvclwiO1xuZXhwb3J0IHsgQk9UX0FDQ09VTlQsIENBUkRfRk9STUFUX0lOU1RSVUNUSU9OUywgQ0FSRF9BTlNXRVJfSU5TVFJVQ1RJT05TLCByZXNvbHZlQ2FyZEFnZW50LCByZXNvbHZlQ2FyZENvbnRleHRGYWN0b3J5LCBwcm9tcHRPZiwgdG9SZXBseUFjdGl2aXR5LCBkb2N1bWVudENhcmRTcGVjLCByZWplY3RlZENhcmRTcGVjLCBydW5DYXJkVHVybiB9IGZyb20gXCIuL3NyYy9jb252ZXJzYXRpb25cIjtcbmV4cG9ydCB0eXBlIHsgQ2FyZEFnZW50TGlrZSwgQWdlbnRSZXN1bHQsIEFnZW50UHJvdmlkZXJMaWtlLCBDYXJkVHVybk9wdGlvbnMsIENhcmRDb250ZXh0RmFjdG9yeSB9IGZyb20gXCIuL3NyYy9jb252ZXJzYXRpb25cIjtcbmV4cG9ydCB7IEJVSUxEX1RJTUVPVVRfTVMsIFBPU1RfVElNRU9VVF9NUywgUE9TVF9BVFRFTVBUUywgVEVBTVNfQlVJTERfU0VUVElOR1MsIFRVUk5fVElNRU9VVF9NUywgVEVBTVNfVFVSTl9TRVRUSU5HUywgVEVBTVNfUE9TVF9TRVRUSU5HUyB9IGZyb20gXCIuL3NyYy9kZWZhdWx0c1wiO1xuZXhwb3J0IHR5cGUgeyBUZWFtc0V4ZWN1dGVDb25maWcsIFRlYW1zRXhlY3V0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHNcIjtcbmV4cG9ydCB7IHJlc29sdmVTZXJ2aWNlVXJsLCBkZWxpdmVyVHVybiB9IGZyb20gXCIuL3NyYy9tZXNzYWdpbmdcIjtcbmV4cG9ydCB0eXBlIHsgQm90Q3JlZGVudGlhbHMsIERlbGl2ZXJUdXJuT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9tZXNzYWdpbmdcIjtcbmV4cG9ydCB7IFRlYW1zUGx1Z2luLCB0ZWFtcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5cIjtcbmV4cG9ydCB7IGdldFRlYW1zUnVudGltZSwgc2V0VGVhbXNFeGVjdXRvciwgcmVzZXRUZWFtc1J1bnRpbWUsIGJ1aWxkQ2FyZCwgcG9zdENhcmQgfSBmcm9tIFwiLi9zcmMvcnVudGltZVwiO1xuZXhwb3J0IHR5cGUgeyBUZWFtc0V4ZWN1dG9yLCBUZWFtc1J1bnRpbWUgfSBmcm9tIFwiLi9zcmMvcnVudGltZVwiO1xuZXhwb3J0IHsgQ1JFQVRFX0NBUkRfREVTQ1JJUFRJT04sIHRlYW1zQ2FyZFRvb2wgfSBmcm9tIFwiLi9zcmMvdG9vbFwiO1xuZXhwb3J0IHR5cGUgeyBUZWFtc0NhcmRUb29sT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90b29sXCI7XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssWUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqTyxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqTyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0SyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0ICogYXMgYXV0aCBmcm9tIFwiLi9zcmMvYXV0aC50c1wiO1xuZXhwb3J0ICogYXMgYnVpbGRlciBmcm9tIFwiLi9zcmMvYnVpbGRlci50c1wiO1xuZXhwb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGNvbm5lY3RvciBmcm9tIFwiLi9zcmMvY29ubmVjdG9yLnRzXCI7XG5leHBvcnQgKiBhcyBjb252ZXJzYXRpb24gZnJvbSBcIi4vc3JjL2NvbnZlcnNhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgZGVmYXVsdHMgZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgKiBhcyBtZXNzYWdpbmcgZnJvbSBcIi4vc3JjL21lc3NhZ2luZy50c1wiO1xuZXhwb3J0ICogYXMgcGx1Z2luIGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSBcIi4vc3JjL3J1bnRpbWUudHNcIjtcbmV4cG9ydCAqIGFzIHRvb2wgZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCB7IEJPVF9PUEVOSURfTUVUQURBVEEsIHJlc2V0VGVhbXNBdXRoLCB2ZXJpZnlCb3RUb2tlbiwgY29ubmVjdG9yVG9rZW4sIGlzQWxsb3dlZFNlcnZpY2VVcmwgfSBmcm9tIFwiLi9zcmMvYXV0aC50c1wiO1xuZXhwb3J0IHR5cGUgeyBWZXJpZmllZEJvdFRva2VuLCBWZXJpZnlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2F1dGgudHNcIjtcbmV4cG9ydCB7IGJ1aWxkQWRhcHRpdmVDYXJkLCBidWlsZENhcmRSZXN1bHQgfSBmcm9tIFwiLi9zcmMvYnVpbGRlci50c1wiO1xuZXhwb3J0IHsgQ0FSRF9WRVJTSU9OX0VOViwgV0VCSE9PS19VUkxfRU5WLCBBR0VOVF9QTFVHSU5fRU5WLCBBUFBfSURfRU5WUywgQVBQX1BBU1NXT1JEX0VOVlMsIEFQUF9URU5BTlRfRU5WUywgQUxMT1dfVU5BVVRIRU5USUNBVEVEX0VOViwgREVGQVVMVF9BR0VOVF9QTFVHSU4sIFRFQU1TX0NPTkZJR19TQ0hFTUEsIHJlc29sdmVUZWFtc0NvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgVGVhbXNQbHVnaW5Db25maWcsIFJlc29sdmVkVGVhbXNDb25maWcgfSBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgeyBzZW5kQWN0aXZpdHksIHNlbmRUeXBpbmcgfSBmcm9tIFwiLi9zcmMvY29ubmVjdG9yLnRzXCI7XG5leHBvcnQgdHlwZSB7IENvbm5lY3RvclRhcmdldCB9IGZyb20gXCIuL3NyYy9jb25uZWN0b3IudHNcIjtcbmV4cG9ydCB7IEJPVF9BQ0NPVU5ULCBDQVJEX0ZPUk1BVF9JTlNUUlVDVElPTlMsIENBUkRfQU5TV0VSX0lOU1RSVUNUSU9OUywgcmVzb2x2ZUNhcmRBZ2VudCwgcmVzb2x2ZUNhcmRDb250ZXh0RmFjdG9yeSwgcHJvbXB0T2YsIHRvUmVwbHlBY3Rpdml0eSwgZG9jdW1lbnRDYXJkU3BlYywgcmVqZWN0ZWRDYXJkU3BlYywgcnVuQ2FyZFR1cm4gfSBmcm9tIFwiLi9zcmMvY29udmVyc2F0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IENhcmRBZ2VudExpa2UsIEFnZW50UmVzdWx0LCBBZ2VudFByb3ZpZGVyTGlrZSwgQ2FyZFR1cm5PcHRpb25zLCBDYXJkQ29udGV4dEZhY3RvcnkgfSBmcm9tIFwiLi9zcmMvY29udmVyc2F0aW9uLnRzXCI7XG5leHBvcnQgeyBCVUlMRF9USU1FT1VUX01TLCBQT1NUX1RJTUVPVVRfTVMsIFBPU1RfQVRURU1QVFMsIFRFQU1TX0JVSUxEX1NFVFRJTkdTLCBUVVJOX1RJTUVPVVRfTVMsIFRFQU1TX1RVUk5fU0VUVElOR1MsIFRFQU1TX1BPU1RfU0VUVElOR1MgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVGVhbXNFeGVjdXRlQ29uZmlnLCBUZWFtc0V4ZWN1dGlvblNldHRpbmdzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgeyByZXNvbHZlU2VydmljZVVybCwgZGVsaXZlclR1cm4gfSBmcm9tIFwiLi9zcmMvbWVzc2FnaW5nLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJvdENyZWRlbnRpYWxzLCBEZWxpdmVyVHVybk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbWVzc2FnaW5nLnRzXCI7XG5leHBvcnQgeyBUZWFtc1BsdWdpbiwgdGVhbXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBnZXRUZWFtc1J1bnRpbWUsIHNldFRlYW1zRXhlY3V0b3IsIHJlc2V0VGVhbXNSdW50aW1lLCBidWlsZENhcmQsIHBvc3RDYXJkIH0gZnJvbSBcIi4vc3JjL3J1bnRpbWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgVGVhbXNFeGVjdXRvciwgVGVhbXNSdW50aW1lIH0gZnJvbSBcIi4vc3JjL3J1bnRpbWUudHNcIjtcbmV4cG9ydCB7IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OLCB0ZWFtc0NhcmRUb29sIH0gZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCB0eXBlIHsgVGVhbXNDYXJkVG9vbE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvdG9vbC50c1wiO1xuIl19
@@ -506,4 +506,4 @@ export const runCardTurn = async (agent, inbound, options = {}) => {
506
506
  const document = buildAdaptiveCard(spec ?? toCardSpec({ ...answered, ...(answer ? { text: answer } : {}) }));
507
507
  return [toReplyActivity(inbound, [document], { ...(options.bot ? { bot: options.bot } : {}) })];
508
508
  };
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLElBQUksZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQW1EaEQsbUVBQW1FO0FBQ25FLE1BQU0sZUFBZSxHQUFHLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQW1CLEVBQXdCLEVBQUU7SUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUztRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBSSxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU8sTUFBTSxDQUFD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RyxNQUFNO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsd0VBQXdFO0lBQ3hFLHVFQUF1RTtJQUN2RSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxJQUFJLEdBQ1IsUUFBUTtRQUNSLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekYsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQ2hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUN6RSxDQUFDO0lBQ0YsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIFRlYW1zIGNvbnZlcnNhdGlvbiB0dXJuOiBydW4gYSBNYXN0cmEgYWdlbnQgYWdhaW5zdCBhbiBpbmJvdW5kIEJvdFxuICogRnJhbWV3b3JrIGFjdGl2aXR5IGFuZCBhbnN3ZXIgd2l0aCBBZGFwdGl2ZSBDYXJkIGF0dGFjaG1lbnRzLlxuICpcbiAqIFRoaXMgaXMgdGhlIHBpZWNlIHRoYXQgbWFrZXMgYFBPU1QgL2FwaS90ZWFtcy9hY3Rpdml0eWAgYmVoYXZlIGxpa2UgYSBUZWFtc1xuICogYm90IHJhdGhlciB0aGFuIGEgY2hhdCBBUEkgdGhhdCBoYXBwZW5zIHRvIHJldHVybiBKU09OLiBBIHR1cm4gaXM6XG4gKlxuICogICAxLiByZWFkIHRoZSB1c2VyJ3MgdGV4dCBvZmYgdGhlIGluYm91bmQgYG1lc3NhZ2VgIGFjdGl2aXR5O1xuICogICAyLiBBTlNXRVIgaXQgLSBhIG5vcm1hbCB0b29sLXVzaW5nIGFnZW50IHR1cm4sIHdpdGggbm8gbWVudGlvbiBvZiBjYXJkcywgc29cbiAqICAgICAgdGhlIGFnZW50IHF1ZXJpZXMgR2VuaWUgLyBjYWxscyBpdHMgdG9vbHMgZXhhY3RseSBhcyBpdCB3b3VsZCBvbiBhXG4gKiAgICAgIHN0cmVhbWluZyBjaGF0IGVuZHBvaW50O1xuICogICAzLiBGT1JNQVQgdGhhdCBhbnN3ZXIgaW50byBhIHtAbGluayBjYXJkLkNhcmRTcGVjfSBpbiBhIHNlY29uZCBwYXNzLCB2aWFcbiAqICAgICAgTWFzdHJhJ3MgYHN0cnVjdHVyZWRPdXRwdXRgIChwcm9tcHQtaW5qZWN0ZWQsIHNlZVxuICogICAgICB7QGxpbmsgSlNPTl9QUk9NUFRfSU5KRUNUSU9OfSk7XG4gKiAgIDQuIGNvbXBpbGUgdGhlIHNwZWMgd2l0aCB0aGUgc2FtZSBkZXRlcm1pbmlzdGljIGJ1aWxkZXIgdGhlXG4gKiAgICAgIGBjcmVhdGVfdGVhbXNfY2FyZGAgdG9vbCB1c2VzLCBhbmQgYXR0YWNoIGl0IHRvIGFuIG91dGJvdW5kIGFjdGl2aXR5LlxuICpcbiAqIFRoZSB0d28gcGFzc2VzIGFyZSB0aGUgaW1wb3J0YW50IHBhcnQuIEFza2luZyBmb3IgdGhlIGFuc3dlciBBTkQgdGhlIGNhcmRcbiAqIHNoYXBlIGluIE9ORSByZXF1ZXN0IG1ha2VzIHRoZSBtb2RlbCB0cmVhdCBmb3JtYXR0aW5nIGFzIHRoZSB0YXNrOiBpdCBlbWl0cyBhXG4gKiBjYXJkIHN0cmFpZ2h0IGF3YXkgYW5kIG5ldmVyIGNhbGxzIGl0cyB0b29scywgc28gYSBxdWVzdGlvbiB0aGF0IHNob3VsZCBoYXZlXG4gKiBxdWVyaWVkIGEgZGF0YSBzb3VyY2UgY2FtZSBiYWNrIGFzIFwiSSBkb24ndCBoYXZlIGEgcmVhbCBzeXN0ZW0gY29ubmVjdGVkIC1cbiAqIGhlcmUgaXMgYSB0ZW1wbGF0ZSBjYXJkIHdpdGggcGxhY2Vob2xkZXJzXCIuIEFuc3dlcmluZyBmaXJzdCwgdGhlbiBmb3JtYXR0aW5nIGFcbiAqIFJFQUwgYW5zd2VyLCBtYWtlcyB0aGlzIGVuZHBvaW50J3MgY29udGVudCBpZGVudGljYWwgdG8gdGhlIHN0cmVhbWluZ1xuICogZW5kcG9pbnQnczsgb25seSB0aGUgcHJlc2VudGF0aW9uIGRpZmZlcnMuXG4gKlxuICogRm9ybWF0dGluZyBpcyBhbHNvIHdoeSB0aGUgdHVybiBkb2VzIG5vdCBzaW1wbHkgcmVseSBvbiB0aGUgYWdlbnQgY2FsbGluZ1xuICogYGNyZWF0ZV90ZWFtc19jYXJkYDogb24gdGhpcyBlbmRwb2ludCBhIGNhcmQgSVMgdGhlIHJlc3BvbnNlIGZvcm1hdCwgc28gaXRcbiAqIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSB0dXJuIHJhdGhlciB0aGFuIGEgdG9vbCB0aGUgbW9kZWwgbWF5IGZvcmdldC5cbiAqIEFnZW50cyBrZWVwIHRoZSB0b29sIGZvciB0aGUgb3RoZXIgZGlyZWN0aW9uIC0gYW5zd2VyaW5nIGluIHByb3NlIG9uIGEgbm9ybWFsXG4gKiBjaGF0IGVuZHBvaW50IGFuZCBjaG9vc2luZyB0byBhdHRhY2ggYSBjYXJkLiBXaGVuIHRoZSBhZ2VudCBET0VTIGNhbGwgaXRcbiAqIGR1cmluZyB0aGUgYW5zd2VyaW5nIHBhc3MsIHRoYXQgc3BlYyB3aW5zIGFuZCB0aGUgZm9ybWF0dGluZyBwYXNzIGlzIHNraXBwZWQuXG4gKlxuICogVGhlIGNvbnZlcnNhdGlvbiBpZCBkb3VibGVzIGFzIHRoZSBhZ2VudCdzIG1lbW9yeSB0aHJlYWQgaWQsIHNvIGEgY2xpZW50IHRoYXRcbiAqIGtlZXBzIHBvc3RpbmcgdGhlIHNhbWUgYGNvbnZlcnNhdGlvbi5pZGAgZ2V0cyBhIGNvbnRpbnVvdXMgY29udmVyc2F0aW9uIC0gdGhlXG4gKiBzYW1lIG1hcHBpbmcgYSByZWFsIGNoYW5uZWwgcmVsaWVzIG9uLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBlcnJvciwgaGFzaCwganNvbiwgbG9nLCBvYmplY3QsIHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBhY3Rpdml0eSBhcyBhY3Rpdml0eUNvbnRyYWN0LCBjYXJkIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLXRlYW1zXCI7XG5pbXBvcnQgeyBidWlsZEFkYXB0aXZlQ2FyZCB9IGZyb20gXCIuL2J1aWxkZXJcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInRlYW1zOmNvbnZlcnNhdGlvblwiKTtcblxuLyoqXG4gKiBNaW5pbWFsIHN0cnVjdHVyYWwgc2hhcGUgb2YgdGhlIE1hc3RyYSBgQWdlbnRgIHRoaXMgbW9kdWxlIGRyaXZlcy5cbiAqXG4gKiBEZWNsYXJlZCBzdHJ1Y3R1cmFsbHkgcmF0aGVyIHRoYW4gaW1wb3J0aW5nIGBAbWFzdHJhL2NvcmVgJ3MgYEFnZW50YDogdGhpc1xuICogcGFja2FnZSBtdXN0IG5vdCBkZXBlbmQgb24gdGhlIE1hc3RyYSBwbHVnaW4gKHRoZSBwbHVnaW4gZGVwZW5kcyBvbiBub3RoaW5nXG4gKiBoZXJlIGVpdGhlciksIGFuZCBhIHR1cm4gb25seSBldmVyIG5lZWRzIGBnZW5lcmF0ZWAuIEFueSBvYmplY3Qgd2l0aCBhXG4gKiBjb21wYXRpYmxlIGBnZW5lcmF0ZWAgc2F0aXNmaWVzIGl0LCB3aGljaCBhbHNvIG1ha2VzIHRoZSB0dXJuIHRyaXZpYWxseVxuICogdGVzdGFibGUgd2l0aCBhIHN0dWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZEFnZW50TGlrZSB7XG4gIGdlbmVyYXRlKFxuICAgIHByb21wdDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHN0cnVjdHVyZWRPdXRwdXQ/OiB7XG4gICAgICAgIHNjaGVtYTogdHlwZW9mIGNhcmQuY2FyZFNwZWNTY2hlbWE7XG4gICAgICAgIGpzb25Qcm9tcHRJbmplY3Rpb24/OiBib29sZWFuIHwgXCJzeXN0ZW1cIiB8IFwiaW5saW5lXCI7XG4gICAgICB9O1xuICAgICAgbWVtb3J5PzogeyB0aHJlYWQ6IHN0cmluZzsgcmVzb3VyY2U6IHN0cmluZyB9O1xuICAgICAgLyoqXG4gICAgICAgKiBNYXN0cmEncyBwZXItdHVybiBgUmVxdWVzdENvbnRleHRgLiBPcGFxdWUgaGVyZSAtIHRoZSBvYmplY3QgY29tZXMgZnJvbVxuICAgICAgICogdGhlIGFnZW50IHBsdWdpbiAoc2VlIHtAbGluayBBZ2VudFByb3ZpZGVyTGlrZS5leHBvcnRzfSkgYW5kIGlzIG9ubHlcbiAgICAgICAqIGZvcndhcmRlZCAtIGJ1dCBSRVFVSVJFRCBmb3IgcGFyaXR5IHdpdGggdGhlIGNoYXQgZW5kcG9pbnRzOiBNYXN0cmEnc1xuICAgICAgICogdXNlci1zY29wZWQgdG9vbHMgcmVhZCB0aGUgQXBwS2l0IHVzZXIgb2ZmIGl0LCBzbyBhIHR1cm4gd2l0aG91dCBvbmVcbiAgICAgICAqIGFuc3dlcnMgXCJ0aGUgZGF0YSBzb3VyY2UgaXMgdW5yZWFjaGFibGVcIiB3aGVyZSBjaGF0IGFuc3dlcnMgd2l0aCBkYXRhLlxuICAgICAgICovXG4gICAgICByZXF1ZXN0Q29udGV4dD86IHVua25vd247XG4gICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIH0sXG4gICk6IFByb21pc2U8QWdlbnRSZXN1bHQ+O1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBNYXN0cmEncyBgZ2VuZXJhdGVgIHJlc3VsdCBhIHR1cm4gcmVhZHMuXG4gKlxuICogYHRvb2xSZXN1bHRzYCBtYXR0ZXJzIGFzIG11Y2ggYXMgYG9iamVjdGAgaGVyZTogd2hlbiBzdHJ1Y3R1cmVkIG91dHB1dCBmYWlsc1xuICogYW5kIHRoZSB0dXJuIHJlLWFza3MgYXMgcHJvc2UsIGFuIGFnZW50IGhvbGRpbmcgdGhlIGBjcmVhdGVfdGVhbXNfY2FyZGAgdG9vbFxuICogdHlwaWNhbGx5IENBTExTIGl0LCBzbyB0aGUgYmVzdCBhdmFpbGFibGUgY2FyZCBzcGVjIGlzIHRoZSB0b29sJ3MgYXJndW1lbnRzIC1cbiAqIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHZvY2FidWxhcnkgLSByYXRoZXIgdGhhbiBhbnl0aGluZyBpbiB0aGUgcHJvc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRSZXN1bHQge1xuICBvYmplY3Q/OiB1bmtub3duO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0b29sUmVzdWx0cz86IHtcbiAgICBwYXlsb2FkPzogeyB0b29sTmFtZT86IHN0cmluZzsgYXJncz86IHVua25vd24gfTtcbiAgICB0b29sTmFtZT86IHN0cmluZztcbiAgICBhcmdzPzogdW5rbm93bjtcbiAgfVtdO1xufVxuXG4vKiogVG9vbCBpZCB3aG9zZSBhcmd1bWVudHMgYXJlIGFscmVhZHkgYSB7QGxpbmsgY2FyZC5DYXJkU3BlY30uICovXG5jb25zdCBDQVJEX1RPT0xfTkFNRVMgPSBbXCJjcmVhdGVfdGVhbXNfY2FyZFwiLCBcImNyZWF0ZUNhcmRcIl07XG5cbi8qKlxuICogVGhlIGNhcmQgc3BlYyBhbiBhZ2VudCBwYXNzZWQgdG8gdGhlIGNhcmQgdG9vbCwgaWYgaXQgY2FsbGVkIGl0LlxuICpcbiAqIE1hc3RyYSBuZXN0cyBhIHRvb2wgcmVzdWx0IHVuZGVyIGBwYXlsb2FkYCAoYHsgcGF5bG9hZDogeyB0b29sTmFtZSwgYXJncyB9IH1gKVxuICogYnV0IGhhcyB1c2VkIGEgZmxhdCBzaGFwZSB0b28sIHNvIGJvdGggYXJlIHJlYWQuXG4gKi9cbmNvbnN0IHRvb2xDYXJkU3BlYyA9IChyZXN1bHQ6IEFnZW50UmVzdWx0KTogY2FyZC5DYXJkU3BlYyB8IG51bGwgPT4ge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlc3VsdC50b29sUmVzdWx0cyA/PyBbXSkge1xuICAgIGNvbnN0IG5hbWUgPSBlbnRyeS5wYXlsb2FkPy50b29sTmFtZSA/PyBlbnRyeS50b29sTmFtZTtcbiAgICBpZiAoIW5hbWUgfHwgIUNBUkRfVE9PTF9OQU1FUy5pbmNsdWRlcyhuYW1lKSkgY29udGludWU7XG4gICAgY29uc3QgcGFyc2VkID0gY2FyZC5jYXJkU3BlY1NjaGVtYS5zYWZlUGFyc2UoZW50cnkucGF5bG9hZD8uYXJncyA/PyBlbnRyeS5hcmdzKTtcbiAgICBpZiAocGFyc2VkLnN1Y2Nlc3MpIHJldHVybiBwYXJzZWQuZGF0YTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogQXNrIGZvciB0aGUgY2FyZCBzaGFwZSB2aWEgUFJPTVBUIGluamVjdGlvbiByYXRoZXIgdGhhbiB0aGUgcHJvdmlkZXIncyBuYXRpdmVcbiAqIHJlc3BvbnNlIGZvcm1hdC5cbiAqXG4gKiBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgcmVqZWN0cyBhIHJlcXVlc3QgY2FycnlpbmcgYm90aCBgcmVzcG9uc2VfZm9ybWF0YCBhbmRcbiAqIGB0b29sc2AgKFwiQ2Fubm90IHNwZWNpZnkgYm90aCByZXNwb25zZV9mb3JtYXQgYW5kIHRvb2xzIGluIHRoZSBzYW1lIHJlcXVlc3RcIiksXG4gKiBhbmQgdGhlIGFnZW50cyB0aGlzIGVuZHBvaW50IGRyaXZlcyBub3JtYWxseSBkbyBoYXZlIHRvb2xzLiBOYXRpdmUgc3RydWN0dXJlZFxuICogb3V0cHV0IHdvdWxkIHRoZXJlZm9yZSBmYWlsIGZvciBleGFjdGx5IHRoZSBhZ2VudHMgd29ydGggdGFsa2luZyB0bywgc28gdGhlXG4gKiBzY2hlbWEgaXMgaW5qZWN0ZWQgYXMgaW5zdHJ1Y3Rpb25zIGluc3RlYWQgLSB3aGljaCBjb3N0cyBub3RoaW5nIGhlcmUgYmVjYXVzZVxuICogdGhlIGFuc3dlciBpcyByZS12YWxpZGF0ZWQgd2l0aCBgY2FyZFNwZWNTY2hlbWFgIGJlZm9yZSBpdCBpcyBjb21waWxlZC5cbiAqL1xuY29uc3QgSlNPTl9QUk9NUFRfSU5KRUNUSU9OID0gXCJzeXN0ZW1cIiBhcyBjb25zdDtcblxuLyoqIFRoZSBib3QncyBpZGVudGl0eSBvbiBvdXRib3VuZCBhY3Rpdml0aWVzIHdoZW4gdGhlIGNhbGxlciBuYW1lcyBub25lLiAqL1xuZXhwb3J0IGNvbnN0IEJPVF9BQ0NPVU5UOiBhY3Rpdml0eUNvbnRyYWN0LkNoYW5uZWxBY2NvdW50ID0ge1xuICBpZDogXCJkYngtdG9vbHMtdGVhbXMtYm90XCIsXG4gIG5hbWU6IFwiRGF0YWJyaWNrcyBBZ2VudFwiLFxufTtcblxuLyoqXG4gKiBJbnN0cnVjdGlvbnMgZm9yIHRoZSBGT1JNQVRUSU5HIHBhc3Mgb25seSAtIHR1cm5pbmcgYW4gYW5zd2VyIHRoZSBhZ2VudCBoYXNcbiAqIGFscmVhZHkgcHJvZHVjZWQgaW50byB0aGUgY2FyZCB2b2NhYnVsYXJ5LlxuICpcbiAqIERlbGliZXJhdGVseSBOT1Qgc2VudCB3aXRoIHRoZSB1c2VyJ3MgcXVlc3Rpb24uIEFza2luZyBmb3IgYSBjYXJkIGFuZCBhblxuICogYW5zd2VyIGluIG9uZSByZXF1ZXN0IG1ha2VzIHRoZSBtb2RlbCB0cmVhdCBmb3JtYXR0aW5nIGFzIHRoZSB0YXNrOiBpdCBlbWl0cyBhXG4gKiBjYXJkIGltbWVkaWF0ZWx5IGluc3RlYWQgb2YgY2FsbGluZyBpdHMgdG9vbHMsIHNvIGEgcXVlc3Rpb24gdGhhdCBzaG91bGQgaGF2ZVxuICogcXVlcmllZCBHZW5pZSBjYW1lIGJhY2sgYXMgXCJJIGRvbid0IGhhdmUgYSByZWFsIHN5c3RlbSBjb25uZWN0ZWQgLSBoZXJlIGlzIGFcbiAqIHRlbXBsYXRlIGNhcmRcIi4gRm9ybWF0dGluZyBpcyBhIHNlcGFyYXRlLCBzZWNvbmQgcGFzcyBvdmVyIGEgcmVhbCBhbnN3ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBDQVJEX0ZPUk1BVF9JTlNUUlVDVElPTlMgPSBbXG4gIFwiUmVmb3JtYXQgdGhlIGFzc2lzdGFudCBhbnN3ZXIgYmVsb3cgYXMgYSBNaWNyb3NvZnQgVGVhbXMgQWRhcHRpdmUgQ2FyZC5cIixcbiAgXCJQcmVzZXJ2ZSB0aGUgYW5zd2VyJ3MgZmFjdHMgRVhBQ1RMWSAtIGV2ZXJ5IG51bWJlciwgbmFtZSwgZGF0ZSBhbmQgaWQuXCIsXG4gIFwiRG8gbm90IGFkZCBjYXZlYXRzLCBwbGFjZWhvbGRlcnMgb3IgaW52ZW50ZWQgdmFsdWVzLCBhbmQgZG8gbm90IGRlc2NyaWJlIHRoZVwiLFxuICBcImNhcmQ7IGlmIHRoZSBhbnN3ZXIgc3RhdGVzIGEgdmFsdWUsIHRoYXQgdmFsdWUgYmVsb25ncyBpbiB0aGUgY2FyZC5cIixcbiAgXCJQdXQgdGhlIGhlYWRsaW5lIGZpbmRpbmcgaW4gYHRpdGxlYCBhbmQga2VlcCBpdCB1bmRlciB+NjAgY2hhcmFjdGVycy5cIixcbiAgXCJVc2UgYHRleHRgIGZvciB0aGUgZXhwbGFuYXRpb24sIHdpdGggJy0nIGJ1bGxldHMgZm9yIGxpc3RzLlwiLFxuICBcIlVzZSBgZmFjdHNgIGZvciBrZXkvdmFsdWUgZGV0YWlsIChtZXRyaWNzLCBjb3VudHMsIG93bmVycywgaWRzKSBpbnN0ZWFkIG9mXCIsXG4gIFwid3JpdGluZyBpdCBhcyBwcm9zZS5cIixcbiAgXCJBZGQgYGFjdGlvbnNgIG9ubHkgZm9yIFVSTHMgcHJlc2VudCBpbiB0aGUgYW5zd2VyOyBuZXZlciBpbnZlbnQgYSBsaW5rLlwiLFxuICBcIkRyb3AgYW55IGBbY2hhcnQ6Li4uXWAgLyBgW2RhdGE6Li4uXWAgbWFya2VyOiBhIGNhcmQgY2Fubm90IHJlbmRlciBvbmUsIHNvXCIsXG4gIFwid3JpdGUgdGhlIHZhbHVlcyBpdCBzdG9vZCBmb3IgaW50byBgZmFjdHNgIG9yIGB0ZXh0YCBpbnN0ZWFkLlwiLFxuXS5qb2luKFwiIFwiKTtcblxuLyoqXG4gKiBOdWRnZSBhZGRlZCB0byB0aGUgQU5TV0VSSU5HIHBhc3MuXG4gKlxuICogVGhlIGFnZW50IGFuc3dlcnMgdGhlIHF1ZXN0aW9uIG5vcm1hbGx5IGhlcmUgLSB0b29scyBpbmNsdWRlZCAtIHNvIHRoaXMgb25seVxuICogYXNrcyBmb3IgdGhlIHNoYXBlIHRoYXQgc3Vydml2ZXMgY29tcHJlc3Npb24gaW50byBhIGNhcmQgd2VsbC4gSXQgbXVzdCBub3RcbiAqIG1lbnRpb24gY2FyZHMsIG9yIHRoZSBtb2RlbCBzdGFydHMgZm9ybWF0dGluZyBpbnN0ZWFkIG9mIGFuc3dlcmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IENBUkRfQU5TV0VSX0lOU1RSVUNUSU9OUyA9IFtcbiAgXCJBbnN3ZXIgdXNpbmcgeW91ciB0b29scyBhbmQgZGF0YSBzb3VyY2VzIGFzIHlvdSBub3JtYWxseSB3b3VsZC5cIixcbiAgXCJCZSBjb25jaXNlIGFuZCBsZWFkIHdpdGggdGhlIGZpbmRpbmcsIGFuZCBzdGF0ZSBjb25jcmV0ZSB2YWx1ZXNcIixcbiAgXCIobnVtYmVycywgbmFtZXMsIGRhdGVzKSBwbGFpbmx5IHNvIHRoZXkgY2FuIGJlIHN1bW1hcml6ZWQuXCIsXG4gIC8vIEFnZW50cyBvbiBhIGNoYXQgZW5kcG9pbnQgYXJlIHRvbGQgdG8gZGVmZXIgdGFibGVzIGFuZCBjaGFydHMgdG8gdGhlIGhvc3QgVUlcbiAgLy8gYXMgYFtkYXRhOjxpZD5dYCAvIGBbY2hhcnQ6PGlkPl1gIG1hcmtlcnMuIEEgY2FyZCBoYXMgbm8gZW1iZWQgc2xvdCB0byBmaWxsLFxuICAvLyBzbyBhIGRlZmVycmVkIG51bWJlciBhcnJpdmVzIGFzIGEgbGl0ZXJhbCBgW2RhdGE6MDFmMS4uLl1gIGluIHRoZSBjYXJkLiBUaGVcbiAgLy8gdHVybiBhc2tzIGZvciB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMgaW5zdGVhZCwgYW5kIHN0cmlwcyBhbnkgdGhhdCBzbGlwXG4gIC8vIHRocm91Z2ggKHNlZSBFTUJFRF9NQVJLRVJfUkUpLlxuICBcIlRoaXMgY2hhbm5lbCBjYW5ub3QgZGlzcGxheSBjaGFydCBvciBkYXRhIGVtYmVkczogZG8gbm90IGVtaXRcIixcbiAgXCJgW2NoYXJ0Oi4uLl1gIG9yIGBbZGF0YTouLi5dYCBtYXJrZXJzIC0gd3JpdGUgdGhlIGFjdHVhbCBudW1iZXJzIHlvdVwiLFxuICBcInJldHJpZXZlZCBpbnRvIHlvdXIgYW5zd2VyIGluc3RlYWQuXCIsXG5dLmpvaW4oXCIgXCIpO1xuXG4vKipcbiAqIEEgaG9zdC1lbWJlZCBtYXJrZXIgKGBbY2hhcnQ6PGlkPl1gLCBgW2RhdGE6PGlkPl1gKSBpbiBhbiBhZ2VudCdzIHByb3NlLlxuICpcbiAqIENoYXQgaG9zdHMgc3dhcCB0aGVzZSBmb3IgYSByZW5kZXJlZCBjaGFydCBvciB0YWJsZS4gQW4gQWRhcHRpdmUgQ2FyZCBoYXMgbm9cbiAqIHN1Y2ggc2xvdCwgc28gYSBtYXJrZXIgdGhhdCBzdXJ2aXZlcyBpbnRvIGNhcmQgdGV4dCByZW5kZXJzIGFzIGxpdGVyYWxcbiAqIGBbZGF0YTowMWYxODk1Yy0uLi5dYCBub2lzZSB3aGVyZSBhIG51bWJlciBzaG91bGQgYmUuIFRoZSBhbnN3ZXJpbmcgcGFzcyBhc2tzXG4gKiB0aGUgYWdlbnQgbm90IHRvIGVtaXQgdGhlbTsgdGhpcyByZW1vdmVzIGFueSB0aGF0IHN0aWxsIGFycml2ZS5cbiAqXG4gKiBUaGUgZ2VuZXJpYyBgW3R5cGU6aWRdYCBncmFtbWFyIGlzIHNwZWxsZWQgaGVyZSByYXRoZXIgdGhhbiBpbXBvcnRlZCBzbyB0aGlzXG4gKiBwYWNrYWdlIHN0YXlzIGEgbGVhZiBhZGQtb24gd2l0aCBubyBkZXBlbmRlbmN5IG9uIHRoZSBhZ2VudCBwbHVnaW4nc1xuICogY29udHJhY3RzIC0gaXQgb25seSBldmVyIG5lZWRzIHRvIFJFQ09HTklaRSBhIG1hcmtlciwgbmV2ZXIgcmVzb2x2ZSBvbmUuXG4gKi9cbmNvbnN0IEVNQkVEX01BUktFUl9SRSA9IC9cXFtbQS1aYS16XVtBLVphLXowLTlfLV0qOlteXFxdXFxzXStcXF0vZztcblxuLyoqXG4gKiBEcm9wIGVtYmVkIG1hcmtlcnMgZnJvbSBgdGV4dGAsIHRpZHlpbmcgdGhlIHdoaXRlc3BhY2UgdGhleSBsZWF2ZSBiZWhpbmQgc28gYVxuICogbWFya2VyIHRoYXQgc2F0IG9uIGl0cyBvd24gbGluZSBkb2VzIG5vdCBiZWNvbWUgYSBibGFuayBvbmUuXG4gKi9cbmNvbnN0IHN0cmlwRW1iZWRNYXJrZXJzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0XG4gICAgLnJlcGxhY2UoRU1CRURfTUFSS0VSX1JFLCBcIlwiKVxuICAgIC5yZXBsYWNlKC9bIFxcdF0rJC9nbSwgXCJcIilcbiAgICAucmVwbGFjZSgvXFxuezMsfS9nLCBcIlxcblxcblwiKVxuICAgIC50cmltKCk7XG5cbi8qKlxuICogU3RydWN0dXJhbCBzaGFwZSBvZiB0aGUgc2libGluZyBwbHVnaW4gdGhhdCBvd25zIHRoZSBhZ2VudCByZWdpc3RyeSAtIHRoZVxuICogc2xpY2Ugb2YgYEBkYngtdG9vbHMvYXBwa2l0LW1hc3RyYWAncyBgZXhwb3J0cygpYCBhIHR1cm4gbmVlZHMuXG4gKlxuICogTWF0Y2hlZCBzdHJ1Y3R1cmFsbHksIGJ5IHJlZ2lzdGVyZWQgcGx1Z2luIE5BTUUsIHJhdGhlciB0aGFuIGltcG9ydGluZyB0aGVcbiAqIE1hc3RyYSBwbHVnaW46IHRoaXMgcGFja2FnZSBzdGF5cyBhIGxlYWYgYWRkLW9uIChpdCBkZXBlbmRzIG9uIG5vIG90aGVyXG4gKiBkYngtdG9vbHMgcnVudGltZSBwYWNrYWdlLCBsaWtlIG5vZGUtZW1haWwpLCB0aGUgZGVwZW5kZW5jeSBkaXJlY3Rpb24gc3RheXNcbiAqIG9uZS13YXksIGFuZCBhbnkgcGx1Z2luIGV4cG9zaW5nIHRoZSBzYW1lIGBnZXRgIC8gYGdldERlZmF1bHRgIHBhaXIgY2FuIGJhY2tcbiAqIHRoZSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFByb3ZpZGVyTGlrZSB7XG4gIGV4cG9ydHMoKToge1xuICAgIGdldChpZDogc3RyaW5nKTogdW5rbm93bjtcbiAgICBnZXREZWZhdWx0KCk6IHVua25vd247XG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBwZXItdHVybiBgUmVxdWVzdENvbnRleHRgIHRoZSBwcm92aWRlcidzIHRvb2xzIGV4cGVjdC4gT3B0aW9uYWxcbiAgICAgKiBzbyBhbiBvbGRlciBwcm92aWRlciAob3IgYSBkaWZmZXJlbnRseS1zaGFwZWQgb25lKSBzdGlsbCByZXNvbHZlcyBhblxuICAgICAqIGFnZW50OyB0aGUgdHVybiBzaW1wbHkgcnVucyB3aXRob3V0IHVzZXItc2NvcGVkIHRvb2wgY29udGV4dCB0aGVuLlxuICAgICAqL1xuICAgIGNyZWF0ZVJlcXVlc3RDb250ZXh0PyhvcHRpb25zOiB7IHRocmVhZElkPzogc3RyaW5nOyByZXNvdXJjZUlkPzogc3RyaW5nIH0pOiBQcm9taXNlPHVua25vd24+O1xuICB9O1xufVxuXG4vKiogVHJ1ZSB3aGVuIGB2YWx1ZWAgZXhwb3NlcyB0aGUgYGdlbmVyYXRlYCBhIHR1cm4gZHJpdmVzLiAqL1xuY29uc3QgaXNDYXJkQWdlbnQgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDYXJkQWdlbnRMaWtlID0+XG4gIHR5cGVvZiAodmFsdWUgYXMgQ2FyZEFnZW50TGlrZSB8IG51bGwpPy5nZW5lcmF0ZSA9PT0gXCJmdW5jdGlvblwiO1xuXG4vKiogVHJ1ZSB3aGVuIGB2YWx1ZWAgZXhwb3NlcyB0aGUgYWdlbnQtcmVnaXN0cnkgYGV4cG9ydHMoKWAgYSB0dXJuIHJlYWRzLiAqL1xuY29uc3QgaXNBZ2VudFByb3ZpZGVyID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQWdlbnRQcm92aWRlckxpa2UgPT5cbiAgdHlwZW9mICh2YWx1ZSBhcyBBZ2VudFByb3ZpZGVyTGlrZSB8IG51bGwpPy5leHBvcnRzID09PSBcImZ1bmN0aW9uXCI7XG5cbi8qKlxuICogUmVhZCBvbmUgYWdlbnQgb3V0IG9mIGEgcHJvdmlkZXIncyBgZXhwb3J0cygpYC5cbiAqXG4gKiBFdmVyeSBtZW1iZXIgaXMgcHJvYmVkIGJlZm9yZSBpdCBpcyBjYWxsZWQ6IHRoZSBwcm92aWRlciBpcyBtYXRjaGVkXG4gKiBzdHJ1Y3R1cmFsbHkgYnkgcGx1Z2luIG5hbWUsIHNvIGEgRElGRkVSRU5UIHBsdWdpbiByZWdpc3RlcmVkIHVuZGVyIHRoYXQgbmFtZVxuICogY2FuIHNhdGlzZnkgYGlzQWdlbnRQcm92aWRlcmAgKGl0IGhhcyBhbiBgZXhwb3J0cygpYCkgd2hpbGUgZXhwb3Npbmcgbm8gYWdlbnRcbiAqIHJlZ2lzdHJ5IGF0IGFsbC4gQ2FsbGluZyBibGluZGx5IHdvdWxkIHRocm93IGEgYFR5cGVFcnJvcmAgb3V0IG9mIHJvdXRlXG4gKiByZXNvbHV0aW9uOyBhIG1pc3MgaXMganVzdCBcIm5vIGFnZW50XCIsIHdoaWNoIHRoZSByb3V0ZSByZXBvcnRzIGFzIDUwMy5cbiAqL1xuY29uc3QgcmVhZEFnZW50ID0gKHByb3ZpZGVyOiBBZ2VudFByb3ZpZGVyTGlrZSwgYWdlbnRJZD86IHN0cmluZyk6IHVua25vd24gPT4ge1xuICBjb25zdCByZWdpc3RyeSA9IHByb3ZpZGVyLmV4cG9ydHMoKSBhcyBQYXJ0aWFsPFJldHVyblR5cGU8QWdlbnRQcm92aWRlckxpa2VbXCJleHBvcnRzXCJdPj47XG4gIGlmIChhZ2VudElkKSByZXR1cm4gdHlwZW9mIHJlZ2lzdHJ5LmdldCA9PT0gXCJmdW5jdGlvblwiID8gcmVnaXN0cnkuZ2V0KGFnZW50SWQpIDogbnVsbDtcbiAgcmV0dXJuIHR5cGVvZiByZWdpc3RyeS5nZXREZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgPyByZWdpc3RyeS5nZXREZWZhdWx0KCkgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBhZ2VudCB0aGF0IGFuc3dlcnMgYSB0dXJuIGZyb20gdGhlIEFwcEtpdCBwbHVnaW4gcmVnaXN0cnkuXG4gKlxuICogYGFnZW50SWRgIHBpY2tzIGEgc3BlY2lmaWMgYWdlbnQ7IG9taXR0ZWQsIHRoZSBwcm92aWRlcidzIGRlZmF1bHQgYWdlbnRcbiAqIGFuc3dlcnMuIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIHByb3ZpZGVyIGlzIGFic2VudCBvciB0aGUgaWQgaXMgdW5rbm93biwgc29cbiAqIHRoZSByb3V0ZSBjYW4gYW5zd2VyIDUwMyAvIDQwNCBpbnN0ZWFkIG9mIHRocm93aW5nLlxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUNhcmRBZ2VudCA9IChcbiAgcGx1Z2luczogUmVhZG9ubHlNYXA8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmcsXG4gIGFnZW50SWQ/OiBzdHJpbmcsXG4pOiBDYXJkQWdlbnRMaWtlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHByb3ZpZGVyID0gcGx1Z2lucz8uZ2V0KHByb3ZpZGVyTmFtZSk7XG4gIGlmICghaXNBZ2VudFByb3ZpZGVyKHByb3ZpZGVyKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGZvdW5kID0gcmVhZEFnZW50KHByb3ZpZGVyLCBhZ2VudElkKTtcbiAgcmV0dXJuIGlzQ2FyZEFnZW50KGZvdW5kKSA/IGZvdW5kIDogbnVsbDtcbn07XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgcnVuQ2FyZFR1cm59LiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXJkVHVybk9wdGlvbnMge1xuICAvKiogQ2FuY2VscyB0aGUgYWdlbnQgY2FsbCB3aXRoIHRoZSByZXF1ZXN0LiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIE92ZXJyaWRlcyB0aGUgYm90IGlkZW50aXR5IHN0YW1wZWQgb24gdGhlIHJlcGx5LiAqL1xuICBib3Q/OiBhY3Rpdml0eUNvbnRyYWN0LkNoYW5uZWxBY2NvdW50O1xuICAvKipcbiAgICogQnVpbGRzIHRoZSBNYXN0cmEgYFJlcXVlc3RDb250ZXh0YCBmb3IgdGhlIHR1cm4sIGZyb21cbiAgICoge0BsaW5rIHJlc29sdmVDYXJkQ29udGV4dEZhY3Rvcnl9LiBPbWl0dGVkLCB0aGUgdHVybiBzdGlsbCBhbnN3ZXJzLCBidXRcbiAgICogd2l0aG91dCB0aGUgQXBwS2l0IHVzZXIgaXRzIHVzZXItc2NvcGVkIHRvb2xzIGNhbm5vdCByZWFjaCBEYXRhYnJpY2tzIC0gc29cbiAgICogdGhlIHJvdXRlIHNob3VsZCBhbHdheXMgc3VwcGx5IGl0LlxuICAgKi9cbiAgY3JlYXRlUmVxdWVzdENvbnRleHQ/OiBDYXJkQ29udGV4dEZhY3Rvcnk7XG59XG5cbi8qKiBCdWlsZHMgdGhlIHBlci10dXJuIHJlcXVlc3QgY29udGV4dCB0aGUgYWdlbnQncyB0b29scyByZWFkLiAqL1xuZXhwb3J0IHR5cGUgQ2FyZENvbnRleHRGYWN0b3J5ID0gKG9wdGlvbnM6IHtcbiAgdGhyZWFkSWQ/OiBzdHJpbmc7XG4gIHJlc291cmNlSWQ/OiBzdHJpbmc7XG59KSA9PiBQcm9taXNlPHVua25vd24+O1xuXG4vKipcbiAqIFRoZSBhZ2VudCBwbHVnaW4ncyByZXF1ZXN0LWNvbnRleHQgZmFjdG9yeSwgd2hlbiBpdCBleHBvc2VzIG9uZS5cbiAqXG4gKiBSZXNvbHZlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIGFnZW50IGJlY2F1c2UgaXQgaXMgdGhlIHBpZWNlIHRoYXQgZ2l2ZXMgYW5cbiAqIG91dC1vZi1iYW5kIHR1cm4gdGhlIHNhbWUgdG9vbCByZWFjaCBhcyBhIGNoYXQgdHVybjsgYSBwcm92aWRlciB3aXRob3V0IGl0XG4gKiBzdGlsbCBhbnN3ZXJzLCBqdXN0IHdpdGhvdXQgdXNlci1zY29wZWQgdG9vbHMuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQ2FyZENvbnRleHRGYWN0b3J5ID0gKFxuICBwbHVnaW5zOiBSZWFkb25seU1hcDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkLFxuICBwcm92aWRlck5hbWU6IHN0cmluZyxcbik6IENhcmRDb250ZXh0RmFjdG9yeSB8IG51bGwgPT4ge1xuICBjb25zdCBwcm92aWRlciA9IHBsdWdpbnM/LmdldChwcm92aWRlck5hbWUpO1xuICBpZiAoIWlzQWdlbnRQcm92aWRlcihwcm92aWRlcikpIHJldHVybiBudWxsO1xuICBjb25zdCByZWdpc3RyeSA9IHByb3ZpZGVyLmV4cG9ydHMoKSBhcyBQYXJ0aWFsPFJldHVyblR5cGU8QWdlbnRQcm92aWRlckxpa2VbXCJleHBvcnRzXCJdPj47XG4gIGNvbnN0IGZhY3RvcnkgPSByZWdpc3RyeS5jcmVhdGVSZXF1ZXN0Q29udGV4dDtcbiAgcmV0dXJuIHR5cGVvZiBmYWN0b3J5ID09PSBcImZ1bmN0aW9uXCIgPyAob3B0aW9ucykgPT4gZmFjdG9yeS5jYWxsKHJlZ2lzdHJ5LCBvcHRpb25zKSA6IG51bGw7XG59O1xuXG4vKipcbiAqIFRoZSB0ZXh0IGEgYG1lc3NhZ2VgIGFjdGl2aXR5IGNhcnJpZXMsIG9yIGBudWxsYCB3aGVuIGl0IGNhcnJpZXMgbm9uZS5cbiAqXG4gKiBBIGNoYW5uZWwgc2VuZHMgcGxlbnR5IG9mIGFjdGl2aXRpZXMgd2l0aCBubyB1c2FibGUgdGV4dCAoYSBgdHlwaW5nYFxuICogaW5kaWNhdG9yLCBhIGBjb252ZXJzYXRpb25VcGRhdGVgIHdoZW4gc29tZW9uZSBqb2lucywgb3IgYSBgbWVzc2FnZWAgd2hvc2VcbiAqIHBheWxvYWQgaXMgb25seSBhbiBhdHRhY2htZW50KS4gVGhvc2UgYXJlIG5vdCBlcnJvcnMgLSB0aGV5IHNpbXBseSBwcm9kdWNlIG5vXG4gKiByZXBseSAtIHNvIHRoaXMgcmV0dXJucyBgbnVsbGAgcmF0aGVyIHRoYW4gdGhyb3dpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9tcHRPZiA9IChpbmJvdW5kOiBhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5KTogc3RyaW5nIHwgbnVsbCA9PlxuICBpbmJvdW5kLnR5cGUgPT09IFwibWVzc2FnZVwiID8gc3RyaW5nLnRyaW1Ub051bGwoaW5ib3VuZC50ZXh0ID8/IFwiXCIpIDogbnVsbDtcblxuLyoqXG4gKiBCdWlsZCBhbiBvdXRib3VuZCBhY3Rpdml0eSBjYXJyeWluZyBgY2FyZHNgLCBhZGRyZXNzZWQgYmFjayB0byB0aGUgc2VuZGVyIG9mXG4gKiBgaW5ib3VuZGAuXG4gKlxuICogRXhwb3J0ZWQgYmVjYXVzZSBhIGNsaWVudCByZW5kZXJpbmcgYW4gb3B0aW1pc3RpYyBsb2NhbCByZXBseSwgYW5kIGEgdGVzdFxuICogYXNzZXJ0aW5nIHRoZSBlbnZlbG9wZSwgYm90aCBuZWVkIHRoZSBzYW1lIGNvbnN0cnVjdGlvbiB0aGUgdHVybiB1c2VzLlxuICovXG5leHBvcnQgY29uc3QgdG9SZXBseUFjdGl2aXR5ID0gKFxuICBpbmJvdW5kOiBhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5LFxuICBjYXJkczogY2FyZC5BZGFwdGl2ZUNhcmRbXSxcbiAgb3B0aW9uczogeyBib3Q/OiBhY3Rpdml0eUNvbnRyYWN0LkNoYW5uZWxBY2NvdW50OyB0ZXh0Pzogc3RyaW5nIH0gPSB7fSxcbik6IGFjdGl2aXR5Q29udHJhY3QuQWN0aXZpdHkgPT4gKHtcbiAgdHlwZTogXCJtZXNzYWdlXCIsXG4gIGlkOiBoYXNoLmlkKCksXG4gIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBmcm9tOiBvcHRpb25zLmJvdCA/PyBCT1RfQUNDT1VOVCxcbiAgLi4uKGluYm91bmQuZnJvbSA/IHsgcmVjaXBpZW50OiBpbmJvdW5kLmZyb20gfSA6IHt9KSxcbiAgLi4uKGluYm91bmQuY29udmVyc2F0aW9uID8geyBjb252ZXJzYXRpb246IGluYm91bmQuY29udmVyc2F0aW9uIH0gOiB7fSksXG4gIC4uLihvcHRpb25zLnRleHQgPyB7IHRleHQ6IG9wdGlvbnMudGV4dCB9IDoge30pLFxuICBhdHRhY2htZW50czogY2FyZHMubWFwKChkb2N1bWVudCkgPT4gYWN0aXZpdHlDb250cmFjdC50b0NhcmRBdHRhY2htZW50KGRvY3VtZW50KSksXG59KTtcblxuLyoqXG4gKiBSZWNvdmVyIGEge0BsaW5rIGNhcmQuQ2FyZFNwZWN9IGZyb20gYSBmdWxsIEFkYXB0aXZlIENhcmQgRE9DVU1FTlQuXG4gKlxuICogQSBjYXBhYmxlIG1vZGVsIGFza2VkIGZvciBcImEgTWljcm9zb2Z0IFRlYW1zIEFkYXB0aXZlIENhcmRcIiBvZnRlbiBhbnN3ZXJzIHdpdGhcbiAqIHRoZSBmaW5pc2hlZCAxLjUgZG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgc21hbGwgc3BlYyAtIGNvcnJlY3QgQWRhcHRpdmUgQ2FyZFxuICogSlNPTiwgd3Jvbmcgc2NoZW1hLCBzbyBgc3RydWN0dXJlZE91dHB1dGAgcmVqZWN0cyBpdCAoYHRpdGxlOiBleHBlY3RlZFxuICogc3RyaW5nYCkgYW5kIGEgZ2VudWluZWx5IGdvb2QgYW5zd2VyIGlzIHRocm93biBhd2F5LiBSZWFkaW5nIHRoZSBkb2N1bWVudCBiYWNrXG4gKiBpbnRvIHRoZSBzcGVjIHZvY2FidWxhcnkga2VlcHMgaXQ6IHRoZSBoZWFkaW5nIFRleHRCbG9ja3MgYmVjb21lXG4gKiB0aXRsZS9zdWJ0aXRsZSwgcmVtYWluaW5nIFRleHRCbG9ja3MgdGhlIGJvZHksIHRoZSBGYWN0U2V0IHRoZSBmYWN0cywgYW5kIGFueVxuICogYEFjdGlvbi5PcGVuVXJsYCB0aGUgYWN0aW9ucy5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgdG9sZXJhbnQgYWJvdXQgdGhlIGNvbnRhaW5lcjogYHR5cGVgIG1heSBiZSBtaXNzaW5nIGFuZCB0aGUgYm9keVxuICogbWF5IG5lc3QgZWxlbWVudHMgaW5zaWRlIGEgYENvbnRhaW5lcmAgLyBgQ29sdW1uU2V0YCwgc28gYmxvY2tzIGFyZSBjb2xsZWN0ZWRcbiAqIHJlY3Vyc2l2ZWx5IGFuZCBhbnl0aGluZyB1bnJlY29nbml6ZWQgaXMgaWdub3JlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRvY3VtZW50Q2FyZFNwZWMgPSAodmFsdWU6IHVua25vd24pOiBjYXJkLkNhcmRTcGVjIHwgbnVsbCA9PiB7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSB8fCAhQXJyYXkuaXNBcnJheSh2YWx1ZS5ib2R5KSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgdGV4dHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGZhY3RzOiBjYXJkLkNhcmRGYWN0W10gPSBbXTtcbiAgY29uc3QgY29sbGVjdCA9IChlbGVtZW50czogdW5rbm93bltdKTogdm9pZCA9PiB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICBpZiAoIW9iamVjdC5pc1JlY29yZChlbGVtZW50KSkgY29udGludWU7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcIlRleHRCbG9ja1wiKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzdHJpbmcudHJpbVRvTnVsbCh0eXBlb2YgZWxlbWVudC50ZXh0ID09PSBcInN0cmluZ1wiID8gZWxlbWVudC50ZXh0IDogXCJcIik7XG4gICAgICAgIGlmICh0ZXh0KSB0ZXh0cy5wdXNoKHRleHQpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09IFwiRmFjdFNldFwiICYmIEFycmF5LmlzQXJyYXkoZWxlbWVudC5mYWN0cykpIHtcbiAgICAgICAgZm9yIChjb25zdCBmYWN0IG9mIGVsZW1lbnQuZmFjdHMpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBjYXJkLmNhcmRGYWN0U2NoZW1hLnNhZmVQYXJzZShmYWN0KTtcbiAgICAgICAgICBpZiAocGFyc2VkLnN1Y2Nlc3MpIGZhY3RzLnB1c2gocGFyc2VkLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBBIENvbnRhaW5lciAvIENvbHVtblNldCAvIENvbHVtbiBuZXN0cyB0aGUgYmxvY2tzIHRoYXQgbWF0dGVyLlxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgW1wiaXRlbXNcIiwgXCJjb2x1bW5zXCJdKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZCA9IGVsZW1lbnRba2V5XTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkKSkgY29sbGVjdChuZXN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29sbGVjdCh2YWx1ZS5ib2R5KTtcblxuICBjb25zdCBhY3Rpb25zOiBjYXJkLkNhcmRBY3Rpb25bXSA9IFtdO1xuICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBBcnJheS5pc0FycmF5KHZhbHVlLmFjdGlvbnMpID8gdmFsdWUuYWN0aW9ucyA6IFtdKSB7XG4gICAgaWYgKCFvYmplY3QuaXNSZWNvcmQoYWN0aW9uKSkgY29udGludWU7XG4gICAgY29uc3QgcGFyc2VkID0gY2FyZC5jYXJkQWN0aW9uU2NoZW1hLnNhZmVQYXJzZSh7IHRpdGxlOiBhY3Rpb24udGl0bGUsIHVybDogYWN0aW9uLnVybCB9KTtcbiAgICBpZiAocGFyc2VkLnN1Y2Nlc3MpIGFjdGlvbnMucHVzaChwYXJzZWQuZGF0YSk7XG4gIH1cblxuICBjb25zdCBbdGl0bGUsIC4uLnJlc3RdID0gdGV4dHM7XG4gIGlmICghdGl0bGUpIHJldHVybiBudWxsO1xuICAvLyBUaGUgc2Vjb25kIGJsb2NrIGlzIGEgc3VidGl0bGUgb25seSB3aGVuIHRoZSBkb2N1bWVudCBzdHlsZWQgaXQgYXMgb25lO1xuICAvLyBvdGhlcndpc2UgaXQgaXMgYm9keSB0ZXh0IGFuZCBtdXN0IG5vdCBiZSBkZW1vdGVkIHRvIGEgc3ViaGVhZGluZy5cbiAgY29uc3Qgc2Vjb25kID0gb2JqZWN0LmlzUmVjb3JkKHZhbHVlLmJvZHlbMV0pID8gdmFsdWUuYm9keVsxXSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaGFzU3VidGl0bGUgPSByZXN0Lmxlbmd0aCA+IDAgJiYgc2Vjb25kPy5pc1N1YnRsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgYm9keSA9IChoYXNTdWJ0aXRsZSA/IHJlc3Quc2xpY2UoMSkgOiByZXN0KS5qb2luKFwiXFxuXFxuXCIpO1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiB0b1RpdGxlKHRpdGxlKSxcbiAgICAuLi4oaGFzU3VidGl0bGUgJiYgcmVzdFswXSA/IHsgc3VidGl0bGU6IHJlc3RbMF0gfSA6IHt9KSxcbiAgICAuLi4oYm9keSA/IHsgdGV4dDogYm9keSB9IDoge30pLFxuICAgIC4uLihmYWN0cy5sZW5ndGggPiAwID8geyBmYWN0cyB9IDoge30pLFxuICAgIC4uLihhY3Rpb25zLmxlbmd0aCA+IDAgPyB7IGFjdGlvbnMgfSA6IHt9KSxcbiAgfTtcbn07XG5cbi8qKlxuICogVGhlIGNhcmQgdGhlIG1vZGVsIHByb2R1Y2VkLCB3aGVyZXZlciBpdCBlbmRlZCB1cC5cbiAqXG4gKiBgc3RydWN0dXJlZE91dHB1dGAgcmVqZWN0cyBhbnl0aGluZyBvZmYtc2NoZW1hIGJ5IFRIUk9XSU5HLCBhbmQgTWFzdHJhIHB1dHNcbiAqIHRoZSBvZmZlbmRpbmcgcGF5bG9hZCBvbiB0aGUgZXJyb3IgKGBkZXRhaWxzLnZhbHVlYCkgLSBzbyB0aGUgbW9kZWwncyByZWFsXG4gKiBhbnN3ZXIgaXMgcmVjb3ZlcmFibGUgZnJvbSBhIGZhaWxlZCBjYWxsLiBCb3RoIHRoZSBzcGVjIHNoYXBlIGFuZCBhIGZ1bGxcbiAqIEFkYXB0aXZlIENhcmQgZG9jdW1lbnQgYXJlIGFjY2VwdGVkLCBmcm9tIGFuIG9iamVjdCBvciBmcm9tIEpTT04gdGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlamVjdGVkQ2FyZFNwZWMgPSAoZXJyOiB1bmtub3duKTogY2FyZC5DYXJkU3BlYyB8IG51bGwgPT4ge1xuICBjb25zdCBkZXRhaWxzID0gb2JqZWN0LmlzUmVjb3JkKGVycikgPyBlcnIuZGV0YWlscyA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdmFsdWUgPSBvYmplY3QuaXNSZWNvcmQoZGV0YWlscykgPyBkZXRhaWxzLnZhbHVlIDogdW5kZWZpbmVkO1xuICBjb25zdCBjYW5kaWRhdGVzOiB1bmtub3duW10gPSBbXTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNhbmRpZGF0ZXMucHVzaChqc29uLnBhcnNlKHZhbHVlLCB1bmRlZmluZWQpKTtcbiAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2FuZGlkYXRlcy5wdXNoKHZhbHVlKTtcbiAgfVxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgY29uc3Qgc3BlYyA9IGNhcmQuY2FyZFNwZWNTY2hlbWEuc2FmZVBhcnNlKGNhbmRpZGF0ZSk7XG4gICAgaWYgKHNwZWMuc3VjY2VzcykgcmV0dXJuIHNwZWMuZGF0YTtcbiAgICBjb25zdCBmcm9tRG9jdW1lbnQgPSBkb2N1bWVudENhcmRTcGVjKGNhbmRpZGF0ZSk7XG4gICAgaWYgKGZyb21Eb2N1bWVudCkgcmV0dXJuIGZyb21Eb2N1bWVudDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogVHVybiB3aGF0ZXZlciB0aGUgYWdlbnQgcHJvZHVjZWQgaW50byBhIGNhcmQgc3BlYy5cbiAqXG4gKiBgc3RydWN0dXJlZE91dHB1dGAgaXMgYmVzdC1lZmZvcnQgaW4gcHJhY3RpY2UsIG5vdCBhIGd1YXJhbnRlZS4gQmVjYXVzZSB0aGVcbiAqIHNjaGVtYSBpcyBwcm9tcHQtaW5qZWN0ZWQgKHNlZSB7QGxpbmsgSlNPTl9QUk9NUFRfSU5KRUNUSU9OfSkgcmF0aGVyIHRoYW5cbiAqIGVuZm9yY2VkIGJ5IHRoZSBwcm92aWRlciwgYSBtb2RlbCBjYW4gYW5zd2VyIHdpdGggcHJvc2UsIHdpdGggSlNPTiB3cmFwcGVkIGluXG4gKiBhIGBgYGAgYGBganNvbiBgYGBgIGZlbmNlLCBvciAtIG9uIERhdGFicmlja3MgTW9kZWwgU2VydmluZyAtIHdpdGggYW4gZW1wdHlcbiAqIHBhcnNlZCBvYmplY3Qgd2hpbGUgdGhlIHRleHQgY2FycmllcyB0aGUgcmVhbCBhbnN3ZXIuIE9ic2VydmVkIGZhaWx1cmUgcmF0ZSBvblxuICogdGhlIGRlbW8gZW5kcG9pbnQgd2FzIHJvdWdobHkgb25lIHR1cm4gaW4gdGhyZWUsIGFsbCBvZiB3aGljaCBzdXJmYWNlZCBhcyBhXG4gKiBoYXJkIGBTVFJVQ1RVUkVEX09VVFBVVF9TQ0hFTUFfVkFMSURBVElPTl9GQUlMRURgIGFuZCBubyByZXBseSBhdCBhbGwuXG4gKlxuICogQSBtaXNzaW5nIGNhcmQgaXMgbm90IHdvcnRoIGRyb3BwaW5nIHRoZSBhbnN3ZXIgb3Zlciwgc28gdGhpcyByZWNvdmVycyBpblxuICogZm91ciBzdGFnZXM6IHRoZSBwYXJzZWQgb2JqZWN0IHdoZW4gaXQgdmFsaWRhdGVzOyBlbHNlIHRoZSBhcmd1bWVudHMgdGhlIGFnZW50XG4gKiBwYXNzZWQgdG8gYGNyZWF0ZV90ZWFtc19jYXJkYCAob24gdGhlIHByb3NlIHJldHJ5IGFuIGFnZW50IGhvbGRpbmcgdGhhdCB0b29sXG4gKiB1c3VhbGx5IGNhbGxzIGl0LCB3aGljaCBpcyBhIFJFQUwgY2FyZCBzcGVjLCBub3QgYSBndWVzcyk7IGVsc2UgYSBKU09OIG9iamVjdFxuICogZW1iZWRkZWQgaW4gdGhlIHRleHQ7IGVsc2UgdGhlIHByb3NlIHdyYXBwZWQgaW4gYSBtaW5pbWFsIHRleHQtb25seSBjYXJkLiBUaGVcbiAqIHVzZXIgYWx3YXlzIGdldHMgdGhlIGFnZW50J3MgYW5zd2VyOyBhdCB3b3JzdCBpdCBpcyBsZXNzIHN0cnVjdHVyZWQuXG4gKi9cbmNvbnN0IHRvQ2FyZFNwZWMgPSAocmVzdWx0OiBBZ2VudFJlc3VsdCk6IGNhcmQuQ2FyZFNwZWMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBjYXJkLmNhcmRTcGVjU2NoZW1hLnNhZmVQYXJzZShyZXN1bHQub2JqZWN0KTtcbiAgaWYgKHBhcnNlZC5zdWNjZXNzKSByZXR1cm4gcGFyc2VkLmRhdGE7XG5cbiAgLy8gQSBtb2RlbCB0aGF0IGFuc3dlcmVkIHdpdGggdGhlIGZpbmlzaGVkIEFkYXB0aXZlIENhcmQgZG9jdW1lbnQgcmF0aGVyIHRoYW5cbiAgLy8gdGhlIHNwZWMgc3RpbGwgcHJvZHVjZWQgYSByZWFsIGNhcmQ7IHJlYWQgaXQgYmFjayBpbnRvIHRoZSBzcGVjIHZvY2FidWxhcnkuXG4gIGNvbnN0IGZyb21Eb2N1bWVudCA9IGRvY3VtZW50Q2FyZFNwZWMocmVzdWx0Lm9iamVjdCk7XG4gIGlmIChmcm9tRG9jdW1lbnQpIHJldHVybiBmcm9tRG9jdW1lbnQ7XG5cbiAgLy8gUHJlZmVyIGEgY2FyZCB0aGUgYWdlbnQgZXhwbGljaXRseSBjb21wb3NlZCB2aWEgdGhlIHRvb2wgb3ZlciBhbnl0aGluZ1xuICAvLyBzY3JhcGVkIG91dCBvZiBpdHMgcHJvc2UuXG4gIGNvbnN0IGZyb21Ub29sID0gdG9vbENhcmRTcGVjKHJlc3VsdCk7XG4gIGlmIChmcm9tVG9vbCkgcmV0dXJuIGZyb21Ub29sO1xuXG4gIGNvbnN0IHRleHQgPSBzdHJpbmcudHJpbVRvTnVsbChyZXN1bHQudGV4dCA/PyBcIlwiKTtcbiAgaWYgKHRleHQpIHtcbiAgICAvLyBBIGZlbmNlZCBvciBpbmxpbmUgSlNPTiBvYmplY3QgaW4gdGhlIHByb3NlOiB0aGUgbW9kZWwgZm9sbG93ZWQgdGhlXG4gICAgLy8gaW5zdHJ1Y3Rpb25zIGJ1dCB0aGUgcHJvdmlkZXIgZGlkIG5vdCBzdXJmYWNlIGEgcGFyc2VkIG9iamVjdC5cbiAgICBjb25zdCBlbWJlZGRlZCA9IHRleHQubWF0Y2goL1xce1tcXHNcXFNdKlxcfS8pO1xuICAgIGlmIChlbWJlZGRlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBqc29uLnBhcnNlKGVtYmVkZGVkWzBdLCB1bmRlZmluZWQpO1xuICAgICAgY29uc3QgcmV0cnkgPSBjYXJkLmNhcmRTcGVjU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSk7XG4gICAgICBpZiAocmV0cnkuc3VjY2VzcykgcmV0dXJuIHJldHJ5LmRhdGE7XG4gICAgICBjb25zdCBhc0RvY3VtZW50ID0gZG9jdW1lbnRDYXJkU3BlYyh2YWx1ZSk7XG4gICAgICBpZiAoYXNEb2N1bWVudCkgcmV0dXJuIGFzRG9jdW1lbnQ7XG4gICAgfVxuICAgIC8vIFByb3NlIG9ubHk6IGtlZXAgdGhlIGFuc3dlciwgZHJvcCB0aGUgc3RydWN0dXJlLiBUaGUgZmlyc3QgbGluZSBiZWNvbWVzXG4gICAgLy8gdGhlIHRpdGxlIChhIGNhcmQgd2l0aCBubyB0aXRsZSByZW5kZXJzIGFzIGFuIHVudGl0bGVkIGJsb2NrKSwgdGhlIHJlc3RcbiAgICAvLyBzdGF5cyBhcyB0aGUgYm9keS5cbiAgICBjb25zdCBsaW5lcyA9IHRleHRcbiAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkubGVuZ3RoID4gMClcbiAgICAgIC8vIEEgbW9kZWwgaW50cm9kdWNpbmcgaXRzIG93biBhbnN3ZXIgKFwiSGVyZSBpcyB0aGUgQWRhcHRpdmUgQ2FyZDpcIikgd291bGRcbiAgICAgIC8vIG90aGVyd2lzZSBiZWNvbWUgdGhlIGNhcmQncyBoZWFkbGluZSwgd2hpY2ggcmVhZHMgYXMgYSBidWcuIERyb3AgdGhlXG4gICAgICAvLyBwcmVhbWJsZSBzbyB0aGUgZmlyc3QgUkVBTCBsaW5lIGlzIHRoZSB0aXRsZS5cbiAgICAgIC5maWx0ZXIoKGxpbmUpID0+ICFQUkVBTUJMRV9SRS50ZXN0KGxpbmUudHJpbSgpKSk7XG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGxpbmVzO1xuICAgIGNvbnN0IHRpdGxlID0gc3RyaW5nLnRyaW1Ub051bGwoZmlyc3QgPz8gXCJcIikgPz8gXCJBbnN3ZXJcIjtcbiAgICBjb25zdCBib2R5ID0gcmVzdC5qb2luKFwiXFxuXCIpLnRyaW0oKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRvVGl0bGUodGl0bGUpLFxuICAgICAgLi4uKGJvZHkgPyB7IHRleHQ6IGJvZHkgfSA6IHRpdGxlLmxlbmd0aCA+IDEyMCA/IHsgdGV4dDogdGl0bGUgfSA6IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwidGVhbXM6IHRoZSBhZ2VudCByZXR1cm5lZCBuZWl0aGVyIGEgY2FyZCBub3IgYW55IHRleHQgdG8gZmFsbCBiYWNrIG9uXCIpO1xufTtcblxuLyoqXG4gKiBBIGxpbmUgdGhhdCBvbmx5IGFubm91bmNlcyB0aGUgY2FyZCByYXRoZXIgdGhhbiBzYXlpbmcgYW55dGhpbmcgLSBlLmcuXG4gKiBcIkhlcmUgaXMgdGhlIEFkYXB0aXZlIENhcmQ6XCIsIFwiSGVyZSdzIHlvdXIgVGVhbXMgY2FyZDpcIiwgXCJIZXJlIGFyZSB0aGUgY2FyZFxuICogZGV0YWlsczpcIi4gTWF0Y2hlZCBzbyBpdCBuZXZlciBiZWNvbWVzIHRoZSBjYXJkJ3MgdGl0bGUuXG4gKlxuICogQW5jaG9yZWQgdG8gYSBcImhlcmUgaXMvYXJlL2hlcmUncyAuLi4gY2FyZCAuLi5cIiBvcGVuZXIgdGhhdCBFTkRTIGluIGEgY29sb24sXG4gKiB3aGljaCBpcyB3aGF0IGtlZXBzIGl0IGZyb20gZWF0aW5nIGEgcmVhbCBzZW50ZW5jZSB0aGF0IG1lcmVseSBtZW50aW9ucyBhIGNhcmRcbiAqIChcIkhlcmUgaXMgdGhlIGNhcmQgcmVhZGVyIHN0YXR1czogb2ZmbGluZS5cIiBoYXMgdGV4dCBhZnRlciB0aGUgY29sb24pLlxuICovXG5jb25zdCBQUkVBTUJMRV9SRSA9IC9eKGhlcmUgKGlzfGFyZSl8aGVyZSdzKVxcYlteLiE/XSpcXGJjYXJkXFxiW14uIT86XSo6XFxzKiQvaTtcblxuLyoqXG4gKiBUcmltIGEgbGluZSBkb3duIHRvIHNvbWV0aGluZyB1c2FibGUgYXMgYSBjYXJkIHRpdGxlLiBBZGFwdGl2ZSBDYXJkIHRpdGxlcyBhcmVcbiAqIGEgc2luZ2xlIGJvbGQgbGluZSwgc28gYW4gb3Zlcmxvbmcgb25lIGlzIHRydW5jYXRlZCByYXRoZXIgdGhhbiB3cmFwcGVkOyB0aGVcbiAqIG1hcmtkb3duIGVtcGhhc2lzIGEgbW9kZWwgb2Z0ZW4gYWRkcyBpcyBzdHJpcHBlZCBzaW5jZSB0aGUgdGl0bGUgaXMgYWxyZWFkeVxuICogc3R5bGVkIGJvbGQuXG4gKi9cbmNvbnN0IHRvVGl0bGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHBsYWluID0gdmFsdWVcbiAgICAucmVwbGFjZSgvXiMrXFxzKi8sIFwiXCIpXG4gICAgLnJlcGxhY2UoL1xcKlxcKi9nLCBcIlwiKVxuICAgIC50cmltKCk7XG4gIHJldHVybiBwbGFpbi5sZW5ndGggPiAxMjAgPyBgJHtwbGFpbi5zbGljZSgwLCAxMTcpfS4uLmAgOiBwbGFpbjtcbn07XG5cbi8qKlxuICogQ29tcGlsZSBhbiBhbnN3ZXIgdGhlIGFnZW50IGhhcyBhbHJlYWR5IHByb2R1Y2VkIGludG8gYSBjYXJkIHNwZWMuXG4gKlxuICogQSBzZWNvbmQsIGRlbGliZXJhdGVseSBzdGF0ZWxlc3MgcGFzczogdGhlIGZvcm1hdHRpbmcgcmVxdWVzdCBpcyBOT1QgdGhyZWFkZWRcbiAqIG9udG8gYWdlbnQgbWVtb3J5LCBzbyB0aGUgY29udmVyc2F0aW9uIHRoZSB1c2VyIHNlZXMga2VlcHMgb25seSB0aGVpciBxdWVzdGlvblxuICogYW5kIHRoZSBhbnN3ZXIsIG5vdCB0aGUgcmVmb3JtYXR0aW5nIGNoYXR0ZXIgaW4gYmV0d2Vlbi5cbiAqXG4gKiBSZXR1cm5zIGBudWxsYCB3aGVuIHRoZSBwYXNzIGlzIHVudXNhYmxlIChNYXN0cmEgdGhyb3dzIHdoZW4gdGhlIG1vZGVsIHJldHVybnNcbiAqIG5vIHBhcnNlZCBvYmplY3QpIHNvIHRoZSBjYWxsZXIgY2FuIGZhbGwgYmFjayB0byB0aGUgYW5zd2VyIHRleHQgLSBhIGxlc3NcbiAqIHN0cnVjdHVyZWQgY2FyZCBjYXJyeWluZyB0aGUgcmVhbCBhbnN3ZXIgYmVhdHMgbG9zaW5nIHRoZSBhbnN3ZXIuXG4gKi9cbmNvbnN0IGZvcm1hdEFzQ2FyZCA9IGFzeW5jIChcbiAgYWdlbnQ6IENhcmRBZ2VudExpa2UsXG4gIHByb21wdDogc3RyaW5nLFxuICBhbnN3ZXI6IHN0cmluZyxcbiAgcmVxdWVzdDogeyBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsOyByZXF1ZXN0Q29udGV4dD86IHVua25vd24gfSxcbik6IFByb21pc2U8Y2FyZC5DYXJkU3BlYyB8IG51bGw+ID0+IHtcbiAgY29uc3QgYm9keSA9IFtcbiAgICBDQVJEX0ZPUk1BVF9JTlNUUlVDVElPTlMsXG4gICAgXCJcIixcbiAgICBgUXVlc3Rpb246ICR7cHJvbXB0fWAsXG4gICAgXCJcIixcbiAgICBcIkFzc2lzdGFudCBhbnN3ZXI6XCIsXG4gICAgYW5zd2VyLFxuICBdLmpvaW4oXCJcXG5cIik7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgc3RydWN0dXJlZE91dHB1dDoge1xuICAgICAgc2NoZW1hOiBjYXJkLmNhcmRTcGVjU2NoZW1hLFxuICAgICAganNvblByb21wdEluamVjdGlvbjogSlNPTl9QUk9NUFRfSU5KRUNUSU9OLFxuICAgIH0sXG4gICAgLi4ucmVxdWVzdCxcbiAgfTtcbiAgLy8gTWFzdHJhIFRIUk9XUyB3aGVuIHRoZSBtb2RlbCByZXR1cm5zIG5vIHBhcnNlZCBvYmplY3QsIGFuZCBiZWNhdXNlIHRoZVxuICAvLyBzY2hlbWEgaXMgcHJvbXB0LWluamVjdGVkIHJhdGhlciB0aGFuIHByb3ZpZGVyLWVuZm9yY2VkIHRoYXQgaGFwcGVuc1xuICAvLyBpbnRlcm1pdHRlbnRseSBvbiB0aGUgc2FtZSBpbnB1dC4gT25lIHJldHJ5IGNvbnZlcnRzIG1vc3Qgb2YgdGhvc2UgbWlzc2VzXG4gIC8vIGludG8gYSBwcm9wZXIgY2FyZDsgdGhlIGFuc3dlciBpcyBhbHJlYWR5IHNhZmUgZWl0aGVyIHdheS5cbiAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCAyOyBhdHRlbXB0ICs9IDEpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRvQ2FyZFNwZWMoYXdhaXQgYWdlbnQuZ2VuZXJhdGUoYm9keSwgb3B0aW9ucykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gVGhlIHJlamVjdGVkIHBheWxvYWQgdXN1YWxseSBJUyB0aGUgY2FyZCAtIG1vc3Qgb2Z0ZW4gdGhlIGZ1bGwgQWRhcHRpdmVcbiAgICAgIC8vIENhcmQgZG9jdW1lbnQgcmF0aGVyIHRoYW4gdGhlIHNwZWMgLSBzbyBpdCBpcyBzYWx2YWdlZCBiZWZvcmUgcmV0cnlpbmcuXG4gICAgICBjb25zdCByZWplY3RlZCA9IHJlamVjdGVkQ2FyZFNwZWMoZXJyKTtcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJyZWNvdmVyZWQgdGhlIGNhcmQgZnJvbSB0aGUgcmVqZWN0ZWQgc3RydWN0dXJlZCBwYXlsb2FkXCIpO1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWQ7XG4gICAgICB9XG4gICAgICBsb2dnZXIud2FybihcImNhcmQgZm9ybWF0dGluZyBwYXNzIGZhaWxlZFwiLCB7XG4gICAgICAgIGF0dGVtcHQ6IGF0dGVtcHQgKyAxLFxuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbG9nZ2VyLndhcm4oXCJmYWxsaW5nIGJhY2sgdG8gdGhlIGFuc3dlciB0ZXh0IGZvciB0aGUgY2FyZFwiKTtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIFJ1biBvbmUgY29udmVyc2F0aW9uIHR1cm46IGRyaXZlIGBhZ2VudGAgd2l0aCB0aGUgaW5ib3VuZCBhY3Rpdml0eSdzIHRleHQgYW5kXG4gKiByZXR1cm4gdGhlIGFjdGl2aXRpZXMgdG8gYXBwZW5kIHRvIHRoZSB0cmFuc2NyaXB0LlxuICpcbiAqIFJldHVybnMgYW4gRU1QVFkgYXJyYXkgZm9yIGFuIGFjdGl2aXR5IHRoYXQgY2FycmllcyBubyBwcm9tcHQgKGEgdHlwaW5nXG4gKiBpbmRpY2F0b3IsIGEgam9pbiBldmVudCksIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBhIGJvdCBkb2VzIHdpdGggb25lIC0gdGhlXG4gKiByb3V0ZSBhbnN3ZXJzIGB7IGFjdGl2aXRpZXM6IFtdIH1gIGFuZCB0aGUgdHJhbnNjcmlwdCBpcyB1bmNoYW5nZWQuXG4gKlxuICogVHdvIGFnZW50IGNhbGxzLCBpbiB0aGlzIG9yZGVyOlxuICpcbiAqICAgMS4gdGhlIEFOU1dFUiAtIG5vIGBzdHJ1Y3R1cmVkT3V0cHV0YCwgc28gdGhlIGFnZW50J3MgdG9vbHMgYXJlIGF2YWlsYWJsZVxuICogICAgICBhbmQgdGhlIGNvbnRlbnQgbWF0Y2hlcyB3aGF0IHRoZSBzdHJlYW1pbmcgZW5kcG9pbnQgd291bGQgc2F5O1xuICogICAyLiB0aGUgRk9STUFUIC0ge0BsaW5rIGZvcm1hdEFzQ2FyZH0gY29tcGlsaW5nIHRoYXQgYW5zd2VyIGludG8gYSBjYXJkLlxuICpcbiAqIEV2ZXJ5IGZhaWx1cmUgbW9kZSBzdGlsbCB5aWVsZHMgdGhlIGFuc3dlcjogYSBjYXJkIHRoZSBhZ2VudCBjb21wb3NlZCB3aXRoXG4gKiBgY3JlYXRlX3RlYW1zX2NhcmRgIGR1cmluZyBwYXNzIDEgc2hvcnQtY2lyY3VpdHMgcGFzcyAyLCBhbmQgYSBmYWlsZWQgcGFzcyAyXG4gKiBmYWxscyBiYWNrIHRvIHtAbGluayB0b0NhcmRTcGVjfSBvdmVyIHRoZSBhbnN3ZXIgdGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJ1bkNhcmRUdXJuID0gYXN5bmMgKFxuICBhZ2VudDogQ2FyZEFnZW50TGlrZSxcbiAgaW5ib3VuZDogYWN0aXZpdHlDb250cmFjdC5BY3Rpdml0eSxcbiAgb3B0aW9uczogQ2FyZFR1cm5PcHRpb25zID0ge30sXG4pOiBQcm9taXNlPGFjdGl2aXR5Q29udHJhY3QuQWN0aXZpdHlbXT4gPT4ge1xuICBjb25zdCBwcm9tcHQgPSBwcm9tcHRPZihpbmJvdW5kKTtcbiAgaWYgKCFwcm9tcHQpIHJldHVybiBbXTtcblxuICBjb25zdCBjb252ZXJzYXRpb25JZCA9IGluYm91bmQuY29udmVyc2F0aW9uPy5pZDtcbiAgY29uc3QgdXNlcklkID0gaW5ib3VuZC5mcm9tPy5pZDtcbiAgY29uc3Qgc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgPyB7IGFib3J0U2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge307XG4gIC8vIFRoZSBBcHBLaXQgdXNlciByaWRlcyBvbiB0aGlzLCBzbyB0aGUgYWdlbnQncyB0b29scyAoR2VuaWUsIHNlcnZpbmcsIHRoZVxuICAvLyBtb2RlbCByZXNvbHZlcikgd29yayBleGFjdGx5IGFzIHRoZXkgZG8gb24gdGhlIGNoYXQgZW5kcG9pbnRzLiBCdWlsdCBvbmNlXG4gIC8vIGFuZCBzaGFyZWQgYnkgYm90aCBwYXNzZXMuXG4gIGNvbnN0IHJlcXVlc3RDb250ZXh0ID0gb3B0aW9ucy5jcmVhdGVSZXF1ZXN0Q29udGV4dFxuICAgID8gYXdhaXQgb3B0aW9ucy5jcmVhdGVSZXF1ZXN0Q29udGV4dCh7XG4gICAgICAgIC4uLihjb252ZXJzYXRpb25JZCA/IHsgdGhyZWFkSWQ6IGNvbnZlcnNhdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySWQgPyB7IHJlc291cmNlSWQ6IHVzZXJJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgY29udGV4dCA9IHJlcXVlc3RDb250ZXh0ID8geyByZXF1ZXN0Q29udGV4dCB9IDoge307XG4gIC8vIFRocmVhZCB0aGUgY29udmVyc2F0aW9uIG9udG8gYWdlbnQgbWVtb3J5IHNvIHRoZSBzYW1lIGBjb252ZXJzYXRpb24uaWRgXG4gIC8vIGNvbnRpbnVlcyBvbmUgY29udmVyc2F0aW9uLiBPbmx5IHBhc3NlZCB3aGVuIHRoZSBjbGllbnQgc3VwcGxpZWQgYm90aCBpZHMgLVxuICAvLyBNYXN0cmEgcmVxdWlyZXMgdGhlIHBhaXIsIGFuZCBhIG1lbW9yeS1sZXNzIGFnZW50IGlnbm9yZXMgaXQuXG4gIGNvbnN0IG1lbW9yeSA9XG4gICAgY29udmVyc2F0aW9uSWQgJiYgdXNlcklkID8geyBtZW1vcnk6IHsgdGhyZWFkOiBjb252ZXJzYXRpb25JZCwgcmVzb3VyY2U6IHVzZXJJZCB9IH0gOiB7fTtcblxuICBjb25zdCBhbnN3ZXJlZCA9IGF3YWl0IGFnZW50LmdlbmVyYXRlKGAke3Byb21wdH1cXG5cXG4ke0NBUkRfQU5TV0VSX0lOU1RSVUNUSU9OU31gLCB7XG4gICAgLi4ubWVtb3J5LFxuICAgIC4uLmNvbnRleHQsXG4gICAgLi4uc2lnbmFsLFxuICB9KTtcblxuICAvLyBBbiBhZ2VudCB0aGF0IGNvbXBvc2VkIGEgY2FyZCBpdHNlbGYgaGFzIGFscmVhZHkgc2FpZCBpdCBpbiB0aGUgcmlnaHRcbiAgLy8gdm9jYWJ1bGFyeTsgcmVmb3JtYXR0aW5nIGl0IHdvdWxkIG9ubHkgcmlzayBwYXJhcGhyYXNpbmcgdGhlIHZhbHVlcy5cbiAgY29uc3QgY29tcG9zZWQgPSB0b29sQ2FyZFNwZWMoYW5zd2VyZWQpO1xuICBjb25zdCBhbnN3ZXIgPSBzdHJpbmcudHJpbVRvTnVsbChzdHJpcEVtYmVkTWFya2VycyhhbnN3ZXJlZC50ZXh0ID8/IFwiXCIpKTtcbiAgY29uc3Qgc3BlYyA9XG4gICAgY29tcG9zZWQgPz9cbiAgICAoYW5zd2VyID8gYXdhaXQgZm9ybWF0QXNDYXJkKGFnZW50LCBwcm9tcHQsIGFuc3dlciwgeyAuLi5jb250ZXh0LCAuLi5zaWduYWwgfSkgOiBudWxsKTtcblxuICBjb25zdCBkb2N1bWVudCA9IGJ1aWxkQWRhcHRpdmVDYXJkKFxuICAgIHNwZWMgPz8gdG9DYXJkU3BlYyh7IC4uLmFuc3dlcmVkLCAuLi4oYW5zd2VyID8geyB0ZXh0OiBhbnN3ZXIgfSA6IHt9KSB9KSxcbiAgKTtcbiAgcmV0dXJuIFt0b1JlcGx5QWN0aXZpdHkoaW5ib3VuZCwgW2RvY3VtZW50XSwgeyAuLi4ob3B0aW9ucy5ib3QgPyB7IGJvdDogb3B0aW9ucy5ib3QgfSA6IHt9KSB9KV07XG59O1xuIl19
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLElBQUksZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWpELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQW1EaEQsbUVBQW1FO0FBQ25FLE1BQU0sZUFBZSxHQUFHLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFNUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQW1CLEVBQXdCLEVBQUU7SUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUztRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBSSxNQUFNLENBQUMsT0FBTztZQUFFLE9BQU8sTUFBTSxDQUFD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RyxNQUFNO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsd0VBQXdFO0lBQ3hFLHVFQUF1RTtJQUN2RSxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekUsTUFBTSxJQUFJLEdBQ1IsUUFBUTtRQUNSLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFekYsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQ2hDLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUN6RSxDQUFDO0lBQ0YsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIFRlYW1zIGNvbnZlcnNhdGlvbiB0dXJuOiBydW4gYSBNYXN0cmEgYWdlbnQgYWdhaW5zdCBhbiBpbmJvdW5kIEJvdFxuICogRnJhbWV3b3JrIGFjdGl2aXR5IGFuZCBhbnN3ZXIgd2l0aCBBZGFwdGl2ZSBDYXJkIGF0dGFjaG1lbnRzLlxuICpcbiAqIFRoaXMgaXMgdGhlIHBpZWNlIHRoYXQgbWFrZXMgYFBPU1QgL2FwaS90ZWFtcy9hY3Rpdml0eWAgYmVoYXZlIGxpa2UgYSBUZWFtc1xuICogYm90IHJhdGhlciB0aGFuIGEgY2hhdCBBUEkgdGhhdCBoYXBwZW5zIHRvIHJldHVybiBKU09OLiBBIHR1cm4gaXM6XG4gKlxuICogICAxLiByZWFkIHRoZSB1c2VyJ3MgdGV4dCBvZmYgdGhlIGluYm91bmQgYG1lc3NhZ2VgIGFjdGl2aXR5O1xuICogICAyLiBBTlNXRVIgaXQgLSBhIG5vcm1hbCB0b29sLXVzaW5nIGFnZW50IHR1cm4sIHdpdGggbm8gbWVudGlvbiBvZiBjYXJkcywgc29cbiAqICAgICAgdGhlIGFnZW50IHF1ZXJpZXMgR2VuaWUgLyBjYWxscyBpdHMgdG9vbHMgZXhhY3RseSBhcyBpdCB3b3VsZCBvbiBhXG4gKiAgICAgIHN0cmVhbWluZyBjaGF0IGVuZHBvaW50O1xuICogICAzLiBGT1JNQVQgdGhhdCBhbnN3ZXIgaW50byBhIHtAbGluayBjYXJkLkNhcmRTcGVjfSBpbiBhIHNlY29uZCBwYXNzLCB2aWFcbiAqICAgICAgTWFzdHJhJ3MgYHN0cnVjdHVyZWRPdXRwdXRgIChwcm9tcHQtaW5qZWN0ZWQsIHNlZVxuICogICAgICB7QGxpbmsgSlNPTl9QUk9NUFRfSU5KRUNUSU9OfSk7XG4gKiAgIDQuIGNvbXBpbGUgdGhlIHNwZWMgd2l0aCB0aGUgc2FtZSBkZXRlcm1pbmlzdGljIGJ1aWxkZXIgdGhlXG4gKiAgICAgIGBjcmVhdGVfdGVhbXNfY2FyZGAgdG9vbCB1c2VzLCBhbmQgYXR0YWNoIGl0IHRvIGFuIG91dGJvdW5kIGFjdGl2aXR5LlxuICpcbiAqIFRoZSB0d28gcGFzc2VzIGFyZSB0aGUgaW1wb3J0YW50IHBhcnQuIEFza2luZyBmb3IgdGhlIGFuc3dlciBBTkQgdGhlIGNhcmRcbiAqIHNoYXBlIGluIE9ORSByZXF1ZXN0IG1ha2VzIHRoZSBtb2RlbCB0cmVhdCBmb3JtYXR0aW5nIGFzIHRoZSB0YXNrOiBpdCBlbWl0cyBhXG4gKiBjYXJkIHN0cmFpZ2h0IGF3YXkgYW5kIG5ldmVyIGNhbGxzIGl0cyB0b29scywgc28gYSBxdWVzdGlvbiB0aGF0IHNob3VsZCBoYXZlXG4gKiBxdWVyaWVkIGEgZGF0YSBzb3VyY2UgY2FtZSBiYWNrIGFzIFwiSSBkb24ndCBoYXZlIGEgcmVhbCBzeXN0ZW0gY29ubmVjdGVkIC1cbiAqIGhlcmUgaXMgYSB0ZW1wbGF0ZSBjYXJkIHdpdGggcGxhY2Vob2xkZXJzXCIuIEFuc3dlcmluZyBmaXJzdCwgdGhlbiBmb3JtYXR0aW5nIGFcbiAqIFJFQUwgYW5zd2VyLCBtYWtlcyB0aGlzIGVuZHBvaW50J3MgY29udGVudCBpZGVudGljYWwgdG8gdGhlIHN0cmVhbWluZ1xuICogZW5kcG9pbnQnczsgb25seSB0aGUgcHJlc2VudGF0aW9uIGRpZmZlcnMuXG4gKlxuICogRm9ybWF0dGluZyBpcyBhbHNvIHdoeSB0aGUgdHVybiBkb2VzIG5vdCBzaW1wbHkgcmVseSBvbiB0aGUgYWdlbnQgY2FsbGluZ1xuICogYGNyZWF0ZV90ZWFtc19jYXJkYDogb24gdGhpcyBlbmRwb2ludCBhIGNhcmQgSVMgdGhlIHJlc3BvbnNlIGZvcm1hdCwgc28gaXRcbiAqIHNob3VsZCBiZSBhIHByb3BlcnR5IG9mIHRoZSB0dXJuIHJhdGhlciB0aGFuIGEgdG9vbCB0aGUgbW9kZWwgbWF5IGZvcmdldC5cbiAqIEFnZW50cyBrZWVwIHRoZSB0b29sIGZvciB0aGUgb3RoZXIgZGlyZWN0aW9uIC0gYW5zd2VyaW5nIGluIHByb3NlIG9uIGEgbm9ybWFsXG4gKiBjaGF0IGVuZHBvaW50IGFuZCBjaG9vc2luZyB0byBhdHRhY2ggYSBjYXJkLiBXaGVuIHRoZSBhZ2VudCBET0VTIGNhbGwgaXRcbiAqIGR1cmluZyB0aGUgYW5zd2VyaW5nIHBhc3MsIHRoYXQgc3BlYyB3aW5zIGFuZCB0aGUgZm9ybWF0dGluZyBwYXNzIGlzIHNraXBwZWQuXG4gKlxuICogVGhlIGNvbnZlcnNhdGlvbiBpZCBkb3VibGVzIGFzIHRoZSBhZ2VudCdzIG1lbW9yeSB0aHJlYWQgaWQsIHNvIGEgY2xpZW50IHRoYXRcbiAqIGtlZXBzIHBvc3RpbmcgdGhlIHNhbWUgYGNvbnZlcnNhdGlvbi5pZGAgZ2V0cyBhIGNvbnRpbnVvdXMgY29udmVyc2F0aW9uIC0gdGhlXG4gKiBzYW1lIG1hcHBpbmcgYSByZWFsIGNoYW5uZWwgcmVsaWVzIG9uLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBlcnJvciwgaGFzaCwganNvbiwgbG9nLCBvYmplY3QsIHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBhY3Rpdml0eSBhcyBhY3Rpdml0eUNvbnRyYWN0LCBjYXJkIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLXRlYW1zXCI7XG5pbXBvcnQgeyBidWlsZEFkYXB0aXZlQ2FyZCB9IGZyb20gXCIuL2J1aWxkZXIudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInRlYW1zOmNvbnZlcnNhdGlvblwiKTtcblxuLyoqXG4gKiBNaW5pbWFsIHN0cnVjdHVyYWwgc2hhcGUgb2YgdGhlIE1hc3RyYSBgQWdlbnRgIHRoaXMgbW9kdWxlIGRyaXZlcy5cbiAqXG4gKiBEZWNsYXJlZCBzdHJ1Y3R1cmFsbHkgcmF0aGVyIHRoYW4gaW1wb3J0aW5nIGBAbWFzdHJhL2NvcmVgJ3MgYEFnZW50YDogdGhpc1xuICogcGFja2FnZSBtdXN0IG5vdCBkZXBlbmQgb24gdGhlIE1hc3RyYSBwbHVnaW4gKHRoZSBwbHVnaW4gZGVwZW5kcyBvbiBub3RoaW5nXG4gKiBoZXJlIGVpdGhlciksIGFuZCBhIHR1cm4gb25seSBldmVyIG5lZWRzIGBnZW5lcmF0ZWAuIEFueSBvYmplY3Qgd2l0aCBhXG4gKiBjb21wYXRpYmxlIGBnZW5lcmF0ZWAgc2F0aXNmaWVzIGl0LCB3aGljaCBhbHNvIG1ha2VzIHRoZSB0dXJuIHRyaXZpYWxseVxuICogdGVzdGFibGUgd2l0aCBhIHN0dWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZEFnZW50TGlrZSB7XG4gIGdlbmVyYXRlKFxuICAgIHByb21wdDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHN0cnVjdHVyZWRPdXRwdXQ/OiB7XG4gICAgICAgIHNjaGVtYTogdHlwZW9mIGNhcmQuY2FyZFNwZWNTY2hlbWE7XG4gICAgICAgIGpzb25Qcm9tcHRJbmplY3Rpb24/OiBib29sZWFuIHwgXCJzeXN0ZW1cIiB8IFwiaW5saW5lXCI7XG4gICAgICB9O1xuICAgICAgbWVtb3J5PzogeyB0aHJlYWQ6IHN0cmluZzsgcmVzb3VyY2U6IHN0cmluZyB9O1xuICAgICAgLyoqXG4gICAgICAgKiBNYXN0cmEncyBwZXItdHVybiBgUmVxdWVzdENvbnRleHRgLiBPcGFxdWUgaGVyZSAtIHRoZSBvYmplY3QgY29tZXMgZnJvbVxuICAgICAgICogdGhlIGFnZW50IHBsdWdpbiAoc2VlIHtAbGluayBBZ2VudFByb3ZpZGVyTGlrZS5leHBvcnRzfSkgYW5kIGlzIG9ubHlcbiAgICAgICAqIGZvcndhcmRlZCAtIGJ1dCBSRVFVSVJFRCBmb3IgcGFyaXR5IHdpdGggdGhlIGNoYXQgZW5kcG9pbnRzOiBNYXN0cmEnc1xuICAgICAgICogdXNlci1zY29wZWQgdG9vbHMgcmVhZCB0aGUgQXBwS2l0IHVzZXIgb2ZmIGl0LCBzbyBhIHR1cm4gd2l0aG91dCBvbmVcbiAgICAgICAqIGFuc3dlcnMgXCJ0aGUgZGF0YSBzb3VyY2UgaXMgdW5yZWFjaGFibGVcIiB3aGVyZSBjaGF0IGFuc3dlcnMgd2l0aCBkYXRhLlxuICAgICAgICovXG4gICAgICByZXF1ZXN0Q29udGV4dD86IHVua25vd247XG4gICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIH0sXG4gICk6IFByb21pc2U8QWdlbnRSZXN1bHQ+O1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBNYXN0cmEncyBgZ2VuZXJhdGVgIHJlc3VsdCBhIHR1cm4gcmVhZHMuXG4gKlxuICogYHRvb2xSZXN1bHRzYCBtYXR0ZXJzIGFzIG11Y2ggYXMgYG9iamVjdGAgaGVyZTogd2hlbiBzdHJ1Y3R1cmVkIG91dHB1dCBmYWlsc1xuICogYW5kIHRoZSB0dXJuIHJlLWFza3MgYXMgcHJvc2UsIGFuIGFnZW50IGhvbGRpbmcgdGhlIGBjcmVhdGVfdGVhbXNfY2FyZGAgdG9vbFxuICogdHlwaWNhbGx5IENBTExTIGl0LCBzbyB0aGUgYmVzdCBhdmFpbGFibGUgY2FyZCBzcGVjIGlzIHRoZSB0b29sJ3MgYXJndW1lbnRzIC1cbiAqIGFscmVhZHkgaW4gdGhlIHJpZ2h0IHZvY2FidWxhcnkgLSByYXRoZXIgdGhhbiBhbnl0aGluZyBpbiB0aGUgcHJvc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRSZXN1bHQge1xuICBvYmplY3Q/OiB1bmtub3duO1xuICB0ZXh0Pzogc3RyaW5nO1xuICB0b29sUmVzdWx0cz86IHtcbiAgICBwYXlsb2FkPzogeyB0b29sTmFtZT86IHN0cmluZzsgYXJncz86IHVua25vd24gfTtcbiAgICB0b29sTmFtZT86IHN0cmluZztcbiAgICBhcmdzPzogdW5rbm93bjtcbiAgfVtdO1xufVxuXG4vKiogVG9vbCBpZCB3aG9zZSBhcmd1bWVudHMgYXJlIGFscmVhZHkgYSB7QGxpbmsgY2FyZC5DYXJkU3BlY30uICovXG5jb25zdCBDQVJEX1RPT0xfTkFNRVMgPSBbXCJjcmVhdGVfdGVhbXNfY2FyZFwiLCBcImNyZWF0ZUNhcmRcIl07XG5cbi8qKlxuICogVGhlIGNhcmQgc3BlYyBhbiBhZ2VudCBwYXNzZWQgdG8gdGhlIGNhcmQgdG9vbCwgaWYgaXQgY2FsbGVkIGl0LlxuICpcbiAqIE1hc3RyYSBuZXN0cyBhIHRvb2wgcmVzdWx0IHVuZGVyIGBwYXlsb2FkYCAoYHsgcGF5bG9hZDogeyB0b29sTmFtZSwgYXJncyB9IH1gKVxuICogYnV0IGhhcyB1c2VkIGEgZmxhdCBzaGFwZSB0b28sIHNvIGJvdGggYXJlIHJlYWQuXG4gKi9cbmNvbnN0IHRvb2xDYXJkU3BlYyA9IChyZXN1bHQ6IEFnZW50UmVzdWx0KTogY2FyZC5DYXJkU3BlYyB8IG51bGwgPT4ge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlc3VsdC50b29sUmVzdWx0cyA/PyBbXSkge1xuICAgIGNvbnN0IG5hbWUgPSBlbnRyeS5wYXlsb2FkPy50b29sTmFtZSA/PyBlbnRyeS50b29sTmFtZTtcbiAgICBpZiAoIW5hbWUgfHwgIUNBUkRfVE9PTF9OQU1FUy5pbmNsdWRlcyhuYW1lKSkgY29udGludWU7XG4gICAgY29uc3QgcGFyc2VkID0gY2FyZC5jYXJkU3BlY1NjaGVtYS5zYWZlUGFyc2UoZW50cnkucGF5bG9hZD8uYXJncyA/PyBlbnRyeS5hcmdzKTtcbiAgICBpZiAocGFyc2VkLnN1Y2Nlc3MpIHJldHVybiBwYXJzZWQuZGF0YTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogQXNrIGZvciB0aGUgY2FyZCBzaGFwZSB2aWEgUFJPTVBUIGluamVjdGlvbiByYXRoZXIgdGhhbiB0aGUgcHJvdmlkZXIncyBuYXRpdmVcbiAqIHJlc3BvbnNlIGZvcm1hdC5cbiAqXG4gKiBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgcmVqZWN0cyBhIHJlcXVlc3QgY2FycnlpbmcgYm90aCBgcmVzcG9uc2VfZm9ybWF0YCBhbmRcbiAqIGB0b29sc2AgKFwiQ2Fubm90IHNwZWNpZnkgYm90aCByZXNwb25zZV9mb3JtYXQgYW5kIHRvb2xzIGluIHRoZSBzYW1lIHJlcXVlc3RcIiksXG4gKiBhbmQgdGhlIGFnZW50cyB0aGlzIGVuZHBvaW50IGRyaXZlcyBub3JtYWxseSBkbyBoYXZlIHRvb2xzLiBOYXRpdmUgc3RydWN0dXJlZFxuICogb3V0cHV0IHdvdWxkIHRoZXJlZm9yZSBmYWlsIGZvciBleGFjdGx5IHRoZSBhZ2VudHMgd29ydGggdGFsa2luZyB0bywgc28gdGhlXG4gKiBzY2hlbWEgaXMgaW5qZWN0ZWQgYXMgaW5zdHJ1Y3Rpb25zIGluc3RlYWQgLSB3aGljaCBjb3N0cyBub3RoaW5nIGhlcmUgYmVjYXVzZVxuICogdGhlIGFuc3dlciBpcyByZS12YWxpZGF0ZWQgd2l0aCBgY2FyZFNwZWNTY2hlbWFgIGJlZm9yZSBpdCBpcyBjb21waWxlZC5cbiAqL1xuY29uc3QgSlNPTl9QUk9NUFRfSU5KRUNUSU9OID0gXCJzeXN0ZW1cIiBhcyBjb25zdDtcblxuLyoqIFRoZSBib3QncyBpZGVudGl0eSBvbiBvdXRib3VuZCBhY3Rpdml0aWVzIHdoZW4gdGhlIGNhbGxlciBuYW1lcyBub25lLiAqL1xuZXhwb3J0IGNvbnN0IEJPVF9BQ0NPVU5UOiBhY3Rpdml0eUNvbnRyYWN0LkNoYW5uZWxBY2NvdW50ID0ge1xuICBpZDogXCJkYngtdG9vbHMtdGVhbXMtYm90XCIsXG4gIG5hbWU6IFwiRGF0YWJyaWNrcyBBZ2VudFwiLFxufTtcblxuLyoqXG4gKiBJbnN0cnVjdGlvbnMgZm9yIHRoZSBGT1JNQVRUSU5HIHBhc3Mgb25seSAtIHR1cm5pbmcgYW4gYW5zd2VyIHRoZSBhZ2VudCBoYXNcbiAqIGFscmVhZHkgcHJvZHVjZWQgaW50byB0aGUgY2FyZCB2b2NhYnVsYXJ5LlxuICpcbiAqIERlbGliZXJhdGVseSBOT1Qgc2VudCB3aXRoIHRoZSB1c2VyJ3MgcXVlc3Rpb24uIEFza2luZyBmb3IgYSBjYXJkIGFuZCBhblxuICogYW5zd2VyIGluIG9uZSByZXF1ZXN0IG1ha2VzIHRoZSBtb2RlbCB0cmVhdCBmb3JtYXR0aW5nIGFzIHRoZSB0YXNrOiBpdCBlbWl0cyBhXG4gKiBjYXJkIGltbWVkaWF0ZWx5IGluc3RlYWQgb2YgY2FsbGluZyBpdHMgdG9vbHMsIHNvIGEgcXVlc3Rpb24gdGhhdCBzaG91bGQgaGF2ZVxuICogcXVlcmllZCBHZW5pZSBjYW1lIGJhY2sgYXMgXCJJIGRvbid0IGhhdmUgYSByZWFsIHN5c3RlbSBjb25uZWN0ZWQgLSBoZXJlIGlzIGFcbiAqIHRlbXBsYXRlIGNhcmRcIi4gRm9ybWF0dGluZyBpcyBhIHNlcGFyYXRlLCBzZWNvbmQgcGFzcyBvdmVyIGEgcmVhbCBhbnN3ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBDQVJEX0ZPUk1BVF9JTlNUUlVDVElPTlMgPSBbXG4gIFwiUmVmb3JtYXQgdGhlIGFzc2lzdGFudCBhbnN3ZXIgYmVsb3cgYXMgYSBNaWNyb3NvZnQgVGVhbXMgQWRhcHRpdmUgQ2FyZC5cIixcbiAgXCJQcmVzZXJ2ZSB0aGUgYW5zd2VyJ3MgZmFjdHMgRVhBQ1RMWSAtIGV2ZXJ5IG51bWJlciwgbmFtZSwgZGF0ZSBhbmQgaWQuXCIsXG4gIFwiRG8gbm90IGFkZCBjYXZlYXRzLCBwbGFjZWhvbGRlcnMgb3IgaW52ZW50ZWQgdmFsdWVzLCBhbmQgZG8gbm90IGRlc2NyaWJlIHRoZVwiLFxuICBcImNhcmQ7IGlmIHRoZSBhbnN3ZXIgc3RhdGVzIGEgdmFsdWUsIHRoYXQgdmFsdWUgYmVsb25ncyBpbiB0aGUgY2FyZC5cIixcbiAgXCJQdXQgdGhlIGhlYWRsaW5lIGZpbmRpbmcgaW4gYHRpdGxlYCBhbmQga2VlcCBpdCB1bmRlciB+NjAgY2hhcmFjdGVycy5cIixcbiAgXCJVc2UgYHRleHRgIGZvciB0aGUgZXhwbGFuYXRpb24sIHdpdGggJy0nIGJ1bGxldHMgZm9yIGxpc3RzLlwiLFxuICBcIlVzZSBgZmFjdHNgIGZvciBrZXkvdmFsdWUgZGV0YWlsIChtZXRyaWNzLCBjb3VudHMsIG93bmVycywgaWRzKSBpbnN0ZWFkIG9mXCIsXG4gIFwid3JpdGluZyBpdCBhcyBwcm9zZS5cIixcbiAgXCJBZGQgYGFjdGlvbnNgIG9ubHkgZm9yIFVSTHMgcHJlc2VudCBpbiB0aGUgYW5zd2VyOyBuZXZlciBpbnZlbnQgYSBsaW5rLlwiLFxuICBcIkRyb3AgYW55IGBbY2hhcnQ6Li4uXWAgLyBgW2RhdGE6Li4uXWAgbWFya2VyOiBhIGNhcmQgY2Fubm90IHJlbmRlciBvbmUsIHNvXCIsXG4gIFwid3JpdGUgdGhlIHZhbHVlcyBpdCBzdG9vZCBmb3IgaW50byBgZmFjdHNgIG9yIGB0ZXh0YCBpbnN0ZWFkLlwiLFxuXS5qb2luKFwiIFwiKTtcblxuLyoqXG4gKiBOdWRnZSBhZGRlZCB0byB0aGUgQU5TV0VSSU5HIHBhc3MuXG4gKlxuICogVGhlIGFnZW50IGFuc3dlcnMgdGhlIHF1ZXN0aW9uIG5vcm1hbGx5IGhlcmUgLSB0b29scyBpbmNsdWRlZCAtIHNvIHRoaXMgb25seVxuICogYXNrcyBmb3IgdGhlIHNoYXBlIHRoYXQgc3Vydml2ZXMgY29tcHJlc3Npb24gaW50byBhIGNhcmQgd2VsbC4gSXQgbXVzdCBub3RcbiAqIG1lbnRpb24gY2FyZHMsIG9yIHRoZSBtb2RlbCBzdGFydHMgZm9ybWF0dGluZyBpbnN0ZWFkIG9mIGFuc3dlcmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IENBUkRfQU5TV0VSX0lOU1RSVUNUSU9OUyA9IFtcbiAgXCJBbnN3ZXIgdXNpbmcgeW91ciB0b29scyBhbmQgZGF0YSBzb3VyY2VzIGFzIHlvdSBub3JtYWxseSB3b3VsZC5cIixcbiAgXCJCZSBjb25jaXNlIGFuZCBsZWFkIHdpdGggdGhlIGZpbmRpbmcsIGFuZCBzdGF0ZSBjb25jcmV0ZSB2YWx1ZXNcIixcbiAgXCIobnVtYmVycywgbmFtZXMsIGRhdGVzKSBwbGFpbmx5IHNvIHRoZXkgY2FuIGJlIHN1bW1hcml6ZWQuXCIsXG4gIC8vIEFnZW50cyBvbiBhIGNoYXQgZW5kcG9pbnQgYXJlIHRvbGQgdG8gZGVmZXIgdGFibGVzIGFuZCBjaGFydHMgdG8gdGhlIGhvc3QgVUlcbiAgLy8gYXMgYFtkYXRhOjxpZD5dYCAvIGBbY2hhcnQ6PGlkPl1gIG1hcmtlcnMuIEEgY2FyZCBoYXMgbm8gZW1iZWQgc2xvdCB0byBmaWxsLFxuICAvLyBzbyBhIGRlZmVycmVkIG51bWJlciBhcnJpdmVzIGFzIGEgbGl0ZXJhbCBgW2RhdGE6MDFmMS4uLl1gIGluIHRoZSBjYXJkLiBUaGVcbiAgLy8gdHVybiBhc2tzIGZvciB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMgaW5zdGVhZCwgYW5kIHN0cmlwcyBhbnkgdGhhdCBzbGlwXG4gIC8vIHRocm91Z2ggKHNlZSBFTUJFRF9NQVJLRVJfUkUpLlxuICBcIlRoaXMgY2hhbm5lbCBjYW5ub3QgZGlzcGxheSBjaGFydCBvciBkYXRhIGVtYmVkczogZG8gbm90IGVtaXRcIixcbiAgXCJgW2NoYXJ0Oi4uLl1gIG9yIGBbZGF0YTouLi5dYCBtYXJrZXJzIC0gd3JpdGUgdGhlIGFjdHVhbCBudW1iZXJzIHlvdVwiLFxuICBcInJldHJpZXZlZCBpbnRvIHlvdXIgYW5zd2VyIGluc3RlYWQuXCIsXG5dLmpvaW4oXCIgXCIpO1xuXG4vKipcbiAqIEEgaG9zdC1lbWJlZCBtYXJrZXIgKGBbY2hhcnQ6PGlkPl1gLCBgW2RhdGE6PGlkPl1gKSBpbiBhbiBhZ2VudCdzIHByb3NlLlxuICpcbiAqIENoYXQgaG9zdHMgc3dhcCB0aGVzZSBmb3IgYSByZW5kZXJlZCBjaGFydCBvciB0YWJsZS4gQW4gQWRhcHRpdmUgQ2FyZCBoYXMgbm9cbiAqIHN1Y2ggc2xvdCwgc28gYSBtYXJrZXIgdGhhdCBzdXJ2aXZlcyBpbnRvIGNhcmQgdGV4dCByZW5kZXJzIGFzIGxpdGVyYWxcbiAqIGBbZGF0YTowMWYxODk1Yy0uLi5dYCBub2lzZSB3aGVyZSBhIG51bWJlciBzaG91bGQgYmUuIFRoZSBhbnN3ZXJpbmcgcGFzcyBhc2tzXG4gKiB0aGUgYWdlbnQgbm90IHRvIGVtaXQgdGhlbTsgdGhpcyByZW1vdmVzIGFueSB0aGF0IHN0aWxsIGFycml2ZS5cbiAqXG4gKiBUaGUgZ2VuZXJpYyBgW3R5cGU6aWRdYCBncmFtbWFyIGlzIHNwZWxsZWQgaGVyZSByYXRoZXIgdGhhbiBpbXBvcnRlZCBzbyB0aGlzXG4gKiBwYWNrYWdlIHN0YXlzIGEgbGVhZiBhZGQtb24gd2l0aCBubyBkZXBlbmRlbmN5IG9uIHRoZSBhZ2VudCBwbHVnaW4nc1xuICogY29udHJhY3RzIC0gaXQgb25seSBldmVyIG5lZWRzIHRvIFJFQ09HTklaRSBhIG1hcmtlciwgbmV2ZXIgcmVzb2x2ZSBvbmUuXG4gKi9cbmNvbnN0IEVNQkVEX01BUktFUl9SRSA9IC9cXFtbQS1aYS16XVtBLVphLXowLTlfLV0qOlteXFxdXFxzXStcXF0vZztcblxuLyoqXG4gKiBEcm9wIGVtYmVkIG1hcmtlcnMgZnJvbSBgdGV4dGAsIHRpZHlpbmcgdGhlIHdoaXRlc3BhY2UgdGhleSBsZWF2ZSBiZWhpbmQgc28gYVxuICogbWFya2VyIHRoYXQgc2F0IG9uIGl0cyBvd24gbGluZSBkb2VzIG5vdCBiZWNvbWUgYSBibGFuayBvbmUuXG4gKi9cbmNvbnN0IHN0cmlwRW1iZWRNYXJrZXJzID0gKHRleHQ6IHN0cmluZyk6IHN0cmluZyA9PlxuICB0ZXh0XG4gICAgLnJlcGxhY2UoRU1CRURfTUFSS0VSX1JFLCBcIlwiKVxuICAgIC5yZXBsYWNlKC9bIFxcdF0rJC9nbSwgXCJcIilcbiAgICAucmVwbGFjZSgvXFxuezMsfS9nLCBcIlxcblxcblwiKVxuICAgIC50cmltKCk7XG5cbi8qKlxuICogU3RydWN0dXJhbCBzaGFwZSBvZiB0aGUgc2libGluZyBwbHVnaW4gdGhhdCBvd25zIHRoZSBhZ2VudCByZWdpc3RyeSAtIHRoZVxuICogc2xpY2Ugb2YgYEBkYngtdG9vbHMvYXBwa2l0LW1hc3RyYWAncyBgZXhwb3J0cygpYCBhIHR1cm4gbmVlZHMuXG4gKlxuICogTWF0Y2hlZCBzdHJ1Y3R1cmFsbHksIGJ5IHJlZ2lzdGVyZWQgcGx1Z2luIE5BTUUsIHJhdGhlciB0aGFuIGltcG9ydGluZyB0aGVcbiAqIE1hc3RyYSBwbHVnaW46IHRoaXMgcGFja2FnZSBzdGF5cyBhIGxlYWYgYWRkLW9uIChpdCBkZXBlbmRzIG9uIG5vIG90aGVyXG4gKiBkYngtdG9vbHMgcnVudGltZSBwYWNrYWdlLCBsaWtlIG5vZGUtZW1haWwpLCB0aGUgZGVwZW5kZW5jeSBkaXJlY3Rpb24gc3RheXNcbiAqIG9uZS13YXksIGFuZCBhbnkgcGx1Z2luIGV4cG9zaW5nIHRoZSBzYW1lIGBnZXRgIC8gYGdldERlZmF1bHRgIHBhaXIgY2FuIGJhY2tcbiAqIHRoZSBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2VudFByb3ZpZGVyTGlrZSB7XG4gIGV4cG9ydHMoKToge1xuICAgIGdldChpZDogc3RyaW5nKTogdW5rbm93bjtcbiAgICBnZXREZWZhdWx0KCk6IHVua25vd247XG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBwZXItdHVybiBgUmVxdWVzdENvbnRleHRgIHRoZSBwcm92aWRlcidzIHRvb2xzIGV4cGVjdC4gT3B0aW9uYWxcbiAgICAgKiBzbyBhbiBvbGRlciBwcm92aWRlciAob3IgYSBkaWZmZXJlbnRseS1zaGFwZWQgb25lKSBzdGlsbCByZXNvbHZlcyBhblxuICAgICAqIGFnZW50OyB0aGUgdHVybiBzaW1wbHkgcnVucyB3aXRob3V0IHVzZXItc2NvcGVkIHRvb2wgY29udGV4dCB0aGVuLlxuICAgICAqL1xuICAgIGNyZWF0ZVJlcXVlc3RDb250ZXh0PyhvcHRpb25zOiB7IHRocmVhZElkPzogc3RyaW5nOyByZXNvdXJjZUlkPzogc3RyaW5nIH0pOiBQcm9taXNlPHVua25vd24+O1xuICB9O1xufVxuXG4vKiogVHJ1ZSB3aGVuIGB2YWx1ZWAgZXhwb3NlcyB0aGUgYGdlbmVyYXRlYCBhIHR1cm4gZHJpdmVzLiAqL1xuY29uc3QgaXNDYXJkQWdlbnQgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDYXJkQWdlbnRMaWtlID0+XG4gIHR5cGVvZiAodmFsdWUgYXMgQ2FyZEFnZW50TGlrZSB8IG51bGwpPy5nZW5lcmF0ZSA9PT0gXCJmdW5jdGlvblwiO1xuXG4vKiogVHJ1ZSB3aGVuIGB2YWx1ZWAgZXhwb3NlcyB0aGUgYWdlbnQtcmVnaXN0cnkgYGV4cG9ydHMoKWAgYSB0dXJuIHJlYWRzLiAqL1xuY29uc3QgaXNBZ2VudFByb3ZpZGVyID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQWdlbnRQcm92aWRlckxpa2UgPT5cbiAgdHlwZW9mICh2YWx1ZSBhcyBBZ2VudFByb3ZpZGVyTGlrZSB8IG51bGwpPy5leHBvcnRzID09PSBcImZ1bmN0aW9uXCI7XG5cbi8qKlxuICogUmVhZCBvbmUgYWdlbnQgb3V0IG9mIGEgcHJvdmlkZXIncyBgZXhwb3J0cygpYC5cbiAqXG4gKiBFdmVyeSBtZW1iZXIgaXMgcHJvYmVkIGJlZm9yZSBpdCBpcyBjYWxsZWQ6IHRoZSBwcm92aWRlciBpcyBtYXRjaGVkXG4gKiBzdHJ1Y3R1cmFsbHkgYnkgcGx1Z2luIG5hbWUsIHNvIGEgRElGRkVSRU5UIHBsdWdpbiByZWdpc3RlcmVkIHVuZGVyIHRoYXQgbmFtZVxuICogY2FuIHNhdGlzZnkgYGlzQWdlbnRQcm92aWRlcmAgKGl0IGhhcyBhbiBgZXhwb3J0cygpYCkgd2hpbGUgZXhwb3Npbmcgbm8gYWdlbnRcbiAqIHJlZ2lzdHJ5IGF0IGFsbC4gQ2FsbGluZyBibGluZGx5IHdvdWxkIHRocm93IGEgYFR5cGVFcnJvcmAgb3V0IG9mIHJvdXRlXG4gKiByZXNvbHV0aW9uOyBhIG1pc3MgaXMganVzdCBcIm5vIGFnZW50XCIsIHdoaWNoIHRoZSByb3V0ZSByZXBvcnRzIGFzIDUwMy5cbiAqL1xuY29uc3QgcmVhZEFnZW50ID0gKHByb3ZpZGVyOiBBZ2VudFByb3ZpZGVyTGlrZSwgYWdlbnRJZD86IHN0cmluZyk6IHVua25vd24gPT4ge1xuICBjb25zdCByZWdpc3RyeSA9IHByb3ZpZGVyLmV4cG9ydHMoKSBhcyBQYXJ0aWFsPFJldHVyblR5cGU8QWdlbnRQcm92aWRlckxpa2VbXCJleHBvcnRzXCJdPj47XG4gIGlmIChhZ2VudElkKSByZXR1cm4gdHlwZW9mIHJlZ2lzdHJ5LmdldCA9PT0gXCJmdW5jdGlvblwiID8gcmVnaXN0cnkuZ2V0KGFnZW50SWQpIDogbnVsbDtcbiAgcmV0dXJuIHR5cGVvZiByZWdpc3RyeS5nZXREZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgPyByZWdpc3RyeS5nZXREZWZhdWx0KCkgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBhZ2VudCB0aGF0IGFuc3dlcnMgYSB0dXJuIGZyb20gdGhlIEFwcEtpdCBwbHVnaW4gcmVnaXN0cnkuXG4gKlxuICogYGFnZW50SWRgIHBpY2tzIGEgc3BlY2lmaWMgYWdlbnQ7IG9taXR0ZWQsIHRoZSBwcm92aWRlcidzIGRlZmF1bHQgYWdlbnRcbiAqIGFuc3dlcnMuIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIHByb3ZpZGVyIGlzIGFic2VudCBvciB0aGUgaWQgaXMgdW5rbm93biwgc29cbiAqIHRoZSByb3V0ZSBjYW4gYW5zd2VyIDUwMyAvIDQwNCBpbnN0ZWFkIG9mIHRocm93aW5nLlxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUNhcmRBZ2VudCA9IChcbiAgcGx1Z2luczogUmVhZG9ubHlNYXA8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgcHJvdmlkZXJOYW1lOiBzdHJpbmcsXG4gIGFnZW50SWQ/OiBzdHJpbmcsXG4pOiBDYXJkQWdlbnRMaWtlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHByb3ZpZGVyID0gcGx1Z2lucz8uZ2V0KHByb3ZpZGVyTmFtZSk7XG4gIGlmICghaXNBZ2VudFByb3ZpZGVyKHByb3ZpZGVyKSkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IGZvdW5kID0gcmVhZEFnZW50KHByb3ZpZGVyLCBhZ2VudElkKTtcbiAgcmV0dXJuIGlzQ2FyZEFnZW50KGZvdW5kKSA/IGZvdW5kIDogbnVsbDtcbn07XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmsgcnVuQ2FyZFR1cm59LiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXJkVHVybk9wdGlvbnMge1xuICAvKiogQ2FuY2VscyB0aGUgYWdlbnQgY2FsbCB3aXRoIHRoZSByZXF1ZXN0LiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIE92ZXJyaWRlcyB0aGUgYm90IGlkZW50aXR5IHN0YW1wZWQgb24gdGhlIHJlcGx5LiAqL1xuICBib3Q/OiBhY3Rpdml0eUNvbnRyYWN0LkNoYW5uZWxBY2NvdW50O1xuICAvKipcbiAgICogQnVpbGRzIHRoZSBNYXN0cmEgYFJlcXVlc3RDb250ZXh0YCBmb3IgdGhlIHR1cm4sIGZyb21cbiAgICoge0BsaW5rIHJlc29sdmVDYXJkQ29udGV4dEZhY3Rvcnl9LiBPbWl0dGVkLCB0aGUgdHVybiBzdGlsbCBhbnN3ZXJzLCBidXRcbiAgICogd2l0aG91dCB0aGUgQXBwS2l0IHVzZXIgaXRzIHVzZXItc2NvcGVkIHRvb2xzIGNhbm5vdCByZWFjaCBEYXRhYnJpY2tzIC0gc29cbiAgICogdGhlIHJvdXRlIHNob3VsZCBhbHdheXMgc3VwcGx5IGl0LlxuICAgKi9cbiAgY3JlYXRlUmVxdWVzdENvbnRleHQ/OiBDYXJkQ29udGV4dEZhY3Rvcnk7XG59XG5cbi8qKiBCdWlsZHMgdGhlIHBlci10dXJuIHJlcXVlc3QgY29udGV4dCB0aGUgYWdlbnQncyB0b29scyByZWFkLiAqL1xuZXhwb3J0IHR5cGUgQ2FyZENvbnRleHRGYWN0b3J5ID0gKG9wdGlvbnM6IHtcbiAgdGhyZWFkSWQ/OiBzdHJpbmc7XG4gIHJlc291cmNlSWQ/OiBzdHJpbmc7XG59KSA9PiBQcm9taXNlPHVua25vd24+O1xuXG4vKipcbiAqIFRoZSBhZ2VudCBwbHVnaW4ncyByZXF1ZXN0LWNvbnRleHQgZmFjdG9yeSwgd2hlbiBpdCBleHBvc2VzIG9uZS5cbiAqXG4gKiBSZXNvbHZlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIGFnZW50IGJlY2F1c2UgaXQgaXMgdGhlIHBpZWNlIHRoYXQgZ2l2ZXMgYW5cbiAqIG91dC1vZi1iYW5kIHR1cm4gdGhlIHNhbWUgdG9vbCByZWFjaCBhcyBhIGNoYXQgdHVybjsgYSBwcm92aWRlciB3aXRob3V0IGl0XG4gKiBzdGlsbCBhbnN3ZXJzLCBqdXN0IHdpdGhvdXQgdXNlci1zY29wZWQgdG9vbHMuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlQ2FyZENvbnRleHRGYWN0b3J5ID0gKFxuICBwbHVnaW5zOiBSZWFkb25seU1hcDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkLFxuICBwcm92aWRlck5hbWU6IHN0cmluZyxcbik6IENhcmRDb250ZXh0RmFjdG9yeSB8IG51bGwgPT4ge1xuICBjb25zdCBwcm92aWRlciA9IHBsdWdpbnM/LmdldChwcm92aWRlck5hbWUpO1xuICBpZiAoIWlzQWdlbnRQcm92aWRlcihwcm92aWRlcikpIHJldHVybiBudWxsO1xuICBjb25zdCByZWdpc3RyeSA9IHByb3ZpZGVyLmV4cG9ydHMoKSBhcyBQYXJ0aWFsPFJldHVyblR5cGU8QWdlbnRQcm92aWRlckxpa2VbXCJleHBvcnRzXCJdPj47XG4gIGNvbnN0IGZhY3RvcnkgPSByZWdpc3RyeS5jcmVhdGVSZXF1ZXN0Q29udGV4dDtcbiAgcmV0dXJuIHR5cGVvZiBmYWN0b3J5ID09PSBcImZ1bmN0aW9uXCIgPyAob3B0aW9ucykgPT4gZmFjdG9yeS5jYWxsKHJlZ2lzdHJ5LCBvcHRpb25zKSA6IG51bGw7XG59O1xuXG4vKipcbiAqIFRoZSB0ZXh0IGEgYG1lc3NhZ2VgIGFjdGl2aXR5IGNhcnJpZXMsIG9yIGBudWxsYCB3aGVuIGl0IGNhcnJpZXMgbm9uZS5cbiAqXG4gKiBBIGNoYW5uZWwgc2VuZHMgcGxlbnR5IG9mIGFjdGl2aXRpZXMgd2l0aCBubyB1c2FibGUgdGV4dCAoYSBgdHlwaW5nYFxuICogaW5kaWNhdG9yLCBhIGBjb252ZXJzYXRpb25VcGRhdGVgIHdoZW4gc29tZW9uZSBqb2lucywgb3IgYSBgbWVzc2FnZWAgd2hvc2VcbiAqIHBheWxvYWQgaXMgb25seSBhbiBhdHRhY2htZW50KS4gVGhvc2UgYXJlIG5vdCBlcnJvcnMgLSB0aGV5IHNpbXBseSBwcm9kdWNlIG5vXG4gKiByZXBseSAtIHNvIHRoaXMgcmV0dXJucyBgbnVsbGAgcmF0aGVyIHRoYW4gdGhyb3dpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBwcm9tcHRPZiA9IChpbmJvdW5kOiBhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5KTogc3RyaW5nIHwgbnVsbCA9PlxuICBpbmJvdW5kLnR5cGUgPT09IFwibWVzc2FnZVwiID8gc3RyaW5nLnRyaW1Ub051bGwoaW5ib3VuZC50ZXh0ID8/IFwiXCIpIDogbnVsbDtcblxuLyoqXG4gKiBCdWlsZCBhbiBvdXRib3VuZCBhY3Rpdml0eSBjYXJyeWluZyBgY2FyZHNgLCBhZGRyZXNzZWQgYmFjayB0byB0aGUgc2VuZGVyIG9mXG4gKiBgaW5ib3VuZGAuXG4gKlxuICogRXhwb3J0ZWQgYmVjYXVzZSBhIGNsaWVudCByZW5kZXJpbmcgYW4gb3B0aW1pc3RpYyBsb2NhbCByZXBseSwgYW5kIGEgdGVzdFxuICogYXNzZXJ0aW5nIHRoZSBlbnZlbG9wZSwgYm90aCBuZWVkIHRoZSBzYW1lIGNvbnN0cnVjdGlvbiB0aGUgdHVybiB1c2VzLlxuICovXG5leHBvcnQgY29uc3QgdG9SZXBseUFjdGl2aXR5ID0gKFxuICBpbmJvdW5kOiBhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5LFxuICBjYXJkczogY2FyZC5BZGFwdGl2ZUNhcmRbXSxcbiAgb3B0aW9uczogeyBib3Q/OiBhY3Rpdml0eUNvbnRyYWN0LkNoYW5uZWxBY2NvdW50OyB0ZXh0Pzogc3RyaW5nIH0gPSB7fSxcbik6IGFjdGl2aXR5Q29udHJhY3QuQWN0aXZpdHkgPT4gKHtcbiAgdHlwZTogXCJtZXNzYWdlXCIsXG4gIGlkOiBoYXNoLmlkKCksXG4gIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBmcm9tOiBvcHRpb25zLmJvdCA/PyBCT1RfQUNDT1VOVCxcbiAgLi4uKGluYm91bmQuZnJvbSA/IHsgcmVjaXBpZW50OiBpbmJvdW5kLmZyb20gfSA6IHt9KSxcbiAgLi4uKGluYm91bmQuY29udmVyc2F0aW9uID8geyBjb252ZXJzYXRpb246IGluYm91bmQuY29udmVyc2F0aW9uIH0gOiB7fSksXG4gIC4uLihvcHRpb25zLnRleHQgPyB7IHRleHQ6IG9wdGlvbnMudGV4dCB9IDoge30pLFxuICBhdHRhY2htZW50czogY2FyZHMubWFwKChkb2N1bWVudCkgPT4gYWN0aXZpdHlDb250cmFjdC50b0NhcmRBdHRhY2htZW50KGRvY3VtZW50KSksXG59KTtcblxuLyoqXG4gKiBSZWNvdmVyIGEge0BsaW5rIGNhcmQuQ2FyZFNwZWN9IGZyb20gYSBmdWxsIEFkYXB0aXZlIENhcmQgRE9DVU1FTlQuXG4gKlxuICogQSBjYXBhYmxlIG1vZGVsIGFza2VkIGZvciBcImEgTWljcm9zb2Z0IFRlYW1zIEFkYXB0aXZlIENhcmRcIiBvZnRlbiBhbnN3ZXJzIHdpdGhcbiAqIHRoZSBmaW5pc2hlZCAxLjUgZG9jdW1lbnQgaW5zdGVhZCBvZiB0aGUgc21hbGwgc3BlYyAtIGNvcnJlY3QgQWRhcHRpdmUgQ2FyZFxuICogSlNPTiwgd3Jvbmcgc2NoZW1hLCBzbyBgc3RydWN0dXJlZE91dHB1dGAgcmVqZWN0cyBpdCAoYHRpdGxlOiBleHBlY3RlZFxuICogc3RyaW5nYCkgYW5kIGEgZ2VudWluZWx5IGdvb2QgYW5zd2VyIGlzIHRocm93biBhd2F5LiBSZWFkaW5nIHRoZSBkb2N1bWVudCBiYWNrXG4gKiBpbnRvIHRoZSBzcGVjIHZvY2FidWxhcnkga2VlcHMgaXQ6IHRoZSBoZWFkaW5nIFRleHRCbG9ja3MgYmVjb21lXG4gKiB0aXRsZS9zdWJ0aXRsZSwgcmVtYWluaW5nIFRleHRCbG9ja3MgdGhlIGJvZHksIHRoZSBGYWN0U2V0IHRoZSBmYWN0cywgYW5kIGFueVxuICogYEFjdGlvbi5PcGVuVXJsYCB0aGUgYWN0aW9ucy5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgdG9sZXJhbnQgYWJvdXQgdGhlIGNvbnRhaW5lcjogYHR5cGVgIG1heSBiZSBtaXNzaW5nIGFuZCB0aGUgYm9keVxuICogbWF5IG5lc3QgZWxlbWVudHMgaW5zaWRlIGEgYENvbnRhaW5lcmAgLyBgQ29sdW1uU2V0YCwgc28gYmxvY2tzIGFyZSBjb2xsZWN0ZWRcbiAqIHJlY3Vyc2l2ZWx5IGFuZCBhbnl0aGluZyB1bnJlY29nbml6ZWQgaXMgaWdub3JlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRvY3VtZW50Q2FyZFNwZWMgPSAodmFsdWU6IHVua25vd24pOiBjYXJkLkNhcmRTcGVjIHwgbnVsbCA9PiB7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSB8fCAhQXJyYXkuaXNBcnJheSh2YWx1ZS5ib2R5KSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgdGV4dHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGZhY3RzOiBjYXJkLkNhcmRGYWN0W10gPSBbXTtcbiAgY29uc3QgY29sbGVjdCA9IChlbGVtZW50czogdW5rbm93bltdKTogdm9pZCA9PiB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICBpZiAoIW9iamVjdC5pc1JlY29yZChlbGVtZW50KSkgY29udGludWU7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcIlRleHRCbG9ja1wiKSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBzdHJpbmcudHJpbVRvTnVsbCh0eXBlb2YgZWxlbWVudC50ZXh0ID09PSBcInN0cmluZ1wiID8gZWxlbWVudC50ZXh0IDogXCJcIik7XG4gICAgICAgIGlmICh0ZXh0KSB0ZXh0cy5wdXNoKHRleHQpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09IFwiRmFjdFNldFwiICYmIEFycmF5LmlzQXJyYXkoZWxlbWVudC5mYWN0cykpIHtcbiAgICAgICAgZm9yIChjb25zdCBmYWN0IG9mIGVsZW1lbnQuZmFjdHMpIHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBjYXJkLmNhcmRGYWN0U2NoZW1hLnNhZmVQYXJzZShmYWN0KTtcbiAgICAgICAgICBpZiAocGFyc2VkLnN1Y2Nlc3MpIGZhY3RzLnB1c2gocGFyc2VkLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBBIENvbnRhaW5lciAvIENvbHVtblNldCAvIENvbHVtbiBuZXN0cyB0aGUgYmxvY2tzIHRoYXQgbWF0dGVyLlxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgW1wiaXRlbXNcIiwgXCJjb2x1bW5zXCJdKSB7XG4gICAgICAgIGNvbnN0IG5lc3RlZCA9IGVsZW1lbnRba2V5XTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkKSkgY29sbGVjdChuZXN0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29sbGVjdCh2YWx1ZS5ib2R5KTtcblxuICBjb25zdCBhY3Rpb25zOiBjYXJkLkNhcmRBY3Rpb25bXSA9IFtdO1xuICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBBcnJheS5pc0FycmF5KHZhbHVlLmFjdGlvbnMpID8gdmFsdWUuYWN0aW9ucyA6IFtdKSB7XG4gICAgaWYgKCFvYmplY3QuaXNSZWNvcmQoYWN0aW9uKSkgY29udGludWU7XG4gICAgY29uc3QgcGFyc2VkID0gY2FyZC5jYXJkQWN0aW9uU2NoZW1hLnNhZmVQYXJzZSh7IHRpdGxlOiBhY3Rpb24udGl0bGUsIHVybDogYWN0aW9uLnVybCB9KTtcbiAgICBpZiAocGFyc2VkLnN1Y2Nlc3MpIGFjdGlvbnMucHVzaChwYXJzZWQuZGF0YSk7XG4gIH1cblxuICBjb25zdCBbdGl0bGUsIC4uLnJlc3RdID0gdGV4dHM7XG4gIGlmICghdGl0bGUpIHJldHVybiBudWxsO1xuICAvLyBUaGUgc2Vjb25kIGJsb2NrIGlzIGEgc3VidGl0bGUgb25seSB3aGVuIHRoZSBkb2N1bWVudCBzdHlsZWQgaXQgYXMgb25lO1xuICAvLyBvdGhlcndpc2UgaXQgaXMgYm9keSB0ZXh0IGFuZCBtdXN0IG5vdCBiZSBkZW1vdGVkIHRvIGEgc3ViaGVhZGluZy5cbiAgY29uc3Qgc2Vjb25kID0gb2JqZWN0LmlzUmVjb3JkKHZhbHVlLmJvZHlbMV0pID8gdmFsdWUuYm9keVsxXSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaGFzU3VidGl0bGUgPSByZXN0Lmxlbmd0aCA+IDAgJiYgc2Vjb25kPy5pc1N1YnRsZSA9PT0gdHJ1ZTtcbiAgY29uc3QgYm9keSA9IChoYXNTdWJ0aXRsZSA/IHJlc3Quc2xpY2UoMSkgOiByZXN0KS5qb2luKFwiXFxuXFxuXCIpO1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiB0b1RpdGxlKHRpdGxlKSxcbiAgICAuLi4oaGFzU3VidGl0bGUgJiYgcmVzdFswXSA/IHsgc3VidGl0bGU6IHJlc3RbMF0gfSA6IHt9KSxcbiAgICAuLi4oYm9keSA/IHsgdGV4dDogYm9keSB9IDoge30pLFxuICAgIC4uLihmYWN0cy5sZW5ndGggPiAwID8geyBmYWN0cyB9IDoge30pLFxuICAgIC4uLihhY3Rpb25zLmxlbmd0aCA+IDAgPyB7IGFjdGlvbnMgfSA6IHt9KSxcbiAgfTtcbn07XG5cbi8qKlxuICogVGhlIGNhcmQgdGhlIG1vZGVsIHByb2R1Y2VkLCB3aGVyZXZlciBpdCBlbmRlZCB1cC5cbiAqXG4gKiBgc3RydWN0dXJlZE91dHB1dGAgcmVqZWN0cyBhbnl0aGluZyBvZmYtc2NoZW1hIGJ5IFRIUk9XSU5HLCBhbmQgTWFzdHJhIHB1dHNcbiAqIHRoZSBvZmZlbmRpbmcgcGF5bG9hZCBvbiB0aGUgZXJyb3IgKGBkZXRhaWxzLnZhbHVlYCkgLSBzbyB0aGUgbW9kZWwncyByZWFsXG4gKiBhbnN3ZXIgaXMgcmVjb3ZlcmFibGUgZnJvbSBhIGZhaWxlZCBjYWxsLiBCb3RoIHRoZSBzcGVjIHNoYXBlIGFuZCBhIGZ1bGxcbiAqIEFkYXB0aXZlIENhcmQgZG9jdW1lbnQgYXJlIGFjY2VwdGVkLCBmcm9tIGFuIG9iamVjdCBvciBmcm9tIEpTT04gdGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlamVjdGVkQ2FyZFNwZWMgPSAoZXJyOiB1bmtub3duKTogY2FyZC5DYXJkU3BlYyB8IG51bGwgPT4ge1xuICBjb25zdCBkZXRhaWxzID0gb2JqZWN0LmlzUmVjb3JkKGVycikgPyBlcnIuZGV0YWlscyA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdmFsdWUgPSBvYmplY3QuaXNSZWNvcmQoZGV0YWlscykgPyBkZXRhaWxzLnZhbHVlIDogdW5kZWZpbmVkO1xuICBjb25zdCBjYW5kaWRhdGVzOiB1bmtub3duW10gPSBbXTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNhbmRpZGF0ZXMucHVzaChqc29uLnBhcnNlKHZhbHVlLCB1bmRlZmluZWQpKTtcbiAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2FuZGlkYXRlcy5wdXNoKHZhbHVlKTtcbiAgfVxuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgY29uc3Qgc3BlYyA9IGNhcmQuY2FyZFNwZWNTY2hlbWEuc2FmZVBhcnNlKGNhbmRpZGF0ZSk7XG4gICAgaWYgKHNwZWMuc3VjY2VzcykgcmV0dXJuIHNwZWMuZGF0YTtcbiAgICBjb25zdCBmcm9tRG9jdW1lbnQgPSBkb2N1bWVudENhcmRTcGVjKGNhbmRpZGF0ZSk7XG4gICAgaWYgKGZyb21Eb2N1bWVudCkgcmV0dXJuIGZyb21Eb2N1bWVudDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogVHVybiB3aGF0ZXZlciB0aGUgYWdlbnQgcHJvZHVjZWQgaW50byBhIGNhcmQgc3BlYy5cbiAqXG4gKiBgc3RydWN0dXJlZE91dHB1dGAgaXMgYmVzdC1lZmZvcnQgaW4gcHJhY3RpY2UsIG5vdCBhIGd1YXJhbnRlZS4gQmVjYXVzZSB0aGVcbiAqIHNjaGVtYSBpcyBwcm9tcHQtaW5qZWN0ZWQgKHNlZSB7QGxpbmsgSlNPTl9QUk9NUFRfSU5KRUNUSU9OfSkgcmF0aGVyIHRoYW5cbiAqIGVuZm9yY2VkIGJ5IHRoZSBwcm92aWRlciwgYSBtb2RlbCBjYW4gYW5zd2VyIHdpdGggcHJvc2UsIHdpdGggSlNPTiB3cmFwcGVkIGluXG4gKiBhIGBgYGAgYGBganNvbiBgYGBgIGZlbmNlLCBvciAtIG9uIERhdGFicmlja3MgTW9kZWwgU2VydmluZyAtIHdpdGggYW4gZW1wdHlcbiAqIHBhcnNlZCBvYmplY3Qgd2hpbGUgdGhlIHRleHQgY2FycmllcyB0aGUgcmVhbCBhbnN3ZXIuIE9ic2VydmVkIGZhaWx1cmUgcmF0ZSBvblxuICogdGhlIGRlbW8gZW5kcG9pbnQgd2FzIHJvdWdobHkgb25lIHR1cm4gaW4gdGhyZWUsIGFsbCBvZiB3aGljaCBzdXJmYWNlZCBhcyBhXG4gKiBoYXJkIGBTVFJVQ1RVUkVEX09VVFBVVF9TQ0hFTUFfVkFMSURBVElPTl9GQUlMRURgIGFuZCBubyByZXBseSBhdCBhbGwuXG4gKlxuICogQSBtaXNzaW5nIGNhcmQgaXMgbm90IHdvcnRoIGRyb3BwaW5nIHRoZSBhbnN3ZXIgb3Zlciwgc28gdGhpcyByZWNvdmVycyBpblxuICogZm91ciBzdGFnZXM6IHRoZSBwYXJzZWQgb2JqZWN0IHdoZW4gaXQgdmFsaWRhdGVzOyBlbHNlIHRoZSBhcmd1bWVudHMgdGhlIGFnZW50XG4gKiBwYXNzZWQgdG8gYGNyZWF0ZV90ZWFtc19jYXJkYCAob24gdGhlIHByb3NlIHJldHJ5IGFuIGFnZW50IGhvbGRpbmcgdGhhdCB0b29sXG4gKiB1c3VhbGx5IGNhbGxzIGl0LCB3aGljaCBpcyBhIFJFQUwgY2FyZCBzcGVjLCBub3QgYSBndWVzcyk7IGVsc2UgYSBKU09OIG9iamVjdFxuICogZW1iZWRkZWQgaW4gdGhlIHRleHQ7IGVsc2UgdGhlIHByb3NlIHdyYXBwZWQgaW4gYSBtaW5pbWFsIHRleHQtb25seSBjYXJkLiBUaGVcbiAqIHVzZXIgYWx3YXlzIGdldHMgdGhlIGFnZW50J3MgYW5zd2VyOyBhdCB3b3JzdCBpdCBpcyBsZXNzIHN0cnVjdHVyZWQuXG4gKi9cbmNvbnN0IHRvQ2FyZFNwZWMgPSAocmVzdWx0OiBBZ2VudFJlc3VsdCk6IGNhcmQuQ2FyZFNwZWMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBjYXJkLmNhcmRTcGVjU2NoZW1hLnNhZmVQYXJzZShyZXN1bHQub2JqZWN0KTtcbiAgaWYgKHBhcnNlZC5zdWNjZXNzKSByZXR1cm4gcGFyc2VkLmRhdGE7XG5cbiAgLy8gQSBtb2RlbCB0aGF0IGFuc3dlcmVkIHdpdGggdGhlIGZpbmlzaGVkIEFkYXB0aXZlIENhcmQgZG9jdW1lbnQgcmF0aGVyIHRoYW5cbiAgLy8gdGhlIHNwZWMgc3RpbGwgcHJvZHVjZWQgYSByZWFsIGNhcmQ7IHJlYWQgaXQgYmFjayBpbnRvIHRoZSBzcGVjIHZvY2FidWxhcnkuXG4gIGNvbnN0IGZyb21Eb2N1bWVudCA9IGRvY3VtZW50Q2FyZFNwZWMocmVzdWx0Lm9iamVjdCk7XG4gIGlmIChmcm9tRG9jdW1lbnQpIHJldHVybiBmcm9tRG9jdW1lbnQ7XG5cbiAgLy8gUHJlZmVyIGEgY2FyZCB0aGUgYWdlbnQgZXhwbGljaXRseSBjb21wb3NlZCB2aWEgdGhlIHRvb2wgb3ZlciBhbnl0aGluZ1xuICAvLyBzY3JhcGVkIG91dCBvZiBpdHMgcHJvc2UuXG4gIGNvbnN0IGZyb21Ub29sID0gdG9vbENhcmRTcGVjKHJlc3VsdCk7XG4gIGlmIChmcm9tVG9vbCkgcmV0dXJuIGZyb21Ub29sO1xuXG4gIGNvbnN0IHRleHQgPSBzdHJpbmcudHJpbVRvTnVsbChyZXN1bHQudGV4dCA/PyBcIlwiKTtcbiAgaWYgKHRleHQpIHtcbiAgICAvLyBBIGZlbmNlZCBvciBpbmxpbmUgSlNPTiBvYmplY3QgaW4gdGhlIHByb3NlOiB0aGUgbW9kZWwgZm9sbG93ZWQgdGhlXG4gICAgLy8gaW5zdHJ1Y3Rpb25zIGJ1dCB0aGUgcHJvdmlkZXIgZGlkIG5vdCBzdXJmYWNlIGEgcGFyc2VkIG9iamVjdC5cbiAgICBjb25zdCBlbWJlZGRlZCA9IHRleHQubWF0Y2goL1xce1tcXHNcXFNdKlxcfS8pO1xuICAgIGlmIChlbWJlZGRlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBqc29uLnBhcnNlKGVtYmVkZGVkWzBdLCB1bmRlZmluZWQpO1xuICAgICAgY29uc3QgcmV0cnkgPSBjYXJkLmNhcmRTcGVjU2NoZW1hLnNhZmVQYXJzZSh2YWx1ZSk7XG4gICAgICBpZiAocmV0cnkuc3VjY2VzcykgcmV0dXJuIHJldHJ5LmRhdGE7XG4gICAgICBjb25zdCBhc0RvY3VtZW50ID0gZG9jdW1lbnRDYXJkU3BlYyh2YWx1ZSk7XG4gICAgICBpZiAoYXNEb2N1bWVudCkgcmV0dXJuIGFzRG9jdW1lbnQ7XG4gICAgfVxuICAgIC8vIFByb3NlIG9ubHk6IGtlZXAgdGhlIGFuc3dlciwgZHJvcCB0aGUgc3RydWN0dXJlLiBUaGUgZmlyc3QgbGluZSBiZWNvbWVzXG4gICAgLy8gdGhlIHRpdGxlIChhIGNhcmQgd2l0aCBubyB0aXRsZSByZW5kZXJzIGFzIGFuIHVudGl0bGVkIGJsb2NrKSwgdGhlIHJlc3RcbiAgICAvLyBzdGF5cyBhcyB0aGUgYm9keS5cbiAgICBjb25zdCBsaW5lcyA9IHRleHRcbiAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgLmZpbHRlcigobGluZSkgPT4gbGluZS50cmltKCkubGVuZ3RoID4gMClcbiAgICAgIC8vIEEgbW9kZWwgaW50cm9kdWNpbmcgaXRzIG93biBhbnN3ZXIgKFwiSGVyZSBpcyB0aGUgQWRhcHRpdmUgQ2FyZDpcIikgd291bGRcbiAgICAgIC8vIG90aGVyd2lzZSBiZWNvbWUgdGhlIGNhcmQncyBoZWFkbGluZSwgd2hpY2ggcmVhZHMgYXMgYSBidWcuIERyb3AgdGhlXG4gICAgICAvLyBwcmVhbWJsZSBzbyB0aGUgZmlyc3QgUkVBTCBsaW5lIGlzIHRoZSB0aXRsZS5cbiAgICAgIC5maWx0ZXIoKGxpbmUpID0+ICFQUkVBTUJMRV9SRS50ZXN0KGxpbmUudHJpbSgpKSk7XG4gICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGxpbmVzO1xuICAgIGNvbnN0IHRpdGxlID0gc3RyaW5nLnRyaW1Ub051bGwoZmlyc3QgPz8gXCJcIikgPz8gXCJBbnN3ZXJcIjtcbiAgICBjb25zdCBib2R5ID0gcmVzdC5qb2luKFwiXFxuXCIpLnRyaW0oKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRvVGl0bGUodGl0bGUpLFxuICAgICAgLi4uKGJvZHkgPyB7IHRleHQ6IGJvZHkgfSA6IHRpdGxlLmxlbmd0aCA+IDEyMCA/IHsgdGV4dDogdGl0bGUgfSA6IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwidGVhbXM6IHRoZSBhZ2VudCByZXR1cm5lZCBuZWl0aGVyIGEgY2FyZCBub3IgYW55IHRleHQgdG8gZmFsbCBiYWNrIG9uXCIpO1xufTtcblxuLyoqXG4gKiBBIGxpbmUgdGhhdCBvbmx5IGFubm91bmNlcyB0aGUgY2FyZCByYXRoZXIgdGhhbiBzYXlpbmcgYW55dGhpbmcgLSBlLmcuXG4gKiBcIkhlcmUgaXMgdGhlIEFkYXB0aXZlIENhcmQ6XCIsIFwiSGVyZSdzIHlvdXIgVGVhbXMgY2FyZDpcIiwgXCJIZXJlIGFyZSB0aGUgY2FyZFxuICogZGV0YWlsczpcIi4gTWF0Y2hlZCBzbyBpdCBuZXZlciBiZWNvbWVzIHRoZSBjYXJkJ3MgdGl0bGUuXG4gKlxuICogQW5jaG9yZWQgdG8gYSBcImhlcmUgaXMvYXJlL2hlcmUncyAuLi4gY2FyZCAuLi5cIiBvcGVuZXIgdGhhdCBFTkRTIGluIGEgY29sb24sXG4gKiB3aGljaCBpcyB3aGF0IGtlZXBzIGl0IGZyb20gZWF0aW5nIGEgcmVhbCBzZW50ZW5jZSB0aGF0IG1lcmVseSBtZW50aW9ucyBhIGNhcmRcbiAqIChcIkhlcmUgaXMgdGhlIGNhcmQgcmVhZGVyIHN0YXR1czogb2ZmbGluZS5cIiBoYXMgdGV4dCBhZnRlciB0aGUgY29sb24pLlxuICovXG5jb25zdCBQUkVBTUJMRV9SRSA9IC9eKGhlcmUgKGlzfGFyZSl8aGVyZSdzKVxcYlteLiE/XSpcXGJjYXJkXFxiW14uIT86XSo6XFxzKiQvaTtcblxuLyoqXG4gKiBUcmltIGEgbGluZSBkb3duIHRvIHNvbWV0aGluZyB1c2FibGUgYXMgYSBjYXJkIHRpdGxlLiBBZGFwdGl2ZSBDYXJkIHRpdGxlcyBhcmVcbiAqIGEgc2luZ2xlIGJvbGQgbGluZSwgc28gYW4gb3Zlcmxvbmcgb25lIGlzIHRydW5jYXRlZCByYXRoZXIgdGhhbiB3cmFwcGVkOyB0aGVcbiAqIG1hcmtkb3duIGVtcGhhc2lzIGEgbW9kZWwgb2Z0ZW4gYWRkcyBpcyBzdHJpcHBlZCBzaW5jZSB0aGUgdGl0bGUgaXMgYWxyZWFkeVxuICogc3R5bGVkIGJvbGQuXG4gKi9cbmNvbnN0IHRvVGl0bGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHBsYWluID0gdmFsdWVcbiAgICAucmVwbGFjZSgvXiMrXFxzKi8sIFwiXCIpXG4gICAgLnJlcGxhY2UoL1xcKlxcKi9nLCBcIlwiKVxuICAgIC50cmltKCk7XG4gIHJldHVybiBwbGFpbi5sZW5ndGggPiAxMjAgPyBgJHtwbGFpbi5zbGljZSgwLCAxMTcpfS4uLmAgOiBwbGFpbjtcbn07XG5cbi8qKlxuICogQ29tcGlsZSBhbiBhbnN3ZXIgdGhlIGFnZW50IGhhcyBhbHJlYWR5IHByb2R1Y2VkIGludG8gYSBjYXJkIHNwZWMuXG4gKlxuICogQSBzZWNvbmQsIGRlbGliZXJhdGVseSBzdGF0ZWxlc3MgcGFzczogdGhlIGZvcm1hdHRpbmcgcmVxdWVzdCBpcyBOT1QgdGhyZWFkZWRcbiAqIG9udG8gYWdlbnQgbWVtb3J5LCBzbyB0aGUgY29udmVyc2F0aW9uIHRoZSB1c2VyIHNlZXMga2VlcHMgb25seSB0aGVpciBxdWVzdGlvblxuICogYW5kIHRoZSBhbnN3ZXIsIG5vdCB0aGUgcmVmb3JtYXR0aW5nIGNoYXR0ZXIgaW4gYmV0d2Vlbi5cbiAqXG4gKiBSZXR1cm5zIGBudWxsYCB3aGVuIHRoZSBwYXNzIGlzIHVudXNhYmxlIChNYXN0cmEgdGhyb3dzIHdoZW4gdGhlIG1vZGVsIHJldHVybnNcbiAqIG5vIHBhcnNlZCBvYmplY3QpIHNvIHRoZSBjYWxsZXIgY2FuIGZhbGwgYmFjayB0byB0aGUgYW5zd2VyIHRleHQgLSBhIGxlc3NcbiAqIHN0cnVjdHVyZWQgY2FyZCBjYXJyeWluZyB0aGUgcmVhbCBhbnN3ZXIgYmVhdHMgbG9zaW5nIHRoZSBhbnN3ZXIuXG4gKi9cbmNvbnN0IGZvcm1hdEFzQ2FyZCA9IGFzeW5jIChcbiAgYWdlbnQ6IENhcmRBZ2VudExpa2UsXG4gIHByb21wdDogc3RyaW5nLFxuICBhbnN3ZXI6IHN0cmluZyxcbiAgcmVxdWVzdDogeyBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsOyByZXF1ZXN0Q29udGV4dD86IHVua25vd24gfSxcbik6IFByb21pc2U8Y2FyZC5DYXJkU3BlYyB8IG51bGw+ID0+IHtcbiAgY29uc3QgYm9keSA9IFtcbiAgICBDQVJEX0ZPUk1BVF9JTlNUUlVDVElPTlMsXG4gICAgXCJcIixcbiAgICBgUXVlc3Rpb246ICR7cHJvbXB0fWAsXG4gICAgXCJcIixcbiAgICBcIkFzc2lzdGFudCBhbnN3ZXI6XCIsXG4gICAgYW5zd2VyLFxuICBdLmpvaW4oXCJcXG5cIik7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgc3RydWN0dXJlZE91dHB1dDoge1xuICAgICAgc2NoZW1hOiBjYXJkLmNhcmRTcGVjU2NoZW1hLFxuICAgICAganNvblByb21wdEluamVjdGlvbjogSlNPTl9QUk9NUFRfSU5KRUNUSU9OLFxuICAgIH0sXG4gICAgLi4ucmVxdWVzdCxcbiAgfTtcbiAgLy8gTWFzdHJhIFRIUk9XUyB3aGVuIHRoZSBtb2RlbCByZXR1cm5zIG5vIHBhcnNlZCBvYmplY3QsIGFuZCBiZWNhdXNlIHRoZVxuICAvLyBzY2hlbWEgaXMgcHJvbXB0LWluamVjdGVkIHJhdGhlciB0aGFuIHByb3ZpZGVyLWVuZm9yY2VkIHRoYXQgaGFwcGVuc1xuICAvLyBpbnRlcm1pdHRlbnRseSBvbiB0aGUgc2FtZSBpbnB1dC4gT25lIHJldHJ5IGNvbnZlcnRzIG1vc3Qgb2YgdGhvc2UgbWlzc2VzXG4gIC8vIGludG8gYSBwcm9wZXIgY2FyZDsgdGhlIGFuc3dlciBpcyBhbHJlYWR5IHNhZmUgZWl0aGVyIHdheS5cbiAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IGF0dGVtcHQgPCAyOyBhdHRlbXB0ICs9IDEpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRvQ2FyZFNwZWMoYXdhaXQgYWdlbnQuZ2VuZXJhdGUoYm9keSwgb3B0aW9ucykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gVGhlIHJlamVjdGVkIHBheWxvYWQgdXN1YWxseSBJUyB0aGUgY2FyZCAtIG1vc3Qgb2Z0ZW4gdGhlIGZ1bGwgQWRhcHRpdmVcbiAgICAgIC8vIENhcmQgZG9jdW1lbnQgcmF0aGVyIHRoYW4gdGhlIHNwZWMgLSBzbyBpdCBpcyBzYWx2YWdlZCBiZWZvcmUgcmV0cnlpbmcuXG4gICAgICBjb25zdCByZWplY3RlZCA9IHJlamVjdGVkQ2FyZFNwZWMoZXJyKTtcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJyZWNvdmVyZWQgdGhlIGNhcmQgZnJvbSB0aGUgcmVqZWN0ZWQgc3RydWN0dXJlZCBwYXlsb2FkXCIpO1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWQ7XG4gICAgICB9XG4gICAgICBsb2dnZXIud2FybihcImNhcmQgZm9ybWF0dGluZyBwYXNzIGZhaWxlZFwiLCB7XG4gICAgICAgIGF0dGVtcHQ6IGF0dGVtcHQgKyAxLFxuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbG9nZ2VyLndhcm4oXCJmYWxsaW5nIGJhY2sgdG8gdGhlIGFuc3dlciB0ZXh0IGZvciB0aGUgY2FyZFwiKTtcbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIFJ1biBvbmUgY29udmVyc2F0aW9uIHR1cm46IGRyaXZlIGBhZ2VudGAgd2l0aCB0aGUgaW5ib3VuZCBhY3Rpdml0eSdzIHRleHQgYW5kXG4gKiByZXR1cm4gdGhlIGFjdGl2aXRpZXMgdG8gYXBwZW5kIHRvIHRoZSB0cmFuc2NyaXB0LlxuICpcbiAqIFJldHVybnMgYW4gRU1QVFkgYXJyYXkgZm9yIGFuIGFjdGl2aXR5IHRoYXQgY2FycmllcyBubyBwcm9tcHQgKGEgdHlwaW5nXG4gKiBpbmRpY2F0b3IsIGEgam9pbiBldmVudCksIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBhIGJvdCBkb2VzIHdpdGggb25lIC0gdGhlXG4gKiByb3V0ZSBhbnN3ZXJzIGB7IGFjdGl2aXRpZXM6IFtdIH1gIGFuZCB0aGUgdHJhbnNjcmlwdCBpcyB1bmNoYW5nZWQuXG4gKlxuICogVHdvIGFnZW50IGNhbGxzLCBpbiB0aGlzIG9yZGVyOlxuICpcbiAqICAgMS4gdGhlIEFOU1dFUiAtIG5vIGBzdHJ1Y3R1cmVkT3V0cHV0YCwgc28gdGhlIGFnZW50J3MgdG9vbHMgYXJlIGF2YWlsYWJsZVxuICogICAgICBhbmQgdGhlIGNvbnRlbnQgbWF0Y2hlcyB3aGF0IHRoZSBzdHJlYW1pbmcgZW5kcG9pbnQgd291bGQgc2F5O1xuICogICAyLiB0aGUgRk9STUFUIC0ge0BsaW5rIGZvcm1hdEFzQ2FyZH0gY29tcGlsaW5nIHRoYXQgYW5zd2VyIGludG8gYSBjYXJkLlxuICpcbiAqIEV2ZXJ5IGZhaWx1cmUgbW9kZSBzdGlsbCB5aWVsZHMgdGhlIGFuc3dlcjogYSBjYXJkIHRoZSBhZ2VudCBjb21wb3NlZCB3aXRoXG4gKiBgY3JlYXRlX3RlYW1zX2NhcmRgIGR1cmluZyBwYXNzIDEgc2hvcnQtY2lyY3VpdHMgcGFzcyAyLCBhbmQgYSBmYWlsZWQgcGFzcyAyXG4gKiBmYWxscyBiYWNrIHRvIHtAbGluayB0b0NhcmRTcGVjfSBvdmVyIHRoZSBhbnN3ZXIgdGV4dC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJ1bkNhcmRUdXJuID0gYXN5bmMgKFxuICBhZ2VudDogQ2FyZEFnZW50TGlrZSxcbiAgaW5ib3VuZDogYWN0aXZpdHlDb250cmFjdC5BY3Rpdml0eSxcbiAgb3B0aW9uczogQ2FyZFR1cm5PcHRpb25zID0ge30sXG4pOiBQcm9taXNlPGFjdGl2aXR5Q29udHJhY3QuQWN0aXZpdHlbXT4gPT4ge1xuICBjb25zdCBwcm9tcHQgPSBwcm9tcHRPZihpbmJvdW5kKTtcbiAgaWYgKCFwcm9tcHQpIHJldHVybiBbXTtcblxuICBjb25zdCBjb252ZXJzYXRpb25JZCA9IGluYm91bmQuY29udmVyc2F0aW9uPy5pZDtcbiAgY29uc3QgdXNlcklkID0gaW5ib3VuZC5mcm9tPy5pZDtcbiAgY29uc3Qgc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgPyB7IGFib3J0U2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge307XG4gIC8vIFRoZSBBcHBLaXQgdXNlciByaWRlcyBvbiB0aGlzLCBzbyB0aGUgYWdlbnQncyB0b29scyAoR2VuaWUsIHNlcnZpbmcsIHRoZVxuICAvLyBtb2RlbCByZXNvbHZlcikgd29yayBleGFjdGx5IGFzIHRoZXkgZG8gb24gdGhlIGNoYXQgZW5kcG9pbnRzLiBCdWlsdCBvbmNlXG4gIC8vIGFuZCBzaGFyZWQgYnkgYm90aCBwYXNzZXMuXG4gIGNvbnN0IHJlcXVlc3RDb250ZXh0ID0gb3B0aW9ucy5jcmVhdGVSZXF1ZXN0Q29udGV4dFxuICAgID8gYXdhaXQgb3B0aW9ucy5jcmVhdGVSZXF1ZXN0Q29udGV4dCh7XG4gICAgICAgIC4uLihjb252ZXJzYXRpb25JZCA/IHsgdGhyZWFkSWQ6IGNvbnZlcnNhdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySWQgPyB7IHJlc291cmNlSWQ6IHVzZXJJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgY29udGV4dCA9IHJlcXVlc3RDb250ZXh0ID8geyByZXF1ZXN0Q29udGV4dCB9IDoge307XG4gIC8vIFRocmVhZCB0aGUgY29udmVyc2F0aW9uIG9udG8gYWdlbnQgbWVtb3J5IHNvIHRoZSBzYW1lIGBjb252ZXJzYXRpb24uaWRgXG4gIC8vIGNvbnRpbnVlcyBvbmUgY29udmVyc2F0aW9uLiBPbmx5IHBhc3NlZCB3aGVuIHRoZSBjbGllbnQgc3VwcGxpZWQgYm90aCBpZHMgLVxuICAvLyBNYXN0cmEgcmVxdWlyZXMgdGhlIHBhaXIsIGFuZCBhIG1lbW9yeS1sZXNzIGFnZW50IGlnbm9yZXMgaXQuXG4gIGNvbnN0IG1lbW9yeSA9XG4gICAgY29udmVyc2F0aW9uSWQgJiYgdXNlcklkID8geyBtZW1vcnk6IHsgdGhyZWFkOiBjb252ZXJzYXRpb25JZCwgcmVzb3VyY2U6IHVzZXJJZCB9IH0gOiB7fTtcblxuICBjb25zdCBhbnN3ZXJlZCA9IGF3YWl0IGFnZW50LmdlbmVyYXRlKGAke3Byb21wdH1cXG5cXG4ke0NBUkRfQU5TV0VSX0lOU1RSVUNUSU9OU31gLCB7XG4gICAgLi4ubWVtb3J5LFxuICAgIC4uLmNvbnRleHQsXG4gICAgLi4uc2lnbmFsLFxuICB9KTtcblxuICAvLyBBbiBhZ2VudCB0aGF0IGNvbXBvc2VkIGEgY2FyZCBpdHNlbGYgaGFzIGFscmVhZHkgc2FpZCBpdCBpbiB0aGUgcmlnaHRcbiAgLy8gdm9jYWJ1bGFyeTsgcmVmb3JtYXR0aW5nIGl0IHdvdWxkIG9ubHkgcmlzayBwYXJhcGhyYXNpbmcgdGhlIHZhbHVlcy5cbiAgY29uc3QgY29tcG9zZWQgPSB0b29sQ2FyZFNwZWMoYW5zd2VyZWQpO1xuICBjb25zdCBhbnN3ZXIgPSBzdHJpbmcudHJpbVRvTnVsbChzdHJpcEVtYmVkTWFya2VycyhhbnN3ZXJlZC50ZXh0ID8/IFwiXCIpKTtcbiAgY29uc3Qgc3BlYyA9XG4gICAgY29tcG9zZWQgPz9cbiAgICAoYW5zd2VyID8gYXdhaXQgZm9ybWF0QXNDYXJkKGFnZW50LCBwcm9tcHQsIGFuc3dlciwgeyAuLi5jb250ZXh0LCAuLi5zaWduYWwgfSkgOiBudWxsKTtcblxuICBjb25zdCBkb2N1bWVudCA9IGJ1aWxkQWRhcHRpdmVDYXJkKFxuICAgIHNwZWMgPz8gdG9DYXJkU3BlYyh7IC4uLmFuc3dlcmVkLCAuLi4oYW5zd2VyID8geyB0ZXh0OiBhbnN3ZXIgfSA6IHt9KSB9KSxcbiAgKTtcbiAgcmV0dXJuIFt0b1JlcGx5QWN0aXZpdHkoaW5ib3VuZCwgW2RvY3VtZW50XSwgeyAuLi4ob3B0aW9ucy5ib3QgPyB7IGJvdDogb3B0aW9ucy5ib3QgfSA6IHt9KSB9KV07XG59O1xuIl19
@@ -24,7 +24,7 @@
24
24
  * @module
25
25
  */
26
26
  import { activity as activityContract } from "@dbx-tools/shared-teams";
27
- import { type CardAgentLike, type CardContextFactory } from "./conversation.js";
27
+ import { type CardAgentLike, type CardContextFactory } from "./conversation.ts";
28
28
  /** Resolved bot credentials a delivered turn needs. */
29
29
  export interface BotCredentials {
30
30
  /** Entra app (client) id of the bot registration. */
@@ -111,4 +111,4 @@ export const deliverTurn = async (options) => {
111
111
  }
112
112
  }
113
113
  };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQStDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTdDOzs7Ozs7R0FNRztBQUNILE1BQU0sWUFBWSxHQUFHLHdFQUF3RSxDQUFDO0FBbUM5Rjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUMvQixRQUFtQyxFQUNuQyxlQUF3QixFQUNULEVBQUU7SUFDakIsTUFBTSxHQUFHLEdBQUksUUFBcUMsQ0FBQyxVQUFVLENBQUM7SUFDOUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RCxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzVCLE9BQU8sbUJBQW1CLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLE9BQTJCLEVBQWlCLEVBQUU7SUFDOUUs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QUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFBQyxPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUU7Z0JBQzFELEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQzthQUNuQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIFRlYW1zIG1lc3NhZ2luZyBlbmRwb2ludCdzIHR1cm46IHdoYXQgaGFwcGVucyBiZXR3ZWVuIEF6dXJlIEJvdCBTZXJ2aWNlXG4gKiBQT1NUaW5nIGFuIGFjdGl2aXR5IGFuZCBhIGNhcmQgYXBwZWFyaW5nIGluIHRoZSBjaGFubmVsLlxuICpcbiAqIFNwbGl0IG91dCBmcm9tIGBjb252ZXJzYXRpb24udHNgIGJlY2F1c2UgdGhlIHR3byBjYWxsZXJzIGhhdmUgZ2VudWluZWx5XG4gKiBkaWZmZXJlbnQgY29udHJhY3RzLiBgY29udmVyc2F0aW9uLnRzYCBydW5zIGEgdHVybiBhbmQgUkVUVVJOUyB0aGUgcmVwbHksIHdoaWNoXG4gKiBpcyB3aGF0IGEgZGlyZWN0IEhUVFAgY2FsbGVyIChvciB0aGUgaW4tcmVwbyBwcmV2aWV3IFVJKSB3YW50cy4gQSByZWFsIGNoYW5uZWxcbiAqIGNhbm5vdCB3b3JrIHRoYXQgd2F5OiBCb3QgU2VydmljZSBpZ25vcmVzIHRoZSByZXNwb25zZSBib2R5IGFuZCBleHBlY3RzIGEgZmFzdFxuICogYDIwMGAsIHNvIHRoaXMgbW9kdWxlIGFja25vd2xlZGdlcyBmaXJzdCBhbmQgZGVsaXZlcnMgdGhlIHJlcGx5IG91dC1vZi1iYW5kXG4gKiB0aHJvdWdoIHRoZSBDb25uZWN0b3IgQVBJLlxuICpcbiAqIFRoZSBzZXF1ZW5jZSBmb3IgYSBgbWVzc2FnZWAgYWN0aXZpdHk6XG4gKlxuICogICAxLiB2YWxpZGF0ZSB0aGUgaW5ib3VuZCBKV1QgYW5kIHBpbiB0aGUgcmVwbHkgZGVzdGluYXRpb24gdG8gdGhlXG4gKiAgICAgIHRva2VuJ3MgYHNlcnZpY2VVcmxgIChzZWUgYGF1dGgudHNgKTtcbiAqICAgMi4gcmV0dXJuIGAyMDBgIGltbWVkaWF0ZWx5IC0gQm90IFNlcnZpY2UgcmV0cmllcyBhbiBhY3Rpdml0eSBpdCB0aGlua3NcbiAqICAgICAgdGltZWQgb3V0LCBhbmQgYSBkdXBsaWNhdGUgdHVybiBtZWFucyBhIGR1cGxpY2F0ZSBjYXJkO1xuICogICAzLiBzaG93IHRoZSB0eXBpbmcgaW5kaWNhdG9yLCBydW4gdGhlIGFnZW50LCBhbmQgUE9TVCB0aGUgY2FyZCBiYWNrLlxuICpcbiAqIFN0ZXAgMiBpcyB3aHkgdGhpcyBpcyBmaXJlLWFuZC1mb3JnZXQgcmF0aGVyIHRoYW4gYXdhaXRlZDogYSBjYXJkLXByb2R1Y2luZ1xuICogYWdlbnQgdHVybiB0YWtlcyBzZWNvbmRzIHRvIHRlbnMgb2Ygc2Vjb25kcywgZmFyIGxvbmdlciB0aGFuIHRoZSB+MTVzIEJvdFxuICogU2VydmljZSBhbGxvd3MgYSBib3QgdG8gYWNrbm93bGVkZ2UuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGVycm9yLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgYWN0aXZpdHkgYXMgYWN0aXZpdHlDb250cmFjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC10ZWFtc1wiO1xuaW1wb3J0IHsgY29ubmVjdG9yVG9rZW4sIGlzQWxsb3dlZFNlcnZpY2VVcmwgfSBmcm9tIFwiLi9hdXRoXCI7XG5pbXBvcnQgeyBzZW5kQWN0aXZpdHksIHNlbmRUeXBpbmcgfSBmcm9tIFwiLi9jb25uZWN0b3JcIjtcbmltcG9ydCB7IHJ1bkNhcmRUdXJuLCB0eXBlIENhcmRBZ2VudExpa2UsIHR5cGUgQ2FyZENvbnRleHRGYWN0b3J5IH0gZnJvbSBcIi4vY29udmVyc2F0aW9uXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtczptZXNzYWdpbmdcIik7XG5cbi8qKlxuICogTWVzc2FnZSBzaG93biBpbiB0aGUgY2hhbm5lbCB3aGVuIGEgdHVybiBmYWlscy5cbiAqXG4gKiBBIGJvdCB0aGF0IHNpbGVudGx5IGRyb3BzIGEgZmFpbGVkIHR1cm4gbG9va3MgYnJva2VuIC0gdGhlIHVzZXIgc2VlcyB0aGVpclxuICogbWVzc2FnZSBsYW5kIGFuZCBub3RoaW5nIGNvbWUgYmFjaywgZm9yZXZlci4gQSBzaG9ydCBhcG9sb2d5IGlzIHBvc3RlZCBpbnN0ZWFkXG4gKiBzbyB0aGUgY29udmVyc2F0aW9uIHN0YXlzIGxlZ2libGU7IHRoZSByZWFsIGVycm9yIGdvZXMgdG8gdGhlIGxvZ3MuXG4gKi9cbmNvbnN0IEZBSUxVUkVfVEVYVCA9IFwiU29ycnkgLSBJIGNvdWxkIG5vdCBwdXQgdG9nZXRoZXIgYW4gYW5zd2VyIGZvciB0aGF0LiBQbGVhc2UgdHJ5IGFnYWluLlwiO1xuXG4vKiogUmVzb2x2ZWQgYm90IGNyZWRlbnRpYWxzIGEgZGVsaXZlcmVkIHR1cm4gbmVlZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdENyZWRlbnRpYWxzIHtcbiAgLyoqIEVudHJhIGFwcCAoY2xpZW50KSBpZCBvZiB0aGUgYm90IHJlZ2lzdHJhdGlvbi4gKi9cbiAgYXBwSWQ6IHN0cmluZztcbiAgLyoqIENsaWVudCBzZWNyZXQgZm9yIHtAbGluayBhcHBJZH0uICovXG4gIGFwcFBhc3N3b3JkOiBzdHJpbmc7XG4gIC8qKiBUZW5hbnQgaWQgZm9yIGEgc2luZ2xlLXRlbmFudCBib3QuICovXG4gIGFwcFRlbmFudElkPzogc3RyaW5nO1xufVxuXG4vKiogRXZlcnl0aGluZyB7QGxpbmsgZGVsaXZlclR1cm59IG5lZWRzIHRvIGFuc3dlciBvbmUgaW5ib3VuZCBhY3Rpdml0eS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlclR1cm5PcHRpb25zIHtcbiAgLyoqIFRoZSBhZ2VudCB0aGF0IGNvbXBvc2VzIHRoZSBjYXJkLiAqL1xuICBhZ2VudDogQ2FyZEFnZW50TGlrZTtcbiAgLyoqIFRoZSB2YWxpZGF0ZWQgaW5ib3VuZCBhY3Rpdml0eS4gKi9cbiAgYWN0aXZpdHk6IGFjdGl2aXR5Q29udHJhY3QuQWN0aXZpdHk7XG4gIC8qKiBCb3QgY3JlZGVudGlhbHMgdXNlZCB0byBmZXRjaCB0aGUgb3V0Ym91bmQgQ29ubmVjdG9yIHRva2VuLiAqL1xuICBjcmVkZW50aWFsczogQm90Q3JlZGVudGlhbHM7XG4gIC8qKlxuICAgKiBSZXBseSBkZXN0aW5hdGlvbiwgYWxyZWFkeSB2YWxpZGF0ZWQgYWdhaW5zdCB0aGUgaW5ib3VuZCB0b2tlbi4gUGFzc2luZyB0aGlzXG4gICAqIGV4cGxpY2l0bHkgKHJhdGhlciB0aGFuIHJlYWRpbmcgYGFjdGl2aXR5LnNlcnZpY2VVcmxgKSBrZWVwcyB0aGUgc2VjdXJpdHlcbiAgICogZGVjaXNpb24gaW4gdGhlIGNhbGxlciwgd2hlcmUgdGhlIHRva2VuIGlzIGluIHNjb3BlLlxuICAgKi9cbiAgc2VydmljZVVybDogc3RyaW5nO1xuICAvKipcbiAgICogQnVpbGRzIHRoZSBhZ2VudCdzIHBlci10dXJuIHJlcXVlc3QgY29udGV4dCwgc28gdGhlIGRlbGl2ZXJlZCB0dXJuIGhhcyB0aGVcbiAgICogc2FtZSB0b29sIHJlYWNoIChHZW5pZSBhbmQgZXZlcnkgb3RoZXIgdXNlci1zY29wZWQgdG9vbCkgYXMgYSBjaGF0IHR1cm4uXG4gICAqL1xuICBjcmVhdGVSZXF1ZXN0Q29udGV4dD86IENhcmRDb250ZXh0RmFjdG9yeTtcbiAgLyoqIENhbmNlbHMgdGhlIHR1cm4gKHByb2Nlc3Mgc2h1dGRvd24sIG9yIGEgdGVzdCB0ZWFyaW5nIGRvd24pLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSByZXBseSBkZXN0aW5hdGlvbiBvZmYgYW4gaW5ib3VuZCBhY3Rpdml0eSwgaWYgaXQgbmFtZXMgYSB1c2FibGUgb25lLlxuICpcbiAqIGBzZXJ2aWNlVXJsYCByaWRlcyBvbiB0aGUgYWN0aXZpdHkgYXMgYSBwbGFpbiBzdHJpbmcsIHNvIGl0IGlzIHZhbGlkYXRlZFxuICogYWdhaW5zdCB0aGUgdmVyaWZpZWQgdG9rZW4ncyBvd24gYHNlcnZpY2V1cmxgIGNsYWltIGJlZm9yZSBhbnl0aGluZ1xuICogYXV0aGVudGljYXRlZCBpcyBzZW50IHRoZXJlLlxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZVNlcnZpY2VVcmwgPSAoXG4gIGFjdGl2aXR5OiBhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5LFxuICB0b2tlblNlcnZpY2VVcmw/OiBzdHJpbmcsXG4pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgcmF3ID0gKGFjdGl2aXR5IGFzIHsgc2VydmljZVVybD86IHVua25vd24gfSkuc2VydmljZVVybDtcbiAgY29uc3QgY2FuZGlkYXRlID0gdHlwZW9mIHJhdyA9PT0gXCJzdHJpbmdcIiA/IHJhdy50cmltKCkgOiBcIlwiO1xuICBpZiAoIWNhbmRpZGF0ZSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBpc0FsbG93ZWRTZXJ2aWNlVXJsKGNhbmRpZGF0ZSwgdG9rZW5TZXJ2aWNlVXJsKSA/IGNhbmRpZGF0ZSA6IG51bGw7XG59O1xuXG4vKipcbiAqIFJ1biBvbmUgdHVybiBhbmQgZGVsaXZlciB0aGUgY2FyZCBiYWNrIHRocm91Z2ggdGhlIENvbm5lY3RvciBBUEkuXG4gKlxuICogQXdhaXRlZCBieSBub2JvZHkgb24gdGhlIHJlcXVlc3QgcGF0aCAodGhlIHJvdXRlIGhhcyBhbHJlYWR5IGFuc3dlcmVkIGAyMDBgKSxcbiAqIHNvIHRoaXMgb3ducyBpdHMgb3duIGVycm9yIGhhbmRsaW5nOiBhIGZhaWx1cmUgcG9zdHMge0BsaW5rIEZBSUxVUkVfVEVYVH0gdG9cbiAqIHRoZSBjaGFubmVsIGFuZCBpcyBsb2dnZWQsIG5ldmVyIHJldGhyb3duIGludG8gYW4gdW5oYW5kbGVkIHJlamVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlbGl2ZXJUdXJuID0gYXN5bmMgKG9wdGlvbnM6IERlbGl2ZXJUdXJuT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IGFnZW50LCBhY3Rpdml0eSwgY3JlZGVudGlhbHMsIHNlcnZpY2VVcmwgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbklkID0gYWN0aXZpdHkuY29udmVyc2F0aW9uPy5pZDtcbiAgaWYgKCFjb252ZXJzYXRpb25JZCkge1xuICAgIGxvZ2dlci53YXJuKFwiZHJvcHBpbmcgYWN0aXZpdHkgd2l0aCBubyBjb252ZXJzYXRpb24gaWRcIik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgYmFzZSA9IHtcbiAgICBzZXJ2aWNlVXJsLFxuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIC4uLihhY3Rpdml0eS5pZCA/IHsgcmVwbHlUb0lkOiBhY3Rpdml0eS5pZCB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLnNpZ25hbCA/IHsgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge30pLFxuICB9O1xuXG4gIGxldCB0b2tlbjogc3RyaW5nO1xuICB0cnkge1xuICAgIHRva2VuID0gYXdhaXQgY29ubmVjdG9yVG9rZW4oe1xuICAgICAgYXBwSWQ6IGNyZWRlbnRpYWxzLmFwcElkLFxuICAgICAgYXBwUGFzc3dvcmQ6IGNyZWRlbnRpYWxzLmFwcFBhc3N3b3JkLFxuICAgICAgLi4uKGNyZWRlbnRpYWxzLmFwcFRlbmFudElkID8geyBhcHBUZW5hbnRJZDogY3JlZGVudGlhbHMuYXBwVGVuYW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihvcHRpb25zLnNpZ25hbCA/IHsgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge30pLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBObyB0b2tlbiBtZWFucyBub3RoaW5nIGNhbiBiZSBkZWxpdmVyZWQgLSBub3QgZXZlbiB0aGUgYXBvbG9neSAtIHNvIHRoaXNcbiAgICAvLyBpcyB0aGUgb25lIGZhaWx1cmUgdGhhdCBjYW4gb25seSBiZSBsb2dnZWQuXG4gICAgbG9nZ2VyLmVycm9yKFwiY291bGQgbm90IG9idGFpbiBhIGNvbm5lY3RvciB0b2tlblwiLCB7IGVycm9yOiBlcnJvci5lcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB0YXJnZXQgPSB7IC4uLmJhc2UsIHRva2VuIH07XG4gIGF3YWl0IHNlbmRUeXBpbmcodGFyZ2V0KTtcblxuICB0cnkge1xuICAgIGNvbnN0IGFjdGl2aXRpZXMgPSBhd2FpdCBydW5DYXJkVHVybihhZ2VudCwgYWN0aXZpdHksIHtcbiAgICAgIC4uLihvcHRpb25zLmNyZWF0ZVJlcXVlc3RDb250ZXh0XG4gICAgICAgID8geyBjcmVhdGVSZXF1ZXN0Q29udGV4dDogb3B0aW9ucy5jcmVhdGVSZXF1ZXN0Q29udGV4dCB9XG4gICAgICAgIDoge30pLFxuICAgICAgLi4uKG9wdGlvbnMuc2lnbmFsID8geyBzaWduYWw6IG9wdGlvbnMuc2lnbmFsIH0gOiB7fSksXG4gICAgfSk7XG4gICAgZm9yIChjb25zdCByZXBseSBvZiBhY3Rpdml0aWVzKSB7XG4gICAgICBhd2FpdCBzZW5kQWN0aXZpdHkocmVwbHksIHRhcmdldCk7XG4gICAgfVxuICAgIGxvZ2dlci5pbmZvKFwidHVybiBkZWxpdmVyZWRcIiwgeyBjb252ZXJzYXRpb246IGNvbnZlcnNhdGlvbklkLCByZXBsaWVzOiBhY3Rpdml0aWVzLmxlbmd0aCB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKFwidHVybiBmYWlsZWRcIiwgeyBjb252ZXJzYXRpb246IGNvbnZlcnNhdGlvbklkLCBlcnJvcjogZXJyb3IuZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNlbmRBY3Rpdml0eSh7IHR5cGU6IFwibWVzc2FnZVwiLCB0ZXh0OiBGQUlMVVJFX1RFWFQgfSwgdGFyZ2V0KTtcbiAgICB9IGNhdGNoIChwb3N0RXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXCJjb3VsZCBub3QgcmVwb3J0IHRoZSBmYWlsdXJlIHRvIHRoZSBjaGFubmVsXCIsIHtcbiAgICAgICAgZXJyb3I6IGVycm9yLmVycm9yTWVzc2FnZShwb3N0RXJyKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcbiJdfQ==
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lc3NhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBK0MsTUFBTSxtQkFBbUIsQ0FBQztBQUU3RixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFN0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxZQUFZLEdBQUcsd0VBQXdFLENBQUM7QUFtQzlGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLFFBQW1DLEVBQ25DLGVBQXdCLEVBQ1QsRUFBRTtJQUNqQixNQUFNLEdBQUcsR0FBSSxRQUFxQyxDQUFDLFVBQVUsQ0FBQztJQUM5RCxNQUFNLFNBQVMsR0FBRyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVELElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUIsT0FBTyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzVFLENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsT0FBMkIsRUFBaUIsRUFBRTtJQUM5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SUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUFDLE9BQU8sT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsRUFBRTtnQkFDMUQsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO2FBQ25DLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgVGVhbXMgbWVzc2FnaW5nIGVuZHBvaW50J3MgdHVybjogd2hhdCBoYXBwZW5zIGJldHdlZW4gQXp1cmUgQm90IFNlcnZpY2VcbiAqIFBPU1RpbmcgYW4gYWN0aXZpdHkgYW5kIGEgY2FyZCBhcHBlYXJpbmcgaW4gdGhlIGNoYW5uZWwuXG4gKlxuICogU3BsaXQgb3V0IGZyb20gYGNvbnZlcnNhdGlvbi50c2AgYmVjYXVzZSB0aGUgdHdvIGNhbGxlcnMgaGF2ZSBnZW51aW5lbHlcbiAqIGRpZmZlcmVudCBjb250cmFjdHMuIGBjb252ZXJzYXRpb24udHNgIHJ1bnMgYSB0dXJuIGFuZCBSRVRVUk5TIHRoZSByZXBseSwgd2hpY2hcbiAqIGlzIHdoYXQgYSBkaXJlY3QgSFRUUCBjYWxsZXIgKG9yIHRoZSBpbi1yZXBvIHByZXZpZXcgVUkpIHdhbnRzLiBBIHJlYWwgY2hhbm5lbFxuICogY2Fubm90IHdvcmsgdGhhdCB3YXk6IEJvdCBTZXJ2aWNlIGlnbm9yZXMgdGhlIHJlc3BvbnNlIGJvZHkgYW5kIGV4cGVjdHMgYSBmYXN0XG4gKiBgMjAwYCwgc28gdGhpcyBtb2R1bGUgYWNrbm93bGVkZ2VzIGZpcnN0IGFuZCBkZWxpdmVycyB0aGUgcmVwbHkgb3V0LW9mLWJhbmRcbiAqIHRocm91Z2ggdGhlIENvbm5lY3RvciBBUEkuXG4gKlxuICogVGhlIHNlcXVlbmNlIGZvciBhIGBtZXNzYWdlYCBhY3Rpdml0eTpcbiAqXG4gKiAgIDEuIHZhbGlkYXRlIHRoZSBpbmJvdW5kIEpXVCBhbmQgcGluIHRoZSByZXBseSBkZXN0aW5hdGlvbiB0byB0aGVcbiAqICAgICAgdG9rZW4ncyBgc2VydmljZVVybGAgKHNlZSBgYXV0aC50c2ApO1xuICogICAyLiByZXR1cm4gYDIwMGAgaW1tZWRpYXRlbHkgLSBCb3QgU2VydmljZSByZXRyaWVzIGFuIGFjdGl2aXR5IGl0IHRoaW5rc1xuICogICAgICB0aW1lZCBvdXQsIGFuZCBhIGR1cGxpY2F0ZSB0dXJuIG1lYW5zIGEgZHVwbGljYXRlIGNhcmQ7XG4gKiAgIDMuIHNob3cgdGhlIHR5cGluZyBpbmRpY2F0b3IsIHJ1biB0aGUgYWdlbnQsIGFuZCBQT1NUIHRoZSBjYXJkIGJhY2suXG4gKlxuICogU3RlcCAyIGlzIHdoeSB0aGlzIGlzIGZpcmUtYW5kLWZvcmdldCByYXRoZXIgdGhhbiBhd2FpdGVkOiBhIGNhcmQtcHJvZHVjaW5nXG4gKiBhZ2VudCB0dXJuIHRha2VzIHNlY29uZHMgdG8gdGVucyBvZiBzZWNvbmRzLCBmYXIgbG9uZ2VyIHRoYW4gdGhlIH4xNXMgQm90XG4gKiBTZXJ2aWNlIGFsbG93cyBhIGJvdCB0byBhY2tub3dsZWRnZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZXJyb3IsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBhY3Rpdml0eSBhcyBhY3Rpdml0eUNvbnRyYWN0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLXRlYW1zXCI7XG5pbXBvcnQgeyBjb25uZWN0b3JUb2tlbiwgaXNBbGxvd2VkU2VydmljZVVybCB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IHNlbmRBY3Rpdml0eSwgc2VuZFR5cGluZyB9IGZyb20gXCIuL2Nvbm5lY3Rvci50c1wiO1xuaW1wb3J0IHsgcnVuQ2FyZFR1cm4sIHR5cGUgQ2FyZEFnZW50TGlrZSwgdHlwZSBDYXJkQ29udGV4dEZhY3RvcnkgfSBmcm9tIFwiLi9jb252ZXJzYXRpb24udHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInRlYW1zOm1lc3NhZ2luZ1wiKTtcblxuLyoqXG4gKiBNZXNzYWdlIHNob3duIGluIHRoZSBjaGFubmVsIHdoZW4gYSB0dXJuIGZhaWxzLlxuICpcbiAqIEEgYm90IHRoYXQgc2lsZW50bHkgZHJvcHMgYSBmYWlsZWQgdHVybiBsb29rcyBicm9rZW4gLSB0aGUgdXNlciBzZWVzIHRoZWlyXG4gKiBtZXNzYWdlIGxhbmQgYW5kIG5vdGhpbmcgY29tZSBiYWNrLCBmb3JldmVyLiBBIHNob3J0IGFwb2xvZ3kgaXMgcG9zdGVkIGluc3RlYWRcbiAqIHNvIHRoZSBjb252ZXJzYXRpb24gc3RheXMgbGVnaWJsZTsgdGhlIHJlYWwgZXJyb3IgZ29lcyB0byB0aGUgbG9ncy5cbiAqL1xuY29uc3QgRkFJTFVSRV9URVhUID0gXCJTb3JyeSAtIEkgY291bGQgbm90IHB1dCB0b2dldGhlciBhbiBhbnN3ZXIgZm9yIHRoYXQuIFBsZWFzZSB0cnkgYWdhaW4uXCI7XG5cbi8qKiBSZXNvbHZlZCBib3QgY3JlZGVudGlhbHMgYSBkZWxpdmVyZWQgdHVybiBuZWVkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90Q3JlZGVudGlhbHMge1xuICAvKiogRW50cmEgYXBwIChjbGllbnQpIGlkIG9mIHRoZSBib3QgcmVnaXN0cmF0aW9uLiAqL1xuICBhcHBJZDogc3RyaW5nO1xuICAvKiogQ2xpZW50IHNlY3JldCBmb3Ige0BsaW5rIGFwcElkfS4gKi9cbiAgYXBwUGFzc3dvcmQ6IHN0cmluZztcbiAgLyoqIFRlbmFudCBpZCBmb3IgYSBzaW5nbGUtdGVuYW50IGJvdC4gKi9cbiAgYXBwVGVuYW50SWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBFdmVyeXRoaW5nIHtAbGluayBkZWxpdmVyVHVybn0gbmVlZHMgdG8gYW5zd2VyIG9uZSBpbmJvdW5kIGFjdGl2aXR5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxpdmVyVHVybk9wdGlvbnMge1xuICAvKiogVGhlIGFnZW50IHRoYXQgY29tcG9zZXMgdGhlIGNhcmQuICovXG4gIGFnZW50OiBDYXJkQWdlbnRMaWtlO1xuICAvKiogVGhlIHZhbGlkYXRlZCBpbmJvdW5kIGFjdGl2aXR5LiAqL1xuICBhY3Rpdml0eTogYWN0aXZpdHlDb250cmFjdC5BY3Rpdml0eTtcbiAgLyoqIEJvdCBjcmVkZW50aWFscyB1c2VkIHRvIGZldGNoIHRoZSBvdXRib3VuZCBDb25uZWN0b3IgdG9rZW4uICovXG4gIGNyZWRlbnRpYWxzOiBCb3RDcmVkZW50aWFscztcbiAgLyoqXG4gICAqIFJlcGx5IGRlc3RpbmF0aW9uLCBhbHJlYWR5IHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBpbmJvdW5kIHRva2VuLiBQYXNzaW5nIHRoaXNcbiAgICogZXhwbGljaXRseSAocmF0aGVyIHRoYW4gcmVhZGluZyBgYWN0aXZpdHkuc2VydmljZVVybGApIGtlZXBzIHRoZSBzZWN1cml0eVxuICAgKiBkZWNpc2lvbiBpbiB0aGUgY2FsbGVyLCB3aGVyZSB0aGUgdG9rZW4gaXMgaW4gc2NvcGUuXG4gICAqL1xuICBzZXJ2aWNlVXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGFnZW50J3MgcGVyLXR1cm4gcmVxdWVzdCBjb250ZXh0LCBzbyB0aGUgZGVsaXZlcmVkIHR1cm4gaGFzIHRoZVxuICAgKiBzYW1lIHRvb2wgcmVhY2ggKEdlbmllIGFuZCBldmVyeSBvdGhlciB1c2VyLXNjb3BlZCB0b29sKSBhcyBhIGNoYXQgdHVybi5cbiAgICovXG4gIGNyZWF0ZVJlcXVlc3RDb250ZXh0PzogQ2FyZENvbnRleHRGYWN0b3J5O1xuICAvKiogQ2FuY2VscyB0aGUgdHVybiAocHJvY2VzcyBzaHV0ZG93biwgb3IgYSB0ZXN0IHRlYXJpbmcgZG93bikuICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIFJlYWQgdGhlIHJlcGx5IGRlc3RpbmF0aW9uIG9mZiBhbiBpbmJvdW5kIGFjdGl2aXR5LCBpZiBpdCBuYW1lcyBhIHVzYWJsZSBvbmUuXG4gKlxuICogYHNlcnZpY2VVcmxgIHJpZGVzIG9uIHRoZSBhY3Rpdml0eSBhcyBhIHBsYWluIHN0cmluZywgc28gaXQgaXMgdmFsaWRhdGVkXG4gKiBhZ2FpbnN0IHRoZSB2ZXJpZmllZCB0b2tlbidzIG93biBgc2VydmljZXVybGAgY2xhaW0gYmVmb3JlIGFueXRoaW5nXG4gKiBhdXRoZW50aWNhdGVkIGlzIHNlbnQgdGhlcmUuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlU2VydmljZVVybCA9IChcbiAgYWN0aXZpdHk6IGFjdGl2aXR5Q29udHJhY3QuQWN0aXZpdHksXG4gIHRva2VuU2VydmljZVVybD86IHN0cmluZyxcbik6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCByYXcgPSAoYWN0aXZpdHkgYXMgeyBzZXJ2aWNlVXJsPzogdW5rbm93biB9KS5zZXJ2aWNlVXJsO1xuICBjb25zdCBjYW5kaWRhdGUgPSB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiID8gcmF3LnRyaW0oKSA6IFwiXCI7XG4gIGlmICghY2FuZGlkYXRlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGlzQWxsb3dlZFNlcnZpY2VVcmwoY2FuZGlkYXRlLCB0b2tlblNlcnZpY2VVcmwpID8gY2FuZGlkYXRlIDogbnVsbDtcbn07XG5cbi8qKlxuICogUnVuIG9uZSB0dXJuIGFuZCBkZWxpdmVyIHRoZSBjYXJkIGJhY2sgdGhyb3VnaCB0aGUgQ29ubmVjdG9yIEFQSS5cbiAqXG4gKiBBd2FpdGVkIGJ5IG5vYm9keSBvbiB0aGUgcmVxdWVzdCBwYXRoICh0aGUgcm91dGUgaGFzIGFscmVhZHkgYW5zd2VyZWQgYDIwMGApLFxuICogc28gdGhpcyBvd25zIGl0cyBvd24gZXJyb3IgaGFuZGxpbmc6IGEgZmFpbHVyZSBwb3N0cyB7QGxpbmsgRkFJTFVSRV9URVhUfSB0b1xuICogdGhlIGNoYW5uZWwgYW5kIGlzIGxvZ2dlZCwgbmV2ZXIgcmV0aHJvd24gaW50byBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZGVsaXZlclR1cm4gPSBhc3luYyAob3B0aW9uczogRGVsaXZlclR1cm5PcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHsgYWdlbnQsIGFjdGl2aXR5LCBjcmVkZW50aWFscywgc2VydmljZVVybCB9ID0gb3B0aW9ucztcbiAgY29uc3QgY29udmVyc2F0aW9uSWQgPSBhY3Rpdml0eS5jb252ZXJzYXRpb24/LmlkO1xuICBpZiAoIWNvbnZlcnNhdGlvbklkKSB7XG4gICAgbG9nZ2VyLndhcm4oXCJkcm9wcGluZyBhY3Rpdml0eSB3aXRoIG5vIGNvbnZlcnNhdGlvbiBpZFwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBiYXNlID0ge1xuICAgIHNlcnZpY2VVcmwsXG4gICAgY29udmVyc2F0aW9uSWQsXG4gICAgLi4uKGFjdGl2aXR5LmlkID8geyByZXBseVRvSWQ6IGFjdGl2aXR5LmlkIH0gOiB7fSksXG4gICAgLi4uKG9wdGlvbnMuc2lnbmFsID8geyBzaWduYWw6IG9wdGlvbnMuc2lnbmFsIH0gOiB7fSksXG4gIH07XG5cbiAgbGV0IHRva2VuOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgdG9rZW4gPSBhd2FpdCBjb25uZWN0b3JUb2tlbih7XG4gICAgICBhcHBJZDogY3JlZGVudGlhbHMuYXBwSWQsXG4gICAgICBhcHBQYXNzd29yZDogY3JlZGVudGlhbHMuYXBwUGFzc3dvcmQsXG4gICAgICAuLi4oY3JlZGVudGlhbHMuYXBwVGVuYW50SWQgPyB7IGFwcFRlbmFudElkOiBjcmVkZW50aWFscy5hcHBUZW5hbnRJZCB9IDoge30pLFxuICAgICAgLi4uKG9wdGlvbnMuc2lnbmFsID8geyBzaWduYWw6IG9wdGlvbnMuc2lnbmFsIH0gOiB7fSksXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIE5vIHRva2VuIG1lYW5zIG5vdGhpbmcgY2FuIGJlIGRlbGl2ZXJlZCAtIG5vdCBldmVuIHRoZSBhcG9sb2d5IC0gc28gdGhpc1xuICAgIC8vIGlzIHRoZSBvbmUgZmFpbHVyZSB0aGF0IGNhbiBvbmx5IGJlIGxvZ2dlZC5cbiAgICBsb2dnZXIuZXJyb3IoXCJjb3VsZCBub3Qgb2J0YWluIGEgY29ubmVjdG9yIHRva2VuXCIsIHsgZXJyb3I6IGVycm9yLmVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHRhcmdldCA9IHsgLi4uYmFzZSwgdG9rZW4gfTtcbiAgYXdhaXQgc2VuZFR5cGluZyh0YXJnZXQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgYWN0aXZpdGllcyA9IGF3YWl0IHJ1bkNhcmRUdXJuKGFnZW50LCBhY3Rpdml0eSwge1xuICAgICAgLi4uKG9wdGlvbnMuY3JlYXRlUmVxdWVzdENvbnRleHRcbiAgICAgICAgPyB7IGNyZWF0ZVJlcXVlc3RDb250ZXh0OiBvcHRpb25zLmNyZWF0ZVJlcXVlc3RDb250ZXh0IH1cbiAgICAgICAgOiB7fSksXG4gICAgICAuLi4ob3B0aW9ucy5zaWduYWwgPyB7IHNpZ25hbDogb3B0aW9ucy5zaWduYWwgfSA6IHt9KSxcbiAgICB9KTtcbiAgICBmb3IgKGNvbnN0IHJlcGx5IG9mIGFjdGl2aXRpZXMpIHtcbiAgICAgIGF3YWl0IHNlbmRBY3Rpdml0eShyZXBseSwgdGFyZ2V0KTtcbiAgICB9XG4gICAgbG9nZ2VyLmluZm8oXCJ0dXJuIGRlbGl2ZXJlZFwiLCB7IGNvbnZlcnNhdGlvbjogY29udmVyc2F0aW9uSWQsIHJlcGxpZXM6IGFjdGl2aXRpZXMubGVuZ3RoIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoXCJ0dXJuIGZhaWxlZFwiLCB7IGNvbnZlcnNhdGlvbjogY29udmVyc2F0aW9uSWQsIGVycm9yOiBlcnJvci5lcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2VuZEFjdGl2aXR5KHsgdHlwZTogXCJtZXNzYWdlXCIsIHRleHQ6IEZBSUxVUkVfVEVYVCB9LCB0YXJnZXQpO1xuICAgIH0gY2F0Y2ggKHBvc3RFcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihcImNvdWxkIG5vdCByZXBvcnQgdGhlIGZhaWx1cmUgdG8gdGhlIGNoYW5uZWxcIiwge1xuICAgICAgICBlcnJvcjogZXJyb3IuZXJyb3JNZXNzYWdlKHBvc3RFcnIpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59O1xuIl19
@@ -36,7 +36,7 @@
36
36
  import { Plugin, type IAppRouter } from "@databricks/appkit";
37
37
  import { type AgentToolDefinition, type ToolProvider } from "@databricks/appkit/beta";
38
38
  import { card } from "@dbx-tools/shared-teams";
39
- import { type TeamsPluginConfig } from "./config.js";
39
+ import { type TeamsPluginConfig } from "./config.ts";
40
40
  /**
41
41
  * AppKit plugin that configures the Adaptive Card builder used by the
42
42
  * `create_teams_card` tool, and exposes card building as an AppKit agent tool.
package/lib/src/plugin.js CHANGED
@@ -39,7 +39,7 @@ import { error, log, object, string } from "@dbx-tools/shared-core";
39
39
  import { activity as activityContract, card } from "@dbx-tools/shared-teams";
40
40
  import { verifyBotToken } from "./auth.js";
41
41
  import { TEAMS_CONFIG_SCHEMA } from "./config.js";
42
- import { promptOf, resolveCardAgent, resolveCardContextFactory, runCardTurn } from "./conversation.js";
42
+ import { promptOf, resolveCardAgent, resolveCardContextFactory, runCardTurn, } from "./conversation.js";
43
43
  import { TEAMS_BUILD_SETTINGS, TEAMS_POST_SETTINGS, TEAMS_TURN_SETTINGS } from "./defaults.js";
44
44
  import { deliverTurn, resolveServiceUrl } from "./messaging.js";
45
45
  import { buildCard, getTeamsRuntime, postCard, resetTeamsRuntime, setTeamsExecutor, } from "./runtime.js";
@@ -427,4 +427,4 @@ function readHeader(headers, name) {
427
427
  const value = Array.isArray(direct) ? direct[0] : direct;
428
428
  return typeof value === "string" ? (string.trimToNull(value) ?? undefined) : undefined;
429
429
  }
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxHQUlULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsaUJBQWlCLEdBSWxCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLElBQUksZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sVUFBVSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpELHNFQUFzRTtBQUN0RSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFFM0IsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSxHQUFHLE9B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RSxJQUFZO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwcEtpdCBwbHVnaW4gKHJlZ2lzdGVyZWQgbmFtZTogYHRlYW1zYCkgdGhhdCBvd25zIHRoZSBUZWFtcyBBZGFwdGl2ZSBDYXJkXG4gKiBydW50aW1lIC0gdGhlIHJlc29sdmVkIGNhcmQgdmVyc2lvbiBhbmQgdGhlIG9wdGlvbmFsIGluY29taW5nLXdlYmhvb2sgVVJMIHRoZVxuICoge0BsaW5rIHRlYW1zQ2FyZFRvb2x9IGFuZCB0aGUgQXBwS2l0IGB0ZWFtcy5jcmVhdGVDYXJkYCB0b29sIHJlYWQuIFJlZ2lzdGVyaW5nXG4gKiBpdCByZXNvbHZlcyBhbmQgbG9ncyB0aGUgZWZmZWN0aXZlIGNvbmZpZyAod2hpY2ggY2FyZCB2ZXJzaW9uIGlzIGluIGZvcmNlLFxuICogd2hldGhlciBhIHdlYmhvb2sgaXMgd2lyZWQgdXApIHNvIGEgbWlzY29uZmlndXJhdGlvbiBpcyB2aXNpYmxlIGluIHRoZSBib290XG4gKiBsb2dzIHJhdGhlciB0aGFuIG9uIHRoZSBmaXJzdCBjYXJkLCBhbmQgaW5zdGFsbHMgdGhlIHBsdWdpbidzIGBleGVjdXRlKClgIGFzXG4gKiB0aGUgcnVudGltZSdzIGV4ZWN1dG9yIHNvIGV2ZXJ5IGJ1aWxkIC8gcG9zdCBwaWNrcyB1cCBBcHBLaXQncyBjYWNoZSAvIHJldHJ5IC9cbiAqIHRpbWVvdXQgLyB0ZWxlbWV0cnkgY2hhaW4uXG4gKlxuICogVGhlIHBsdWdpbiBpcyBhbHNvIGEgYFRvb2xQcm92aWRlcmAsIHNvIGFuIEFwcEtpdCBhZ2VudCBjYW4gcmVhY2ggYVxuICogYHRlYW1zLmNyZWF0ZUNhcmRgIHRvb2wgZGlyZWN0bHk7IHRoZSB7QGxpbmsgdGVhbXNDYXJkVG9vbH0gZXhwb3J0IGlzIHRoZSBzYW1lXG4gKiBjYXBhYmlsaXR5IGZvciBhIE1hc3RyYSBhZ2VudC4gQm90aCBzaGFyZSB0aGUgcnVudGltZSBwcmltZWQgaGVyZS5cbiAqXG4gKiBUaGUgcGx1Z2luIG1vdW50cyBmb3VyIHJvdXRlcyB1bmRlciBpdHMgYmFzZSBwYXRoIChgL2FwaS90ZWFtc2ApOlxuICpcbiAqICAgLSBgUE9TVCAvbWVzc2FnZXNgIGlzIHRoZSBSRUFMIE1pY3Jvc29mdCBUZWFtcyBtZXNzYWdpbmcgZW5kcG9pbnQgLSB0aGUgVVJMXG4gKiAgICAgYW4gQXp1cmUgQm90IHJlZ2lzdHJhdGlvbiBwb2ludHMgYXQuIEl0IHZhbGlkYXRlcyB0aGUgQm90IFNlcnZpY2UgSldULFxuICogICAgIGFja25vd2xlZGdlcyBpbW1lZGlhdGVseSwgYW5kIGRlbGl2ZXJzIHRoZSBhZ2VudCdzIGNhcmQgYmFjayBvdmVyIHRoZVxuICogICAgIENvbm5lY3RvciBBUEkuIFRoaXMgaXMgdGhlIHJvdXRlIHRoYXQgbWFrZXMgYSBUZWFtcyBjaGFubmVsIGFibGUgdG8gY2hhdFxuICogICAgIHdpdGggdGhlIGFwcCdzIGFnZW50cywgdGhlIHNhbWUgd2F5IHRoZSBNYXN0cmEgcGx1Z2luIGV4cG9zZXMgTUNQIGF0IGFcbiAqICAgICBwYXRoLlxuICogICAtIGBQT1NUIC9hY3Rpdml0eWAgcnVucyB0aGUgc2FtZSB0dXJuIFNZTkNIUk9OT1VTTFksIGFuc3dlcmluZyB3aXRoIHRoZVxuICogICAgIHJlcGx5IGFjdGl2aXRpZXMgaW4gdGhlIHJlc3BvbnNlIGJvZHkuIEl0IG5lZWRzIG5vIGJvdCByZWdpc3RyYXRpb24sIHNvXG4gKiAgICAgaXQgaXMgd2hhdCBhIGxvY2FsIGNsaWVudCAodGhlIGluLXJlcG8gcHJldmlldyBjaGF0KSwgYSB0ZXN0LCBvciBhbnlcbiAqICAgICBub24tVGVhbXMgY2FsbGVyIHVzZXMuXG4gKiAgIC0gYFBPU1QgL2NhcmRgIGNvbXBpbGVzIGEge0BsaW5rIGNhcmQuQ2FyZFNwZWN9IGludG8gYW4gQWRhcHRpdmUgQ2FyZFxuICogICAgIGRvY3VtZW50ICh0aGUgcHJldmlldyBwYWdlIHBvc3RzIGhlcmUpLlxuICogICAtIGBQT1NUIC9wb3N0YCBwdXNoZXMgYSBjb21waWxlZCBjYXJkIHRvIHRoZSBjb25maWd1cmVkIFRlYW1zIGluY29taW5nXG4gKiAgICAgd2ViaG9vayB3aGVuIG9uZSBpcyBzZXQuXG4gKlxuICogTWlycm9ycyB0aGUgbm9kZS1lbWFpbCBhZGQtb24ncyBzaGFwZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgUGx1Z2luLFxuICB0b1BsdWdpbixcbiAgdHlwZSBFeGVjdXRpb25SZXN1bHQsXG4gIHR5cGUgSUFwcFJvdXRlcixcbiAgdHlwZSBQbHVnaW5NYW5pZmVzdCxcbn0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHtcbiAgZGVmaW5lVG9vbCxcbiAgZXhlY3V0ZUZyb21SZWdpc3RyeSxcbiAgdG9vbHNGcm9tUmVnaXN0cnksXG4gIHR5cGUgQWdlbnRUb29sRGVmaW5pdGlvbixcbiAgdHlwZSBUb29sUHJvdmlkZXIsXG4gIHR5cGUgVG9vbFJlZ2lzdHJ5LFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0L2JldGFcIjtcbmltcG9ydCB7IGVycm9yLCBsb2csIG9iamVjdCwgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGFjdGl2aXR5IGFzIGFjdGl2aXR5Q29udHJhY3QsIGNhcmQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtdGVhbXNcIjtcbmltcG9ydCB7IHZlcmlmeUJvdFRva2VuIH0gZnJvbSBcIi4vYXV0aFwiO1xuaW1wb3J0IHsgVEVBTVNfQ09ORklHX1NDSEVNQSwgdHlwZSBUZWFtc1BsdWdpbkNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgcHJvbXB0T2YsIHJlc29sdmVDYXJkQWdlbnQsIHJlc29sdmVDYXJkQ29udGV4dEZhY3RvcnksIHJ1bkNhcmRUdXJuIH0gZnJvbSBcIi4vY29udmVyc2F0aW9uXCI7XG5pbXBvcnQgeyBURUFNU19CVUlMRF9TRVRUSU5HUywgVEVBTVNfUE9TVF9TRVRUSU5HUywgVEVBTVNfVFVSTl9TRVRUSU5HUyB9IGZyb20gXCIuL2RlZmF1bHRzXCI7XG5pbXBvcnQgeyBkZWxpdmVyVHVybiwgcmVzb2x2ZVNlcnZpY2VVcmwgfSBmcm9tIFwiLi9tZXNzYWdpbmdcIjtcbmltcG9ydCB7XG4gIGJ1aWxkQ2FyZCxcbiAgZ2V0VGVhbXNSdW50aW1lLFxuICBwb3N0Q2FyZCxcbiAgcmVzZXRUZWFtc1J1bnRpbWUsXG4gIHNldFRlYW1zRXhlY3V0b3IsXG59IGZyb20gXCIuL3J1bnRpbWVcIjtcbmltcG9ydCB7IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OIH0gZnJvbSBcIi4vdG9vbFwiO1xuXG4vKiogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIGNvbXBpbGluZyBhIGNhcmQuICovXG5jb25zdCBDQVJEX1JPVVRFID0gXCIvY2FyZFwiO1xuXG4vKiogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIHBvc3RpbmcgYSBjYXJkIHRvIGEgd2ViaG9vay4gKi9cbmNvbnN0IFBPU1RfUk9VVEUgPSBcIi9wb3N0XCI7XG5cbi8qKlxuICogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIG9uZSBjb252ZXJzYXRpb24gdHVybjogYSBCb3RcbiAqIEZyYW1ld29yayBhY3Rpdml0eSBpbiwgYWN0aXZpdGllcyBjYXJyeWluZyBBZGFwdGl2ZSBDYXJkcyBiYWNrLlxuICovXG5jb25zdCBBQ1RJVklUWV9ST1VURSA9IFwiL2FjdGl2aXR5XCI7XG5cbi8qKlxuICogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIHRoZSBUZWFtcyBtZXNzYWdpbmcgZW5kcG9pbnQuXG4gKiBUaGlzIGlzIHRoZSBwYXRoIGEgYm90IHJlZ2lzdHJhdGlvbidzIG1lc3NhZ2luZyBlbmRwb2ludCBwb2ludHMgYXQsIGkuZS5cbiAqIGBodHRwczovLzxob3N0Pi9hcGkvdGVhbXMvbWVzc2FnZXNgLlxuICovXG5jb25zdCBNRVNTQUdFU19ST1VURSA9IFwiL21lc3NhZ2VzXCI7XG5cbi8qKiBSZWdpc3RyeSBrZXkgb2YgdGhlIGFnZW50IHRvb2wsIHdoaWNoIGFnZW50cyBhZGRyZXNzIGFzIGB0ZWFtcy5jcmVhdGVDYXJkYC4gKi9cbmNvbnN0IENSRUFURV9UT09MID0gXCJjcmVhdGVDYXJkXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtc1wiKTtcblxuLyoqXG4gKiBBcHBLaXQgcGx1Z2luIHRoYXQgY29uZmlndXJlcyB0aGUgQWRhcHRpdmUgQ2FyZCBidWlsZGVyIHVzZWQgYnkgdGhlXG4gKiBgY3JlYXRlX3RlYW1zX2NhcmRgIHRvb2wsIGFuZCBleHBvc2VzIGNhcmQgYnVpbGRpbmcgYXMgYW4gQXBwS2l0IGFnZW50IHRvb2wuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjcmVhdGVBcHAsIHNlcnZlciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbiAqIGltcG9ydCB7IHBsdWdpbiBhcyB0ZWFtc1BsdWdpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3RlYW1zXCI7XG4gKlxuICogYXdhaXQgY3JlYXRlQXBwKHtcbiAqICAgcGx1Z2luczogW1xuICogICAgIHNlcnZlcigpLFxuICogICAgIHRlYW1zUGx1Z2luLnRlYW1zKHsgd2ViaG9va1VybDogcHJvY2Vzcy5lbnYuVEVBTVNfV0VCSE9PS19VUkwgfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVGVhbXNQbHVnaW4gZXh0ZW5kcyBQbHVnaW48VGVhbXNQbHVnaW5Db25maWc+IGltcGxlbWVudHMgVG9vbFByb3ZpZGVyIHtcbiAgc3RhdGljIG1hbmlmZXN0ID0ge1xuICAgIG5hbWU6IFwidGVhbXNcIixcbiAgICBkaXNwbGF5TmFtZTogXCJUZWFtc1wiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBbnN3ZXJzIGNoYXQgdHVybnMgYXMgTWljcm9zb2Z0IFRlYW1zIEFkYXB0aXZlIENhcmRzIG92ZXIgYSBCb3QgXCIgK1xuICAgICAgXCJGcmFtZXdvcmsgYWN0aXZpdHkgZW5kcG9pbnQsIGJ1aWxkcyBjYXJkcyBmcm9tIGEgc21hbGwgc3RydWN0dXJlZCBjYXJkIFwiICtcbiAgICAgIFwiZGVzY3JpcHRpb24sIGFuZCBvcHRpb25hbGx5IHBvc3RzIHRoZW0gdG8gYSBUZWFtcyBpbmNvbWluZyB3ZWJob29rLlwiLFxuICAgIHN0YWJpbGl0eTogXCJiZXRhXCIsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICByZXF1aXJlZDogW10sXG4gICAgICBvcHRpb25hbDogW10sXG4gICAgfSxcbiAgICBjb25maWc6IHsgc2NoZW1hOiBURUFNU19DT05GSUdfU0NIRU1BIH0sXG4gIH0gc2F0aXNmaWVzIFBsdWdpbk1hbmlmZXN0PFwidGVhbXNcIj47XG5cbiAgLyoqXG4gICAqIFRoZSB0b29sIHRoaXMgcGx1Z2luIG9mZmVycyB0byBhbiBBcHBLaXQgYWdlbnQuXG4gICAqXG4gICAqIE1hcmtlZCBgYXV0b0luaGVyaXRhYmxlYDogYnVpbGRpbmcgYSBjYXJkIGlzIGEgcHVyZSwgc2lkZS1lZmZlY3QtZnJlZVxuICAgKiB0cmFuc2Zvcm0gKG5vdGhpbmcgbGVhdmVzIHRoZSBidWlsZGluZyksIHNvIGl0IGlzIHNhZmUgdG8gaGFuZCB0byBhbnlcbiAgICogYWdlbnQgYnkgZGVmYXVsdCAtIHVubGlrZSBhIHNlbmQuXG4gICAqXG4gICAqIGBleGVjdXRlYCByZS1wYXJzZXMgaXRzIGFyZ3VtZW50cyB3aXRoIHRoZSBsb2NhbCBzY2hlbWE6IEFwcEtpdCB2YWxpZGF0ZXNcbiAgICogYWdhaW5zdCB0aGUgc2FtZSBzY2hlbWEgZmlyc3QsIGJ1dCByZS1wYXJzaW5nIGlzIHdoYXQgZ2l2ZXMgdGhlIGJvZHkgdHlwZWRcbiAgICogYXJndW1lbnRzIGluc3RlYWQgb2YgYHVua25vd25gLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0b29sczogVG9vbFJlZ2lzdHJ5ID0ge1xuICAgIFtDUkVBVEVfVE9PTF06IGRlZmluZVRvb2woe1xuICAgICAgZGVzY3JpcHRpb246IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OLFxuICAgICAgc2NoZW1hOiBjYXJkLmNhcmRTcGVjU2NoZW1hLFxuICAgICAgYW5ub3RhdGlvbnM6IHsgZWZmZWN0OiBcInJlYWRcIiB9LFxuICAgICAgYXV0b0luaGVyaXRhYmxlOiB0cnVlLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MsIHNpZ25hbCkgPT4gYnVpbGRDYXJkKGNhcmQuY2FyZFNwZWNTY2hlbWEucGFyc2UoYXJncyksIHNpZ25hbCksXG4gICAgfSksXG4gIH07XG5cbiAgLyoqXG4gICAqIFByaW1lIHRoZSBzaGFyZWQgcnVudGltZSBmcm9tIHRoaXMgcGx1Z2luJ3MgY29uZmlnIChvdmVyIGVudiksIHJvdXRlIHRoZVxuICAgKiB0b29sJ3MgYnVpbGRzIHRocm91Z2ggdGhpcyBwbHVnaW4ncyBpbnRlcmNlcHRvciBjaGFpbiwgYW5kIGxvZyB0aGVcbiAgICogZWZmZWN0aXZlIGNvbmZpZyBzbyB0aGUgcmVzb2x2ZWQgY2FyZCB2ZXJzaW9uIGFuZCB3aGV0aGVyIGEgd2ViaG9vayBpc1xuICAgKiB3aXJlZCB1cCBhcmUgb2J2aW91cyBhdCBib290LlxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSh0aGlzLmNvbmZpZyk7XG4gICAgc2V0VGVhbXNFeGVjdXRvcigoZm4sIHNldHRpbmdzKSA9PiB0aGlzLmV4ZWN1dGUoZm4sIHNldHRpbmdzKSk7XG4gICAgbG9nZ2VyLmluZm8oXCJyZWFkeVwiLCB7XG4gICAgICBjYXJkVmVyc2lvbjogY29uZmlnLmNhcmRWZXJzaW9uLFxuICAgICAgd2ViaG9vazogY29uZmlnLndlYmhvb2tVcmwgPyBcImNvbmZpZ3VyZWRcIiA6IFwiZGlzYWJsZWRcIixcbiAgICAgIG1lc3NhZ2luZzogY29uZmlnLmFsbG93VW5hdXRoZW50aWNhdGVkXG4gICAgICAgID8gXCJVTkFVVEhFTlRJQ0FURUQgKGRldmVsb3BtZW50KVwiXG4gICAgICAgIDogY29uZmlnLmFwcElkICYmIGNvbmZpZy5hcHBQYXNzd29yZFxuICAgICAgICAgID8gXCJib3QgcmVnaXN0cmF0aW9uIGNvbmZpZ3VyZWRcIlxuICAgICAgICAgIDogXCJkaXNhYmxlZCAobm8gYXBwSWQvYXBwUGFzc3dvcmQpXCIsXG4gICAgfSk7XG4gICAgLy8gQW4gZW5kcG9pbnQgc2VydmluZyBhZ2VudCB0dXJucyB3aXRoIG5vIGF1dGggaXMgd29ydGggYSB3YXJuaW5nIG9uIGV2ZXJ5XG4gICAgLy8gYm9vdCwgbm90IGEgbGluZSBidXJpZWQgaW4gYW4gaW5mbyBwYXlsb2FkLlxuICAgIGlmIChjb25maWcuYWxsb3dVbmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBcIlBPU1QgL21lc3NhZ2VzIGlzIHNlcnZpbmcgVU5BVVRIRU5USUNBVEVEIHR1cm5zIC0gYW55IGNhbGxlciB0aGF0IGNhbiBcIiArXG4gICAgICAgICAgXCJyZWFjaCB0aGlzIHJvdXRlIGNhbiBkcml2ZSB0aGUgYWdlbnQuIERldmVsb3BtZW50IG9ubHk7IG5ldmVyIGV4cG9zZSB0aGlzLlwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogRHJvcCB0aGUgc2hhcmVkIHJ1bnRpbWUuIElkZW1wb3RlbnQuICovXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJlc2V0VGVhbXNSdW50aW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogTW91bnQgdGhlIGNhcmQtYnVpbGRpbmcgYW5kIGNhcmQtcG9zdGluZyByb3V0ZXMgdW5kZXIgdGhlIHBsdWdpbiBiYXNlXG4gICAqIHBhdGggKGAvYXBpL3RlYW1zYCkuIGBQT1NUIC9jYXJkYCBpcyB3aGF0IHRoZSBkZXYgZGlzcGxheSBwYWdlIGNhbGxzIHRvXG4gICAqIHByZXZpZXcgYSBjYXJkIGxpdmU7IGBQT1NUIC9wb3N0YCBwdXNoZXMgYSBjb21waWxlZCBjYXJkIHRvIHRoZSBjb25maWd1cmVkXG4gICAqIFRlYW1zIGluY29taW5nIHdlYmhvb2suXG4gICAqXG4gICAqIE5laXRoZXIgcm91dGUgaXMgd3JhcHBlZCBpbiBgYXNVc2VyKHJlcSlgOiBjb21waWxpbmcgYSBjYXJkIGlzIGEgcHVyZVxuICAgKiB0cmFuc2Zvcm0gb2YgdGhlIHJlcXVlc3QgYm9keSBhbmQgcG9zdGluZyBnb2VzIHRvIGEgcHJlY29uZmlndXJlZCB3ZWJob29rLFxuICAgKiBzbyBuZWl0aGVyIHJlYWRzIHdvcmtzcGFjZSBkYXRhIG9uIHRoZSBjYWxsZXIncyBiZWhhbGYgYW5kIG5laXRoZXIgbmVlZHMgYW5cbiAgICogT0JPIHRva2VuLiBXcmFwcGluZyB0aGVtIHdvdWxkIG1ha2UgdGhlIHJvdXRlcyB0aHJvd1xuICAgKiBgQXV0aGVudGljYXRpb25FcnJvcmAgd2hlbmV2ZXIgdGhlIHVzZXItdG9rZW4gaGVhZGVyIGlzIGFic2VudCAoYSBsb2NhbFxuICAgKiBgY3VybGAsIGEgaGVhbHRoIHByb2JlKSwgd2hpY2ggLSBzaW5jZSBBcHBLaXQgZG9lcyBub3QgY2F0Y2ggYSByZWplY3Rpb25cbiAgICogcmFpc2VkIGluc2lkZSB0aGUgaGFuZGxlciAtIHRha2VzIHRoZSBwcm9jZXNzIGRvd24gcmF0aGVyIHRoYW4gYW5zd2VyaW5nXG4gICAqIDQwMS5cbiAgICovXG4gIG92ZXJyaWRlIGluamVjdFJvdXRlcyhyb3V0ZXI6IElBcHBSb3V0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlKHJvdXRlciwge1xuICAgICAgbmFtZTogXCJidWlsZENhcmRcIixcbiAgICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgICBwYXRoOiBDQVJEX1JPVVRFLFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZUJ1aWxkKHJlcS5ib2R5KTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5zdGF0dXMpLmpzb24oeyBlcnJvcjogcmVzdWx0Lm1lc3NhZ2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5qc29uKHJlc3VsdC5kYXRhKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZShyb3V0ZXIsIHtcbiAgICAgIG5hbWU6IFwiYWN0aXZpdHlcIixcbiAgICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgICBwYXRoOiBBQ1RJVklUWV9ST1VURSxcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVUdXJuKHJlcS5ib2R5KTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5zdGF0dXMpLmpzb24oeyBlcnJvcjogcmVzdWx0Lm1lc3NhZ2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5qc29uKHJlc3VsdC5kYXRhKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZShyb3V0ZXIsIHtcbiAgICAgIG5hbWU6IFwicG9zdENhcmRcIixcbiAgICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgICBwYXRoOiBQT1NUX1JPVVRFLFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3QocmVxLmJvZHkpO1xuICAgICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnN0YXR1cykuanNvbih7IGVycm9yOiByZXN1bHQubWVzc2FnZSB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVzLmpzb24oeyBvazogdHJ1ZSB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgLy8gVGhlIHJlYWwgVGVhbXMgbWVzc2FnaW5nIGVuZHBvaW50LiBVbmxpa2UgZXZlcnkgb3RoZXIgcm91dGUgaGVyZSBpdCBpc1xuICAgIC8vIGNhbGxlZCBieSBBenVyZSBCb3QgU2VydmljZSBvdmVyIHRoZSBwdWJsaWMgaW50ZXJuZXQsIHNvIGl0IGF1dGhlbnRpY2F0ZXNcbiAgICAvLyBpdHNlbGYgZnJvbSB0aGUgaW5ib3VuZCBKV1QgYW5kIGFuc3dlcnMgYDIwMGAgYmVmb3JlIHRoZSBhZ2VudCBoYXMgcnVuLlxuICAgIHRoaXMucm91dGUocm91dGVyLCB7XG4gICAgICBuYW1lOiBcIm1lc3NhZ2VzXCIsXG4gICAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgICAgcGF0aDogTUVTU0FHRVNfUk9VVEUsXG4gICAgICBoYW5kbGVyOiBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVNZXNzYWdlKHJlcSwgcmVzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBleHBvcnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIENvbXBpbGUgYSBjYXJkIHNwZWMgaW50byBhbiBBZGFwdGl2ZSBDYXJkIGRvY3VtZW50LiBGb3IgYWdlbnQtZHJpdmVuXG4gICAgICAgKiBidWlsZHMgdXNlIHtAbGluayB0ZWFtc0NhcmRUb29sfSBpbnN0ZWFkLlxuICAgICAgICovXG4gICAgICBidWlsZENhcmQ6IChzcGVjOiBjYXJkLkNhcmRTcGVjLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Y2FyZC5DYXJkUmVzdWx0PiA9PlxuICAgICAgICBidWlsZENhcmQoc3BlYywgc2lnbmFsKSxcbiAgICAgIC8qKlxuICAgICAgICogUG9zdCBhIGNvbXBpbGVkIGNhcmQgdG8gdGhlIGNvbmZpZ3VyZWQgVGVhbXMgaW5jb21pbmcgd2ViaG9vay4gVGhyb3dzXG4gICAgICAgKiB3aGVuIG5vIHdlYmhvb2sgaXMgY29uZmlndXJlZC5cbiAgICAgICAqL1xuICAgICAgcG9zdENhcmQ6IChjYXJkRG9jdW1lbnQ6IGNhcmQuQWRhcHRpdmVDYXJkLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgcG9zdENhcmQoY2FyZERvY3VtZW50LCBzaWduYWwpLFxuICAgIH07XG4gIH1cblxuICAvKiogQXBwS2l0IGBUb29sUHJvdmlkZXJgOiB0aGUgdG9vbCBkZWZpbml0aW9ucyBvZmZlcmVkIHRvIGFuIGFnZW50LiAqL1xuICBnZXRBZ2VudFRvb2xzKCk6IEFnZW50VG9vbERlZmluaXRpb25bXSB7XG4gICAgcmV0dXJuIHRvb2xzRnJvbVJlZ2lzdHJ5KHRoaXMudG9vbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcEtpdCBgVG9vbFByb3ZpZGVyYDogcnVuIG9uZSB0b29sIGNhbGwuIEFyZ3VtZW50cyBhcmUgdmFsaWRhdGVkIGFnYWluc3RcbiAgICogdGhlIHRvb2wncyBzY2hlbWEgZmlyc3QsIGFuZCBhIHZhbGlkYXRpb24gZmFpbHVyZSBjb21lcyBiYWNrIGFzIGFuXG4gICAqIExMTS1mcmllbmRseSBzdHJpbmcgc28gdGhlIG1vZGVsIGNhbiBjb3JyZWN0IGl0c2VsZiBvbiB0aGUgbmV4dCB0dXJuLlxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZUFnZW50VG9vbChuYW1lOiBzdHJpbmcsIGFyZ3M6IHVua25vd24sIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIGV4ZWN1dGVGcm9tUmVnaXN0cnkodGhpcy50b29scywgbmFtZSwgYXJncywgc2lnbmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgb25lIGluYm91bmQgcmVxdWVzdCBmcm9tIEF6dXJlIEJvdCBTZXJ2aWNlIG9uIGBQT1NUIC9tZXNzYWdlc2AuXG4gICAqXG4gICAqIFRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGlzIGRpY3RhdGVkIGJ5IGhvdyBCb3QgU2VydmljZSBiZWhhdmVzLCBub3QgYnlcbiAgICogY29udmVuaWVuY2U6XG4gICAqXG4gICAqICAgMS4gKipSZWZ1c2Ugd2hlbiB1bmNvbmZpZ3VyZWQuKiogV2l0aCBubyBgYXBwSWRgIHRoZXJlIGlzIG5vIGF1ZGllbmNlIHRvXG4gICAqICAgICAgdmFsaWRhdGUgYSB0b2tlbiBhZ2FpbnN0LCBzbyB0aGUgZW5kcG9pbnQgY2Fubm90IGJlIG9wZXJhdGVkIHNhZmVseTtcbiAgICogICAgICBpdCBhbnN3ZXJzIDUwMyByYXRoZXIgdGhhbiBwcm9jZXNzaW5nIGFuIHVuYXV0aGVudGljYXRlZCBhY3Rpdml0eS5cbiAgICogICAyLiAqKlZhbGlkYXRlIHRoZSBKV1QgYmVmb3JlIHBhcnNpbmcgdGhlIGJvZHkuKiogVGhlIHRva2VuIGlzIHRoZSBvbmx5XG4gICAqICAgICAgdHJ1c3QgYm91bmRhcnkgdGhpcyBlbmRwb2ludCBoYXMuXG4gICAqICAgMy4gKipQaW4gdGhlIHJlcGx5IGRlc3RpbmF0aW9uIHRvIHRoZSB0b2tlbi4qKiBgc2VydmljZVVybGAgYXJyaXZlcyBpbiB0aGVcbiAgICogICAgICBib2R5LCBhbmQgcmVwbGllcyBjYXJyeSB0aGUgYm90J3MgY3JlZGVudGlhbHMsIHNvIGl0IGlzIG9ubHkgaG9ub3JlZFxuICAgKiAgICAgIHdoZW4gaXQgbWF0Y2hlcyB0aGUgdmVyaWZpZWQgdG9rZW4uXG4gICAqICAgNC4gKipBbnN3ZXIgMjAwIGltbWVkaWF0ZWx5LCB0aGVuIHJ1biB0aGUgYWdlbnQuKiogQm90IFNlcnZpY2UgdGltZXMgb3V0XG4gICAqICAgICAgYW4gdW5hY2tub3dsZWRnZWQgYWN0aXZpdHkgaW4gc2Vjb25kcyBhbmQgUkVUUklFUyBpdDsgYSBjYXJkIHRha2VzIGZhclxuICAgKiAgICAgIGxvbmdlciB0aGFuIHRoYXQsIGFuZCBhIHJldHJ5IHdvdWxkIHBvc3QgYSBkdXBsaWNhdGUgY2FyZC5cbiAgICpcbiAgICogQWN0aXZpdGllcyB0aGF0IGNhcnJ5IG5vIHByb21wdCAoYHR5cGluZ2AsIGBjb252ZXJzYXRpb25VcGRhdGVgLCBhblxuICAgKiBhdHRhY2htZW50LW9ubHkgbWVzc2FnZSkgYXJlIGFja25vd2xlZGdlZCBhbmQgZHJvcHBlZCAtIGV4YWN0bHkgd2hhdCBhIGJvdFxuICAgKiBkb2VzIHdpdGggdGhlbS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlTWVzc2FnZShcbiAgICByZXE6IHsgaGVhZGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IGJvZHk6IHVua25vd24gfSxcbiAgICByZXM6IHtcbiAgICAgIHN0YXR1cyhjb2RlOiBudW1iZXIpOiB7IGpzb24oYm9keTogdW5rbm93bik6IHZvaWQgfTtcbiAgICAgIGpzb24oYm9keTogdW5rbm93bik6IHZvaWQ7XG4gICAgICBoZWFkZXJzU2VudD86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSh0aGlzLmNvbmZpZyk7XG5cbiAgICAvLyBMb2NhbCBkZXZlbG9wbWVudCBtb2RlOiBubyBib3QgcmVnaXN0cmF0aW9uLCBubyB0b2tlbiwgYW5kIHRoZSByZXBseSBjb21lc1xuICAgIC8vIGJhY2sgaW4gdGhlIEhUVFAgcmVzcG9uc2UgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGUgQ29ubmVjdG9yIEFQSSAodGhlcmUgaXNcbiAgICAvLyBubyBgc2VydmljZVVybGAgdG8gY2FsbCBiYWNrIHRvKS4gVGhpcyBpcyB3aGF0IGxldHMgdGhlIGluLXJlcG8gcHJldmlld1xuICAgIC8vIGNoYXQgYW5kIHRoZSBCb3QgRnJhbWV3b3JrIEVtdWxhdG9yIGRyaXZlIHRoZSBzYW1lIHJvdXRlIFRlYW1zIHVzZXMuXG4gICAgaWYgKGNvbmZpZy5hbGxvd1VuYXV0aGVudGljYXRlZCkge1xuICAgICAgLy8gQWNjZXB0IGJvdGggZW52ZWxvcGVzOiBhIGJhcmUgYWN0aXZpdHkgKHdoYXQgQm90IFNlcnZpY2UgYW5kIHRoZVxuICAgICAgLy8gZW11bGF0b3IgUE9TVCkgYW5kIHRoZSBgeyBhY3Rpdml0eSwgYWdlbnRJZCB9YCByZXF1ZXN0IHNoYXBlIHRoZVxuICAgICAgLy8gYC9hY3Rpdml0eWAgcm91dGUgdGFrZXMsIHNvIGEgbG9jYWwgY2xpZW50IGNhbiBzdGlsbCBjaG9vc2UgYW4gYWdlbnQuXG4gICAgICBjb25zdCBib2R5ID1cbiAgICAgICAgb2JqZWN0LmlzUmVjb3JkKHJlcS5ib2R5KSAmJiBvYmplY3QuaXNSZWNvcmQocmVxLmJvZHkuYWN0aXZpdHkpXG4gICAgICAgICAgPyByZXEuYm9keVxuICAgICAgICAgIDogeyBhY3Rpdml0eTogcmVxLmJvZHkgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVR1cm4oYm9keSk7XG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5zdGF0dXMpLmpzb24oeyBlcnJvcjogcmVzdWx0Lm1lc3NhZ2UgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5qc29uKHJlc3VsdC5kYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZy5hcHBJZCB8fCAhY29uZmlnLmFwcFBhc3N3b3JkKSB7XG4gICAgICByZXMuc3RhdHVzKDUwMykuanNvbih7XG4gICAgICAgIGVycm9yOlxuICAgICAgICAgIFwidGVhbXM6IG1lc3NhZ2luZyBlbmRwb2ludCBpcyBub3QgY29uZmlndXJlZCAtIHNldCBhcHBJZC9hcHBQYXNzd29yZCBcIiArXG4gICAgICAgICAgXCIoVEVBTVNfQVBQX0lEIC8gVEVBTVNfQVBQX1BBU1NXT1JEKSBmcm9tIHRoZSBBenVyZSBCb3QgcmVnaXN0cmF0aW9uXCIsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRob3JpemF0aW9uID0gcmVhZEhlYWRlcihyZXEuaGVhZGVycywgXCJhdXRob3JpemF0aW9uXCIpO1xuICAgIGxldCB2ZXJpZmllZDtcbiAgICB0cnkge1xuICAgICAgdmVyaWZpZWQgPSBhd2FpdCB2ZXJpZnlCb3RUb2tlbihhdXRob3JpemF0aW9uLCB7XG4gICAgICAgIGFwcElkOiBjb25maWcuYXBwSWQsXG4gICAgICAgIC4uLihjb25maWcuYXBwVGVuYW50SWQgPyB7IGFwcFRlbmFudElkOiBjb25maWcuYXBwVGVuYW50SWQgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gRGVsaWJlcmF0ZWx5IHRlcnNlOiBhIGNhbGxlciBmYWlsaW5nIGF1dGhlbnRpY2F0aW9uIGxlYXJucyBvbmx5IHRoYXQgaXRcbiAgICAgIC8vIGZhaWxlZCwgd2hpbGUgdGhlIHJlYXNvbiBnb2VzIHRvIHRoZSBsb2dzLlxuICAgICAgbG9nZ2VyLndhcm4oXCJyZWplY3RlZCBhbiB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdFwiLCB7IGVycm9yOiBlcnJvci5lcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgZXJyb3I6IFwidW5hdXRob3JpemVkXCIgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gYWN0aXZpdHlDb250cmFjdC5hY3Rpdml0eVNjaGVtYS5zYWZlUGFyc2UocmVxLmJvZHkpO1xuICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHsgZXJyb3I6IHBhcnNlZC5lcnJvci5tZXNzYWdlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbmJvdW5kID0gcGFyc2VkLmRhdGE7XG5cbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gcmVzb2x2ZVNlcnZpY2VVcmwoaW5ib3VuZCwgdmVyaWZpZWQuc2VydmljZVVybCk7XG4gICAgaWYgKCFzZXJ2aWNlVXJsKSB7XG4gICAgICBsb2dnZXIud2FybihcInJlamVjdGVkIGFuIGFjdGl2aXR5IHdpdGggbm8gdXNhYmxlIHNlcnZpY2VVcmxcIiwge1xuICAgICAgICB0eXBlOiBpbmJvdW5kLnR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHsgZXJyb3I6IFwiYWN0aXZpdHkgY2FycmllZCBubyBhY2NlcHRhYmxlIHNlcnZpY2VVcmxcIiB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2VudCA9IHJlc29sdmVDYXJkQWdlbnQodGhpcy5jb250ZXh0Py5nZXRQbHVnaW5zKCksIGNvbmZpZy5hZ2VudFBsdWdpbik7XG4gICAgaWYgKCFhZ2VudCkge1xuICAgICAgbG9nZ2VyLmVycm9yKFwibm8gYWdlbnQgYXZhaWxhYmxlIHRvIGFuc3dlciBhIFRlYW1zIHR1cm5cIiwge1xuICAgICAgICBhZ2VudFBsdWdpbjogY29uZmlnLmFnZW50UGx1Z2luLFxuICAgICAgfSk7XG4gICAgICByZXMuc3RhdHVzKDUwMykuanNvbih7IGVycm9yOiBcIm5vIGFnZW50IGF2YWlsYWJsZVwiIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFja25vd2xlZGdlIEZJUlNULiBFdmVyeXRoaW5nIGFmdGVyIHRoaXMgcG9pbnQgaXMgb3V0LW9mLWJhbmQgd29yayB3aG9zZVxuICAgIC8vIHJlc3VsdCByZWFjaGVzIHRoZSB1c2VyIHRocm91Z2ggdGhlIENvbm5lY3RvciBBUEksIG5vdCB0aGlzIHJlc3BvbnNlLlxuICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHt9KTtcblxuICAgIGlmICghcHJvbXB0T2YoaW5ib3VuZCkpIHJldHVybjtcblxuICAgIGNvbnN0IGNyZWF0ZVJlcXVlc3RDb250ZXh0ID0gcmVzb2x2ZUNhcmRDb250ZXh0RmFjdG9yeShcbiAgICAgIHRoaXMuY29udGV4dD8uZ2V0UGx1Z2lucygpLFxuICAgICAgY29uZmlnLmFnZW50UGx1Z2luLFxuICAgICk7XG5cbiAgICB2b2lkIGRlbGl2ZXJUdXJuKHtcbiAgICAgIGFnZW50LFxuICAgICAgYWN0aXZpdHk6IGluYm91bmQsXG4gICAgICBzZXJ2aWNlVXJsLFxuICAgICAgLi4uKGNyZWF0ZVJlcXVlc3RDb250ZXh0ID8geyBjcmVhdGVSZXF1ZXN0Q29udGV4dCB9IDoge30pLFxuICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgYXBwSWQ6IGNvbmZpZy5hcHBJZCxcbiAgICAgICAgYXBwUGFzc3dvcmQ6IGNvbmZpZy5hcHBQYXNzd29yZCxcbiAgICAgICAgLi4uKGNvbmZpZy5hcHBUZW5hbnRJZCA/IHsgYXBwVGVuYW50SWQ6IGNvbmZpZy5hcHBUZW5hbnRJZCB9IDoge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBDb21waWxlIGEgY2FyZCwgdmFsaWRhdGluZyB0aGUgcmVxdWVzdCBib2R5IGFnYWluc3QgdGhlIHNwZWMgc2NoZW1hLiAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVCdWlsZChib2R5OiB1bmtub3duKTogUHJvbWlzZTxFeGVjdXRpb25SZXN1bHQ8Y2FyZC5DYXJkUmVzdWx0Pj4ge1xuICAgIGNvbnN0IHBhcnNlZCA9IGNhcmQuY2FyZFNwZWNTY2hlbWEuc2FmZVBhcnNlKGJvZHkpO1xuICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc3RhdHVzOiA0MDAsIG1lc3NhZ2U6IHBhcnNlZC5lcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoYXN5bmMgKHNpZ25hbCkgPT4gYnVpbGRDYXJkKHBhcnNlZC5kYXRhLCBzaWduYWwpLCBURUFNU19CVUlMRF9TRVRUSU5HUyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIG9uZSBjb252ZXJzYXRpb24gdHVybjogdmFsaWRhdGUgdGhlIGluYm91bmQgYWN0aXZpdHksIHJlc29sdmUgdGhlIGFnZW50XG4gICAqIGZyb20gdGhlIHNpYmxpbmcgYWdlbnQgcGx1Z2luLCBhbmQgYW5zd2VyIHdpdGggY2FyZC1jYXJyeWluZyBhY3Rpdml0aWVzLlxuICAgKlxuICAgKiBSZXNvbHV0aW9uIGZhaWx1cmVzIGFyZSByZXBvcnRlZCBkaXN0aW5jdGx5IGJlY2F1c2UgdGhleSBoYXZlIGRpZmZlcmVudFxuICAgKiBmaXhlczogNTAzIHdoZW4gbm8gYWdlbnQgcGx1Z2luIGlzIG1vdW50ZWQgYXQgYWxsIChhIHdpcmluZyBwcm9ibGVtKSwgNDA0XG4gICAqIHdoZW4gdGhlIGNhbGxlciBuYW1lZCBhbiBgYWdlbnRJZGAgdGhhdCBpcyBub3QgcmVnaXN0ZXJlZCAoYSByZXF1ZXN0XG4gICAqIHByb2JsZW0pLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlVHVybihcbiAgICBib2R5OiB1bmtub3duLFxuICApOiBQcm9taXNlPEV4ZWN1dGlvblJlc3VsdDxhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcGFyc2VkID0gYWN0aXZpdHlDb250cmFjdC5hY3Rpdml0eVJlcXVlc3RTY2hlbWEuc2FmZVBhcnNlKGJvZHkpO1xuICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc3RhdHVzOiA0MDAsIG1lc3NhZ2U6IHBhcnNlZC5lcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZpdHksIGFnZW50SWQgfSA9IHBhcnNlZC5kYXRhO1xuICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRUZWFtc1J1bnRpbWUodGhpcy5jb25maWcpO1xuICAgIGNvbnN0IGFnZW50ID0gcmVzb2x2ZUNhcmRBZ2VudCh0aGlzLmNvbnRleHQ/LmdldFBsdWdpbnMoKSwgY29uZmlnLmFnZW50UGx1Z2luLCBhZ2VudElkKTtcbiAgICBpZiAoIWFnZW50KSB7XG4gICAgICByZXR1cm4gYWdlbnRJZFxuICAgICAgICA/IHsgb2s6IGZhbHNlLCBzdGF0dXM6IDQwNCwgbWVzc2FnZTogYHRlYW1zOiB1bmtub3duIGFnZW50ICcke2FnZW50SWR9J2AgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIHN0YXR1czogNTAzLFxuICAgICAgICAgICAgbWVzc2FnZTogYHRlYW1zOiBubyBhZ2VudCBhdmFpbGFibGUgLSBpcyB0aGUgJyR7Y29uZmlnLmFnZW50UGx1Z2lufScgcGx1Z2luIHJlZ2lzdGVyZWQ/YCxcbiAgICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBjcmVhdGVSZXF1ZXN0Q29udGV4dCA9IHJlc29sdmVDYXJkQ29udGV4dEZhY3RvcnkoXG4gICAgICB0aGlzLmNvbnRleHQ/LmdldFBsdWdpbnMoKSxcbiAgICAgIGNvbmZpZy5hZ2VudFBsdWdpbixcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoYXN5bmMgKHNpZ25hbCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZpdGllcyA9IGF3YWl0IHJ1bkNhcmRUdXJuKGFnZW50LCBhY3Rpdml0eSwge1xuICAgICAgICAuLi4oY3JlYXRlUmVxdWVzdENvbnRleHQgPyB7IGNyZWF0ZVJlcXVlc3RDb250ZXh0IH0gOiB7fSksXG4gICAgICAgIC4uLihzaWduYWwgPyB7IHNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBhY3Rpdml0aWVzIH07XG4gICAgfSwgVEVBTVNfVFVSTl9TRVRUSU5HUyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGlsZSB0aGVuIHBvc3QgYSBjYXJkLCB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0IGJvZHkgYWdhaW5zdCB0aGUgc3BlY1xuICAgKiBzY2hlbWEuIFRoZSBjb21waWxlIGlzIGZvbGRlZCBJTlRPIHRoZSBleGVjdXRlZCBjYWxsYmFjayBzbyBhIHRocm93IGZyb21cbiAgICogZWl0aGVyIGhhbGYgKGEgYnVpbGQgZmFpbHVyZSwgb3IgYHBvc3RDYXJkYCByZWZ1c2luZyBiZWNhdXNlIG5vIHdlYmhvb2sgaXNcbiAgICogY29uZmlndXJlZCkgY29tZXMgYmFjayBhcyBhIGZhaWxlZCB7QGxpbmsgRXhlY3V0aW9uUmVzdWx0fSB0aGUgcm91dGUgY2FuXG4gICAqIGFuc3dlciB3aXRoLCByYXRoZXIgdGhhbiBlc2NhcGluZyB0aGUgaGFuZGxlciBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlUG9zdChib2R5OiB1bmtub3duKTogUHJvbWlzZTxFeGVjdXRpb25SZXN1bHQ8dm9pZD4+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBjYXJkLmNhcmRTcGVjU2NoZW1hLnNhZmVQYXJzZShib2R5KTtcbiAgICBpZiAoIXBhcnNlZC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIHN0YXR1czogNDAwLCBtZXNzYWdlOiBwYXJzZWQuZXJyb3IubWVzc2FnZSB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlKGFzeW5jIChzaWduYWwpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgYnVpbGRDYXJkKHBhcnNlZC5kYXRhLCBzaWduYWwpO1xuICAgICAgYXdhaXQgcG9zdENhcmQoYnVpbHQuY2FyZCwgc2lnbmFsKTtcbiAgICB9LCBURUFNU19QT1NUX1NFVFRJTkdTKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBUZWFtcyBwbHVnaW4uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjcmVhdGVBcHAsIHNlcnZlciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbiAqIGltcG9ydCB7IHBsdWdpbiBhcyB0ZWFtc1BsdWdpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3RlYW1zXCI7XG4gKlxuICogYXdhaXQgY3JlYXRlQXBwKHtcbiAqICAgcGx1Z2luczogW3NlcnZlcigpLCB0ZWFtc1BsdWdpbi50ZWFtcygpXSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB0ZWFtcyA9IHRvUGx1Z2luKFRlYW1zUGx1Z2luKTtcblxuLyoqXG4gKiBSZWFkIG9uZSBoZWFkZXIgdmFsdWUsIG5vcm1hbGl6aW5nIE5vZGUncyBgc3RyaW5nIHwgc3RyaW5nW11gIHNoYXBlLlxuICpcbiAqIEV4cHJlc3MgbG93ZXItY2FzZXMgaW5jb21pbmcgaGVhZGVyIG5hbWVzLCBidXQgdGhpcyBpcyB3cml0dGVuIGFnYWluc3QgYVxuICogc3RydWN0dXJhbCBgaGVhZGVyc2AgcmVjb3JkIChzbyB0aGUgaGFuZGxlciBzdGF5cyB0ZXN0YWJsZSB3aXRob3V0IGFuIEV4cHJlc3NcbiAqIHJlcXVlc3QpLCBoZW5jZSB0aGUgZXhwbGljaXQgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAuXG4gKi9cbmZ1bmN0aW9uIHJlYWRIZWFkZXIoaGVhZGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRpcmVjdCA9IGhlYWRlcnNbbmFtZV0gPz8gaGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldO1xuICBjb25zdCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkoZGlyZWN0KSA/IGRpcmVjdFswXSA6IGRpcmVjdDtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IChzdHJpbmcudHJpbVRvTnVsbCh2YWx1ZSkgPz8gdW5kZWZpbmVkKSA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUVILE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxHQUlULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsaUJBQWlCLEdBSWxCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLElBQUksZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFDTCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixXQUFXLEdBQ1osTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwRCxzRUFBc0U7QUFDdEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBRTNCLGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsR0FB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LEVBQUUsSUFBWTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pELE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN6RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBLaXQgcGx1Z2luIChyZWdpc3RlcmVkIG5hbWU6IGB0ZWFtc2ApIHRoYXQgb3ducyB0aGUgVGVhbXMgQWRhcHRpdmUgQ2FyZFxuICogcnVudGltZSAtIHRoZSByZXNvbHZlZCBjYXJkIHZlcnNpb24gYW5kIHRoZSBvcHRpb25hbCBpbmNvbWluZy13ZWJob29rIFVSTCB0aGVcbiAqIHtAbGluayB0ZWFtc0NhcmRUb29sfSBhbmQgdGhlIEFwcEtpdCBgdGVhbXMuY3JlYXRlQ2FyZGAgdG9vbCByZWFkLiBSZWdpc3RlcmluZ1xuICogaXQgcmVzb2x2ZXMgYW5kIGxvZ3MgdGhlIGVmZmVjdGl2ZSBjb25maWcgKHdoaWNoIGNhcmQgdmVyc2lvbiBpcyBpbiBmb3JjZSxcbiAqIHdoZXRoZXIgYSB3ZWJob29rIGlzIHdpcmVkIHVwKSBzbyBhIG1pc2NvbmZpZ3VyYXRpb24gaXMgdmlzaWJsZSBpbiB0aGUgYm9vdFxuICogbG9ncyByYXRoZXIgdGhhbiBvbiB0aGUgZmlyc3QgY2FyZCwgYW5kIGluc3RhbGxzIHRoZSBwbHVnaW4ncyBgZXhlY3V0ZSgpYCBhc1xuICogdGhlIHJ1bnRpbWUncyBleGVjdXRvciBzbyBldmVyeSBidWlsZCAvIHBvc3QgcGlja3MgdXAgQXBwS2l0J3MgY2FjaGUgLyByZXRyeSAvXG4gKiB0aW1lb3V0IC8gdGVsZW1ldHJ5IGNoYWluLlxuICpcbiAqIFRoZSBwbHVnaW4gaXMgYWxzbyBhIGBUb29sUHJvdmlkZXJgLCBzbyBhbiBBcHBLaXQgYWdlbnQgY2FuIHJlYWNoIGFcbiAqIGB0ZWFtcy5jcmVhdGVDYXJkYCB0b29sIGRpcmVjdGx5OyB0aGUge0BsaW5rIHRlYW1zQ2FyZFRvb2x9IGV4cG9ydCBpcyB0aGUgc2FtZVxuICogY2FwYWJpbGl0eSBmb3IgYSBNYXN0cmEgYWdlbnQuIEJvdGggc2hhcmUgdGhlIHJ1bnRpbWUgcHJpbWVkIGhlcmUuXG4gKlxuICogVGhlIHBsdWdpbiBtb3VudHMgZm91ciByb3V0ZXMgdW5kZXIgaXRzIGJhc2UgcGF0aCAoYC9hcGkvdGVhbXNgKTpcbiAqXG4gKiAgIC0gYFBPU1QgL21lc3NhZ2VzYCBpcyB0aGUgUkVBTCBNaWNyb3NvZnQgVGVhbXMgbWVzc2FnaW5nIGVuZHBvaW50IC0gdGhlIFVSTFxuICogICAgIGFuIEF6dXJlIEJvdCByZWdpc3RyYXRpb24gcG9pbnRzIGF0LiBJdCB2YWxpZGF0ZXMgdGhlIEJvdCBTZXJ2aWNlIEpXVCxcbiAqICAgICBhY2tub3dsZWRnZXMgaW1tZWRpYXRlbHksIGFuZCBkZWxpdmVycyB0aGUgYWdlbnQncyBjYXJkIGJhY2sgb3ZlciB0aGVcbiAqICAgICBDb25uZWN0b3IgQVBJLiBUaGlzIGlzIHRoZSByb3V0ZSB0aGF0IG1ha2VzIGEgVGVhbXMgY2hhbm5lbCBhYmxlIHRvIGNoYXRcbiAqICAgICB3aXRoIHRoZSBhcHAncyBhZ2VudHMsIHRoZSBzYW1lIHdheSB0aGUgTWFzdHJhIHBsdWdpbiBleHBvc2VzIE1DUCBhdCBhXG4gKiAgICAgcGF0aC5cbiAqICAgLSBgUE9TVCAvYWN0aXZpdHlgIHJ1bnMgdGhlIHNhbWUgdHVybiBTWU5DSFJPTk9VU0xZLCBhbnN3ZXJpbmcgd2l0aCB0aGVcbiAqICAgICByZXBseSBhY3Rpdml0aWVzIGluIHRoZSByZXNwb25zZSBib2R5LiBJdCBuZWVkcyBubyBib3QgcmVnaXN0cmF0aW9uLCBzb1xuICogICAgIGl0IGlzIHdoYXQgYSBsb2NhbCBjbGllbnQgKHRoZSBpbi1yZXBvIHByZXZpZXcgY2hhdCksIGEgdGVzdCwgb3IgYW55XG4gKiAgICAgbm9uLVRlYW1zIGNhbGxlciB1c2VzLlxuICogICAtIGBQT1NUIC9jYXJkYCBjb21waWxlcyBhIHtAbGluayBjYXJkLkNhcmRTcGVjfSBpbnRvIGFuIEFkYXB0aXZlIENhcmRcbiAqICAgICBkb2N1bWVudCAodGhlIHByZXZpZXcgcGFnZSBwb3N0cyBoZXJlKS5cbiAqICAgLSBgUE9TVCAvcG9zdGAgcHVzaGVzIGEgY29tcGlsZWQgY2FyZCB0byB0aGUgY29uZmlndXJlZCBUZWFtcyBpbmNvbWluZ1xuICogICAgIHdlYmhvb2sgd2hlbiBvbmUgaXMgc2V0LlxuICpcbiAqIE1pcnJvcnMgdGhlIG5vZGUtZW1haWwgYWRkLW9uJ3Mgc2hhcGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIFBsdWdpbixcbiAgdG9QbHVnaW4sXG4gIHR5cGUgRXhlY3V0aW9uUmVzdWx0LFxuICB0eXBlIElBcHBSb3V0ZXIsXG4gIHR5cGUgUGx1Z2luTWFuaWZlc3QsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7XG4gIGRlZmluZVRvb2wsXG4gIGV4ZWN1dGVGcm9tUmVnaXN0cnksXG4gIHRvb2xzRnJvbVJlZ2lzdHJ5LFxuICB0eXBlIEFnZW50VG9vbERlZmluaXRpb24sXG4gIHR5cGUgVG9vbFByb3ZpZGVyLFxuICB0eXBlIFRvb2xSZWdpc3RyeSxcbn0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdC9iZXRhXCI7XG5pbXBvcnQgeyBlcnJvciwgbG9nLCBvYmplY3QsIHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBhY3Rpdml0eSBhcyBhY3Rpdml0eUNvbnRyYWN0LCBjYXJkIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLXRlYW1zXCI7XG5pbXBvcnQgeyB2ZXJpZnlCb3RUb2tlbiB9IGZyb20gXCIuL2F1dGgudHNcIjtcbmltcG9ydCB7IFRFQU1TX0NPTkZJR19TQ0hFTUEsIHR5cGUgVGVhbXNQbHVnaW5Db25maWcgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIHByb21wdE9mLFxuICByZXNvbHZlQ2FyZEFnZW50LFxuICByZXNvbHZlQ2FyZENvbnRleHRGYWN0b3J5LFxuICBydW5DYXJkVHVybixcbn0gZnJvbSBcIi4vY29udmVyc2F0aW9uLnRzXCI7XG5pbXBvcnQgeyBURUFNU19CVUlMRF9TRVRUSU5HUywgVEVBTVNfUE9TVF9TRVRUSU5HUywgVEVBTVNfVFVSTl9TRVRUSU5HUyB9IGZyb20gXCIuL2RlZmF1bHRzLnRzXCI7XG5pbXBvcnQgeyBkZWxpdmVyVHVybiwgcmVzb2x2ZVNlcnZpY2VVcmwgfSBmcm9tIFwiLi9tZXNzYWdpbmcudHNcIjtcbmltcG9ydCB7XG4gIGJ1aWxkQ2FyZCxcbiAgZ2V0VGVhbXNSdW50aW1lLFxuICBwb3N0Q2FyZCxcbiAgcmVzZXRUZWFtc1J1bnRpbWUsXG4gIHNldFRlYW1zRXhlY3V0b3IsXG59IGZyb20gXCIuL3J1bnRpbWUudHNcIjtcbmltcG9ydCB7IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OIH0gZnJvbSBcIi4vdG9vbC50c1wiO1xuXG4vKiogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIGNvbXBpbGluZyBhIGNhcmQuICovXG5jb25zdCBDQVJEX1JPVVRFID0gXCIvY2FyZFwiO1xuXG4vKiogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIHBvc3RpbmcgYSBjYXJkIHRvIGEgd2ViaG9vay4gKi9cbmNvbnN0IFBPU1RfUk9VVEUgPSBcIi9wb3N0XCI7XG5cbi8qKlxuICogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIG9uZSBjb252ZXJzYXRpb24gdHVybjogYSBCb3RcbiAqIEZyYW1ld29yayBhY3Rpdml0eSBpbiwgYWN0aXZpdGllcyBjYXJyeWluZyBBZGFwdGl2ZSBDYXJkcyBiYWNrLlxuICovXG5jb25zdCBBQ1RJVklUWV9ST1VURSA9IFwiL2FjdGl2aXR5XCI7XG5cbi8qKlxuICogTW91bnQtcmVsYXRpdmUgcm91dGUgKHVuZGVyIGAvYXBpL3RlYW1zYCkgZm9yIHRoZSBUZWFtcyBtZXNzYWdpbmcgZW5kcG9pbnQuXG4gKiBUaGlzIGlzIHRoZSBwYXRoIGEgYm90IHJlZ2lzdHJhdGlvbidzIG1lc3NhZ2luZyBlbmRwb2ludCBwb2ludHMgYXQsIGkuZS5cbiAqIGBodHRwczovLzxob3N0Pi9hcGkvdGVhbXMvbWVzc2FnZXNgLlxuICovXG5jb25zdCBNRVNTQUdFU19ST1VURSA9IFwiL21lc3NhZ2VzXCI7XG5cbi8qKiBSZWdpc3RyeSBrZXkgb2YgdGhlIGFnZW50IHRvb2wsIHdoaWNoIGFnZW50cyBhZGRyZXNzIGFzIGB0ZWFtcy5jcmVhdGVDYXJkYC4gKi9cbmNvbnN0IENSRUFURV9UT09MID0gXCJjcmVhdGVDYXJkXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtc1wiKTtcblxuLyoqXG4gKiBBcHBLaXQgcGx1Z2luIHRoYXQgY29uZmlndXJlcyB0aGUgQWRhcHRpdmUgQ2FyZCBidWlsZGVyIHVzZWQgYnkgdGhlXG4gKiBgY3JlYXRlX3RlYW1zX2NhcmRgIHRvb2wsIGFuZCBleHBvc2VzIGNhcmQgYnVpbGRpbmcgYXMgYW4gQXBwS2l0IGFnZW50IHRvb2wuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjcmVhdGVBcHAsIHNlcnZlciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbiAqIGltcG9ydCB7IHBsdWdpbiBhcyB0ZWFtc1BsdWdpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3RlYW1zXCI7XG4gKlxuICogYXdhaXQgY3JlYXRlQXBwKHtcbiAqICAgcGx1Z2luczogW1xuICogICAgIHNlcnZlcigpLFxuICogICAgIHRlYW1zUGx1Z2luLnRlYW1zKHsgd2ViaG9va1VybDogcHJvY2Vzcy5lbnYuVEVBTVNfV0VCSE9PS19VUkwgfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVGVhbXNQbHVnaW4gZXh0ZW5kcyBQbHVnaW48VGVhbXNQbHVnaW5Db25maWc+IGltcGxlbWVudHMgVG9vbFByb3ZpZGVyIHtcbiAgc3RhdGljIG1hbmlmZXN0ID0ge1xuICAgIG5hbWU6IFwidGVhbXNcIixcbiAgICBkaXNwbGF5TmFtZTogXCJUZWFtc1wiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBbnN3ZXJzIGNoYXQgdHVybnMgYXMgTWljcm9zb2Z0IFRlYW1zIEFkYXB0aXZlIENhcmRzIG92ZXIgYSBCb3QgXCIgK1xuICAgICAgXCJGcmFtZXdvcmsgYWN0aXZpdHkgZW5kcG9pbnQsIGJ1aWxkcyBjYXJkcyBmcm9tIGEgc21hbGwgc3RydWN0dXJlZCBjYXJkIFwiICtcbiAgICAgIFwiZGVzY3JpcHRpb24sIGFuZCBvcHRpb25hbGx5IHBvc3RzIHRoZW0gdG8gYSBUZWFtcyBpbmNvbWluZyB3ZWJob29rLlwiLFxuICAgIHN0YWJpbGl0eTogXCJiZXRhXCIsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICByZXF1aXJlZDogW10sXG4gICAgICBvcHRpb25hbDogW10sXG4gICAgfSxcbiAgICBjb25maWc6IHsgc2NoZW1hOiBURUFNU19DT05GSUdfU0NIRU1BIH0sXG4gIH0gc2F0aXNmaWVzIFBsdWdpbk1hbmlmZXN0PFwidGVhbXNcIj47XG5cbiAgLyoqXG4gICAqIFRoZSB0b29sIHRoaXMgcGx1Z2luIG9mZmVycyB0byBhbiBBcHBLaXQgYWdlbnQuXG4gICAqXG4gICAqIE1hcmtlZCBgYXV0b0luaGVyaXRhYmxlYDogYnVpbGRpbmcgYSBjYXJkIGlzIGEgcHVyZSwgc2lkZS1lZmZlY3QtZnJlZVxuICAgKiB0cmFuc2Zvcm0gKG5vdGhpbmcgbGVhdmVzIHRoZSBidWlsZGluZyksIHNvIGl0IGlzIHNhZmUgdG8gaGFuZCB0byBhbnlcbiAgICogYWdlbnQgYnkgZGVmYXVsdCAtIHVubGlrZSBhIHNlbmQuXG4gICAqXG4gICAqIGBleGVjdXRlYCByZS1wYXJzZXMgaXRzIGFyZ3VtZW50cyB3aXRoIHRoZSBsb2NhbCBzY2hlbWE6IEFwcEtpdCB2YWxpZGF0ZXNcbiAgICogYWdhaW5zdCB0aGUgc2FtZSBzY2hlbWEgZmlyc3QsIGJ1dCByZS1wYXJzaW5nIGlzIHdoYXQgZ2l2ZXMgdGhlIGJvZHkgdHlwZWRcbiAgICogYXJndW1lbnRzIGluc3RlYWQgb2YgYHVua25vd25gLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0b29sczogVG9vbFJlZ2lzdHJ5ID0ge1xuICAgIFtDUkVBVEVfVE9PTF06IGRlZmluZVRvb2woe1xuICAgICAgZGVzY3JpcHRpb246IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OLFxuICAgICAgc2NoZW1hOiBjYXJkLmNhcmRTcGVjU2NoZW1hLFxuICAgICAgYW5ub3RhdGlvbnM6IHsgZWZmZWN0OiBcInJlYWRcIiB9LFxuICAgICAgYXV0b0luaGVyaXRhYmxlOiB0cnVlLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MsIHNpZ25hbCkgPT4gYnVpbGRDYXJkKGNhcmQuY2FyZFNwZWNTY2hlbWEucGFyc2UoYXJncyksIHNpZ25hbCksXG4gICAgfSksXG4gIH07XG5cbiAgLyoqXG4gICAqIFByaW1lIHRoZSBzaGFyZWQgcnVudGltZSBmcm9tIHRoaXMgcGx1Z2luJ3MgY29uZmlnIChvdmVyIGVudiksIHJvdXRlIHRoZVxuICAgKiB0b29sJ3MgYnVpbGRzIHRocm91Z2ggdGhpcyBwbHVnaW4ncyBpbnRlcmNlcHRvciBjaGFpbiwgYW5kIGxvZyB0aGVcbiAgICogZWZmZWN0aXZlIGNvbmZpZyBzbyB0aGUgcmVzb2x2ZWQgY2FyZCB2ZXJzaW9uIGFuZCB3aGV0aGVyIGEgd2ViaG9vayBpc1xuICAgKiB3aXJlZCB1cCBhcmUgb2J2aW91cyBhdCBib290LlxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSh0aGlzLmNvbmZpZyk7XG4gICAgc2V0VGVhbXNFeGVjdXRvcigoZm4sIHNldHRpbmdzKSA9PiB0aGlzLmV4ZWN1dGUoZm4sIHNldHRpbmdzKSk7XG4gICAgbG9nZ2VyLmluZm8oXCJyZWFkeVwiLCB7XG4gICAgICBjYXJkVmVyc2lvbjogY29uZmlnLmNhcmRWZXJzaW9uLFxuICAgICAgd2ViaG9vazogY29uZmlnLndlYmhvb2tVcmwgPyBcImNvbmZpZ3VyZWRcIiA6IFwiZGlzYWJsZWRcIixcbiAgICAgIG1lc3NhZ2luZzogY29uZmlnLmFsbG93VW5hdXRoZW50aWNhdGVkXG4gICAgICAgID8gXCJVTkFVVEhFTlRJQ0FURUQgKGRldmVsb3BtZW50KVwiXG4gICAgICAgIDogY29uZmlnLmFwcElkICYmIGNvbmZpZy5hcHBQYXNzd29yZFxuICAgICAgICAgID8gXCJib3QgcmVnaXN0cmF0aW9uIGNvbmZpZ3VyZWRcIlxuICAgICAgICAgIDogXCJkaXNhYmxlZCAobm8gYXBwSWQvYXBwUGFzc3dvcmQpXCIsXG4gICAgfSk7XG4gICAgLy8gQW4gZW5kcG9pbnQgc2VydmluZyBhZ2VudCB0dXJucyB3aXRoIG5vIGF1dGggaXMgd29ydGggYSB3YXJuaW5nIG9uIGV2ZXJ5XG4gICAgLy8gYm9vdCwgbm90IGEgbGluZSBidXJpZWQgaW4gYW4gaW5mbyBwYXlsb2FkLlxuICAgIGlmIChjb25maWcuYWxsb3dVbmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBcIlBPU1QgL21lc3NhZ2VzIGlzIHNlcnZpbmcgVU5BVVRIRU5USUNBVEVEIHR1cm5zIC0gYW55IGNhbGxlciB0aGF0IGNhbiBcIiArXG4gICAgICAgICAgXCJyZWFjaCB0aGlzIHJvdXRlIGNhbiBkcml2ZSB0aGUgYWdlbnQuIERldmVsb3BtZW50IG9ubHk7IG5ldmVyIGV4cG9zZSB0aGlzLlwiLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogRHJvcCB0aGUgc2hhcmVkIHJ1bnRpbWUuIElkZW1wb3RlbnQuICovXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJlc2V0VGVhbXNSdW50aW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogTW91bnQgdGhlIGNhcmQtYnVpbGRpbmcgYW5kIGNhcmQtcG9zdGluZyByb3V0ZXMgdW5kZXIgdGhlIHBsdWdpbiBiYXNlXG4gICAqIHBhdGggKGAvYXBpL3RlYW1zYCkuIGBQT1NUIC9jYXJkYCBpcyB3aGF0IHRoZSBkZXYgZGlzcGxheSBwYWdlIGNhbGxzIHRvXG4gICAqIHByZXZpZXcgYSBjYXJkIGxpdmU7IGBQT1NUIC9wb3N0YCBwdXNoZXMgYSBjb21waWxlZCBjYXJkIHRvIHRoZSBjb25maWd1cmVkXG4gICAqIFRlYW1zIGluY29taW5nIHdlYmhvb2suXG4gICAqXG4gICAqIE5laXRoZXIgcm91dGUgaXMgd3JhcHBlZCBpbiBgYXNVc2VyKHJlcSlgOiBjb21waWxpbmcgYSBjYXJkIGlzIGEgcHVyZVxuICAgKiB0cmFuc2Zvcm0gb2YgdGhlIHJlcXVlc3QgYm9keSBhbmQgcG9zdGluZyBnb2VzIHRvIGEgcHJlY29uZmlndXJlZCB3ZWJob29rLFxuICAgKiBzbyBuZWl0aGVyIHJlYWRzIHdvcmtzcGFjZSBkYXRhIG9uIHRoZSBjYWxsZXIncyBiZWhhbGYgYW5kIG5laXRoZXIgbmVlZHMgYW5cbiAgICogT0JPIHRva2VuLiBXcmFwcGluZyB0aGVtIHdvdWxkIG1ha2UgdGhlIHJvdXRlcyB0aHJvd1xuICAgKiBgQXV0aGVudGljYXRpb25FcnJvcmAgd2hlbmV2ZXIgdGhlIHVzZXItdG9rZW4gaGVhZGVyIGlzIGFic2VudCAoYSBsb2NhbFxuICAgKiBgY3VybGAsIGEgaGVhbHRoIHByb2JlKSwgd2hpY2ggLSBzaW5jZSBBcHBLaXQgZG9lcyBub3QgY2F0Y2ggYSByZWplY3Rpb25cbiAgICogcmFpc2VkIGluc2lkZSB0aGUgaGFuZGxlciAtIHRha2VzIHRoZSBwcm9jZXNzIGRvd24gcmF0aGVyIHRoYW4gYW5zd2VyaW5nXG4gICAqIDQwMS5cbiAgICovXG4gIG92ZXJyaWRlIGluamVjdFJvdXRlcyhyb3V0ZXI6IElBcHBSb3V0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlKHJvdXRlciwge1xuICAgICAgbmFtZTogXCJidWlsZENhcmRcIixcbiAgICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgICBwYXRoOiBDQVJEX1JPVVRFLFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZUJ1aWxkKHJlcS5ib2R5KTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5zdGF0dXMpLmpzb24oeyBlcnJvcjogcmVzdWx0Lm1lc3NhZ2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5qc29uKHJlc3VsdC5kYXRhKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZShyb3V0ZXIsIHtcbiAgICAgIG5hbWU6IFwiYWN0aXZpdHlcIixcbiAgICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgICBwYXRoOiBBQ1RJVklUWV9ST1VURSxcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVUdXJuKHJlcS5ib2R5KTtcbiAgICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5zdGF0dXMpLmpzb24oeyBlcnJvcjogcmVzdWx0Lm1lc3NhZ2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5qc29uKHJlc3VsdC5kYXRhKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZShyb3V0ZXIsIHtcbiAgICAgIG5hbWU6IFwicG9zdENhcmRcIixcbiAgICAgIG1ldGhvZDogXCJwb3N0XCIsXG4gICAgICBwYXRoOiBQT1NUX1JPVVRFLFxuICAgICAgaGFuZGxlcjogYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVBvc3QocmVxLmJvZHkpO1xuICAgICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICAgIHJlcy5zdGF0dXMocmVzdWx0LnN0YXR1cykuanNvbih7IGVycm9yOiByZXN1bHQubWVzc2FnZSB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVzLmpzb24oeyBvazogdHJ1ZSB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgLy8gVGhlIHJlYWwgVGVhbXMgbWVzc2FnaW5nIGVuZHBvaW50LiBVbmxpa2UgZXZlcnkgb3RoZXIgcm91dGUgaGVyZSBpdCBpc1xuICAgIC8vIGNhbGxlZCBieSBBenVyZSBCb3QgU2VydmljZSBvdmVyIHRoZSBwdWJsaWMgaW50ZXJuZXQsIHNvIGl0IGF1dGhlbnRpY2F0ZXNcbiAgICAvLyBpdHNlbGYgZnJvbSB0aGUgaW5ib3VuZCBKV1QgYW5kIGFuc3dlcnMgYDIwMGAgYmVmb3JlIHRoZSBhZ2VudCBoYXMgcnVuLlxuICAgIHRoaXMucm91dGUocm91dGVyLCB7XG4gICAgICBuYW1lOiBcIm1lc3NhZ2VzXCIsXG4gICAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgICAgcGF0aDogTUVTU0FHRVNfUk9VVEUsXG4gICAgICBoYW5kbGVyOiBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVNZXNzYWdlKHJlcSwgcmVzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBleHBvcnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIENvbXBpbGUgYSBjYXJkIHNwZWMgaW50byBhbiBBZGFwdGl2ZSBDYXJkIGRvY3VtZW50LiBGb3IgYWdlbnQtZHJpdmVuXG4gICAgICAgKiBidWlsZHMgdXNlIHtAbGluayB0ZWFtc0NhcmRUb29sfSBpbnN0ZWFkLlxuICAgICAgICovXG4gICAgICBidWlsZENhcmQ6IChzcGVjOiBjYXJkLkNhcmRTcGVjLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Y2FyZC5DYXJkUmVzdWx0PiA9PlxuICAgICAgICBidWlsZENhcmQoc3BlYywgc2lnbmFsKSxcbiAgICAgIC8qKlxuICAgICAgICogUG9zdCBhIGNvbXBpbGVkIGNhcmQgdG8gdGhlIGNvbmZpZ3VyZWQgVGVhbXMgaW5jb21pbmcgd2ViaG9vay4gVGhyb3dzXG4gICAgICAgKiB3aGVuIG5vIHdlYmhvb2sgaXMgY29uZmlndXJlZC5cbiAgICAgICAqL1xuICAgICAgcG9zdENhcmQ6IChjYXJkRG9jdW1lbnQ6IGNhcmQuQWRhcHRpdmVDYXJkLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgcG9zdENhcmQoY2FyZERvY3VtZW50LCBzaWduYWwpLFxuICAgIH07XG4gIH1cblxuICAvKiogQXBwS2l0IGBUb29sUHJvdmlkZXJgOiB0aGUgdG9vbCBkZWZpbml0aW9ucyBvZmZlcmVkIHRvIGFuIGFnZW50LiAqL1xuICBnZXRBZ2VudFRvb2xzKCk6IEFnZW50VG9vbERlZmluaXRpb25bXSB7XG4gICAgcmV0dXJuIHRvb2xzRnJvbVJlZ2lzdHJ5KHRoaXMudG9vbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcEtpdCBgVG9vbFByb3ZpZGVyYDogcnVuIG9uZSB0b29sIGNhbGwuIEFyZ3VtZW50cyBhcmUgdmFsaWRhdGVkIGFnYWluc3RcbiAgICogdGhlIHRvb2wncyBzY2hlbWEgZmlyc3QsIGFuZCBhIHZhbGlkYXRpb24gZmFpbHVyZSBjb21lcyBiYWNrIGFzIGFuXG4gICAqIExMTS1mcmllbmRseSBzdHJpbmcgc28gdGhlIG1vZGVsIGNhbiBjb3JyZWN0IGl0c2VsZiBvbiB0aGUgbmV4dCB0dXJuLlxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZUFnZW50VG9vbChuYW1lOiBzdHJpbmcsIGFyZ3M6IHVua25vd24sIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIGV4ZWN1dGVGcm9tUmVnaXN0cnkodGhpcy50b29scywgbmFtZSwgYXJncywgc2lnbmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgb25lIGluYm91bmQgcmVxdWVzdCBmcm9tIEF6dXJlIEJvdCBTZXJ2aWNlIG9uIGBQT1NUIC9tZXNzYWdlc2AuXG4gICAqXG4gICAqIFRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGlzIGRpY3RhdGVkIGJ5IGhvdyBCb3QgU2VydmljZSBiZWhhdmVzLCBub3QgYnlcbiAgICogY29udmVuaWVuY2U6XG4gICAqXG4gICAqICAgMS4gKipSZWZ1c2Ugd2hlbiB1bmNvbmZpZ3VyZWQuKiogV2l0aCBubyBgYXBwSWRgIHRoZXJlIGlzIG5vIGF1ZGllbmNlIHRvXG4gICAqICAgICAgdmFsaWRhdGUgYSB0b2tlbiBhZ2FpbnN0LCBzbyB0aGUgZW5kcG9pbnQgY2Fubm90IGJlIG9wZXJhdGVkIHNhZmVseTtcbiAgICogICAgICBpdCBhbnN3ZXJzIDUwMyByYXRoZXIgdGhhbiBwcm9jZXNzaW5nIGFuIHVuYXV0aGVudGljYXRlZCBhY3Rpdml0eS5cbiAgICogICAyLiAqKlZhbGlkYXRlIHRoZSBKV1QgYmVmb3JlIHBhcnNpbmcgdGhlIGJvZHkuKiogVGhlIHRva2VuIGlzIHRoZSBvbmx5XG4gICAqICAgICAgdHJ1c3QgYm91bmRhcnkgdGhpcyBlbmRwb2ludCBoYXMuXG4gICAqICAgMy4gKipQaW4gdGhlIHJlcGx5IGRlc3RpbmF0aW9uIHRvIHRoZSB0b2tlbi4qKiBgc2VydmljZVVybGAgYXJyaXZlcyBpbiB0aGVcbiAgICogICAgICBib2R5LCBhbmQgcmVwbGllcyBjYXJyeSB0aGUgYm90J3MgY3JlZGVudGlhbHMsIHNvIGl0IGlzIG9ubHkgaG9ub3JlZFxuICAgKiAgICAgIHdoZW4gaXQgbWF0Y2hlcyB0aGUgdmVyaWZpZWQgdG9rZW4uXG4gICAqICAgNC4gKipBbnN3ZXIgMjAwIGltbWVkaWF0ZWx5LCB0aGVuIHJ1biB0aGUgYWdlbnQuKiogQm90IFNlcnZpY2UgdGltZXMgb3V0XG4gICAqICAgICAgYW4gdW5hY2tub3dsZWRnZWQgYWN0aXZpdHkgaW4gc2Vjb25kcyBhbmQgUkVUUklFUyBpdDsgYSBjYXJkIHRha2VzIGZhclxuICAgKiAgICAgIGxvbmdlciB0aGFuIHRoYXQsIGFuZCBhIHJldHJ5IHdvdWxkIHBvc3QgYSBkdXBsaWNhdGUgY2FyZC5cbiAgICpcbiAgICogQWN0aXZpdGllcyB0aGF0IGNhcnJ5IG5vIHByb21wdCAoYHR5cGluZ2AsIGBjb252ZXJzYXRpb25VcGRhdGVgLCBhblxuICAgKiBhdHRhY2htZW50LW9ubHkgbWVzc2FnZSkgYXJlIGFja25vd2xlZGdlZCBhbmQgZHJvcHBlZCAtIGV4YWN0bHkgd2hhdCBhIGJvdFxuICAgKiBkb2VzIHdpdGggdGhlbS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlTWVzc2FnZShcbiAgICByZXE6IHsgaGVhZGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IGJvZHk6IHVua25vd24gfSxcbiAgICByZXM6IHtcbiAgICAgIHN0YXR1cyhjb2RlOiBudW1iZXIpOiB7IGpzb24oYm9keTogdW5rbm93bik6IHZvaWQgfTtcbiAgICAgIGpzb24oYm9keTogdW5rbm93bik6IHZvaWQ7XG4gICAgICBoZWFkZXJzU2VudD86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSh0aGlzLmNvbmZpZyk7XG5cbiAgICAvLyBMb2NhbCBkZXZlbG9wbWVudCBtb2RlOiBubyBib3QgcmVnaXN0cmF0aW9uLCBubyB0b2tlbiwgYW5kIHRoZSByZXBseSBjb21lc1xuICAgIC8vIGJhY2sgaW4gdGhlIEhUVFAgcmVzcG9uc2UgcmF0aGVyIHRoYW4gdGhyb3VnaCB0aGUgQ29ubmVjdG9yIEFQSSAodGhlcmUgaXNcbiAgICAvLyBubyBgc2VydmljZVVybGAgdG8gY2FsbCBiYWNrIHRvKS4gVGhpcyBpcyB3aGF0IGxldHMgdGhlIGluLXJlcG8gcHJldmlld1xuICAgIC8vIGNoYXQgYW5kIHRoZSBCb3QgRnJhbWV3b3JrIEVtdWxhdG9yIGRyaXZlIHRoZSBzYW1lIHJvdXRlIFRlYW1zIHVzZXMuXG4gICAgaWYgKGNvbmZpZy5hbGxvd1VuYXV0aGVudGljYXRlZCkge1xuICAgICAgLy8gQWNjZXB0IGJvdGggZW52ZWxvcGVzOiBhIGJhcmUgYWN0aXZpdHkgKHdoYXQgQm90IFNlcnZpY2UgYW5kIHRoZVxuICAgICAgLy8gZW11bGF0b3IgUE9TVCkgYW5kIHRoZSBgeyBhY3Rpdml0eSwgYWdlbnRJZCB9YCByZXF1ZXN0IHNoYXBlIHRoZVxuICAgICAgLy8gYC9hY3Rpdml0eWAgcm91dGUgdGFrZXMsIHNvIGEgbG9jYWwgY2xpZW50IGNhbiBzdGlsbCBjaG9vc2UgYW4gYWdlbnQuXG4gICAgICBjb25zdCBib2R5ID1cbiAgICAgICAgb2JqZWN0LmlzUmVjb3JkKHJlcS5ib2R5KSAmJiBvYmplY3QuaXNSZWNvcmQocmVxLmJvZHkuYWN0aXZpdHkpXG4gICAgICAgICAgPyByZXEuYm9keVxuICAgICAgICAgIDogeyBhY3Rpdml0eTogcmVxLmJvZHkgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZVR1cm4oYm9keSk7XG4gICAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgICByZXMuc3RhdHVzKHJlc3VsdC5zdGF0dXMpLmpzb24oeyBlcnJvcjogcmVzdWx0Lm1lc3NhZ2UgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5qc29uKHJlc3VsdC5kYXRhKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZy5hcHBJZCB8fCAhY29uZmlnLmFwcFBhc3N3b3JkKSB7XG4gICAgICByZXMuc3RhdHVzKDUwMykuanNvbih7XG4gICAgICAgIGVycm9yOlxuICAgICAgICAgIFwidGVhbXM6IG1lc3NhZ2luZyBlbmRwb2ludCBpcyBub3QgY29uZmlndXJlZCAtIHNldCBhcHBJZC9hcHBQYXNzd29yZCBcIiArXG4gICAgICAgICAgXCIoVEVBTVNfQVBQX0lEIC8gVEVBTVNfQVBQX1BBU1NXT1JEKSBmcm9tIHRoZSBBenVyZSBCb3QgcmVnaXN0cmF0aW9uXCIsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRob3JpemF0aW9uID0gcmVhZEhlYWRlcihyZXEuaGVhZGVycywgXCJhdXRob3JpemF0aW9uXCIpO1xuICAgIGxldCB2ZXJpZmllZDtcbiAgICB0cnkge1xuICAgICAgdmVyaWZpZWQgPSBhd2FpdCB2ZXJpZnlCb3RUb2tlbihhdXRob3JpemF0aW9uLCB7XG4gICAgICAgIGFwcElkOiBjb25maWcuYXBwSWQsXG4gICAgICAgIC4uLihjb25maWcuYXBwVGVuYW50SWQgPyB7IGFwcFRlbmFudElkOiBjb25maWcuYXBwVGVuYW50SWQgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gRGVsaWJlcmF0ZWx5IHRlcnNlOiBhIGNhbGxlciBmYWlsaW5nIGF1dGhlbnRpY2F0aW9uIGxlYXJucyBvbmx5IHRoYXQgaXRcbiAgICAgIC8vIGZhaWxlZCwgd2hpbGUgdGhlIHJlYXNvbiBnb2VzIHRvIHRoZSBsb2dzLlxuICAgICAgbG9nZ2VyLndhcm4oXCJyZWplY3RlZCBhbiB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdFwiLCB7IGVycm9yOiBlcnJvci5lcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgZXJyb3I6IFwidW5hdXRob3JpemVkXCIgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkID0gYWN0aXZpdHlDb250cmFjdC5hY3Rpdml0eVNjaGVtYS5zYWZlUGFyc2UocmVxLmJvZHkpO1xuICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHsgZXJyb3I6IHBhcnNlZC5lcnJvci5tZXNzYWdlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbmJvdW5kID0gcGFyc2VkLmRhdGE7XG5cbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gcmVzb2x2ZVNlcnZpY2VVcmwoaW5ib3VuZCwgdmVyaWZpZWQuc2VydmljZVVybCk7XG4gICAgaWYgKCFzZXJ2aWNlVXJsKSB7XG4gICAgICBsb2dnZXIud2FybihcInJlamVjdGVkIGFuIGFjdGl2aXR5IHdpdGggbm8gdXNhYmxlIHNlcnZpY2VVcmxcIiwge1xuICAgICAgICB0eXBlOiBpbmJvdW5kLnR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHsgZXJyb3I6IFwiYWN0aXZpdHkgY2FycmllZCBubyBhY2NlcHRhYmxlIHNlcnZpY2VVcmxcIiB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2VudCA9IHJlc29sdmVDYXJkQWdlbnQodGhpcy5jb250ZXh0Py5nZXRQbHVnaW5zKCksIGNvbmZpZy5hZ2VudFBsdWdpbik7XG4gICAgaWYgKCFhZ2VudCkge1xuICAgICAgbG9nZ2VyLmVycm9yKFwibm8gYWdlbnQgYXZhaWxhYmxlIHRvIGFuc3dlciBhIFRlYW1zIHR1cm5cIiwge1xuICAgICAgICBhZ2VudFBsdWdpbjogY29uZmlnLmFnZW50UGx1Z2luLFxuICAgICAgfSk7XG4gICAgICByZXMuc3RhdHVzKDUwMykuanNvbih7IGVycm9yOiBcIm5vIGFnZW50IGF2YWlsYWJsZVwiIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFja25vd2xlZGdlIEZJUlNULiBFdmVyeXRoaW5nIGFmdGVyIHRoaXMgcG9pbnQgaXMgb3V0LW9mLWJhbmQgd29yayB3aG9zZVxuICAgIC8vIHJlc3VsdCByZWFjaGVzIHRoZSB1c2VyIHRocm91Z2ggdGhlIENvbm5lY3RvciBBUEksIG5vdCB0aGlzIHJlc3BvbnNlLlxuICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHt9KTtcblxuICAgIGlmICghcHJvbXB0T2YoaW5ib3VuZCkpIHJldHVybjtcblxuICAgIGNvbnN0IGNyZWF0ZVJlcXVlc3RDb250ZXh0ID0gcmVzb2x2ZUNhcmRDb250ZXh0RmFjdG9yeShcbiAgICAgIHRoaXMuY29udGV4dD8uZ2V0UGx1Z2lucygpLFxuICAgICAgY29uZmlnLmFnZW50UGx1Z2luLFxuICAgICk7XG5cbiAgICB2b2lkIGRlbGl2ZXJUdXJuKHtcbiAgICAgIGFnZW50LFxuICAgICAgYWN0aXZpdHk6IGluYm91bmQsXG4gICAgICBzZXJ2aWNlVXJsLFxuICAgICAgLi4uKGNyZWF0ZVJlcXVlc3RDb250ZXh0ID8geyBjcmVhdGVSZXF1ZXN0Q29udGV4dCB9IDoge30pLFxuICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgYXBwSWQ6IGNvbmZpZy5hcHBJZCxcbiAgICAgICAgYXBwUGFzc3dvcmQ6IGNvbmZpZy5hcHBQYXNzd29yZCxcbiAgICAgICAgLi4uKGNvbmZpZy5hcHBUZW5hbnRJZCA/IHsgYXBwVGVuYW50SWQ6IGNvbmZpZy5hcHBUZW5hbnRJZCB9IDoge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBDb21waWxlIGEgY2FyZCwgdmFsaWRhdGluZyB0aGUgcmVxdWVzdCBib2R5IGFnYWluc3QgdGhlIHNwZWMgc2NoZW1hLiAqL1xuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVCdWlsZChib2R5OiB1bmtub3duKTogUHJvbWlzZTxFeGVjdXRpb25SZXN1bHQ8Y2FyZC5DYXJkUmVzdWx0Pj4ge1xuICAgIGNvbnN0IHBhcnNlZCA9IGNhcmQuY2FyZFNwZWNTY2hlbWEuc2FmZVBhcnNlKGJvZHkpO1xuICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc3RhdHVzOiA0MDAsIG1lc3NhZ2U6IHBhcnNlZC5lcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoYXN5bmMgKHNpZ25hbCkgPT4gYnVpbGRDYXJkKHBhcnNlZC5kYXRhLCBzaWduYWwpLCBURUFNU19CVUlMRF9TRVRUSU5HUyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIG9uZSBjb252ZXJzYXRpb24gdHVybjogdmFsaWRhdGUgdGhlIGluYm91bmQgYWN0aXZpdHksIHJlc29sdmUgdGhlIGFnZW50XG4gICAqIGZyb20gdGhlIHNpYmxpbmcgYWdlbnQgcGx1Z2luLCBhbmQgYW5zd2VyIHdpdGggY2FyZC1jYXJyeWluZyBhY3Rpdml0aWVzLlxuICAgKlxuICAgKiBSZXNvbHV0aW9uIGZhaWx1cmVzIGFyZSByZXBvcnRlZCBkaXN0aW5jdGx5IGJlY2F1c2UgdGhleSBoYXZlIGRpZmZlcmVudFxuICAgKiBmaXhlczogNTAzIHdoZW4gbm8gYWdlbnQgcGx1Z2luIGlzIG1vdW50ZWQgYXQgYWxsIChhIHdpcmluZyBwcm9ibGVtKSwgNDA0XG4gICAqIHdoZW4gdGhlIGNhbGxlciBuYW1lZCBhbiBgYWdlbnRJZGAgdGhhdCBpcyBub3QgcmVnaXN0ZXJlZCAoYSByZXF1ZXN0XG4gICAqIHByb2JsZW0pLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlVHVybihcbiAgICBib2R5OiB1bmtub3duLFxuICApOiBQcm9taXNlPEV4ZWN1dGlvblJlc3VsdDxhY3Rpdml0eUNvbnRyYWN0LkFjdGl2aXR5UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgcGFyc2VkID0gYWN0aXZpdHlDb250cmFjdC5hY3Rpdml0eVJlcXVlc3RTY2hlbWEuc2FmZVBhcnNlKGJvZHkpO1xuICAgIGlmICghcGFyc2VkLnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgc3RhdHVzOiA0MDAsIG1lc3NhZ2U6IHBhcnNlZC5lcnJvci5tZXNzYWdlIH07XG4gICAgfVxuICAgIGNvbnN0IHsgYWN0aXZpdHksIGFnZW50SWQgfSA9IHBhcnNlZC5kYXRhO1xuICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRUZWFtc1J1bnRpbWUodGhpcy5jb25maWcpO1xuICAgIGNvbnN0IGFnZW50ID0gcmVzb2x2ZUNhcmRBZ2VudCh0aGlzLmNvbnRleHQ/LmdldFBsdWdpbnMoKSwgY29uZmlnLmFnZW50UGx1Z2luLCBhZ2VudElkKTtcbiAgICBpZiAoIWFnZW50KSB7XG4gICAgICByZXR1cm4gYWdlbnRJZFxuICAgICAgICA/IHsgb2s6IGZhbHNlLCBzdGF0dXM6IDQwNCwgbWVzc2FnZTogYHRlYW1zOiB1bmtub3duIGFnZW50ICcke2FnZW50SWR9J2AgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIHN0YXR1czogNTAzLFxuICAgICAgICAgICAgbWVzc2FnZTogYHRlYW1zOiBubyBhZ2VudCBhdmFpbGFibGUgLSBpcyB0aGUgJyR7Y29uZmlnLmFnZW50UGx1Z2lufScgcGx1Z2luIHJlZ2lzdGVyZWQ/YCxcbiAgICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBjcmVhdGVSZXF1ZXN0Q29udGV4dCA9IHJlc29sdmVDYXJkQ29udGV4dEZhY3RvcnkoXG4gICAgICB0aGlzLmNvbnRleHQ/LmdldFBsdWdpbnMoKSxcbiAgICAgIGNvbmZpZy5hZ2VudFBsdWdpbixcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUoYXN5bmMgKHNpZ25hbCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZpdGllcyA9IGF3YWl0IHJ1bkNhcmRUdXJuKGFnZW50LCBhY3Rpdml0eSwge1xuICAgICAgICAuLi4oY3JlYXRlUmVxdWVzdENvbnRleHQgPyB7IGNyZWF0ZVJlcXVlc3RDb250ZXh0IH0gOiB7fSksXG4gICAgICAgIC4uLihzaWduYWwgPyB7IHNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBhY3Rpdml0aWVzIH07XG4gICAgfSwgVEVBTVNfVFVSTl9TRVRUSU5HUyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGlsZSB0aGVuIHBvc3QgYSBjYXJkLCB2YWxpZGF0aW5nIHRoZSByZXF1ZXN0IGJvZHkgYWdhaW5zdCB0aGUgc3BlY1xuICAgKiBzY2hlbWEuIFRoZSBjb21waWxlIGlzIGZvbGRlZCBJTlRPIHRoZSBleGVjdXRlZCBjYWxsYmFjayBzbyBhIHRocm93IGZyb21cbiAgICogZWl0aGVyIGhhbGYgKGEgYnVpbGQgZmFpbHVyZSwgb3IgYHBvc3RDYXJkYCByZWZ1c2luZyBiZWNhdXNlIG5vIHdlYmhvb2sgaXNcbiAgICogY29uZmlndXJlZCkgY29tZXMgYmFjayBhcyBhIGZhaWxlZCB7QGxpbmsgRXhlY3V0aW9uUmVzdWx0fSB0aGUgcm91dGUgY2FuXG4gICAqIGFuc3dlciB3aXRoLCByYXRoZXIgdGhhbiBlc2NhcGluZyB0aGUgaGFuZGxlciBhcyBhbiB1bmhhbmRsZWQgcmVqZWN0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlUG9zdChib2R5OiB1bmtub3duKTogUHJvbWlzZTxFeGVjdXRpb25SZXN1bHQ8dm9pZD4+IHtcbiAgICBjb25zdCBwYXJzZWQgPSBjYXJkLmNhcmRTcGVjU2NoZW1hLnNhZmVQYXJzZShib2R5KTtcbiAgICBpZiAoIXBhcnNlZC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIHN0YXR1czogNDAwLCBtZXNzYWdlOiBwYXJzZWQuZXJyb3IubWVzc2FnZSB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlKGFzeW5jIChzaWduYWwpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWx0ID0gYXdhaXQgYnVpbGRDYXJkKHBhcnNlZC5kYXRhLCBzaWduYWwpO1xuICAgICAgYXdhaXQgcG9zdENhcmQoYnVpbHQuY2FyZCwgc2lnbmFsKTtcbiAgICB9LCBURUFNU19QT1NUX1NFVFRJTkdTKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBUZWFtcyBwbHVnaW4uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjcmVhdGVBcHAsIHNlcnZlciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbiAqIGltcG9ydCB7IHBsdWdpbiBhcyB0ZWFtc1BsdWdpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3RlYW1zXCI7XG4gKlxuICogYXdhaXQgY3JlYXRlQXBwKHtcbiAqICAgcGx1Z2luczogW3NlcnZlcigpLCB0ZWFtc1BsdWdpbi50ZWFtcygpXSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB0ZWFtcyA9IHRvUGx1Z2luKFRlYW1zUGx1Z2luKTtcblxuLyoqXG4gKiBSZWFkIG9uZSBoZWFkZXIgdmFsdWUsIG5vcm1hbGl6aW5nIE5vZGUncyBgc3RyaW5nIHwgc3RyaW5nW11gIHNoYXBlLlxuICpcbiAqIEV4cHJlc3MgbG93ZXItY2FzZXMgaW5jb21pbmcgaGVhZGVyIG5hbWVzLCBidXQgdGhpcyBpcyB3cml0dGVuIGFnYWluc3QgYVxuICogc3RydWN0dXJhbCBgaGVhZGVyc2AgcmVjb3JkIChzbyB0aGUgaGFuZGxlciBzdGF5cyB0ZXN0YWJsZSB3aXRob3V0IGFuIEV4cHJlc3NcbiAqIHJlcXVlc3QpLCBoZW5jZSB0aGUgZXhwbGljaXQgY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAuXG4gKi9cbmZ1bmN0aW9uIHJlYWRIZWFkZXIoaGVhZGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRpcmVjdCA9IGhlYWRlcnNbbmFtZV0gPz8gaGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldO1xuICBjb25zdCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkoZGlyZWN0KSA/IGRpcmVjdFswXSA6IGRpcmVjdDtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IChzdHJpbmcudHJpbVRvTnVsbCh2YWx1ZSkgPz8gdW5kZWZpbmVkKSA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -20,8 +20,8 @@
20
20
  */
21
21
  import { type ExecutionResult } from "@databricks/appkit";
22
22
  import { card } from "@dbx-tools/shared-teams";
23
- import { type ResolvedTeamsConfig, type TeamsPluginConfig } from "./config.js";
24
- import { type TeamsExecutionSettings } from "./defaults.js";
23
+ import { type ResolvedTeamsConfig, type TeamsPluginConfig } from "./config.ts";
24
+ import { type TeamsExecutionSettings } from "./defaults.ts";
25
25
  /**
26
26
  * Runs one operation through AppKit's interceptor chain. Matches
27
27
  * `Plugin.execute()`, which never throws: a failure comes back as
@@ -22,7 +22,7 @@ import { AppKitError, ExecutionError } from "@databricks/appkit";
22
22
  import { async, error, log } from "@dbx-tools/shared-core";
23
23
  import { buildCardResult } from "./builder.js";
24
24
  import { resolveTeamsConfig } from "./config.js";
25
- import { TEAMS_BUILD_SETTINGS, TEAMS_POST_SETTINGS } from "./defaults.js";
25
+ import { TEAMS_BUILD_SETTINGS, TEAMS_POST_SETTINGS, } from "./defaults.js";
26
26
  const logger = log.logger("teams/runtime");
27
27
  /**
28
28
  * Executor used until (or unless) the plugin installs its own: run the call
@@ -140,4 +140,4 @@ export async function postCard(cardDocument, signal) {
140
140
  }
141
141
  }, signal);
142
142
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQW9ELE1BQU0sVUFBVSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBK0IsTUFBTSxZQUFZLENBQUM7QUFFcEcsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQWtCM0M7Ozs7R0FJRztBQUNILE1BQU0sYUFBYSxHQUFrQixLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDaEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE9BQU87WUFDTCxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxHQUFHLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQ3pELE9BQU8sRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztTQUNqQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLElBQUksT0FBaUMsQ0FBQztBQUV0Qzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsU0FBNkI7SUFDM0QsSUFB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QUcsTUFBTSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1lBQy9DLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMxQixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3BELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLGNBQWMsQ0FBQyw0QkFBNEIsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN0RSxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFO2FBQ3hELENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgVGVhbXMgcnVudGltZTogYSBsYXppbHktcmVzb2x2ZWQsIHByb2Nlc3Mtd2lkZSBjb25maWcgc2hhcmVkIGJ5IHRoZVxuICogcGx1Z2luIGFuZCB0aGUgYGNyZWF0ZV90ZWFtc19jYXJkYCB0b29sLCBzbyBib3RoIHJlYWQgb25lIHJlc29sdmVkIGNhcmRcbiAqIHZlcnNpb24gLyB3ZWJob29rIHNldC4gVGhlIGZpcnN0IGNhbGxlciAobm9ybWFsbHkgdGhlIHBsdWdpbiBhdCBzZXR1cClcbiAqIHByaW1lcyBpdCBmcm9tIHRoZSBwbHVnaW4ncyBjb25maWc7IGxhdGVyIGNhbGxlcnMgKHRoZSB0b29sJ3MgYGV4ZWN1dGVgKVxuICogcmV1c2UgaXQuXG4gKlxuICogVGhlIHJ1bnRpbWUgYWxzbyBjYXJyaWVzIHRoZSB7QGxpbmsgVGVhbXNFeGVjdXRvcn0gZXZlcnkgb3BlcmF0aW9uIHJ1bnNcbiAqIHRocm91Z2guIFRoZSBwbHVnaW4gaW5zdGFsbHMgaXRzIG93biBgZXhlY3V0ZSgpYCB0aGVyZSBhdCBzZXR1cCwgd2hpY2ggaXMgaG93XG4gKiB0aGUgdG9vbCAtIGEgcGxhaW4gZnVuY3Rpb24gd2l0aCBubyBwbHVnaW4gaW5zdGFuY2UgaW4gc2NvcGUgLSBzdGlsbCBnZXRzXG4gKiBBcHBLaXQncyBjYWNoZSAvIHJldHJ5IC8gdGltZW91dCAvIHRlbGVtZXRyeSBjaGFpbi4gV2l0aG91dCBhIHJlZ2lzdGVyZWRcbiAqIHBsdWdpbiAoYSBkaXJlY3QgY2FsbCBmcm9tIGEgc2NyaXB0IG9yIGEgdGVzdCkgdGhlIG9wZXJhdGlvbnMgc3RpbGwgcnVuLCBqdXN0XG4gKiB3aXRob3V0IGludGVyY2VwdG9ycy5cbiAqXG4gKiBMaWtlIHRoZSB3ZWItc2VhcmNoIHJ1bnRpbWUgYW5kIHVubGlrZSB0aGUgZW1haWwgb25lLCB0aGVyZSBpcyBubyBjb25uZWN0aW9uXG4gKiBwb29sIHRvIGhvbGQgLSBjYXJkIGJ1aWxkaW5nIGlzIGluLXByb2Nlc3MgYW5kIGEgd2ViaG9vayBwb3N0IGlzIGEgc3RhdGVsZXNzXG4gKiBIVFRQIGNhbGwgLSBzbyB0aGUgcnVudGltZSBob2xkcyBvbmx5IHRoZSByZXNvbHZlZCBjb25maWcgYW5kIHRoYXQgZXhlY3V0b3IuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IEFwcEtpdEVycm9yLCBFeGVjdXRpb25FcnJvciwgdHlwZSBFeGVjdXRpb25SZXN1bHQgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBhc3luYywgZXJyb3IsIGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBjYXJkIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLXRlYW1zXCI7XG5pbXBvcnQgeyBidWlsZENhcmRSZXN1bHQgfSBmcm9tIFwiLi9idWlsZGVyXCI7XG5pbXBvcnQgeyByZXNvbHZlVGVhbXNDb25maWcsIHR5cGUgUmVzb2x2ZWRUZWFtc0NvbmZpZywgdHlwZSBUZWFtc1BsdWdpbkNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgVEVBTVNfQlVJTERfU0VUVElOR1MsIFRFQU1TX1BPU1RfU0VUVElOR1MsIHR5cGUgVGVhbXNFeGVjdXRpb25TZXR0aW5ncyB9IGZyb20gXCIuL2RlZmF1bHRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtcy9ydW50aW1lXCIpO1xuXG4vKipcbiAqIFJ1bnMgb25lIG9wZXJhdGlvbiB0aHJvdWdoIEFwcEtpdCdzIGludGVyY2VwdG9yIGNoYWluLiBNYXRjaGVzXG4gKiBgUGx1Z2luLmV4ZWN1dGUoKWAsIHdoaWNoIG5ldmVyIHRocm93czogYSBmYWlsdXJlIGNvbWVzIGJhY2sgYXNcbiAqIGB7IG9rOiBmYWxzZSB9YC5cbiAqL1xuZXhwb3J0IHR5cGUgVGVhbXNFeGVjdXRvciA9IDxUPihcbiAgZm46IChzaWduYWw/OiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzZTxUPixcbiAgc2V0dGluZ3M6IFRlYW1zRXhlY3V0aW9uU2V0dGluZ3MsXG4pID0+IFByb21pc2U8RXhlY3V0aW9uUmVzdWx0PFQ+PjtcblxuLyoqIFRoZSBzaGFyZWQgcmVzb2x2ZWQgY29uZmlnIHBsdXMgdGhlIGV4ZWN1dG9yIG9wZXJhdGlvbnMgcnVuIHRocm91Z2guICovXG5leHBvcnQgaW50ZXJmYWNlIFRlYW1zUnVudGltZSB7XG4gIGNvbmZpZzogUmVzb2x2ZWRUZWFtc0NvbmZpZztcbiAgZXhlY3V0ZTogVGVhbXNFeGVjdXRvcjtcbn1cblxuLyoqXG4gKiBFeGVjdXRvciB1c2VkIHVudGlsIChvciB1bmxlc3MpIHRoZSBwbHVnaW4gaW5zdGFsbHMgaXRzIG93bjogcnVuIHRoZSBjYWxsXG4gKiBkaXJlY3RseSwgbWFwcGluZyBhIHRocm93IG9udG8gdGhlIHNhbWUge0BsaW5rIEV4ZWN1dGlvblJlc3VsdH0gc2hhcGUgc29cbiAqIGNhbGwgc2l0ZXMgYnJhbmNoIG9uIGBva2AgZWl0aGVyIHdheS5cbiAqL1xuY29uc3QgZGlyZWN0RXhlY3V0ZTogVGVhbXNFeGVjdXRvciA9IGFzeW5jIChmbikgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCBkYXRhOiBhd2FpdCBmbigpIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB7XG4gICAgICBvazogZmFsc2UsXG4gICAgICBzdGF0dXM6IGVyciBpbnN0YW5jZW9mIEFwcEtpdEVycm9yID8gZXJyLnN0YXR1c0NvZGUgOiA1MDAsXG4gICAgICBtZXNzYWdlOiBlcnJvci5lcnJvck1lc3NhZ2UoZXJyKSxcbiAgICB9O1xuICB9XG59O1xuXG5sZXQgcnVudGltZTogVGVhbXNSdW50aW1lIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJldHVybiB0aGUgc2hhcmVkIHJ1bnRpbWUsIGJ1aWxkaW5nIGl0IG9uIGZpcnN0IHVzZSBmcm9tIHRoZSBzdXBwbGllZCBjb25maWdcbiAqIGxheWVyZWQgb3ZlciBlbnZpcm9ubWVudCBkZWZhdWx0cy4gT3ZlcnJpZGVzIGFyZSBvbmx5IHJlYWQgd2hlbiB0aGUgcnVudGltZVxuICogaXMgZmlyc3QgY3JlYXRlZCwgc28gcHJpbWUgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnIGF0IHNldHVwOyBzdWJzZXF1ZW50XG4gKiBjYWxscyAodGhlIHRvb2wncyBgZXhlY3V0ZWApIHBhc3Mgbm90aGluZyBhbmQgZ2V0IHRoZSBzYW1lIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVhbXNSdW50aW1lKG92ZXJyaWRlcz86IFRlYW1zUGx1Z2luQ29uZmlnKTogVGVhbXNSdW50aW1lIHtcbiAgaWYgKCFydW50aW1lKSB7XG4gICAgcnVudGltZSA9IHsgY29uZmlnOiByZXNvbHZlVGVhbXNDb25maWcob3ZlcnJpZGVzKSwgZXhlY3V0ZTogZGlyZWN0RXhlY3V0ZSB9O1xuICB9XG4gIHJldHVybiBydW50aW1lO1xufVxuXG4vKipcbiAqIEluc3RhbGwgdGhlIGV4ZWN1dG9yIG9wZXJhdGlvbnMgcnVuIHRocm91Z2guIFRoZSBwbHVnaW4gY2FsbHMgdGhpcyBhdCBzZXR1cFxuICogd2l0aCBpdHMgb3duIGBleGVjdXRlKClgOyBhIHNlY29uZCBjYWxsIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUsIHNvIGFcbiAqIHJlLXJlZ2lzdGVyZWQgcGx1Z2luIGRvZXMgbm90IGxlYXZlIHRoZSB0b29sIGJvdW5kIHRvIGEgZGVhZCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRlYW1zRXhlY3V0b3IoZXhlY3V0ZTogVGVhbXNFeGVjdXRvcik6IHZvaWQge1xuICBnZXRUZWFtc1J1bnRpbWUoKS5leGVjdXRlID0gZXhlY3V0ZTtcbn1cblxuLyoqIERyb3AgdGhlIG1lbW9pemVkIHJ1bnRpbWUgc28gdGhlIG5leHQge0BsaW5rIGdldFRlYW1zUnVudGltZX0gcmVidWlsZHMgaXQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRUZWFtc1J1bnRpbWUoKTogdm9pZCB7XG4gIHJ1bnRpbWUgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUnVuIG9uZSBvcGVyYXRpb24gdGhyb3VnaCB0aGUgc2hhcmVkIGV4ZWN1dG9yIGFuZCB1bndyYXAgaXQuXG4gKlxuICogYGV4ZWN1dGUoKWAgbmV2ZXIgdGhyb3dzLCBzbyBhIGZhaWxlZCBjYWxsIGFycml2ZXMgYXMgYHsgb2s6IGZhbHNlIH1gIHdpdGggYVxuICogc3RhdHVzIHRoZSBpbnRlcmNlcHRvcnMgYWxyZWFkeSBzYW5pdGl6ZWQ7IGl0IGlzIGxvZ2dlZCBoZXJlIGFuZCByZS1yYWlzZWQgYXNcbiAqIGEgc3RhYmxlIHtAbGluayBFeGVjdXRpb25FcnJvcn0gc28gYW4gdXBzdHJlYW0gbWVzc2FnZSBuZXZlciBiZWNvbWVzIHRoZVxuICogY2FsbGVyJ3MgZXJyb3IgdGV4dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuPFQ+KFxuICBvcGVyYXRpb246IHN0cmluZyxcbiAgc2V0dGluZ3M6IFRlYW1zRXhlY3V0aW9uU2V0dGluZ3MsXG4gIGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD4sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHsgZXhlY3V0ZSB9ID0gZ2V0VGVhbXNSdW50aW1lKCk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWN1dGUoXG4gICAgKGV4ZWN1dGVTaWduYWwpID0+IGZuKGFzeW5jLmNvbWJpbmVBYm9ydFNpZ25hbHMoZXhlY3V0ZVNpZ25hbCwgc2lnbmFsKSksXG4gICAgc2V0dGluZ3MsXG4gICk7XG4gIGlmIChyZXN1bHQub2spIHJldHVybiByZXN1bHQuZGF0YTtcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgRXhlY3V0aW9uRXJyb3IuY2FuY2VsZWQoKTtcbiAgbG9nZ2VyLndhcm4oXCJleGVjdXRpb24tZmFpbGVkXCIsIHtcbiAgICBvcGVyYXRpb24sXG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIGVycm9yOiByZXN1bHQubWVzc2FnZSxcbiAgfSk7XG4gIHRocm93IG5ldyBFeGVjdXRpb25FcnJvcihgdGVhbXM6ICR7b3BlcmF0aW9ufSBmYWlsZWRgLCB7XG4gICAgY29udGV4dDogeyBvcGVyYXRpb24sIHN0YXR1czogcmVzdWx0LnN0YXR1cyB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb21waWxlIGEgY2FyZCBzcGVjIGludG8gYW4gQWRhcHRpdmUgQ2FyZCBkb2N1bWVudCwgc3RhbXBlZCB3aXRoIHRoZSBydW50aW1lJ3NcbiAqIHJlc29sdmVkIGNhcmQgdmVyc2lvbi4gUnVucyB0aHJvdWdoIHRoZSBzaGFyZWQgZXhlY3V0b3Igc28gYSBidWlsZCBwaWNrcyB1cFxuICogdGhlIGFwcCdzIHRlbGVtZXRyeSAvIHRpbWVvdXQgY2hhaW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENhcmQoXG4gIHNwZWM6IGNhcmQuQ2FyZFNwZWMsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxjYXJkLkNhcmRSZXN1bHQ+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSgpO1xuICByZXR1cm4gcnVuKFxuICAgIFwiYnVpbGRcIixcbiAgICBURUFNU19CVUlMRF9TRVRUSU5HUyxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBidWlsZENhcmRSZXN1bHQoc3BlYyk7XG4gICAgICByZXN1bHQuY2FyZC52ZXJzaW9uID0gY29uZmlnLmNhcmRWZXJzaW9uO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbn1cblxuLyoqXG4gKiBQT1NUIGEgY29tcGlsZWQgQWRhcHRpdmUgQ2FyZCB0byB0aGUgY29uZmlndXJlZCBUZWFtcyBpbmNvbWluZyB3ZWJob29rLFxuICogd3JhcHBlZCBpbiB0aGUgYE1lc3NhZ2VDYXJkYCBhdHRhY2htZW50IGVudmVsb3BlIFRlYW1zIGV4cGVjdHMuIFRocm93cyB3aGVuXG4gKiBubyB3ZWJob29rIGlzIGNvbmZpZ3VyZWQsIHNvIGEgY2FsbGVyIHRoYXQgcmVhY2hlcyBoZXJlIHdpdGhvdXQgb25lIGdldHMgYVxuICogY2xlYXIgZXJyb3IgcmF0aGVyIHRoYW4gYSBzaWxlbnQgbm8tb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwb3N0Q2FyZChcbiAgY2FyZERvY3VtZW50OiBjYXJkLkFkYXB0aXZlQ2FyZCxcbiAgc2lnbmFsPzogQWJvcnRTaWduYWwsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSgpO1xuICBjb25zdCB3ZWJob29rVXJsID0gY29uZmlnLndlYmhvb2tVcmw7XG4gIGlmICghd2ViaG9va1VybCkge1xuICAgIHRocm93IG5ldyBFeGVjdXRpb25FcnJvcihcInRlYW1zOiBubyB3ZWJob29rIGNvbmZpZ3VyZWRcIiwge1xuICAgICAgY29udGV4dDogeyBvcGVyYXRpb246IFwicG9zdFwiIH0sXG4gICAgfSk7XG4gIH1cbiAgYXdhaXQgcnVuKFxuICAgIFwicG9zdFwiLFxuICAgIFRFQU1TX1BPU1RfU0VUVElOR1MsXG4gICAgYXN5bmMgKGV4ZWN1dGVTaWduYWwpID0+IHtcbiAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgIHR5cGU6IFwibWVzc2FnZVwiLFxuICAgICAgICBhdHRhY2htZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLFxuICAgICAgICAgICAgY29udGVudDogY2FyZERvY3VtZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh3ZWJob29rVXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgIC4uLihleGVjdXRlU2lnbmFsID8geyBzaWduYWw6IGV4ZWN1dGVTaWduYWwgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXhlY3V0aW9uRXJyb3IoYHRlYW1zOiB3ZWJob29rIHJlc3BvbmRlZCAke3Jlc3BvbnNlLnN0YXR1c31gLCB7XG4gICAgICAgICAgY29udGV4dDogeyBvcGVyYXRpb246IFwicG9zdFwiLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbn1cbiJdfQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQW9ELE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLEdBRXBCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFrQjNDOzs7O0dBSUc7QUFDSCxNQUFNLGFBQWEsR0FBa0IsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ2hELElBQUksQ0FBQztRQUNILE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPO1lBQ0wsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsR0FBRyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUN6RCxPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFJLE9BQWlDLENBQUM7QUFFdEM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQTZCO0lBQzNELElB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QUFHLE1BQU0sS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUN2QyxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtZQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNwRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxjQUFjLENBQUMsNEJBQTRCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDdEUsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRTthQUN4RCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIFRlYW1zIHJ1bnRpbWU6IGEgbGF6aWx5LXJlc29sdmVkLCBwcm9jZXNzLXdpZGUgY29uZmlnIHNoYXJlZCBieSB0aGVcbiAqIHBsdWdpbiBhbmQgdGhlIGBjcmVhdGVfdGVhbXNfY2FyZGAgdG9vbCwgc28gYm90aCByZWFkIG9uZSByZXNvbHZlZCBjYXJkXG4gKiB2ZXJzaW9uIC8gd2ViaG9vayBzZXQuIFRoZSBmaXJzdCBjYWxsZXIgKG5vcm1hbGx5IHRoZSBwbHVnaW4gYXQgc2V0dXApXG4gKiBwcmltZXMgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnOyBsYXRlciBjYWxsZXJzICh0aGUgdG9vbCdzIGBleGVjdXRlYClcbiAqIHJldXNlIGl0LlxuICpcbiAqIFRoZSBydW50aW1lIGFsc28gY2FycmllcyB0aGUge0BsaW5rIFRlYW1zRXhlY3V0b3J9IGV2ZXJ5IG9wZXJhdGlvbiBydW5zXG4gKiB0aHJvdWdoLiBUaGUgcGx1Z2luIGluc3RhbGxzIGl0cyBvd24gYGV4ZWN1dGUoKWAgdGhlcmUgYXQgc2V0dXAsIHdoaWNoIGlzIGhvd1xuICogdGhlIHRvb2wgLSBhIHBsYWluIGZ1bmN0aW9uIHdpdGggbm8gcGx1Z2luIGluc3RhbmNlIGluIHNjb3BlIC0gc3RpbGwgZ2V0c1xuICogQXBwS2l0J3MgY2FjaGUgLyByZXRyeSAvIHRpbWVvdXQgLyB0ZWxlbWV0cnkgY2hhaW4uIFdpdGhvdXQgYSByZWdpc3RlcmVkXG4gKiBwbHVnaW4gKGEgZGlyZWN0IGNhbGwgZnJvbSBhIHNjcmlwdCBvciBhIHRlc3QpIHRoZSBvcGVyYXRpb25zIHN0aWxsIHJ1biwganVzdFxuICogd2l0aG91dCBpbnRlcmNlcHRvcnMuXG4gKlxuICogTGlrZSB0aGUgd2ViLXNlYXJjaCBydW50aW1lIGFuZCB1bmxpa2UgdGhlIGVtYWlsIG9uZSwgdGhlcmUgaXMgbm8gY29ubmVjdGlvblxuICogcG9vbCB0byBob2xkIC0gY2FyZCBidWlsZGluZyBpcyBpbi1wcm9jZXNzIGFuZCBhIHdlYmhvb2sgcG9zdCBpcyBhIHN0YXRlbGVzc1xuICogSFRUUCBjYWxsIC0gc28gdGhlIHJ1bnRpbWUgaG9sZHMgb25seSB0aGUgcmVzb2x2ZWQgY29uZmlnIGFuZCB0aGF0IGV4ZWN1dG9yLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBBcHBLaXRFcnJvciwgRXhlY3V0aW9uRXJyb3IsIHR5cGUgRXhlY3V0aW9uUmVzdWx0IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYXN5bmMsIGVycm9yLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgY2FyZCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC10ZWFtc1wiO1xuaW1wb3J0IHsgYnVpbGRDYXJkUmVzdWx0IH0gZnJvbSBcIi4vYnVpbGRlci50c1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVRlYW1zQ29uZmlnLCB0eXBlIFJlc29sdmVkVGVhbXNDb25maWcsIHR5cGUgVGVhbXNQbHVnaW5Db25maWcgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIFRFQU1TX0JVSUxEX1NFVFRJTkdTLFxuICBURUFNU19QT1NUX1NFVFRJTkdTLFxuICB0eXBlIFRlYW1zRXhlY3V0aW9uU2V0dGluZ3MsXG59IGZyb20gXCIuL2RlZmF1bHRzLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtcy9ydW50aW1lXCIpO1xuXG4vKipcbiAqIFJ1bnMgb25lIG9wZXJhdGlvbiB0aHJvdWdoIEFwcEtpdCdzIGludGVyY2VwdG9yIGNoYWluLiBNYXRjaGVzXG4gKiBgUGx1Z2luLmV4ZWN1dGUoKWAsIHdoaWNoIG5ldmVyIHRocm93czogYSBmYWlsdXJlIGNvbWVzIGJhY2sgYXNcbiAqIGB7IG9rOiBmYWxzZSB9YC5cbiAqL1xuZXhwb3J0IHR5cGUgVGVhbXNFeGVjdXRvciA9IDxUPihcbiAgZm46IChzaWduYWw/OiBBYm9ydFNpZ25hbCkgPT4gUHJvbWlzZTxUPixcbiAgc2V0dGluZ3M6IFRlYW1zRXhlY3V0aW9uU2V0dGluZ3MsXG4pID0+IFByb21pc2U8RXhlY3V0aW9uUmVzdWx0PFQ+PjtcblxuLyoqIFRoZSBzaGFyZWQgcmVzb2x2ZWQgY29uZmlnIHBsdXMgdGhlIGV4ZWN1dG9yIG9wZXJhdGlvbnMgcnVuIHRocm91Z2guICovXG5leHBvcnQgaW50ZXJmYWNlIFRlYW1zUnVudGltZSB7XG4gIGNvbmZpZzogUmVzb2x2ZWRUZWFtc0NvbmZpZztcbiAgZXhlY3V0ZTogVGVhbXNFeGVjdXRvcjtcbn1cblxuLyoqXG4gKiBFeGVjdXRvciB1c2VkIHVudGlsIChvciB1bmxlc3MpIHRoZSBwbHVnaW4gaW5zdGFsbHMgaXRzIG93bjogcnVuIHRoZSBjYWxsXG4gKiBkaXJlY3RseSwgbWFwcGluZyBhIHRocm93IG9udG8gdGhlIHNhbWUge0BsaW5rIEV4ZWN1dGlvblJlc3VsdH0gc2hhcGUgc29cbiAqIGNhbGwgc2l0ZXMgYnJhbmNoIG9uIGBva2AgZWl0aGVyIHdheS5cbiAqL1xuY29uc3QgZGlyZWN0RXhlY3V0ZTogVGVhbXNFeGVjdXRvciA9IGFzeW5jIChmbikgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB7IG9rOiB0cnVlLCBkYXRhOiBhd2FpdCBmbigpIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB7XG4gICAgICBvazogZmFsc2UsXG4gICAgICBzdGF0dXM6IGVyciBpbnN0YW5jZW9mIEFwcEtpdEVycm9yID8gZXJyLnN0YXR1c0NvZGUgOiA1MDAsXG4gICAgICBtZXNzYWdlOiBlcnJvci5lcnJvck1lc3NhZ2UoZXJyKSxcbiAgICB9O1xuICB9XG59O1xuXG5sZXQgcnVudGltZTogVGVhbXNSdW50aW1lIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJldHVybiB0aGUgc2hhcmVkIHJ1bnRpbWUsIGJ1aWxkaW5nIGl0IG9uIGZpcnN0IHVzZSBmcm9tIHRoZSBzdXBwbGllZCBjb25maWdcbiAqIGxheWVyZWQgb3ZlciBlbnZpcm9ubWVudCBkZWZhdWx0cy4gT3ZlcnJpZGVzIGFyZSBvbmx5IHJlYWQgd2hlbiB0aGUgcnVudGltZVxuICogaXMgZmlyc3QgY3JlYXRlZCwgc28gcHJpbWUgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnIGF0IHNldHVwOyBzdWJzZXF1ZW50XG4gKiBjYWxscyAodGhlIHRvb2wncyBgZXhlY3V0ZWApIHBhc3Mgbm90aGluZyBhbmQgZ2V0IHRoZSBzYW1lIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVhbXNSdW50aW1lKG92ZXJyaWRlcz86IFRlYW1zUGx1Z2luQ29uZmlnKTogVGVhbXNSdW50aW1lIHtcbiAgaWYgKCFydW50aW1lKSB7XG4gICAgcnVudGltZSA9IHsgY29uZmlnOiByZXNvbHZlVGVhbXNDb25maWcob3ZlcnJpZGVzKSwgZXhlY3V0ZTogZGlyZWN0RXhlY3V0ZSB9O1xuICB9XG4gIHJldHVybiBydW50aW1lO1xufVxuXG4vKipcbiAqIEluc3RhbGwgdGhlIGV4ZWN1dG9yIG9wZXJhdGlvbnMgcnVuIHRocm91Z2guIFRoZSBwbHVnaW4gY2FsbHMgdGhpcyBhdCBzZXR1cFxuICogd2l0aCBpdHMgb3duIGBleGVjdXRlKClgOyBhIHNlY29uZCBjYWxsIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUsIHNvIGFcbiAqIHJlLXJlZ2lzdGVyZWQgcGx1Z2luIGRvZXMgbm90IGxlYXZlIHRoZSB0b29sIGJvdW5kIHRvIGEgZGVhZCBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRlYW1zRXhlY3V0b3IoZXhlY3V0ZTogVGVhbXNFeGVjdXRvcik6IHZvaWQge1xuICBnZXRUZWFtc1J1bnRpbWUoKS5leGVjdXRlID0gZXhlY3V0ZTtcbn1cblxuLyoqIERyb3AgdGhlIG1lbW9pemVkIHJ1bnRpbWUgc28gdGhlIG5leHQge0BsaW5rIGdldFRlYW1zUnVudGltZX0gcmVidWlsZHMgaXQuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRUZWFtc1J1bnRpbWUoKTogdm9pZCB7XG4gIHJ1bnRpbWUgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUnVuIG9uZSBvcGVyYXRpb24gdGhyb3VnaCB0aGUgc2hhcmVkIGV4ZWN1dG9yIGFuZCB1bndyYXAgaXQuXG4gKlxuICogYGV4ZWN1dGUoKWAgbmV2ZXIgdGhyb3dzLCBzbyBhIGZhaWxlZCBjYWxsIGFycml2ZXMgYXMgYHsgb2s6IGZhbHNlIH1gIHdpdGggYVxuICogc3RhdHVzIHRoZSBpbnRlcmNlcHRvcnMgYWxyZWFkeSBzYW5pdGl6ZWQ7IGl0IGlzIGxvZ2dlZCBoZXJlIGFuZCByZS1yYWlzZWQgYXNcbiAqIGEgc3RhYmxlIHtAbGluayBFeGVjdXRpb25FcnJvcn0gc28gYW4gdXBzdHJlYW0gbWVzc2FnZSBuZXZlciBiZWNvbWVzIHRoZVxuICogY2FsbGVyJ3MgZXJyb3IgdGV4dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuPFQ+KFxuICBvcGVyYXRpb246IHN0cmluZyxcbiAgc2V0dGluZ3M6IFRlYW1zRXhlY3V0aW9uU2V0dGluZ3MsXG4gIGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD4sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHsgZXhlY3V0ZSB9ID0gZ2V0VGVhbXNSdW50aW1lKCk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWN1dGUoXG4gICAgKGV4ZWN1dGVTaWduYWwpID0+IGZuKGFzeW5jLmNvbWJpbmVBYm9ydFNpZ25hbHMoZXhlY3V0ZVNpZ25hbCwgc2lnbmFsKSksXG4gICAgc2V0dGluZ3MsXG4gICk7XG4gIGlmIChyZXN1bHQub2spIHJldHVybiByZXN1bHQuZGF0YTtcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgRXhlY3V0aW9uRXJyb3IuY2FuY2VsZWQoKTtcbiAgbG9nZ2VyLndhcm4oXCJleGVjdXRpb24tZmFpbGVkXCIsIHtcbiAgICBvcGVyYXRpb24sXG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIGVycm9yOiByZXN1bHQubWVzc2FnZSxcbiAgfSk7XG4gIHRocm93IG5ldyBFeGVjdXRpb25FcnJvcihgdGVhbXM6ICR7b3BlcmF0aW9ufSBmYWlsZWRgLCB7XG4gICAgY29udGV4dDogeyBvcGVyYXRpb24sIHN0YXR1czogcmVzdWx0LnN0YXR1cyB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb21waWxlIGEgY2FyZCBzcGVjIGludG8gYW4gQWRhcHRpdmUgQ2FyZCBkb2N1bWVudCwgc3RhbXBlZCB3aXRoIHRoZSBydW50aW1lJ3NcbiAqIHJlc29sdmVkIGNhcmQgdmVyc2lvbi4gUnVucyB0aHJvdWdoIHRoZSBzaGFyZWQgZXhlY3V0b3Igc28gYSBidWlsZCBwaWNrcyB1cFxuICogdGhlIGFwcCdzIHRlbGVtZXRyeSAvIHRpbWVvdXQgY2hhaW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZENhcmQoXG4gIHNwZWM6IGNhcmQuQ2FyZFNwZWMsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxjYXJkLkNhcmRSZXN1bHQ+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSgpO1xuICByZXR1cm4gcnVuKFxuICAgIFwiYnVpbGRcIixcbiAgICBURUFNU19CVUlMRF9TRVRUSU5HUyxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBidWlsZENhcmRSZXN1bHQoc3BlYyk7XG4gICAgICByZXN1bHQuY2FyZC52ZXJzaW9uID0gY29uZmlnLmNhcmRWZXJzaW9uO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbn1cblxuLyoqXG4gKiBQT1NUIGEgY29tcGlsZWQgQWRhcHRpdmUgQ2FyZCB0byB0aGUgY29uZmlndXJlZCBUZWFtcyBpbmNvbWluZyB3ZWJob29rLFxuICogd3JhcHBlZCBpbiB0aGUgYE1lc3NhZ2VDYXJkYCBhdHRhY2htZW50IGVudmVsb3BlIFRlYW1zIGV4cGVjdHMuIFRocm93cyB3aGVuXG4gKiBubyB3ZWJob29rIGlzIGNvbmZpZ3VyZWQsIHNvIGEgY2FsbGVyIHRoYXQgcmVhY2hlcyBoZXJlIHdpdGhvdXQgb25lIGdldHMgYVxuICogY2xlYXIgZXJyb3IgcmF0aGVyIHRoYW4gYSBzaWxlbnQgbm8tb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwb3N0Q2FyZChcbiAgY2FyZERvY3VtZW50OiBjYXJkLkFkYXB0aXZlQ2FyZCxcbiAgc2lnbmFsPzogQWJvcnRTaWduYWwsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IGdldFRlYW1zUnVudGltZSgpO1xuICBjb25zdCB3ZWJob29rVXJsID0gY29uZmlnLndlYmhvb2tVcmw7XG4gIGlmICghd2ViaG9va1VybCkge1xuICAgIHRocm93IG5ldyBFeGVjdXRpb25FcnJvcihcInRlYW1zOiBubyB3ZWJob29rIGNvbmZpZ3VyZWRcIiwge1xuICAgICAgY29udGV4dDogeyBvcGVyYXRpb246IFwicG9zdFwiIH0sXG4gICAgfSk7XG4gIH1cbiAgYXdhaXQgcnVuKFxuICAgIFwicG9zdFwiLFxuICAgIFRFQU1TX1BPU1RfU0VUVElOR1MsXG4gICAgYXN5bmMgKGV4ZWN1dGVTaWduYWwpID0+IHtcbiAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgIHR5cGU6IFwibWVzc2FnZVwiLFxuICAgICAgICBhdHRhY2htZW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLFxuICAgICAgICAgICAgY29udGVudDogY2FyZERvY3VtZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh3ZWJob29rVXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgIC4uLihleGVjdXRlU2lnbmFsID8geyBzaWduYWw6IGV4ZWN1dGVTaWduYWwgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXhlY3V0aW9uRXJyb3IoYHRlYW1zOiB3ZWJob29rIHJlc3BvbmRlZCAke3Jlc3BvbnNlLnN0YXR1c31gLCB7XG4gICAgICAgICAgY29udGV4dDogeyBvcGVyYXRpb246IFwicG9zdFwiLCBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbn1cbiJdfQ==
package/lib/src/tool.js CHANGED
@@ -68,4 +68,4 @@ export function teamsCardTool(opts = {}) {
68
68
  },
69
69
  });
70
70
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXBEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDOzs7Ozs7Ozs7OztDQVczRCxDQUFDLENBQUM7QUFZSDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNkIsRUFBRTtJQUMzRCxPQUFPLFVBQVUsQ0FBQztRQUNoQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxtQkFBbUI7UUFDbEMsV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWM7UUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7UUFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO2FBQzFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGNyZWF0ZV90ZWFtc19jYXJkYCBNYXN0cmEgdG9vbDogYSBtb2RlbCBkZXNjcmliZXMgYSBjYXJkIGluIHRoZSBzbWFsbFxuICoge0BsaW5rIGNhcmQuQ2FyZFNwZWN9IHZvY2FidWxhcnkgYW5kIGdldHMgYmFjayBhIGNvbXBpbGVkIEFkYXB0aXZlIENhcmRcbiAqIGRvY3VtZW50LiBVbmxpa2UgYHNlbmRfZW1haWxgLCBidWlsZGluZyBhIGNhcmQgaXMgYSBwdXJlLCBzaWRlLWVmZmVjdC1mcmVlXG4gKiB0cmFuc2Zvcm0gLSBub3RoaW5nIGxlYXZlcyB0aGUgYnVpbGRpbmcgLSBzbyBpdCBpcyBOT1QgYXBwcm92YWwtZ2F0ZWQ6IHRoZVxuICogY2FyZCBpcyBkYXRhIHRoZSBhcHAgdGhlbiBkZWNpZGVzIHdoYXQgdG8gZG8gd2l0aCAocmVuZGVyIGl0IGluIGEgcHJldmlldyxcbiAqIHBvc3QgaXQgdG8gYSBUZWFtcyBpbmNvbWluZyB3ZWJob29rLCBhdHRhY2ggaXQgdG8gYSBib3QgcmVwbHkpLlxuICpcbiAqIFRoZSBidWlsZCBydW5zIHRocm91Z2ggdGhlIGV4ZWN1dG9yIHRoZSBwbHVnaW4gaW5zdGFsbHMgb24gdGhlIHNoYXJlZFxuICogcnVudGltZSwgc28gYSBidWlsZCBmcm9tIHRoaXMgdG9vbCBwaWNrcyB1cCB0aGUgc2FtZSB0ZWxlbWV0cnkgLyB0aW1lb3V0XG4gKiBjaGFpbiBhcyBvbmUgZnJvbSB0aGUgQXBwS2l0IHRvb2wuIEluIGEgTWFzdHJhIGFwcCB3aXRoIG5vIEFwcEtpdCBwbHVnaW5cbiAqIHJlZ2lzdGVyZWQgdGhlIGJ1aWxkIHN0aWxsIHJ1bnMsIGp1c3Qgd2l0aG91dCBpbnRlcmNlcHRvcnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGxvZywgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGNhcmQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtdGVhbXNcIjtcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCI7XG5pbXBvcnQgeyBidWlsZENhcmQgfSBmcm9tIFwiLi9ydW50aW1lXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtcy90b29sL2NyZWF0ZS1jYXJkXCIpO1xuXG4vKipcbiAqIFRoZSBtb2RlbC1mYWNpbmcgZGVzY3JpcHRpb24gb2YgdGhlIGNhcmQtYnVpbGRpbmcgY2FwYWJpbGl0eSwgc2hhcmVkIGJ5IHRoZVxuICogTWFzdHJhIHtAbGluayB0ZWFtc0NhcmRUb29sfSBhbmQgdGhlIEFwcEtpdCBgdGVhbXMuY3JlYXRlQ2FyZGAgdG9vbCBzbyBib3RoXG4gKiBhZ2VudHMgZ2V0IHRoZSBzYW1lIGd1aWRhbmNlIGFib3V0IHRoZSB2b2NhYnVsYXJ5IGFuZCB3aGVuIHRvIHJlYWNoIGZvciBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OID0gc3RyaW5nLnRvRGVzY3JpcHRpb24oYFxuICBCdWlsZCBhIE1pY3Jvc29mdCBUZWFtcyBBZGFwdGl2ZSBDYXJkIGZyb20gYSBzaG9ydCBzdHJ1Y3R1cmVkIGRlc2NyaXB0aW9uLlxuICBQcm92aWRlIGEgdGl0bGUsIGFuIG9wdGlvbmFsIHN1YnRpdGxlIGFuZCBib2R5IHRleHQsIGFuIG9wdGlvbmFsIGxpc3Qgb2ZcbiAga2V5L3ZhbHVlIGZhY3RzLCBhbmQgb3B0aW9uYWwgbGluayBidXR0b25zOyB0aGUgdG9vbCByZXR1cm5zIGEgY29tcGlsZWRcbiAgQWRhcHRpdmUgQ2FyZCBkb2N1bWVudCAoQWRhcHRpdmUgQ2FyZCAxLjUpIHJlYWR5IHRvIHJlbmRlciBvciBwb3N0IHRvIFRlYW1zLlxuICBVc2UgaXQgd2hlbiB0aGUgdXNlciBhc2tzIHRvIHN1bW1hcml6ZSBhIHN0YXR1cywgcmVzdWx0LCBvciByZWNvcmQgYXMgYSBUZWFtc1xuICBjYXJkIC8gbWVzc2FnZSBjYXJkLCBvciB0byBwcmVwYXJlIHNvbWV0aGluZyB0byBwb3N0IHRvIGEgY2hhbm5lbC4gS2VlcCBib2R5XG4gIHRleHQgdG8gdGhlIFRlYW1zIE1hcmtkb3duIHN1YnNldCAtICoqYm9sZCoqLCBfaXRhbGljXywgbGlua3MsIGFuZCAnLSdcbiAgYnVsbGV0IGxpc3RzIC0gYW5kIHB1dCB0YWJ1bGFyIGtleS92YWx1ZSBkZXRhaWwgaW4gdGhlICdmYWN0cycgYXJyYXksIG5vdCBpblxuICB0aGUgdGV4dC4gRG8gTk9UIGhhbmQtYXV0aG9yIHJhdyBBZGFwdGl2ZSBDYXJkIEpTT047IGRlc2NyaWJlIHRoZSBjYXJkIGFuZFxuICB0aGlzIHRvb2wgY29tcGlsZXMgdGhlIHZhbGlkIGRvY3VtZW50LlxuYCk7XG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IHtAbGluayB0ZWFtc0NhcmRUb29sfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVhbXNDYXJkVG9vbE9wdGlvbnMge1xuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHRvb2wgaWQuIERlZmF1bHRzIHRvIGBcImNyZWF0ZV90ZWFtc19jYXJkXCJgLiBBIFVJIHRoYXQgcmVuZGVyc1xuICAgKiB0aGUgcmV0dXJuZWQgY2FyZCBrZXlzIG9mZiB0aGlzIGlkLCBzbyBrZWVwIGl0IHVubGVzcyB5b3UgYWxzbyB0ZWFjaCB0aGVcbiAgICogY2xpZW50IGFib3V0IHRoZSBuZXcgbmFtZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgY3JlYXRlX3RlYW1zX2NhcmRgIHRvb2wuIFNwcmVhZCBpdCBpbnRvIHRoZSBhZ2VudHMgdGhhdCBzaG91bGQgYmVcbiAqIGFibGUgdG8gcHJvZHVjZSBUZWFtcyBjYXJkcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlYW1zQ2FyZFRvb2wgfSBmcm9tIFwiQGRieC10b29scy90ZWFtc1wiO1xuICogaW1wb3J0IHsgY3JlYXRlQWdlbnQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG4gKlxuICogY29uc3Qgc3VwcG9ydCA9IGNyZWF0ZUFnZW50KHtcbiAqICAgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiLFxuICogICB0b29sczogKCkgPT4gKHsgY3JlYXRlX3RlYW1zX2NhcmQ6IHRlYW1zQ2FyZFRvb2woKSB9KSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZWFtc0NhcmRUb29sKG9wdHM6IFRlYW1zQ2FyZFRvb2xPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwiY3JlYXRlX3RlYW1zX2NhcmRcIixcbiAgICBkZXNjcmlwdGlvbjogQ1JFQVRFX0NBUkRfREVTQ1JJUFRJT04sXG4gICAgaW5wdXRTY2hlbWE6IGNhcmQuY2FyZFNwZWNTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiBjYXJkLmNhcmRSZXN1bHRTY2hlbWEsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGlucHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzcGVjID0gY2FyZC5jYXJkU3BlY1NjaGVtYS5wYXJzZShpbnB1dCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBidWlsZENhcmQoc3BlYywgY29udGV4dD8uYWJvcnRTaWduYWwpO1xuICAgICAgbG9nZ2VyLmluZm8oXCJidWlsdFwiLCB7XG4gICAgICAgIHRpdGxlOiByZXN1bHQudGl0bGUsXG4gICAgICAgIGVsZW1lbnRzOiByZXN1bHQuY2FyZC5ib2R5Lmxlbmd0aCxcbiAgICAgICAgYWN0aW9uczogcmVzdWx0LmNhcmQuYWN0aW9ucz8ubGVuZ3RoID8/IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXBEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDOzs7Ozs7Ozs7OztDQVczRCxDQUFDLENBQUM7QUFZSDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNkIsRUFBRTtJQUMzRCxPQUFPLFVBQVUsQ0FBQztRQUNoQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxtQkFBbUI7UUFDbEMsV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWM7UUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7UUFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO2FBQzFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYGNyZWF0ZV90ZWFtc19jYXJkYCBNYXN0cmEgdG9vbDogYSBtb2RlbCBkZXNjcmliZXMgYSBjYXJkIGluIHRoZSBzbWFsbFxuICoge0BsaW5rIGNhcmQuQ2FyZFNwZWN9IHZvY2FidWxhcnkgYW5kIGdldHMgYmFjayBhIGNvbXBpbGVkIEFkYXB0aXZlIENhcmRcbiAqIGRvY3VtZW50LiBVbmxpa2UgYHNlbmRfZW1haWxgLCBidWlsZGluZyBhIGNhcmQgaXMgYSBwdXJlLCBzaWRlLWVmZmVjdC1mcmVlXG4gKiB0cmFuc2Zvcm0gLSBub3RoaW5nIGxlYXZlcyB0aGUgYnVpbGRpbmcgLSBzbyBpdCBpcyBOT1QgYXBwcm92YWwtZ2F0ZWQ6IHRoZVxuICogY2FyZCBpcyBkYXRhIHRoZSBhcHAgdGhlbiBkZWNpZGVzIHdoYXQgdG8gZG8gd2l0aCAocmVuZGVyIGl0IGluIGEgcHJldmlldyxcbiAqIHBvc3QgaXQgdG8gYSBUZWFtcyBpbmNvbWluZyB3ZWJob29rLCBhdHRhY2ggaXQgdG8gYSBib3QgcmVwbHkpLlxuICpcbiAqIFRoZSBidWlsZCBydW5zIHRocm91Z2ggdGhlIGV4ZWN1dG9yIHRoZSBwbHVnaW4gaW5zdGFsbHMgb24gdGhlIHNoYXJlZFxuICogcnVudGltZSwgc28gYSBidWlsZCBmcm9tIHRoaXMgdG9vbCBwaWNrcyB1cCB0aGUgc2FtZSB0ZWxlbWV0cnkgLyB0aW1lb3V0XG4gKiBjaGFpbiBhcyBvbmUgZnJvbSB0aGUgQXBwS2l0IHRvb2wuIEluIGEgTWFzdHJhIGFwcCB3aXRoIG5vIEFwcEtpdCBwbHVnaW5cbiAqIHJlZ2lzdGVyZWQgdGhlIGJ1aWxkIHN0aWxsIHJ1bnMsIGp1c3Qgd2l0aG91dCBpbnRlcmNlcHRvcnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGxvZywgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGNhcmQgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtdGVhbXNcIjtcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCI7XG5pbXBvcnQgeyBidWlsZENhcmQgfSBmcm9tIFwiLi9ydW50aW1lLnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ0ZWFtcy90b29sL2NyZWF0ZS1jYXJkXCIpO1xuXG4vKipcbiAqIFRoZSBtb2RlbC1mYWNpbmcgZGVzY3JpcHRpb24gb2YgdGhlIGNhcmQtYnVpbGRpbmcgY2FwYWJpbGl0eSwgc2hhcmVkIGJ5IHRoZVxuICogTWFzdHJhIHtAbGluayB0ZWFtc0NhcmRUb29sfSBhbmQgdGhlIEFwcEtpdCBgdGVhbXMuY3JlYXRlQ2FyZGAgdG9vbCBzbyBib3RoXG4gKiBhZ2VudHMgZ2V0IHRoZSBzYW1lIGd1aWRhbmNlIGFib3V0IHRoZSB2b2NhYnVsYXJ5IGFuZCB3aGVuIHRvIHJlYWNoIGZvciBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IENSRUFURV9DQVJEX0RFU0NSSVBUSU9OID0gc3RyaW5nLnRvRGVzY3JpcHRpb24oYFxuICBCdWlsZCBhIE1pY3Jvc29mdCBUZWFtcyBBZGFwdGl2ZSBDYXJkIGZyb20gYSBzaG9ydCBzdHJ1Y3R1cmVkIGRlc2NyaXB0aW9uLlxuICBQcm92aWRlIGEgdGl0bGUsIGFuIG9wdGlvbmFsIHN1YnRpdGxlIGFuZCBib2R5IHRleHQsIGFuIG9wdGlvbmFsIGxpc3Qgb2ZcbiAga2V5L3ZhbHVlIGZhY3RzLCBhbmQgb3B0aW9uYWwgbGluayBidXR0b25zOyB0aGUgdG9vbCByZXR1cm5zIGEgY29tcGlsZWRcbiAgQWRhcHRpdmUgQ2FyZCBkb2N1bWVudCAoQWRhcHRpdmUgQ2FyZCAxLjUpIHJlYWR5IHRvIHJlbmRlciBvciBwb3N0IHRvIFRlYW1zLlxuICBVc2UgaXQgd2hlbiB0aGUgdXNlciBhc2tzIHRvIHN1bW1hcml6ZSBhIHN0YXR1cywgcmVzdWx0LCBvciByZWNvcmQgYXMgYSBUZWFtc1xuICBjYXJkIC8gbWVzc2FnZSBjYXJkLCBvciB0byBwcmVwYXJlIHNvbWV0aGluZyB0byBwb3N0IHRvIGEgY2hhbm5lbC4gS2VlcCBib2R5XG4gIHRleHQgdG8gdGhlIFRlYW1zIE1hcmtkb3duIHN1YnNldCAtICoqYm9sZCoqLCBfaXRhbGljXywgbGlua3MsIGFuZCAnLSdcbiAgYnVsbGV0IGxpc3RzIC0gYW5kIHB1dCB0YWJ1bGFyIGtleS92YWx1ZSBkZXRhaWwgaW4gdGhlICdmYWN0cycgYXJyYXksIG5vdCBpblxuICB0aGUgdGV4dC4gRG8gTk9UIGhhbmQtYXV0aG9yIHJhdyBBZGFwdGl2ZSBDYXJkIEpTT047IGRlc2NyaWJlIHRoZSBjYXJkIGFuZFxuICB0aGlzIHRvb2wgY29tcGlsZXMgdGhlIHZhbGlkIGRvY3VtZW50LlxuYCk7XG5cbi8qKiBPcHRpb25zIGFjY2VwdGVkIGJ5IHtAbGluayB0ZWFtc0NhcmRUb29sfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVhbXNDYXJkVG9vbE9wdGlvbnMge1xuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHRvb2wgaWQuIERlZmF1bHRzIHRvIGBcImNyZWF0ZV90ZWFtc19jYXJkXCJgLiBBIFVJIHRoYXQgcmVuZGVyc1xuICAgKiB0aGUgcmV0dXJuZWQgY2FyZCBrZXlzIG9mZiB0aGlzIGlkLCBzbyBrZWVwIGl0IHVubGVzcyB5b3UgYWxzbyB0ZWFjaCB0aGVcbiAgICogY2xpZW50IGFib3V0IHRoZSBuZXcgbmFtZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgY3JlYXRlX3RlYW1zX2NhcmRgIHRvb2wuIFNwcmVhZCBpdCBpbnRvIHRoZSBhZ2VudHMgdGhhdCBzaG91bGQgYmVcbiAqIGFibGUgdG8gcHJvZHVjZSBUZWFtcyBjYXJkcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlYW1zQ2FyZFRvb2wgfSBmcm9tIFwiQGRieC10b29scy90ZWFtc1wiO1xuICogaW1wb3J0IHsgY3JlYXRlQWdlbnQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG4gKlxuICogY29uc3Qgc3VwcG9ydCA9IGNyZWF0ZUFnZW50KHtcbiAqICAgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiLFxuICogICB0b29sczogKCkgPT4gKHsgY3JlYXRlX3RlYW1zX2NhcmQ6IHRlYW1zQ2FyZFRvb2woKSB9KSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZWFtc0NhcmRUb29sKG9wdHM6IFRlYW1zQ2FyZFRvb2xPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwiY3JlYXRlX3RlYW1zX2NhcmRcIixcbiAgICBkZXNjcmlwdGlvbjogQ1JFQVRFX0NBUkRfREVTQ1JJUFRJT04sXG4gICAgaW5wdXRTY2hlbWE6IGNhcmQuY2FyZFNwZWNTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiBjYXJkLmNhcmRSZXN1bHRTY2hlbWEsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGlucHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzcGVjID0gY2FyZC5jYXJkU3BlY1NjaGVtYS5wYXJzZShpbnB1dCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBidWlsZENhcmQoc3BlYywgY29udGV4dD8uYWJvcnRTaWduYWwpO1xuICAgICAgbG9nZ2VyLmluZm8oXCJidWlsdFwiLCB7XG4gICAgICAgIHRpdGxlOiByZXN1bHQudGl0bGUsXG4gICAgICAgIGVsZW1lbnRzOiByZXN1bHQuY2FyZC5ib2R5Lmxlbmd0aCxcbiAgICAgICAgYWN0aW9uczogcmVzdWx0LmNhcmQuYWN0aW9ucz8ubGVuZ3RoID8/IDAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
package/package.json CHANGED
@@ -17,15 +17,15 @@
17
17
  "@mastra/core": "^1.47.0",
18
18
  "jose": "^6.2.3",
19
19
  "zod": "4.3.6",
20
- "@dbx-tools/shared-core": "0.4.1",
21
- "@dbx-tools/shared-teams": "0.4.1"
20
+ "@dbx-tools/shared-core": "0.5.1",
21
+ "@dbx-tools/shared-teams": "0.5.1"
22
22
  },
23
23
  "main": "./lib/index.js",
24
24
  "license": "UNLICENSED",
25
25
  "publishConfig": {
26
26
  "access": "public"
27
27
  },
28
- "version": "0.4.1",
28
+ "version": "0.5.1",
29
29
  "types": "./lib/index.d.ts",
30
30
  "type": "module",
31
31
  "exports": {
@@ -39,7 +39,7 @@
39
39
 
40
40
  import { error, hash, json, log, object, string } from "@dbx-tools/shared-core";
41
41
  import { activity as activityContract, card } from "@dbx-tools/shared-teams";
42
- import { buildAdaptiveCard } from "./builder";
42
+ import { buildAdaptiveCard } from "./builder.ts";
43
43
 
44
44
  const logger = log.logger("teams:conversation");
45
45
 
package/src/messaging.ts CHANGED
@@ -26,9 +26,9 @@
26
26
 
27
27
  import { error, log } from "@dbx-tools/shared-core";
28
28
  import { activity as activityContract } from "@dbx-tools/shared-teams";
29
- import { connectorToken, isAllowedServiceUrl } from "./auth";
30
- import { sendActivity, sendTyping } from "./connector";
31
- import { runCardTurn, type CardAgentLike, type CardContextFactory } from "./conversation";
29
+ import { connectorToken, isAllowedServiceUrl } from "./auth.ts";
30
+ import { sendActivity, sendTyping } from "./connector.ts";
31
+ import { runCardTurn, type CardAgentLike, type CardContextFactory } from "./conversation.ts";
32
32
 
33
33
  const logger = log.logger("teams:messaging");
34
34
 
package/src/plugin.ts CHANGED
@@ -51,19 +51,24 @@ import {
51
51
  } from "@databricks/appkit/beta";
52
52
  import { error, log, object, string } from "@dbx-tools/shared-core";
53
53
  import { activity as activityContract, card } from "@dbx-tools/shared-teams";
54
- import { verifyBotToken } from "./auth";
55
- import { TEAMS_CONFIG_SCHEMA, type TeamsPluginConfig } from "./config";
56
- import { promptOf, resolveCardAgent, resolveCardContextFactory, runCardTurn } from "./conversation";
57
- import { TEAMS_BUILD_SETTINGS, TEAMS_POST_SETTINGS, TEAMS_TURN_SETTINGS } from "./defaults";
58
- import { deliverTurn, resolveServiceUrl } from "./messaging";
54
+ import { verifyBotToken } from "./auth.ts";
55
+ import { TEAMS_CONFIG_SCHEMA, type TeamsPluginConfig } from "./config.ts";
56
+ import {
57
+ promptOf,
58
+ resolveCardAgent,
59
+ resolveCardContextFactory,
60
+ runCardTurn,
61
+ } from "./conversation.ts";
62
+ import { TEAMS_BUILD_SETTINGS, TEAMS_POST_SETTINGS, TEAMS_TURN_SETTINGS } from "./defaults.ts";
63
+ import { deliverTurn, resolveServiceUrl } from "./messaging.ts";
59
64
  import {
60
65
  buildCard,
61
66
  getTeamsRuntime,
62
67
  postCard,
63
68
  resetTeamsRuntime,
64
69
  setTeamsExecutor,
65
- } from "./runtime";
66
- import { CREATE_CARD_DESCRIPTION } from "./tool";
70
+ } from "./runtime.ts";
71
+ import { CREATE_CARD_DESCRIPTION } from "./tool.ts";
67
72
 
68
73
  /** Mount-relative route (under `/api/teams`) for compiling a card. */
69
74
  const CARD_ROUTE = "/card";
package/src/runtime.ts CHANGED
@@ -22,9 +22,13 @@
22
22
  import { AppKitError, ExecutionError, type ExecutionResult } from "@databricks/appkit";
23
23
  import { async, error, log } from "@dbx-tools/shared-core";
24
24
  import { card } from "@dbx-tools/shared-teams";
25
- import { buildCardResult } from "./builder";
26
- import { resolveTeamsConfig, type ResolvedTeamsConfig, type TeamsPluginConfig } from "./config";
27
- import { TEAMS_BUILD_SETTINGS, TEAMS_POST_SETTINGS, type TeamsExecutionSettings } from "./defaults";
25
+ import { buildCardResult } from "./builder.ts";
26
+ import { resolveTeamsConfig, type ResolvedTeamsConfig, type TeamsPluginConfig } from "./config.ts";
27
+ import {
28
+ TEAMS_BUILD_SETTINGS,
29
+ TEAMS_POST_SETTINGS,
30
+ type TeamsExecutionSettings,
31
+ } from "./defaults.ts";
28
32
 
29
33
  const logger = log.logger("teams/runtime");
30
34
 
package/src/tool.ts CHANGED
@@ -17,7 +17,7 @@
17
17
  import { log, string } from "@dbx-tools/shared-core";
18
18
  import { card } from "@dbx-tools/shared-teams";
19
19
  import { createTool } from "@mastra/core/tools";
20
- import { buildCard } from "./runtime";
20
+ import { buildCard } from "./runtime.ts";
21
21
 
22
22
  const logger = log.logger("teams/tool/create-card");
23
23