@dbx-tools/appkit-web-search 0.9.32 → 0.9.36

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
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-web-search";
6
- export const PACKAGE_VERSION = "0.9.32";
6
+ export const PACKAGE_VERSION = "0.9.36";
7
7
  export * as allowlist from "./src/allowlist.ts";
8
8
  export * as config from "./src/config.ts";
9
9
  export * as defaults from "./src/defaults.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-web-search";
2
- export declare const PACKAGE_VERSION = "0.9.32";
2
+ export declare const PACKAGE_VERSION = "0.9.36";
3
3
  export * as allowlist from "./src/allowlist.ts";
4
4
  export * as config from "./src/config.ts";
5
5
  export * as defaults from "./src/defaults.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-web-search";
5
- export const PACKAGE_VERSION = "0.9.32";
5
+ export const PACKAGE_VERSION = "0.9.36";
6
6
  export * as allowlist from "./src/allowlist.js";
7
7
  export * as config from "./src/config.js";
8
8
  export * as defaults from "./src/defaults.js";
@@ -20,4 +20,4 @@ export { SEARCH_CACHE_TTL_SECONDS, FETCH_CACHE_TTL_SECONDS, SERVING_RETRY_ATTEMP
20
20
  export { WebSearchPlugin, webSearch } from "./src/plugin.js";
21
21
  export { WEB_SEARCH_PROVIDERS } from "./src/provider.js";
22
22
  export { WEB_SEARCH_TOOL_DESCRIPTION, WEB_FETCH_TOOL_DESCRIPTION, webSearchRequestSchema, webSearchCitationSchema, webSearchResultSchema, webFetchRequestSchema, webFetchResultSchema } from "./src/schema.js";
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUwsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbE4sT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvYXBwa2l0LXdlYi1zZWFyY2hcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zMlwiO1xuZXhwb3J0ICogYXMgYWxsb3dsaXN0IGZyb20gXCIuL3NyYy9hbGxvd2xpc3QudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGZldGNoIGZyb20gXCIuL3NyYy9mZXRjaC50c1wiO1xuZXhwb3J0ICogYXMgaHRtbFRleHQgZnJvbSBcIi4vc3JjL2h0bWwtdGV4dC50c1wiO1xuZXhwb3J0ICogYXMgcGx1Z2luIGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCAqIGFzIHByb3ZpZGVyIGZyb20gXCIuL3NyYy9wcm92aWRlci50c1wiO1xuZXhwb3J0ICogYXMgcnVudGltZSBmcm9tIFwiLi9zcmMvcnVudGltZS50c1wiO1xuZXhwb3J0ICogYXMgc2NoZW1hIGZyb20gXCIuL3NyYy9zY2hlbWEudHNcIjtcbmV4cG9ydCAqIGFzIHNjcmFwZSBmcm9tIFwiLi9zcmMvc2NyYXBlLnRzXCI7XG5leHBvcnQgKiBhcyBzZWFyY2ggZnJvbSBcIi4vc3JjL3NlYXJjaC50c1wiO1xuZXhwb3J0ICogYXMgdG9vbCBmcm9tIFwiLi9zcmMvdG9vbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBVcmxBbGxvd0xpc3QgfSBmcm9tIFwiLi9zcmMvYWxsb3dsaXN0LnRzXCI7XG5leHBvcnQgeyBNT0RFTF9FTlYsIFNFUlZJTkdfRU5EUE9JTlRfRU5WLCBERUZBVUxUX01PREVMX0ZBTExCQUNLUywgREVGQVVMVF9NQVhfQ0lUQVRJT05TLCBERUZBVUxUX0ZFVENIX01BWF9MRU5HVEgsIERFRkFVTFRfVElNRU9VVF9NUywgV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHByb3ZhbEdhdGUsIEFwcHJvdmFsUG9saWN5LCBVcmxQb2xpY3lNb2RlLCBNb2RlbFNvdXJjZSwgV2ViU2VhcmNoUGx1Z2luQ29uZmlnLCBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB7IFNFQVJDSF9DQUNIRV9UVExfU0VDT05EUywgRkVUQ0hfQ0FDSEVfVFRMX1NFQ09ORFMsIFNFUlZJTkdfUkVUUllfQVRURU1QVFMsIFdFQl9SRVRSWV9BVFRFTVBUUywgd2ViU2VhcmNoRXhlY3V0ZURlZmF1bHRzLCB3ZWJGZXRjaEV4ZWN1dGVEZWZhdWx0cywgc2NyYXBlU2VhcmNoRXhlY3V0ZURlZmF1bHRzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaEV4ZWN1dGVDb25maWcsIFdlYlNlYXJjaEV4ZWN1dGlvblNldHRpbmdzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgeyBXZWJTZWFyY2hQbHVnaW4sIHdlYlNlYXJjaCB9IGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCB7IFdFQl9TRUFSQ0hfUFJPVklERVJTIH0gZnJvbSBcIi4vc3JjL3Byb3ZpZGVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaFByb3ZpZGVyLCBXZWJTZWFyY2hQcm92aWRlclNwZWMgfSBmcm9tIFwiLi9zcmMvcHJvdmlkZXIudHNcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoRXhlY3V0b3IsIFdlYlNlYXJjaFJ1bnRpbWUsIFdlYlNlYXJjaFJ1bnRpbWVJbnB1dCB9IGZyb20gXCIuL3NyYy9ydW50aW1lLnRzXCI7XG5leHBvcnQgeyBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sIFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLCB3ZWJTZWFyY2hSZXF1ZXN0U2NoZW1hLCB3ZWJTZWFyY2hDaXRhdGlvblNjaGVtYSwgd2ViU2VhcmNoUmVzdWx0U2NoZW1hLCB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsIHdlYkZldGNoUmVzdWx0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL3NjaGVtYS50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hSZXF1ZXN0LCBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVzdWx0LCBXZWJGZXRjaFJlcXVlc3QsIFdlYkZldGNoUmVzdWx0IH0gZnJvbSBcIi4vc3JjL3NjaGVtYS50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3NlYXJjaC50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hUb29sT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90b29sLnRzXCI7XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyw4QkFBOEIsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUwsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbE4sT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvYXBwa2l0LXdlYi1zZWFyY2hcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4zNlwiO1xuZXhwb3J0ICogYXMgYWxsb3dsaXN0IGZyb20gXCIuL3NyYy9hbGxvd2xpc3QudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGZldGNoIGZyb20gXCIuL3NyYy9mZXRjaC50c1wiO1xuZXhwb3J0ICogYXMgaHRtbFRleHQgZnJvbSBcIi4vc3JjL2h0bWwtdGV4dC50c1wiO1xuZXhwb3J0ICogYXMgcGx1Z2luIGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCAqIGFzIHByb3ZpZGVyIGZyb20gXCIuL3NyYy9wcm92aWRlci50c1wiO1xuZXhwb3J0ICogYXMgcnVudGltZSBmcm9tIFwiLi9zcmMvcnVudGltZS50c1wiO1xuZXhwb3J0ICogYXMgc2NoZW1hIGZyb20gXCIuL3NyYy9zY2hlbWEudHNcIjtcbmV4cG9ydCAqIGFzIHNjcmFwZSBmcm9tIFwiLi9zcmMvc2NyYXBlLnRzXCI7XG5leHBvcnQgKiBhcyBzZWFyY2ggZnJvbSBcIi4vc3JjL3NlYXJjaC50c1wiO1xuZXhwb3J0ICogYXMgdG9vbCBmcm9tIFwiLi9zcmMvdG9vbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBVcmxBbGxvd0xpc3QgfSBmcm9tIFwiLi9zcmMvYWxsb3dsaXN0LnRzXCI7XG5leHBvcnQgeyBNT0RFTF9FTlYsIFNFUlZJTkdfRU5EUE9JTlRfRU5WLCBERUZBVUxUX01PREVMX0ZBTExCQUNLUywgREVGQVVMVF9NQVhfQ0lUQVRJT05TLCBERUZBVUxUX0ZFVENIX01BWF9MRU5HVEgsIERFRkFVTFRfVElNRU9VVF9NUywgV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHByb3ZhbEdhdGUsIEFwcHJvdmFsUG9saWN5LCBVcmxQb2xpY3lNb2RlLCBNb2RlbFNvdXJjZSwgV2ViU2VhcmNoUGx1Z2luQ29uZmlnLCBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCB7IFNFQVJDSF9DQUNIRV9UVExfU0VDT05EUywgRkVUQ0hfQ0FDSEVfVFRMX1NFQ09ORFMsIFNFUlZJTkdfUkVUUllfQVRURU1QVFMsIFdFQl9SRVRSWV9BVFRFTVBUUywgd2ViU2VhcmNoRXhlY3V0ZURlZmF1bHRzLCB3ZWJGZXRjaEV4ZWN1dGVEZWZhdWx0cywgc2NyYXBlU2VhcmNoRXhlY3V0ZURlZmF1bHRzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaEV4ZWN1dGVDb25maWcsIFdlYlNlYXJjaEV4ZWN1dGlvblNldHRpbmdzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgeyBXZWJTZWFyY2hQbHVnaW4sIHdlYlNlYXJjaCB9IGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCB7IFdFQl9TRUFSQ0hfUFJPVklERVJTIH0gZnJvbSBcIi4vc3JjL3Byb3ZpZGVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaFByb3ZpZGVyLCBXZWJTZWFyY2hQcm92aWRlclNwZWMgfSBmcm9tIFwiLi9zcmMvcHJvdmlkZXIudHNcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoRXhlY3V0b3IsIFdlYlNlYXJjaFJ1bnRpbWUsIFdlYlNlYXJjaFJ1bnRpbWVJbnB1dCB9IGZyb20gXCIuL3NyYy9ydW50aW1lLnRzXCI7XG5leHBvcnQgeyBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sIFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLCB3ZWJTZWFyY2hSZXF1ZXN0U2NoZW1hLCB3ZWJTZWFyY2hDaXRhdGlvblNjaGVtYSwgd2ViU2VhcmNoUmVzdWx0U2NoZW1hLCB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsIHdlYkZldGNoUmVzdWx0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL3NjaGVtYS50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hSZXF1ZXN0LCBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVzdWx0LCBXZWJGZXRjaFJlcXVlc3QsIFdlYkZldGNoUmVzdWx0IH0gZnJvbSBcIi4vc3JjL3NjaGVtYS50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3NlYXJjaC50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hUb29sT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90b29sLnRzXCI7XG4iXX0=
package/lib/src/search.js CHANGED
@@ -114,7 +114,7 @@ async function resolveWebSearchModel(ctx, config, requested) {
114
114
  // GPT) when those ids are actually deployed; else take the best capable
115
115
  // endpoint.
116
116
  const { modelId } = resolveModel(capable, {
117
- fallbacks: config.modelFallbacks,
117
+ fallbacks: [...config.modelFallbacks],
118
118
  fuzzy: config.fuzzy,
119
119
  threshold: config.fuzzyThreshold,
120
120
  });
@@ -282,4 +282,4 @@ export async function runWebSearch(request, runtimeOrConfig, ctx, signal) {
282
282
  });
283
283
  return { query: request.query, answer, citations: trimmed, model: modelId };
284
284
  }
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQWdDLE1BQU0sYUFBYSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEdBR25CLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHOUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsWUFBWSxDQUFDO0FBRTlDOzs7OztHQUtHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFbkMsK0VBQStFO0FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FB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QUFDO0lBRXRGLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDdkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxPQUFPO1FBQ2QsUUFBUTtRQUNSLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDekIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXZWIgc2VhcmNoIGJhY2tlZCBieSB0aGUgRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wuXG4gKlxuICogVW5saWtlIGEgc2NyYXBpbmcgY2xpZW50LCB0aGUgc2VhcmNoIHJ1bnMgKmluc2lkZSogYSBtb2RlbCBjYWxsOiB3ZSBQT1NUIHRoZVxuICogcXVlcnkgdG8gdGhlIHdvcmtzcGFjZSdzIHNlcnZpbmcgZW5kcG9pbnQgd2l0aCB0aGUgcHJvdmlkZXIncyB3ZWItc2VhcmNoXG4gKiB0b29sIHNwZWMgYXR0YWNoZWQsIGFuZCB0aGUgbW9kZWwgc2VhcmNoZXMgdGhlIHdlYiBhbmQgd3JpdGVzIHRoZSBhbnN3ZXIuXG4gKiB7QGxpbmsgcnVuV2ViU2VhcmNofTpcbiAqXG4gKiAgIDEuIFJlc29sdmVzIGEgd2ViLXNlYXJjaC1jYXBhYmxlIG1vZGVsIElOREVQRU5ERU5UTFkgb2YgdGhlIGNhbGxpbmdcbiAqICAgICAgYWdlbnQncyBjaGF0IG1vZGVsICh0aGUgYWdlbnQgbWF5IHJ1biBvbiBhIG1vZGVsIHdpdGhvdXQgd2ViIHNlYXJjaCkuXG4gKiAgICAgIEEgcGlubmVkIGBtb2RlbGAgKHJlcXVlc3Qgb3IgY29uZmlnKSBpcyBmdXp6eS1tYXRjaGVkOyBvdGhlcndpc2UgdGhlXG4gKiAgICAgIGNvbmZpZ3VyZWQgZmFsbGJhY2sgb3JkZXIgKEdlbWluaSwgdGhlbiBHUFQpIGlzIHdhbGtlZCB0byB0aGUgZmlyc3RcbiAqICAgICAgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50IHRoYXQgZXhpc3RzLiBBbiBleHBsaWNpdCBidXQgdW5zdXBwb3J0ZWRcbiAqICAgICAgbW9kZWwgaXMgYSBoYXJkIGVycm9yLCBub3QgYSBzaWxlbnQgZmFsbGJhY2suXG4gKiAgIDIuIFBPU1RzIHRvIHRoZSBwcm92aWRlcidzIFJFU1Qgc3VyZmFjZSAoYC9zZXJ2aW5nLWVuZHBvaW50cy9yZXNwb25zZXNgXG4gKiAgICAgIGZvciBPcGVuQUksIGAvc2VydmluZy1lbmRwb2ludHMvY2hhdC9jb21wbGV0aW9uc2AgZm9yIEdlbWluaSkgd2l0aCB0aGVcbiAqICAgICAgbWFwcGVkIHRvb2wgc3BlYywgYXV0aGVudGljYXRlZCBhcyB0aGUgT0JPIGNhbGxlci5cbiAqICAgMy4gUmV0dXJucyB0aGUgc3ludGhlc2l6ZWQgYW5zd2VyIHBsdXMgdGhlIGNpdGVkIHNvdXJjZXMsIHdpdGggY2l0YXRpb25zXG4gKiAgICAgIHNpbGVudGx5IGZpbHRlcmVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyZWQgVVJMIGFsbG93LWxpc3QuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25FcnJvcixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBFeGVjdXRpb25FcnJvcixcbiAgZ2V0RXhlY3V0aW9uQ29udGV4dCxcbiAgVmFsaWRhdGlvbkVycm9yLFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBpbnZva2UsIHJlc29sdmUsIG1vZGVsQ2F0YWxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBsb2csIG9iamVjdCwgc3RyaW5nVXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgb3BlbmFpQ2hhdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHsgTU9ERUxfRU5WLCBTRVJWSU5HX0VORFBPSU5UX0VOViwgdHlwZSBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgdG9DYWxsU2V0dGluZ3MsIHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cyB9IGZyb20gXCIuL2RlZmF1bHRzLnRzXCI7XG5pbXBvcnQgeyBkZXRlY3RXZWJTZWFyY2hQcm92aWRlciwgc3VwcG9ydHNXZWJTZWFyY2gsIHdlYlNlYXJjaFRvb2xTcGVjIH0gZnJvbSBcIi4vcHJvdmlkZXIudHNcIjtcbmltcG9ydCB7XG4gIGV4ZWN1dGVSZWFkLFxuICB0b1dlYlNlYXJjaFJ1bnRpbWUsXG4gIHR5cGUgV2ViU2VhcmNoUnVudGltZSxcbiAgdHlwZSBXZWJTZWFyY2hSdW50aW1lSW5wdXQsXG59IGZyb20gXCIuL3J1bnRpbWUudHNcIjtcbmltcG9ydCB0eXBlIHsgV2ViU2VhcmNoQ2l0YXRpb24sIFdlYlNlYXJjaFJlcXVlc3QsIFdlYlNlYXJjaFJlc3VsdCB9IGZyb20gXCIuL3NjaGVtYS50c1wiO1xuaW1wb3J0IHsgcnVuU2NyYXBlU2VhcmNoIH0gZnJvbSBcIi4vc2NyYXBlLnRzXCI7XG5cbnR5cGUgV29ya3NwYWNlQ2xpZW50TGlrZSA9IG1vZGVsQ2F0YWxvZy5Xb3Jrc3BhY2VDbGllbnRMaWtlICYgaW52b2tlLkF1dGhlbnRpY2F0aW5nQ2xpZW50TGlrZTtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ3ZWItc2VhcmNoL3NlYXJjaFwiKTtcbmNvbnN0IHsgcmVzb2x2ZU1vZGVsIH0gPSByZXNvbHZlO1xuY29uc3QgeyBsaXN0U2VydmluZ0VuZHBvaW50cyB9ID0gbW9kZWxDYXRhbG9nO1xuXG4vKipcbiAqIEhvdyBkZWVwIHRoZSBncm91bmRpbmctbWV0YWRhdGEgd2FsayBkZXNjZW5kcy4gR2VtaW5pIG5lc3RzIGl0cyBzb3VyY2VzIGFcbiAqIGhhbmRmdWwgb2YgbGV2ZWxzIGRvd24gYW5kIHRoZSBzaGFwZSB2YXJpZXMgYnkgbW9kZWwgdmVyc2lvbiwgc28gdGhlIHdhbGtcbiAqIGlzIGdlbmVyaWM7IHRoZSBib3VuZCBpcyB3aGF0IGtlZXBzIGEgcGF0aG9sb2dpY2FsIHBheWxvYWQgZnJvbSB0dXJuaW5nIGl0XG4gKiBpbnRvIGEgZnVsbCB0cmF2ZXJzYWwgb2YgdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggPSA2O1xuXG4vKiogTG93ZXN0IEhUVFAgc3RhdHVzIHRyZWF0ZWQgYXMgYSBzZXJ2ZXItc2lkZSAocmV0cnlhYmxlKSBzZXJ2aW5nIGZhaWx1cmUuICovXG5jb25zdCBTRVJWRVJfRVJST1JfU1RBVFVTID0gNTAwO1xuXG4vKiogU3RhdHVzIE1vZGVsIFNlcnZpbmcgdXNlcyB0byBzaGVkIGxvYWQ7IHJldHJ5YWJsZSBsaWtlIGEgNXh4LiAqL1xuY29uc3QgUkFURV9MSU1JVEVEX1NUQVRVUyA9IDQyOTtcblxuLyoqIENvbnRleHQgYSBzZWFyY2ggbmVlZHMgZnJvbSB0aGUgY2FsbGVyOiB0aGUgT0JPIGNsaWVudCArIHdvcmtzcGFjZSBob3N0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hDb250ZXh0IHtcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlO1xuICBob3N0OiBzdHJpbmc7XG4gIC8qKiBUcnVzdGVkIGlkZW50aXR5IG9mIHRoZSBjcmVkZW50aWFsIGNhcnJpZWQgYnkgYGNsaWVudGAuICovXG4gIGNhY2hlSWRlbnRpdHk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgT0JPIHdvcmtzcGFjZSBjbGllbnQgKyBob3N0IGZyb20gdGhlIGFjdGl2ZSBBcHBLaXQgZXhlY3V0aW9uXG4gKiBjb250ZXh0LiBJbnNpZGUgYGFnZW50LnN0cmVhbWAncyBgYXNVc2VyKHJlcSlgIHNjb3BlIHRoaXMgaGl0cyB0aGUgc2VydmluZ1xuICogZW5kcG9pbnQgYXMgdGhlIHJlcXVlc3RpbmcgdXNlcjsgb3V0c2lkZSBhIHVzZXIgY29udGV4dCBBcHBLaXQgZmFsbHMgYmFjayB0b1xuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQoKTogUHJvbWlzZTxXZWJTZWFyY2hDb250ZXh0PiB7XG4gIGNvbnN0IGN0eCA9IGdldEV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjdHguY2xpZW50LmNvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGNhY2hlSWRlbnRpdHkgPSBcInVzZXJJZFwiIGluIGN0eCA/IGN0eC51c2VySWQgOiBjdHguc2VydmljZVVzZXJJZDtcbiAgcmV0dXJuIHsgY2xpZW50OiBjdHguY2xpZW50LCBob3N0LCBjYWNoZUlkZW50aXR5IH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBhZ2FpbnN0IHRoZSBMSVZFIHdvcmtzcGFjZSBjYXRhbG9ndWUgLSBzb1xuICogd2UgbmV2ZXIgcmV0dXJuIGFuIGVuZHBvaW50IGlkIHRoYXQgaXNuJ3QgYWN0dWFsbHkgZGVwbG95ZWQgKHRoZSBcImVuZHBvaW50XG4gKiBkb2VzIG5vdCBleGlzdFwiIGZhaWx1cmUgYSBoYXJkY29kZWQgZmFsbGJhY2sgaWQgd291bGQgY2F1c2UpLiBSZXVzZXNcbiAqIGBAZGJ4LXRvb2xzL21vZGVsYCdzIGV4aXN0aW5nIGNhdGFsb2d1ZSArIHJlc29sdmVyIHJhdGhlciB0aGFuIGEgY3VzdG9tXG4gKiBsb29rdXA6IHtAbGluayBsaXN0U2VydmluZ0VuZHBvaW50c30gbGlzdHMgdGhlIGVuZHBvaW50cyAoY2FjaGVkKSwgYW5kIHdlXG4gKiByZXN0cmljdCB0aGUgY2FuZGlkYXRlIHNldCB0byB0aGUge0BsaW5rIHN1cHBvcnRzV2ViU2VhcmNofSBvbmVzIGJlZm9yZVxuICoge0BsaW5rIHJlc29sdmVNb2RlbH0gZnV6enktcGlja3Mgd2l0aGluIGl0LlxuICpcbiAqIFJldHVybnMgdGhlIGNob3NlbiBlbmRwb2ludCBpZCwgb3IgYG51bGxgIHdoZW4gdGhlIHdvcmtzcGFjZSBoYXMgbm9cbiAqIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBkZXBsb3llZCAodGhlIGNhbGxlciB0aGVuIHVzZXMgdGhlIHNjcmFwZVxuICogZmFsbGJhY2spLiBBIHBpbiB0aGUgY2FsbGVyIGNob3NlIGRlbGliZXJhdGVseSAtIHRoZSByZXF1ZXN0J3MgYG1vZGVsYCwgdGhlXG4gKiBwbHVnaW4ncyBgbW9kZWxgLCBvciBgV0VCX1NFQVJDSF9NT0RFTGAgLSB0aHJvd3Mgd2hlbiBpdCByZXNvbHZlcyB0byBhblxuICogdW5zdXBwb3J0ZWQgLyBhYnNlbnQgZW5kcG9pbnQsIHNvIGEgYmFkIHBpbiBzdXJmYWNlcyByYXRoZXIgdGhhbiBzaWxlbnRseVxuICogZGVncmFkaW5nLiBBIHBpbiBpbmhlcml0ZWQgZnJvbSB0aGUgc2hhcmVkIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWBcbiAqIGJpbmRpbmcgaXMgb25seSBhIHByZWZlcmVuY2U6IHRoYXQgZW5kcG9pbnQgaXMgdGhlIGFwcCdzIHNlcnZpbmcgZW5kcG9pbnQsXG4gKiBub3QgbmVjZXNzYXJpbHkgYSB3ZWItc2VhcmNoLWNhcGFibGUgb25lLCBzbyBhbiB1bnVzYWJsZSB2YWx1ZSBmYWxscyB0aHJvdWdoXG4gKiB0byB0aGUgZmFsbGJhY2sgb3JkZXIuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVXZWJTZWFyY2hNb2RlbChcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICBjb25maWc6IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnLFxuICByZXF1ZXN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBjb25zdCBlbmRwb2ludHMgPSBhd2FpdCBsaXN0U2VydmluZ0VuZHBvaW50cyhjdHguY2xpZW50LCBjdHguaG9zdCwge1xuICAgIC4uLihjdHguY2FjaGVJZGVudGl0eSA/IHsgY2FjaGVJZGVudGl0eTogY3R4LmNhY2hlSWRlbnRpdHkgfSA6IHt9KSxcbiAgfSk7XG4gIC8vIE9ubHkgZGVwbG95ZWQsIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludHMgYXJlIGNhbmRpZGF0ZXMuXG4gIGNvbnN0IGNhcGFibGUgPSBlbmRwb2ludHMuZmlsdGVyKChlKSA9PiBzdXBwb3J0c1dlYlNlYXJjaChlLm5hbWUpKTtcbiAgY29uc3QgcGlubmVkID0gcmVxdWVzdGVkID8/IGNvbmZpZy5tb2RlbDtcbiAgY29uc3QgcGluSXNEZWxpYmVyYXRlID1cbiAgICByZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCB8fCBjb25maWcubW9kZWxTb3VyY2UgPT09IFwiY29uZmlnXCIgfHwgY29uZmlnLm1vZGVsU291cmNlID09PSBNT0RFTF9FTlY7XG5cbiAgaWYgKHBpbm5lZCkge1xuICAgIC8vIFJlc29sdmUgdGhlIGV4cGxpY2l0IGFzayB3aXRoaW4gdGhlIGNhcGFibGUgc2V0IG9ubHkuXG4gICAgY29uc3QgeyBtb2RlbElkIH0gPSByZXNvbHZlTW9kZWwoY2FwYWJsZSwge1xuICAgICAgZXhwbGljaXQ6IHBpbm5lZCxcbiAgICAgIGZ1enp5OiBjb25maWcuZnV6enksXG4gICAgICB0aHJlc2hvbGQ6IGNvbmZpZy5mdXp6eVRocmVzaG9sZCxcbiAgICB9KTtcbiAgICAvLyByZXNvbHZlTW9kZWwgcmV0dXJucyB0aGUgaW5wdXQgdmVyYmF0aW0gb24gbm8gbWF0Y2g7IHJlcXVpcmUgaXQgdG8gYmUgYVxuICAgIC8vIHJlYWwgY2FwYWJsZSBlbmRwb2ludCBzbyBhIGJhZCBwaW4gaXMgYSBjbGVhciBlcnJvciwgbm90IGEgcGhhbnRvbSBjYWxsLlxuICAgIGNvbnN0IHVzYWJsZSA9IGNhcGFibGUuc29tZSgoZSkgPT4gZS5uYW1lID09PSBtb2RlbElkKSAmJiBzdXBwb3J0c1dlYlNlYXJjaChtb2RlbElkKTtcbiAgICBpZiAodXNhYmxlKSByZXR1cm4gbW9kZWxJZDtcbiAgICBjb25zdCBkZXBsb3llZCA9IGNhcGFibGUubWFwKChlKSA9PiBlLm5hbWUpLmpvaW4oXCIsIFwiKSB8fCBcIm5vbmVcIjtcbiAgICBpZiAoIXBpbklzRGVsaWJlcmF0ZSkge1xuICAgICAgbG9nZ2VyLmluZm8oXCJzaGFyZWQtZW5kcG9pbnQtbm90LXdlYi1jYXBhYmxlXCIsIHtcbiAgICAgICAgZW52VmFyOiBTRVJWSU5HX0VORFBPSU5UX0VOVixcbiAgICAgICAgZGVwbG95ZWQsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBWYWxpZGF0aW9uRXJyb3IuaW52YWxpZFZhbHVlKFxuICAgICAgICBcIm1vZGVsXCIsXG4gICAgICAgIHBpbm5lZCxcbiAgICAgICAgYGEgZGVwbG95ZWQgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50IChkZXBsb3llZDogJHtkZXBsb3llZH0pYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IENvbmZpZ3VyYXRpb25FcnJvci5yZXNvdXJjZU5vdEZvdW5kKFxuICAgICAgICBcIldlYi1zZWFyY2gtY2FwYWJsZSBzZXJ2aW5nIGVuZHBvaW50XCIsXG4gICAgICAgIGBEZXBsb3llZCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnRzOiAke2RlcGxveWVkfS4gU2V0IG1vZGVsIG9yICR7TU9ERUxfRU5WfSB0byBvbmUgb2YgdGhlbS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2FwYWJsZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIC8vIE5vdGhpbmcgdXNhYmxlIHBpbm5lZDogcHJlZmVyIHRoZSBjb25maWd1cmVkIGZhbGxiYWNrIG9yZGVyIChHZW1pbmksIHRoZW5cbiAgLy8gR1BUKSB3aGVuIHRob3NlIGlkcyBhcmUgYWN0dWFsbHkgZGVwbG95ZWQ7IGVsc2UgdGFrZSB0aGUgYmVzdCBjYXBhYmxlXG4gIC8vIGVuZHBvaW50LlxuICBjb25zdCB7IG1vZGVsSWQgfSA9IHJlc29sdmVNb2RlbChjYXBhYmxlLCB7XG4gICAgZmFsbGJhY2tzOiBjb25maWcubW9kZWxGYWxsYmFja3MsXG4gICAgZnV6enk6IGNvbmZpZy5mdXp6eSxcbiAgICB0aHJlc2hvbGQ6IGNvbmZpZy5mdXp6eVRocmVzaG9sZCxcbiAgfSk7XG4gIHJldHVybiBjYXBhYmxlLnNvbWUoKGUpID0+IGUubmFtZSA9PT0gbW9kZWxJZCkgPyBtb2RlbElkIDogKGNhcGFibGVbMF0/Lm5hbWUgPz8gbnVsbCk7XG59XG5cbi8qKlxuICogUE9TVCBhIHNlcnZpbmcgcmVxdWVzdCBhcyB0aGUgT0JPIGNhbGxlciBhbmQgcmV0dXJuIHRoZSBwYXJzZWQgSlNPTiBib2R5LlxuICpcbiAqIEF1dGggaGVhZGVycyBhcmUgbWludGVkIHBlciBjYWxsIGZyb20gdGhlIE9CTyBjbGllbnQncyBTREsgY29uZmlnLCB3aGljaFxuICogcmVmcmVzaGVzIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGNsb3NlIHRvIGV4cGlyeSwgc28gdGhlIHJlcXVlc3QgY2FycmllcyB0aGVcbiAqIHJlcXVlc3RpbmcgdXNlcidzIGlkZW50aXR5LlxuICpcbiAqIFRoaXMgaXMgdGhlIG9uZSBEYXRhYnJpY2tzIGNhbGwgaW4gdGhlIHJlcG8gdGhhdCBkb2VzIG5vdCBnbyB0aHJvdWdoXG4gKiBgYXBpQ2xpZW50LnJlcXVlc3RgICsgYGRhdGFicmlja3MudG9Db250ZXh0YCAod2hpY2ggZG9lcyBmb3J3YXJkXG4gKiBjYW5jZWxsYXRpb24pLiBSZXRyeSBjbGFzc2lmaWNhdGlvbiBoZXJlIGhhcyB0byBkaXN0aW5ndWlzaCBhIGxvYWQtc2hlZCBvclxuICogc2VydmVyIGZhdWx0IGZyb20gdGhpcyByZXF1ZXN0J3Mgb3duIDR4eCwgYW5kIGBmZXRjaGAgZXhwb3NlcyB0aGUgSFRUUCBzdGF0dXNcbiAqIGRpcmVjdGx5OyB0aGUgU0RLIHJhaXNlcyBhbiBgQXBpRXJyb3JgIHRoYXQgY2FycmllcyB0aGUgc3RhdHVzIHVuZGVyXG4gKiBpbmNvbnNpc3RlbnQga2V5cywgd2hpY2ggaXMgZ3Vlc3N3b3JrIGJ5IGNvbXBhcmlzb24uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBvc3RTZXJ2aW5nKFxuICBjdHg6IFdlYlNlYXJjaENvbnRleHQsXG4gIHVybDogc3RyaW5nLFxuICBib2R5OiB1bmtub3duLFxuICBydW50aW1lOiBXZWJTZWFyY2hSdW50aW1lLFxuICBjYWNoZUtleTogcmVhZG9ubHkgKHN0cmluZyB8IG51bWJlcilbXSxcbiAgc2lnbmFsPzogQWJvcnRTaWduYWwsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IHsgY29uZmlnIH0gPSBydW50aW1lO1xuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgZXhlY3V0ZVJlYWQoXG4gICAgcnVudGltZSxcbiAgICBcInNlcnZpbmctcmVxdWVzdFwiLFxuICAgIHRvQ2FsbFNldHRpbmdzKHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cywgY29uZmlnLnRpbWVvdXRNcywgY2FjaGVLZXkpLFxuICAgIGFzeW5jIChleGVjdXRlU2lnbmFsKTogUHJvbWlzZTx1bmtub3duPiA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgLi4uKGF3YWl0IGludm9rZS5hdXRoSGVhZGVycyhjdHguY2xpZW50KSksXG4gICAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICAgIC4uLihleGVjdXRlU2lnbmFsID8geyBzaWduYWw6IGV4ZWN1dGVTaWduYWwgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAvLyBMb2FkLXNoZWRkaW5nIGFuZCBzZXJ2ZXIgZmF1bHRzIGFyZSB3b3J0aCBhbm90aGVyIGF0dGVtcHQ7IGEgNHh4IGlzXG4gICAgICAgIC8vIHRoaXMgcmVxdWVzdCdzIG93biBwcm9ibGVtLCBzbyBpdCBtdXN0IG5vdCBiZSByZXRyaWVkLlxuICAgICAgICBjb25zdCByZXRyeWFibGUgPVxuICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA+PSBTRVJWRVJfRVJST1JfU1RBVFVTIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gUkFURV9MSU1JVEVEX1NUQVRVUztcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGB3ZWItc2VhcmNoOiBNb2RlbCBTZXJ2aW5nIHJlamVjdGVkIHRoZSBzZWFyY2ggcmVxdWVzdCAoSFRUUCAke3Jlc3BvbnNlLnN0YXR1c30pYDtcbiAgICAgICAgdGhyb3cgcmV0cnlhYmxlXG4gICAgICAgICAgPyBuZXcgQ29ubmVjdGlvbkVycm9yKG1lc3NhZ2UsIHsgY29udGV4dDogeyBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9IH0pXG4gICAgICAgICAgOiBuZXcgRXhlY3V0aW9uRXJyb3IobWVzc2FnZSwgeyBjb250ZXh0OiB7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzIH0gfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xuICAgIH0sXG4gICAgc2lnbmFsLFxuICApO1xuICByZXR1cm4gb2JqZWN0LmlzUmVjb3JkKHBheWxvYWQpID8gcGF5bG9hZCA6IHt9O1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVzcG9uc2UgZXh0cmFjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBFeHRyYWN0IGFuc3dlciB0ZXh0IGFuZCBjaXRhdGlvbnMgZnJvbSBhbiBPcGVuQUkgUmVzcG9uc2VzIEFQSSBwYXlsb2FkLlxuICovXG5mdW5jdGlvbiBmcm9tUmVzcG9uc2VzUGF5bG9hZChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHtcbiAgYW5zd2VyOiBzdHJpbmc7XG4gIGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXTtcbn0ge1xuICBjb25zdCBvdXRwdXQgPSBBcnJheS5pc0FycmF5KHBheWxvYWQub3V0cHV0KSA/IHBheWxvYWQub3V0cHV0IDogW107XG4gIGNvbnN0IHRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW10gPSBbXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygb3V0cHV0KSB7XG4gICAgaWYgKCFvYmplY3QuaXNSZWNvcmQoaXRlbSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHBhcnRzID0gb3BlbmFpQ2hhdC5jaGF0Q29udGVudFBhcnRzKGl0ZW0uY29udGVudCk7XG4gICAgaWYgKCFwYXJ0cykgY29udGludWU7XG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICBpZiAoIW9iamVjdC5pc1JlY29yZChwYXJ0KSkgY29udGludWU7XG4gICAgICBjb25zdCB0ZXh0ID0gc3RyaW5nVXRpbHMudHJpbVRvRW1wdHkocGFydC50ZXh0KTtcbiAgICAgIGlmICh0ZXh0KSB0ZXh0cy5wdXNoKHRleHQpO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSBBcnJheS5pc0FycmF5KHBhcnQuYW5ub3RhdGlvbnMpID8gcGFydC5hbm5vdGF0aW9ucyA6IFtdO1xuICAgICAgZm9yIChjb25zdCBhbm5vdGF0aW9uIG9mIGFubm90YXRpb25zKSB7XG4gICAgICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKGFubm90YXRpb24pKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgdXJsID0gc3RyaW5nVXRpbHMudHJpbVRvRW1wdHkoYW5ub3RhdGlvbi51cmwpO1xuICAgICAgICBpZiAoIXVybCB8fCBzZWVuLmhhcyh1cmwpKSBjb250aW51ZTtcbiAgICAgICAgc2Vlbi5hZGQodXJsKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBzdHJpbmdVdGlscy50cmltVG9FbXB0eShhbm5vdGF0aW9uLnRpdGxlKTtcbiAgICAgICAgY2l0YXRpb25zLnB1c2goeyB1cmwsIC4uLih0aXRsZSA/IHsgdGl0bGUgfSA6IHt9KSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgYW5zd2VyID0gc3RyaW5nVXRpbHMudHJpbVRvRW1wdHkocGF5bG9hZC5vdXRwdXRfdGV4dCkgfHwgdGV4dHMuam9pbihcIlxcblwiKS50cmltKCk7XG4gIHJldHVybiB7IGFuc3dlciwgY2l0YXRpb25zIH07XG59XG5cbi8qKlxuICogRXh0cmFjdCBhbnN3ZXIgdGV4dCArIGNpdGF0aW9ucyBmcm9tIGEgQ2hhdCBDb21wbGV0aW9ucyBwYXlsb2FkIChHZW1pbmkgdmlhXG4gKiBgZ29vZ2xlX3NlYXJjaGApLiBUaGUgYW5zd2VyIGlzIGBjaG9pY2VzWzBdLm1lc3NhZ2UuY29udGVudGA7IGdyb3VuZGluZ1xuICogc291cmNlcywgd2hlbiBwcmVzZW50LCBzdXJmYWNlIHVuZGVyIGBjaG9pY2VzWzBdLm1lc3NhZ2VgIGdyb3VuZGluZ1xuICogbWV0YWRhdGEgKGJlc3QtZWZmb3J0IC0gc2hhcGVzIHZhcnksIHNvIHdlIHNjYW4gZm9yIHVybC1iZWFyaW5nIGVudHJpZXMpLlxuICovXG5mdW5jdGlvbiBmcm9tQ2hhdFBheWxvYWQocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB7XG4gIGFuc3dlcjogc3RyaW5nO1xuICBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW107XG59IHtcbiAgY29uc3QgY2hvaWNlcyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5jaG9pY2VzKSA/IHBheWxvYWQuY2hvaWNlcyA6IFtdO1xuICBjb25zdCBmaXJzdCA9IGNob2ljZXNbMF07XG4gIGNvbnN0IG1lc3NhZ2UgPSBvYmplY3QuaXNSZWNvcmQoZmlyc3QpICYmIG9iamVjdC5pc1JlY29yZChmaXJzdC5tZXNzYWdlKSA/IGZpcnN0Lm1lc3NhZ2UgOiB7fTtcbiAgY29uc3QgYW5zd2VyID0gb3BlbmFpQ2hhdC5jaGF0Q29udGVudFRvVGV4dChtZXNzYWdlLmNvbnRlbnQpO1xuICBjb25zdCBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW10gPSBbXTtcbiAgLy8gQmVzdC1lZmZvcnQgZ3JvdW5kaW5nIGV4dHJhY3Rpb246IHdhbGsgYW55IG5lc3RlZCBvYmplY3QgZm9yIHt1cml8dXJsLHRpdGxlfS5cbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB2aXNpdCA9ICh2OiB1bmtub3duLCBkZXB0aDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKGRlcHRoID4gTUFYX0dST1VORElOR19XQUxLX0RFUFRIIHx8ICFvYmplY3QuaXNSZWNvcmQodikpIHJldHVybjtcbiAgICBjb25zdCB1cmwgPSBzdHJpbmdVdGlscy50cmltVG9FbXB0eSh2LnVybCkgfHwgc3RyaW5nVXRpbHMudHJpbVRvRW1wdHkodi51cmkpO1xuICAgIGlmICh1cmwgJiYgIXNlZW4uaGFzKHVybCkpIHtcbiAgICAgIHNlZW4uYWRkKHVybCk7XG4gICAgICBjb25zdCB0aXRsZSA9IHN0cmluZ1V0aWxzLnRyaW1Ub0VtcHR5KHYudGl0bGUpO1xuICAgICAgY2l0YXRpb25zLnB1c2goeyB1cmwsIC4uLih0aXRsZSA/IHsgdGl0bGUgfSA6IHt9KSB9KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LnZhbHVlcyh2KSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgdmFsLmZvckVhY2goKHgpID0+IHZpc2l0KHgsIGRlcHRoICsgMSkpO1xuICAgICAgZWxzZSBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIpIHZpc2l0KHZhbCwgZGVwdGggKyAxKTtcbiAgICB9XG4gIH07XG4gIHZpc2l0KG1lc3NhZ2UuZ3JvdW5kaW5nX21ldGFkYXRhID8/IG1lc3NhZ2UuZ3JvdW5kaW5nTWV0YWRhdGEsIDApO1xuICByZXR1cm4geyBhbnN3ZXIsIGNpdGF0aW9ucyB9O1xufVxuXG4vKipcbiAqIFJ1biBhIHdlYiBzZWFyY2guIFByZWZlcnMgdGhlIERhdGFicmlja3MgbmF0aXZlIHdlYi1zZWFyY2ggdG9vbCBvbiBhXG4gKiBkZXBsb3llZCBHUFQvR2VtaW5pIGVuZHBvaW50IChzeW50aGVzaXplZCBhbnN3ZXIgKyBjaXRhdGlvbnMpOyB3aGVuIHRoZVxuICogd29ya3NwYWNlIGhhcyBubyBzdWNoIGVuZHBvaW50IEFORCB0aGUgc2NyYXBlIGZhbGxiYWNrIGlzIGVuYWJsZWQsIGZhbGxzXG4gKiBiYWNrIHRvIGEgRHVja0R1Y2tHbyBzY3JhcGUgc28gdGhlIHRvb2wgc3RpbGwgcmV0dXJucyByZXN1bHRzIGluc3RlYWQgb2ZcbiAqIGVycm9yaW5nLiBDaXRhdGlvbnMgYXJlIGZpbHRlcmVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyZWQgVVJMIGFsbG93LWxpc3QuXG4gKlxuICogYHNpZ25hbGAgY2FuY2VscyB0aGUgd2hvbGUgY2FsbCwgaW5jbHVkaW5nIHRoZSBpbi1mbGlnaHQgc2VydmluZyByZXF1ZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2ViU2VhcmNoKFxuICByZXF1ZXN0OiBXZWJTZWFyY2hSZXF1ZXN0LFxuICBydW50aW1lT3JDb25maWc6IFdlYlNlYXJjaFJ1bnRpbWVJbnB1dCxcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiB7XG4gIGNvbnN0IHJ1bnRpbWUgPSB0b1dlYlNlYXJjaFJ1bnRpbWUocnVudGltZU9yQ29uZmlnKTtcbiAgY29uc3QgeyBjb25maWcgfSA9IHJ1bnRpbWU7XG4gIGNvbnN0IG1vZGVsSWQgPSBhd2FpdCByZXNvbHZlV2ViU2VhcmNoTW9kZWwoY3R4LCBjb25maWcsIHJlcXVlc3QubW9kZWwpO1xuXG4gIGlmIChtb2RlbElkID09PSBudWxsKSB7XG4gICAgLy8gTm8gbmF0aXZlIHdlYi1zZWFyY2ggbW9kZWwgZGVwbG95ZWQgaW4gdGhpcyB3b3Jrc3BhY2UuXG4gICAgaWYgKGNvbmZpZy5zY3JhcGVGYWxsYmFjaykge1xuICAgICAgbG9nZ2VyLmluZm8oXCJuby1uYXRpdmUtbW9kZWw6c2NyYXBlLWZhbGxiYWNrXCIsIHsgcXVlcnk6IHJlcXVlc3QucXVlcnkgfSk7XG4gICAgICByZXR1cm4gcnVuU2NyYXBlU2VhcmNoKHJlcXVlc3QsIHJ1bnRpbWUsIHNpZ25hbCk7XG4gICAgfVxuICAgIHRocm93IENvbmZpZ3VyYXRpb25FcnJvci5yZXNvdXJjZU5vdEZvdW5kKFxuICAgICAgXCJXZWItc2VhcmNoLWNhcGFibGUgc2VydmluZyBlbmRwb2ludFwiLFxuICAgICAgXCJObyBHUFQvR2VtaW5pIGVuZHBvaW50IGlzIGRlcGxveWVkIGluIHRoaXMgd29ya3NwYWNlIGFuZCB0aGUgc2NyYXBlIGZhbGxiYWNrIGlzIFwiICtcbiAgICAgICAgYGRpc2FibGVkLiBEZXBsb3kgYSBzdXBwb3J0ZWQgZW5kcG9pbnQsIHNldCBtb2RlbCBvciAke01PREVMX0VOVn0sIG9yIGVuYWJsZSB0aGUgYCArXG4gICAgICAgIFwiZmFsbGJhY2sgKFdFQl9TRUFSQ0hfU0NSQVBFX0ZBTExCQUNLPTEpLlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwcm92aWRlciA9IGRldGVjdFdlYlNlYXJjaFByb3ZpZGVyKG1vZGVsSWQpITsgLy8gZ3VhcmFudGVlZCBieSByZXNvbHZlIHN0ZXBcbiAgY29uc3Qgc3BlYyA9IHdlYlNlYXJjaFRvb2xTcGVjKHByb3ZpZGVyLCBjb25maWcud2ViU2VhcmNoVG9vbHMpO1xuXG4gIGNvbnN0IHVybCA9XG4gICAgc3BlYy5hcGkgPT09IFwicmVzcG9uc2VzXCIgPyBpbnZva2UucmVzcG9uc2VzVXJsKGN0eC5ob3N0KSA6IGludm9rZS5jaGF0Q29tcGxldGlvbnNVcmwoY3R4Lmhvc3QpO1xuICBjb25zdCBib2R5ID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIlxuICAgICAgPyB7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsSWQsXG4gICAgICAgICAgaW5wdXQ6IFt7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiByZXF1ZXN0LnF1ZXJ5IH1dLFxuICAgICAgICAgIHRvb2xzOiBbc3BlYy50b29sXSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsSWQsXG4gICAgICAgICAgbWVzc2FnZXM6IFt7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiByZXF1ZXN0LnF1ZXJ5IH1dLFxuICAgICAgICAgIHRvb2xzOiBbc3BlYy50b29sXSxcbiAgICAgICAgfTtcblxuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcG9zdFNlcnZpbmcoXG4gICAgY3R4LFxuICAgIHVybCxcbiAgICBib2R5LFxuICAgIHJ1bnRpbWUsXG4gICAgW1wid2ViLXNlYXJjaFwiLCBcInNlcnZpbmdcIiwgc3BlYy5hcGksIG1vZGVsSWQsIHJlcXVlc3QucXVlcnldLFxuICAgIHNpZ25hbCxcbiAgKTtcblxuICBjb25zdCB7IGFuc3dlciwgY2l0YXRpb25zIH0gPVxuICAgIHNwZWMuYXBpID09PSBcInJlc3BvbnNlc1wiID8gZnJvbVJlc3BvbnNlc1BheWxvYWQocGF5bG9hZCkgOiBmcm9tQ2hhdFBheWxvYWQocGF5bG9hZCk7XG5cbiAgY29uc3QgcGVybWl0dGVkID0gY2l0YXRpb25zLmZpbHRlcigoYykgPT4gY29uZmlnLmFsbG93TGlzdC5hbGxvd3MoYy51cmwpKTtcbiAgY29uc3QgZHJvcHBlZCA9IGNpdGF0aW9ucy5sZW5ndGggLSBwZXJtaXR0ZWQubGVuZ3RoO1xuICBjb25zdCB0cmltbWVkID0gcGVybWl0dGVkLnNsaWNlKDAsIGNvbmZpZy5tYXhDaXRhdGlvbnMpO1xuICBsb2dnZXIuZGVidWcoXCJzZWFyY2hlZFwiLCB7XG4gICAgcXVlcnk6IHJlcXVlc3QucXVlcnksXG4gICAgbW9kZWw6IG1vZGVsSWQsXG4gICAgcHJvdmlkZXIsXG4gICAgY2l0YXRpb25zOiBjaXRhdGlvbnMubGVuZ3RoLFxuICAgIC4uLihkcm9wcGVkID4gMCA/IHsgZmlsdGVyZWQ6IGRyb3BwZWQgfSA6IHt9KSxcbiAgICByZXR1cm5lZDogdHJpbW1lZC5sZW5ndGgsXG4gIH0pO1xuXG4gIHJldHVybiB7IHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LCBhbnN3ZXIsIGNpdGF0aW9uczogdHJpbW1lZCwgbW9kZWw6IG1vZGVsSWQgfTtcbn1cbiJdfQ==
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQWdDLE1BQU0sYUFBYSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEdBR25CLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHOUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsWUFBWSxDQUFDO0FBRTlDOzs7OztHQUtHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFbkMsK0VBQStFO0FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FB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QUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXRGLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUNwRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDdkIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxPQUFPO1FBQ2QsUUFBUTtRQUNSLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDekIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBXZWIgc2VhcmNoIGJhY2tlZCBieSB0aGUgRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wuXG4gKlxuICogVW5saWtlIGEgc2NyYXBpbmcgY2xpZW50LCB0aGUgc2VhcmNoIHJ1bnMgKmluc2lkZSogYSBtb2RlbCBjYWxsOiB3ZSBQT1NUIHRoZVxuICogcXVlcnkgdG8gdGhlIHdvcmtzcGFjZSdzIHNlcnZpbmcgZW5kcG9pbnQgd2l0aCB0aGUgcHJvdmlkZXIncyB3ZWItc2VhcmNoXG4gKiB0b29sIHNwZWMgYXR0YWNoZWQsIGFuZCB0aGUgbW9kZWwgc2VhcmNoZXMgdGhlIHdlYiBhbmQgd3JpdGVzIHRoZSBhbnN3ZXIuXG4gKiB7QGxpbmsgcnVuV2ViU2VhcmNofTpcbiAqXG4gKiAgIDEuIFJlc29sdmVzIGEgd2ViLXNlYXJjaC1jYXBhYmxlIG1vZGVsIElOREVQRU5ERU5UTFkgb2YgdGhlIGNhbGxpbmdcbiAqICAgICAgYWdlbnQncyBjaGF0IG1vZGVsICh0aGUgYWdlbnQgbWF5IHJ1biBvbiBhIG1vZGVsIHdpdGhvdXQgd2ViIHNlYXJjaCkuXG4gKiAgICAgIEEgcGlubmVkIGBtb2RlbGAgKHJlcXVlc3Qgb3IgY29uZmlnKSBpcyBmdXp6eS1tYXRjaGVkOyBvdGhlcndpc2UgdGhlXG4gKiAgICAgIGNvbmZpZ3VyZWQgZmFsbGJhY2sgb3JkZXIgKEdlbWluaSwgdGhlbiBHUFQpIGlzIHdhbGtlZCB0byB0aGUgZmlyc3RcbiAqICAgICAgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50IHRoYXQgZXhpc3RzLiBBbiBleHBsaWNpdCBidXQgdW5zdXBwb3J0ZWRcbiAqICAgICAgbW9kZWwgaXMgYSBoYXJkIGVycm9yLCBub3QgYSBzaWxlbnQgZmFsbGJhY2suXG4gKiAgIDIuIFBPU1RzIHRvIHRoZSBwcm92aWRlcidzIFJFU1Qgc3VyZmFjZSAoYC9zZXJ2aW5nLWVuZHBvaW50cy9yZXNwb25zZXNgXG4gKiAgICAgIGZvciBPcGVuQUksIGAvc2VydmluZy1lbmRwb2ludHMvY2hhdC9jb21wbGV0aW9uc2AgZm9yIEdlbWluaSkgd2l0aCB0aGVcbiAqICAgICAgbWFwcGVkIHRvb2wgc3BlYywgYXV0aGVudGljYXRlZCBhcyB0aGUgT0JPIGNhbGxlci5cbiAqICAgMy4gUmV0dXJucyB0aGUgc3ludGhlc2l6ZWQgYW5zd2VyIHBsdXMgdGhlIGNpdGVkIHNvdXJjZXMsIHdpdGggY2l0YXRpb25zXG4gKiAgICAgIHNpbGVudGx5IGZpbHRlcmVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyZWQgVVJMIGFsbG93LWxpc3QuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25FcnJvcixcbiAgQ29ubmVjdGlvbkVycm9yLFxuICBFeGVjdXRpb25FcnJvcixcbiAgZ2V0RXhlY3V0aW9uQ29udGV4dCxcbiAgVmFsaWRhdGlvbkVycm9yLFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBpbnZva2UsIHJlc29sdmUsIG1vZGVsQ2F0YWxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBsb2csIG9iamVjdCwgc3RyaW5nVXRpbHMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgb3BlbmFpQ2hhdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHsgTU9ERUxfRU5WLCBTRVJWSU5HX0VORFBPSU5UX0VOViwgdHlwZSBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgdG9DYWxsU2V0dGluZ3MsIHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cyB9IGZyb20gXCIuL2RlZmF1bHRzLnRzXCI7XG5pbXBvcnQgeyBkZXRlY3RXZWJTZWFyY2hQcm92aWRlciwgc3VwcG9ydHNXZWJTZWFyY2gsIHdlYlNlYXJjaFRvb2xTcGVjIH0gZnJvbSBcIi4vcHJvdmlkZXIudHNcIjtcbmltcG9ydCB7XG4gIGV4ZWN1dGVSZWFkLFxuICB0b1dlYlNlYXJjaFJ1bnRpbWUsXG4gIHR5cGUgV2ViU2VhcmNoUnVudGltZSxcbiAgdHlwZSBXZWJTZWFyY2hSdW50aW1lSW5wdXQsXG59IGZyb20gXCIuL3J1bnRpbWUudHNcIjtcbmltcG9ydCB0eXBlIHsgV2ViU2VhcmNoQ2l0YXRpb24sIFdlYlNlYXJjaFJlcXVlc3QsIFdlYlNlYXJjaFJlc3VsdCB9IGZyb20gXCIuL3NjaGVtYS50c1wiO1xuaW1wb3J0IHsgcnVuU2NyYXBlU2VhcmNoIH0gZnJvbSBcIi4vc2NyYXBlLnRzXCI7XG5cbnR5cGUgV29ya3NwYWNlQ2xpZW50TGlrZSA9IG1vZGVsQ2F0YWxvZy5Xb3Jrc3BhY2VDbGllbnRMaWtlICYgaW52b2tlLkF1dGhlbnRpY2F0aW5nQ2xpZW50TGlrZTtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ3ZWItc2VhcmNoL3NlYXJjaFwiKTtcbmNvbnN0IHsgcmVzb2x2ZU1vZGVsIH0gPSByZXNvbHZlO1xuY29uc3QgeyBsaXN0U2VydmluZ0VuZHBvaW50cyB9ID0gbW9kZWxDYXRhbG9nO1xuXG4vKipcbiAqIEhvdyBkZWVwIHRoZSBncm91bmRpbmctbWV0YWRhdGEgd2FsayBkZXNjZW5kcy4gR2VtaW5pIG5lc3RzIGl0cyBzb3VyY2VzIGFcbiAqIGhhbmRmdWwgb2YgbGV2ZWxzIGRvd24gYW5kIHRoZSBzaGFwZSB2YXJpZXMgYnkgbW9kZWwgdmVyc2lvbiwgc28gdGhlIHdhbGtcbiAqIGlzIGdlbmVyaWM7IHRoZSBib3VuZCBpcyB3aGF0IGtlZXBzIGEgcGF0aG9sb2dpY2FsIHBheWxvYWQgZnJvbSB0dXJuaW5nIGl0XG4gKiBpbnRvIGEgZnVsbCB0cmF2ZXJzYWwgb2YgdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggPSA2O1xuXG4vKiogTG93ZXN0IEhUVFAgc3RhdHVzIHRyZWF0ZWQgYXMgYSBzZXJ2ZXItc2lkZSAocmV0cnlhYmxlKSBzZXJ2aW5nIGZhaWx1cmUuICovXG5jb25zdCBTRVJWRVJfRVJST1JfU1RBVFVTID0gNTAwO1xuXG4vKiogU3RhdHVzIE1vZGVsIFNlcnZpbmcgdXNlcyB0byBzaGVkIGxvYWQ7IHJldHJ5YWJsZSBsaWtlIGEgNXh4LiAqL1xuY29uc3QgUkFURV9MSU1JVEVEX1NUQVRVUyA9IDQyOTtcblxuLyoqIENvbnRleHQgYSBzZWFyY2ggbmVlZHMgZnJvbSB0aGUgY2FsbGVyOiB0aGUgT0JPIGNsaWVudCArIHdvcmtzcGFjZSBob3N0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hDb250ZXh0IHtcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlO1xuICBob3N0OiBzdHJpbmc7XG4gIC8qKiBUcnVzdGVkIGlkZW50aXR5IG9mIHRoZSBjcmVkZW50aWFsIGNhcnJpZWQgYnkgYGNsaWVudGAuICovXG4gIGNhY2hlSWRlbnRpdHk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgT0JPIHdvcmtzcGFjZSBjbGllbnQgKyBob3N0IGZyb20gdGhlIGFjdGl2ZSBBcHBLaXQgZXhlY3V0aW9uXG4gKiBjb250ZXh0LiBJbnNpZGUgYGFnZW50LnN0cmVhbWAncyBgYXNVc2VyKHJlcSlgIHNjb3BlIHRoaXMgaGl0cyB0aGUgc2VydmluZ1xuICogZW5kcG9pbnQgYXMgdGhlIHJlcXVlc3RpbmcgdXNlcjsgb3V0c2lkZSBhIHVzZXIgY29udGV4dCBBcHBLaXQgZmFsbHMgYmFjayB0b1xuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQoKTogUHJvbWlzZTxXZWJTZWFyY2hDb250ZXh0PiB7XG4gIGNvbnN0IGN0eCA9IGdldEV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjdHguY2xpZW50LmNvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGNhY2hlSWRlbnRpdHkgPSBcInVzZXJJZFwiIGluIGN0eCA/IGN0eC51c2VySWQgOiBjdHguc2VydmljZVVzZXJJZDtcbiAgcmV0dXJuIHsgY2xpZW50OiBjdHguY2xpZW50LCBob3N0LCBjYWNoZUlkZW50aXR5IH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBhZ2FpbnN0IHRoZSBMSVZFIHdvcmtzcGFjZSBjYXRhbG9ndWUgLSBzb1xuICogd2UgbmV2ZXIgcmV0dXJuIGFuIGVuZHBvaW50IGlkIHRoYXQgaXNuJ3QgYWN0dWFsbHkgZGVwbG95ZWQgKHRoZSBcImVuZHBvaW50XG4gKiBkb2VzIG5vdCBleGlzdFwiIGZhaWx1cmUgYSBoYXJkY29kZWQgZmFsbGJhY2sgaWQgd291bGQgY2F1c2UpLiBSZXVzZXNcbiAqIGBAZGJ4LXRvb2xzL21vZGVsYCdzIGV4aXN0aW5nIGNhdGFsb2d1ZSArIHJlc29sdmVyIHJhdGhlciB0aGFuIGEgY3VzdG9tXG4gKiBsb29rdXA6IHtAbGluayBsaXN0U2VydmluZ0VuZHBvaW50c30gbGlzdHMgdGhlIGVuZHBvaW50cyAoY2FjaGVkKSwgYW5kIHdlXG4gKiByZXN0cmljdCB0aGUgY2FuZGlkYXRlIHNldCB0byB0aGUge0BsaW5rIHN1cHBvcnRzV2ViU2VhcmNofSBvbmVzIGJlZm9yZVxuICoge0BsaW5rIHJlc29sdmVNb2RlbH0gZnV6enktcGlja3Mgd2l0aGluIGl0LlxuICpcbiAqIFJldHVybnMgdGhlIGNob3NlbiBlbmRwb2ludCBpZCwgb3IgYG51bGxgIHdoZW4gdGhlIHdvcmtzcGFjZSBoYXMgbm9cbiAqIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBkZXBsb3llZCAodGhlIGNhbGxlciB0aGVuIHVzZXMgdGhlIHNjcmFwZVxuICogZmFsbGJhY2spLiBBIHBpbiB0aGUgY2FsbGVyIGNob3NlIGRlbGliZXJhdGVseSAtIHRoZSByZXF1ZXN0J3MgYG1vZGVsYCwgdGhlXG4gKiBwbHVnaW4ncyBgbW9kZWxgLCBvciBgV0VCX1NFQVJDSF9NT0RFTGAgLSB0aHJvd3Mgd2hlbiBpdCByZXNvbHZlcyB0byBhblxuICogdW5zdXBwb3J0ZWQgLyBhYnNlbnQgZW5kcG9pbnQsIHNvIGEgYmFkIHBpbiBzdXJmYWNlcyByYXRoZXIgdGhhbiBzaWxlbnRseVxuICogZGVncmFkaW5nLiBBIHBpbiBpbmhlcml0ZWQgZnJvbSB0aGUgc2hhcmVkIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWBcbiAqIGJpbmRpbmcgaXMgb25seSBhIHByZWZlcmVuY2U6IHRoYXQgZW5kcG9pbnQgaXMgdGhlIGFwcCdzIHNlcnZpbmcgZW5kcG9pbnQsXG4gKiBub3QgbmVjZXNzYXJpbHkgYSB3ZWItc2VhcmNoLWNhcGFibGUgb25lLCBzbyBhbiB1bnVzYWJsZSB2YWx1ZSBmYWxscyB0aHJvdWdoXG4gKiB0byB0aGUgZmFsbGJhY2sgb3JkZXIuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVXZWJTZWFyY2hNb2RlbChcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICBjb25maWc6IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnLFxuICByZXF1ZXN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICBjb25zdCBlbmRwb2ludHMgPSBhd2FpdCBsaXN0U2VydmluZ0VuZHBvaW50cyhjdHguY2xpZW50LCBjdHguaG9zdCwge1xuICAgIC4uLihjdHguY2FjaGVJZGVudGl0eSA/IHsgY2FjaGVJZGVudGl0eTogY3R4LmNhY2hlSWRlbnRpdHkgfSA6IHt9KSxcbiAgfSk7XG4gIC8vIE9ubHkgZGVwbG95ZWQsIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludHMgYXJlIGNhbmRpZGF0ZXMuXG4gIGNvbnN0IGNhcGFibGUgPSBlbmRwb2ludHMuZmlsdGVyKChlKSA9PiBzdXBwb3J0c1dlYlNlYXJjaChlLm5hbWUpKTtcbiAgY29uc3QgcGlubmVkID0gcmVxdWVzdGVkID8/IGNvbmZpZy5tb2RlbDtcbiAgY29uc3QgcGluSXNEZWxpYmVyYXRlID1cbiAgICByZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCB8fCBjb25maWcubW9kZWxTb3VyY2UgPT09IFwiY29uZmlnXCIgfHwgY29uZmlnLm1vZGVsU291cmNlID09PSBNT0RFTF9FTlY7XG5cbiAgaWYgKHBpbm5lZCkge1xuICAgIC8vIFJlc29sdmUgdGhlIGV4cGxpY2l0IGFzayB3aXRoaW4gdGhlIGNhcGFibGUgc2V0IG9ubHkuXG4gICAgY29uc3QgeyBtb2RlbElkIH0gPSByZXNvbHZlTW9kZWwoY2FwYWJsZSwge1xuICAgICAgZXhwbGljaXQ6IHBpbm5lZCxcbiAgICAgIGZ1enp5OiBjb25maWcuZnV6enksXG4gICAgICB0aHJlc2hvbGQ6IGNvbmZpZy5mdXp6eVRocmVzaG9sZCxcbiAgICB9KTtcbiAgICAvLyByZXNvbHZlTW9kZWwgcmV0dXJucyB0aGUgaW5wdXQgdmVyYmF0aW0gb24gbm8gbWF0Y2g7IHJlcXVpcmUgaXQgdG8gYmUgYVxuICAgIC8vIHJlYWwgY2FwYWJsZSBlbmRwb2ludCBzbyBhIGJhZCBwaW4gaXMgYSBjbGVhciBlcnJvciwgbm90IGEgcGhhbnRvbSBjYWxsLlxuICAgIGNvbnN0IHVzYWJsZSA9IGNhcGFibGUuc29tZSgoZSkgPT4gZS5uYW1lID09PSBtb2RlbElkKSAmJiBzdXBwb3J0c1dlYlNlYXJjaChtb2RlbElkKTtcbiAgICBpZiAodXNhYmxlKSByZXR1cm4gbW9kZWxJZDtcbiAgICBjb25zdCBkZXBsb3llZCA9IGNhcGFibGUubWFwKChlKSA9PiBlLm5hbWUpLmpvaW4oXCIsIFwiKSB8fCBcIm5vbmVcIjtcbiAgICBpZiAoIXBpbklzRGVsaWJlcmF0ZSkge1xuICAgICAgbG9nZ2VyLmluZm8oXCJzaGFyZWQtZW5kcG9pbnQtbm90LXdlYi1jYXBhYmxlXCIsIHtcbiAgICAgICAgZW52VmFyOiBTRVJWSU5HX0VORFBPSU5UX0VOVixcbiAgICAgICAgZGVwbG95ZWQsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBWYWxpZGF0aW9uRXJyb3IuaW52YWxpZFZhbHVlKFxuICAgICAgICBcIm1vZGVsXCIsXG4gICAgICAgIHBpbm5lZCxcbiAgICAgICAgYGEgZGVwbG95ZWQgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50IChkZXBsb3llZDogJHtkZXBsb3llZH0pYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IENvbmZpZ3VyYXRpb25FcnJvci5yZXNvdXJjZU5vdEZvdW5kKFxuICAgICAgICBcIldlYi1zZWFyY2gtY2FwYWJsZSBzZXJ2aW5nIGVuZHBvaW50XCIsXG4gICAgICAgIGBEZXBsb3llZCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnRzOiAke2RlcGxveWVkfS4gU2V0IG1vZGVsIG9yICR7TU9ERUxfRU5WfSB0byBvbmUgb2YgdGhlbS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2FwYWJsZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIC8vIE5vdGhpbmcgdXNhYmxlIHBpbm5lZDogcHJlZmVyIHRoZSBjb25maWd1cmVkIGZhbGxiYWNrIG9yZGVyIChHZW1pbmksIHRoZW5cbiAgLy8gR1BUKSB3aGVuIHRob3NlIGlkcyBhcmUgYWN0dWFsbHkgZGVwbG95ZWQ7IGVsc2UgdGFrZSB0aGUgYmVzdCBjYXBhYmxlXG4gIC8vIGVuZHBvaW50LlxuICBjb25zdCB7IG1vZGVsSWQgfSA9IHJlc29sdmVNb2RlbChjYXBhYmxlLCB7XG4gICAgZmFsbGJhY2tzOiBbLi4uY29uZmlnLm1vZGVsRmFsbGJhY2tzXSxcbiAgICBmdXp6eTogY29uZmlnLmZ1enp5LFxuICAgIHRocmVzaG9sZDogY29uZmlnLmZ1enp5VGhyZXNob2xkLFxuICB9KTtcbiAgcmV0dXJuIGNhcGFibGUuc29tZSgoZSkgPT4gZS5uYW1lID09PSBtb2RlbElkKSA/IG1vZGVsSWQgOiAoY2FwYWJsZVswXT8ubmFtZSA/PyBudWxsKTtcbn1cblxuLyoqXG4gKiBQT1NUIGEgc2VydmluZyByZXF1ZXN0IGFzIHRoZSBPQk8gY2FsbGVyIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBKU09OIGJvZHkuXG4gKlxuICogQXV0aCBoZWFkZXJzIGFyZSBtaW50ZWQgcGVyIGNhbGwgZnJvbSB0aGUgT0JPIGNsaWVudCdzIFNESyBjb25maWcsIHdoaWNoXG4gKiByZWZyZXNoZXMgdGhlIHRva2VuIHdoZW4gaXQgaXMgY2xvc2UgdG8gZXhwaXJ5LCBzbyB0aGUgcmVxdWVzdCBjYXJyaWVzIHRoZVxuICogcmVxdWVzdGluZyB1c2VyJ3MgaWRlbnRpdHkuXG4gKlxuICogVGhpcyBpcyB0aGUgb25lIERhdGFicmlja3MgY2FsbCBpbiB0aGUgcmVwbyB0aGF0IGRvZXMgbm90IGdvIHRocm91Z2hcbiAqIGBhcGlDbGllbnQucmVxdWVzdGAgKyBgZGF0YWJyaWNrcy50b0NvbnRleHRgICh3aGljaCBkb2VzIGZvcndhcmRcbiAqIGNhbmNlbGxhdGlvbikuIFJldHJ5IGNsYXNzaWZpY2F0aW9uIGhlcmUgaGFzIHRvIGRpc3Rpbmd1aXNoIGEgbG9hZC1zaGVkIG9yXG4gKiBzZXJ2ZXIgZmF1bHQgZnJvbSB0aGlzIHJlcXVlc3QncyBvd24gNHh4LCBhbmQgYGZldGNoYCBleHBvc2VzIHRoZSBIVFRQIHN0YXR1c1xuICogZGlyZWN0bHk7IHRoZSBTREsgcmFpc2VzIGFuIGBBcGlFcnJvcmAgdGhhdCBjYXJyaWVzIHRoZSBzdGF0dXMgdW5kZXJcbiAqIGluY29uc2lzdGVudCBrZXlzLCB3aGljaCBpcyBndWVzc3dvcmsgYnkgY29tcGFyaXNvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9zdFNlcnZpbmcoXG4gIGN0eDogV2ViU2VhcmNoQ29udGV4dCxcbiAgdXJsOiBzdHJpbmcsXG4gIGJvZHk6IHVua25vd24sXG4gIHJ1bnRpbWU6IFdlYlNlYXJjaFJ1bnRpbWUsXG4gIGNhY2hlS2V5OiByZWFkb25seSAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IHJ1bnRpbWU7XG4gIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBleGVjdXRlUmVhZChcbiAgICBydW50aW1lLFxuICAgIFwic2VydmluZy1yZXF1ZXN0XCIsXG4gICAgdG9DYWxsU2V0dGluZ3Mod2ViU2VhcmNoRXhlY3V0ZURlZmF1bHRzLCBjb25maWcudGltZW91dE1zLCBjYWNoZUtleSksXG4gICAgYXN5bmMgKGV4ZWN1dGVTaWduYWwpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAuLi4oYXdhaXQgaW52b2tlLmF1dGhIZWFkZXJzKGN0eC5jbGllbnQpKSxcbiAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgLi4uKGV4ZWN1dGVTaWduYWwgPyB7IHNpZ25hbDogZXhlY3V0ZVNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIC8vIExvYWQtc2hlZGRpbmcgYW5kIHNlcnZlciBmYXVsdHMgYXJlIHdvcnRoIGFub3RoZXIgYXR0ZW1wdDsgYSA0eHggaXNcbiAgICAgICAgLy8gdGhpcyByZXF1ZXN0J3Mgb3duIHByb2JsZW0sIHNvIGl0IG11c3Qgbm90IGJlIHJldHJpZWQuXG4gICAgICAgIGNvbnN0IHJldHJ5YWJsZSA9XG4gICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID49IFNFUlZFUl9FUlJPUl9TVEFUVVMgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSBSQVRFX0xJTUlURURfU1RBVFVTO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYHdlYi1zZWFyY2g6IE1vZGVsIFNlcnZpbmcgcmVqZWN0ZWQgdGhlIHNlYXJjaCByZXF1ZXN0IChIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfSlgO1xuICAgICAgICB0aHJvdyByZXRyeWFibGVcbiAgICAgICAgICA/IG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgeyBjb250ZXh0OiB7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzIH0gfSlcbiAgICAgICAgICA6IG5ldyBFeGVjdXRpb25FcnJvcihtZXNzYWdlLCB7IGNvbnRleHQ6IHsgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMgfSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gICAgfSxcbiAgICBzaWduYWwsXG4gICk7XG4gIHJldHVybiBvYmplY3QuaXNSZWNvcmQocGF5bG9hZCkgPyBwYXlsb2FkIDoge307XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSByZXNwb25zZSBleHRyYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEV4dHJhY3QgYW5zd2VyIHRleHQgYW5kIGNpdGF0aW9ucyBmcm9tIGFuIE9wZW5BSSBSZXNwb25zZXMgQVBJIHBheWxvYWQuXG4gKi9cbmZ1bmN0aW9uIGZyb21SZXNwb25zZXNQYXlsb2FkKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KToge1xuICBhbnN3ZXI6IHN0cmluZztcbiAgY2l0YXRpb25zOiBXZWJTZWFyY2hDaXRhdGlvbltdO1xufSB7XG4gIGNvbnN0IG91dHB1dCA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5vdXRwdXQpID8gcGF5bG9hZC5vdXRwdXQgOiBbXTtcbiAgY29uc3QgdGV4dHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXSA9IFtdO1xuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBvdXRwdXQpIHtcbiAgICBpZiAoIW9iamVjdC5pc1JlY29yZChpdGVtKSkgY29udGludWU7XG4gICAgY29uc3QgcGFydHMgPSBvcGVuYWlDaGF0LmNoYXRDb250ZW50UGFydHMoaXRlbS5jb250ZW50KTtcbiAgICBpZiAoIXBhcnRzKSBjb250aW51ZTtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKHBhcnQpKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHRleHQgPSBzdHJpbmdVdGlscy50cmltVG9FbXB0eShwYXJ0LnRleHQpO1xuICAgICAgaWYgKHRleHQpIHRleHRzLnB1c2godGV4dCk7XG4gICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IEFycmF5LmlzQXJyYXkocGFydC5hbm5vdGF0aW9ucykgPyBwYXJ0LmFubm90YXRpb25zIDogW107XG4gICAgICBmb3IgKGNvbnN0IGFubm90YXRpb24gb2YgYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgaWYgKCFvYmplY3QuaXNSZWNvcmQoYW5ub3RhdGlvbikpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCB1cmwgPSBzdHJpbmdVdGlscy50cmltVG9FbXB0eShhbm5vdGF0aW9uLnVybCk7XG4gICAgICAgIGlmICghdXJsIHx8IHNlZW4uaGFzKHVybCkpIGNvbnRpbnVlO1xuICAgICAgICBzZWVuLmFkZCh1cmwpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IHN0cmluZ1V0aWxzLnRyaW1Ub0VtcHR5KGFubm90YXRpb24udGl0bGUpO1xuICAgICAgICBjaXRhdGlvbnMucHVzaCh7IHVybCwgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBhbnN3ZXIgPSBzdHJpbmdVdGlscy50cmltVG9FbXB0eShwYXlsb2FkLm91dHB1dF90ZXh0KSB8fCB0ZXh0cy5qb2luKFwiXFxuXCIpLnRyaW0oKTtcbiAgcmV0dXJuIHsgYW5zd2VyLCBjaXRhdGlvbnMgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGFuc3dlciB0ZXh0ICsgY2l0YXRpb25zIGZyb20gYSBDaGF0IENvbXBsZXRpb25zIHBheWxvYWQgKEdlbWluaSB2aWFcbiAqIGBnb29nbGVfc2VhcmNoYCkuIFRoZSBhbnN3ZXIgaXMgYGNob2ljZXNbMF0ubWVzc2FnZS5jb250ZW50YDsgZ3JvdW5kaW5nXG4gKiBzb3VyY2VzLCB3aGVuIHByZXNlbnQsIHN1cmZhY2UgdW5kZXIgYGNob2ljZXNbMF0ubWVzc2FnZWAgZ3JvdW5kaW5nXG4gKiBtZXRhZGF0YSAoYmVzdC1lZmZvcnQgLSBzaGFwZXMgdmFyeSwgc28gd2Ugc2NhbiBmb3IgdXJsLWJlYXJpbmcgZW50cmllcykuXG4gKi9cbmZ1bmN0aW9uIGZyb21DaGF0UGF5bG9hZChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHtcbiAgYW5zd2VyOiBzdHJpbmc7XG4gIGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXTtcbn0ge1xuICBjb25zdCBjaG9pY2VzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmNob2ljZXMpID8gcGF5bG9hZC5jaG9pY2VzIDogW107XG4gIGNvbnN0IGZpcnN0ID0gY2hvaWNlc1swXTtcbiAgY29uc3QgbWVzc2FnZSA9IG9iamVjdC5pc1JlY29yZChmaXJzdCkgJiYgb2JqZWN0LmlzUmVjb3JkKGZpcnN0Lm1lc3NhZ2UpID8gZmlyc3QubWVzc2FnZSA6IHt9O1xuICBjb25zdCBhbnN3ZXIgPSBvcGVuYWlDaGF0LmNoYXRDb250ZW50VG9UZXh0KG1lc3NhZ2UuY29udGVudCk7XG4gIGNvbnN0IGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXSA9IFtdO1xuICAvLyBCZXN0LWVmZm9ydCBncm91bmRpbmcgZXh0cmFjdGlvbjogd2FsayBhbnkgbmVzdGVkIG9iamVjdCBmb3Ige3VyaXx1cmwsdGl0bGV9LlxuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHZpc2l0ID0gKHY6IHVua25vd24sIGRlcHRoOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBpZiAoZGVwdGggPiBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggfHwgIW9iamVjdC5pc1JlY29yZCh2KSkgcmV0dXJuO1xuICAgIGNvbnN0IHVybCA9IHN0cmluZ1V0aWxzLnRyaW1Ub0VtcHR5KHYudXJsKSB8fCBzdHJpbmdVdGlscy50cmltVG9FbXB0eSh2LnVyaSk7XG4gICAgaWYgKHVybCAmJiAhc2Vlbi5oYXModXJsKSkge1xuICAgICAgc2Vlbi5hZGQodXJsKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gc3RyaW5nVXRpbHMudHJpbVRvRW1wdHkodi50aXRsZSk7XG4gICAgICBjaXRhdGlvbnMucHVzaCh7IHVybCwgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pIH0pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3QudmFsdWVzKHYpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB2YWwuZm9yRWFjaCgoeCkgPT4gdmlzaXQoeCwgZGVwdGggKyAxKSk7XG4gICAgICBlbHNlIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIikgdmlzaXQodmFsLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfTtcbiAgdmlzaXQobWVzc2FnZS5ncm91bmRpbmdfbWV0YWRhdGEgPz8gbWVzc2FnZS5ncm91bmRpbmdNZXRhZGF0YSwgMCk7XG4gIHJldHVybiB7IGFuc3dlciwgY2l0YXRpb25zIH07XG59XG5cbi8qKlxuICogUnVuIGEgd2ViIHNlYXJjaC4gUHJlZmVycyB0aGUgRGF0YWJyaWNrcyBuYXRpdmUgd2ViLXNlYXJjaCB0b29sIG9uIGFcbiAqIGRlcGxveWVkIEdQVC9HZW1pbmkgZW5kcG9pbnQgKHN5bnRoZXNpemVkIGFuc3dlciArIGNpdGF0aW9ucyk7IHdoZW4gdGhlXG4gKiB3b3Jrc3BhY2UgaGFzIG5vIHN1Y2ggZW5kcG9pbnQgQU5EIHRoZSBzY3JhcGUgZmFsbGJhY2sgaXMgZW5hYmxlZCwgZmFsbHNcbiAqIGJhY2sgdG8gYSBEdWNrRHVja0dvIHNjcmFwZSBzbyB0aGUgdG9vbCBzdGlsbCByZXR1cm5zIHJlc3VsdHMgaW5zdGVhZCBvZlxuICogZXJyb3JpbmcuIENpdGF0aW9ucyBhcmUgZmlsdGVyZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlZCBVUkwgYWxsb3ctbGlzdC5cbiAqXG4gKiBgc2lnbmFsYCBjYW5jZWxzIHRoZSB3aG9sZSBjYWxsLCBpbmNsdWRpbmcgdGhlIGluLWZsaWdodCBzZXJ2aW5nIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XZWJTZWFyY2goXG4gIHJlcXVlc3Q6IFdlYlNlYXJjaFJlcXVlc3QsXG4gIHJ1bnRpbWVPckNvbmZpZzogV2ViU2VhcmNoUnVudGltZUlucHV0LFxuICBjdHg6IFdlYlNlYXJjaENvbnRleHQsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxXZWJTZWFyY2hSZXN1bHQ+IHtcbiAgY29uc3QgcnVudGltZSA9IHRvV2ViU2VhcmNoUnVudGltZShydW50aW1lT3JDb25maWcpO1xuICBjb25zdCB7IGNvbmZpZyB9ID0gcnVudGltZTtcbiAgY29uc3QgbW9kZWxJZCA9IGF3YWl0IHJlc29sdmVXZWJTZWFyY2hNb2RlbChjdHgsIGNvbmZpZywgcmVxdWVzdC5tb2RlbCk7XG5cbiAgaWYgKG1vZGVsSWQgPT09IG51bGwpIHtcbiAgICAvLyBObyBuYXRpdmUgd2ViLXNlYXJjaCBtb2RlbCBkZXBsb3llZCBpbiB0aGlzIHdvcmtzcGFjZS5cbiAgICBpZiAoY29uZmlnLnNjcmFwZUZhbGxiYWNrKSB7XG4gICAgICBsb2dnZXIuaW5mbyhcIm5vLW5hdGl2ZS1tb2RlbDpzY3JhcGUtZmFsbGJhY2tcIiwgeyBxdWVyeTogcmVxdWVzdC5xdWVyeSB9KTtcbiAgICAgIHJldHVybiBydW5TY3JhcGVTZWFyY2gocmVxdWVzdCwgcnVudGltZSwgc2lnbmFsKTtcbiAgICB9XG4gICAgdGhyb3cgQ29uZmlndXJhdGlvbkVycm9yLnJlc291cmNlTm90Rm91bmQoXG4gICAgICBcIldlYi1zZWFyY2gtY2FwYWJsZSBzZXJ2aW5nIGVuZHBvaW50XCIsXG4gICAgICBcIk5vIEdQVC9HZW1pbmkgZW5kcG9pbnQgaXMgZGVwbG95ZWQgaW4gdGhpcyB3b3Jrc3BhY2UgYW5kIHRoZSBzY3JhcGUgZmFsbGJhY2sgaXMgXCIgK1xuICAgICAgICBgZGlzYWJsZWQuIERlcGxveSBhIHN1cHBvcnRlZCBlbmRwb2ludCwgc2V0IG1vZGVsIG9yICR7TU9ERUxfRU5WfSwgb3IgZW5hYmxlIHRoZSBgICtcbiAgICAgICAgXCJmYWxsYmFjayAoV0VCX1NFQVJDSF9TQ1JBUEVfRkFMTEJBQ0s9MSkuXCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyID0gZGV0ZWN0V2ViU2VhcmNoUHJvdmlkZXIobW9kZWxJZCkhOyAvLyBndWFyYW50ZWVkIGJ5IHJlc29sdmUgc3RlcFxuICBjb25zdCBzcGVjID0gd2ViU2VhcmNoVG9vbFNwZWMocHJvdmlkZXIsIGNvbmZpZy53ZWJTZWFyY2hUb29scyk7XG5cbiAgY29uc3QgdXJsID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIiA/IGludm9rZS5yZXNwb25zZXNVcmwoY3R4Lmhvc3QpIDogaW52b2tlLmNoYXRDb21wbGV0aW9uc1VybChjdHguaG9zdCk7XG4gIGNvbnN0IGJvZHkgPVxuICAgIHNwZWMuYXBpID09PSBcInJlc3BvbnNlc1wiXG4gICAgICA/IHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxJZCxcbiAgICAgICAgICBpbnB1dDogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHJlcXVlc3QucXVlcnkgfV0sXG4gICAgICAgICAgdG9vbHM6IFtzcGVjLnRvb2xdLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxJZCxcbiAgICAgICAgICBtZXNzYWdlczogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHJlcXVlc3QucXVlcnkgfV0sXG4gICAgICAgICAgdG9vbHM6IFtzcGVjLnRvb2xdLFxuICAgICAgICB9O1xuXG4gIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBwb3N0U2VydmluZyhcbiAgICBjdHgsXG4gICAgdXJsLFxuICAgIGJvZHksXG4gICAgcnVudGltZSxcbiAgICBbXCJ3ZWItc2VhcmNoXCIsIFwic2VydmluZ1wiLCBzcGVjLmFwaSwgbW9kZWxJZCwgcmVxdWVzdC5xdWVyeV0sXG4gICAgc2lnbmFsLFxuICApO1xuXG4gIGNvbnN0IHsgYW5zd2VyLCBjaXRhdGlvbnMgfSA9XG4gICAgc3BlYy5hcGkgPT09IFwicmVzcG9uc2VzXCIgPyBmcm9tUmVzcG9uc2VzUGF5bG9hZChwYXlsb2FkKSA6IGZyb21DaGF0UGF5bG9hZChwYXlsb2FkKTtcblxuICBjb25zdCBwZXJtaXR0ZWQgPSBjaXRhdGlvbnMuZmlsdGVyKChjKSA9PiBjb25maWcuYWxsb3dMaXN0LmFsbG93cyhjLnVybCkpO1xuICBjb25zdCBkcm9wcGVkID0gY2l0YXRpb25zLmxlbmd0aCAtIHBlcm1pdHRlZC5sZW5ndGg7XG4gIGNvbnN0IHRyaW1tZWQgPSBwZXJtaXR0ZWQuc2xpY2UoMCwgY29uZmlnLm1heENpdGF0aW9ucyk7XG4gIGxvZ2dlci5kZWJ1ZyhcInNlYXJjaGVkXCIsIHtcbiAgICBxdWVyeTogcmVxdWVzdC5xdWVyeSxcbiAgICBtb2RlbDogbW9kZWxJZCxcbiAgICBwcm92aWRlcixcbiAgICBjaXRhdGlvbnM6IGNpdGF0aW9ucy5sZW5ndGgsXG4gICAgLi4uKGRyb3BwZWQgPiAwID8geyBmaWx0ZXJlZDogZHJvcHBlZCB9IDoge30pLFxuICAgIHJldHVybmVkOiB0cmltbWVkLmxlbmd0aCxcbiAgfSk7XG5cbiAgcmV0dXJuIHsgcXVlcnk6IHJlcXVlc3QucXVlcnksIGFuc3dlciwgY2l0YXRpb25zOiB0cmltbWVkLCBtb2RlbDogbW9kZWxJZCB9O1xufVxuIl19
package/package.json CHANGED
@@ -19,7 +19,6 @@
19
19
  "projen": "projen"
20
20
  },
21
21
  "devDependencies": {
22
- "@types/bun": "1.3.14",
23
22
  "@types/express": "^5.0.5",
24
23
  "@types/html-to-text": "^9",
25
24
  "@types/json-schema": "^7",
@@ -28,12 +27,12 @@
28
27
  },
29
28
  "dependencies": {
30
29
  "@databricks/appkit": "0.81.0",
31
- "@dbx-tools/appkit": "^0.9.32",
32
- "@dbx-tools/core": "^0.9.32",
33
- "@dbx-tools/model": "^0.9.32",
34
- "@dbx-tools/path": "^0.9.32",
35
- "@dbx-tools/shared-core": "^0.9.32",
36
- "@dbx-tools/shared-model": "^0.9.32",
30
+ "@dbx-tools/appkit": "^0.9.36",
31
+ "@dbx-tools/core": "^0.9.36",
32
+ "@dbx-tools/model": "^0.9.36",
33
+ "@dbx-tools/path": "^0.9.36",
34
+ "@dbx-tools/shared-core": "^0.9.36",
35
+ "@dbx-tools/shared-model": "^0.9.36",
37
36
  "@mastra/core": "1.71.0",
38
37
  "cheerio": "^1.2.0",
39
38
  "entities": "^4.5.0",
@@ -52,17 +51,118 @@
52
51
  "types": "./lib/index.d.ts",
53
52
  "default": "./lib/index.js"
54
53
  },
54
+ "./allowlist": {
55
+ "types": "./lib/src/allowlist.d.ts",
56
+ "default": "./lib/src/allowlist.js"
57
+ },
58
+ "./config": {
59
+ "types": "./lib/src/config.d.ts",
60
+ "default": "./lib/src/config.js"
61
+ },
62
+ "./defaults": {
63
+ "types": "./lib/src/defaults.d.ts",
64
+ "default": "./lib/src/defaults.js"
65
+ },
66
+ "./fetch": {
67
+ "types": "./lib/src/fetch.d.ts",
68
+ "default": "./lib/src/fetch.js"
69
+ },
70
+ "./html-text": {
71
+ "types": "./lib/src/html-text.d.ts",
72
+ "default": "./lib/src/html-text.js"
73
+ },
74
+ "./plugin": {
75
+ "types": "./lib/src/plugin.d.ts",
76
+ "default": "./lib/src/plugin.js"
77
+ },
78
+ "./provider": {
79
+ "types": "./lib/src/provider.d.ts",
80
+ "default": "./lib/src/provider.js"
81
+ },
82
+ "./runtime": {
83
+ "types": "./lib/src/runtime.d.ts",
84
+ "default": "./lib/src/runtime.js"
85
+ },
86
+ "./schema": {
87
+ "types": "./lib/src/schema.d.ts",
88
+ "default": "./lib/src/schema.js"
89
+ },
90
+ "./scrape": {
91
+ "types": "./lib/src/scrape.d.ts",
92
+ "default": "./lib/src/scrape.js"
93
+ },
94
+ "./search": {
95
+ "types": "./lib/src/search.d.ts",
96
+ "default": "./lib/src/search.js"
97
+ },
98
+ "./tool": {
99
+ "types": "./lib/src/tool.d.ts",
100
+ "default": "./lib/src/tool.js"
101
+ },
55
102
  "./package.json": "./package.json"
56
103
  }
57
104
  },
58
- "version": "0.9.32",
105
+ "version": "0.9.36",
59
106
  "types": "./lib/index.d.ts",
107
+ "dbxToolsConfig": {
108
+ "tags": [
109
+ "node"
110
+ ]
111
+ },
60
112
  "type": "module",
61
113
  "exports": {
62
114
  ".": {
63
115
  "types": "./lib/index.d.ts",
64
116
  "default": "./lib/index.js"
65
117
  },
118
+ "./allowlist": {
119
+ "types": "./lib/src/allowlist.d.ts",
120
+ "default": "./lib/src/allowlist.js"
121
+ },
122
+ "./config": {
123
+ "types": "./lib/src/config.d.ts",
124
+ "default": "./lib/src/config.js"
125
+ },
126
+ "./defaults": {
127
+ "types": "./lib/src/defaults.d.ts",
128
+ "default": "./lib/src/defaults.js"
129
+ },
130
+ "./fetch": {
131
+ "types": "./lib/src/fetch.d.ts",
132
+ "default": "./lib/src/fetch.js"
133
+ },
134
+ "./html-text": {
135
+ "types": "./lib/src/html-text.d.ts",
136
+ "default": "./lib/src/html-text.js"
137
+ },
138
+ "./plugin": {
139
+ "types": "./lib/src/plugin.d.ts",
140
+ "default": "./lib/src/plugin.js"
141
+ },
142
+ "./provider": {
143
+ "types": "./lib/src/provider.d.ts",
144
+ "default": "./lib/src/provider.js"
145
+ },
146
+ "./runtime": {
147
+ "types": "./lib/src/runtime.d.ts",
148
+ "default": "./lib/src/runtime.js"
149
+ },
150
+ "./schema": {
151
+ "types": "./lib/src/schema.d.ts",
152
+ "default": "./lib/src/schema.js"
153
+ },
154
+ "./scrape": {
155
+ "types": "./lib/src/scrape.d.ts",
156
+ "default": "./lib/src/scrape.js"
157
+ },
158
+ "./search": {
159
+ "types": "./lib/src/search.d.ts",
160
+ "default": "./lib/src/search.js"
161
+ },
162
+ "./tool": {
163
+ "types": "./lib/src/tool.d.ts",
164
+ "default": "./lib/src/tool.js"
165
+ },
66
166
  "./package.json": "./package.json"
67
167
  },
68
168
  "files": [
@@ -70,10 +170,5 @@
70
170
  "src",
71
171
  "lib"
72
172
  ],
73
- "dbxToolsConfig": {
74
- "tags": [
75
- "node"
76
- ]
77
- },
78
173
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"bunx projen\"."
79
174
  }
package/src/search.ts CHANGED
@@ -153,7 +153,7 @@ async function resolveWebSearchModel(
153
153
  // GPT) when those ids are actually deployed; else take the best capable
154
154
  // endpoint.
155
155
  const { modelId } = resolveModel(capable, {
156
- fallbacks: config.modelFallbacks,
156
+ fallbacks: [...config.modelFallbacks],
157
157
  fuzzy: config.fuzzy,
158
158
  threshold: config.fuzzyThreshold,
159
159
  });