@dbx-tools/appkit-mastra 0.6.223 → 0.6.225
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -27
- package/index.ts +2 -2
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/src/agents.d.ts +21 -26
- package/lib/src/agents.js +78 -28
- package/lib/src/config.d.ts +4 -5
- package/lib/src/config.js +2 -2
- package/lib/src/genie.d.ts +2 -2
- package/lib/src/genie.js +3 -3
- package/lib/src/model.d.ts +9 -1
- package/lib/src/model.js +28 -12
- package/lib/src/pagination.d.ts +12 -2
- package/lib/src/pagination.js +8 -2
- package/lib/src/plugin.d.ts +4 -4
- package/lib/src/plugin.js +27 -20
- package/lib/src/serving-sanitize.js +2 -2
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/src/agents.ts +131 -84
- package/src/config.ts +5 -6
- package/src/genie.ts +2 -2
- package/src/model.ts +43 -12
- package/src/pagination.ts +12 -2
- package/src/plugin.ts +25 -19
- package/src/serving-sanitize.ts +1 -1
- package/lib/src/_agent-route-context.d.ts +0 -46
- package/lib/src/_agent-route-context.js +0 -47
- package/src/_agent-route-context.ts +0 -100
package/lib/src/model.js
CHANGED
|
@@ -41,6 +41,32 @@ export const RESPONSES_PROVIDER_OPTIONS = {
|
|
|
41
41
|
export function servingApi(modelId) {
|
|
42
42
|
return modelServingApi(modelId) === ModelServingApi.Responses ? "responses" : "chat";
|
|
43
43
|
}
|
|
44
|
+
function selectionInput(config, requested, defaultClass, serving = resolveServingConfig(config)) {
|
|
45
|
+
const requestedClass = requested !== undefined ? parseModelClass(requested) : null;
|
|
46
|
+
const explicit = requestedClass === null ? requested : undefined;
|
|
47
|
+
const modelClass = requestedClass ?? defaultClass;
|
|
48
|
+
return {
|
|
49
|
+
...(explicit !== undefined ? { explicit } : {}),
|
|
50
|
+
fuzzy: serving.fuzzy,
|
|
51
|
+
threshold: serving.threshold,
|
|
52
|
+
...(modelClass !== undefined ? { modelClass } : {}),
|
|
53
|
+
fallbacks: serving.fallbacks,
|
|
54
|
+
liveOnly: requested === undefined,
|
|
55
|
+
ttlMs: serving.ttlMs,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve an agent's unpinned default against an already-loaded live catalogue.
|
|
60
|
+
*
|
|
61
|
+
* With no configured id/class/fallback, the generic model ranker selects the
|
|
62
|
+
* highest-ranked currently available GPT, then falls back to the highest-ranked
|
|
63
|
+
* live chat endpoint when the workspace has no GPT.
|
|
64
|
+
*/
|
|
65
|
+
export function resolveDefaultModelId(config, endpoints, overrides = {}) {
|
|
66
|
+
const requested = overrides.modelId ?? process.env.DATABRICKS_SERVING_ENDPOINT_NAME;
|
|
67
|
+
return resolve.resolveModel(endpoints, selectionInput(config, requested, overrides.modelClass))
|
|
68
|
+
.modelId;
|
|
69
|
+
}
|
|
44
70
|
/**
|
|
45
71
|
* Resolve a `MastraModelConfig` for the current agent step. Runs
|
|
46
72
|
* while `agent.stream` is inside the `asUser(req)` scope so tokens
|
|
@@ -83,17 +109,7 @@ export async function buildModel(config, requestContext, overrides = {}) {
|
|
|
83
109
|
// internal `overrides.modelClass` (e.g. the chart planner) is the
|
|
84
110
|
// floor when nothing was requested.
|
|
85
111
|
const requested = override ?? overrides.modelId ?? process.env.DATABRICKS_SERVING_ENDPOINT_NAME;
|
|
86
|
-
const
|
|
87
|
-
const explicit = requestedClass === null ? requested : undefined;
|
|
88
|
-
const modelClass = requestedClass ?? overrides.modelClass;
|
|
89
|
-
const { modelId, source } = await selectModel(executionContext.client, host, {
|
|
90
|
-
...(explicit !== undefined ? { explicit } : {}),
|
|
91
|
-
fuzzy: serving.fuzzy,
|
|
92
|
-
threshold: serving.threshold,
|
|
93
|
-
...(modelClass !== undefined ? { modelClass } : {}),
|
|
94
|
-
fallbacks: serving.fallbacks,
|
|
95
|
-
ttlMs: serving.ttlMs,
|
|
96
|
-
});
|
|
112
|
+
const { modelId, source } = await selectModel(executionContext.client, host, selectionInput(config, requested, overrides.modelClass, serving));
|
|
97
113
|
logger.debug("model selected", { modelId, source, requested });
|
|
98
114
|
return {
|
|
99
115
|
providerId: config.providerId ?? "databricks",
|
|
@@ -180,4 +196,4 @@ function rebuildServingResponse(response, body) {
|
|
|
180
196
|
headers,
|
|
181
197
|
});
|
|
182
198
|
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFLeEUsT0FBTyxFQUFFLGVBQWUsRUFBc0MsTUFBTSxhQUFhLENBQUM7QUFDbEYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsNEJBQTRCLEdBQzdCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRy9FLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDcEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUVoQyw4RkFBOEY7QUFDOUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLEtBQUs7S0FDYjtDQUNPLENBQUM7QUFFWCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFlO0lBQ3hDLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3ZGLENBQUM7QUFxQkQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxD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SUFBSSxDQUFDLENBQUM7SUFDbkQsSUFBSSxTQUFTLEtBQUssSUFBSTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQ3hDLE9BQU8sc0JBQXNCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxpRkFBaUY7QUFDakYsU0FBUyxzQkFBc0IsQ0FDN0IsUUFBa0IsRUFDbEIsSUFBeUM7SUFFekMsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUM3RSxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuQyxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtRQUN4QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdkIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1FBQy9CLE9BQU87S0FDUixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgcmVzb2x2ZXIgZm9yIE1hc3RyYSBhZ2VudHMuXG4gKlxuICogRWFjaCBhZ2VudCBzdGVwIGNhbGxzIHtAbGluayBidWlsZE1vZGVsfSB3aXRoIHRoZSBhY3RpdmVcbiAqIGBSZXF1ZXN0Q29udGV4dGAuIFRoZSB1c2VyIHN0YW1wZWQgYnkgYE1hc3RyYVNlcnZlcmAgY2FycmllcyBhblxuICogQXBwS2l0IGBXb3Jrc3BhY2VDbGllbnRgOyB3ZSBhc2sgaXQgZm9yIHRoZSB3b3Jrc3BhY2UgaG9zdCBhbmQgYVxuICogZnJlc2ggYmVhcmVyIGhlYWRlciwgdGhlbiBwb2ludCBNYXN0cmEncyBPcGVuQUktY29tcGF0aWJsZSBwcm92aWRlclxuICogYXQgYC9zZXJ2aW5nLWVuZHBvaW50c2Agb24gdGhhdCBob3N0LlxuICpcbiAqIFRoaXMgbW9kdWxlIG9ubHkgYWRkcyB0aGUgTWFzdHJhLXNwZWNpZmljIGdsdWUuIFRoZSBhY3R1YWwgbW9kZWxcbiAqIHNlbGVjdGlvbiAtIGxpc3RpbmcgdGhlIHdvcmtzcGFjZSBjYXRhbG9ndWUgYW5kIHJlc29sdmluZyBhblxuICogZXhwbGljaXQgbmFtZSAvIGNsYXNzIC8gZmFsbGJhY2sgY2hhaW4gdG8gYSByZWFsIGVuZHBvaW50IGlkIC0gbGl2ZXNcbiAqIGluIGBAZGJ4LXRvb2xzL21vZGVsYCAoe0BsaW5rIHNlbGVjdE1vZGVsfSkgc28gbm9uLU1hc3RyYSBjb25zdW1lcnNcbiAqIChlLmcuIGEgam9iIHRoYXQganVzdCBuZWVkcyBhIG1vZGVsIG5hbWUpIGNhbiByZXVzZSBpdC4gSGVyZSB3ZVxuICogYXNzZW1ibGUgdGhlIGV4cGxpY2l0IGFzayBmcm9tIE1hc3RyYSdzIHJlcXVlc3QgY29udGV4dCAodGhlXG4gKiBwZXItcmVxdWVzdCBvdmVycmlkZSB1bmRlciB7QGxpbmsgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWX0sIHRoZVxuICogYWdlbnQgLyBwbHVnaW4gYG1vZGVsSWRgLCBvciBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgKSxcbiAqIHBhc3MgdGhlIHBsdWdpbidzIGZ1enp5IC8gY2xhc3MgLyBmYWxsYmFjayBrbm9icyB0aHJvdWdoLCBhbmQgd3JhcFxuICogdGhlIHJlc29sdmVkIGlkIGluIHRoZSBPcGVuQUktY29tcGF0aWJsZSBwcm92aWRlciBjb25maWcgTWFzdHJhXG4gKiBleHBlY3RzLiBDYXRhbG9ndWUgZmV0Y2hlcyBmYWlsIGxvdWQ6IG5ldHdvcmsgLyBhdXRoIGVycm9yc1xuICogcHJvcGFnYXRlIHNvIGNhbGxlcnMgc2VlIHRoZSByZWFsIFNESyBtZXNzYWdlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBnZXRFeGVjdXRpb25Db250ZXh0IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgY2xhc3NlcywgaW52b2tlLCByZXNvbHZlIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWxcIjtcbmltcG9ydCB7IE1vZGVsU2VydmluZ0FwaSwgbW9kZWxTZXJ2aW5nQXBpIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWwtcnNcIjtcbmltcG9ydCB7IGZ1bmN0aW9uTW9kdWxlLCBqc29uLCBsb2csIG5ldCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBtb2RlbCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNYXN0cmFNb2RlbENvbmZpZyB9IGZyb20gXCJAbWFzdHJhL2NvcmUvbGxtXCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcblxuaW1wb3J0IHsgTUFTVFJBX1VTRVJfS0VZLCB0eXBlIE1hc3RyYVBsdWdpbkNvbmZpZywgdHlwZSBVc2VyIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQge1xuICByZXdyaXRlU2VydmluZ1JlcXVlc3QsXG4gIHJld3JpdGVTZXJ2aW5nUmVzcG9uc2VCb2R5LFxuICByZXdyaXRlU2VydmluZ1Jlc3BvbnNlU3RyZWFtLFxufSBmcm9tIFwiLi9zZXJ2aW5nLXNhbml0aXplLnRzXCI7XG5pbXBvcnQgeyBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZLCByZXNvbHZlU2VydmluZ0NvbmZpZyB9IGZyb20gXCIuL3NlcnZpbmcudHNcIjtcblxudHlwZSBNb2RlbENsYXNzID0gbW9kZWwuTW9kZWxDbGFzcztcbmNvbnN0IHsgcGFyc2VNb2RlbENsYXNzIH0gPSBjbGFzc2VzO1xuY29uc3QgeyBzZWxlY3RNb2RlbCB9ID0gcmVzb2x2ZTtcblxuLyoqIEtlZXAgUmVzcG9uc2VzIHR1cm5zIHN0YXRlbGVzcyBzbyB0b29sIGNvbnRpbnVhdGlvbnMgcmVwbGF5IGVuY3J5cHRlZCByZWFzb25pbmcgaW5saW5lLiAqL1xuZXhwb3J0IGNvbnN0IFJFU1BPTlNFU19QUk9WSURFUl9PUFRJT05TID0ge1xuICBvcGVuYWk6IHtcbiAgICBzdG9yZTogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vKiogUGljayB0aGUgbmF0aXZlIERhdGFicmlja3MgaW5mZXJlbmNlIHN1cmZhY2UgcmVxdWlyZWQgYnkgYSByZXNvbHZlZCBtb2RlbC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aW5nQXBpKG1vZGVsSWQ6IHN0cmluZyk6IFwiY2hhdFwiIHwgXCJyZXNwb25zZXNcIiB7XG4gIHJldHVybiBtb2RlbFNlcnZpbmdBcGkobW9kZWxJZCkgPT09IE1vZGVsU2VydmluZ0FwaS5SZXNwb25zZXMgPyBcInJlc3BvbnNlc1wiIDogXCJjaGF0XCI7XG59XG5cbi8qKiBPcHRpb25hbCBvdmVycmlkZXMgYWNjZXB0ZWQgYnkge0BsaW5rIGJ1aWxkTW9kZWx9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZE1vZGVsT3ZlcnJpZGVzIHtcbiAgLyoqXG4gICAqIFN0YXRpYyBtb2RlbCBpZCBmcm9tIHRoZSBhZ2VudCAvIHBsdWdpbiBjb25maWcgKHN0cmluZyBzdWdhciBvblxuICAgKiBgZGVmLm1vZGVsYCBvciBgY29uZmlnLmRlZmF1bHRNb2RlbGApLiBMb3NlcyB0byB0aGUgcGVyLXJlcXVlc3RcbiAgICogb3ZlcnJpZGUgYnV0IHdpbnMgb3ZlciBlbnYgLyBjbGFzcyAvIGZhbGxiYWNrLlxuICAgKi9cbiAgbW9kZWxJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIENoYXQgY2FwYWJpbGl0eSBjbGFzcyB0byByZXNvbHZlIHdoZW4gbm8gZXhwbGljaXQgbW9kZWwgaWQgaXNcbiAgICogc3VwcGxpZWQuIFVzZWQgYnkgaW50ZXJuYWwgYWdlbnRzIChlLmcuIHRoZSBjaGFydCBwbGFubmVyIGFza3MgZm9yXG4gICAqIHtAbGluayBtb2RlbC5Nb2RlbENsYXNzLkNoYXRGYXN0fSkgdG8gZXhwcmVzcyBpbnRlbnQgd2l0aG91dCBwaW5uaW5nIGFuXG4gICAqIGVuZHBvaW50IG5hbWU7IHRoZSBsaXZlIGNhdGFsb2d1ZSBpcyBjbGFzc2lmaWVkIGFuZCB0aGUgdG9wXG4gICAqIGF2YWlsYWJsZSBtb2RlbCBpbiB0aGUgY2xhc3MgaXMgY2hvc2VuLCBmYWxsaW5nIGJhY2sgdG8gdGhlXG4gICAqIGNsYXNzJ3Mgc3RhdGljIGxpc3Qgd2hlbiB0aGUgd29ya3NwYWNlIGhhcyBub25lLlxuICAgKi9cbiAgbW9kZWxDbGFzcz86IE1vZGVsQ2xhc3M7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIGBNYXN0cmFNb2RlbENvbmZpZ2AgZm9yIHRoZSBjdXJyZW50IGFnZW50IHN0ZXAuIFJ1bnNcbiAqIHdoaWxlIGBhZ2VudC5zdHJlYW1gIGlzIGluc2lkZSB0aGUgYGFzVXNlcihyZXEpYCBzY29wZSBzbyB0b2tlbnNcbiAqIGFyZSB1c2VyLXNjb3BlZDsgb3V0c2lkZSBhbiBhY3RpdmUgdXNlciBjb250ZXh0IHRoZSB3b3Jrc3BhY2VcbiAqIGNsaWVudCBmYWxscyBiYWNrIHRvIHRoZSBzZXJ2aWNlIHByaW5jaXBhbC5cbiAqXG4gKiBFbmRwb2ludCBwcmVjZWRlbmNlOiB0aGUgcGVyLXJlcXVlc3Qgb3ZlcnJpZGVcbiAqICh7QGxpbmsgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWX0sIG9ubHkgd2hlbiBgY29uZmlnLm1vZGVsT3ZlcnJpZGVgIGFsbG93c1xuICogaXQpLCB0aGVuIHtAbGluayBCdWlsZE1vZGVsT3ZlcnJpZGVzLm1vZGVsSWR9IGZyb20gdGhlIGFnZW50IC8gcGx1Z2luXG4gKiBjb25maWcsIHRoZW4gYERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FYC4gV2l0aCBub25lIG9mIHRob3NlIHNldCB0aGVcbiAqIGNhcGFiaWxpdHkgY2xhc3MgYW5kIGZhbGxiYWNrIGxhZGRlciBpbiBgQGRieC10b29scy9tb2RlbGAgY2hvb3NlIHRoZVxuICogZW5kcG9pbnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZE1vZGVsKFxuICBjb25maWc6IE1hc3RyYVBsdWdpbkNvbmZpZyxcbiAgcmVxdWVzdENvbnRleHQ6IFJlcXVlc3RDb250ZXh0LFxuICBvdmVycmlkZXM6IEJ1aWxkTW9kZWxPdmVycmlkZXMgPSB7fSxcbik6IFByb21pc2U8TWFzdHJhTW9kZWxDb25maWc+IHtcbiAgdm9pZCBzZXR1cEZldGNoSW50ZXJjZXB0b3IoKTtcbiAgLy8gVGhlIGNoYXQgcGF0aCBzdGFtcHMgdGhlIEFwcEtpdCB1c2VyIG9uIHRoZSByZXF1ZXN0IGNvbnRleHQgdmlhXG4gIC8vIGBNYXN0cmFTZXJ2ZXJgLiBUaGUgTUNQIHRyYW5zcG9ydCByb3V0ZXMgZG9uJ3QgdGhyZWFkIHRoYXQgY29udGV4dFxuICAvLyBpbnRvIHRvb2wgZXhlY3V0aW9uLCBzbyBmYWxsIGJhY2sgdG8gdGhlIGFtYmllbnQgZXhlY3V0aW9uIGNvbnRleHRcbiAgLy8gKHRoZSBhY3RpdmUgT0JPIHNjb3BlLCBvciB0aGUgc2VydmljZSBwcmluY2lwYWwpIHdoZW4gaXQncyBhYnNlbnQuXG4gIGNvbnN0IHVzZXIgPSByZXF1ZXN0Q29udGV4dC5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICBjb25zdCBleGVjdXRpb25Db250ZXh0ID0gdXNlcj8uZXhlY3V0aW9uQ29udGV4dCA/PyBnZXRFeGVjdXRpb25Db250ZXh0KCk7XG4gIGNvbnN0IGNsaWVudENvbmZpZyA9IGV4ZWN1dGlvbkNvbnRleHQuY2xpZW50LmNvbmZpZztcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjbGllbnRDb25maWcuZ2V0SG9zdCgpKS50b1N0cmluZygpO1xuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgYXdhaXQgY2xpZW50Q29uZmlnLmF1dGhlbnRpY2F0ZShoZWFkZXJzKTtcbiAgLy8gVGhlIE9wZW5BSSBOb2RlIFNESyBhcHBlbmRzIHBhdGhzIGxpa2UgYC9jaGF0L2NvbXBsZXRpb25zYCB0byB3aGF0ZXZlclxuICAvLyBVUkwgd2UgaGFuZCBpdC4gRHJvcCB0aGUgdHJhaWxpbmcgc2xhc2ggc28gdGhlIHJlc3VsdGluZyBVUkwgc3RheXNcbiAgLy8gd2VsbC1mb3JtZWQgKGAvc2VydmluZy1lbmRwb2ludHMvY2hhdC9jb21wbGV0aW9uc2ApLlxuICBjb25zdCB1cmwgPSBuZXcgVVJMKFwiL3NlcnZpbmctZW5kcG9pbnRzXCIsIGhvc3QpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFwvJC8sIFwiXCIpO1xuXG4gIGNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoY29uZmlnKTtcbiAgY29uc3Qgc2VydmluZyA9IHJlc29sdmVTZXJ2aW5nQ29uZmlnKGNvbmZpZyk7XG4gIGNvbnN0IG92ZXJyaWRlID0gc2VydmluZy5hbGxvd092ZXJyaWRlXG4gICAgPyAocmVxdWVzdENvbnRleHQuZ2V0KE1BU1RSQV9NT0RFTF9PVkVSUklERV9LRVkpIGFzIHN0cmluZyB8IHVuZGVmaW5lZClcbiAgICA6IHVuZGVmaW5lZDtcblxuICAvLyBUaGUgb3ZlcnJpZGUgLyBhZ2VudCBkZWZhdWx0IC8gZW52IHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBjb25jcmV0ZVxuICAvLyBlbmRwb2ludCBuYW1lIG9yIGEgbW9kZWwgY2xhc3Mgc2x1ZyAoXCJjaGF0LXRoaW5raW5nXCIgL1xuICAvLyBcImNoYXQtYmFsYW5jZWRcIiAvIFwiY2hhdC1mYXN0XCIpLiBBIGNsYXNzIHNsdWcgYmVjb21lcyBhIGNsYXNzIGludGVudFxuICAvLyAobGV0IHRoZSBsaXZlIGNhdGFsb2d1ZSBwaWNrIHRoZSBiZXN0IG1vZGVsIGluIHRoYXQgYmFuZCk7IGFueXRoaW5nXG4gIC8vIGVsc2UgaXMgYW4gZXhwbGljaXQgbmFtZSBmdXp6eS1tYXRjaGVkIGFnYWluc3QgdGhlIGNhdGFsb2d1ZS4gQW5cbiAgLy8gaW50ZXJuYWwgYG92ZXJyaWRlcy5tb2RlbENsYXNzYCAoZS5nLiB0aGUgY2hhcnQgcGxhbm5lcikgaXMgdGhlXG4gIC8vIGZsb29yIHdoZW4gbm90aGluZyB3YXMgcmVxdWVzdGVkLlxuICBjb25zdCByZXF1ZXN0ZWQgPSBvdmVycmlkZSA/PyBvdmVycmlkZXMubW9kZWxJZCA/PyBwcm9jZXNzLmVudi5EQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRTtcbiAgY29uc3QgcmVxdWVzdGVkQ2xhc3MgPSByZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCA/IHBhcnNlTW9kZWxDbGFzcyhyZXF1ZXN0ZWQpIDogbnVsbDtcbiAgY29uc3QgZXhwbGljaXQgPSByZXF1ZXN0ZWRDbGFzcyA9PT0gbnVsbCA/IHJlcXVlc3RlZCA6IHVuZGVmaW5lZDtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IHJlcXVlc3RlZENsYXNzID8/IG92ZXJyaWRlcy5tb2RlbENsYXNzO1xuXG4gIGNvbnN0IHsgbW9kZWxJZCwgc291cmNlIH0gPSBhd2FpdCBzZWxlY3RNb2RlbChleGVjdXRpb25Db250ZXh0LmNsaWVudCwgaG9zdCwge1xuICAgIC4uLihleHBsaWNpdCAhPT0gdW5kZWZpbmVkID8geyBleHBsaWNpdCB9IDoge30pLFxuICAgIGZ1enp5OiBzZXJ2aW5nLmZ1enp5LFxuICAgIHRocmVzaG9sZDogc2VydmluZy50aHJlc2hvbGQsXG4gICAgLi4uKG1vZGVsQ2xhc3MgIT09IHVuZGVmaW5lZCA/IHsgbW9kZWxDbGFzcyB9IDoge30pLFxuICAgIGZhbGxiYWNrczogc2VydmluZy5mYWxsYmFja3MsXG4gICAgdHRsTXM6IHNlcnZpbmcudHRsTXMsXG4gIH0pO1xuICBsb2dnZXIuZGVidWcoXCJtb2RlbCBzZWxlY3RlZFwiLCB7IG1vZGVsSWQsIHNvdXJjZSwgcmVxdWVzdGVkIH0pO1xuXG4gIHJldHVybiB7XG4gICAgcHJvdmlkZXJJZDogY29uZmlnLnByb3ZpZGVySWQgPz8gXCJkYXRhYnJpY2tzXCIsXG4gICAgbW9kZWxJZCxcbiAgICB1cmwsXG4gICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKGhlYWRlcnMuZW50cmllcygpKSxcbiAgICBhcGk6IHNlcnZpbmdBcGkobW9kZWxJZCksXG4gIH07XG59XG5cbi8qKiBDaGF0IENvbXBsZXRpb25zIHJvdXRlIHdob3NlIHByb3ZpZGVyLXNwZWNpZmljIHdpcmUgc2hhcGVzIGFyZSBub3JtYWxpemVkIGhlcmUuICovXG5jb25zdCBDSEFUX0NPTVBMRVRJT05TX1BBVEggPSBgLyR7aW52b2tlLkNIQVRfQ09NUExFVElPTlNfUEFUSH1gO1xuXG4vKipcbiAqIEluc3RhbGwgYSBzaW5nbGUgc2hhcmVkIGBnbG9iYWxUaGlzLmZldGNoYCB3cmFwcGVyIGZvciBDaGF0IENvbXBsZXRpb25zXG4gKiByZXF1ZXN0cy4gVGhlIHdyYXBwZXIgZG9lcyB0aHJlZSB0aGluZ3M6XG4gKlxuICogICAxLiBSZXdyaXRlcyBvdXRnb2luZyBKU09OIGZyb20gZWl0aGVyIGBpbml0LmJvZHlgIG9yIGEgYFJlcXVlc3RgIHRvIHJlcGFpclxuICogICAgICBwcm92aWRlci1zcGVjaWZpYyByZXF1ZXN0IGNvbnN0cmFpbnRzIChzZWUge0BsaW5rIHJld3JpdGVTZXJ2aW5nUmVxdWVzdH1cbiAqICAgICAgaW4gYC4vc2VydmluZy1zYW5pdGl6ZS5qc2ApLlxuICogICAyLiBBdCBgTE9HX0xFVkVMPWRlYnVnYCwgZHVtcHMgdGhlIChwb3N0LXNhbml0aXplKSBKU09OIGJvZHkgc29cbiAqICAgICAgNHh4IGRlYnVnZ2luZyBkb2Vzbid0IGhhdmUgdG8gZmlnaHQgQUkgU0RLJ3MgYFtBcnJheV1gXG4gKiAgICAgIGZvcm1hdHRlci5cbiAqICAgMy4gUmVwYWlycyBidWZmZXJlZCBhbmQgc3RyZWFtaW5nIHJlc3BvbnNlcyB3aGVyZSBhIHByb3ZpZGVyIHJldHVybnNcbiAqICAgICAgYGNob2ljZXNbXS5tZXNzYWdlLmNvbnRlbnRgIG9yIGBjaG9pY2VzW10uZGVsdGEuY29udGVudGAgYXMgYSBwYXJ0c1xuICogICAgICBhcnJheSB0aGF0IHRoZSBBSSBTREsncyBPcGVuQUkgc2NoZW1hIHJlamVjdHMuXG4gKlxuICogU2FmZSB0byBjYWxsIGZyb20gYW55IGhvdCBwYXRoOiB7QGxpbmsgZnVuY3Rpb25Nb2R1bGUubWVtb2l6ZX0gZW5zdXJlc1xuICogdGhlIHdyYXBwZXIgaXMgaW5zdGFsbGVkIGF0IG1vc3Qgb25jZSBwZXIgcHJvY2Vzcywgc28gc3Vic2VxdWVudFxuICogY2FsbHMgYXJlIGEgbm8tb3AgZXZlbiB3aGVuIHtAbGluayBidWlsZE1vZGVsfSBmaXJlcyBvbiBldmVyeSBhZ2VudFxuICogc3RlcC5cbiAqL1xuY29uc3Qgc2V0dXBGZXRjaEludGVyY2VwdG9yID0gZnVuY3Rpb25Nb2R1bGUubWVtb2l6ZSgoKTogdm9pZCA9PiB7XG4gIGdsb2JhbFRoaXMuZmV0Y2ggPSBjcmVhdGVTZXJ2aW5nRmV0Y2hJbnRlcmNlcHRvcihnbG9iYWxUaGlzLmZldGNoLmJpbmQoZ2xvYmFsVGhpcykpO1xufSk7XG5cbi8qKiBCdWlsZCB0aGUgc2VydmluZyBmZXRjaCB3cmFwcGVyOyBleHBvcnRlZCBmb3IgdHJhbnNwb3J0LWxldmVsIHJlZ3Jlc3Npb24gdGVzdHMuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VydmluZ0ZldGNoSW50ZXJjZXB0b3Iob3JpZ2luYWw6IHR5cGVvZiBmZXRjaCk6IHR5cGVvZiBmZXRjaCB7XG4gIGNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJtYXN0cmEvbGxtXCIpO1xuICByZXR1cm4gKGFzeW5jIChpbnB1dCwgaW5pdCkgPT4ge1xuICAgIGNvbnN0IHVybCA9IG5ldC51cmxCdWlsZGVyKGlucHV0KTtcbiAgICBjb25zdCBtZXRob2QgPSBpbml0Py5tZXRob2QgPz8gKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCA/IGlucHV0Lm1ldGhvZCA6IFwiR0VUXCIpO1xuICAgIGlmICghdXJsIHx8IHVybC5wYXRobmFtZSAhPT0gQ0hBVF9DT01QTEVUSU9OU19QQVRIIHx8IG1ldGhvZC50b1VwcGVyQ2FzZSgpICE9PSBcIlBPU1RcIikge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsKGlucHV0LCBpbml0KTtcbiAgICB9XG4gICAgY29uc3QgcmV3cml0dGVuID0gYXdhaXQgcmV3cml0ZVNlcnZpbmdSZXF1ZXN0KGlucHV0LCBpbml0KTtcbiAgICBjb25zdCBwYXJzZWQgPSBqc29uLnBhcnNlPHVua25vd24+KHJld3JpdHRlbi5ib2R5KTtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBcIlBPU1RcIixcbiAgICAgIHBhcnNlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8geyB1cmw6IHVybC50b1N0cmluZygpLCBib2R5VHlwZTogXCJub24tSlNPTlwiIH1cbiAgICAgICAgOiB7IHVybDogdXJsLnRvU3RyaW5nKCksIGJvZHk6IHBhcnNlZCB9LFxuICAgICk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvcmlnaW5hbChyZXdyaXR0ZW4uaW5wdXQsIHJld3JpdHRlbi5pbml0KTtcbiAgICByZXR1cm4gcmVwYWlyU2VydmluZ1Jlc3BvbnNlKHJlc3BvbnNlKTtcbiAgfSkgYXMgdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG59XG5cbi8qKlxuICogUmV3cml0ZSBhIHNlcnZpbmcgcmVzcG9uc2Ugd2hvc2UgYm9keSBuZWVkcyByZXBhaXIsIGxlYXZpbmcgdW5zdXBwb3J0ZWRcbiAqIGNvbnRlbnQgdHlwZXMgYnl0ZS1pZGVudGljYWwuXG4gKlxuICogU1NFIHJlbWFpbnMgYSBsaXZlIHN0cmVhbTogYSBUcmFuc2Zvcm1TdHJlYW0gcmVwYWlycyBjb21wbGV0ZSBgZGF0YTpgIGxpbmVzXG4gKiBhcyBieXRlcyBhcnJpdmUgYW5kIHByZXNlcnZlcyBwYXJ0aWFsIGxpbmVzIGFjcm9zcyBuZXR3b3JrIGNodW5rcy4gSlNPTiBpc1xuICogYnVmZmVyZWQgdGhyb3VnaCB0aGUgZXhpc3RpbmcgcmVzcG9uc2UtYm9keSByZXBhaXIuIEEgbm9uLUpTT04vbm9uLVNTRSBib2R5XG4gKiBpcyByZXR1cm5lZCB1bnRvdWNoZWQgc28gdGhlIGNhbGxlciBzdGlsbCBzZWVzIHRoZSBvcmlnaW5hbCByZXNwb25zZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVwYWlyU2VydmluZ1Jlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgY29uc3QgY29udGVudFR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKSA/PyBcIlwiO1xuICBpZiAoY29udGVudFR5cGUuaW5jbHVkZXMoXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiKSAmJiByZXNwb25zZS5ib2R5KSB7XG4gICAgcmV0dXJuIHJlYnVpbGRTZXJ2aW5nUmVzcG9uc2UocmVzcG9uc2UsIHJld3JpdGVTZXJ2aW5nUmVzcG9uc2VTdHJlYW0ocmVzcG9uc2UuYm9keSkpO1xuICB9XG4gIGlmICghY29udGVudFR5cGUuaW5jbHVkZXMoXCJhcHBsaWNhdGlvbi9qc29uXCIpKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmNsb25lKCkudGV4dCgpO1xuICBjb25zdCByZXdyaXR0ZW4gPSByZXdyaXRlU2VydmluZ1Jlc3BvbnNlQm9keShib2R5KTtcbiAgaWYgKHJld3JpdHRlbiA9PT0gYm9keSkgcmV0dXJuIHJlc3BvbnNlO1xuICByZXR1cm4gcmVidWlsZFNlcnZpbmdSZXNwb25zZShyZXNwb25zZSwgcmV3cml0dGVuKTtcbn1cblxuLyoqIFJlYnVpbGQgYSB0cmFuc2Zvcm1lZCByZXNwb25zZSB3aXRob3V0IHN0YWxlIGJ5dGUtbGVuZ3RoL2VuY29kaW5nIGhlYWRlcnMuICovXG5mdW5jdGlvbiByZWJ1aWxkU2VydmluZ1Jlc3BvbnNlKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIGJvZHk6IHN0cmluZyB8IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+LFxuKTogUmVzcG9uc2Uge1xuICAvLyBgY29udGVudC1sZW5ndGhgIC8gYGNvbnRlbnQtZW5jb2RpbmdgIGRlc2NyaWJlIHRoZSBPUklHSU5BTCBieXRlcywgc28gdGhleVxuICAvLyBhcmUgZHJvcHBlZDogdGhlIHJld3JpdHRlbiBib2R5IGlzIGEgZGlmZmVyZW50IGxlbmd0aCBhbmQgYWxyZWFkeSBkZWNvZGVkLlxuICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVzcG9uc2UuaGVhZGVycyk7XG4gIGhlYWRlcnMuZGVsZXRlKFwiY29udGVudC1sZW5ndGhcIik7XG4gIGhlYWRlcnMuZGVsZXRlKFwiY29udGVudC1lbmNvZGluZ1wiKTtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShib2R5LCB7XG4gICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzLFxuICB9KTtcbn1cbiJdfQ==
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFLeEUsT0FBTyxFQUFFLGVBQWUsRUFBc0MsTUFBTSxhQUFhLENBQUM7QUFDbEYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsNEJBQTRCLEdBQzdCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRy9FLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDcEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUVoQyw4RkFBOEY7QUFDOUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLEtBQUs7S0FDYjtDQUNPLENBQUM7QUFFWCxpRkFBaUY7QUFDakYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFlO0lBQ3hDLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3ZGLENBQUM7QUFxQkQsU0FBUyxjQUFjLENBQ3JCLE1BQTBCLEVBQzFC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LFFBQVEsQ0FBQyxVQUFVO1FBQy9CLE9BQU87S0FDUixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgcmVzb2x2ZXIgZm9yIE1hc3RyYSBhZ2VudHMuXG4gKlxuICogRWFjaCBhZ2VudCBzdGVwIGNhbGxzIHtAbGluayBidWlsZE1vZGVsfSB3aXRoIHRoZSBhY3RpdmVcbiAqIGBSZXF1ZXN0Q29udGV4dGAuIFRoZSB1c2VyIHN0YW1wZWQgYnkgYE1hc3RyYVNlcnZlcmAgY2FycmllcyBhblxuICogQXBwS2l0IGBXb3Jrc3BhY2VDbGllbnRgOyB3ZSBhc2sgaXQgZm9yIHRoZSB3b3Jrc3BhY2UgaG9zdCBhbmQgYVxuICogZnJlc2ggYmVhcmVyIGhlYWRlciwgdGhlbiBwb2ludCBNYXN0cmEncyBPcGVuQUktY29tcGF0aWJsZSBwcm92aWRlclxuICogYXQgYC9zZXJ2aW5nLWVuZHBvaW50c2Agb24gdGhhdCBob3N0LlxuICpcbiAqIFRoaXMgbW9kdWxlIG9ubHkgYWRkcyB0aGUgTWFzdHJhLXNwZWNpZmljIGdsdWUuIFRoZSBhY3R1YWwgbW9kZWxcbiAqIHNlbGVjdGlvbiAtIGxpc3RpbmcgdGhlIHdvcmtzcGFjZSBjYXRhbG9ndWUgYW5kIHJlc29sdmluZyBhblxuICogZXhwbGljaXQgbmFtZSAvIGNsYXNzIC8gZmFsbGJhY2sgY2hhaW4gdG8gYSByZWFsIGVuZHBvaW50IGlkIC0gbGl2ZXNcbiAqIGluIGBAZGJ4LXRvb2xzL21vZGVsYCAoe0BsaW5rIHNlbGVjdE1vZGVsfSkgc28gbm9uLU1hc3RyYSBjb25zdW1lcnNcbiAqIChlLmcuIGEgam9iIHRoYXQganVzdCBuZWVkcyBhIG1vZGVsIG5hbWUpIGNhbiByZXVzZSBpdC4gSGVyZSB3ZVxuICogYXNzZW1ibGUgdGhlIGV4cGxpY2l0IGFzayBmcm9tIE1hc3RyYSdzIHJlcXVlc3QgY29udGV4dCAodGhlXG4gKiBwZXItcmVxdWVzdCBvdmVycmlkZSB1bmRlciB7QGxpbmsgTUFTVFJBX01PREVMX09WRVJSSURFX0tFWX0sIHRoZVxuICogYWdlbnQgLyBwbHVnaW4gYG1vZGVsSWRgLCBvciBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgKSxcbiAqIHBhc3MgdGhlIHBsdWdpbidzIGZ1enp5IC8gY2xhc3MgLyBmYWxsYmFjayBrbm9icyB0aHJvdWdoLCBhbmQgd3JhcFxuICogdGhlIHJlc29sdmVkIGlkIGluIHRoZSBPcGVuQUktY29tcGF0aWJsZSBwcm92aWRlciBjb25maWcgTWFzdHJhXG4gKiBleHBlY3RzLiBDYXRhbG9ndWUgZmV0Y2hlcyBmYWlsIGxvdWQ6IG5ldHdvcmsgLyBhdXRoIGVycm9yc1xuICogcHJvcGFnYXRlIHNvIGNhbGxlcnMgc2VlIHRoZSByZWFsIFNESyBtZXNzYWdlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBnZXRFeGVjdXRpb25Db250ZXh0IH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgY2xhc3NlcywgaW52b2tlLCByZXNvbHZlIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWxcIjtcbmltcG9ydCB7IE1vZGVsU2VydmluZ0FwaSwgbW9kZWxTZXJ2aW5nQXBpIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWwtcnNcIjtcbmltcG9ydCB7IGZ1bmN0aW9uTW9kdWxlLCBqc29uLCBsb2csIG5ldCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBtb2RlbCwgdHlwZSBTZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IE1hc3RyYU1vZGVsQ29uZmlnIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9sbG1cIjtcbmltcG9ydCB0eXBlIHsgUmVxdWVzdENvbnRleHQgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3JlcXVlc3QtY29udGV4dFwiO1xuXG5pbXBvcnQgeyBNQVNUUkFfVVNFUl9LRVksIHR5cGUgTWFzdHJhUGx1Z2luQ29uZmlnLCB0eXBlIFVzZXIgfSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB7XG4gIHJld3JpdGVTZXJ2aW5nUmVxdWVzdCxcbiAgcmV3cml0ZVNlcnZpbmdSZXNwb25zZUJvZHksXG4gIHJld3JpdGVTZXJ2aW5nUmVzcG9uc2VTdHJlYW0sXG59IGZyb20gXCIuL3NlcnZpbmctc2FuaXRpemUudHNcIjtcbmltcG9ydCB7IE1BU1RSQV9NT0RFTF9PVkVSUklERV9LRVksIHJlc29sdmVTZXJ2aW5nQ29uZmlnIH0gZnJvbSBcIi4vc2VydmluZy50c1wiO1xuXG50eXBlIE1vZGVsQ2xhc3MgPSBtb2RlbC5Nb2RlbENsYXNzO1xuY29uc3QgeyBwYXJzZU1vZGVsQ2xhc3MgfSA9IGNsYXNzZXM7XG5jb25zdCB7IHNlbGVjdE1vZGVsIH0gPSByZXNvbHZlO1xuXG4vKiogS2VlcCBSZXNwb25zZXMgdHVybnMgc3RhdGVsZXNzIHNvIHRvb2wgY29udGludWF0aW9ucyByZXBsYXkgZW5jcnlwdGVkIHJlYXNvbmluZyBpbmxpbmUuICovXG5leHBvcnQgY29uc3QgUkVTUE9OU0VTX1BST1ZJREVSX09QVElPTlMgPSB7XG4gIG9wZW5haToge1xuICAgIHN0b3JlOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBQaWNrIHRoZSBuYXRpdmUgRGF0YWJyaWNrcyBpbmZlcmVuY2Ugc3VyZmFjZSByZXF1aXJlZCBieSBhIHJlc29sdmVkIG1vZGVsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpbmdBcGkobW9kZWxJZDogc3RyaW5nKTogXCJjaGF0XCIgfCBcInJlc3BvbnNlc1wiIHtcbiAgcmV0dXJuIG1vZGVsU2VydmluZ0FwaShtb2RlbElkKSA9PT0gTW9kZWxTZXJ2aW5nQXBpLlJlc3BvbnNlcyA/IFwicmVzcG9uc2VzXCIgOiBcImNoYXRcIjtcbn1cblxuLyoqIE9wdGlvbmFsIG92ZXJyaWRlcyBhY2NlcHRlZCBieSB7QGxpbmsgYnVpbGRNb2RlbH0uICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkTW9kZWxPdmVycmlkZXMge1xuICAvKipcbiAgICogU3RhdGljIG1vZGVsIGlkIGZyb20gdGhlIGFnZW50IC8gcGx1Z2luIGNvbmZpZyAoc3RyaW5nIHN1Z2FyIG9uXG4gICAqIGBkZWYubW9kZWxgIG9yIGBjb25maWcuZGVmYXVsdE1vZGVsYCkuIExvc2VzIHRvIHRoZSBwZXItcmVxdWVzdFxuICAgKiBvdmVycmlkZSBidXQgd2lucyBvdmVyIGVudiAvIGNsYXNzIC8gZmFsbGJhY2suXG4gICAqL1xuICBtb2RlbElkPzogc3RyaW5nO1xuICAvKipcbiAgICogQ2hhdCBjYXBhYmlsaXR5IGNsYXNzIHRvIHJlc29sdmUgd2hlbiBubyBleHBsaWNpdCBtb2RlbCBpZCBpc1xuICAgKiBzdXBwbGllZC4gVXNlZCBieSBpbnRlcm5hbCBhZ2VudHMgKGUuZy4gdGhlIGNoYXJ0IHBsYW5uZXIgYXNrcyBmb3JcbiAgICoge0BsaW5rIG1vZGVsLk1vZGVsQ2xhc3MuQ2hhdEZhc3R9KSB0byBleHByZXNzIGludGVudCB3aXRob3V0IHBpbm5pbmcgYW5cbiAgICogZW5kcG9pbnQgbmFtZTsgdGhlIGxpdmUgY2F0YWxvZ3VlIGlzIGNsYXNzaWZpZWQgYW5kIHRoZSB0b3BcbiAgICogYXZhaWxhYmxlIG1vZGVsIGluIHRoZSBjbGFzcyBpcyBjaG9zZW4sIGZhbGxpbmcgYmFjayB0byB0aGVcbiAgICogY2xhc3MncyBzdGF0aWMgbGlzdCB3aGVuIHRoZSB3b3Jrc3BhY2UgaGFzIG5vbmUuXG4gICAqL1xuICBtb2RlbENsYXNzPzogTW9kZWxDbGFzcztcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uSW5wdXQoXG4gIGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnLFxuICByZXF1ZXN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGVmYXVsdENsYXNzOiBNb2RlbENsYXNzIHwgdW5kZWZpbmVkLFxuICBzZXJ2aW5nID0gcmVzb2x2ZVNlcnZpbmdDb25maWcoY29uZmlnKSxcbikge1xuICBjb25zdCByZXF1ZXN0ZWRDbGFzcyA9IHJlcXVlc3RlZCAhPT0gdW5kZWZpbmVkID8gcGFyc2VNb2RlbENsYXNzKHJlcXVlc3RlZCkgOiBudWxsO1xuICBjb25zdCBleHBsaWNpdCA9IHJlcXVlc3RlZENsYXNzID09PSBudWxsID8gcmVxdWVzdGVkIDogdW5kZWZpbmVkO1xuICBjb25zdCBtb2RlbENsYXNzID0gcmVxdWVzdGVkQ2xhc3MgPz8gZGVmYXVsdENsYXNzO1xuICByZXR1cm4ge1xuICAgIC4uLihleHBsaWNpdCAhPT0gdW5kZWZpbmVkID8geyBleHBsaWNpdCB9IDoge30pLFxuICAgIGZ1enp5OiBzZXJ2aW5nLmZ1enp5LFxuICAgIHRocmVzaG9sZDogc2VydmluZy50aHJlc2hvbGQsXG4gICAgLi4uKG1vZGVsQ2xhc3MgIT09IHVuZGVmaW5lZCA/IHsgbW9kZWxDbGFzcyB9IDoge30pLFxuICAgIGZhbGxiYWNrczogc2VydmluZy5mYWxsYmFja3MsXG4gICAgbGl2ZU9ubHk6IHJlcXVlc3RlZCA9PT0gdW5kZWZpbmVkLFxuICAgIHR0bE1zOiBzZXJ2aW5nLnR0bE1zLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYWdlbnQncyB1bnBpbm5lZCBkZWZhdWx0IGFnYWluc3QgYW4gYWxyZWFkeS1sb2FkZWQgbGl2ZSBjYXRhbG9ndWUuXG4gKlxuICogV2l0aCBubyBjb25maWd1cmVkIGlkL2NsYXNzL2ZhbGxiYWNrLCB0aGUgZ2VuZXJpYyBtb2RlbCByYW5rZXIgc2VsZWN0cyB0aGVcbiAqIGhpZ2hlc3QtcmFua2VkIGN1cnJlbnRseSBhdmFpbGFibGUgR1BULCB0aGVuIGZhbGxzIGJhY2sgdG8gdGhlIGhpZ2hlc3QtcmFua2VkXG4gKiBsaXZlIGNoYXQgZW5kcG9pbnQgd2hlbiB0aGUgd29ya3NwYWNlIGhhcyBubyBHUFQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRGVmYXVsdE1vZGVsSWQoXG4gIGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnLFxuICBlbmRwb2ludHM6IHJlYWRvbmx5IFNlcnZpbmdFbmRwb2ludFN1bW1hcnlbXSxcbiAgb3ZlcnJpZGVzOiBCdWlsZE1vZGVsT3ZlcnJpZGVzID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCByZXF1ZXN0ZWQgPSBvdmVycmlkZXMubW9kZWxJZCA/PyBwcm9jZXNzLmVudi5EQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRTtcbiAgcmV0dXJuIHJlc29sdmUucmVzb2x2ZU1vZGVsKGVuZHBvaW50cywgc2VsZWN0aW9uSW5wdXQoY29uZmlnLCByZXF1ZXN0ZWQsIG92ZXJyaWRlcy5tb2RlbENsYXNzKSlcbiAgICAubW9kZWxJZDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgYE1hc3RyYU1vZGVsQ29uZmlnYCBmb3IgdGhlIGN1cnJlbnQgYWdlbnQgc3RlcC4gUnVuc1xuICogd2hpbGUgYGFnZW50LnN0cmVhbWAgaXMgaW5zaWRlIHRoZSBgYXNVc2VyKHJlcSlgIHNjb3BlIHNvIHRva2Vuc1xuICogYXJlIHVzZXItc2NvcGVkOyBvdXRzaWRlIGFuIGFjdGl2ZSB1c2VyIGNvbnRleHQgdGhlIHdvcmtzcGFjZVxuICogY2xpZW50IGZhbGxzIGJhY2sgdG8gdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICpcbiAqIEVuZHBvaW50IHByZWNlZGVuY2U6IHRoZSBwZXItcmVxdWVzdCBvdmVycmlkZVxuICogKHtAbGluayBNQVNUUkFfTU9ERUxfT1ZFUlJJREVfS0VZfSwgb25seSB3aGVuIGBjb25maWcubW9kZWxPdmVycmlkZWAgYWxsb3dzXG4gKiBpdCksIHRoZW4ge0BsaW5rIEJ1aWxkTW9kZWxPdmVycmlkZXMubW9kZWxJZH0gZnJvbSB0aGUgYWdlbnQgLyBwbHVnaW5cbiAqIGNvbmZpZywgdGhlbiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgLiBXaXRoIG5vbmUgb2YgdGhvc2Ugc2V0IHRoZVxuICogY2FwYWJpbGl0eSBjbGFzcyBhbmQgZmFsbGJhY2sgbGFkZGVyIGluIGBAZGJ4LXRvb2xzL21vZGVsYCBjaG9vc2UgdGhlXG4gKiBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkTW9kZWwoXG4gIGNvbmZpZzogTWFzdHJhUGx1Z2luQ29uZmlnLFxuICByZXF1ZXN0Q29udGV4dDogUmVxdWVzdENvbnRleHQsXG4gIG92ZXJyaWRlczogQnVpbGRNb2RlbE92ZXJyaWRlcyA9IHt9LFxuKTogUHJvbWlzZTxNYXN0cmFNb2RlbENvbmZpZz4ge1xuICB2b2lkIHNldHVwRmV0Y2hJbnRlcmNlcHRvcigpO1xuICAvLyBUaGUgY2hhdCBwYXRoIHN0YW1wcyB0aGUgQXBwS2l0IHVzZXIgb24gdGhlIHJlcXVlc3QgY29udGV4dCB2aWFcbiAgLy8gYE1hc3RyYVNlcnZlcmAuIFRoZSBNQ1AgdHJhbnNwb3J0IHJvdXRlcyBkb24ndCB0aHJlYWQgdGhhdCBjb250ZXh0XG4gIC8vIGludG8gdG9vbCBleGVjdXRpb24sIHNvIGZhbGwgYmFjayB0byB0aGUgYW1iaWVudCBleGVjdXRpb24gY29udGV4dFxuICAvLyAodGhlIGFjdGl2ZSBPQk8gc2NvcGUsIG9yIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCkgd2hlbiBpdCdzIGFic2VudC5cbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0LmdldChNQVNUUkFfVVNFUl9LRVkpIGFzIFVzZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IGV4ZWN1dGlvbkNvbnRleHQgPSB1c2VyPy5leGVjdXRpb25Db250ZXh0ID8/IGdldEV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3QgY2xpZW50Q29uZmlnID0gZXhlY3V0aW9uQ29udGV4dC5jbGllbnQuY29uZmlnO1xuICBjb25zdCBob3N0ID0gKGF3YWl0IGNsaWVudENvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycygpO1xuICBhd2FpdCBjbGllbnRDb25maWcuYXV0aGVudGljYXRlKGhlYWRlcnMpO1xuICAvLyBUaGUgT3BlbkFJIE5vZGUgU0RLIGFwcGVuZHMgcGF0aHMgbGlrZSBgL2NoYXQvY29tcGxldGlvbnNgIHRvIHdoYXRldmVyXG4gIC8vIFVSTCB3ZSBoYW5kIGl0LiBEcm9wIHRoZSB0cmFpbGluZyBzbGFzaCBzbyB0aGUgcmVzdWx0aW5nIFVSTCBzdGF5c1xuICAvLyB3ZWxsLWZvcm1lZCAoYC9zZXJ2aW5nLWVuZHBvaW50cy9jaGF0L2NvbXBsZXRpb25zYCkuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCIvc2VydmluZy1lbmRwb2ludHNcIiwgaG9zdCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXC8kLywgXCJcIik7XG5cbiAgY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihjb25maWcpO1xuICBjb25zdCBzZXJ2aW5nID0gcmVzb2x2ZVNlcnZpbmdDb25maWcoY29uZmlnKTtcbiAgY29uc3Qgb3ZlcnJpZGUgPSBzZXJ2aW5nLmFsbG93T3ZlcnJpZGVcbiAgICA/IChyZXF1ZXN0Q29udGV4dC5nZXQoTUFTVFJBX01PREVMX09WRVJSSURFX0tFWSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIC8vIFRoZSBvdmVycmlkZSAvIGFnZW50IGRlZmF1bHQgLyBlbnYgdmFsdWUgY2FuIGJlIGVpdGhlciBhIGNvbmNyZXRlXG4gIC8vIGVuZHBvaW50IG5hbWUgb3IgYSBtb2RlbCBjbGFzcyBzbHVnIChcImNoYXQtdGhpbmtpbmdcIiAvXG4gIC8vIFwiY2hhdC1iYWxhbmNlZFwiIC8gXCJjaGF0LWZhc3RcIikuIEEgY2xhc3Mgc2x1ZyBiZWNvbWVzIGEgY2xhc3MgaW50ZW50XG4gIC8vIChsZXQgdGhlIGxpdmUgY2F0YWxvZ3VlIHBpY2sgdGhlIGJlc3QgbW9kZWwgaW4gdGhhdCBiYW5kKTsgYW55dGhpbmdcbiAgLy8gZWxzZSBpcyBhbiBleHBsaWNpdCBuYW1lIGZ1enp5LW1hdGNoZWQgYWdhaW5zdCB0aGUgY2F0YWxvZ3VlLiBBblxuICAvLyBpbnRlcm5hbCBgb3ZlcnJpZGVzLm1vZGVsQ2xhc3NgIChlLmcuIHRoZSBjaGFydCBwbGFubmVyKSBpcyB0aGVcbiAgLy8gZmxvb3Igd2hlbiBub3RoaW5nIHdhcyByZXF1ZXN0ZWQuXG4gIGNvbnN0IHJlcXVlc3RlZCA9IG92ZXJyaWRlID8/IG92ZXJyaWRlcy5tb2RlbElkID8/IHByb2Nlc3MuZW52LkRBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FO1xuXG4gIGNvbnN0IHsgbW9kZWxJZCwgc291cmNlIH0gPSBhd2FpdCBzZWxlY3RNb2RlbChcbiAgICBleGVjdXRpb25Db250ZXh0LmNsaWVudCxcbiAgICBob3N0LFxuICAgIHNlbGVjdGlvbklucHV0KGNvbmZpZywgcmVxdWVzdGVkLCBvdmVycmlkZXMubW9kZWxDbGFzcywgc2VydmluZyksXG4gICk7XG4gIGxvZ2dlci5kZWJ1ZyhcIm1vZGVsIHNlbGVjdGVkXCIsIHsgbW9kZWxJZCwgc291cmNlLCByZXF1ZXN0ZWQgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlcklkOiBjb25maWcucHJvdmlkZXJJZCA/PyBcImRhdGFicmlja3NcIixcbiAgICBtb2RlbElkLFxuICAgIHVybCxcbiAgICBoZWFkZXJzOiBPYmplY3QuZnJvbUVudHJpZXMoaGVhZGVycy5lbnRyaWVzKCkpLFxuICAgIGFwaTogc2VydmluZ0FwaShtb2RlbElkKSxcbiAgfTtcbn1cblxuLyoqIENoYXQgQ29tcGxldGlvbnMgcm91dGUgd2hvc2UgcHJvdmlkZXItc3BlY2lmaWMgd2lyZSBzaGFwZXMgYXJlIG5vcm1hbGl6ZWQgaGVyZS4gKi9cbmNvbnN0IENIQVRfQ09NUExFVElPTlNfUEFUSCA9IGAvJHtpbnZva2UuQ0hBVF9DT01QTEVUSU9OU19QQVRIfWA7XG5cbi8qKlxuICogSW5zdGFsbCBhIHNpbmdsZSBzaGFyZWQgYGdsb2JhbFRoaXMuZmV0Y2hgIHdyYXBwZXIgZm9yIENoYXQgQ29tcGxldGlvbnNcbiAqIHJlcXVlc3RzLiBUaGUgd3JhcHBlciBkb2VzIHRocmVlIHRoaW5nczpcbiAqXG4gKiAgIDEuIFJld3JpdGVzIG91dGdvaW5nIEpTT04gZnJvbSBlaXRoZXIgYGluaXQuYm9keWAgb3IgYSBgUmVxdWVzdGAgdG8gcmVwYWlyXG4gKiAgICAgIHByb3ZpZGVyLXNwZWNpZmljIHJlcXVlc3QgY29uc3RyYWludHMgKHNlZSB7QGxpbmsgcmV3cml0ZVNlcnZpbmdSZXF1ZXN0fVxuICogICAgICBpbiBgLi9zZXJ2aW5nLXNhbml0aXplLmpzYCkuXG4gKiAgIDIuIEF0IGBMT0dfTEVWRUw9ZGVidWdgLCBkdW1wcyB0aGUgKHBvc3Qtc2FuaXRpemUpIEpTT04gYm9keSBzb1xuICogICAgICA0eHggZGVidWdnaW5nIGRvZXNuJ3QgaGF2ZSB0byBmaWdodCBBSSBTREsncyBgW0FycmF5XWBcbiAqICAgICAgZm9ybWF0dGVyLlxuICogICAzLiBSZXBhaXJzIGJ1ZmZlcmVkIGFuZCBzdHJlYW1pbmcgcmVzcG9uc2VzIHdoZXJlIGEgcHJvdmlkZXIgcmV0dXJuc1xuICogICAgICBgY2hvaWNlc1tdLm1lc3NhZ2UuY29udGVudGAgb3IgYGNob2ljZXNbXS5kZWx0YS5jb250ZW50YCBhcyBhIHBhcnRzXG4gKiAgICAgIGFycmF5IHRoYXQgdGhlIEFJIFNESydzIE9wZW5BSSBzY2hlbWEgcmVqZWN0cy5cbiAqXG4gKiBTYWZlIHRvIGNhbGwgZnJvbSBhbnkgaG90IHBhdGg6IHtAbGluayBmdW5jdGlvbk1vZHVsZS5tZW1vaXplfSBlbnN1cmVzXG4gKiB0aGUgd3JhcHBlciBpcyBpbnN0YWxsZWQgYXQgbW9zdCBvbmNlIHBlciBwcm9jZXNzLCBzbyBzdWJzZXF1ZW50XG4gKiBjYWxscyBhcmUgYSBuby1vcCBldmVuIHdoZW4ge0BsaW5rIGJ1aWxkTW9kZWx9IGZpcmVzIG9uIGV2ZXJ5IGFnZW50XG4gKiBzdGVwLlxuICovXG5jb25zdCBzZXR1cEZldGNoSW50ZXJjZXB0b3IgPSBmdW5jdGlvbk1vZHVsZS5tZW1vaXplKCgpOiB2b2lkID0+IHtcbiAgZ2xvYmFsVGhpcy5mZXRjaCA9IGNyZWF0ZVNlcnZpbmdGZXRjaEludGVyY2VwdG9yKGdsb2JhbFRoaXMuZmV0Y2guYmluZChnbG9iYWxUaGlzKSk7XG59KTtcblxuLyoqIEJ1aWxkIHRoZSBzZXJ2aW5nIGZldGNoIHdyYXBwZXI7IGV4cG9ydGVkIGZvciB0cmFuc3BvcnQtbGV2ZWwgcmVncmVzc2lvbiB0ZXN0cy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXJ2aW5nRmV0Y2hJbnRlcmNlcHRvcihvcmlnaW5hbDogdHlwZW9mIGZldGNoKTogdHlwZW9mIGZldGNoIHtcbiAgY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIm1hc3RyYS9sbG1cIik7XG4gIHJldHVybiAoYXN5bmMgKGlucHV0LCBpbml0KSA9PiB7XG4gICAgY29uc3QgdXJsID0gbmV0LnVybEJ1aWxkZXIoaW5wdXQpO1xuICAgIGNvbnN0IG1ldGhvZCA9IGluaXQ/Lm1ldGhvZCA/PyAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaW5wdXQubWV0aG9kIDogXCJHRVRcIik7XG4gICAgaWYgKCF1cmwgfHwgdXJsLnBhdGhuYW1lICE9PSBDSEFUX0NPTVBMRVRJT05TX1BBVEggfHwgbWV0aG9kLnRvVXBwZXJDYXNlKCkgIT09IFwiUE9TVFwiKSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwoaW5wdXQsIGluaXQpO1xuICAgIH1cbiAgICBjb25zdCByZXdyaXR0ZW4gPSBhd2FpdCByZXdyaXRlU2VydmluZ1JlcXVlc3QoaW5wdXQsIGluaXQpO1xuICAgIGNvbnN0IHBhcnNlZCA9IGpzb24ucGFyc2U8dW5rbm93bj4ocmV3cml0dGVuLmJvZHkpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgcGFyc2VkID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB7IHVybDogdXJsLnRvU3RyaW5nKCksIGJvZHlUeXBlOiBcIm5vbi1KU09OXCIgfVxuICAgICAgICA6IHsgdXJsOiB1cmwudG9TdHJpbmcoKSwgYm9keTogcGFyc2VkIH0sXG4gICAgKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG9yaWdpbmFsKHJld3JpdHRlbi5pbnB1dCwgcmV3cml0dGVuLmluaXQpO1xuICAgIHJldHVybiByZXBhaXJTZXJ2aW5nUmVzcG9uc2UocmVzcG9uc2UpO1xuICB9KSBhcyB0eXBlb2YgZ2xvYmFsVGhpcy5mZXRjaDtcbn1cblxuLyoqXG4gKiBSZXdyaXRlIGEgc2VydmluZyByZXNwb25zZSB3aG9zZSBib2R5IG5lZWRzIHJlcGFpciwgbGVhdmluZyB1bnN1cHBvcnRlZFxuICogY29udGVudCB0eXBlcyBieXRlLWlkZW50aWNhbC5cbiAqXG4gKiBTU0UgcmVtYWlucyBhIGxpdmUgc3RyZWFtOiBhIFRyYW5zZm9ybVN0cmVhbSByZXBhaXJzIGNvbXBsZXRlIGBkYXRhOmAgbGluZXNcbiAqIGFzIGJ5dGVzIGFycml2ZSBhbmQgcHJlc2VydmVzIHBhcnRpYWwgbGluZXMgYWNyb3NzIG5ldHdvcmsgY2h1bmtzLiBKU09OIGlzXG4gKiBidWZmZXJlZCB0aHJvdWdoIHRoZSBleGlzdGluZyByZXNwb25zZS1ib2R5IHJlcGFpci4gQSBub24tSlNPTi9ub24tU1NFIGJvZHlcbiAqIGlzIHJldHVybmVkIHVudG91Y2hlZCBzbyB0aGUgY2FsbGVyIHN0aWxsIHNlZXMgdGhlIG9yaWdpbmFsIHJlc3BvbnNlLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXBhaXJTZXJ2aW5nUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICBjb25zdCBjb250ZW50VHlwZSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpID8/IFwiXCI7XG4gIGlmIChjb250ZW50VHlwZS5pbmNsdWRlcyhcInRleHQvZXZlbnQtc3RyZWFtXCIpICYmIHJlc3BvbnNlLmJvZHkpIHtcbiAgICByZXR1cm4gcmVidWlsZFNlcnZpbmdSZXNwb25zZShyZXNwb25zZSwgcmV3cml0ZVNlcnZpbmdSZXNwb25zZVN0cmVhbShyZXNwb25zZS5ib2R5KSk7XG4gIH1cbiAgaWYgKCFjb250ZW50VHlwZS5pbmNsdWRlcyhcImFwcGxpY2F0aW9uL2pzb25cIikpIHJldHVybiByZXNwb25zZTtcblxuICBjb25zdCBib2R5ID0gYXdhaXQgcmVzcG9uc2UuY2xvbmUoKS50ZXh0KCk7XG4gIGNvbnN0IHJld3JpdHRlbiA9IHJld3JpdGVTZXJ2aW5nUmVzcG9uc2VCb2R5KGJvZHkpO1xuICBpZiAocmV3cml0dGVuID09PSBib2R5KSByZXR1cm4gcmVzcG9uc2U7XG4gIHJldHVybiByZWJ1aWxkU2VydmluZ1Jlc3BvbnNlKHJlc3BvbnNlLCByZXdyaXR0ZW4pO1xufVxuXG4vKiogUmVidWlsZCBhIHRyYW5zZm9ybWVkIHJlc3BvbnNlIHdpdGhvdXQgc3RhbGUgYnl0ZS1sZW5ndGgvZW5jb2RpbmcgaGVhZGVycy4gKi9cbmZ1bmN0aW9uIHJlYnVpbGRTZXJ2aW5nUmVzcG9uc2UoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgYm9keTogc3RyaW5nIHwgUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4sXG4pOiBSZXNwb25zZSB7XG4gIC8vIGBjb250ZW50LWxlbmd0aGAgLyBgY29udGVudC1lbmNvZGluZ2AgZGVzY3JpYmUgdGhlIE9SSUdJTkFMIGJ5dGVzLCBzbyB0aGV5XG4gIC8vIGFyZSBkcm9wcGVkOiB0aGUgcmV3cml0dGVuIGJvZHkgaXMgYSBkaWZmZXJlbnQgbGVuZ3RoIGFuZCBhbHJlYWR5IGRlY29kZWQuXG4gIGNvbnN0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyhyZXNwb25zZS5oZWFkZXJzKTtcbiAgaGVhZGVycy5kZWxldGUoXCJjb250ZW50LWxlbmd0aFwiKTtcbiAgaGVhZGVycy5kZWxldGUoXCJjb250ZW50LWVuY29kaW5nXCIpO1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHksIHtcbiAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnMsXG4gIH0pO1xufVxuIl19
|
package/lib/src/pagination.d.ts
CHANGED
|
@@ -6,18 +6,28 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Bounds for {@link clampPerPage}.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated Use the native `@mastra/client-js` memory API pagination inputs.
|
|
13
|
+
*/
|
|
10
14
|
export interface PerPageBounds {
|
|
11
15
|
/** Page size used for empty / non-positive / non-numeric inputs. */
|
|
12
16
|
fallback: number;
|
|
13
17
|
/** Hard cap so a misbehaving client can't fetch everything at once. */
|
|
14
18
|
max: number;
|
|
15
19
|
}
|
|
16
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Coerce / clamp a `perPage` value, falling back to `bounds.fallback`.
|
|
22
|
+
*
|
|
23
|
+
* @deprecated Use the native `@mastra/client-js` memory API pagination inputs.
|
|
24
|
+
*/
|
|
17
25
|
export declare function clampPerPage(value: number | undefined, bounds: PerPageBounds): number;
|
|
18
26
|
/**
|
|
19
27
|
* Coerce a Hono query value into a non-negative integer. Returns
|
|
20
28
|
* `undefined` for empty / non-numeric / negative inputs so the caller
|
|
21
29
|
* can apply its built-in defaults.
|
|
30
|
+
*
|
|
31
|
+
* @deprecated Use the native `@mastra/client-js` memory API pagination inputs.
|
|
22
32
|
*/
|
|
23
33
|
export declare function parseIntParam(value: string | undefined): number | undefined;
|
package/lib/src/pagination.js
CHANGED
|
@@ -7,7 +7,11 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
import { object } from "@dbx-tools/shared-core";
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Coerce / clamp a `perPage` value, falling back to `bounds.fallback`.
|
|
12
|
+
*
|
|
13
|
+
* @deprecated Use the native `@mastra/client-js` memory API pagination inputs.
|
|
14
|
+
*/
|
|
11
15
|
export function clampPerPage(value, bounds) {
|
|
12
16
|
if (value === undefined || Number.isNaN(value))
|
|
13
17
|
return bounds.fallback;
|
|
@@ -20,6 +24,8 @@ export function clampPerPage(value, bounds) {
|
|
|
20
24
|
* Coerce a Hono query value into a non-negative integer. Returns
|
|
21
25
|
* `undefined` for empty / non-numeric / negative inputs so the caller
|
|
22
26
|
* can apply its built-in defaults.
|
|
27
|
+
*
|
|
28
|
+
* @deprecated Use the native `@mastra/client-js` memory API pagination inputs.
|
|
23
29
|
*/
|
|
24
30
|
export function parseIntParam(value) {
|
|
25
31
|
const n = object.toNumber(value);
|
|
@@ -27,4 +33,4 @@ export function parseIntParam(value) {
|
|
|
27
33
|
return undefined;
|
|
28
34
|
return Math.trunc(n);
|
|
29
35
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWdpbmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFjaEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBeUIsRUFBRSxNQUFxQjtJQUMzRSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDdkUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ25DLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQXlCO0lBQ3JELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDL0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFF1ZXJ5LXBhcmFtZXRlciBjb2VyY2lvbiBzaGFyZWQgYnkgdGhlIHBhZ2luYXRlZCBjdXN0b20gcm91dGVzXG4gKiAoYGhpc3RvcnlgIC8gYHRocmVhZHNgKS4gRWFjaCByb3V0ZSBrZWVwcyBpdHMgb3duIHBhZ2Utc2l6ZSBkZWZhdWx0XG4gKiBhbmQgaGFyZCBjYXAgYW5kIHBhc3NlcyB0aGVtIGluLCBzbyB0aGUgY29lcmNpb24gcnVsZXMgc3RheSBpbiBvbmVcbiAqIHBsYWNlIHdpdGhvdXQgY29sbGFwc2luZyB0aGUgcm91dGVzJyBkaXN0aW5jdCBzaXppbmcuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbi8qKlxuICogQm91bmRzIGZvciB7QGxpbmsgY2xhbXBQZXJQYWdlfS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIG5hdGl2ZSBgQG1hc3RyYS9jbGllbnQtanNgIG1lbW9yeSBBUEkgcGFnaW5hdGlvbiBpbnB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVyUGFnZUJvdW5kcyB7XG4gIC8qKiBQYWdlIHNpemUgdXNlZCBmb3IgZW1wdHkgLyBub24tcG9zaXRpdmUgLyBub24tbnVtZXJpYyBpbnB1dHMuICovXG4gIGZhbGxiYWNrOiBudW1iZXI7XG4gIC8qKiBIYXJkIGNhcCBzbyBhIG1pc2JlaGF2aW5nIGNsaWVudCBjYW4ndCBmZXRjaCBldmVyeXRoaW5nIGF0IG9uY2UuICovXG4gIG1heDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvZXJjZSAvIGNsYW1wIGEgYHBlclBhZ2VgIHZhbHVlLCBmYWxsaW5nIGJhY2sgdG8gYGJvdW5kcy5mYWxsYmFja2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBuYXRpdmUgYEBtYXN0cmEvY2xpZW50LWpzYCBtZW1vcnkgQVBJIHBhZ2luYXRpb24gaW5wdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhbXBQZXJQYWdlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsIGJvdW5kczogUGVyUGFnZUJvdW5kcyk6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiBib3VuZHMuZmFsbGJhY2s7XG4gIGNvbnN0IG4gPSBNYXRoLnRydW5jKHZhbHVlKTtcbiAgaWYgKG4gPD0gMCkgcmV0dXJuIGJvdW5kcy5mYWxsYmFjaztcbiAgcmV0dXJuIE1hdGgubWluKG4sIGJvdW5kcy5tYXgpO1xufVxuXG4vKipcbiAqIENvZXJjZSBhIEhvbm8gcXVlcnkgdmFsdWUgaW50byBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLiBSZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCBmb3IgZW1wdHkgLyBub24tbnVtZXJpYyAvIG5lZ2F0aXZlIGlucHV0cyBzbyB0aGUgY2FsbGVyXG4gKiBjYW4gYXBwbHkgaXRzIGJ1aWx0LWluIGRlZmF1bHRzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgbmF0aXZlIGBAbWFzdHJhL2NsaWVudC1qc2AgbWVtb3J5IEFQSSBwYWdpbmF0aW9uIGlucHV0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSW50UGFyYW0odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG4gPSBvYmplY3QudG9OdW1iZXIodmFsdWUpO1xuICBpZiAobiA9PT0gdW5kZWZpbmVkIHx8IG4gPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gTWF0aC50cnVuYyhuKTtcbn1cbiJdfQ==
|
package/lib/src/plugin.d.ts
CHANGED
|
@@ -69,8 +69,8 @@ import { MastraServer } from "./server.ts";
|
|
|
69
69
|
* agents: createAgent({
|
|
70
70
|
* name: "analyst",
|
|
71
71
|
* instructions: "You answer questions about revenue and returns.",
|
|
72
|
-
* tools(plugins) {
|
|
73
|
-
* return { ...plugins.genie?.toolkit() };
|
|
72
|
+
* async tools(plugins) {
|
|
73
|
+
* return { ...(await plugins.genie?.toolkit()) };
|
|
74
74
|
* },
|
|
75
75
|
* }),
|
|
76
76
|
* }),
|
|
@@ -379,8 +379,8 @@ export declare class MastraPlugin extends Plugin<MastraPluginConfig> {
|
|
|
379
379
|
* agents: {
|
|
380
380
|
* analyst: createAgent({
|
|
381
381
|
* instructions: "You answer questions about sales.",
|
|
382
|
-
* tools(plugins) {
|
|
383
|
-
* return { ...plugins.genie?.toolkit() };
|
|
382
|
+
* async tools(plugins) {
|
|
383
|
+
* return { ...(await plugins.genie?.toolkit()) };
|
|
384
384
|
* },
|
|
385
385
|
* }),
|
|
386
386
|
* helper: createAgent({ instructions: "You explain the analyst's answers." }),
|