@thinkhive/sdk 4.0.1 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +364 -208
- package/dist/api/claims.js +2 -3
- package/dist/api/roi-analytics.d.ts +99 -0
- package/dist/api/roi-analytics.js +64 -1
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.js +2 -2
- package/dist/index.d.ts +104 -16
- package/dist/index.js +6 -4
- package/dist/integrations/ticket-linking.d.ts +23 -17
- package/dist/integrations/ticket-linking.js +95 -12
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* ThinkHive SDK
|
|
3
|
+
* ThinkHive SDK v4.1.0
|
|
4
4
|
*
|
|
5
5
|
* Run-centric AI agent observability platform with:
|
|
6
6
|
* - Facts vs Inferences (claims API)
|
|
7
7
|
* - Deterministic ticket linking (7 methods)
|
|
8
8
|
* - Customer context snapshots (time-series)
|
|
9
9
|
* - Calibrated predictions (Brier scores)
|
|
10
|
+
* - Configurable ROI calculation engine
|
|
10
11
|
*
|
|
11
|
-
* @version
|
|
12
|
+
* @version 4.1.0
|
|
12
13
|
* @license MIT
|
|
13
14
|
*/
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -200,8 +201,9 @@ function init(options = {}) {
|
|
|
200
201
|
throw new Error('OTLP tracing requires an API key. Agent ID alone is not sufficient for OTLP ingestion. ' +
|
|
201
202
|
'Provide apiKey in init() or set the THINKHIVE_API_KEY environment variable.');
|
|
202
203
|
}
|
|
204
|
+
const otlpUrl = config.endpoint.replace(/\/+$/, '') + '/v1/traces';
|
|
203
205
|
const exporter = new exporter_trace_otlp_proto_1.OTLPTraceExporter({
|
|
204
|
-
url:
|
|
206
|
+
url: otlpUrl,
|
|
205
207
|
headers: exporterHeaders,
|
|
206
208
|
});
|
|
207
209
|
// Create OpenTelemetry resource
|
|
@@ -631,4 +633,4 @@ exports.default = {
|
|
|
631
633
|
needsMoreTraces: business_metrics_1.needsMoreTraces,
|
|
632
634
|
getStatusMessage: business_metrics_1.getStatusMessage,
|
|
633
635
|
};
|
|
634
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7OztBQXVWSCxvQkF3REM7QUFLRCw4QkFLQztBQUtELDRCQVFDO0FBU0QsNEJBdUNDO0FBS0Qsd0NBdUNDO0FBS0QsOEJBcUNDO0FBS0QsZ0NBbUNDO0FBbGxCRCw0Q0FBb0U7QUFDcEUsd0ZBQTZFO0FBQzdFLHdEQUFvRDtBQUNwRCxrRUFBbUU7QUFDbkUsa0VBQW1FO0FBRW5FLE9BQU87QUFDUCwwQ0FRdUI7QUErMEJkLDhGQXAxQlAsc0JBQWEsT0FvMUJPO0FBQUUsNEZBajFCdEIsb0JBQVcsT0FpMUJzQjtBQUFFLGlHQWgxQm5DLHlCQUFnQixPQWcxQm1DO0FBOTBCckQsMENBU3VCO0FBdThCckIsK0ZBOThCQSx1QkFBYyxPQTg4QkE7QUFDZCxrR0E5OEJBLDBCQUFpQixPQTg4QkE7QUFDakIseUdBOThCQSxpQ0FBd0IsT0E4OEJBO0FBQ3hCLHNHQTk4QkEsOEJBQXFCLE9BODhCQTtBQUNyQixnR0E5OEJBLHdCQUFlLE9BODhCQTtBQUNmLCtGQTk4QkEsdUJBQWMsT0E4OEJBO0FBQ2QsaUdBOThCQSx5QkFBZ0IsT0E4OEJBO0FBMzhCbEIsY0FBYztBQUNkLHFDQUE4RjtBQXMwQjVGLHFGQXQwQk8sV0FBSSxPQXMwQlA7QUEyQkoscUdBajJCYSwyQkFBb0IsT0FpMkJiO0FBQ3BCLGlHQWwyQm1DLHVCQUFnQixPQWsyQm5DO0FBQ2hCLG1HQW4yQnFELHlCQUFrQixPQW0yQnJEO0FBbDJCcEIseUNBUXNCO0FBOHpCcEIsdUZBcjBCQSxlQUFNLE9BcTBCQTtBQThCTix1RkFsMkJBLGVBQU0sT0FrMkJBO0FBQ04sNEZBbDJCQSxvQkFBVyxPQWsyQkE7QUFDWCwyRkFsMkJBLG1CQUFVLE9BazJCQTtBQUNWLHdHQWwyQkEsZ0NBQXVCLE9BazJCQTtBQUN2QixrR0FsMkJBLDBCQUFpQixP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ZixnQkFBZ0IsRUFBaEIsbUNBQWdCO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaW5rSGl2ZSBTREsgdjMuMC4wXG4gKlxuICogUnVuLWNlbnRyaWMgQUkgYWdlbnQgb2JzZXJ2YWJpbGl0eSBwbGF0Zm9ybSB3aXRoOlxuICogLSBGYWN0cyB2cyBJbmZlcmVuY2VzIChjbGFpbXMgQVBJKVxuICogLSBEZXRlcm1pbmlzdGljIHRpY2tldCBsaW5raW5nICg3IG1ldGhvZHMpXG4gKiAtIEN1c3RvbWVyIGNvbnRleHQgc25hcHNob3RzICh0aW1lLXNlcmllcylcbiAqIC0gQ2FsaWJyYXRlZCBwcmVkaWN0aW9ucyAoQnJpZXIgc2NvcmVzKVxuICpcbiAqIEB2ZXJzaW9uIDMuMC4wXG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuXG5pbXBvcnQgeyB0cmFjZSwgY29udGV4dCwgU3BhblN0YXR1c0NvZGUgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuaW1wb3J0IHsgT1RMUFRyYWNlRXhwb3J0ZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9leHBvcnRlci10cmFjZS1vdGxwLXByb3RvJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvcmVzb3VyY2VzJztcbmltcG9ydCB7IE5vZGVUcmFjZXJQcm92aWRlciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay10cmFjZS1ub2RlJztcbmltcG9ydCB7IEJhdGNoU3BhblByb2Nlc3NvciB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Nkay10cmFjZS1iYXNlJztcblxuLy8gQ29yZVxuaW1wb3J0IHtcbiAgaW5pdENvbmZpZyxcbiAgZ2V0Q29uZmlnLFxuICBpc0luaXRpYWxpemVkLFxuICByZXNldENvbmZpZyxcbiAgZGVidWdMb2csXG4gIFNES19WRVJTSU9OLFxuICBERUZBVUxUX0VORFBPSU5ULFxufSBmcm9tICcuL2NvcmUvY29uZmlnJztcbmltcG9ydCB7XG4gIGFwaVJlcXVlc3RXaXRoRGF0YSxcbiAgVGhpbmtIaXZlRXJyb3IsXG4gIFRoaW5rSGl2ZUFwaUVycm9yLFxuICBUaGlua0hpdmVWYWxpZGF0aW9uRXJyb3IsXG4gIFBlcm1pc3Npb25EZW5pZWRFcnJvcixcbiAgQWdlbnRTY29wZUVycm9yLFxuICBSYXRlTGltaXRFcnJvcixcbiAgSXBXaGl0ZWxpc3RFcnJvcixcbn0gZnJvbSAnLi9jb3JlL2NsaWVudCc7XG5cbi8vIEFQSSBjbGllbnRzXG5pbXBvcnQgeyBydW5zLCBjcmVhdGVSdW5XaXRoQ29udGV4dCwgdG9PcGVuQUlNZXNzYWdlcywgZnJvbU9wZW5BSU1lc3NhZ2VzIH0gZnJvbSAnLi9hcGkvcnVucyc7XG5pbXBvcnQge1xuICBjbGFpbXMsXG4gIGlzRmFjdCxcbiAgaXNJbmZlcmVuY2UsXG4gIGlzQ29tcHV0ZWQsXG4gIGdldEhpZ2hDb25maWRlbmNlQ2xhaW1zLFxuICBncm91cENsYWltc0J5VHlwZSxcbiAgZ3JvdXBDbGFpbXNCeUNhdGVnb3J5LFxufSBmcm9tICcuL2FwaS9jbGFpbXMnO1xuaW1wb3J0IHtcbiAgY2FsaWJyYXRpb24sXG4gIGNhbGN1bGF0ZUJyaWVyU2NvcmUsXG4gIGNhbGN1bGF0ZUVDRSxcbiAgaXNXZWxsQ2FsaWJyYXRlZCxcbiAgZ2V0Q2FsaWJyYXRpb25RdWFsaXR5LFxufSBmcm9tICcuL2FwaS9jYWxpYnJhdGlvbic7XG5cbi8vIE5ldyBFdmFsdWF0aW9uIEFQSXNcbmltcG9ydCB7IGh1bWFuUmV2aWV3IH0gZnJvbSAnLi9hcGkvaHVtYW4tcmV2aWV3JztcbmltcG9ydCB7XG4gIG5vbmRldGVybWluaXNtLFxuICBjYWxjdWxhdGVQYXNzQXRLLFxuICBjYWxjdWxhdGVQYXNzVG9LLFxuICByZXF1aXJlZFBhc3NSYXRlRm9yUGFzc0F0SyxcbiAgaXNSZWxpYWJsZUV2YWx1YXRpb24sXG4gIGdldFJlbGlhYmlsaXR5UmVjb21tZW5kYXRpb24sXG59IGZyb20gJy4vYXBpL25vbmRldGVybWluaXNtJztcbmltcG9ydCB7XG4gIGV2YWxIZWFsdGgsXG4gIGhhc0hlYWx0aElzc3VlLFxuICBnZXRTZXZlcml0eUxldmVsIGFzIGdldEhlYWx0aFNldmVyaXR5TGV2ZWwsXG4gIGlzU2F0dXJhdGVkLFxuICBnZXRTYXR1cmF0aW9uUmVjb21tZW5kYXRpb24sXG59IGZyb20gJy4vYXBpL2V2YWwtaGVhbHRoJztcbmltcG9ydCB7XG4gIGRldGVybWluaXN0aWNHcmFkZXJzLFxuICBjcmVhdGVSZWdleFJ1bGUsXG4gIGNyZWF0ZUNvbnRhaW5zUnVsZSxcbiAgY3JlYXRlTGVuZ3RoUnVsZSxcbiAgY3JlYXRlSnNvblNjaGVtYVJ1bGUsXG4gIGFsbFJ1bGVzUGFzc2VkLFxuICBnZXRGYWlsZWRSdWxlcyxcbiAgY2FsY3VsYXRlQXZlcmFnZVNjb3JlLFxufSBmcm9tICcuL2FwaS9kZXRlcm1pbmlzdGljLWdyYWRlcnMnO1xuaW1wb3J0IHtcbiAgY29udmVyc2F0aW9uRXZhbCxcbiAgYWdncmVnYXRlV29yc3QsXG4gIGFnZ3JlZ2F0ZUF2ZXJhZ2UsXG4gIGFnZ3JlZ2F0ZVdlaWdodGVkLFxuICBhZ2dyZWdhdGVGaW5hbFR1cm4sXG4gIGFnZ3JlZ2F0ZU1ham9yaXR5LFxuICBnZXRBZ2dyZWdhdG9yLFxuICBnZXRQcm9ibGVtYXRpY1R1cm5zLFxuICBhbmFseXplQ29udmVyc2F0aW9uVHJlbmQsXG59IGZyb20gJy4vYXBpL2NvbnZlcnNhdGlvbi1ldmFsJztcbmltcG9ydCB7XG4gIHRyYW5zY3JpcHRQYXR0ZXJucyxcbiAgaXNIaWdoUmlzayxcbiAgZ2V0TWF0Y2hlc0J5Q2F0ZWdvcnksXG4gIGdldENyaXRpY2FsSW5zaWdodHMsXG4gIGhhc1BpaUV4cG9zdXJlLFxuICBoYXNGcnVzdHJhdGlvblNpZ25hbHMsXG4gIGhhc0VzY2FsYXRpb25SZXF1ZXN0LFxuICBnZXRDYXRlZ29yeURpc3RyaWJ1dGlvbixcbiAgZ2V0UmVjb21tZW5kYXRpb25zLFxuICBuZWVkc0F0dGVudGlvbixcbiAgc29ydE1hdGNoZXNCeVNldmVyaXR5LFxufSBmcm9tICcuL2FwaS90cmFuc2NyaXB0LXBhdHRlcm5zJztcblxuLy8gQWdlbnRzIE1hbmFnZW1lbnRcbmltcG9ydCB7XG4gIGFnZW50cyxcbn0gZnJvbSAnLi9hcGkvYWdlbnRzJztcblxuLy8gQVBJIEtleSBNYW5hZ2VtZW50IChQaGFzZSAyIFNlY3VyaXR5KVxuaW1wb3J0IHtcbiAgYXBpS2V5cyxcbiAgaGFzUGVybWlzc2lvbixcbiAgaXNFeHBpcmVkIGFzIGlzQXBpS2V5RXhwaXJlZCxcbiAgaXNWYWxpZCBhcyBpc0FwaUtleVZhbGlkLFxuICBnZXRUaW1lVW50aWxFeHBpcnksXG4gIGNhbkFjY2Vzc0FnZW50LFxufSBmcm9tICcuL2FwaS9hcGlLZXlzJztcblxuLy8gUk9JIEFuYWx5dGljcyBBUElcbmltcG9ydCB7XG4gIHJvaUFuYWx5dGljcyxcbiAgY2FsY3VsYXRlUmV2ZW51ZUF0UmlzayxcbiAgY2FsY3VsYXRlQXV0b21hdGlvblNhdmluZ3MsXG4gIGZvcm1hdEN1cnJlbmN5LFxuICBnZXRST0lRdWFsaXR5LFxufSBmcm9tICcuL2FwaS9yb2ktYW5hbHl0aWNzJztcblxuLy8gQnVzaW5lc3MgTWV0cmljcyBBUElcbmltcG9ydCB7XG4gIGJ1c2luZXNzTWV0cmljcyxcbiAgaXNNZXRyaWNSZWFkeSxcbiAgbmVlZHNNb3JlVHJhY2VzLFxuICBhd2FpdGluZ0V4dGVybmFsRGF0YSxcbiAgaXNNZXRyaWNTdGFsZSxcbiAgZ2V0U3RhdHVzTWVzc2FnZSxcbiAgZ2V0VHJhY2VQcm9ncmVzcyxcbiAgZm9ybWF0TWV0cmljVmFsdWUsXG4gIGdldFRyZW5kRW1vamksXG59IGZyb20gJy4vYXBpL2J1c2luZXNzLW1ldHJpY3MnO1xuXG4vLyBRdWFsaXR5IE1ldHJpY3MgQVBJXG5pbXBvcnQge1xuICBxdWFsaXR5TWV0cmljcyxcbiAgcGFzc2VzUXVhbGl0eVRocmVzaG9sZCxcbiAgaXNIYWxsdWNpbmF0aW9uUmlza0FjY2VwdGFibGUsXG4gIGdldFF1YWxpdHlSZWNvbW1lbmRhdGlvbnMsXG4gIGZvcm1hdFF1YWxpdHlTY29yZSxcbiAgZ2V0R3JhZGVDb2xvcixcbn0gZnJvbSAnLi9hcGkvcXVhbGl0eS1tZXRyaWNzJztcblxuLy8gSW50ZWdyYXRpb25zXG5pbXBvcnQge1xuICBsaW5raW5nLFxuICBnZW5lcmF0ZVplbmRlc2tNYXJrZXIsXG4gIHBhcnNlWmVuZGVza01hcmtlcixcbiAgaGFzWmVuZGVza01hcmtlcixcbiAgcmVtb3ZlWmVuZGVza01hcmtlcixcbiAgbGlua1J1blRvVGlja2V0LFxuICBsaW5rUnVuVG9aZW5kZXNrVGlja2V0LFxuICBnZXRCZXN0TGlua01ldGhvZCxcbiAgTElOS19NRVRIT0RfQ09ORklERU5DRSxcbn0gZnJvbSAnLi9pbnRlZ3JhdGlvbnMvdGlja2V0LWxpbmtpbmcnO1xuaW1wb3J0IHtcbiAgY3VzdG9tZXJDb250ZXh0LFxuICBjYXB0dXJlQ3VzdG9tZXJDb250ZXh0LFxuICBnZXRDb250ZXh0QXNPZixcbiAgdG9Db250ZXh0U25hcHNob3QsXG4gIGNhbGN1bGF0ZUFyckNoYW5nZSxcbiAgY2FsY3VsYXRlSGVhbHRoVHJlbmQsXG59IGZyb20gJy4vaW50ZWdyYXRpb25zL2N1c3RvbWVyLWNvbnRleHQnO1xuXG4vLyBSZS1leHBvcnQgdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgSW5pdE9wdGlvbnMsXG4gIEZyYW1ld29yayxcbiAgUnVuT3B0aW9ucyxcbiAgUnVuT3V0Y29tZSxcbiAgQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgQ3VzdG9tZXJDb250ZXh0U25hcHNob3QsXG4gIFRpY2tldExpbmtpbmdPcHRpb25zLFxuICBMaW5rTWV0aG9kLFxuICBUcmFjZU9wdGlvbnMsXG4gIFRyYWNlQ3VzdG9tRmxhZyxcbiAgU3BhbkRhdGEsXG4gIEJ1c2luZXNzQ29udGV4dCxcbiAgQ2xhaW0sXG4gIENsYWltVHlwZSxcbiAgQ2xhaW1DYXRlZ29yeSxcbiAgQ29uZmlkZW5jZUNhbGlicmF0aW9uLFxuICBFdmlkZW5jZVJlZmVyZW5jZSxcbiAgQW5hbHlzaXNSZXN1bHQsXG4gIENhbGlicmF0aW9uU3RhdHVzLFxuICBDYWxpYnJhdGlvbkJ1Y2tldCxcbiAgUHJlZGljdGlvblR5cGUsXG4gIFJvaUNvbmZpZyxcbiAgUm9pU3VtbWFyeSxcbiAgRXhwbGFpbmFiaWxpdHlSZXN1bHQsXG4gIEFwaVJlc3BvbnNlLFxuICBQYWdpbmF0ZWRSZXNwb25zZSxcbiAgUnVuUmVzcG9uc2UsXG59IGZyb20gJy4vY29yZS90eXBlcyc7XG5cbi8vIFJlLWV4cG9ydCBldmFsdWF0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEh1bWFuUmV2aWV3U3RhdHVzLFxuICBIdW1hblJldmlld1R5cGUsXG4gIEh1bWFuUmV2aWV3UXVldWVJdGVtLFxuICBDYWxpYnJhdGlvblNldCxcbiAgUmV2aWV3ZXJDYWxpYnJhdGlvbixcbiAgUXVldWVTdGF0cyxcbn0gZnJvbSAnLi9hcGkvaHVtYW4tcmV2aWV3JztcblxuZXhwb3J0IHR5cGUge1xuICBOb25kZXRlcm1pbmlzbVJ1blR5cGUsXG4gIE5vbmRldGVybWluaXNtUnVuU3RhdHVzLFxuICBOb25kZXRlcm1pbmlzbVJ1bixcbiAgTm9uZGV0ZXJtaW5pc21TYW1wbGUsXG4gIFRyYWNlQW5hbHlzaXMsXG4gIENyaXRlcmlvbkFuYWx5c2lzLFxuICBSdW5TdW1tYXJ5LFxufSBmcm9tICcuL2FwaS9ub25kZXRlcm1pbmlzbSc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgU2F0dXJhdGlvblR5cGUsXG4gIEhlYWx0aFN0YXR1cyxcbiAgUmVncmVzc2lvblNldmVyaXR5LFxuICBFdmFsSGVhbHRoU25hcHNob3QsXG4gIEV2YWxSZWdyZXNzaW9uLFxuICBIZWFsdGhSZXBvcnQsXG59IGZyb20gJy4vYXBpL2V2YWwtaGVhbHRoJztcblxuZXhwb3J0IHR5cGUge1xuICBSdWxlVHlwZSxcbiAgRGV0ZXJtaW5pc3RpY0V2YWxSZXN1bHQsXG4gIFJ1bGVSZXN1bHQsXG4gIFJ1bGVUeXBlSW5mbyxcbiAgUnVsZVRlbXBsYXRlLFxufSBmcm9tICcuL2FwaS9kZXRlcm1pbmlzdGljLWdyYWRlcnMnO1xuXG5leHBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0ZU1ldGhvZCxcbiAgU2Vzc2lvblRyYWNlLFxuICBUdXJuRXZhbHVhdGlvbixcbiAgQ29udmVyc2F0aW9uRXZhbFJlc3VsdCxcbiAgQWdncmVnYXRpb25NZXRob2RJbmZvLFxufSBmcm9tICcuL2FwaS9jb252ZXJzYXRpb24tZXZhbCc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgUGF0dGVybkNhdGVnb3J5LFxuICBQYXR0ZXJuT3V0Y29tZSxcbiAgUGF0dGVyblNldmVyaXR5LFxuICBQYXR0ZXJuTWF0Y2gsXG4gIFBhdHRlcm5JbnNpZ2h0LFxuICBBbmFseXNpc1Jlc3VsdCBhcyBQYXR0ZXJuQW5hbHlzaXNSZXN1bHQsXG4gIFBhdHRlcm5DYXRlZ29yeUluZm8sXG4gIEJ1aWx0SW5QYXR0ZXJuLFxufSBmcm9tICcuL2FwaS90cmFuc2NyaXB0LXBhdHRlcm5zJztcblxuLy8gUmUtZXhwb3J0IEFQSSBLZXkgdHlwZXMgKFBoYXNlIDIgU2VjdXJpdHkpXG5leHBvcnQgdHlwZSB7XG4gIEFwaUtleVBlcm1pc3Npb25zLFxuICBTY29wZVR5cGUsXG4gIEVudmlyb25tZW50LFxuICBDcmVhdGVBcGlLZXlPcHRpb25zLFxuICBBcGlLZXksXG4gIENyZWF0ZUFwaUtleVJlc3VsdCxcbn0gZnJvbSAnLi9hcGkvYXBpS2V5cyc7XG5cbi8vIFJlLWV4cG9ydCBST0kgQW5hbHl0aWNzIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEluZHVzdHJ5Q29uZmlnLFxuICBDdXN0b21JbmR1c3RyeUNvbmZpZyxcbiAgUk9JTWV0cmljcyxcbiAgQnVzaW5lc3NJbXBhY3QsXG4gIFJPSVN1bW1hcnksXG4gIFRyZW5kRGF0YVBvaW50LFxuICBDb3JyZWxhdGlvbixcbiAgUGF0dGVybkNsdXN0ZXIsXG4gIENvcnJlbGF0aW9uQW5hbHlzaXMsXG59IGZyb20gJy4vYXBpL3JvaS1hbmFseXRpY3MnO1xuXG4vLyBSZS1leHBvcnQgUXVhbGl0eSBNZXRyaWNzIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIFJldHJpZXZlZENvbnRleHQsXG4gIEdyb3VuZFRydXRoQ29udGV4dCxcbiAgR3JvdW5kZWRTcGFuLFxuICBVbmdyb3VuZGVkU3BhbixcbiAgQ2l0YXRpb25NYXAsXG4gIFJBR0V2YWx1YXRpb24sXG4gIFJBR0V2aWRlbmNlLFxuICBIYWxsdWNpbmF0aW9uSW5zdGFuY2UsXG4gIEhhbGx1Y2luYXRpb25SZXBvcnQsXG4gIEdyb3VuZGVkbmVzc1Jlc3VsdCxcbiAgQmF0Y2hFdmFsdWF0aW9uUmVzdWx0LFxuICBCYXRjaEV2YWx1YXRpb25TdW1tYXJ5LFxufSBmcm9tICcuL2FwaS9xdWFsaXR5LW1ldHJpY3MnO1xuXG4vLyBSZS1leHBvcnQgQnVzaW5lc3MgTWV0cmljcyB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBNZXRyaWNUcmVuZCxcbiAgTWV0cmljU3RhdHVzLFxuICBDdXJyZW50TWV0cmljUmVzcG9uc2UsXG4gIE1ldHJpY0hpc3RvcnlQb2ludCxcbiAgTWV0cmljSGlzdG9yeVN1bW1hcnksXG4gIE1ldHJpY0hpc3RvcnlSZXNwb25zZSxcbiAgUmVjb3JkTWV0cmljT3B0aW9ucyxcbiAgUmVjb3JkTWV0cmljUmVzcG9uc2UsXG59IGZyb20gJy4vYXBpL2J1c2luZXNzLW1ldHJpY3MnO1xuXG4vLyBSZS1leHBvcnQgQWdlbnQgdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdlbnQsXG4gIENyZWF0ZUFnZW50T3B0aW9ucyxcbiAgVXBkYXRlQWdlbnRPcHRpb25zLFxuICBBZ2VudENvbmZpZyxcbiAgVXBkYXRlQWdlbnRDb25maWdPcHRpb25zLFxuICBEZWxldGVBZ2VudE9wdGlvbnMsXG4gIENhc2NhZGVJbXBhY3QsXG59IGZyb20gJy4vYXBpL2FnZW50cyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdMT0JBTCBTVEFURVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5sZXQgdHJhY2VyOiBSZXR1cm5UeXBlPHR5cGVvZiB0cmFjZS5nZXRUcmFjZXI+IHwgbnVsbCA9IG51bGw7XG5sZXQgcHJvdmlkZXI6IE5vZGVUcmFjZXJQcm92aWRlciB8IG51bGwgPSBudWxsO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTklUSUFMSVpBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEluaXRpYWxpemUgVGhpbmtIaXZlIFNESyB2M1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBpbml0IH0gZnJvbSAnQHRoaW5raGl2ZS9zZGsnO1xuICpcbiAqIGluaXQoe1xuICogICBhcGlLZXk6ICd0aF95b3VyX2FwaV9rZXknLFxuICogICBzZXJ2aWNlTmFtZTogJ215LWFpLWFnZW50JyxcbiAqICAgYXV0b0luc3RydW1lbnQ6IHRydWUsXG4gKiAgIGZyYW1ld29ya3M6IFsnbGFuZ2NoYWluJywgJ29wZW5haSddLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXQob3B0aW9uczogaW1wb3J0KCcuL2NvcmUvdHlwZXMnKS5Jbml0T3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIGlmIChpc0luaXRpYWxpemVkKCkpIHtcbiAgICBkZWJ1Z0xvZygnVGhpbmtIaXZlIFNESyBhbHJlYWR5IGluaXRpYWxpemVkJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29uZmlnID0gaW5pdENvbmZpZyhvcHRpb25zKTtcblxuICAvLyBDb25maWd1cmUgT1RMUCBleHBvcnRlclxuICBjb25zdCBleHBvcnRlckhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgaWYgKGNvbmZpZy5hcGlLZXkpIHtcbiAgICBleHBvcnRlckhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHtjb25maWcuYXBpS2V5fWA7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09UTFAgdHJhY2luZyByZXF1aXJlcyBhbiBBUEkga2V5LiBBZ2VudCBJRCBhbG9uZSBpcyBub3Qgc3VmZmljaWVudCBmb3IgT1RMUCBpbmdlc3Rpb24uICcgK1xuICAgICAgJ1Byb3ZpZGUgYXBpS2V5IGluIGluaXQoKSBvciBzZXQgdGhlIFRISU5LSElWRV9BUElfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlLidcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZXhwb3J0ZXIgPSBuZXcgT1RMUFRyYWNlRXhwb3J0ZXIoe1xuICAgIHVybDogY29uZmlnLmVuZHBvaW50LFxuICAgIGhlYWRlcnM6IGV4cG9ydGVySGVhZGVycyxcbiAgfSk7XG5cbiAgLy8gQ3JlYXRlIE9wZW5UZWxlbWV0cnkgcmVzb3VyY2VcbiAgY29uc3QgcmVzb3VyY2UgPSBSZXNvdXJjZS5kZWZhdWx0KCkubWVyZ2UoXG4gICAgbmV3IFJlc291cmNlKHtcbiAgICAgICdzZXJ2aWNlLm5hbWUnOiBjb25maWcuc2VydmljZU5hbWUsXG4gICAgICAndGhpbmtoaXZlLnNkay52ZXJzaW9uJzogU0RLX1ZFUlNJT04sXG4gICAgICAndGhpbmtoaXZlLnNkay5sYW5ndWFnZSc6ICd0eXBlc2NyaXB0JyxcbiAgICB9KVxuICApO1xuXG4gIC8vIENyZWF0ZSBwcm92aWRlciB3aXRoIHNwYW4gcHJvY2Vzc29yXG4gIHByb3ZpZGVyID0gbmV3IE5vZGVUcmFjZXJQcm92aWRlcih7XG4gICAgcmVzb3VyY2UsXG4gICAgc3BhblByb2Nlc3NvcnM6IFtuZXcgQmF0Y2hTcGFuUHJvY2Vzc29yKGV4cG9ydGVyKV0sXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIHByb3ZpZGVyXG4gIHByb3ZpZGVyLnJlZ2lzdGVyKCk7XG5cbiAgLy8gR2V0IHRyYWNlclxuICB0cmFjZXIgPSB0cmFjZS5nZXRUcmFjZXIoJ3RoaW5raGl2ZScsIFNES19WRVJTSU9OKTtcblxuICBpZiAoY29uZmlnLmRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYOKchSBUaGlua0hpdmUgU0RLIHYke1NES19WRVJTSU9OfSBpbml0aWFsaXplZGApO1xuICAgIGNvbnNvbGUubG9nKGAgICBFbmRwb2ludDogJHtjb25maWcuZW5kcG9pbnR9YCk7XG4gICAgY29uc29sZS5sb2coYCAgIFNlcnZpY2U6ICR7Y29uZmlnLnNlcnZpY2VOYW1lfWApO1xuICAgIGNvbnNvbGUubG9nKGAgICBBdXRvLWluc3RydW1lbnQ6ICR7Y29uZmlnLmF1dG9JbnN0cnVtZW50fWApO1xuICB9XG5cbiAgLy8gU2V0dXAgYXV0by1pbnN0cnVtZW50YXRpb24gaWYgZW5hYmxlZFxuICBpZiAoY29uZmlnLmF1dG9JbnN0cnVtZW50KSB7XG4gICAgc2V0dXBBdXRvSW5zdHJ1bWVudGF0aW9uKGNvbmZpZy5mcmFtZXdvcmtzKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgZ2xvYmFsIHRyYWNlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhY2VyKCkge1xuICBpZiAoIXRyYWNlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhpbmtIaXZlIFNESyBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCgpIGZpcnN0LicpO1xuICB9XG4gIHJldHVybiB0cmFjZXI7XG59XG5cbi8qKlxuICogU2h1dGRvd24gdGhlIFNESyBhbmQgZmx1c2ggcGVuZGluZyBzcGFuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChwcm92aWRlcikge1xuICAgIGF3YWl0IHByb3ZpZGVyLnNodXRkb3duKCk7XG4gICAgcHJvdmlkZXIgPSBudWxsO1xuICB9XG4gIHRyYWNlciA9IG51bGw7XG4gIHJlc2V0Q29uZmlnKCk7XG4gIGRlYnVnTG9nKCdUaGlua0hpdmUgU0RLIHNodXRkb3duIGNvbXBsZXRlJyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRSQUNJTkcgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVHJhY2UgYW4gTExNIGNhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlTExNPFQ+KFxuICBvcHRpb25zOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG1vZGVsTmFtZT86IHN0cmluZztcbiAgICBwcm92aWRlcj86IHN0cmluZztcbiAgICBpbnB1dD86IHVua25vd247XG4gIH0sXG4gIGZuOiAoKSA9PiBQcm9taXNlPFQ+XG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgdCA9IGdldFRyYWNlcigpO1xuXG4gIHJldHVybiB0LnN0YXJ0QWN0aXZlU3BhbihcbiAgICBvcHRpb25zLm5hbWUsXG4gICAge1xuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAnb3BlbmluZmVyZW5jZS5zcGFuLmtpbmQnOiAnTExNJyxcbiAgICAgICAgJ2xsbS5tb2RlbF9uYW1lJzogb3B0aW9ucy5tb2RlbE5hbWUsXG4gICAgICAgICdsbG0ucHJvdmlkZXInOiBvcHRpb25zLnByb3ZpZGVyLFxuICAgICAgICAnaW5wdXQudmFsdWUnOiBvcHRpb25zLmlucHV0ID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5pbnB1dCkuc3Vic3RyaW5nKDAsIDEwMDAwKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhc3luYyAoc3BhbikgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKCk7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdvdXRwdXQudmFsdWUnLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpLnN1YnN0cmluZygwLCAxMDAwMCkpO1xuICAgICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IFNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBTcGFuU3RhdHVzQ29kZS5FUlJPUiwgbWVzc2FnZSB9KTtcbiAgICAgICAgc3Bhbi5yZWNvcmRFeGNlcHRpb24oZXJyb3IgYXMgRXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdkdXJhdGlvbl9tcycsIERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBUcmFjZSBhIHJldHJpZXZhbCBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlUmV0cmlldmFsPFQ+KFxuICBvcHRpb25zOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICAgIHRvcEs/OiBudW1iZXI7XG4gIH0sXG4gIGZuOiAoKSA9PiBQcm9taXNlPFQ+XG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgdCA9IGdldFRyYWNlcigpO1xuXG4gIHJldHVybiB0LnN0YXJ0QWN0aXZlU3BhbihcbiAgICBvcHRpb25zLm5hbWUsXG4gICAge1xuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAnb3BlbmluZmVyZW5jZS5zcGFuLmtpbmQnOiAnUkVUUklFVkVSJyxcbiAgICAgICAgJ3JldHJpZXZhbC5xdWVyeSc6IG9wdGlvbnMucXVlcnksXG4gICAgICAgICdyZXRyaWV2YWwudG9wX2snOiBvcHRpb25zLnRvcEssXG4gICAgICB9LFxuICAgIH0sXG4gICAgYXN5bmMgKHNwYW4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbigpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ3JldHJpZXZhbC5kb2N1bWVudF9jb3VudCcsIHJlc3VsdC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLCBtZXNzYWdlIH0pO1xuICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvciBhcyBFcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2R1cmF0aW9uX21zJywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIFRyYWNlIGEgdG9vbCBjYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRvb2w8VD4oXG4gIG9wdGlvbnM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdG9vbE5hbWU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9LFxuICBmbjogKCkgPT4gUHJvbWlzZTxUPlxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHQgPSBnZXRUcmFjZXIoKTtcblxuICByZXR1cm4gdC5zdGFydEFjdGl2ZVNwYW4oXG4gICAgb3B0aW9ucy50b29sTmFtZSB8fCBvcHRpb25zLm5hbWUsXG4gICAge1xuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAnb3BlbmluZmVyZW5jZS5zcGFuLmtpbmQnOiAnVE9PTCcsXG4gICAgICAgICd0b29sLm5hbWUnOiBvcHRpb25zLnRvb2xOYW1lIHx8IG9wdGlvbnMubmFtZSxcbiAgICAgICAgJ3Rvb2wucGFyYW1ldGVycyc6IG9wdGlvbnMucGFyYW1ldGVycyA/IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGFyYW1ldGVycykgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0sXG4gICAgYXN5bmMgKHNwYW4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbigpO1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgndG9vbC5vdXRwdXQnLCBKU09OLnN0cmluZ2lmeShyZXN1bHQpLnN1YnN0cmluZygwLCAxMDAwMCkpO1xuICAgICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IFNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBTcGFuU3RhdHVzQ29kZS5FUlJPUiwgbWVzc2FnZSB9KTtcbiAgICAgICAgc3Bhbi5yZWNvcmRFeGNlcHRpb24oZXJyb3IgYXMgRXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCdkdXJhdGlvbl9tcycsIERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cblxuLyoqXG4gKiBUcmFjZSBhIGNoYWluL3dvcmtmbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZUNoYWluPFQ+KFxuICBvcHRpb25zOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlucHV0PzogdW5rbm93bjtcbiAgfSxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCB0ID0gZ2V0VHJhY2VyKCk7XG5cbiAgcmV0dXJuIHQuc3RhcnRBY3RpdmVTcGFuKFxuICAgIG9wdGlvbnMubmFtZSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICdvcGVuaW5mZXJlbmNlLnNwYW4ua2luZCc6ICdDSEFJTicsXG4gICAgICAgICdpbnB1dC52YWx1ZSc6IG9wdGlvbnMuaW5wdXQgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zLmlucHV0KS5zdWJzdHJpbmcoMCwgMTAwMDApIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ291dHB1dC52YWx1ZScsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkuc3Vic3RyaW5nKDAsIDEwMDAwKSk7XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLCBtZXNzYWdlIH0pO1xuICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvciBhcyBFcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2R1cmF0aW9uX21zJywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWMiBURVJNSU5PTE9HWSAtIElTU1VFUyBBUEkgKHJlcGxhY2VzIENhc2VzKVxuLy8gUGVyIElUSUwgYmVzdCBwcmFjdGljZXMsIFwiSXNzdWVzXCIgaXMgbW9yZSBjdXN0b21lci1mcmllbmRseSB0aGFuIFwiQ2FzZXNcIlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIElzc3VlcyBBUEkgY2xpZW50XG4gKiBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBBUEkgZm9yIG1hbmFnaW5nIGNsdXN0ZXJlZCBmYWlsdXJlIHBhdHRlcm5zXG4gKlxuICogQHNpbmNlIDMuMS4wXG4gKi9cbmV4cG9ydCBjb25zdCBpc3N1ZXMgPSB7XG4gIC8qKlxuICAgKiBMaXN0IGlzc3VlcyBmb3IgYW4gYWdlbnRcbiAgICovXG4gIGFzeW5jIGxpc3QoYWdlbnRJZDogc3RyaW5nLCBvcHRpb25zPzoge1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBzdGFydERhdGU/OiBEYXRlO1xuICAgIGVuZERhdGU/OiBEYXRlO1xuICAgIGxpbWl0PzogbnVtYmVyO1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgfSk6IFByb21pc2U8YW55W10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgYWdlbnRJZCB9KTtcbiAgICBpZiAob3B0aW9ucz8uc3RhdHVzKSBwYXJhbXMuc2V0KCdzdGF0dXMnLCBvcHRpb25zLnN0YXR1cyk7XG4gICAgaWYgKG9wdGlvbnM/LnN0YXJ0RGF0ZSkgcGFyYW1zLnNldCgnc3RhcnREYXRlJywgb3B0aW9ucy5zdGFydERhdGUudG9JU09TdHJpbmcoKSk7XG4gICAgaWYgKG9wdGlvbnM/LmVuZERhdGUpIHBhcmFtcy5zZXQoJ2VuZERhdGUnLCBvcHRpb25zLmVuZERhdGUudG9JU09TdHJpbmcoKSk7XG4gICAgaWYgKG9wdGlvbnM/LmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIG9wdGlvbnMubGltaXQudG9TdHJpbmcoKSk7XG4gICAgaWYgKG9wdGlvbnM/Lm9mZnNldCkgcGFyYW1zLnNldCgnb2Zmc2V0Jywgb3B0aW9ucy5vZmZzZXQudG9TdHJpbmcoKSk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YShgL2lzc3Vlcz8ke3BhcmFtc31gLCB7IGFwaVZlcnNpb246ICd2MicgfSk7XG4gICAgcmV0dXJuIChyZXNwb25zZSBhcyBhbnkpLmRhdGEgfHwgcmVzcG9uc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhIHNpbmdsZSBpc3N1ZSBieSBJRFxuICAgKi9cbiAgYXN5bmMgZ2V0KGlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKGAvaXNzdWVzLyR7aWR9YCwgeyBhcGlWZXJzaW9uOiAndjInIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgaXNzdWVcbiAgICovXG4gIGFzeW5jIGNyZWF0ZShkYXRhOiB7XG4gICAgYWdlbnRJZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHNldmVyaXR5Pzogc3RyaW5nO1xuICAgIHBhdHRlcm4/OiBzdHJpbmc7XG4gICAgZXhhbXBsZVRyYWNlSWRzPzogc3RyaW5nW107XG4gIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKCcvaXNzdWVzJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgICB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGlzc3VlXG4gICAqL1xuICBhc3luYyB1cGRhdGUoaWQ6IHN0cmluZywgZGF0YToge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBzZXZlcml0eT86IHN0cmluZztcbiAgICBhc3NpZ25lZFRvPzogc3RyaW5nO1xuICAgIHJlc29sdXRpb25Ob3Rlcz86IHN0cmluZztcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoYC9pc3N1ZXMvJHtpZH1gLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgICB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGZpeGVzIGZvciBhbiBpc3N1ZVxuICAgKi9cbiAgYXN5bmMgZ2V0Rml4ZXMoaXNzdWVJZDogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKGAvaXNzdWVzLyR7aXNzdWVJZH0vZml4ZXNgLCB7IGFwaVZlcnNpb246ICd2MicgfSk7XG4gICAgcmV0dXJuIChyZXNwb25zZSBhcyBhbnkpLmRhdGEgfHwgcmVzcG9uc2U7XG4gIH0sXG59O1xuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFYyIFRFUk1JTk9MT0dZIC0gQU5BTFlaRVIgQVBJIChyZXBsYWNlcyBFeHBsYWluZXIgdXNlci1mYWNpbmcpXG4vLyBQZXIgaW5kdXN0cnkgZGlzdGluY3Rpb246IEFuYWx5emVyID0gcGF0dGVybiBkZXRlY3Rpb24vb2JzZXJ2YXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBbmFseXplciBBUEkgY2xpZW50XG4gKiBVc2VyLXNlbGVjdGVkIHRyYWNlIGFuYWx5c2lzIHdpdGggY29zdCBlc3RpbWF0aW9uIGFuZCBzbWFydCBzYW1wbGluZ1xuICpcbiAqIEtleSBpbXByb3ZlbWVudHMgb3ZlciB2MSBFeHBsYWluZXI6XG4gKiAtIFVzZXItc2VsZWN0ZWQgdHJhY2UgYW5hbHlzaXMgKG5vdCBhdXRvbWF0aWMpXG4gKiAtIENvc3QgZXN0aW1hdGlvbiBiZWZvcmUgZXhlY3V0aW9uXG4gKiAtIFNtYXJ0IHNhbXBsaW5nIHN0cmF0ZWdpZXNcbiAqIC0gUm9vdCBjYXVzZSBhbmFseXNpcyBieSBsYXllclxuICogLSBQYXR0ZXJuIGFnZ3JlZ2F0aW9uIGFjcm9zcyB0cmFjZXNcbiAqXG4gKiBAc2luY2UgMy4xLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGFuYWx5emVyID0ge1xuICAvKipcbiAgICogQW5hbHl6ZSBzcGVjaWZpYyB0cmFjZXMgKHVzZXItc2VsZWN0ZWQpXG4gICAqL1xuICBhc3luYyBhbmFseXplKG9wdGlvbnM6IHtcbiAgICB0cmFjZUlkczogc3RyaW5nW107XG4gICAgdGllcj86ICdmYXN0JyB8ICdzdGFuZGFyZCcgfCAnZGVlcCc7XG4gICAgaW5jbHVkZVJvb3RDYXVzZT86IGJvb2xlYW47XG4gICAgaW5jbHVkZUxheWVycz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHsgdHJhY2VJZHMsIHRpZXIsIGluY2x1ZGVSb290Q2F1c2UsIGluY2x1ZGVMYXllcnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoJy9hbmFseXplci9hbmFseXplJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHRyYWNlSWRzLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdGllcixcbiAgICAgICAgICBpbmNsdWRlUm9vdENhdXNlLFxuICAgICAgICAgIGluY2x1ZGVMYXllcnMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgICB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogQW5hbHl6ZSB0cmFjZXMgYnkgdGltZSB3aW5kb3dcbiAgICovXG4gIGFzeW5jIGFuYWx5emVXaW5kb3cob3B0aW9uczoge1xuICAgIGFnZW50SWQ6IHN0cmluZztcbiAgICBzdGFydERhdGU6IERhdGU7XG4gICAgZW5kRGF0ZTogRGF0ZTtcbiAgICBmaWx0ZXJzPzoge1xuICAgICAgb3V0Y29tZXM/OiAoJ2ZhaWx1cmUnIHwgJ2Vycm9yJyB8ICdzdWNjZXNzJylbXTtcbiAgICAgIG1pblNldmVyaXR5PzogJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICdjcml0aWNhbCc7XG4gICAgfTtcbiAgICBzYW1wbGluZz86IHtcbiAgICAgIHN0cmF0ZWd5OiAnYWxsJyB8ICdmYWlsdXJlc19vbmx5JyB8ICdzbWFydCcgfCAncmFuZG9tJztcbiAgICAgIHNhbXBsZVBlcmNlbnQ/OiBudW1iZXI7XG4gICAgfTtcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoJy9hbmFseXplci9hbmFseXplLXdpbmRvdycsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzdGFydERhdGU6IG9wdGlvbnMuc3RhcnREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGVuZERhdGU6IG9wdGlvbnMuZW5kRGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGFwaVZlcnNpb246ICd2MicsXG4gICAgfSk7XG4gICAgcmV0dXJuIChyZXNwb25zZSBhcyBhbnkpLmRhdGEgfHwgcmVzcG9uc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEVzdGltYXRlIGNvc3QgYmVmb3JlIHJ1bm5pbmcgYW5hbHlzaXNcbiAgICovXG4gIGFzeW5jIGVzdGltYXRlQ29zdChvcHRpb25zOiB7XG4gICAgdHJhY2VJZHM/OiBzdHJpbmdbXTtcbiAgICBhZ2VudElkPzogc3RyaW5nO1xuICAgIHN0YXJ0RGF0ZT86IERhdGU7XG4gICAgZW5kRGF0ZT86IERhdGU7XG4gICAgdGllcjogJ2Zhc3QnIHwgJ3N0YW5kYXJkJyB8ICdkZWVwJztcbiAgfSk6IFByb21pc2U8e1xuICAgIGVzdGltYXRlZFRyYWNlczogbnVtYmVyO1xuICAgIGVzdGltYXRlZFRva2VuczogbnVtYmVyO1xuICAgIGVzdGltYXRlZENvc3Q6IG51bWJlcjtcbiAgICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG4gICAgdGllcjogc3RyaW5nO1xuICAgIG5vdGU6IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKCcvYW5hbHl6ZXIvZXN0aW1hdGUtY29zdCcsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keToge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBzdGFydERhdGU6IG9wdGlvbnMuc3RhcnREYXRlPy50b0lTT1N0cmluZygpLFxuICAgICAgICBlbmREYXRlOiBvcHRpb25zLmVuZERhdGU/LnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgICB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGFuYWx5c2lzIHJlc3VsdHMgZm9yIGEgc3BlY2lmaWMgdHJhY2VcbiAgICovXG4gIGFzeW5jIGdldCh0cmFjZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKGAvYW5hbHl6ZXIvJHt0cmFjZUlkfWAsIHsgYXBpVmVyc2lvbjogJ3YyJyB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogQWdncmVnYXRlIGluc2lnaHRzIGFjcm9zcyBtdWx0aXBsZSBhbmFseXplZCB0cmFjZXNcbiAgICovXG4gIGFzeW5jIHN1bW1hcml6ZShvcHRpb25zOiB7XG4gICAgYW5hbHlzaXNJZHM/OiBzdHJpbmdbXTtcbiAgICBhZ2VudElkPzogc3RyaW5nO1xuICAgIHN0YXJ0RGF0ZT86IERhdGU7XG4gICAgZW5kRGF0ZT86IERhdGU7XG4gIH0pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKCcvYW5hbHl6ZXIvc3VtbWFyaXplJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHN0YXJ0RGF0ZTogb3B0aW9ucy5zdGFydERhdGU/LnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGVuZERhdGU6IG9wdGlvbnMuZW5kRGF0ZT8udG9JU09TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBhcGlWZXJzaW9uOiAndjInLFxuICAgIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxufTtcblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBVVRPLUlOU1RSVU1FTlRBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBzZXR1cEF1dG9JbnN0cnVtZW50YXRpb24oXG4gIGZyYW1ld29ya3M6IGltcG9ydCgnLi9jb3JlL3R5cGVzJykuRnJhbWV3b3JrW11cbik6IHZvaWQge1xuICBkZWJ1Z0xvZyhgU2V0dGluZyB1cCBhdXRvLWluc3RydW1lbnRhdGlvbiBmb3I6ICR7ZnJhbWV3b3Jrcy5qb2luKCcsICcpfWApO1xuXG4gIGZvciAoY29uc3QgZnJhbWV3b3JrIG9mIGZyYW1ld29ya3MpIHtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoIChmcmFtZXdvcmspIHtcbiAgICAgICAgY2FzZSAnb3BlbmFpJzpcbiAgICAgICAgY2FzZSAnb3BlbmFpLWFzc2lzdGFudHMnOlxuICAgICAgICAgIGRlYnVnTG9nKCdPcGVuQUkgaW5zdHJ1bWVudGF0aW9uIHJlYWR5ICh1c2UgaW5zdHJ1bWVudE9wZW5BSUNsaWVudCknKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGFuZ2NoYWluJzpcbiAgICAgICAgY2FzZSAnbGFuZ2dyYXBoJzpcbiAgICAgICAgICBkZWJ1Z0xvZygnTGFuZ0NoYWluL0xhbmdHcmFwaCBpbnN0cnVtZW50YXRpb24gcmVhZHkgKHVzZSBUaGlua0hpdmVDYWxsYmFja0hhbmRsZXIpJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2FudGhyb3BpYyc6XG4gICAgICAgICAgZGVidWdMb2coJ0FudGhyb3BpYyBpbnN0cnVtZW50YXRpb24gcmVhZHknKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGxhbWFpbmRleCc6XG4gICAgICAgICAgZGVidWdMb2coJ0xsYW1hSW5kZXggaW5zdHJ1bWVudGF0aW9uIHJlYWR5Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ244bic6XG4gICAgICAgICAgZGVidWdMb2coJ244biBpbnN0cnVtZW50YXRpb24gcmVhZHknKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndm9pY2VmbG93JzpcbiAgICAgICAgICBkZWJ1Z0xvZygnVm9pY2VmbG93IGluc3RydW1lbnRhdGlvbiByZWFkeScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkZWJ1Z0xvZyhgRmFpbGVkIHRvIHNldHVwICR7ZnJhbWV3b3JrfSBpbnN0cnVtZW50YXRpb246YCwgZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRS1FWFBPUlRTIChub24tZHVwbGljYXRlZClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmUtZXhwb3J0IGZyb20gY29uZmlnIChub3QgeWV0IGV4cG9ydGVkKVxuZXhwb3J0IHsgaXNJbml0aWFsaXplZCwgU0RLX1ZFUlNJT04sIERFRkFVTFRfRU5EUE9JTlQgfTtcblxuLy8gUmUtZXhwb3J0IEFQSSBjbGllbnRzICh2MylcbmV4cG9ydCB7XG4gIHJ1bnMsXG4gIGNsYWltcyxcbiAgY2FsaWJyYXRpb24sXG4gIGxpbmtpbmcsXG4gIGN1c3RvbWVyQ29udGV4dCxcbiAgLy8gTmV3IGV2YWx1YXRpb24gQVBJc1xuICBodW1hblJldmlldyxcbiAgbm9uZGV0ZXJtaW5pc20sXG4gIGV2YWxIZWFsdGgsXG4gIGRldGVybWluaXN0aWNHcmFkZXJzLFxuICBjb252ZXJzYXRpb25FdmFsLFxuICB0cmFuc2NyaXB0UGF0dGVybnMsXG4gIC8vIEFQSSBLZXkgTWFuYWdlbWVudCAoUGhhc2UgMiBTZWN1cml0eSlcbiAgYXBpS2V5cyxcbiAgLy8gQWdlbnRzIE1hbmFnZW1lbnRcbiAgYWdlbnRzLFxuICAvLyBST0kgQW5hbHl0aWNzLCBRdWFsaXR5IE1ldHJpY3MsIGFuZCBCdXNpbmVzcyBNZXRyaWNzXG4gIHJvaUFuYWx5dGljcyxcbiAgcXVhbGl0eU1ldHJpY3MsXG4gIGJ1c2luZXNzTWV0cmljcyxcbn07XG5cbi8vIE5vdGU6IGlzc3VlcyBhbmQgYW5hbHl6ZXIgYXJlIGFscmVhZHkgZXhwb3J0ZWQgdmlhICdleHBvcnQgY29uc3QnIGFib3ZlXG5cbi8vIFJlLWV4cG9ydCBoZWxwZXIgZnVuY3Rpb25zXG5leHBvcnQge1xuICAvLyBSdW5zIGhlbHBlcnNcbiAgY3JlYXRlUnVuV2l0aENvbnRleHQsXG4gIHRvT3BlbkFJTWVzc2FnZXMsXG4gIGZyb21PcGVuQUlNZXNzYWdlcyxcbiAgLy8gQ2xhaW1zIGhlbHBlcnNcbiAgaXNGYWN0LFxuICBpc0luZmVyZW5jZSxcbiAgaXNDb21wdXRlZCxcbiAgZ2V0SGlnaENvbmZpZGVuY2VDbGFpbXMsXG4gIGdyb3VwQ2xhaW1zQnlUeXBlLFxuICBncm91cENsYWltc0J5Q2F0ZWdvcnksXG4gIC8vIENhbGlicmF0aW9uIGhlbHBlcnNcbiAgY2FsY3VsYXRlQnJpZXJTY29yZSxcbiAgY2FsY3VsYXRlRUNFLFxuICBpc1dlbGxDYWxpYnJhdGVkLFxuICBnZXRDYWxpYnJhdGlvblF1YWxpdHksXG4gIC8vIExpbmtpbmcgaGVscGVyc1xuICBnZW5lcmF0ZVplbmRlc2tNYXJrZXIsXG4gIHBhcnNlWmVuZGVza01hcmtlcixcbiAgaGFzWmVuZGVza01hcmtlcixcbiAgcmVtb3ZlWmVuZGVza01hcmtlcixcbiAgbGlua1J1blRvVGlja2V0LFxuICBsaW5rUnVuVG9aZW5kZXNrVGlja2V0LFxuICBnZXRCZXN0TGlua01ldGhvZCxcbiAgTElOS19NRVRIT0RfQ09ORklERU5DRSxcbiAgLy8gQ3VzdG9tZXIgY29udGV4dCBoZWxwZXJzXG4gIGNhcHR1cmVDdXN0b21lckNvbnRleHQsXG4gIGdldENvbnRleHRBc09mLFxuICB0b0NvbnRleHRTbmFwc2hvdCxcbiAgY2FsY3VsYXRlQXJyQ2hhbmdlLFxuICBjYWxjdWxhdGVIZWFsdGhUcmVuZCxcbiAgLy8gTm9uLWRldGVybWluaXNtIGhlbHBlcnNcbiAgY2FsY3VsYXRlUGFzc0F0SyxcbiAgY2FsY3VsYXRlUGFzc1RvSyxcbiAgcmVxdWlyZWRQYXNzUmF0ZUZvclBhc3NBdEssXG4gIGlzUmVsaWFibGVFdmFsdWF0aW9uLFxuICBnZXRSZWxpYWJpbGl0eVJlY29tbWVuZGF0aW9uLFxuICAvLyBFdmFsIGhlYWx0aCBoZWxwZXJzXG4gIGhhc0hlYWx0aElzc3VlLFxuICBnZXRIZWFsdGhTZXZlcml0eUxldmVsLFxuICBpc1NhdHVyYXRlZCxcbiAgZ2V0U2F0dXJhdGlvblJlY29tbWVuZGF0aW9uLFxuICAvLyBEZXRlcm1pbmlzdGljIGdyYWRlcnMgaGVscGVyc1xuICBjcmVhdGVSZWdleFJ1bGUsXG4gIGNyZWF0ZUNvbnRhaW5zUnVsZSxcbiAgY3JlYXRlTGVuZ3RoUnVsZSxcbiAgY3JlYXRlSnNvblNjaGVtYVJ1bGUsXG4gIGFsbFJ1bGVzUGFzc2VkLFxuICBnZXRGYWlsZWRSdWxlcyxcbiAgY2FsY3VsYXRlQXZlcmFnZVNjb3JlLFxuICAvLyBDb252ZXJzYXRpb24gZXZhbCBoZWxwZXJzXG4gIGFnZ3JlZ2F0ZVdvcnN0LFxuICBhZ2dyZWdhdGVBdmVyYWdlLFxuICBhZ2dyZWdhdGVXZWlnaHRlZCxcbiAgYWdncmVnYXRlRmluYWxUdXJuLFxuICBhZ2dyZWdhdGVNYWpvcml0eSxcbiAgZ2V0QWdncmVnYXRvcixcbiAgZ2V0UHJvYmxlbWF0aWNUdXJucyxcbiAgYW5hbHl6ZUNvbnZlcnNhdGlvblRyZW5kLFxuICAvLyBUcmFuc2NyaXB0IHBhdHRlcm5zIGhlbHBlcnNcbiAgaXNIaWdoUmlzayxcbiAgZ2V0TWF0Y2hlc0J5Q2F0ZWdvcnksXG4gIGdldENyaXRpY2FsSW5zaWdodHMsXG4gIGhhc1BpaUV4cG9zdXJlLFxuICBoYXNGcnVzdHJhdGlvblNpZ25hbHMsXG4gIGhhc0VzY2FsYXRpb25SZXF1ZXN0LFxuICBnZXRDYXRlZ29yeURpc3RyaWJ1dGlvbixcbiAgZ2V0UmVjb21tZW5kYXRpb25zLFxuICBuZWVkc0F0dGVudGlvbixcbiAgc29ydE1hdGNoZXNCeVNldmVyaXR5LFxuICAvLyBBUEkgS2V5IGhlbHBlcnNcbiAgaGFzUGVybWlzc2lvbixcbiAgaXNBcGlLZXlFeHBpcmVkLFxuICBpc0FwaUtleVZhbGlkLFxuICBnZXRUaW1lVW50aWxFeHBpcnksXG4gIGNhbkFjY2Vzc0FnZW50LFxuICAvLyBST0kgQW5hbHl0aWNzIGhlbHBlcnNcbiAgY2FsY3VsYXRlUmV2ZW51ZUF0UmlzayxcbiAgY2FsY3VsYXRlQXV0b21hdGlvblNhdmluZ3MsXG4gIGZvcm1hdEN1cnJlbmN5LFxuICBnZXRST0lRdWFsaXR5LFxuICAvLyBRdWFsaXR5IE1ldHJpY3MgaGVscGVyc1xuICBwYXNzZXNRdWFsaXR5VGhyZXNob2xkLFxuICBpc0hhbGx1Y2luYXRpb25SaXNrQWNjZXB0YWJsZSxcbiAgZ2V0UXVhbGl0eVJlY29tbWVuZGF0aW9ucyxcbiAgZm9ybWF0UXVhbGl0eVNjb3JlLFxuICBnZXRHcmFkZUNvbG9yLFxuICAvLyBCdXNpbmVzcyBNZXRyaWNzIGhlbHBlcnNcbiAgaXNNZXRyaWNSZWFkeSxcbiAgbmVlZHNNb3JlVHJhY2VzLFxuICBhd2FpdGluZ0V4dGVybmFsRGF0YSxcbiAgaXNNZXRyaWNTdGFsZSxcbiAgZ2V0U3RhdHVzTWVzc2FnZSxcbiAgZ2V0VHJhY2VQcm9ncmVzcyxcbiAgZm9ybWF0TWV0cmljVmFsdWUsXG4gIGdldFRyZW5kRW1vamksXG59O1xuXG4vLyBSZS1leHBvcnQgZXJyb3JzIChpbmNsdWRpbmcgbmV3IHNlY3VyaXR5IGVycm9ycylcbmV4cG9ydCB7XG4gIFRoaW5rSGl2ZUVycm9yLFxuICBUaGlua0hpdmVBcGlFcnJvcixcbiAgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yLFxuICBQZXJtaXNzaW9uRGVuaWVkRXJyb3IsXG4gIEFnZW50U2NvcGVFcnJvcixcbiAgUmF0ZUxpbWl0RXJyb3IsXG4gIElwV2hpdGVsaXN0RXJyb3IsXG59O1xuXG4vLyBEZWZhdWx0IGV4cG9ydCBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCBkZWZhdWx0IHtcbiAgaW5pdCxcbiAgZ2V0VHJhY2VyLFxuICBzaHV0ZG93bixcbiAgaXNJbml0aWFsaXplZCxcbiAgLy8gVHJhY2luZ1xuICB0cmFjZUxMTSxcbiAgdHJhY2VSZXRyaWV2YWwsXG4gIHRyYWNlVG9vbCxcbiAgdHJhY2VDaGFpbixcbiAgLy8gQVBJIGNsaWVudHNcbiAgcnVucyxcbiAgY2xhaW1zLFxuICBjYWxpYnJhdGlvbixcbiAgbGlua2luZyxcbiAgY3VzdG9tZXJDb250ZXh0LFxuICAvLyBFdmFsdWF0aW9uIEFQSXNcbiAgaHVtYW5SZXZpZXcsXG4gIG5vbmRldGVybWluaXNtLFxuICBldmFsSGVhbHRoLFxuICBkZXRlcm1pbmlzdGljR3JhZGVycyxcbiAgY29udmVyc2F0aW9uRXZhbCxcbiAgdHJhbnNjcmlwdFBhdHRlcm5zLFxuICAvLyBBUEkgS2V5IE1hbmFnZW1lbnQgKFBoYXNlIDIgU2VjdXJpdHkpXG4gIGFwaUtleXMsXG4gIC8vIEFnZW50cyBNYW5hZ2VtZW50XG4gIGFnZW50cyxcbiAgLy8gSXNzdWVzIGFuZCBBbmFseXplciBBUElzXG4gIGlzc3VlcyxcbiAgYW5hbHl6ZXIsXG4gIC8vIFJPSSBBbmFseXRpY3MsIFF1YWxpdHkgTWV0cmljcywgYW5kIEJ1c2luZXNzIE1ldHJpY3NcbiAgcm9pQW5hbHl0aWNzLFxuICBxdWFsaXR5TWV0cmljcyxcbiAgYnVzaW5lc3NNZXRyaWNzLFxuICAvLyBIZWxwZXJzXG4gIGdlbmVyYXRlWmVuZGVza01hcmtlcixcbiAgcGFyc2VaZW5kZXNrTWFya2VyLFxuICBsaW5rUnVuVG9UaWNrZXQsXG4gIGNyZWF0ZVJ1bldpdGhDb250ZXh0LFxuICAvLyBVdGlsaXRpZXNcbiAgaXNGYWN0LFxuICBpc0luZmVyZW5jZSxcbiAgY2FsY3VsYXRlQnJpZXJTY29yZSxcbiAgaXNXZWxsQ2FsaWJyYXRlZCxcbiAgY2FsY3VsYXRlUGFzc0F0SyxcbiAgaXNSZWxpYWJsZUV2YWx1YXRpb24sXG4gIGlzSGlnaFJpc2ssXG4gIG5lZWRzQXR0ZW50aW9uLFxuICAvLyBST0kgaGVscGVyc1xuICBjYWxjdWxhdGVSZXZlbnVlQXRSaXNrLFxuICBmb3JtYXRDdXJyZW5jeSxcbiAgLy8gUXVhbGl0eSBoZWxwZXJzXG4gIHBhc3Nlc1F1YWxpdHlUaHJlc2hvbGQsXG4gIGlzSGFsbHVjaW5hdGlvblJpc2tBY2NlcHRhYmxlLFxuICAvLyBCdXNpbmVzcyBNZXRyaWNzIGhlbHBlcnNcbiAgaXNNZXRyaWNSZWFkeSxcbiAgbmVlZHNNb3JlVHJhY2VzLFxuICBnZXRTdGF0dXNNZXNzYWdlLFxufTtcbiJdfQ==
|
|
636
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRzs7Ozs7QUF1Vkgsb0JBeURDO0FBS0QsOEJBS0M7QUFLRCw0QkFRQztBQVNELDRCQXVDQztBQUtELHdDQXVDQztBQUtELDhCQXFDQztBQUtELGdDQW1DQztBQW5sQkQsNENBQW9FO0FBQ3BFLHdGQUE2RTtBQUM3RSx3REFBb0Q7QUFDcEQsa0VBQW1FO0FBQ25FLGtFQUFtRTtBQUVuRSxPQUFPO0FBQ1AsMENBUXVCO0FBZzFCZCw4RkFyMUJQLHNCQUFhLE9BcTFCTztBQUFFLDRGQWwxQnRCLG9CQUFXLE9BazFCc0I7QUFBRSxpR0FqMUJuQyx5QkFBZ0IsT0FpMUJtQztBQS8wQnJELDBDQVN1QjtBQXc4QnJCLCtGQS84QkEsdUJBQWMsT0ErOEJBO0FBQ2Qsa0dBLzhCQSwwQkFBaUIsT0ErOEJBO0FBQ2pCLHlHQS84QkEsaUNBQXdCLE9BKzhCQTtBQUN4QixzR0EvOEJBLDhCQUFxQixPQSs4QkE7QUFDckIsZ0dBLzhCQSx3QkFBZSxPQSs4QkE7QUFDZiwrRkEvOEJBLHVCQUFjLE9BKzhCQTtBQUNkLGlHQS84QkEseUJBQWdCLE9BKzhCQTtBQTU4QmxCLGNBQWM7QUFDZCxxQ0FBOEY7QUF1MEI1RixxRkF2MEJPLFdBQUksT0F1MEJQO0FBMkJKLHFHQWwyQmEsMkJBQW9CLE9BazJCYjtBQUNwQixpR0FuMkJtQyx1QkFBZ0IsT0FtMkJuQztBQUNoQixtR0FwMkJxRCx5QkFBa0IsT0FvMkJyRDtBQW4yQnBCLHlDQVFzQjtBQSt6QnBCLHVGQXQwQkEsZUFBTSxPQXMwQkE7QUE4Qk4sdUZBbjJCQSxlQUFNLE9BbTJCQTtBQUNOLDRGQW4yQkEsb0JBQVcsT0FtMkJBO0FBQ1gsMkZBbjJCQSxtQkFBVSxPQW0yQkE7QUFDVix3R0FuMkJBLGdDQUF1QixPQW0yQkE7QUFDdkIsa0dBbjJCQSwwQkFBaUIsT0FtMkJBO0FBQ2pCLHNHQW4yQkEsOEJBQXFCLE9BbTJCQTtBQWoyQnZCLG1EQU0yQjtBQXl6QnpCLDRGQTl6QkEseUJBQVcsT0E4ekJBO0FBb0NYLG9HQWoyQkEsaUNBQW1CLE9BaTJCQTtBQUNuQiw2RkFqMkJBLDBCQUFZLE9BaTJCQTtBQUNaLGlHQWoyQkEsOEJBQWdCLE9BaTJCQTtBQUNoQixzR0FqMkJBLG1DQUFxQixPQWkyQkE7QUE5MUJ2QixzQkFBc0I7QUFDdEIscURBQWlEO0FBMHpCL0MsNEZBMXpCTywwQkFBVyxPQTB6QlA7QUF6ekJiLHlEQU84QjtBQW16QjVCLCtGQXp6QkEsK0JBQWMsT0F5ekJBO0FBbURkLGlHQTMyQkEsaUNBQWdCLE9BMjJCQTtBQUNoQixpR0EzMkJBLGlDQUFnQixPQTIyQkE7QUFDaEIsMkdBMzJCQSwyQ0FBMEIsT0EyMkJBO0FBQzFCLHFHQTMyQkEscUNBQW9CLE9BMjJCQTtBQUNwQiw2R0EzMkJBLDZDQUE0QixPQTIyQkE7QUF6MkI5QixtREFNMkI7QUE2eUJ6QiwyRkFsekJBLHdCQUFVLE9Ba3pCQTtBQXdEViwrRkF6MkJBLDRCQUFjLE9BeTJCQTtBQUNkLHVHQXoyQm9CLDhCQUFzQixPQXkyQnBCO0FBQ3RCLDRGQXoyQkEseUJBQVcsT0F5MkJBO0FBQ1gsNEdBejJCQSx5Q0FBMkIsT0F5MkJBO0FBdjJCN0IsdUVBU3FDO0FBb3lCbkMscUdBNXlCQSw0Q0FBb0IsT0E0eUJBO0FBNERwQixnR0F2MkJBLHVDQUFlLE9BdTJCQTtBQUNmLG1HQXYyQkEsMENBQWtCLE9BdTJCQTtBQUNsQixpR0F2MkJBLHdDQUFnQixPQXUyQkE7QUFDaEIscUdBdjJCQSw0Q0FBb0IsT0F1MkJBO0FBQ3BCLCtGQXYyQkEsc0NBQWMsT0F1MkJBO0FBQ2QsK0ZBdjJCQSxzQ0FBYyxPQXUyQkE7QUFDZCxzR0F2MkJBLDZDQUFxQixPQXUyQkE7QUFyMkJ2QiwrREFVaUM7QUEweEIvQixpR0FueUJBLG9DQUFnQixPQW15QkE7QUFtRWhCLCtGQXIyQkEsa0NBQWMsT0FxMkJBO0FBQ2QsaUdBcjJCQSxvQ0FBZ0IsT0FxMkJBO0FBQ2hCLGtHQXIyQkEscUNBQWlCLE9BcTJCQTtBQUNqQixtR0FyMkJBLHNDQUFrQixPQXEyQkE7QUFDbEIsa0dBcjJCQSxxQ0FBaUIsT0FxMkJBO0FBQ2pCLDhGQXIyQkEsaUNBQWEsT0FxMkJBO0FBQ2Isb0dBcjJCQSx1Q0FBbUIsT0FxMkJBO0FBQ25CLHlHQXIyQkEsNENBQXdCLE9BcTJCQTtBQW4yQjFCLG1FQVltQztBQTh3QmpDLG1HQXp4QkEsd0NBQWtCLE9BeXhCQTtBQTJFbEIsMkZBbjJCQSxnQ0FBVSxPQW0yQkE7QUFDVixxR0FuMkJBLDBDQUFvQixPQW0yQkE7QUFDcEIsb0dBbjJCQSx5Q0FBbUIsT0FtMkJBO0FBQ25CLCtGQW4yQkEsb0NBQWMsT0FtMkJBO0FBQ2Qsc0dBbjJCQSwyQ0FBcUIsT0FtMkJBO0FBQ3JCLHFHQW4yQkEsMENBQW9CLE9BbTJCQTtBQUNwQix3R0FuMkJBLDZDQUF1QixPQW0yQkE7QUFDdkIsbUdBbjJCQSx3Q0FBa0IsT0FtMkJBO0FBQ2xCLCtGQW4yQkEsb0NBQWMsT0FtMkJBO0FBQ2Qsc0dBbjJCQSwyQ0FBcUIsT0FtMkJBO0FBaDJCdkIsb0JBQW9CO0FBQ3BCLHlDQUVzQjtBQTZ3QnBCLHVGQTl3QkEsZUFBTSxPQTh3QkE7QUEzd0JSLHdDQUF3QztBQUN4QywyQ0FPdUI7QUFpd0JyQix3RkF2d0JBLGlCQUFPLE9BdXdCQTtBQW9GUCw4RkExMUJBLHVCQUFhLE9BMDFCQTtBQUNiLGdHQTExQmEsbUJBQWUsT0EwMUJiO0FBQ2YsOEZBMTFCVyxpQkFBYSxPQTAxQlg7QUFDYixtR0ExMUJBLDRCQUFrQixPQTAxQkE7QUFDbEIsK0ZBMTFCQSx3QkFBYyxPQTAxQkE7QUF2MUJoQixvQkFBb0I7QUFDcEIsdURBTTZCO0FBNHZCM0IsNkZBandCQSw0QkFBWSxPQWl3QkE7QUFzRlosdUdBdDFCQSxzQ0FBc0IsT0FzMUJBO0FBQ3RCLDJHQXQxQkEsMENBQTBCLE9BczFCQTtBQUMxQiwrRkF0MUJBLDhCQUFjLE9BczFCQTtBQUNkLDhGQXQxQkEsNkJBQWEsT0FzMUJBO0FBbjFCZix1QkFBdUI7QUFDdkIsNkRBVWdDO0FBaXZCOUIsZ0dBMXZCQSxrQ0FBZSxPQTB2QkE7QUErRmYsOEZBeDFCQSxnQ0FBYSxPQXcxQkE7QUFDYixnR0F4MUJBLGtDQUFlLE9BdzFCQTtBQUNmLHFHQXgxQkEsdUNBQW9CLE9BdzFCQTtBQUNwQiw4RkF4MUJBLGdDQUFhLE9BdzFCQTtBQUNiLGlHQXgxQkEsbUNBQWdCLE9BdzFCQTtBQUNoQixpR0F4MUJBLG1DQUFnQixPQXcxQkE7QUFDaEIsa0dBeDFCQSxvQ0FBaUIsT0F3MUJBO0FBQ2pCLDhGQXgxQkEsZ0NBQWEsT0F3MUJBO0FBcjFCZixzQkFBc0I7QUFDdEIsMkRBTytCO0FBc3VCN0IsK0ZBNXVCQSxnQ0FBYyxPQTR1QkE7QUEwRmQsdUdBcjBCQSx3Q0FBc0IsT0FxMEJBO0FBQ3RCLDhHQXIwQkEsK0NBQTZCLE9BcTBCQTtBQUM3QiwwR0FyMEJBLDJDQUF5QixPQXEwQkE7QUFDekIsbUdBcjBCQSxvQ0FBa0IsT0FxMEJBO0FBQ2xCLDhGQXIwQkEsK0JBQWEsT0FxMEJBO0FBbDBCZixlQUFlO0FBQ2Ysa0VBVXVDO0FBMHNCckMsd0ZBbnRCQSx3QkFBTyxPQW10QkE7QUF3Q1Asc0dBMXZCQSxzQ0FBcUIsT0EwdkJBO0FBQ3JCLG1HQTF2QkEsbUNBQWtCLE9BMHZCQTtBQUNsQixpR0ExdkJBLGlDQUFnQixPQTB2QkE7QUFDaEIsb0dBMXZCQSxvQ0FBbUIsT0EwdkJBO0FBQ25CLGdHQTF2QkEsZ0NBQWUsT0EwdkJBO0FBQ2YsdUdBMXZCQSx1Q0FBc0IsT0EwdkJBO0FBQ3RCLGtHQTF2QkEsa0NBQWlCLE9BMHZCQTtBQUNqQix1R0ExdkJBLHVDQUFzQixPQTB2QkE7QUF4dkJ4QixzRUFPeUM7QUFtc0J2QyxnR0F6c0JBLGtDQUFlLE9BeXNCQTtBQWdEZix1R0F4dkJBLHlDQUFzQixPQXd2QkE7QUFDdEIsK0ZBeHZCQSxpQ0FBYyxPQXd2QkE7QUFDZCxrR0F4dkJBLG9DQUFpQixPQXd2QkE7QUFDakIsbUdBeHZCQSxxQ0FBa0IsT0F3dkJBO0FBQ2xCLHFHQXh2QkEsdUNBQW9CLE9Bd3ZCQTtBQWhtQnRCLCtFQUErRTtBQUMvRSxlQUFlO0FBQ2YsK0VBQStFO0FBRS9FLElBQUksTUFBTSxHQUE4QyxJQUFJLENBQUM7QUFDN0QsSUFBSSxRQUFRLEdBQThCLElBQUksQ0FBQztBQUUvQywrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILFNBQWdCLElBQUksQ0FBQyxVQUE4QyxFQUFFO0lBQ25FLElBQUksSUFBQSxzQkFBYSxHQUFFLEVBQUUsQ0FBQztRQUNwQixJQUFBLGlCQUFRLEVBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUM5QyxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUEsbUJBQVUsRUFBQyxPQUFPLENBQUMsQ0FBQztJQUVuQywwQkFBMEI7SUFDMUIsTUFBTSxlQUFlLEdBQTJCLEVBQUUsQ0FBQztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixlQUFlLENBQUMsZUFBZSxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0QsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUNiLHlGQUF5RjtZQUN6Riw2RUFBNkUsQ0FDOUUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksNkNBQWlCLENBQUM7UUFDckMsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsZUFBZTtLQUN6QixDQUFDLENBQUM7SUFFSCxnQ0FBZ0M7SUFDaEMsTUFBTSxRQUFRLEdBQUcsb0JBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQ3ZDLElBQUksb0JBQVEsQ0FBQztRQUNYLGNBQWMsRUFBRSxNQUFNLENBQUMsV0FBVztRQUNsQyx1QkFBdUIsRUFBRSxvQkFBVztRQUNwQyx3QkFBd0IsRUFBRSxZQUFZO0tBQ3ZDLENBQUMsQ0FDSCxDQUFDO0lBRUYsc0NBQXNDO0lBQ3RDLFFBQVEsR0FBRyxJQUFJLG1DQUFrQixDQUFDO1FBQ2hDLFFBQVE7UUFDUixjQUFjLEVBQUUsQ0FBQyxJQUFJLG1DQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ25ELENBQUMsQ0FBQztJQUVILG9CQUFvQjtJQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFcEIsYUFBYTtJQUNiLE1BQU0sR0FBRyxXQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxvQkFBVyxDQUFDLENBQUM7SUFFbkQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0Isb0JBQVcsY0FBYyxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTO0lBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0ksS0FBSyxVQUFVLFFBQVE7SUFDNUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE1BQU0sUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDbEIsQ0FBQztJQUNELE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxJQUFBLG9CQUFXLEdBQUUsQ0FBQztJQUNkLElBQUEsaUJBQVEsRUFBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCwrRUFBK0U7QUFDL0Usb0JBQW9CO0FBQ3BCLCtFQUErRTtBQUUvRTs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsT0FLQyxFQUNELEVBQW9CO0lBRXBCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBRXRCLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FDdEIsT0FBTyxDQUFDLElBQUksRUFDWjtRQUNFLFVBQVUsRUFBRTtZQUNWLHlCQUF5QixFQUFFLEtBQUs7WUFDaEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDbkMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQ2hDLGFBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzdGO0tBQ0YsRUFDRCxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLG9CQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxvQkFBYyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBYyxDQUFDLENBQUM7WUFDckMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixPQUlDLEVBQ0QsRUFBb0I7SUFFcEIsTUFBTSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFFdEIsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUN0QixPQUFPLENBQUMsSUFBSSxFQUNaO1FBQ0UsVUFBVSxFQUFFO1lBQ1YseUJBQXlCLEVBQUUsV0FBVztZQUN0QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsS0FBSztZQUNoQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsSUFBSTtTQUNoQztLQUNGLEVBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLG9CQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxvQkFBYyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBYyxDQUFDLENBQUM7WUFDckMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsU0FBUyxDQUN2QixPQUlDLEVBQ0QsRUFBb0I7SUFFcEIsTUFBTSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFFdEIsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUN0QixPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQ2hDO1FBQ0UsVUFBVSxFQUFFO1lBQ1YseUJBQXlCLEVBQUUsTUFBTTtZQUNqQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSTtZQUM3QyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN2RjtLQUNGLEVBQ0QsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxvQkFBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sS0FBYyxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsb0JBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQWMsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFVBQVUsQ0FDeEIsT0FHQyxFQUNELEVBQW9CO0lBRXBCLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBRXRCLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FDdEIsT0FBTyxDQUFDLElBQUksRUFDWjtRQUNFLFVBQVUsRUFBRTtZQUNWLHlCQUF5QixFQUFFLE9BQU87WUFDbEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDN0Y7S0FDRixFQUNELEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUNiLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsb0JBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLG9CQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFjLENBQUMsQ0FBQztZQUNyQyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLCtDQUErQztBQUMvQywyRUFBMkU7QUFDM0UsK0VBQStFO0FBRS9FOzs7OztHQUtHO0FBQ1UsUUFBQSxNQUFNLEdBQUc7SUFDcEI7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQU0zQjtRQUNDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLE9BQU8sRUFBRSxNQUFNO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELElBQUksT0FBTyxFQUFFLFNBQVM7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakYsSUFBSSxPQUFPLEVBQUUsT0FBTztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLE9BQU8sRUFBRSxLQUFLO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksT0FBTyxFQUFFLE1BQU07WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFckUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDJCQUFrQixFQUFDLFdBQVcsTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRixPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQVU7UUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDJCQUFrQixFQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRixPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLElBUVo7UUFDQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQWtCLEVBQUMsU0FBUyxFQUFFO1lBQ25ELE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFDSCxPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQVUsRUFBRSxJQU94QjtRQUNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ3pELE1BQU0sRUFBRSxPQUFPO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFDSCxPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQWU7UUFDNUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDJCQUFrQixFQUFDLFdBQVcsT0FBTyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RixPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0NBQ0YsQ0FBQztBQUdGLCtFQUErRTtBQUMvRSxpRUFBaUU7QUFDakUscUVBQXFFO0FBQ3JFLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFDVSxRQUFBLFFBQVEsR0FBRztJQUN0Qjs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsT0FLYjtRQUNDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNwRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQWtCLEVBQUMsbUJBQW1CLEVBQUU7WUFDN0QsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUU7Z0JBQ0osUUFBUTtnQkFDUixPQUFPLEVBQUU7b0JBQ1AsSUFBSTtvQkFDSixnQkFBZ0I7b0JBQ2hCLGFBQWE7aUJBQ2Q7YUFDRjtZQUNELFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILE9BQVEsUUFBZ0IsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsT0FZbkI7UUFDQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQWtCLEVBQUMsMEJBQTBCLEVBQUU7WUFDcEUsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxPQUFPO2dCQUNWLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtnQkFDMUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO2FBQ3ZDO1lBQ0QsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsT0FBUSxRQUFnQixDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQU1sQjtRQVFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwyQkFBa0IsRUFBQyx5QkFBeUIsRUFBRTtZQUNuRSxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRTtnQkFDSixHQUFHLE9BQU87Z0JBQ1YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFO2dCQUMzQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUU7YUFDeEM7WUFDRCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFDSCxPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQWU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDJCQUFrQixFQUFDLGFBQWEsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RixPQUFRLFFBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BS2Y7UUFDQyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQWtCLEVBQUMscUJBQXFCLEVBQUU7WUFDL0QsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxPQUFPO2dCQUNWLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRTtnQkFDM0MsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFO2FBQ3hDO1lBQ0QsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsT0FBUSxRQUFnQixDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7SUFDNUMsQ0FBQztDQUNGLENBQUM7QUFHRiwrRUFBK0U7QUFDL0UsdUJBQXVCO0FBQ3ZCLCtFQUErRTtBQUUvRSxTQUFTLHdCQUF3QixDQUMvQixVQUE4QztJQUU5QyxJQUFBLGlCQUFRLEVBQUMsd0NBQXdDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTFFLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsUUFBUSxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxRQUFRLENBQUM7Z0JBQ2QsS0FBSyxtQkFBbUI7b0JBQ3RCLElBQUEsaUJBQVEsRUFBQywyREFBMkQsQ0FBQyxDQUFDO29CQUN0RSxNQUFNO2dCQUNSLEtBQUssV0FBVyxDQUFDO2dCQUNqQixLQUFLLFdBQVc7b0JBQ2QsSUFBQSxpQkFBUSxFQUFDLDBFQUEwRSxDQUFDLENBQUM7b0JBQ3JGLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLElBQUEsaUJBQVEsRUFBQyxpQ0FBaUMsQ0FBQyxDQUFDO29CQUM1QyxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixJQUFBLGlCQUFRLEVBQUMsa0NBQWtDLENBQUMsQ0FBQztvQkFDN0MsTUFBTTtnQkFDUixLQUFLLEtBQUs7b0JBQ1IsSUFBQSxpQkFBUSxFQUFDLDJCQUEyQixDQUFDLENBQUM7b0JBQ3RDLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLElBQUEsaUJBQVEsRUFBQyxpQ0FBaUMsQ0FBQyxDQUFDO29CQUM1QyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBQSxpQkFBUSxFQUFDLG1CQUFtQixTQUFTLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQWtKRCxpQ0FBaUM7QUFDakMsa0JBQWU7SUFDYixJQUFJO0lBQ0osU0FBUztJQUNULFFBQVE7SUFDUixhQUFhLEVBQWIsc0JBQWE7SUFDYixVQUFVO0lBQ1YsUUFBUTtJQUNSLGNBQWM7SUFDZCxTQUFTO0lBQ1QsVUFBVTtJQUNWLGNBQWM7SUFDZCxJQUFJLEVBQUosV0FBSTtJQUNKLE1BQU0sRUFBTixlQUFNO0lBQ04sV0FBVyxFQUFYLHlCQUFXO0lBQ1gsT0FBTyxFQUFQLHdCQUFPO0lBQ1AsZUFBZSxFQUFmLGtDQUFlO0lBQ2Ysa0JBQWtCO0lBQ2xCLFdBQVcsRUFBWCwwQkFBVztJQUNYLGNBQWMsRUFBZCwrQkFBYztJQUNkLFVBQVUsRUFBVix3QkFBVTtJQUNWLG9CQUFvQixFQUFwQiw0Q0FBb0I7SUFDcEIsZ0JBQWdCLEVBQWhCLG9DQUFnQjtJQUNoQixrQkFBa0IsRUFBbEIsd0NBQWtCO0lBQ2xCLHdDQUF3QztJQUN4QyxPQUFPLEVBQVAsaUJBQU87SUFDUCxvQkFBb0I7SUFDcEIsTUFBTSxFQUFOLGVBQU07SUFDTiwyQkFBMkI7SUFDM0IsTUFBTSxFQUFOLGNBQU07SUFDTixRQUFRLEVBQVIsZ0JBQVE7SUFDUix1REFBdUQ7SUFDdkQsWUFBWSxFQUFaLDRCQUFZO0lBQ1osY0FBYyxFQUFkLGdDQUFjO0lBQ2QsZUFBZSxFQUFmLGtDQUFlO0lBQ2YsVUFBVTtJQUNWLHFCQUFxQixFQUFyQixzQ0FBcUI7SUFDckIsa0JBQWtCLEVBQWxCLG1DQUFrQjtJQUNsQixlQUFlLEVBQWYsZ0NBQWU7SUFDZixvQkFBb0IsRUFBcEIsMkJBQW9CO0lBQ3BCLFlBQVk7SUFDWixNQUFNLEVBQU4sZUFBTTtJQUNOLFdBQVcsRUFBWCxvQkFBVztJQUNYLG1CQUFtQixFQUFuQixpQ0FBbUI7SUFDbkIsZ0JBQWdCLEVBQWhCLDhCQUFnQjtJQUNoQixnQkFBZ0IsRUFBaEIsaUNBQWdCO0lBQ2hCLG9CQUFvQixFQUFwQixxQ0FBb0I7SUFDcEIsVUFBVSxFQUFWLGdDQUFVO0lBQ1YsY0FBYyxFQUFkLG9DQUFjO0lBQ2QsY0FBYztJQUNkLHNCQUFzQixFQUF0QixzQ0FBc0I7SUFDdEIsY0FBYyxFQUFkLDhCQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUF0Qix3Q0FBc0I7SUFDdEIsNkJBQTZCLEVBQTdCLCtDQUE2QjtJQUM3QiwyQkFBMkI7SUFDM0IsYUFBYSxFQUFiLGdDQUFhO0lBQ2IsZUFBZSxFQUFmLGtDQUFlO0lBQ2YsZ0JBQWdCLEVBQWhCLG1DQUFnQjtDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHY0LjEuMFxuICpcbiAqIFJ1bi1jZW50cmljIEFJIGFnZW50IG9ic2VydmFiaWxpdHkgcGxhdGZvcm0gd2l0aDpcbiAqIC0gRmFjdHMgdnMgSW5mZXJlbmNlcyAoY2xhaW1zIEFQSSlcbiAqIC0gRGV0ZXJtaW5pc3RpYyB0aWNrZXQgbGlua2luZyAoNyBtZXRob2RzKVxuICogLSBDdXN0b21lciBjb250ZXh0IHNuYXBzaG90cyAodGltZS1zZXJpZXMpXG4gKiAtIENhbGlicmF0ZWQgcHJlZGljdGlvbnMgKEJyaWVyIHNjb3JlcylcbiAqIC0gQ29uZmlndXJhYmxlIFJPSSBjYWxjdWxhdGlvbiBlbmdpbmVcbiAqXG4gKiBAdmVyc2lvbiA0LjEuMFxuICogQGxpY2Vuc2UgTUlUXG4gKi9cblxuaW1wb3J0IHsgdHJhY2UsIGNvbnRleHQsIFNwYW5TdGF0dXNDb2RlIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB7IE9UTFBUcmFjZUV4cG9ydGVyIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItdHJhY2Utb3RscC1wcm90byc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L3Jlc291cmNlcyc7XG5pbXBvcnQgeyBOb2RlVHJhY2VyUHJvdmlkZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstdHJhY2Utbm9kZSc7XG5pbXBvcnQgeyBCYXRjaFNwYW5Qcm9jZXNzb3IgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstdHJhY2UtYmFzZSc7XG5cbi8vIENvcmVcbmltcG9ydCB7XG4gIGluaXRDb25maWcsXG4gIGdldENvbmZpZyxcbiAgaXNJbml0aWFsaXplZCxcbiAgcmVzZXRDb25maWcsXG4gIGRlYnVnTG9nLFxuICBTREtfVkVSU0lPTixcbiAgREVGQVVMVF9FTkRQT0lOVCxcbn0gZnJvbSAnLi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQge1xuICBhcGlSZXF1ZXN0V2l0aERhdGEsXG4gIFRoaW5rSGl2ZUVycm9yLFxuICBUaGlua0hpdmVBcGlFcnJvcixcbiAgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yLFxuICBQZXJtaXNzaW9uRGVuaWVkRXJyb3IsXG4gIEFnZW50U2NvcGVFcnJvcixcbiAgUmF0ZUxpbWl0RXJyb3IsXG4gIElwV2hpdGVsaXN0RXJyb3IsXG59IGZyb20gJy4vY29yZS9jbGllbnQnO1xuXG4vLyBBUEkgY2xpZW50c1xuaW1wb3J0IHsgcnVucywgY3JlYXRlUnVuV2l0aENvbnRleHQsIHRvT3BlbkFJTWVzc2FnZXMsIGZyb21PcGVuQUlNZXNzYWdlcyB9IGZyb20gJy4vYXBpL3J1bnMnO1xuaW1wb3J0IHtcbiAgY2xhaW1zLFxuICBpc0ZhY3QsXG4gIGlzSW5mZXJlbmNlLFxuICBpc0NvbXB1dGVkLFxuICBnZXRIaWdoQ29uZmlkZW5jZUNsYWltcyxcbiAgZ3JvdXBDbGFpbXNCeVR5cGUsXG4gIGdyb3VwQ2xhaW1zQnlDYXRlZ29yeSxcbn0gZnJvbSAnLi9hcGkvY2xhaW1zJztcbmltcG9ydCB7XG4gIGNhbGlicmF0aW9uLFxuICBjYWxjdWxhdGVCcmllclNjb3JlLFxuICBjYWxjdWxhdGVFQ0UsXG4gIGlzV2VsbENhbGlicmF0ZWQsXG4gIGdldENhbGlicmF0aW9uUXVhbGl0eSxcbn0gZnJvbSAnLi9hcGkvY2FsaWJyYXRpb24nO1xuXG4vLyBOZXcgRXZhbHVhdGlvbiBBUElzXG5pbXBvcnQgeyBodW1hblJldmlldyB9IGZyb20gJy4vYXBpL2h1bWFuLXJldmlldyc7XG5pbXBvcnQge1xuICBub25kZXRlcm1pbmlzbSxcbiAgY2FsY3VsYXRlUGFzc0F0SyxcbiAgY2FsY3VsYXRlUGFzc1RvSyxcbiAgcmVxdWlyZWRQYXNzUmF0ZUZvclBhc3NBdEssXG4gIGlzUmVsaWFibGVFdmFsdWF0aW9uLFxuICBnZXRSZWxpYWJpbGl0eVJlY29tbWVuZGF0aW9uLFxufSBmcm9tICcuL2FwaS9ub25kZXRlcm1pbmlzbSc7XG5pbXBvcnQge1xuICBldmFsSGVhbHRoLFxuICBoYXNIZWFsdGhJc3N1ZSxcbiAgZ2V0U2V2ZXJpdHlMZXZlbCBhcyBnZXRIZWFsdGhTZXZlcml0eUxldmVsLFxuICBpc1NhdHVyYXRlZCxcbiAgZ2V0U2F0dXJhdGlvblJlY29tbWVuZGF0aW9uLFxufSBmcm9tICcuL2FwaS9ldmFsLWhlYWx0aCc7XG5pbXBvcnQge1xuICBkZXRlcm1pbmlzdGljR3JhZGVycyxcbiAgY3JlYXRlUmVnZXhSdWxlLFxuICBjcmVhdGVDb250YWluc1J1bGUsXG4gIGNyZWF0ZUxlbmd0aFJ1bGUsXG4gIGNyZWF0ZUpzb25TY2hlbWFSdWxlLFxuICBhbGxSdWxlc1Bhc3NlZCxcbiAgZ2V0RmFpbGVkUnVsZXMsXG4gIGNhbGN1bGF0ZUF2ZXJhZ2VTY29yZSxcbn0gZnJvbSAnLi9hcGkvZGV0ZXJtaW5pc3RpYy1ncmFkZXJzJztcbmltcG9ydCB7XG4gIGNvbnZlcnNhdGlvbkV2YWwsXG4gIGFnZ3JlZ2F0ZVdvcnN0LFxuICBhZ2dyZWdhdGVBdmVyYWdlLFxuICBhZ2dyZWdhdGVXZWlnaHRlZCxcbiAgYWdncmVnYXRlRmluYWxUdXJuLFxuICBhZ2dyZWdhdGVNYWpvcml0eSxcbiAgZ2V0QWdncmVnYXRvcixcbiAgZ2V0UHJvYmxlbWF0aWNUdXJucyxcbiAgYW5hbHl6ZUNvbnZlcnNhdGlvblRyZW5kLFxufSBmcm9tICcuL2FwaS9jb252ZXJzYXRpb24tZXZhbCc7XG5pbXBvcnQge1xuICB0cmFuc2NyaXB0UGF0dGVybnMsXG4gIGlzSGlnaFJpc2ssXG4gIGdldE1hdGNoZXNCeUNhdGVnb3J5LFxuICBnZXRDcml0aWNhbEluc2lnaHRzLFxuICBoYXNQaWlFeHBvc3VyZSxcbiAgaGFzRnJ1c3RyYXRpb25TaWduYWxzLFxuICBoYXNFc2NhbGF0aW9uUmVxdWVzdCxcbiAgZ2V0Q2F0ZWdvcnlEaXN0cmlidXRpb24sXG4gIGdldFJlY29tbWVuZGF0aW9ucyxcbiAgbmVlZHNBdHRlbnRpb24sXG4gIHNvcnRNYXRjaGVzQnlTZXZlcml0eSxcbn0gZnJvbSAnLi9hcGkvdHJhbnNjcmlwdC1wYXR0ZXJucyc7XG5cbi8vIEFnZW50cyBNYW5hZ2VtZW50XG5pbXBvcnQge1xuICBhZ2VudHMsXG59IGZyb20gJy4vYXBpL2FnZW50cyc7XG5cbi8vIEFQSSBLZXkgTWFuYWdlbWVudCAoUGhhc2UgMiBTZWN1cml0eSlcbmltcG9ydCB7XG4gIGFwaUtleXMsXG4gIGhhc1Blcm1pc3Npb24sXG4gIGlzRXhwaXJlZCBhcyBpc0FwaUtleUV4cGlyZWQsXG4gIGlzVmFsaWQgYXMgaXNBcGlLZXlWYWxpZCxcbiAgZ2V0VGltZVVudGlsRXhwaXJ5LFxuICBjYW5BY2Nlc3NBZ2VudCxcbn0gZnJvbSAnLi9hcGkvYXBpS2V5cyc7XG5cbi8vIFJPSSBBbmFseXRpY3MgQVBJXG5pbXBvcnQge1xuICByb2lBbmFseXRpY3MsXG4gIGNhbGN1bGF0ZVJldmVudWVBdFJpc2ssXG4gIGNhbGN1bGF0ZUF1dG9tYXRpb25TYXZpbmdzLFxuICBmb3JtYXRDdXJyZW5jeSxcbiAgZ2V0Uk9JUXVhbGl0eSxcbn0gZnJvbSAnLi9hcGkvcm9pLWFuYWx5dGljcyc7XG5cbi8vIEJ1c2luZXNzIE1ldHJpY3MgQVBJXG5pbXBvcnQge1xuICBidXNpbmVzc01ldHJpY3MsXG4gIGlzTWV0cmljUmVhZHksXG4gIG5lZWRzTW9yZVRyYWNlcyxcbiAgYXdhaXRpbmdFeHRlcm5hbERhdGEsXG4gIGlzTWV0cmljU3RhbGUsXG4gIGdldFN0YXR1c01lc3NhZ2UsXG4gIGdldFRyYWNlUHJvZ3Jlc3MsXG4gIGZvcm1hdE1ldHJpY1ZhbHVlLFxuICBnZXRUcmVuZEVtb2ppLFxufSBmcm9tICcuL2FwaS9idXNpbmVzcy1tZXRyaWNzJztcblxuLy8gUXVhbGl0eSBNZXRyaWNzIEFQSVxuaW1wb3J0IHtcbiAgcXVhbGl0eU1ldHJpY3MsXG4gIHBhc3Nlc1F1YWxpdHlUaHJlc2hvbGQsXG4gIGlzSGFsbHVjaW5hdGlvblJpc2tBY2NlcHRhYmxlLFxuICBnZXRRdWFsaXR5UmVjb21tZW5kYXRpb25zLFxuICBmb3JtYXRRdWFsaXR5U2NvcmUsXG4gIGdldEdyYWRlQ29sb3IsXG59IGZyb20gJy4vYXBpL3F1YWxpdHktbWV0cmljcyc7XG5cbi8vIEludGVncmF0aW9uc1xuaW1wb3J0IHtcbiAgbGlua2luZyxcbiAgZ2VuZXJhdGVaZW5kZXNrTWFya2VyLFxuICBwYXJzZVplbmRlc2tNYXJrZXIsXG4gIGhhc1plbmRlc2tNYXJrZXIsXG4gIHJlbW92ZVplbmRlc2tNYXJrZXIsXG4gIGxpbmtSdW5Ub1RpY2tldCxcbiAgbGlua1J1blRvWmVuZGVza1RpY2tldCxcbiAgZ2V0QmVzdExpbmtNZXRob2QsXG4gIExJTktfTUVUSE9EX0NPTkZJREVOQ0UsXG59IGZyb20gJy4vaW50ZWdyYXRpb25zL3RpY2tldC1saW5raW5nJztcbmltcG9ydCB7XG4gIGN1c3RvbWVyQ29udGV4dCxcbiAgY2FwdHVyZUN1c3RvbWVyQ29udGV4dCxcbiAgZ2V0Q29udGV4dEFzT2YsXG4gIHRvQ29udGV4dFNuYXBzaG90LFxuICBjYWxjdWxhdGVBcnJDaGFuZ2UsXG4gIGNhbGN1bGF0ZUhlYWx0aFRyZW5kLFxufSBmcm9tICcuL2ludGVncmF0aW9ucy9jdXN0b21lci1jb250ZXh0JztcblxuLy8gUmUtZXhwb3J0IHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEluaXRPcHRpb25zLFxuICBGcmFtZXdvcmssXG4gIFJ1bk9wdGlvbnMsXG4gIFJ1bk91dGNvbWUsXG4gIENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIEN1c3RvbWVyQ29udGV4dFNuYXBzaG90LFxuICBUaWNrZXRMaW5raW5nT3B0aW9ucyxcbiAgTGlua01ldGhvZCxcbiAgVHJhY2VPcHRpb25zLFxuICBUcmFjZUN1c3RvbUZsYWcsXG4gIFNwYW5EYXRhLFxuICBCdXNpbmVzc0NvbnRleHQsXG4gIENsYWltLFxuICBDbGFpbVR5cGUsXG4gIENsYWltQ2F0ZWdvcnksXG4gIENvbmZpZGVuY2VDYWxpYnJhdGlvbixcbiAgRXZpZGVuY2VSZWZlcmVuY2UsXG4gIEFuYWx5c2lzUmVzdWx0LFxuICBDYWxpYnJhdGlvblN0YXR1cyxcbiAgQ2FsaWJyYXRpb25CdWNrZXQsXG4gIFByZWRpY3Rpb25UeXBlLFxuICBSb2lDb25maWcsXG4gIFJvaVN1bW1hcnksXG4gIEV4cGxhaW5hYmlsaXR5UmVzdWx0LFxuICBBcGlSZXNwb25zZSxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIFJ1blJlc3BvbnNlLFxufSBmcm9tICcuL2NvcmUvdHlwZXMnO1xuXG4vLyBSZS1leHBvcnQgZXZhbHVhdGlvbiB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBIdW1hblJldmlld1N0YXR1cyxcbiAgSHVtYW5SZXZpZXdUeXBlLFxuICBIdW1hblJldmlld1F1ZXVlSXRlbSxcbiAgQ2FsaWJyYXRpb25TZXQsXG4gIFJldmlld2VyQ2FsaWJyYXRpb24sXG4gIFF1ZXVlU3RhdHMsXG59IGZyb20gJy4vYXBpL2h1bWFuLXJldmlldyc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgTm9uZGV0ZXJtaW5pc21SdW5UeXBlLFxuICBOb25kZXRlcm1pbmlzbVJ1blN0YXR1cyxcbiAgTm9uZGV0ZXJtaW5pc21SdW4sXG4gIE5vbmRldGVybWluaXNtU2FtcGxlLFxuICBUcmFjZUFuYWx5c2lzLFxuICBDcml0ZXJpb25BbmFseXNpcyxcbiAgUnVuU3VtbWFyeSxcbn0gZnJvbSAnLi9hcGkvbm9uZGV0ZXJtaW5pc20nO1xuXG5leHBvcnQgdHlwZSB7XG4gIFNhdHVyYXRpb25UeXBlLFxuICBIZWFsdGhTdGF0dXMsXG4gIFJlZ3Jlc3Npb25TZXZlcml0eSxcbiAgRXZhbEhlYWx0aFNuYXBzaG90LFxuICBFdmFsUmVncmVzc2lvbixcbiAgSGVhbHRoUmVwb3J0LFxufSBmcm9tICcuL2FwaS9ldmFsLWhlYWx0aCc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgUnVsZVR5cGUsXG4gIERldGVybWluaXN0aWNFdmFsUmVzdWx0LFxuICBSdWxlUmVzdWx0LFxuICBSdWxlVHlwZUluZm8sXG4gIFJ1bGVUZW1wbGF0ZSxcbn0gZnJvbSAnLi9hcGkvZGV0ZXJtaW5pc3RpYy1ncmFkZXJzJztcblxuZXhwb3J0IHR5cGUge1xuICBBZ2dyZWdhdGVNZXRob2QsXG4gIFNlc3Npb25UcmFjZSxcbiAgVHVybkV2YWx1YXRpb24sXG4gIENvbnZlcnNhdGlvbkV2YWxSZXN1bHQsXG4gIEFnZ3JlZ2F0aW9uTWV0aG9kSW5mbyxcbn0gZnJvbSAnLi9hcGkvY29udmVyc2F0aW9uLWV2YWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFBhdHRlcm5DYXRlZ29yeSxcbiAgUGF0dGVybk91dGNvbWUsXG4gIFBhdHRlcm5TZXZlcml0eSxcbiAgUGF0dGVybk1hdGNoLFxuICBQYXR0ZXJuSW5zaWdodCxcbiAgQW5hbHlzaXNSZXN1bHQgYXMgUGF0dGVybkFuYWx5c2lzUmVzdWx0LFxuICBQYXR0ZXJuQ2F0ZWdvcnlJbmZvLFxuICBCdWlsdEluUGF0dGVybixcbn0gZnJvbSAnLi9hcGkvdHJhbnNjcmlwdC1wYXR0ZXJucyc7XG5cbi8vIFJlLWV4cG9ydCBBUEkgS2V5IHR5cGVzIChQaGFzZSAyIFNlY3VyaXR5KVxuZXhwb3J0IHR5cGUge1xuICBBcGlLZXlQZXJtaXNzaW9ucyxcbiAgU2NvcGVUeXBlLFxuICBFbnZpcm9ubWVudCxcbiAgQ3JlYXRlQXBpS2V5T3B0aW9ucyxcbiAgQXBpS2V5LFxuICBDcmVhdGVBcGlLZXlSZXN1bHQsXG59IGZyb20gJy4vYXBpL2FwaUtleXMnO1xuXG4vLyBSZS1leHBvcnQgUk9JIEFuYWx5dGljcyB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBJbmR1c3RyeUNvbmZpZyxcbiAgQ3VzdG9tSW5kdXN0cnlDb25maWcsXG4gIFJPSU1ldHJpY3MsXG4gIEJ1c2luZXNzSW1wYWN0LFxuICBST0lTdW1tYXJ5LFxuICBUcmVuZERhdGFQb2ludCxcbiAgQ29ycmVsYXRpb24sXG4gIFBhdHRlcm5DbHVzdGVyLFxuICBDb3JyZWxhdGlvbkFuYWx5c2lzLFxufSBmcm9tICcuL2FwaS9yb2ktYW5hbHl0aWNzJztcblxuLy8gUmUtZXhwb3J0IFF1YWxpdHkgTWV0cmljcyB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBSZXRyaWV2ZWRDb250ZXh0LFxuICBHcm91bmRUcnV0aENvbnRleHQsXG4gIEdyb3VuZGVkU3BhbixcbiAgVW5ncm91bmRlZFNwYW4sXG4gIENpdGF0aW9uTWFwLFxuICBSQUdFdmFsdWF0aW9uLFxuICBSQUdFdmlkZW5jZSxcbiAgSGFsbHVjaW5hdGlvbkluc3RhbmNlLFxuICBIYWxsdWNpbmF0aW9uUmVwb3J0LFxuICBHcm91bmRlZG5lc3NSZXN1bHQsXG4gIEJhdGNoRXZhbHVhdGlvblJlc3VsdCxcbiAgQmF0Y2hFdmFsdWF0aW9uU3VtbWFyeSxcbn0gZnJvbSAnLi9hcGkvcXVhbGl0eS1tZXRyaWNzJztcblxuLy8gUmUtZXhwb3J0IEJ1c2luZXNzIE1ldHJpY3MgdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgTWV0cmljVHJlbmQsXG4gIE1ldHJpY1N0YXR1cyxcbiAgQ3VycmVudE1ldHJpY1Jlc3BvbnNlLFxuICBNZXRyaWNIaXN0b3J5UG9pbnQsXG4gIE1ldHJpY0hpc3RvcnlTdW1tYXJ5LFxuICBNZXRyaWNIaXN0b3J5UmVzcG9uc2UsXG4gIFJlY29yZE1ldHJpY09wdGlvbnMsXG4gIFJlY29yZE1ldHJpY1Jlc3BvbnNlLFxufSBmcm9tICcuL2FwaS9idXNpbmVzcy1tZXRyaWNzJztcblxuLy8gUmUtZXhwb3J0IEFnZW50IHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFnZW50LFxuICBDcmVhdGVBZ2VudE9wdGlvbnMsXG4gIFVwZGF0ZUFnZW50T3B0aW9ucyxcbiAgQWdlbnRDb25maWcsXG4gIFVwZGF0ZUFnZW50Q29uZmlnT3B0aW9ucyxcbiAgRGVsZXRlQWdlbnRPcHRpb25zLFxuICBDYXNjYWRlSW1wYWN0LFxufSBmcm9tICcuL2FwaS9hZ2VudHMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHTE9CQUwgU1RBVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxubGV0IHRyYWNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdHJhY2UuZ2V0VHJhY2VyPiB8IG51bGwgPSBudWxsO1xubGV0IHByb3ZpZGVyOiBOb2RlVHJhY2VyUHJvdmlkZXIgfCBudWxsID0gbnVsbDtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5JVElBTElaQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbml0aWFsaXplIFRoaW5rSGl2ZSBTREsgdjNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgaW5pdCB9IGZyb20gJ0B0aGlua2hpdmUvc2RrJztcbiAqXG4gKiBpbml0KHtcbiAqICAgYXBpS2V5OiAndGhfeW91cl9hcGlfa2V5JyxcbiAqICAgc2VydmljZU5hbWU6ICdteS1haS1hZ2VudCcsXG4gKiAgIGF1dG9JbnN0cnVtZW50OiB0cnVlLFxuICogICBmcmFtZXdvcmtzOiBbJ2xhbmdjaGFpbicsICdvcGVuYWknXSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0KG9wdGlvbnM6IGltcG9ydCgnLi9jb3JlL3R5cGVzJykuSW5pdE9wdGlvbnMgPSB7fSk6IHZvaWQge1xuICBpZiAoaXNJbml0aWFsaXplZCgpKSB7XG4gICAgZGVidWdMb2coJ1RoaW5rSGl2ZSBTREsgYWxyZWFkeSBpbml0aWFsaXplZCcpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IGluaXRDb25maWcob3B0aW9ucyk7XG5cbiAgLy8gQ29uZmlndXJlIE9UTFAgZXhwb3J0ZXJcbiAgY29uc3QgZXhwb3J0ZXJIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGlmIChjb25maWcuYXBpS2V5KSB7XG4gICAgZXhwb3J0ZXJIZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7Y29uZmlnLmFwaUtleX1gO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPVExQIHRyYWNpbmcgcmVxdWlyZXMgYW4gQVBJIGtleS4gQWdlbnQgSUQgYWxvbmUgaXMgbm90IHN1ZmZpY2llbnQgZm9yIE9UTFAgaW5nZXN0aW9uLiAnICtcbiAgICAgICdQcm92aWRlIGFwaUtleSBpbiBpbml0KCkgb3Igc2V0IHRoZSBUSElOS0hJVkVfQVBJX0tFWSBlbnZpcm9ubWVudCB2YXJpYWJsZS4nXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG90bHBVcmwgPSBjb25maWcuZW5kcG9pbnQucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnL3YxL3RyYWNlcyc7XG4gIGNvbnN0IGV4cG9ydGVyID0gbmV3IE9UTFBUcmFjZUV4cG9ydGVyKHtcbiAgICB1cmw6IG90bHBVcmwsXG4gICAgaGVhZGVyczogZXhwb3J0ZXJIZWFkZXJzLFxuICB9KTtcblxuICAvLyBDcmVhdGUgT3BlblRlbGVtZXRyeSByZXNvdXJjZVxuICBjb25zdCByZXNvdXJjZSA9IFJlc291cmNlLmRlZmF1bHQoKS5tZXJnZShcbiAgICBuZXcgUmVzb3VyY2Uoe1xuICAgICAgJ3NlcnZpY2UubmFtZSc6IGNvbmZpZy5zZXJ2aWNlTmFtZSxcbiAgICAgICd0aGlua2hpdmUuc2RrLnZlcnNpb24nOiBTREtfVkVSU0lPTixcbiAgICAgICd0aGlua2hpdmUuc2RrLmxhbmd1YWdlJzogJ3R5cGVzY3JpcHQnLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gQ3JlYXRlIHByb3ZpZGVyIHdpdGggc3BhbiBwcm9jZXNzb3JcbiAgcHJvdmlkZXIgPSBuZXcgTm9kZVRyYWNlclByb3ZpZGVyKHtcbiAgICByZXNvdXJjZSxcbiAgICBzcGFuUHJvY2Vzc29yczogW25ldyBCYXRjaFNwYW5Qcm9jZXNzb3IoZXhwb3J0ZXIpXSxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgcHJvdmlkZXJcbiAgcHJvdmlkZXIucmVnaXN0ZXIoKTtcblxuICAvLyBHZXQgdHJhY2VyXG4gIHRyYWNlciA9IHRyYWNlLmdldFRyYWNlcigndGhpbmtoaXZlJywgU0RLX1ZFUlNJT04pO1xuXG4gIGlmIChjb25maWcuZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhg4pyFIFRoaW5rSGl2ZSBTREsgdiR7U0RLX1ZFUlNJT059IGluaXRpYWxpemVkYCk7XG4gICAgY29uc29sZS5sb2coYCAgIEVuZHBvaW50OiAke2NvbmZpZy5lbmRwb2ludH1gKTtcbiAgICBjb25zb2xlLmxvZyhgICAgU2VydmljZTogJHtjb25maWcuc2VydmljZU5hbWV9YCk7XG4gICAgY29uc29sZS5sb2coYCAgIEF1dG8taW5zdHJ1bWVudDogJHtjb25maWcuYXV0b0luc3RydW1lbnR9YCk7XG4gIH1cblxuICAvLyBTZXR1cCBhdXRvLWluc3RydW1lbnRhdGlvbiBpZiBlbmFibGVkXG4gIGlmIChjb25maWcuYXV0b0luc3RydW1lbnQpIHtcbiAgICBzZXR1cEF1dG9JbnN0cnVtZW50YXRpb24oY29uZmlnLmZyYW1ld29ya3MpO1xuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBnbG9iYWwgdHJhY2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFjZXIoKSB7XG4gIGlmICghdHJhY2VyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlua0hpdmUgU0RLIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuJyk7XG4gIH1cbiAgcmV0dXJuIHRyYWNlcjtcbn1cblxuLyoqXG4gKiBTaHV0ZG93biB0aGUgU0RLIGFuZCBmbHVzaCBwZW5kaW5nIHNwYW5zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHByb3ZpZGVyKSB7XG4gICAgYXdhaXQgcHJvdmlkZXIuc2h1dGRvd24oKTtcbiAgICBwcm92aWRlciA9IG51bGw7XG4gIH1cbiAgdHJhY2VyID0gbnVsbDtcbiAgcmVzZXRDb25maWcoKTtcbiAgZGVidWdMb2coJ1RoaW5rSGl2ZSBTREsgc2h1dGRvd24gY29tcGxldGUnKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFJBQ0lORyBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBUcmFjZSBhbiBMTE0gY2FsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VMTE08VD4oXG4gIG9wdGlvbnM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbW9kZWxOYW1lPzogc3RyaW5nO1xuICAgIHByb3ZpZGVyPzogc3RyaW5nO1xuICAgIGlucHV0PzogdW5rbm93bjtcbiAgfSxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCB0ID0gZ2V0VHJhY2VyKCk7XG5cbiAgcmV0dXJuIHQuc3RhcnRBY3RpdmVTcGFuKFxuICAgIG9wdGlvbnMubmFtZSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICdvcGVuaW5mZXJlbmNlLnNwYW4ua2luZCc6ICdMTE0nLFxuICAgICAgICAnbGxtLm1vZGVsX25hbWUnOiBvcHRpb25zLm1vZGVsTmFtZSxcbiAgICAgICAgJ2xsbS5wcm92aWRlcic6IG9wdGlvbnMucHJvdmlkZXIsXG4gICAgICAgICdpbnB1dC52YWx1ZSc6IG9wdGlvbnMuaW5wdXQgPyBKU09OLnN0cmluZ2lmeShvcHRpb25zLmlucHV0KS5zdWJzdHJpbmcoMCwgMTAwMDApIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGFzeW5jIChzcGFuKSA9PiB7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ291dHB1dC52YWx1ZScsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkuc3Vic3RyaW5nKDAsIDEwMDAwKSk7XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLCBtZXNzYWdlIH0pO1xuICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvciBhcyBFcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2R1cmF0aW9uX21zJywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIFRyYWNlIGEgcmV0cmlldmFsIG9wZXJhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VSZXRyaWV2YWw8VD4oXG4gIG9wdGlvbnM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcXVlcnk/OiBzdHJpbmc7XG4gICAgdG9wSz86IG51bWJlcjtcbiAgfSxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCB0ID0gZ2V0VHJhY2VyKCk7XG5cbiAgcmV0dXJuIHQuc3RhcnRBY3RpdmVTcGFuKFxuICAgIG9wdGlvbnMubmFtZSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICdvcGVuaW5mZXJlbmNlLnNwYW4ua2luZCc6ICdSRVRSSUVWRVInLFxuICAgICAgICAncmV0cmlldmFsLnF1ZXJ5Jzogb3B0aW9ucy5xdWVyeSxcbiAgICAgICAgJ3JldHJpZXZhbC50b3Bfayc6IG9wdGlvbnMudG9wSyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhc3luYyAoc3BhbikgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKCk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgncmV0cmlldmFsLmRvY3VtZW50X2NvdW50JywgcmVzdWx0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBTcGFuU3RhdHVzQ29kZS5PSyB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsIG1lc3NhZ2UgfSk7XG4gICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yIGFzIEVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZHVyYXRpb25fbXMnLCBEYXRlLm5vdygpIC0gc3RhcnRUaW1lKTtcbiAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG5cbi8qKlxuICogVHJhY2UgYSB0b29sIGNhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVG9vbDxUPihcbiAgb3B0aW9uczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0b29sTmFtZT86IHN0cmluZztcbiAgICBwYXJhbWV0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0sXG4gIGZuOiAoKSA9PiBQcm9taXNlPFQ+XG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgdCA9IGdldFRyYWNlcigpO1xuXG4gIHJldHVybiB0LnN0YXJ0QWN0aXZlU3BhbihcbiAgICBvcHRpb25zLnRvb2xOYW1lIHx8IG9wdGlvbnMubmFtZSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICdvcGVuaW5mZXJlbmNlLnNwYW4ua2luZCc6ICdUT09MJyxcbiAgICAgICAgJ3Rvb2wubmFtZSc6IG9wdGlvbnMudG9vbE5hbWUgfHwgb3B0aW9ucy5uYW1lLFxuICAgICAgICAndG9vbC5wYXJhbWV0ZXJzJzogb3B0aW9ucy5wYXJhbWV0ZXJzID8gSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5wYXJhbWV0ZXJzKSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhc3luYyAoc3BhbikgPT4ge1xuICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKCk7XG4gICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKCd0b29sLm91dHB1dCcsIEpTT04uc3RyaW5naWZ5KHJlc3VsdCkuc3Vic3RyaW5nKDAsIDEwMDAwKSk7XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IFNwYW5TdGF0dXNDb2RlLkVSUk9SLCBtZXNzYWdlIH0pO1xuICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihlcnJvciBhcyBFcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoJ2R1cmF0aW9uX21zJywgRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSk7XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICB9XG4gICAgfVxuICApO1xufVxuXG4vKipcbiAqIFRyYWNlIGEgY2hhaW4vd29ya2Zsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlQ2hhaW48VD4oXG4gIG9wdGlvbnM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaW5wdXQ/OiB1bmtub3duO1xuICB9LFxuICBmbjogKCkgPT4gUHJvbWlzZTxUPlxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHQgPSBnZXRUcmFjZXIoKTtcblxuICByZXR1cm4gdC5zdGFydEFjdGl2ZVNwYW4oXG4gICAgb3B0aW9ucy5uYW1lLFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgJ29wZW5pbmZlcmVuY2Uuc3Bhbi5raW5kJzogJ0NIQUlOJyxcbiAgICAgICAgJ2lucHV0LnZhbHVlJzogb3B0aW9ucy5pbnB1dCA/IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuaW5wdXQpLnN1YnN0cmluZygwLCAxMDAwMCkgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0sXG4gICAgYXN5bmMgKHNwYW4pID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbigpO1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnb3V0cHV0LnZhbHVlJywgSlNPTi5zdHJpbmdpZnkocmVzdWx0KS5zdWJzdHJpbmcoMCwgMTAwMDApKTtcbiAgICAgICAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBTcGFuU3RhdHVzQ29kZS5PSyB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIHNwYW4uc2V0U3RhdHVzKHsgY29kZTogU3BhblN0YXR1c0NvZGUuRVJST1IsIG1lc3NhZ2UgfSk7XG4gICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yIGFzIEVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZSgnZHVyYXRpb25fbXMnLCBEYXRlLm5vdygpIC0gc3RhcnRUaW1lKTtcbiAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFYyIFRFUk1JTk9MT0dZIC0gSVNTVUVTIEFQSSAocmVwbGFjZXMgQ2FzZXMpXG4vLyBQZXIgSVRJTCBiZXN0IHByYWN0aWNlcywgXCJJc3N1ZXNcIiBpcyBtb3JlIGN1c3RvbWVyLWZyaWVuZGx5IHRoYW4gXCJDYXNlc1wiXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSXNzdWVzIEFQSSBjbGllbnRcbiAqIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIEFQSSBmb3IgbWFuYWdpbmcgY2x1c3RlcmVkIGZhaWx1cmUgcGF0dGVybnNcbiAqXG4gKiBAc2luY2UgMy4xLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGlzc3VlcyA9IHtcbiAgLyoqXG4gICAqIExpc3QgaXNzdWVzIGZvciBhbiBhZ2VudFxuICAgKi9cbiAgYXN5bmMgbGlzdChhZ2VudElkOiBzdHJpbmcsIG9wdGlvbnM/OiB7XG4gICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIHN0YXJ0RGF0ZT86IERhdGU7XG4gICAgZW5kRGF0ZT86IERhdGU7XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoeyBhZ2VudElkIH0pO1xuICAgIGlmIChvcHRpb25zPy5zdGF0dXMpIHBhcmFtcy5zZXQoJ3N0YXR1cycsIG9wdGlvbnMuc3RhdHVzKTtcbiAgICBpZiAob3B0aW9ucz8uc3RhcnREYXRlKSBwYXJhbXMuc2V0KCdzdGFydERhdGUnLCBvcHRpb25zLnN0YXJ0RGF0ZS50b0lTT1N0cmluZygpKTtcbiAgICBpZiAob3B0aW9ucz8uZW5kRGF0ZSkgcGFyYW1zLnNldCgnZW5kRGF0ZScsIG9wdGlvbnMuZW5kRGF0ZS50b0lTT1N0cmluZygpKTtcbiAgICBpZiAob3B0aW9ucz8ubGltaXQpIHBhcmFtcy5zZXQoJ2xpbWl0Jywgb3B0aW9ucy5saW1pdC50b1N0cmluZygpKTtcbiAgICBpZiAob3B0aW9ucz8ub2Zmc2V0KSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBvcHRpb25zLm9mZnNldC50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhKGAvaXNzdWVzPyR7cGFyYW1zfWAsIHsgYXBpVmVyc2lvbjogJ3YyJyB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGEgc2luZ2xlIGlzc3VlIGJ5IElEXG4gICAqL1xuICBhc3luYyBnZXQoaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoYC9pc3N1ZXMvJHtpZH1gLCB7IGFwaVZlcnNpb246ICd2MicgfSk7XG4gICAgcmV0dXJuIChyZXNwb25zZSBhcyBhbnkpLmRhdGEgfHwgcmVzcG9uc2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBpc3N1ZVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKGRhdGE6IHtcbiAgICBhZ2VudElkOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgc2V2ZXJpdHk/OiBzdHJpbmc7XG4gICAgcGF0dGVybj86IHN0cmluZztcbiAgICBleGFtcGxlVHJhY2VJZHM/OiBzdHJpbmdbXTtcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoJy9pc3N1ZXMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBhcGlWZXJzaW9uOiAndjInLFxuICAgIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gaXNzdWVcbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZDogc3RyaW5nLCBkYXRhOiB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIHNldmVyaXR5Pzogc3RyaW5nO1xuICAgIGFzc2lnbmVkVG8/OiBzdHJpbmc7XG4gICAgcmVzb2x1dGlvbk5vdGVzPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YShgL2lzc3Vlcy8ke2lkfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBhcGlWZXJzaW9uOiAndjInLFxuICAgIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgZml4ZXMgZm9yIGFuIGlzc3VlXG4gICAqL1xuICBhc3luYyBnZXRGaXhlcyhpc3N1ZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoYC9pc3N1ZXMvJHtpc3N1ZUlkfS9maXhlc2AsIHsgYXBpVmVyc2lvbjogJ3YyJyB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcbn07XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVjIgVEVSTUlOT0xPR1kgLSBBTkFMWVpFUiBBUEkgKHJlcGxhY2VzIEV4cGxhaW5lciB1c2VyLWZhY2luZylcbi8vIFBlciBpbmR1c3RyeSBkaXN0aW5jdGlvbjogQW5hbHl6ZXIgPSBwYXR0ZXJuIGRldGVjdGlvbi9vYnNlcnZhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEFuYWx5emVyIEFQSSBjbGllbnRcbiAqIFVzZXItc2VsZWN0ZWQgdHJhY2UgYW5hbHlzaXMgd2l0aCBjb3N0IGVzdGltYXRpb24gYW5kIHNtYXJ0IHNhbXBsaW5nXG4gKlxuICogS2V5IGltcHJvdmVtZW50cyBvdmVyIHYxIEV4cGxhaW5lcjpcbiAqIC0gVXNlci1zZWxlY3RlZCB0cmFjZSBhbmFseXNpcyAobm90IGF1dG9tYXRpYylcbiAqIC0gQ29zdCBlc3RpbWF0aW9uIGJlZm9yZSBleGVjdXRpb25cbiAqIC0gU21hcnQgc2FtcGxpbmcgc3RyYXRlZ2llc1xuICogLSBSb290IGNhdXNlIGFuYWx5c2lzIGJ5IGxheWVyXG4gKiAtIFBhdHRlcm4gYWdncmVnYXRpb24gYWNyb3NzIHRyYWNlc1xuICpcbiAqIEBzaW5jZSAzLjEuMFxuICovXG5leHBvcnQgY29uc3QgYW5hbHl6ZXIgPSB7XG4gIC8qKlxuICAgKiBBbmFseXplIHNwZWNpZmljIHRyYWNlcyAodXNlci1zZWxlY3RlZClcbiAgICovXG4gIGFzeW5jIGFuYWx5emUob3B0aW9uczoge1xuICAgIHRyYWNlSWRzOiBzdHJpbmdbXTtcbiAgICB0aWVyPzogJ2Zhc3QnIHwgJ3N0YW5kYXJkJyB8ICdkZWVwJztcbiAgICBpbmNsdWRlUm9vdENhdXNlPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlTGF5ZXJzPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgeyB0cmFjZUlkcywgdGllciwgaW5jbHVkZVJvb3RDYXVzZSwgaW5jbHVkZUxheWVycyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YSgnL2FuYWx5emVyL2FuYWx5emUnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgdHJhY2VJZHMsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0aWVyLFxuICAgICAgICAgIGluY2x1ZGVSb290Q2F1c2UsXG4gICAgICAgICAgaW5jbHVkZUxheWVycyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhcGlWZXJzaW9uOiAndjInLFxuICAgIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBbmFseXplIHRyYWNlcyBieSB0aW1lIHdpbmRvd1xuICAgKi9cbiAgYXN5bmMgYW5hbHl6ZVdpbmRvdyhvcHRpb25zOiB7XG4gICAgYWdlbnRJZDogc3RyaW5nO1xuICAgIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgICBlbmREYXRlOiBEYXRlO1xuICAgIGZpbHRlcnM/OiB7XG4gICAgICBvdXRjb21lcz86ICgnZmFpbHVyZScgfCAnZXJyb3InIHwgJ3N1Y2Nlc3MnKVtdO1xuICAgICAgbWluU2V2ZXJpdHk/OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHwgJ2NyaXRpY2FsJztcbiAgICB9O1xuICAgIHNhbXBsaW5nPzoge1xuICAgICAgc3RyYXRlZ3k6ICdhbGwnIHwgJ2ZhaWx1cmVzX29ubHknIHwgJ3NtYXJ0JyB8ICdyYW5kb20nO1xuICAgICAgc2FtcGxlUGVyY2VudD86IG51bWJlcjtcbiAgICB9O1xuICB9KTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YSgnL2FuYWx5emVyL2FuYWx5emUtd2luZG93Jywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHN0YXJ0RGF0ZTogb3B0aW9ucy5zdGFydERhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgZW5kRGF0ZTogb3B0aW9ucy5lbmREYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgYXBpVmVyc2lvbjogJ3YyJyxcbiAgICB9KTtcbiAgICByZXR1cm4gKHJlc3BvbnNlIGFzIGFueSkuZGF0YSB8fCByZXNwb25zZTtcbiAgfSxcblxuICAvKipcbiAgICogRXN0aW1hdGUgY29zdCBiZWZvcmUgcnVubmluZyBhbmFseXNpc1xuICAgKi9cbiAgYXN5bmMgZXN0aW1hdGVDb3N0KG9wdGlvbnM6IHtcbiAgICB0cmFjZUlkcz86IHN0cmluZ1tdO1xuICAgIGFnZW50SWQ/OiBzdHJpbmc7XG4gICAgc3RhcnREYXRlPzogRGF0ZTtcbiAgICBlbmREYXRlPzogRGF0ZTtcbiAgICB0aWVyOiAnZmFzdCcgfCAnc3RhbmRhcmQnIHwgJ2RlZXAnO1xuICB9KTogUHJvbWlzZTx7XG4gICAgZXN0aW1hdGVkVHJhY2VzOiBudW1iZXI7XG4gICAgZXN0aW1hdGVkVG9rZW5zOiBudW1iZXI7XG4gICAgZXN0aW1hdGVkQ29zdDogbnVtYmVyO1xuICAgIGVzdGltYXRlZENyZWRpdHM6IG51bWJlcjtcbiAgICB0aWVyOiBzdHJpbmc7XG4gICAgbm90ZTogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoJy9hbmFseXplci9lc3RpbWF0ZS1jb3N0Jywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHN0YXJ0RGF0ZTogb3B0aW9ucy5zdGFydERhdGU/LnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGVuZERhdGU6IG9wdGlvbnMuZW5kRGF0ZT8udG9JU09TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBhcGlWZXJzaW9uOiAndjInLFxuICAgIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYW5hbHlzaXMgcmVzdWx0cyBmb3IgYSBzcGVjaWZpYyB0cmFjZVxuICAgKi9cbiAgYXN5bmMgZ2V0KHRyYWNlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoYC9hbmFseXplci8ke3RyYWNlSWR9YCwgeyBhcGlWZXJzaW9uOiAndjInIH0pO1xuICAgIHJldHVybiAocmVzcG9uc2UgYXMgYW55KS5kYXRhIHx8IHJlc3BvbnNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZ2dyZWdhdGUgaW5zaWdodHMgYWNyb3NzIG11bHRpcGxlIGFuYWx5emVkIHRyYWNlc1xuICAgKi9cbiAgYXN5bmMgc3VtbWFyaXplKG9wdGlvbnM6IHtcbiAgICBhbmFseXNpc0lkcz86IHN0cmluZ1tdO1xuICAgIGFnZW50SWQ/OiBzdHJpbmc7XG4gICAgc3RhcnREYXRlPzogRGF0ZTtcbiAgICBlbmREYXRlPzogRGF0ZTtcbiAgfSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGEoJy9hbmFseXplci9zdW1tYXJpemUnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgc3RhcnREYXRlOiBvcHRpb25zLnN0YXJ0RGF0ZT8udG9JU09TdHJpbmcoKSxcbiAgICAgICAgZW5kRGF0ZTogb3B0aW9ucy5lbmREYXRlPy50b0lTT1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIGFwaVZlcnNpb246ICd2MicsXG4gICAgfSk7XG4gICAgcmV0dXJuIChyZXNwb25zZSBhcyBhbnkpLmRhdGEgfHwgcmVzcG9uc2U7XG4gIH0sXG59O1xuXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFVVE8tSU5TVFJVTUVOVEFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIHNldHVwQXV0b0luc3RydW1lbnRhdGlvbihcbiAgZnJhbWV3b3JrczogaW1wb3J0KCcuL2NvcmUvdHlwZXMnKS5GcmFtZXdvcmtbXVxuKTogdm9pZCB7XG4gIGRlYnVnTG9nKGBTZXR0aW5nIHVwIGF1dG8taW5zdHJ1bWVudGF0aW9uIGZvcjogJHtmcmFtZXdvcmtzLmpvaW4oJywgJyl9YCk7XG5cbiAgZm9yIChjb25zdCBmcmFtZXdvcmsgb2YgZnJhbWV3b3Jrcykge1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKGZyYW1ld29yaykge1xuICAgICAgICBjYXNlICdvcGVuYWknOlxuICAgICAgICBjYXNlICdvcGVuYWktYXNzaXN0YW50cyc6XG4gICAgICAgICAgZGVidWdMb2coJ09wZW5BSSBpbnN0cnVtZW50YXRpb24gcmVhZHkgKHVzZSBpbnN0cnVtZW50T3BlbkFJQ2xpZW50KScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsYW5nY2hhaW4nOlxuICAgICAgICBjYXNlICdsYW5nZ3JhcGgnOlxuICAgICAgICAgIGRlYnVnTG9nKCdMYW5nQ2hhaW4vTGFuZ0dyYXBoIGluc3RydW1lbnRhdGlvbiByZWFkeSAodXNlIFRoaW5rSGl2ZUNhbGxiYWNrSGFuZGxlciknKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYW50aHJvcGljJzpcbiAgICAgICAgICBkZWJ1Z0xvZygnQW50aHJvcGljIGluc3RydW1lbnRhdGlvbiByZWFkeScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdsbGFtYWluZGV4JzpcbiAgICAgICAgICBkZWJ1Z0xvZygnTGxhbWFJbmRleCBpbnN0cnVtZW50YXRpb24gcmVhZHknKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbjhuJzpcbiAgICAgICAgICBkZWJ1Z0xvZygnbjhuIGluc3RydW1lbnRhdGlvbiByZWFkeScpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd2b2ljZWZsb3cnOlxuICAgICAgICAgIGRlYnVnTG9nKCdWb2ljZWZsb3cgaW5zdHJ1bWVudGF0aW9uIHJlYWR5Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRlYnVnTG9nKGBGYWlsZWQgdG8gc2V0dXAgJHtmcmFtZXdvcmt9IGluc3RydW1lbnRhdGlvbjpgLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFLUVYUE9SVFMgKG5vbi1kdXBsaWNhdGVkKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBSZS1leHBvcnQgZnJvbSBjb25maWcgKG5vdCB5ZXQgZXhwb3J0ZWQpXG5leHBvcnQgeyBpc0luaXRpYWxpemVkLCBTREtfVkVSU0lPTiwgREVGQVVMVF9FTkRQT0lOVCB9O1xuXG4vLyBSZS1leHBvcnQgQVBJIGNsaWVudHMgKHYzKVxuZXhwb3J0IHtcbiAgcnVucyxcbiAgY2xhaW1zLFxuICBjYWxpYnJhdGlvbixcbiAgbGlua2luZyxcbiAgY3VzdG9tZXJDb250ZXh0LFxuICAvLyBOZXcgZXZhbHVhdGlvbiBBUElzXG4gIGh1bWFuUmV2aWV3LFxuICBub25kZXRlcm1pbmlzbSxcbiAgZXZhbEhlYWx0aCxcbiAgZGV0ZXJtaW5pc3RpY0dyYWRlcnMsXG4gIGNvbnZlcnNhdGlvbkV2YWwsXG4gIHRyYW5zY3JpcHRQYXR0ZXJucyxcbiAgLy8gQVBJIEtleSBNYW5hZ2VtZW50IChQaGFzZSAyIFNlY3VyaXR5KVxuICBhcGlLZXlzLFxuICAvLyBBZ2VudHMgTWFuYWdlbWVudFxuICBhZ2VudHMsXG4gIC8vIFJPSSBBbmFseXRpY3MsIFF1YWxpdHkgTWV0cmljcywgYW5kIEJ1c2luZXNzIE1ldHJpY3NcbiAgcm9pQW5hbHl0aWNzLFxuICBxdWFsaXR5TWV0cmljcyxcbiAgYnVzaW5lc3NNZXRyaWNzLFxufTtcblxuLy8gTm90ZTogaXNzdWVzIGFuZCBhbmFseXplciBhcmUgYWxyZWFkeSBleHBvcnRlZCB2aWEgJ2V4cG9ydCBjb25zdCcgYWJvdmVcblxuLy8gUmUtZXhwb3J0IGhlbHBlciBmdW5jdGlvbnNcbmV4cG9ydCB7XG4gIC8vIFJ1bnMgaGVscGVyc1xuICBjcmVhdGVSdW5XaXRoQ29udGV4dCxcbiAgdG9PcGVuQUlNZXNzYWdlcyxcbiAgZnJvbU9wZW5BSU1lc3NhZ2VzLFxuICAvLyBDbGFpbXMgaGVscGVyc1xuICBpc0ZhY3QsXG4gIGlzSW5mZXJlbmNlLFxuICBpc0NvbXB1dGVkLFxuICBnZXRIaWdoQ29uZmlkZW5jZUNsYWltcyxcbiAgZ3JvdXBDbGFpbXNCeVR5cGUsXG4gIGdyb3VwQ2xhaW1zQnlDYXRlZ29yeSxcbiAgLy8gQ2FsaWJyYXRpb24gaGVscGVyc1xuICBjYWxjdWxhdGVCcmllclNjb3JlLFxuICBjYWxjdWxhdGVFQ0UsXG4gIGlzV2VsbENhbGlicmF0ZWQsXG4gIGdldENhbGlicmF0aW9uUXVhbGl0eSxcbiAgLy8gTGlua2luZyBoZWxwZXJzXG4gIGdlbmVyYXRlWmVuZGVza01hcmtlcixcbiAgcGFyc2VaZW5kZXNrTWFya2VyLFxuICBoYXNaZW5kZXNrTWFya2VyLFxuICByZW1vdmVaZW5kZXNrTWFya2VyLFxuICBsaW5rUnVuVG9UaWNrZXQsXG4gIGxpbmtSdW5Ub1plbmRlc2tUaWNrZXQsXG4gIGdldEJlc3RMaW5rTWV0aG9kLFxuICBMSU5LX01FVEhPRF9DT05GSURFTkNFLFxuICAvLyBDdXN0b21lciBjb250ZXh0IGhlbHBlcnNcbiAgY2FwdHVyZUN1c3RvbWVyQ29udGV4dCxcbiAgZ2V0Q29udGV4dEFzT2YsXG4gIHRvQ29udGV4dFNuYXBzaG90LFxuICBjYWxjdWxhdGVBcnJDaGFuZ2UsXG4gIGNhbGN1bGF0ZUhlYWx0aFRyZW5kLFxuICAvLyBOb24tZGV0ZXJtaW5pc20gaGVscGVyc1xuICBjYWxjdWxhdGVQYXNzQXRLLFxuICBjYWxjdWxhdGVQYXNzVG9LLFxuICByZXF1aXJlZFBhc3NSYXRlRm9yUGFzc0F0SyxcbiAgaXNSZWxpYWJsZUV2YWx1YXRpb24sXG4gIGdldFJlbGlhYmlsaXR5UmVjb21tZW5kYXRpb24sXG4gIC8vIEV2YWwgaGVhbHRoIGhlbHBlcnNcbiAgaGFzSGVhbHRoSXNzdWUsXG4gIGdldEhlYWx0aFNldmVyaXR5TGV2ZWwsXG4gIGlzU2F0dXJhdGVkLFxuICBnZXRTYXR1cmF0aW9uUmVjb21tZW5kYXRpb24sXG4gIC8vIERldGVybWluaXN0aWMgZ3JhZGVycyBoZWxwZXJzXG4gIGNyZWF0ZVJlZ2V4UnVsZSxcbiAgY3JlYXRlQ29udGFpbnNSdWxlLFxuICBjcmVhdGVMZW5ndGhSdWxlLFxuICBjcmVhdGVKc29uU2NoZW1hUnVsZSxcbiAgYWxsUnVsZXNQYXNzZWQsXG4gIGdldEZhaWxlZFJ1bGVzLFxuICBjYWxjdWxhdGVBdmVyYWdlU2NvcmUsXG4gIC8vIENvbnZlcnNhdGlvbiBldmFsIGhlbHBlcnNcbiAgYWdncmVnYXRlV29yc3QsXG4gIGFnZ3JlZ2F0ZUF2ZXJhZ2UsXG4gIGFnZ3JlZ2F0ZVdlaWdodGVkLFxuICBhZ2dyZWdhdGVGaW5hbFR1cm4sXG4gIGFnZ3JlZ2F0ZU1ham9yaXR5LFxuICBnZXRBZ2dyZWdhdG9yLFxuICBnZXRQcm9ibGVtYXRpY1R1cm5zLFxuICBhbmFseXplQ29udmVyc2F0aW9uVHJlbmQsXG4gIC8vIFRyYW5zY3JpcHQgcGF0dGVybnMgaGVscGVyc1xuICBpc0hpZ2hSaXNrLFxuICBnZXRNYXRjaGVzQnlDYXRlZ29yeSxcbiAgZ2V0Q3JpdGljYWxJbnNpZ2h0cyxcbiAgaGFzUGlpRXhwb3N1cmUsXG4gIGhhc0ZydXN0cmF0aW9uU2lnbmFscyxcbiAgaGFzRXNjYWxhdGlvblJlcXVlc3QsXG4gIGdldENhdGVnb3J5RGlzdHJpYnV0aW9uLFxuICBnZXRSZWNvbW1lbmRhdGlvbnMsXG4gIG5lZWRzQXR0ZW50aW9uLFxuICBzb3J0TWF0Y2hlc0J5U2V2ZXJpdHksXG4gIC8vIEFQSSBLZXkgaGVscGVyc1xuICBoYXNQZXJtaXNzaW9uLFxuICBpc0FwaUtleUV4cGlyZWQsXG4gIGlzQXBpS2V5VmFsaWQsXG4gIGdldFRpbWVVbnRpbEV4cGlyeSxcbiAgY2FuQWNjZXNzQWdlbnQsXG4gIC8vIFJPSSBBbmFseXRpY3MgaGVscGVyc1xuICBjYWxjdWxhdGVSZXZlbnVlQXRSaXNrLFxuICBjYWxjdWxhdGVBdXRvbWF0aW9uU2F2aW5ncyxcbiAgZm9ybWF0Q3VycmVuY3ksXG4gIGdldFJPSVF1YWxpdHksXG4gIC8vIFF1YWxpdHkgTWV0cmljcyBoZWxwZXJzXG4gIHBhc3Nlc1F1YWxpdHlUaHJlc2hvbGQsXG4gIGlzSGFsbHVjaW5hdGlvblJpc2tBY2NlcHRhYmxlLFxuICBnZXRRdWFsaXR5UmVjb21tZW5kYXRpb25zLFxuICBmb3JtYXRRdWFsaXR5U2NvcmUsXG4gIGdldEdyYWRlQ29sb3IsXG4gIC8vIEJ1c2luZXNzIE1ldHJpY3MgaGVscGVyc1xuICBpc01ldHJpY1JlYWR5LFxuICBuZWVkc01vcmVUcmFjZXMsXG4gIGF3YWl0aW5nRXh0ZXJuYWxEYXRhLFxuICBpc01ldHJpY1N0YWxlLFxuICBnZXRTdGF0dXNNZXNzYWdlLFxuICBnZXRUcmFjZVByb2dyZXNzLFxuICBmb3JtYXRNZXRyaWNWYWx1ZSxcbiAgZ2V0VHJlbmRFbW9qaSxcbn07XG5cbi8vIFJlLWV4cG9ydCBlcnJvcnMgKGluY2x1ZGluZyBuZXcgc2VjdXJpdHkgZXJyb3JzKVxuZXhwb3J0IHtcbiAgVGhpbmtIaXZlRXJyb3IsXG4gIFRoaW5rSGl2ZUFwaUVycm9yLFxuICBUaGlua0hpdmVWYWxpZGF0aW9uRXJyb3IsXG4gIFBlcm1pc3Npb25EZW5pZWRFcnJvcixcbiAgQWdlbnRTY29wZUVycm9yLFxuICBSYXRlTGltaXRFcnJvcixcbiAgSXBXaGl0ZWxpc3RFcnJvcixcbn07XG5cbi8vIERlZmF1bHQgZXhwb3J0IGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IGRlZmF1bHQge1xuICBpbml0LFxuICBnZXRUcmFjZXIsXG4gIHNodXRkb3duLFxuICBpc0luaXRpYWxpemVkLFxuICAvLyBUcmFjaW5nXG4gIHRyYWNlTExNLFxuICB0cmFjZVJldHJpZXZhbCxcbiAgdHJhY2VUb29sLFxuICB0cmFjZUNoYWluLFxuICAvLyBBUEkgY2xpZW50c1xuICBydW5zLFxuICBjbGFpbXMsXG4gIGNhbGlicmF0aW9uLFxuICBsaW5raW5nLFxuICBjdXN0b21lckNvbnRleHQsXG4gIC8vIEV2YWx1YXRpb24gQVBJc1xuICBodW1hblJldmlldyxcbiAgbm9uZGV0ZXJtaW5pc20sXG4gIGV2YWxIZWFsdGgsXG4gIGRldGVybWluaXN0aWNHcmFkZXJzLFxuICBjb252ZXJzYXRpb25FdmFsLFxuICB0cmFuc2NyaXB0UGF0dGVybnMsXG4gIC8vIEFQSSBLZXkgTWFuYWdlbWVudCAoUGhhc2UgMiBTZWN1cml0eSlcbiAgYXBpS2V5cyxcbiAgLy8gQWdlbnRzIE1hbmFnZW1lbnRcbiAgYWdlbnRzLFxuICAvLyBJc3N1ZXMgYW5kIEFuYWx5emVyIEFQSXNcbiAgaXNzdWVzLFxuICBhbmFseXplcixcbiAgLy8gUk9JIEFuYWx5dGljcywgUXVhbGl0eSBNZXRyaWNzLCBhbmQgQnVzaW5lc3MgTWV0cmljc1xuICByb2lBbmFseXRpY3MsXG4gIHF1YWxpdHlNZXRyaWNzLFxuICBidXNpbmVzc01ldHJpY3MsXG4gIC8vIEhlbHBlcnNcbiAgZ2VuZXJhdGVaZW5kZXNrTWFya2VyLFxuICBwYXJzZVplbmRlc2tNYXJrZXIsXG4gIGxpbmtSdW5Ub1RpY2tldCxcbiAgY3JlYXRlUnVuV2l0aENvbnRleHQsXG4gIC8vIFV0aWxpdGllc1xuICBpc0ZhY3QsXG4gIGlzSW5mZXJlbmNlLFxuICBjYWxjdWxhdGVCcmllclNjb3JlLFxuICBpc1dlbGxDYWxpYnJhdGVkLFxuICBjYWxjdWxhdGVQYXNzQXRLLFxuICBpc1JlbGlhYmxlRXZhbHVhdGlvbixcbiAgaXNIaWdoUmlzayxcbiAgbmVlZHNBdHRlbnRpb24sXG4gIC8vIFJPSSBoZWxwZXJzXG4gIGNhbGN1bGF0ZVJldmVudWVBdFJpc2ssXG4gIGZvcm1hdEN1cnJlbmN5LFxuICAvLyBRdWFsaXR5IGhlbHBlcnNcbiAgcGFzc2VzUXVhbGl0eVRocmVzaG9sZCxcbiAgaXNIYWxsdWNpbmF0aW9uUmlza0FjY2VwdGFibGUsXG4gIC8vIEJ1c2luZXNzIE1ldHJpY3MgaGVscGVyc1xuICBpc01ldHJpY1JlYWR5LFxuICBuZWVkc01vcmVUcmFjZXMsXG4gIGdldFN0YXR1c01lc3NhZ2UsXG59O1xuIl19
|
|
@@ -152,11 +152,7 @@ export declare const linking: {
|
|
|
152
152
|
verify(linkId: string, options: {
|
|
153
153
|
verified: boolean;
|
|
154
154
|
notes?: string;
|
|
155
|
-
}): Promise<
|
|
156
|
-
linkId: string;
|
|
157
|
-
verified: boolean;
|
|
158
|
-
message: string;
|
|
159
|
-
}>;
|
|
155
|
+
}): Promise<LinkResponse>;
|
|
160
156
|
/**
|
|
161
157
|
* Delete a link
|
|
162
158
|
*
|
|
@@ -167,25 +163,35 @@ export declare const linking: {
|
|
|
167
163
|
*/
|
|
168
164
|
delete(linkId: string): Promise<void>;
|
|
169
165
|
/**
|
|
170
|
-
* Auto-link
|
|
166
|
+
* Auto-link a run to a ticket based on available evidence
|
|
171
167
|
*
|
|
172
168
|
* @example
|
|
173
169
|
* ```typescript
|
|
174
|
-
* const
|
|
175
|
-
*
|
|
170
|
+
* const link = await linking.autoLink('run_abc123');
|
|
171
|
+
* if (link) {
|
|
176
172
|
* console.log(`Linked to ${link.ticketId} via ${link.method}`);
|
|
177
173
|
* }
|
|
178
174
|
* ```
|
|
179
175
|
*/
|
|
180
|
-
autoLink(runId: string): Promise<
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
176
|
+
autoLink(runId: string): Promise<LinkResponse | null>;
|
|
177
|
+
stats(): Promise<{
|
|
178
|
+
totalLinks: number;
|
|
179
|
+
byMethod: Record<string, number>;
|
|
180
|
+
avgConfidence: number;
|
|
181
|
+
verifiedCount: number;
|
|
182
|
+
unverifiedCount: number;
|
|
183
|
+
}>;
|
|
184
|
+
generateMarker(options: {
|
|
185
|
+
traceId: string;
|
|
186
|
+
runId?: string;
|
|
187
|
+
format?: "html_comment" | "base64" | "custom";
|
|
188
|
+
customTemplate?: string;
|
|
189
|
+
}): Promise<{
|
|
190
|
+
marker: string;
|
|
191
|
+
format: string;
|
|
192
|
+
traceId: string;
|
|
193
|
+
runId: string | null;
|
|
194
|
+
instructions: string;
|
|
189
195
|
}>;
|
|
190
196
|
};
|
|
191
197
|
/**
|
|
@@ -95,6 +95,49 @@ exports.LINK_METHOD_CONFIDENCE = {
|
|
|
95
95
|
email_time_window: 0.6, // Email + 15min window (lowest confidence)
|
|
96
96
|
manual: 1.0, // Human-assigned
|
|
97
97
|
};
|
|
98
|
+
/**
|
|
99
|
+
* Transform V3 evidence ({ type, data }) into SDK LinkEvidence shape ({ method, confidence, timestamp, details })
|
|
100
|
+
*/
|
|
101
|
+
function normalizeEvidence(raw, method, confidence, createdAt) {
|
|
102
|
+
// V3 API returns evidence as { type: string, data: Record<string, unknown> }
|
|
103
|
+
const v3Evidence = raw;
|
|
104
|
+
const data = v3Evidence?.data ?? {};
|
|
105
|
+
return {
|
|
106
|
+
method,
|
|
107
|
+
confidence,
|
|
108
|
+
timestamp: data.callTimestamp ?? data.verifiedAt ?? createdAt,
|
|
109
|
+
details: {
|
|
110
|
+
runId: data.runId,
|
|
111
|
+
ticketId: data.ticketId,
|
|
112
|
+
externalTicketId: data.externalTicketId,
|
|
113
|
+
platform: data.platform,
|
|
114
|
+
sessionId: data.sessionId,
|
|
115
|
+
email: (data.customerEmail ?? data.email),
|
|
116
|
+
timeWindowMinutes: data.timeWindowSeconds != null ? Number(data.timeWindowSeconds) / 60 : undefined,
|
|
117
|
+
customFieldName: data.fieldName,
|
|
118
|
+
customFieldValue: data.fieldValue,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Normalize a raw v3 link into the SDK's LinkResponse shape
|
|
124
|
+
*/
|
|
125
|
+
function normalizeLink(raw) {
|
|
126
|
+
const method = raw.linkMethod;
|
|
127
|
+
const parsedConfidence = typeof raw.confidence === 'string' ? Number(raw.confidence) : raw.confidence;
|
|
128
|
+
const confidence = Number.isFinite(parsedConfidence) ? parsedConfidence : (exports.LINK_METHOD_CONFIDENCE[method] ?? 0);
|
|
129
|
+
return {
|
|
130
|
+
id: raw.id,
|
|
131
|
+
runId: (raw.runId ?? raw.traceId ?? ''),
|
|
132
|
+
ticketId: raw.ticketId ?? undefined,
|
|
133
|
+
externalTicketId: raw.ticketExternalId ?? undefined,
|
|
134
|
+
platform: raw.ticketExternalSource ?? undefined,
|
|
135
|
+
method,
|
|
136
|
+
confidence,
|
|
137
|
+
evidence: normalizeEvidence(raw.evidence, method, confidence, raw.createdAt),
|
|
138
|
+
createdAt: raw.createdAt,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
98
141
|
/**
|
|
99
142
|
* Linking API client
|
|
100
143
|
*/
|
|
@@ -121,13 +164,34 @@ exports.linking = {
|
|
|
121
164
|
* ```
|
|
122
165
|
*/
|
|
123
166
|
async create(input) {
|
|
124
|
-
|
|
167
|
+
// Build method-specific evidence data
|
|
168
|
+
const baseEvidence = {
|
|
169
|
+
...input.evidence,
|
|
170
|
+
sdkVersion: '4.0.0',
|
|
171
|
+
callTimestamp: new Date().toISOString(),
|
|
172
|
+
};
|
|
173
|
+
// For sdk_explicit, add ticketIdSource (required by SdkExplicitEvidenceSchema)
|
|
174
|
+
const evidenceData = input.method === 'sdk_explicit'
|
|
175
|
+
? { ...baseEvidence, ticketIdSource: 'sdk_parameter' }
|
|
176
|
+
: baseEvidence;
|
|
177
|
+
const raw = await (0, client_1.apiRequestWithData)('/links', {
|
|
125
178
|
method: 'POST',
|
|
179
|
+
apiVersion: 'v3',
|
|
126
180
|
body: {
|
|
127
|
-
|
|
181
|
+
traceId: input.runId, // V3 maps run to trace
|
|
182
|
+
runId: input.runId,
|
|
183
|
+
ticketId: input.ticketId,
|
|
184
|
+
ticketExternalId: input.externalTicketId,
|
|
185
|
+
ticketExternalSource: input.platform,
|
|
186
|
+
linkMethod: input.method,
|
|
128
187
|
confidence: exports.LINK_METHOD_CONFIDENCE[input.method],
|
|
188
|
+
evidence: {
|
|
189
|
+
type: input.method,
|
|
190
|
+
data: evidenceData,
|
|
191
|
+
},
|
|
129
192
|
},
|
|
130
193
|
});
|
|
194
|
+
return normalizeLink(raw);
|
|
131
195
|
},
|
|
132
196
|
/**
|
|
133
197
|
* Get links for a run
|
|
@@ -138,7 +202,9 @@ exports.linking = {
|
|
|
138
202
|
* ```
|
|
139
203
|
*/
|
|
140
204
|
async getForRun(runId) {
|
|
141
|
-
|
|
205
|
+
const params = new URLSearchParams({ runId });
|
|
206
|
+
const result = await (0, client_1.apiRequestWithData)(`/links?${params}`, { apiVersion: 'v3' });
|
|
207
|
+
return (result.links || []).map(normalizeLink);
|
|
142
208
|
},
|
|
143
209
|
/**
|
|
144
210
|
* Get links for a ticket
|
|
@@ -149,7 +215,9 @@ exports.linking = {
|
|
|
149
215
|
* ```
|
|
150
216
|
*/
|
|
151
217
|
async getForTicket(ticketId) {
|
|
152
|
-
|
|
218
|
+
const params = new URLSearchParams({ ticketId });
|
|
219
|
+
const result = await (0, client_1.apiRequestWithData)(`/links?${params}`, { apiVersion: 'v3' });
|
|
220
|
+
return (result.links || []).map(normalizeLink);
|
|
153
221
|
},
|
|
154
222
|
/**
|
|
155
223
|
* Verify a link (confirm or reject)
|
|
@@ -163,10 +231,12 @@ exports.linking = {
|
|
|
163
231
|
* ```
|
|
164
232
|
*/
|
|
165
233
|
async verify(linkId, options) {
|
|
166
|
-
|
|
234
|
+
const raw = await (0, client_1.apiRequestWithData)(`/links/${linkId}/verify`, {
|
|
167
235
|
method: 'POST',
|
|
168
|
-
|
|
236
|
+
apiVersion: 'v3',
|
|
237
|
+
body: { linkId, ...options },
|
|
169
238
|
});
|
|
239
|
+
return normalizeLink(raw);
|
|
170
240
|
},
|
|
171
241
|
/**
|
|
172
242
|
* Delete a link
|
|
@@ -177,22 +247,35 @@ exports.linking = {
|
|
|
177
247
|
* ```
|
|
178
248
|
*/
|
|
179
249
|
async delete(linkId) {
|
|
180
|
-
await (0, client_1.apiRequest)(`/links/${linkId}`, { method: 'DELETE' });
|
|
250
|
+
await (0, client_1.apiRequest)(`/links/${linkId}`, { method: 'DELETE', apiVersion: 'v3' });
|
|
181
251
|
},
|
|
182
252
|
/**
|
|
183
|
-
* Auto-link
|
|
253
|
+
* Auto-link a run to a ticket based on available evidence
|
|
184
254
|
*
|
|
185
255
|
* @example
|
|
186
256
|
* ```typescript
|
|
187
|
-
* const
|
|
188
|
-
*
|
|
257
|
+
* const link = await linking.autoLink('run_abc123');
|
|
258
|
+
* if (link) {
|
|
189
259
|
* console.log(`Linked to ${link.ticketId} via ${link.method}`);
|
|
190
260
|
* }
|
|
191
261
|
* ```
|
|
192
262
|
*/
|
|
193
263
|
async autoLink(runId) {
|
|
194
|
-
|
|
264
|
+
const raw = await (0, client_1.apiRequestWithData)(`/links/auto`, {
|
|
265
|
+
method: 'POST',
|
|
266
|
+
apiVersion: 'v3',
|
|
267
|
+
body: { traceId: runId, hints: {} },
|
|
268
|
+
});
|
|
269
|
+
return raw ? normalizeLink(raw) : null;
|
|
270
|
+
},
|
|
271
|
+
async stats() {
|
|
272
|
+
return (0, client_1.apiRequestWithData)('/links/stats', { apiVersion: 'v3' });
|
|
273
|
+
},
|
|
274
|
+
async generateMarker(options) {
|
|
275
|
+
return (0, client_1.apiRequestWithData)('/links/zendesk-marker', {
|
|
195
276
|
method: 'POST',
|
|
277
|
+
apiVersion: 'v3',
|
|
278
|
+
body: options,
|
|
196
279
|
});
|
|
197
280
|
},
|
|
198
281
|
};
|
|
@@ -256,4 +339,4 @@ function getConfidenceLevel(confidence) {
|
|
|
256
339
|
return 'medium';
|
|
257
340
|
return 'low';
|
|
258
341
|
}
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWxpbmtpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZWdyYXRpb25zL3RpY2tldC1saW5raW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBOEJILHNEQUtDO0FBWUQsZ0RBR0M7QUFLRCw0Q0FFQztBQVlELGtEQUVDO0FBcU1ELDBDQVNDO0FBS0Qsd0RBVUM7QUFLRCw4Q0FpQkM7QUFLRCxvREFFQztBQUtELGdEQU9DO0FBM1VELDJDQUFnRTtBQUdoRSwrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEtBQWE7SUFDakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxPQUFPLEdBQUcsYUFBYSxHQUFHLEtBQUssR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7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Q0FDL0IsU0FPQztJQUVELElBQUksU0FBUyxDQUFDLFdBQVc7UUFBRSxPQUFPLGNBQWMsQ0FBQztJQUNqRCxJQUFJLFNBQVMsQ0FBQyxTQUFTO1FBQUUsT0FBTyxnQkFBZ0IsQ0FBQztJQUNqRCxJQUFJLFNBQVMsQ0FBQyxjQUFjO1FBQUUsT0FBTyxjQUFjLENBQUM7SUFDcEQsSUFBSSxTQUFTLENBQUMsa0JBQWtCO1FBQUUsT0FBTyxrQkFBa0IsQ0FBQztJQUM1RCxJQUFJLFNBQVMsQ0FBQyxZQUFZO1FBQUUsT0FBTyxlQUFlLENBQUM7SUFDbkQsSUFBSSxTQUFTLENBQUMsUUFBUTtRQUFFLE9BQU8sbUJBQW1CLENBQUM7SUFDbkQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxVQUFrQjtJQUNyRCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsVUFBa0I7SUFFbEIsSUFBSSxVQUFVLElBQUksR0FBRztRQUFFLE9BQU8sWUFBWSxDQUFDO0lBQzNDLElBQUksVUFBVSxJQUFJLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUN0QyxJQUFJLFVBQVUsSUFBSSxHQUFHO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDdkMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjAgLSBUaWNrZXQgTGlua2luZ1xuICpcbiAqIERldGVybWluaXN0aWMgbGlua2luZyBiZXR3ZWVuIHJ1bnMgYW5kIHN1cHBvcnQgdGlja2V0c1xuICogNyBsaW5rIG1ldGhvZHMgd2l0aCBleHBsaWNpdCBjb25maWRlbmNlIHNjb3Jlc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3QsIGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgTGlua01ldGhvZCB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBaRU5ERVNLIE1BUktFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFplbmRlc2sgbWFya2VyIGZvcm1hdDogW1RISUQ6cnVuX3h4eF1cbiAqIEVtYmVkZGVkIGluIGFnZW50IHJlc3BvbnNlcyBmb3IgZGV0ZXJtaW5pc3RpYyBsaW5raW5nXG4gKi9cbmNvbnN0IE1BUktFUl9QUkVGSVggPSAnW1RISUQ6JztcbmNvbnN0IE1BUktFUl9TVUZGSVggPSAnXSc7XG5jb25zdCBNQVJLRVJfUkVHRVggPSAvXFxbVEhJRDooW2EtekEtWjAtOV8tXSspXFxdLztcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIFplbmRlc2sgbWFya2VyIHRvIGVtYmVkIGluIGFnZW50IHJlc3BvbnNlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBydW5JZCA9ICdydW5fYWJjMTIzJztcbiAqIGNvbnN0IG1hcmtlciA9IGdlbmVyYXRlWmVuZGVza01hcmtlcihydW5JZCk7XG4gKiAvLyBSZXR1cm5zOiAnW1RISUQ6cnVuX2FiYzEyM10nXG4gKlxuICogLy8gQXBwZW5kIHRvIHlvdXIgYWdlbnQgcmVzcG9uc2U6XG4gKiBjb25zdCByZXNwb25zZSA9IGBJJ3ZlIGZvdW5kIHlvdXIgb3JkZXIuICR7bWFya2VyfWA7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlWmVuZGVza01hcmtlcihydW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFydW5JZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUnVuIElEIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIFplbmRlc2sgbWFya2VyJyk7XG4gIH1cbiAgcmV0dXJuIGAke01BUktFUl9QUkVGSVh9JHtydW5JZH0ke01BUktFUl9TVUZGSVh9YDtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIFplbmRlc2sgbWFya2VyIGZyb20gdGV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0ZXh0ID0gJ1RoYW5rIHlvdSBmb3IgY29udGFjdGluZyB1cy4gW1RISUQ6cnVuX2FiYzEyM10nO1xuICogY29uc3QgcnVuSWQgPSBwYXJzZVplbmRlc2tNYXJrZXIodGV4dCk7XG4gKiAvLyBSZXR1cm5zOiAncnVuX2FiYzEyMydcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VaZW5kZXNrTWFya2VyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goTUFSS0VSX1JFR0VYKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRleHQgY29udGFpbnMgYSBaZW5kZXNrIG1hcmtlclxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzWmVuZGVza01hcmtlcih0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIE1BUktFUl9SRUdFWC50ZXN0KHRleHQpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBaZW5kZXNrIG1hcmtlciBmcm9tIHRleHQgKGZvciBjbGVhbiBkaXNwbGF5KVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB0ZXh0ID0gJ1RoYW5rIHlvdSEgW1RISUQ6cnVuX2FiYzEyM10nO1xuICogY29uc3QgY2xlYW4gPSByZW1vdmVaZW5kZXNrTWFya2VyKHRleHQpO1xuICogLy8gUmV0dXJuczogJ1RoYW5rIHlvdSEnXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVplbmRlc2tNYXJrZXIodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZShNQVJLRVJfUkVHRVgsICcnKS50cmltKCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTksgTUVUSE9EUyAmIENPTkZJREVOQ0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWRlbmNlIHNjb3JlcyBmb3IgZWFjaCBsaW5rIG1ldGhvZFxuICogQmFzZWQgb24gZGV0ZXJtaW5pc3RpYyBsaW5raW5nIHByaW5jaXBsZXMgZnJvbSB2MyBzcGVjXG4gKi9cbmV4cG9ydCBjb25zdCBMSU5LX01FVEhPRF9DT05GSURFTkNFOiBSZWNvcmQ8TGlua01ldGhvZCwgbnVtYmVyPiA9IHtcbiAgc2RrX2V4cGxpY2l0OiAxLjAsICAgICAgLy8gRGlyZWN0IFNESyBjYWxsIHdpdGggdGlja2V0IElEXG4gIHplbmRlc2tfbWFya2VyOiAxLjAsICAgIC8vIEVtYmVkZGVkIFRISUQgbWFya2VyIGluIHJlc3BvbnNlXG4gIGN1c3RvbV9maWVsZDogMS4wLCAgICAgIC8vIFplbmRlc2sgY3VzdG9tIGZpZWxkXG4gIG1pZGRsZXdhcmVfc3RhbXA6IDAuOTgsIC8vIE1pZGRsZXdhcmUtaW5qZWN0ZWQgdHJhY2UgSURcbiAgc2Vzc2lvbl9tYXRjaDogMC45NSwgICAgLy8gU2Vzc2lvbiBJRCBjb3JyZWxhdGlvblxuICBlbWFpbF90aW1lX3dpbmRvdzogMC42LCAvLyBFbWFpbCArIDE1bWluIHdpbmRvdyAobG93ZXN0IGNvbmZpZGVuY2UpXG4gIG1hbnVhbDogMS4wLCAgICAgICAgICAgIC8vIEh1bWFuLWFzc2lnbmVkXG59O1xuXG4vKipcbiAqIExpbmsgZXZpZGVuY2Ugc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0V2aWRlbmNlIHtcbiAgbWV0aG9kOiBMaW5rTWV0aG9kO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICBkZXRhaWxzOiB7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gICAgZXh0ZXJuYWxUaWNrZXRJZD86IHN0cmluZztcbiAgICBwbGF0Zm9ybT86IHN0cmluZztcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgdGltZVdpbmRvd01pbnV0ZXM/OiBudW1iZXI7XG4gICAgY3VzdG9tRmllbGROYW1lPzogc3RyaW5nO1xuICAgIGN1c3RvbUZpZWxkVmFsdWU/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTktJTkcgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGxpbmsgaW5wdXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVMaW5rSW5wdXQge1xuICBydW5JZDogc3RyaW5nO1xuICB0aWNrZXRJZD86IHN0cmluZztcbiAgZXh0ZXJuYWxUaWNrZXRJZD86IHN0cmluZztcbiAgcGxhdGZvcm0/OiAnemVuZGVzaycgfCAnaW50ZXJjb20nIHwgJ3NhbGVzZm9yY2UnIHwgJ2ZyZXNoZGVzayc7XG4gIG1ldGhvZDogTGlua01ldGhvZDtcbiAgZXZpZGVuY2U/OiBQYXJ0aWFsPExpbmtFdmlkZW5jZVsnZGV0YWlscyddPjtcbn1cblxuLyoqXG4gKiBMaW5rIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua1Jlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gIGV4dGVybmFsVGlja2V0SWQ/OiBzdHJpbmc7XG4gIHBsYXRmb3JtPzogc3RyaW5nO1xuICBtZXRob2Q6IExpbmtNZXRob2Q7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgZXZpZGVuY2U6IExpbmtFdmlkZW5jZTtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGlua2luZyBBUEkgY2xpZW50XG4gKi9cbmV4cG9ydCBjb25zdCBsaW5raW5nID0ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbGluayBiZXR3ZWVuIGEgcnVuIGFuZCBhIHRpY2tldFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFNESyBleHBsaWNpdCBsaW5raW5nIChoaWdoZXN0IGNvbmZpZGVuY2UpXG4gICAqIGNvbnN0IGxpbmsgPSBhd2FpdCBsaW5raW5nLmNyZWF0ZSh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICB0aWNrZXRJZDogJ3RpY2tldF94eXonLFxuICAgKiAgIG1ldGhvZDogJ3Nka19leHBsaWNpdCcsXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBaZW5kZXNrIG1hcmtlciBsaW5raW5nXG4gICAqIGNvbnN0IGxpbmsgPSBhd2FpdCBsaW5raW5nLmNyZWF0ZSh7XG4gICAqICAgcnVuSWQ6ICdydW5fYWJjMTIzJyxcbiAgICogICBleHRlcm5hbFRpY2tldElkOiAnMTIzNDUnLFxuICAgKiAgIHBsYXRmb3JtOiAnemVuZGVzaycsXG4gICAqICAgbWV0aG9kOiAnemVuZGVza19tYXJrZXInLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBjcmVhdGUoaW5wdXQ6IENyZWF0ZUxpbmtJbnB1dCk6IFByb21pc2U8TGlua1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxMaW5rUmVzcG9uc2U+KCcvbGlua3MnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgIGNvbmZpZGVuY2U6IExJTktfTUVUSE9EX0NPTkZJREVOQ0VbaW5wdXQubWV0aG9kXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBsaW5rcyBmb3IgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaW5rcyA9IGF3YWl0IGxpbmtpbmcuZ2V0Rm9yUnVuKCdydW5fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0Rm9yUnVuKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPExpbmtSZXNwb25zZVtdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxMaW5rUmVzcG9uc2VbXT4oYC9ydW5zLyR7cnVuSWR9L2xpbmtzYCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBsaW5rcyBmb3IgYSB0aWNrZXRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaW5rcyA9IGF3YWl0IGxpbmtpbmcuZ2V0Rm9yVGlja2V0KCd0aWNrZXRfeHl6Jyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0Rm9yVGlja2V0KHRpY2tldElkOiBzdHJpbmcpOiBQcm9taXNlPExpbmtSZXNwb25zZVtdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxMaW5rUmVzcG9uc2VbXT4oYC90aWNrZXRzLyR7dGlja2V0SWR9L2xpbmtzYCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZlcmlmeSBhIGxpbmsgKGNvbmZpcm0gb3IgcmVqZWN0KVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGxpbmtpbmcudmVyaWZ5KCdsaW5rX2FiYzEyMycsIHtcbiAgICogICB2ZXJpZmllZDogdHJ1ZSxcbiAgICogICBub3RlczogJ0NvbmZpcm1lZCBieSBzdXBwb3J0IGFnZW50JyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5KFxuICAgIGxpbmtJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgdmVyaWZpZWQ6IGJvb2xlYW47IG5vdGVzPzogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTx7IGxpbmtJZDogc3RyaW5nOyB2ZXJpZmllZDogYm9vbGVhbjsgbWVzc2FnZTogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKGAvbGlua3MvJHtsaW5rSWR9L3ZlcmlmeWAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlIGEgbGlua1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGxpbmtpbmcuZGVsZXRlKCdsaW5rX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShsaW5rSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGFwaVJlcXVlc3QoYC9saW5rcy8ke2xpbmtJZH1gLCB7IG1ldGhvZDogJ0RFTEVURScgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEF1dG8tbGluayBydW5zIHRvIHRpY2tldHMgYmFzZWQgb24gYXZhaWxhYmxlIGV2aWRlbmNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0cyA9IGF3YWl0IGxpbmtpbmcuYXV0b0xpbmsoJ3J1bl9hYmMxMjMnKTtcbiAgICogZm9yIChjb25zdCBsaW5rIG9mIHJlc3VsdHMuY3JlYXRlZCkge1xuICAgKiAgIGNvbnNvbGUubG9nKGBMaW5rZWQgdG8gJHtsaW5rLnRpY2tldElkfSB2aWEgJHtsaW5rLm1ldGhvZH1gKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGF1dG9MaW5rKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPHtcbiAgICBydW5JZDogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IExpbmtSZXNwb25zZVtdO1xuICAgIGNhbmRpZGF0ZXM6IEFycmF5PHtcbiAgICAgIHRpY2tldElkOiBzdHJpbmc7XG4gICAgICBtZXRob2Q6IExpbmtNZXRob2Q7XG4gICAgICBjb25maWRlbmNlOiBudW1iZXI7XG4gICAgICByZWFzb246IHN0cmluZztcbiAgICB9PjtcbiAgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ydW5zLyR7cnVuSWR9L2F1dG8tbGlua2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBTREsgZXhwbGljaXQgbGluayAoY29udmVuaWVuY2UgZnVuY3Rpb24pXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW5rUnVuVG9UaWNrZXQoXG4gIHJ1bklkOiBzdHJpbmcsXG4gIHRpY2tldElkOiBzdHJpbmdcbik6IFByb21pc2U8TGlua1Jlc3BvbnNlPiB7XG4gIHJldHVybiBsaW5raW5nLmNyZWF0ZSh7XG4gICAgcnVuSWQsXG4gICAgdGlja2V0SWQsXG4gICAgbWV0aG9kOiAnc2RrX2V4cGxpY2l0JyxcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIFplbmRlc2sgbGluayB2aWEgbWFya2VyXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW5rUnVuVG9aZW5kZXNrVGlja2V0KFxuICBydW5JZDogc3RyaW5nLFxuICB6ZW5kZXNrVGlja2V0SWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxMaW5rUmVzcG9uc2U+IHtcbiAgcmV0dXJuIGxpbmtpbmcuY3JlYXRlKHtcbiAgICBydW5JZCxcbiAgICBleHRlcm5hbFRpY2tldElkOiB6ZW5kZXNrVGlja2V0SWQsXG4gICAgcGxhdGZvcm06ICd6ZW5kZXNrJyxcbiAgICBtZXRob2Q6ICd6ZW5kZXNrX21hcmtlcicsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgYmVzdCBsaW5rIG1ldGhvZCBmb3IgYSBnaXZlbiBzY2VuYXJpb1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmVzdExpbmtNZXRob2QoXG4gIGF2YWlsYWJsZToge1xuICAgIGhhc1RpY2tldElkOiBib29sZWFuO1xuICAgIGhhc01hcmtlcjogYm9vbGVhbjtcbiAgICBoYXNDdXN0b21GaWVsZDogYm9vbGVhbjtcbiAgICBoYXNNaWRkbGV3YXJlU3RhbXA6IGJvb2xlYW47XG4gICAgaGFzU2Vzc2lvbklkOiBib29sZWFuO1xuICAgIGhhc0VtYWlsOiBib29sZWFuO1xuICB9XG4pOiBMaW5rTWV0aG9kIHwgbnVsbCB7XG4gIGlmIChhdmFpbGFibGUuaGFzVGlja2V0SWQpIHJldHVybiAnc2RrX2V4cGxpY2l0JztcbiAgaWYgKGF2YWlsYWJsZS5oYXNNYXJrZXIpIHJldHVybiAnemVuZGVza19tYXJrZXInO1xuICBpZiAoYXZhaWxhYmxlLmhhc0N1c3RvbUZpZWxkKSByZXR1cm4gJ2N1c3RvbV9maWVsZCc7XG4gIGlmIChhdmFpbGFibGUuaGFzTWlkZGxld2FyZVN0YW1wKSByZXR1cm4gJ21pZGRsZXdhcmVfc3RhbXAnO1xuICBpZiAoYXZhaWxhYmxlLmhhc1Nlc3Npb25JZCkgcmV0dXJuICdzZXNzaW9uX21hdGNoJztcbiAgaWYgKGF2YWlsYWJsZS5oYXNFbWFpbCkgcmV0dXJuICdlbWFpbF90aW1lX3dpbmRvdyc7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEZvcm1hdCBsaW5rIGNvbmZpZGVuY2UgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdExpbmtDb25maWRlbmNlKGNvbmZpZGVuY2U6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBgJHtNYXRoLnJvdW5kKGNvbmZpZGVuY2UgKiAxMDApfSVgO1xufVxuXG4vKipcbiAqIEdldCBjb25maWRlbmNlIGxldmVsIGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWRlbmNlTGV2ZWwoXG4gIGNvbmZpZGVuY2U6IG51bWJlclxuKTogJ2RlZmluaXRpdmUnIHwgJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JyB7XG4gIGlmIChjb25maWRlbmNlID49IDEuMCkgcmV0dXJuICdkZWZpbml0aXZlJztcbiAgaWYgKGNvbmZpZGVuY2UgPj0gMC45NSkgcmV0dXJuICdoaWdoJztcbiAgaWYgKGNvbmZpZGVuY2UgPj0gMC44KSByZXR1cm4gJ21lZGl1bSc7XG4gIHJldHVybiAnbG93Jztcbn1cbiJdfQ==
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlja2V0LWxpbmtpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZWdyYXRpb25zL3RpY2tldC1saW5raW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7O0FBOEJILHNEQUtDO0FBWUQsZ0RBR0M7QUFLRCw0Q0FFQztBQVlELGtEQUVDO0FBd1RELDBDQVNDO0FBS0Qsd0RBVUM7QUFLRCw4Q0FpQkM7QUFLRCxvREFFQztBQUtELGdEQU9DO0FBOWJELDJDQUFnRTtBQUdoRSwrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLEtBQWE7SUFDakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxPQUFPLEdBQUcsYUFBYSxHQUFHLEtBQUssR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7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UUFBUSxDQUFDO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gVGlja2V0IExpbmtpbmdcbiAqXG4gKiBEZXRlcm1pbmlzdGljIGxpbmtpbmcgYmV0d2VlbiBydW5zIGFuZCBzdXBwb3J0IHRpY2tldHNcbiAqIDcgbGluayBtZXRob2RzIHdpdGggZXhwbGljaXQgY29uZmlkZW5jZSBzY29yZXNcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IExpbmtNZXRob2QgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gWkVOREVTSyBNQVJLRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBaZW5kZXNrIG1hcmtlciBmb3JtYXQ6IFtUSElEOnJ1bl94eHhdXG4gKiBFbWJlZGRlZCBpbiBhZ2VudCByZXNwb25zZXMgZm9yIGRldGVybWluaXN0aWMgbGlua2luZ1xuICovXG5jb25zdCBNQVJLRVJfUFJFRklYID0gJ1tUSElEOic7XG5jb25zdCBNQVJLRVJfU1VGRklYID0gJ10nO1xuY29uc3QgTUFSS0VSX1JFR0VYID0gL1xcW1RISUQ6KFthLXpBLVowLTlfLV0rKVxcXS87XG5cbi8qKlxuICogR2VuZXJhdGUgYSBaZW5kZXNrIG1hcmtlciB0byBlbWJlZCBpbiBhZ2VudCByZXNwb25zZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVuSWQgPSAncnVuX2FiYzEyMyc7XG4gKiBjb25zdCBtYXJrZXIgPSBnZW5lcmF0ZVplbmRlc2tNYXJrZXIocnVuSWQpO1xuICogLy8gUmV0dXJuczogJ1tUSElEOnJ1bl9hYmMxMjNdJ1xuICpcbiAqIC8vIEFwcGVuZCB0byB5b3VyIGFnZW50IHJlc3BvbnNlOlxuICogY29uc3QgcmVzcG9uc2UgPSBgSSd2ZSBmb3VuZCB5b3VyIG9yZGVyLiAke21hcmtlcn1gO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVplbmRlc2tNYXJrZXIocnVuSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghcnVuSWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1biBJRCBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSBaZW5kZXNrIG1hcmtlcicpO1xuICB9XG4gIHJldHVybiBgJHtNQVJLRVJfUFJFRklYfSR7cnVuSWR9JHtNQVJLRVJfU1VGRklYfWA7XG59XG5cbi8qKlxuICogUGFyc2UgYSBaZW5kZXNrIG1hcmtlciBmcm9tIHRleHRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9ICdUaGFuayB5b3UgZm9yIGNvbnRhY3RpbmcgdXMuIFtUSElEOnJ1bl9hYmMxMjNdJztcbiAqIGNvbnN0IHJ1bklkID0gcGFyc2VaZW5kZXNrTWFya2VyKHRleHQpO1xuICogLy8gUmV0dXJuczogJ3J1bl9hYmMxMjMnXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlWmVuZGVza01hcmtlcih0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKE1BUktFUl9SRUdFWCk7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0ZXh0IGNvbnRhaW5zIGEgWmVuZGVzayBtYXJrZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1plbmRlc2tNYXJrZXIodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBNQVJLRVJfUkVHRVgudGVzdCh0ZXh0KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgWmVuZGVzayBtYXJrZXIgZnJvbSB0ZXh0IChmb3IgY2xlYW4gZGlzcGxheSlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdGV4dCA9ICdUaGFuayB5b3UhIFtUSElEOnJ1bl9hYmMxMjNdJztcbiAqIGNvbnN0IGNsZWFuID0gcmVtb3ZlWmVuZGVza01hcmtlcih0ZXh0KTtcbiAqIC8vIFJldHVybnM6ICdUaGFuayB5b3UhJ1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVaZW5kZXNrTWFya2VyKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoTUFSS0VSX1JFR0VYLCAnJykudHJpbSgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5LIE1FVEhPRFMgJiBDT05GSURFTkNFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29uZmlkZW5jZSBzY29yZXMgZm9yIGVhY2ggbGluayBtZXRob2RcbiAqIEJhc2VkIG9uIGRldGVybWluaXN0aWMgbGlua2luZyBwcmluY2lwbGVzIGZyb20gdjMgc3BlY1xuICovXG5leHBvcnQgY29uc3QgTElOS19NRVRIT0RfQ09ORklERU5DRTogUmVjb3JkPExpbmtNZXRob2QsIG51bWJlcj4gPSB7XG4gIHNka19leHBsaWNpdDogMS4wLCAgICAgIC8vIERpcmVjdCBTREsgY2FsbCB3aXRoIHRpY2tldCBJRFxuICB6ZW5kZXNrX21hcmtlcjogMS4wLCAgICAvLyBFbWJlZGRlZCBUSElEIG1hcmtlciBpbiByZXNwb25zZVxuICBjdXN0b21fZmllbGQ6IDEuMCwgICAgICAvLyBaZW5kZXNrIGN1c3RvbSBmaWVsZFxuICBtaWRkbGV3YXJlX3N0YW1wOiAwLjk4LCAvLyBNaWRkbGV3YXJlLWluamVjdGVkIHRyYWNlIElEXG4gIHNlc3Npb25fbWF0Y2g6IDAuOTUsICAgIC8vIFNlc3Npb24gSUQgY29ycmVsYXRpb25cbiAgZW1haWxfdGltZV93aW5kb3c6IDAuNiwgLy8gRW1haWwgKyAxNW1pbiB3aW5kb3cgKGxvd2VzdCBjb25maWRlbmNlKVxuICBtYW51YWw6IDEuMCwgICAgICAgICAgICAvLyBIdW1hbi1hc3NpZ25lZFxufTtcblxuLyoqXG4gKiBMaW5rIGV2aWRlbmNlIHN0cnVjdHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtFdmlkZW5jZSB7XG4gIG1ldGhvZDogTGlua01ldGhvZDtcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgZGV0YWlsczoge1xuICAgIHJ1bklkPzogc3RyaW5nO1xuICAgIHRpY2tldElkPzogc3RyaW5nO1xuICAgIGV4dGVybmFsVGlja2V0SWQ/OiBzdHJpbmc7XG4gICAgcGxhdGZvcm0/OiBzdHJpbmc7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHRpbWVXaW5kb3dNaW51dGVzPzogbnVtYmVyO1xuICAgIGN1c3RvbUZpZWxkTmFtZT86IHN0cmluZztcbiAgICBjdXN0b21GaWVsZFZhbHVlPzogc3RyaW5nO1xuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5LSU5HIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBsaW5rIGlucHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTGlua0lucHV0IHtcbiAgcnVuSWQ6IHN0cmluZztcbiAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gIGV4dGVybmFsVGlja2V0SWQ/OiBzdHJpbmc7XG4gIHBsYXRmb3JtPzogJ3plbmRlc2snIHwgJ2ludGVyY29tJyB8ICdzYWxlc2ZvcmNlJyB8ICdmcmVzaGRlc2snO1xuICBtZXRob2Q6IExpbmtNZXRob2Q7XG4gIGV2aWRlbmNlPzogUGFydGlhbDxMaW5rRXZpZGVuY2VbJ2RldGFpbHMnXT47XG59XG5cbi8qKlxuICogTGluayByZXNwb25zZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHRpY2tldElkPzogc3RyaW5nO1xuICBleHRlcm5hbFRpY2tldElkPzogc3RyaW5nO1xuICBwbGF0Zm9ybT86IHN0cmluZztcbiAgbWV0aG9kOiBMaW5rTWV0aG9kO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGV2aWRlbmNlOiBMaW5rRXZpZGVuY2U7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJhdyBsaW5rIHNoYXBlIHJldHVybmVkIGJ5IHYzIEFQSSAoZGlmZmVycyBmcm9tIFNESydzIExpbmtSZXNwb25zZSlcbiAqL1xuaW50ZXJmYWNlIFJhd1YzTGluayB7XG4gIGlkOiBzdHJpbmc7XG4gIHRyYWNlSWQ/OiBzdHJpbmc7XG4gIHJ1bklkPzogc3RyaW5nIHwgbnVsbDtcbiAgdGlja2V0SWQ/OiBzdHJpbmcgfCBudWxsO1xuICB0aWNrZXRFeHRlcm5hbElkPzogc3RyaW5nIHwgbnVsbDtcbiAgdGlja2V0RXh0ZXJuYWxTb3VyY2U/OiBzdHJpbmcgfCBudWxsO1xuICBsaW5rTWV0aG9kOiBzdHJpbmc7XG4gIGNvbmZpZGVuY2U6IHN0cmluZyB8IG51bWJlcjtcbiAgZXZpZGVuY2U6IHVua25vd247XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBWMyBldmlkZW5jZSAoeyB0eXBlLCBkYXRhIH0pIGludG8gU0RLIExpbmtFdmlkZW5jZSBzaGFwZSAoeyBtZXRob2QsIGNvbmZpZGVuY2UsIHRpbWVzdGFtcCwgZGV0YWlscyB9KVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVFdmlkZW5jZShyYXc6IHVua25vd24sIG1ldGhvZDogTGlua01ldGhvZCwgY29uZmlkZW5jZTogbnVtYmVyLCBjcmVhdGVkQXQ6IHN0cmluZyk6IExpbmtFdmlkZW5jZSB7XG4gIC8vIFYzIEFQSSByZXR1cm5zIGV2aWRlbmNlIGFzIHsgdHlwZTogc3RyaW5nLCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9XG4gIGNvbnN0IHYzRXZpZGVuY2UgPSByYXcgYXMgeyB0eXBlPzogc3RyaW5nOyBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSB8IG51bGw7XG4gIGNvbnN0IGRhdGEgPSB2M0V2aWRlbmNlPy5kYXRhID8/IHt9O1xuXG4gIHJldHVybiB7XG4gICAgbWV0aG9kLFxuICAgIGNvbmZpZGVuY2UsXG4gICAgdGltZXN0YW1wOiAoZGF0YS5jYWxsVGltZXN0YW1wIGFzIHN0cmluZykgPz8gKGRhdGEudmVyaWZpZWRBdCBhcyBzdHJpbmcpID8/IGNyZWF0ZWRBdCxcbiAgICBkZXRhaWxzOiB7XG4gICAgICBydW5JZDogZGF0YS5ydW5JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICB0aWNrZXRJZDogZGF0YS50aWNrZXRJZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBleHRlcm5hbFRpY2tldElkOiBkYXRhLmV4dGVybmFsVGlja2V0SWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgcGxhdGZvcm06IGRhdGEucGxhdGZvcm0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgc2Vzc2lvbklkOiBkYXRhLnNlc3Npb25JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICBlbWFpbDogKGRhdGEuY3VzdG9tZXJFbWFpbCA/PyBkYXRhLmVtYWlsKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICB0aW1lV2luZG93TWludXRlczogZGF0YS50aW1lV2luZG93U2Vjb25kcyAhPSBudWxsID8gTnVtYmVyKGRhdGEudGltZVdpbmRvd1NlY29uZHMpIC8gNjAgOiB1bmRlZmluZWQsXG4gICAgICBjdXN0b21GaWVsZE5hbWU6IGRhdGEuZmllbGROYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgIGN1c3RvbUZpZWxkVmFsdWU6IGRhdGEuZmllbGRWYWx1ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSByYXcgdjMgbGluayBpbnRvIHRoZSBTREsncyBMaW5rUmVzcG9uc2Ugc2hhcGVcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTGluayhyYXc6IFJhd1YzTGluayk6IExpbmtSZXNwb25zZSB7XG4gIGNvbnN0IG1ldGhvZCA9IHJhdy5saW5rTWV0aG9kIGFzIExpbmtNZXRob2Q7XG4gIGNvbnN0IHBhcnNlZENvbmZpZGVuY2UgPSB0eXBlb2YgcmF3LmNvbmZpZGVuY2UgPT09ICdzdHJpbmcnID8gTnVtYmVyKHJhdy5jb25maWRlbmNlKSA6IHJhdy5jb25maWRlbmNlO1xuICBjb25zdCBjb25maWRlbmNlID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZENvbmZpZGVuY2UpID8gcGFyc2VkQ29uZmlkZW5jZSA6IChMSU5LX01FVEhPRF9DT05GSURFTkNFW21ldGhvZF0gPz8gMCk7XG5cbiAgcmV0dXJuIHtcbiAgICBpZDogcmF3LmlkLFxuICAgIHJ1bklkOiAocmF3LnJ1bklkID8/IHJhdy50cmFjZUlkID8/ICcnKSBhcyBzdHJpbmcsXG4gICAgdGlja2V0SWQ6IHJhdy50aWNrZXRJZCA/PyB1bmRlZmluZWQsXG4gICAgZXh0ZXJuYWxUaWNrZXRJZDogcmF3LnRpY2tldEV4dGVybmFsSWQgPz8gdW5kZWZpbmVkLFxuICAgIHBsYXRmb3JtOiByYXcudGlja2V0RXh0ZXJuYWxTb3VyY2UgPz8gdW5kZWZpbmVkLFxuICAgIG1ldGhvZCxcbiAgICBjb25maWRlbmNlLFxuICAgIGV2aWRlbmNlOiBub3JtYWxpemVFdmlkZW5jZShyYXcuZXZpZGVuY2UsIG1ldGhvZCwgY29uZmlkZW5jZSwgcmF3LmNyZWF0ZWRBdCksXG4gICAgY3JlYXRlZEF0OiByYXcuY3JlYXRlZEF0LFxuICB9O1xufVxuXG4vKipcbiAqIExpbmtpbmcgQVBJIGNsaWVudFxuICovXG5leHBvcnQgY29uc3QgbGlua2luZyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxpbmsgYmV0d2VlbiBhIHJ1biBhbmQgYSB0aWNrZXRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBTREsgZXhwbGljaXQgbGlua2luZyAoaGlnaGVzdCBjb25maWRlbmNlKVxuICAgKiBjb25zdCBsaW5rID0gYXdhaXQgbGlua2luZy5jcmVhdGUoe1xuICAgKiAgIHJ1bklkOiAncnVuX2FiYzEyMycsXG4gICAqICAgdGlja2V0SWQ6ICd0aWNrZXRfeHl6JyxcbiAgICogICBtZXRob2Q6ICdzZGtfZXhwbGljaXQnLFxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gWmVuZGVzayBtYXJrZXIgbGlua2luZ1xuICAgKiBjb25zdCBsaW5rID0gYXdhaXQgbGlua2luZy5jcmVhdGUoe1xuICAgKiAgIHJ1bklkOiAncnVuX2FiYzEyMycsXG4gICAqICAgZXh0ZXJuYWxUaWNrZXRJZDogJzEyMzQ1JyxcbiAgICogICBwbGF0Zm9ybTogJ3plbmRlc2snLFxuICAgKiAgIG1ldGhvZDogJ3plbmRlc2tfbWFya2VyJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKGlucHV0OiBDcmVhdGVMaW5rSW5wdXQpOiBQcm9taXNlPExpbmtSZXNwb25zZT4ge1xuICAgIC8vIEJ1aWxkIG1ldGhvZC1zcGVjaWZpYyBldmlkZW5jZSBkYXRhXG4gICAgY29uc3QgYmFzZUV2aWRlbmNlID0ge1xuICAgICAgLi4uaW5wdXQuZXZpZGVuY2UsXG4gICAgICBzZGtWZXJzaW9uOiAnNC4wLjAnLFxuICAgICAgY2FsbFRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG5cbiAgICAvLyBGb3Igc2RrX2V4cGxpY2l0LCBhZGQgdGlja2V0SWRTb3VyY2UgKHJlcXVpcmVkIGJ5IFNka0V4cGxpY2l0RXZpZGVuY2VTY2hlbWEpXG4gICAgY29uc3QgZXZpZGVuY2VEYXRhID0gaW5wdXQubWV0aG9kID09PSAnc2RrX2V4cGxpY2l0J1xuICAgICAgPyB7IC4uLmJhc2VFdmlkZW5jZSwgdGlja2V0SWRTb3VyY2U6ICdzZGtfcGFyYW1ldGVyJyBhcyBjb25zdCB9XG4gICAgICA6IGJhc2VFdmlkZW5jZTtcblxuICAgIGNvbnN0IHJhdyA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YTxSYXdWM0xpbms+KCcvbGlua3MnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgICBib2R5OiB7XG4gICAgICAgIHRyYWNlSWQ6IGlucHV0LnJ1bklkLCAvLyBWMyBtYXBzIHJ1biB0byB0cmFjZVxuICAgICAgICBydW5JZDogaW5wdXQucnVuSWQsXG4gICAgICAgIHRpY2tldElkOiBpbnB1dC50aWNrZXRJZCxcbiAgICAgICAgdGlja2V0RXh0ZXJuYWxJZDogaW5wdXQuZXh0ZXJuYWxUaWNrZXRJZCxcbiAgICAgICAgdGlja2V0RXh0ZXJuYWxTb3VyY2U6IGlucHV0LnBsYXRmb3JtLFxuICAgICAgICBsaW5rTWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgIGNvbmZpZGVuY2U6IExJTktfTUVUSE9EX0NPTkZJREVOQ0VbaW5wdXQubWV0aG9kXSxcbiAgICAgICAgZXZpZGVuY2U6IHtcbiAgICAgICAgICB0eXBlOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgZGF0YTogZXZpZGVuY2VEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gbm9ybWFsaXplTGluayhyYXcpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgbGlua3MgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSBhd2FpdCBsaW5raW5nLmdldEZvclJ1bigncnVuX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldEZvclJ1bihydW5JZDogc3RyaW5nKTogUHJvbWlzZTxMaW5rUmVzcG9uc2VbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoeyBydW5JZCB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGE8eyBsaW5rczogUmF3VjNMaW5rW10gfT4oYC9saW5rcz8ke3BhcmFtc31gLCB7IGFwaVZlcnNpb246ICd2MycgfSk7XG4gICAgcmV0dXJuIChyZXN1bHQubGlua3MgfHwgW10pLm1hcChub3JtYWxpemVMaW5rKTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGxpbmtzIGZvciBhIHRpY2tldFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGxpbmtzID0gYXdhaXQgbGlua2luZy5nZXRGb3JUaWNrZXQoJ3RpY2tldF94eXonKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRGb3JUaWNrZXQodGlja2V0SWQ6IHN0cmluZyk6IFByb21pc2U8TGlua1Jlc3BvbnNlW10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgdGlja2V0SWQgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhPHsgbGlua3M6IFJhd1YzTGlua1tdIH0+KGAvbGlua3M/JHtwYXJhbXN9YCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICAgIHJldHVybiAocmVzdWx0LmxpbmtzIHx8IFtdKS5tYXAobm9ybWFsaXplTGluayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZlcmlmeSBhIGxpbmsgKGNvbmZpcm0gb3IgcmVqZWN0KVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IGxpbmtpbmcudmVyaWZ5KCdsaW5rX2FiYzEyMycsIHtcbiAgICogICB2ZXJpZmllZDogdHJ1ZSxcbiAgICogICBub3RlczogJ0NvbmZpcm1lZCBieSBzdXBwb3J0IGFnZW50JyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdmVyaWZ5KFxuICAgIGxpbmtJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgdmVyaWZpZWQ6IGJvb2xlYW47IG5vdGVzPzogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTxMaW5rUmVzcG9uc2U+IHtcbiAgICBjb25zdCByYXcgPSBhd2FpdCBhcGlSZXF1ZXN0V2l0aERhdGE8UmF3VjNMaW5rPihgL2xpbmtzLyR7bGlua0lkfS92ZXJpZnlgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgICBib2R5OiB7IGxpbmtJZCwgLi4ub3B0aW9ucyB9LFxuICAgIH0pO1xuICAgIHJldHVybiBub3JtYWxpemVMaW5rKHJhdyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGxpbmtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBsaW5raW5nLmRlbGV0ZSgnbGlua19hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBkZWxldGUobGlua0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBhcGlSZXF1ZXN0KGAvbGlua3MvJHtsaW5rSWR9YCwgeyBtZXRob2Q6ICdERUxFVEUnLCBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBdXRvLWxpbmsgYSBydW4gdG8gYSB0aWNrZXQgYmFzZWQgb24gYXZhaWxhYmxlIGV2aWRlbmNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGluayA9IGF3YWl0IGxpbmtpbmcuYXV0b0xpbmsoJ3J1bl9hYmMxMjMnKTtcbiAgICogaWYgKGxpbmspIHtcbiAgICogICBjb25zb2xlLmxvZyhgTGlua2VkIHRvICR7bGluay50aWNrZXRJZH0gdmlhICR7bGluay5tZXRob2R9YCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBhdXRvTGluayhydW5JZDogc3RyaW5nKTogUHJvbWlzZTxMaW5rUmVzcG9uc2UgfCBudWxsPiB7XG4gICAgY29uc3QgcmF3ID0gYXdhaXQgYXBpUmVxdWVzdFdpdGhEYXRhPFJhd1YzTGluayB8IG51bGw+KGAvbGlua3MvYXV0b2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICAgIGJvZHk6IHsgdHJhY2VJZDogcnVuSWQsIGhpbnRzOiB7fSB9LFxuICAgIH0pO1xuICAgIHJldHVybiByYXcgPyBub3JtYWxpemVMaW5rKHJhdykgOiBudWxsO1xuICB9LFxuXG4gIGFzeW5jIHN0YXRzKCk6IFByb21pc2U8e1xuICAgIHRvdGFsTGlua3M6IG51bWJlcjtcbiAgICBieU1ldGhvZDogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgICBhdmdDb25maWRlbmNlOiBudW1iZXI7XG4gICAgdmVyaWZpZWRDb3VudDogbnVtYmVyO1xuICAgIHVudmVyaWZpZWRDb3VudDogbnVtYmVyO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL2xpbmtzL3N0YXRzJywgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIGFzeW5jIGdlbmVyYXRlTWFya2VyKG9wdGlvbnM6IHtcbiAgICB0cmFjZUlkOiBzdHJpbmc7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgZm9ybWF0PzogJ2h0bWxfY29tbWVudCcgfCAnYmFzZTY0JyB8ICdjdXN0b20nO1xuICAgIGN1c3RvbVRlbXBsYXRlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTx7XG4gICAgbWFya2VyOiBzdHJpbmc7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgdHJhY2VJZDogc3RyaW5nO1xuICAgIHJ1bklkOiBzdHJpbmcgfCBudWxsO1xuICAgIGluc3RydWN0aW9uczogc3RyaW5nO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL2xpbmtzL3plbmRlc2stbWFya2VyJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgICAgYm9keTogb3B0aW9ucyxcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgU0RLIGV4cGxpY2l0IGxpbmsgKGNvbnZlbmllbmNlIGZ1bmN0aW9uKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1J1blRvVGlja2V0KFxuICBydW5JZDogc3RyaW5nLFxuICB0aWNrZXRJZDogc3RyaW5nXG4pOiBQcm9taXNlPExpbmtSZXNwb25zZT4ge1xuICByZXR1cm4gbGlua2luZy5jcmVhdGUoe1xuICAgIHJ1bklkLFxuICAgIHRpY2tldElkLFxuICAgIG1ldGhvZDogJ3Nka19leHBsaWNpdCcsXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBaZW5kZXNrIGxpbmsgdmlhIG1hcmtlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1J1blRvWmVuZGVza1RpY2tldChcbiAgcnVuSWQ6IHN0cmluZyxcbiAgemVuZGVza1RpY2tldElkOiBzdHJpbmdcbik6IFByb21pc2U8TGlua1Jlc3BvbnNlPiB7XG4gIHJldHVybiBsaW5raW5nLmNyZWF0ZSh7XG4gICAgcnVuSWQsXG4gICAgZXh0ZXJuYWxUaWNrZXRJZDogemVuZGVza1RpY2tldElkLFxuICAgIHBsYXRmb3JtOiAnemVuZGVzaycsXG4gICAgbWV0aG9kOiAnemVuZGVza19tYXJrZXInLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGJlc3QgbGluayBtZXRob2QgZm9yIGEgZ2l2ZW4gc2NlbmFyaW9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJlc3RMaW5rTWV0aG9kKFxuICBhdmFpbGFibGU6IHtcbiAgICBoYXNUaWNrZXRJZDogYm9vbGVhbjtcbiAgICBoYXNNYXJrZXI6IGJvb2xlYW47XG4gICAgaGFzQ3VzdG9tRmllbGQ6IGJvb2xlYW47XG4gICAgaGFzTWlkZGxld2FyZVN0YW1wOiBib29sZWFuO1xuICAgIGhhc1Nlc3Npb25JZDogYm9vbGVhbjtcbiAgICBoYXNFbWFpbDogYm9vbGVhbjtcbiAgfVxuKTogTGlua01ldGhvZCB8IG51bGwge1xuICBpZiAoYXZhaWxhYmxlLmhhc1RpY2tldElkKSByZXR1cm4gJ3Nka19leHBsaWNpdCc7XG4gIGlmIChhdmFpbGFibGUuaGFzTWFya2VyKSByZXR1cm4gJ3plbmRlc2tfbWFya2VyJztcbiAgaWYgKGF2YWlsYWJsZS5oYXNDdXN0b21GaWVsZCkgcmV0dXJuICdjdXN0b21fZmllbGQnO1xuICBpZiAoYXZhaWxhYmxlLmhhc01pZGRsZXdhcmVTdGFtcCkgcmV0dXJuICdtaWRkbGV3YXJlX3N0YW1wJztcbiAgaWYgKGF2YWlsYWJsZS5oYXNTZXNzaW9uSWQpIHJldHVybiAnc2Vzc2lvbl9tYXRjaCc7XG4gIGlmIChhdmFpbGFibGUuaGFzRW1haWwpIHJldHVybiAnZW1haWxfdGltZV93aW5kb3cnO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgbGluayBjb25maWRlbmNlIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRMaW5rQ29uZmlkZW5jZShjb25maWRlbmNlOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7TWF0aC5yb3VuZChjb25maWRlbmNlICogMTAwKX0lYDtcbn1cblxuLyoqXG4gKiBHZXQgY29uZmlkZW5jZSBsZXZlbCBsYWJlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlkZW5jZUxldmVsKFxuICBjb25maWRlbmNlOiBudW1iZXJcbik6ICdkZWZpbml0aXZlJyB8ICdoaWdoJyB8ICdtZWRpdW0nIHwgJ2xvdycge1xuICBpZiAoY29uZmlkZW5jZSA+PSAxLjApIHJldHVybiAnZGVmaW5pdGl2ZSc7XG4gIGlmIChjb25maWRlbmNlID49IDAuOTUpIHJldHVybiAnaGlnaCc7XG4gIGlmIChjb25maWRlbmNlID49IDAuOCkgcmV0dXJuICdtZWRpdW0nO1xuICByZXR1cm4gJ2xvdyc7XG59XG4iXX0=
|
package/package.json
CHANGED