@dollhousemcp/mcp-server 2.0.27 → 2.0.29
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/CHANGELOG.md +13 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/mcp-aql/OperationSchema.js +2 -2
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/evaluatePermission.js +9 -3
- package/dist/services/BuildInfoService.d.ts +6 -1
- package/dist/services/BuildInfoService.d.ts.map +1 -1
- package/dist/services/BuildInfoService.js +23 -3
- package/dist/tools/portfolio/submitToPortfolioTool.d.ts.map +1 -1
- package/dist/tools/portfolio/submitToPortfolioTool.js +4 -3
- package/dist/utils/permissionHooks.d.ts +18 -0
- package/dist/utils/permissionHooks.d.ts.map +1 -1
- package/dist/utils/permissionHooks.js +182 -15
- package/dist/web/console/IngestRoutes.d.ts +7 -1
- package/dist/web/console/IngestRoutes.d.ts.map +1 -1
- package/dist/web/console/IngestRoutes.js +28 -6
- package/dist/web/console/LeaderForwardingSink.d.ts +6 -1
- package/dist/web/console/LeaderForwardingSink.d.ts.map +1 -1
- package/dist/web/console/LeaderForwardingSink.js +8 -2
- package/dist/web/console/UnifiedConsole.d.ts.map +1 -1
- package/dist/web/console/UnifiedConsole.js +6 -3
- package/dist/web/console/sessionClientPlatform.d.ts +11 -0
- package/dist/web/console/sessionClientPlatform.d.ts.map +1 -0
- package/dist/web/console/sessionClientPlatform.js +83 -0
- package/dist/web/public/permissions.js +10 -0
- package/dist/web/public/sessions.css +89 -9
- package/dist/web/public/sessions.js +160 -4
- package/dist/web/public/setup.js +40 -0
- package/dist/web/routes/permissionRoutes.d.ts +1 -0
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
- package/dist/web/routes/permissionRoutes.js +17 -7
- package/dist/web/routes/setupRoutes.d.ts +5 -1
- package/dist/web/routes/setupRoutes.d.ts.map +1 -1
- package/dist/web/routes/setupRoutes.js +28 -14
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +5 -1
- package/package.json +1 -1
- package/scripts/pretooluse-dollhouse.sh +36 -2
- package/scripts/pretooluse-vscode.sh +5 -2
- package/scripts/pretooluse-windsurf.sh +5 -2
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluatePermission.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/evaluatePermission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wEAAwE;AACxE,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAgB,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,CAAC;IACpF,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,EACnE,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO;CAOlB;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,WAAW,CAAC;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,wBAAwB,CAAC;IACjG,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,mBAAmB,CAAC;IAChI,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACrE;
|
|
1
|
+
{"version":3,"file":"evaluatePermission.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/evaluatePermission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wEAAwE;AACxE,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAgB,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,CAAC;IACpF,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,EACnE,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO;CAOlB;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,WAAW,CAAC;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,wBAAwB,CAAC;IACjG,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,mBAAmB,CAAC;IAChI,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACrE;AAqDD,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,UAAkC,CAAC;AAiBnE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1F,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiDlC"}
|
|
@@ -40,9 +40,15 @@ function formatCursor(decision, reason) {
|
|
|
40
40
|
function formatWindsurf(decision, reason) {
|
|
41
41
|
return withReason({ allowed: decision === 'allow' }, reason);
|
|
42
42
|
}
|
|
43
|
-
/** Codex:
|
|
43
|
+
/** Codex: explicit PreToolUse payload, maps 'ask' to 'deny' */
|
|
44
44
|
function formatCodex(decision, reason) {
|
|
45
|
-
return {
|
|
45
|
+
return {
|
|
46
|
+
hookSpecificOutput: {
|
|
47
|
+
hookEventName: 'PreToolUse',
|
|
48
|
+
permissionDecision: decision === 'ask' ? 'deny' : decision,
|
|
49
|
+
permissionDecisionReason: reason ?? '',
|
|
50
|
+
},
|
|
51
|
+
};
|
|
46
52
|
}
|
|
47
53
|
/** Claude Code (default): uses hookSpecificOutput.permissionDecision for PreToolUse */
|
|
48
54
|
function formatClaudeCode(decision, reason) {
|
|
@@ -141,4 +147,4 @@ export async function evaluatePermission(params, deps) {
|
|
|
141
147
|
// Default: allow
|
|
142
148
|
return formatPermissionResponse('allow', platform, input);
|
|
143
149
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGVQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvZXZhbHVhdGVQZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsd0VBQXdFO0FBQ3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxLQUFLO0lBQ2xDLEtBQUssQ0FBK0Q7SUFDcEUsUUFBUSxDQUFTO0lBRWpDLFlBQ0UsT0FBZSxFQUNmLEtBQW1FLEVBQ25FLFFBQWdCLEVBQ2hCLEtBQWU7UUFFZixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFVRCxtRUFBbUU7QUFDbkUsU0FBUyxVQUFVLENBQUMsR0FBNEIsRUFBRSxNQUFlLEVBQUUsR0FBRyxHQUFHLFFBQVE7SUFDL0UsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xELENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFlO0lBQ3JELE9BQU8sVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFT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cEUsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVybWlzc2lvbiBldmFsdWF0aW9uIGZvciBQcmVUb29sVXNlIGhvb2tzIGFjcm9zcyBhbGwgQUkgcGxhdGZvcm1zLlxuICpcbiAqIFByb3ZpZGVzIHRoZSBgZXZhbHVhdGVfcGVybWlzc2lvbmAgTUNQLUFRTCBSRUFEIG9wZXJhdGlvbiwgZW5hYmxpbmdcbiAqIENsYXVkZSBDb2RlLCBDdXJzb3IsIEdlbWluaSBDTEksIFdpbmRzdXJmLCBhbmQgQ29kZXggdG8gdXNlXG4gKiBEb2xsaG91c2VNQ1AgYXMgdGhlaXIgcGVybWlzc2lvbiBldmFsdWF0aW9uIGJhY2tlbmQgdmlhIGhvb2tzLlxuICpcbiAqIFRocmVlLXN0YWdlIGV2YWx1YXRpb24gcGlwZWxpbmU6XG4gKiAxLiBSYXRlIGxpbWl0aW5nIOKAlCBwcmV2ZW50cyBhYnVzZVxuICogMi4gU3RhdGljIHRvb2wgY2xhc3NpZmljYXRpb24g4oCUIGJ1aWx0LWluIGFsbG93L2RlbnkgcnVsZXNcbiAqIDMuIEVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb24g4oCUIGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXNcbiAqXG4gKiBSZXR1cm5zIHBsYXRmb3JtLXNwZWNpZmljIHJlc3BvbnNlIGZvcm1hdHMgc28gZWFjaCBwbGF0Zm9ybSdzIGhvb2tcbiAqIHNjcmlwdCByZWNlaXZlcyB0aGUgSlNPTiBzaGFwZSBpdCBleHBlY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmF0ZUxpbWl0ZXIgfSBmcm9tICcuLi8uLi91dGlscy9SYXRlTGltaXRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCwgQ2xpVG9vbFBvbGljeVJlc3VsdCB9IGZyb20gJy4vcG9saWNpZXMvVG9vbENsYXNzaWZpY2F0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aXZlRWxlbWVudCB9IGZyb20gJy4vcG9saWNpZXMvRWxlbWVudFBvbGljaWVzLmpzJztcblxuLyoqIEVycm9yIHRocm93biB3aGVuIHBlcm1pc3Npb24gZXZhbHVhdGlvbiBmYWlscyBhdCBhIHNwZWNpZmljIHN0YWdlICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkV2YWx1YXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0YWdlOiAncmF0ZV9saW1pdCcgfCAnY2xhc3NpZmljYXRpb24nIHwgJ3BvbGljeScgfCAnZWxlbWVudF9mZXRjaCc7XG4gIHB1YmxpYyByZWFkb25seSB0b29sTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdGFnZTogJ3JhdGVfbGltaXQnIHwgJ2NsYXNzaWZpY2F0aW9uJyB8ICdwb2xpY3knIHwgJ2VsZW1lbnRfZmV0Y2gnLFxuICAgIHRvb2xOYW1lOiBzdHJpbmcsXG4gICAgY2F1c2U/OiB1bmtub3duLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjYXVzZSA/IHsgY2F1c2UgfSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5uYW1lID0gJ1Blcm1pc3Npb25FdmFsdWF0aW9uRXJyb3InO1xuICAgIHRoaXMuc3RhZ2UgPSBzdGFnZTtcbiAgICB0aGlzLnRvb2xOYW1lID0gdG9vbE5hbWU7XG4gIH1cbn1cblxuLyoqIERlcGVuZGVuY2llcyBpbmplY3RlZCBmcm9tIE1DUEFRTEhhbmRsZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVQZXJtaXNzaW9uRGVwcyB7XG4gIHBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyOiBSYXRlTGltaXRlcjtcbiAgY2xhc3NpZnlUb29sOiAodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0O1xuICBldmFsdWF0ZUNsaVRvb2xQb2xpY3k6ICh0b29sTmFtZTogc3RyaW5nLCB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBlbGVtZW50czogQWN0aXZlRWxlbWVudFtdKSA9PiBDbGlUb29sUG9saWN5UmVzdWx0O1xuICBnZXRBY3RpdmVFbGVtZW50czogKHNlc3Npb25JZD86IHN0cmluZykgPT4gUHJvbWlzZTxBY3RpdmVFbGVtZW50W10+O1xufVxuXG4vKiogT3B0aW9uYWwgcmVhc29uIGZpZWxkLCBvbmx5IGluY2x1ZGVkIHdoZW4gcmVhc29uIGlzIHByb3ZpZGVkICovXG5mdW5jdGlvbiB3aXRoUmVhc29uKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlYXNvbj86IHN0cmluZywga2V5ID0gJ3JlYXNvbicpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiByZWFzb24gPyB7IC4uLm9iaiwgW2tleV06IHJlYXNvbiB9IDogb2JqO1xufVxuXG4vKiogR2VtaW5pOiBtYXBzICdhc2snIHRvICdkZW55JyAobm8gaW50ZXJhY3RpdmUgc3VwcG9ydCkgKi9cbmZ1bmN0aW9uIGZvcm1hdEdlbWluaShkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB3aXRoUmVhc29uKHsgZGVjaXNpb246IGRlY2lzaW9uID09PSAnYXNrJyA/ICdkZW55JyA6IGRlY2lzaW9uIH0sIHJlYXNvbik7XG59XG5cbi8qKiBDdXJzb3I6IHVzZXMgJ3Blcm1pc3Npb24nIGZpZWxkIGluc3RlYWQgb2YgJ2RlY2lzaW9uJyAqL1xuZnVuY3Rpb24gZm9ybWF0Q3Vyc29yKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBwZXJtaXNzaW9uOiBkZWNpc2lvbiB9LCByZWFzb24pO1xufVxuXG4vKiogV2luZHN1cmY6IHVzZXMgYm9vbGVhbiAnYWxsb3dlZCcgZmllbGQgKi9cbmZ1bmN0aW9uIGZvcm1hdFdpbmRzdXJmKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBhbGxvd2VkOiBkZWNpc2lvbiA9PT0gJ2FsbG93JyB9LCByZWFzb24pO1xufVxuXG4vKiogQ29kZXg6IHdyYXBzIGluIGhvb2tTcGVjaWZpY091dHB1dCwgbWFwcyAnYXNrJyB0byAnZGVueScgKi9cbmZ1bmN0aW9uIGZvcm1hdENvZGV4KGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHsgaG9va1NwZWNpZmljT3V0cHV0OiB3aXRoUmVhc29uKHsgcGVybWlzc2lvbkRlY2lzaW9uOiBkZWNpc2lvbiA9PT0gJ2FzaycgPyAnZGVueScgOiBkZWNpc2lvbiB9LCByZWFzb24pIH07XG59XG5cbi8qKiBDbGF1ZGUgQ29kZSAoZGVmYXVsdCk6IHVzZXMgaG9va1NwZWNpZmljT3V0cHV0LnBlcm1pc3Npb25EZWNpc2lvbiBmb3IgUHJlVG9vbFVzZSAqL1xuZnVuY3Rpb24gZm9ybWF0Q2xhdWRlQ29kZShkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB7XG4gICAgaG9va1NwZWNpZmljT3V0cHV0OiB3aXRoUmVhc29uKHtcbiAgICAgIGhvb2tFdmVudE5hbWU6ICdQcmVUb29sVXNlJyxcbiAgICAgIHBlcm1pc3Npb25EZWNpc2lvbjogZGVjaXNpb24sXG4gICAgfSwgcmVhc29uLCAncGVybWlzc2lvbkRlY2lzaW9uUmVhc29uJyksXG4gIH07XG59XG5cbi8qKiBQbGF0Zm9ybSBmb3JtYXR0ZXIgbG9va3VwICovXG5jb25zdCBwbGF0Zm9ybUZvcm1hdHRlcnM6IFJlY29yZDxzdHJpbmcsIChkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IHtcbiAgZ2VtaW5pOiBmb3JtYXRHZW1pbmksXG4gIGN1cnNvcjogZm9ybWF0Q3Vyc29yLFxuICB3aW5kc3VyZjogZm9ybWF0V2luZHN1cmYsXG4gIGNvZGV4OiBmb3JtYXRDb2RleCxcbiAgdnNjb2RlOiBmb3JtYXRDbGF1ZGVDb2RlLFxuICBjbGF1ZGVfY29kZTogZm9ybWF0Q2xhdWRlQ29kZSxcbn07XG5cbi8qKiBLbm93biBwbGF0Zm9ybSBpZGVudGlmaWVycyAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9QTEFURk9STVMgPSBPYmplY3Qua2V5cyhwbGF0Zm9ybUZvcm1hdHRlcnMpO1xuXG5mdW5jdGlvbiB3YXJuT25Vbmtub3duUGxhdGZvcm0ocGxhdGZvcm06IHN0cmluZyk6IHZvaWQge1xuICB2b2lkIGltcG9ydCgnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJylcbiAgICAudGhlbigoeyBsb2dnZXIgfSkgPT4ge1xuICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgIGBbZXZhbHVhdGVQZXJtaXNzaW9uXSBVbmtub3duIHBsYXRmb3JtIFwiJHtwbGF0Zm9ybX1cIiwgZGVmYXVsdGluZyB0byBjbGF1ZGVfY29kZSBmb3JtYXQuIFN1cHBvcnRlZDogJHtTVVBQT1JURURfUExBVEZPUk1TLmpvaW4oJywgJyl9YCxcbiAgICAgICk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbZXZhbHVhdGVQZXJtaXNzaW9uXSBGYWlsZWQgdG8gbG9hZCBsb2dnZXIgd2hpbGUgaGFuZGxpbmcgdW5rbm93biBwbGF0Zm9ybSBcIiR7cGxhdGZvcm19XCIuYCxcbiAgICAgICAgZXJyb3IsXG4gICAgICApO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEZvcm1hdCBwZXJtaXNzaW9uIGV2YWx1YXRpb24gcmVzcG9uc2UgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGhvb2sgc2NyaXB0cy5cbiAqIEVhY2ggcGxhdGZvcm0gZXhwZWN0cyBhIGRpZmZlcmVudCBKU09OIHNoYXBlIGZyb20gaXRzIGhvb2sgcmVzcG9uc2UuXG4gKlxuICogVW5rbm93biBwbGF0Zm9ybXMgZGVmYXVsdCB0byBjbGF1ZGVfY29kZSBmb3JtYXQgd2l0aCBhIHdhcm5pbmcgbG9nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKFxuICBkZWNpc2lvbjogJ2FsbG93JyB8ICdkZW55JyB8ICdhc2snLFxuICBwbGF0Zm9ybTogc3RyaW5nLFxuICBfaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICByZWFzb24/OiBzdHJpbmcsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdnZW1pbmknOiByZXR1cm4gZm9ybWF0R2VtaW5pKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ2N1cnNvcic6IHJldHVybiBmb3JtYXRDdXJzb3IoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnd2luZHN1cmYnOiByZXR1cm4gZm9ybWF0V2luZHN1cmYoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnY29kZXgnOiByZXR1cm4gZm9ybWF0Q29kZXgoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnY2xhdWRlX2NvZGUnOiByZXR1cm4gZm9ybWF0Q2xhdWRlQ29kZShkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBkZWZhdWx0OlxuICAgICAgLy8gSW1wb3J0IGxhemlseSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGF0IG1vZHVsZSBsb2FkIHRpbWVcbiAgICAgIHdhcm5PblVua25vd25QbGF0Zm9ybShwbGF0Zm9ybSk7XG4gICAgICByZXR1cm4gZm9ybWF0Q2xhdWRlQ29kZShkZWNpc2lvbiwgcmVhc29uKTtcbiAgfVxufVxuXG4vKipcbiAqIEV2YWx1YXRlIGEgQ0xJIHBlcm1pc3Npb24gcmVxdWVzdCBmb3IgUHJlVG9vbFVzZSBob29rcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVG9vbCBuYW1lLCBpbnB1dCwgYW5kIHRhcmdldCBwbGF0Zm9ybVxuICogQHBhcmFtIGRlcHMgLSBJbmplY3RlZCBkZXBlbmRlbmNpZXMgZnJvbSBNQ1BBUUxIYW5kbGVyXG4gKiBAcmV0dXJucyBQbGF0Zm9ybS1mb3JtYXR0ZWQgcGVybWlzc2lvbiBkZWNpc2lvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXZhbHVhdGVQZXJtaXNzaW9uKFxuICBwYXJhbXM6IHsgdG9vbF9uYW1lPzogdW5rbm93bjsgaW5wdXQ/OiB1bmtub3duOyBwbGF0Zm9ybT86IHVua25vd247IHNlc3Npb25faWQ/OiB1bmtub3duIH0sXG4gIGRlcHM6IEV2YWx1YXRlUGVybWlzc2lvbkRlcHMsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGNvbnN0IHRvb2xOYW1lID0gdHlwZW9mIHBhcmFtcy50b29sX25hbWUgPT09ICdzdHJpbmcnID8gcGFyYW1zLnRvb2xfbmFtZSA6ICcnO1xuICBjb25zdCBpbnB1dFJhdyA9IHBhcmFtcy5pbnB1dDtcbiAgY29uc3QgaW5wdXQgPSAoaW5wdXRSYXcgJiYgdHlwZW9mIGlucHV0UmF3ID09PSAnb2JqZWN0JylcbiAgICA/IGlucHV0UmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgOiB7fTtcbiAgY29uc3QgcGxhdGZvcm0gPSB0eXBlb2YgcGFyYW1zLnBsYXRmb3JtID09PSAnc3RyaW5nJyA/IHBhcmFtcy5wbGF0Zm9ybSA6ICdjbGF1ZGVfY29kZSc7XG4gIGNvbnN0IHNlc3Npb25JZCA9IHR5cGVvZiBwYXJhbXMuc2Vzc2lvbl9pZCA9PT0gJ3N0cmluZycgJiYgcGFyYW1zLnNlc3Npb25faWQudHJpbSgpICE9PSAnJ1xuICAgID8gcGFyYW1zLnNlc3Npb25faWRcbiAgICA6IHVuZGVmaW5lZDtcblxuICAvLyBSYXRlIGxpbWl0XG4gIGNvbnN0IHJhdGVTdGF0dXMgPSBkZXBzLnBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyLmNoZWNrTGltaXQoKTtcbiAgaWYgKCFyYXRlU3RhdHVzLmFsbG93ZWQpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdkZW55JywgcGxhdGZvcm0sIGlucHV0LCAnUmF0ZSBsaW1pdCBleGNlZWRlZCcpO1xuICB9XG4gIGRlcHMucGVybWlzc2lvblByb21wdExpbWl0ZXIuY29uc3VtZVRva2VuKCk7XG5cbiAgLy8gU3RhZ2UgMTogU3RhdGljIGNsYXNzaWZpY2F0aW9uXG4gIGNvbnN0IGNsYXNzaWZpY2F0aW9uID0gZGVwcy5jbGFzc2lmeVRvb2wodG9vbE5hbWUsIGlucHV0KTtcbiAgaWYgKGNsYXNzaWZpY2F0aW9uLmJlaGF2aW9yID09PSAnYWxsb3cnKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnYWxsb3cnLCBwbGF0Zm9ybSwgaW5wdXQpO1xuICB9XG4gIGlmIChjbGFzc2lmaWNhdGlvbi5iZWhhdmlvciA9PT0gJ2RlbnknKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnZGVueScsIHBsYXRmb3JtLCBpbnB1dCwgY2xhc3NpZmljYXRpb24ucmVhc29uKTtcbiAgfVxuXG4gIC8vIFN0YWdlIDI6IEVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb25cbiAgbGV0IGVsZW1lbnRzOiBBY3RpdmVFbGVtZW50W107XG4gIHRyeSB7XG4gICAgZWxlbWVudHMgPSBhd2FpdCBkZXBzLmdldEFjdGl2ZUVsZW1lbnRzKHNlc3Npb25JZCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBQZXJtaXNzaW9uRXZhbHVhdGlvbkVycm9yKFxuICAgICAgYEZhaWxlZCB0byBmZXRjaCBhY3RpdmUgZWxlbWVudHMgZm9yIHBvbGljeSBldmFsdWF0aW9uOiAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKX1gLFxuICAgICAgJ2VsZW1lbnRfZmV0Y2gnLCB0b29sTmFtZSwgZXJyLFxuICAgICk7XG4gIH1cbiAgY29uc3QgZGVjaXNpb24gPSBkZXBzLmV2YWx1YXRlQ2xpVG9vbFBvbGljeSh0b29sTmFtZSwgaW5wdXQsIGVsZW1lbnRzKTtcblxuICBpZiAoZGVjaXNpb24uYmVoYXZpb3IgPT09ICdkZW55Jykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2RlbnknLCBwbGF0Zm9ybSwgaW5wdXQsIGRlY2lzaW9uLm1lc3NhZ2UpO1xuICB9XG4gIGlmIChkZWNpc2lvbi5iZWhhdmlvciA9PT0gJ2NvbmZpcm0nKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnYXNrJywgcGxhdGZvcm0sIGlucHV0LFxuICAgICAgZGVjaXNpb24ubWVzc2FnZSB8fCAnUmVxdWlyZXMgY29uZmlybWF0aW9uIHBlciBlbGVtZW50IHBvbGljeScpO1xuICB9XG5cbiAgLy8gRGVmYXVsdDogYWxsb3dcbiAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnYWxsb3cnLCBwbGF0Zm9ybSwgaW5wdXQpO1xufVxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGVQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvZXZhbHVhdGVQZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsd0VBQXdFO0FBQ3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxLQUFLO0lBQ2xDLEtBQUssQ0FBK0Q7SUFDcEUsUUFBUSxDQUFTO0lBRWpDLFlBQ0UsT0FBZSxFQUNmLEtBQW1FLEVBQ25FLFFBQWdCLEVBQ2hCLEtBQWU7UUFFZixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFVRCxtRUFBbUU7QUFDbkUsU0FBUyxVQUFVLENBQUMsR0FBNEIsRUFBRSxNQUFlLEVBQUUsR0FBRyxHQUFHLFFBQVE7SUFDL0UsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xELENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFlO0lBQ3JELE9BQU8sVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFT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T0FBTyxJQUFJLDBDQUEwQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVybWlzc2lvbiBldmFsdWF0aW9uIGZvciBQcmVUb29sVXNlIGhvb2tzIGFjcm9zcyBhbGwgQUkgcGxhdGZvcm1zLlxuICpcbiAqIFByb3ZpZGVzIHRoZSBgZXZhbHVhdGVfcGVybWlzc2lvbmAgTUNQLUFRTCBSRUFEIG9wZXJhdGlvbiwgZW5hYmxpbmdcbiAqIENsYXVkZSBDb2RlLCBDdXJzb3IsIEdlbWluaSBDTEksIFdpbmRzdXJmLCBhbmQgQ29kZXggdG8gdXNlXG4gKiBEb2xsaG91c2VNQ1AgYXMgdGhlaXIgcGVybWlzc2lvbiBldmFsdWF0aW9uIGJhY2tlbmQgdmlhIGhvb2tzLlxuICpcbiAqIFRocmVlLXN0YWdlIGV2YWx1YXRpb24gcGlwZWxpbmU6XG4gKiAxLiBSYXRlIGxpbWl0aW5nIOKAlCBwcmV2ZW50cyBhYnVzZVxuICogMi4gU3RhdGljIHRvb2wgY2xhc3NpZmljYXRpb24g4oCUIGJ1aWx0LWluIGFsbG93L2RlbnkgcnVsZXNcbiAqIDMuIEVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb24g4oCUIGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXNcbiAqXG4gKiBSZXR1cm5zIHBsYXRmb3JtLXNwZWNpZmljIHJlc3BvbnNlIGZvcm1hdHMgc28gZWFjaCBwbGF0Zm9ybSdzIGhvb2tcbiAqIHNjcmlwdCByZWNlaXZlcyB0aGUgSlNPTiBzaGFwZSBpdCBleHBlY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmF0ZUxpbWl0ZXIgfSBmcm9tICcuLi8uLi91dGlscy9SYXRlTGltaXRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCwgQ2xpVG9vbFBvbGljeVJlc3VsdCB9IGZyb20gJy4vcG9saWNpZXMvVG9vbENsYXNzaWZpY2F0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aXZlRWxlbWVudCB9IGZyb20gJy4vcG9saWNpZXMvRWxlbWVudFBvbGljaWVzLmpzJztcblxuLyoqIEVycm9yIHRocm93biB3aGVuIHBlcm1pc3Npb24gZXZhbHVhdGlvbiBmYWlscyBhdCBhIHNwZWNpZmljIHN0YWdlICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkV2YWx1YXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0YWdlOiAncmF0ZV9saW1pdCcgfCAnY2xhc3NpZmljYXRpb24nIHwgJ3BvbGljeScgfCAnZWxlbWVudF9mZXRjaCc7XG4gIHB1YmxpYyByZWFkb25seSB0b29sTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdGFnZTogJ3JhdGVfbGltaXQnIHwgJ2NsYXNzaWZpY2F0aW9uJyB8ICdwb2xpY3knIHwgJ2VsZW1lbnRfZmV0Y2gnLFxuICAgIHRvb2xOYW1lOiBzdHJpbmcsXG4gICAgY2F1c2U/OiB1bmtub3duLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjYXVzZSA/IHsgY2F1c2UgfSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5uYW1lID0gJ1Blcm1pc3Npb25FdmFsdWF0aW9uRXJyb3InO1xuICAgIHRoaXMuc3RhZ2UgPSBzdGFnZTtcbiAgICB0aGlzLnRvb2xOYW1lID0gdG9vbE5hbWU7XG4gIH1cbn1cblxuLyoqIERlcGVuZGVuY2llcyBpbmplY3RlZCBmcm9tIE1DUEFRTEhhbmRsZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVQZXJtaXNzaW9uRGVwcyB7XG4gIHBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyOiBSYXRlTGltaXRlcjtcbiAgY2xhc3NpZnlUb29sOiAodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0O1xuICBldmFsdWF0ZUNsaVRvb2xQb2xpY3k6ICh0b29sTmFtZTogc3RyaW5nLCB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBlbGVtZW50czogQWN0aXZlRWxlbWVudFtdKSA9PiBDbGlUb29sUG9saWN5UmVzdWx0O1xuICBnZXRBY3RpdmVFbGVtZW50czogKHNlc3Npb25JZD86IHN0cmluZykgPT4gUHJvbWlzZTxBY3RpdmVFbGVtZW50W10+O1xufVxuXG4vKiogT3B0aW9uYWwgcmVhc29uIGZpZWxkLCBvbmx5IGluY2x1ZGVkIHdoZW4gcmVhc29uIGlzIHByb3ZpZGVkICovXG5mdW5jdGlvbiB3aXRoUmVhc29uKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlYXNvbj86IHN0cmluZywga2V5ID0gJ3JlYXNvbicpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiByZWFzb24gPyB7IC4uLm9iaiwgW2tleV06IHJlYXNvbiB9IDogb2JqO1xufVxuXG4vKiogR2VtaW5pOiBtYXBzICdhc2snIHRvICdkZW55JyAobm8gaW50ZXJhY3RpdmUgc3VwcG9ydCkgKi9cbmZ1bmN0aW9uIGZvcm1hdEdlbWluaShkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB3aXRoUmVhc29uKHsgZGVjaXNpb246IGRlY2lzaW9uID09PSAnYXNrJyA/ICdkZW55JyA6IGRlY2lzaW9uIH0sIHJlYXNvbik7XG59XG5cbi8qKiBDdXJzb3I6IHVzZXMgJ3Blcm1pc3Npb24nIGZpZWxkIGluc3RlYWQgb2YgJ2RlY2lzaW9uJyAqL1xuZnVuY3Rpb24gZm9ybWF0Q3Vyc29yKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBwZXJtaXNzaW9uOiBkZWNpc2lvbiB9LCByZWFzb24pO1xufVxuXG4vKiogV2luZHN1cmY6IHVzZXMgYm9vbGVhbiAnYWxsb3dlZCcgZmllbGQgKi9cbmZ1bmN0aW9uIGZvcm1hdFdpbmRzdXJmKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBhbGxvd2VkOiBkZWNpc2lvbiA9PT0gJ2FsbG93JyB9LCByZWFzb24pO1xufVxuXG4vKiogQ29kZXg6IGV4cGxpY2l0IFByZVRvb2xVc2UgcGF5bG9hZCwgbWFwcyAnYXNrJyB0byAnZGVueScgKi9cbmZ1bmN0aW9uIGZvcm1hdENvZGV4KGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBob29rU3BlY2lmaWNPdXRwdXQ6IHtcbiAgICAgIGhvb2tFdmVudE5hbWU6ICdQcmVUb29sVXNlJyxcbiAgICAgIHBlcm1pc3Npb25EZWNpc2lvbjogZGVjaXNpb24gPT09ICdhc2snID8gJ2RlbnknIDogZGVjaXNpb24sXG4gICAgICBwZXJtaXNzaW9uRGVjaXNpb25SZWFzb246IHJlYXNvbiA/PyAnJyxcbiAgICB9LFxuICB9O1xufVxuXG4vKiogQ2xhdWRlIENvZGUgKGRlZmF1bHQpOiB1c2VzIGhvb2tTcGVjaWZpY091dHB1dC5wZXJtaXNzaW9uRGVjaXNpb24gZm9yIFByZVRvb2xVc2UgKi9cbmZ1bmN0aW9uIGZvcm1hdENsYXVkZUNvZGUoZGVjaXNpb246IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIGhvb2tTcGVjaWZpY091dHB1dDogd2l0aFJlYXNvbih7XG4gICAgICBob29rRXZlbnROYW1lOiAnUHJlVG9vbFVzZScsXG4gICAgICBwZXJtaXNzaW9uRGVjaXNpb246IGRlY2lzaW9uLFxuICAgIH0sIHJlYXNvbiwgJ3Blcm1pc3Npb25EZWNpc2lvblJlYXNvbicpLFxuICB9O1xufVxuXG4vKiogUGxhdGZvcm0gZm9ybWF0dGVyIGxvb2t1cCAqL1xuY29uc3QgcGxhdGZvcm1Gb3JtYXR0ZXJzOiBSZWNvcmQ8c3RyaW5nLCAoZGVjaXNpb246IHN0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7XG4gIGdlbWluaTogZm9ybWF0R2VtaW5pLFxuICBjdXJzb3I6IGZvcm1hdEN1cnNvcixcbiAgd2luZHN1cmY6IGZvcm1hdFdpbmRzdXJmLFxuICBjb2RleDogZm9ybWF0Q29kZXgsXG4gIHZzY29kZTogZm9ybWF0Q2xhdWRlQ29kZSxcbiAgY2xhdWRlX2NvZGU6IGZvcm1hdENsYXVkZUNvZGUsXG59O1xuXG4vKiogS25vd24gcGxhdGZvcm0gaWRlbnRpZmllcnMgKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfUExBVEZPUk1TID0gT2JqZWN0LmtleXMocGxhdGZvcm1Gb3JtYXR0ZXJzKTtcblxuZnVuY3Rpb24gd2Fybk9uVW5rbm93blBsYXRmb3JtKHBsYXRmb3JtOiBzdHJpbmcpOiB2b2lkIHtcbiAgdm9pZCBpbXBvcnQoJy4uLy4uL3V0aWxzL2xvZ2dlci5qcycpXG4gICAgLnRoZW4oKHsgbG9nZ2VyIH0pID0+IHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBgW2V2YWx1YXRlUGVybWlzc2lvbl0gVW5rbm93biBwbGF0Zm9ybSBcIiR7cGxhdGZvcm19XCIsIGRlZmF1bHRpbmcgdG8gY2xhdWRlX2NvZGUgZm9ybWF0LiBTdXBwb3J0ZWQ6ICR7U1VQUE9SVEVEX1BMQVRGT1JNUy5qb2luKCcsICcpfWAsXG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW2V2YWx1YXRlUGVybWlzc2lvbl0gRmFpbGVkIHRvIGxvYWQgbG9nZ2VyIHdoaWxlIGhhbmRsaW5nIHVua25vd24gcGxhdGZvcm0gXCIke3BsYXRmb3JtfVwiLmAsXG4gICAgICAgIGVycm9yLFxuICAgICAgKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgcGVybWlzc2lvbiBldmFsdWF0aW9uIHJlc3BvbnNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBob29rIHNjcmlwdHMuXG4gKiBFYWNoIHBsYXRmb3JtIGV4cGVjdHMgYSBkaWZmZXJlbnQgSlNPTiBzaGFwZSBmcm9tIGl0cyBob29rIHJlc3BvbnNlLlxuICpcbiAqIFVua25vd24gcGxhdGZvcm1zIGRlZmF1bHQgdG8gY2xhdWRlX2NvZGUgZm9ybWF0IHdpdGggYSB3YXJuaW5nIGxvZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZShcbiAgZGVjaXNpb246ICdhbGxvdycgfCAnZGVueScgfCAnYXNrJyxcbiAgcGxhdGZvcm06IHN0cmluZyxcbiAgX2lucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcmVhc29uPzogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgY2FzZSAnZ2VtaW5pJzogcmV0dXJuIGZvcm1hdEdlbWluaShkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBjYXNlICdjdXJzb3InOiByZXR1cm4gZm9ybWF0Q3Vyc29yKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ3dpbmRzdXJmJzogcmV0dXJuIGZvcm1hdFdpbmRzdXJmKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ2NvZGV4JzogcmV0dXJuIGZvcm1hdENvZGV4KGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ2NsYXVkZV9jb2RlJzogcmV0dXJuIGZvcm1hdENsYXVkZUNvZGUoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEltcG9ydCBsYXppbHkgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSBhdCBtb2R1bGUgbG9hZCB0aW1lXG4gICAgICB3YXJuT25Vbmtub3duUGxhdGZvcm0ocGxhdGZvcm0pO1xuICAgICAgcmV0dXJuIGZvcm1hdENsYXVkZUNvZGUoZGVjaXNpb24sIHJlYXNvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBFdmFsdWF0ZSBhIENMSSBwZXJtaXNzaW9uIHJlcXVlc3QgZm9yIFByZVRvb2xVc2UgaG9va3MuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRvb2wgbmFtZSwgaW5wdXQsIGFuZCB0YXJnZXQgcGxhdGZvcm1cbiAqIEBwYXJhbSBkZXBzIC0gSW5qZWN0ZWQgZGVwZW5kZW5jaWVzIGZyb20gTUNQQVFMSGFuZGxlclxuICogQHJldHVybnMgUGxhdGZvcm0tZm9ybWF0dGVkIHBlcm1pc3Npb24gZGVjaXNpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2YWx1YXRlUGVybWlzc2lvbihcbiAgcGFyYW1zOiB7IHRvb2xfbmFtZT86IHVua25vd247IGlucHV0PzogdW5rbm93bjsgcGxhdGZvcm0/OiB1bmtub3duOyBzZXNzaW9uX2lkPzogdW5rbm93biB9LFxuICBkZXBzOiBFdmFsdWF0ZVBlcm1pc3Npb25EZXBzLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCB0b29sTmFtZSA9IHR5cGVvZiBwYXJhbXMudG9vbF9uYW1lID09PSAnc3RyaW5nJyA/IHBhcmFtcy50b29sX25hbWUgOiAnJztcbiAgY29uc3QgaW5wdXRSYXcgPSBwYXJhbXMuaW5wdXQ7XG4gIGNvbnN0IGlucHV0ID0gKGlucHV0UmF3ICYmIHR5cGVvZiBpbnB1dFJhdyA9PT0gJ29iamVjdCcpXG4gICAgPyBpbnB1dFJhdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIDoge307XG4gIGNvbnN0IHBsYXRmb3JtID0gdHlwZW9mIHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ3N0cmluZycgPyBwYXJhbXMucGxhdGZvcm0gOiAnY2xhdWRlX2NvZGUnO1xuICBjb25zdCBzZXNzaW9uSWQgPSB0eXBlb2YgcGFyYW1zLnNlc3Npb25faWQgPT09ICdzdHJpbmcnICYmIHBhcmFtcy5zZXNzaW9uX2lkLnRyaW0oKSAhPT0gJydcbiAgICA/IHBhcmFtcy5zZXNzaW9uX2lkXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgLy8gUmF0ZSBsaW1pdFxuICBjb25zdCByYXRlU3RhdHVzID0gZGVwcy5wZXJtaXNzaW9uUHJvbXB0TGltaXRlci5jaGVja0xpbWl0KCk7XG4gIGlmICghcmF0ZVN0YXR1cy5hbGxvd2VkKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnZGVueScsIHBsYXRmb3JtLCBpbnB1dCwgJ1JhdGUgbGltaXQgZXhjZWVkZWQnKTtcbiAgfVxuICBkZXBzLnBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyLmNvbnN1bWVUb2tlbigpO1xuXG4gIC8vIFN0YWdlIDE6IFN0YXRpYyBjbGFzc2lmaWNhdGlvblxuICBjb25zdCBjbGFzc2lmaWNhdGlvbiA9IGRlcHMuY2xhc3NpZnlUb29sKHRvb2xOYW1lLCBpbnB1dCk7XG4gIGlmIChjbGFzc2lmaWNhdGlvbi5iZWhhdmlvciA9PT0gJ2FsbG93Jykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2FsbG93JywgcGxhdGZvcm0sIGlucHV0KTtcbiAgfVxuICBpZiAoY2xhc3NpZmljYXRpb24uYmVoYXZpb3IgPT09ICdkZW55Jykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2RlbnknLCBwbGF0Zm9ybSwgaW5wdXQsIGNsYXNzaWZpY2F0aW9uLnJlYXNvbik7XG4gIH1cblxuICAvLyBTdGFnZSAyOiBFbGVtZW50IHBvbGljeSBldmFsdWF0aW9uXG4gIGxldCBlbGVtZW50czogQWN0aXZlRWxlbWVudFtdO1xuICB0cnkge1xuICAgIGVsZW1lbnRzID0gYXdhaXQgZGVwcy5nZXRBY3RpdmVFbGVtZW50cyhzZXNzaW9uSWQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgUGVybWlzc2lvbkV2YWx1YXRpb25FcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggYWN0aXZlIGVsZW1lbnRzIGZvciBwb2xpY3kgZXZhbHVhdGlvbjogJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycil9YCxcbiAgICAgICdlbGVtZW50X2ZldGNoJywgdG9vbE5hbWUsIGVycixcbiAgICApO1xuICB9XG4gIGNvbnN0IGRlY2lzaW9uID0gZGVwcy5ldmFsdWF0ZUNsaVRvb2xQb2xpY3kodG9vbE5hbWUsIGlucHV0LCBlbGVtZW50cyk7XG5cbiAgaWYgKGRlY2lzaW9uLmJlaGF2aW9yID09PSAnZGVueScpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdkZW55JywgcGxhdGZvcm0sIGlucHV0LCBkZWNpc2lvbi5tZXNzYWdlKTtcbiAgfVxuICBpZiAoZGVjaXNpb24uYmVoYXZpb3IgPT09ICdjb25maXJtJykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2FzaycsIHBsYXRmb3JtLCBpbnB1dCxcbiAgICAgIGRlY2lzaW9uLm1lc3NhZ2UgfHwgJ1JlcXVpcmVzIGNvbmZpcm1hdGlvbiBwZXIgZWxlbWVudCBwb2xpY3knKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQ6IGFsbG93XG4gIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2FsbG93JywgcGxhdGZvcm0sIGlucHV0KTtcbn1cbiJdfQ==
|
|
@@ -23,7 +23,6 @@ export interface BuildInfo {
|
|
|
23
23
|
type: 'git' | 'npm' | 'unknown';
|
|
24
24
|
gitCommit?: string;
|
|
25
25
|
gitBranch?: string;
|
|
26
|
-
collectionFix?: string;
|
|
27
26
|
};
|
|
28
27
|
runtime: {
|
|
29
28
|
nodeVersion: string;
|
|
@@ -45,6 +44,12 @@ export interface BuildInfo {
|
|
|
45
44
|
uptime: number;
|
|
46
45
|
mcpConnection: boolean;
|
|
47
46
|
};
|
|
47
|
+
permissionHooks?: {
|
|
48
|
+
installedHosts: string[];
|
|
49
|
+
currentHosts: string[];
|
|
50
|
+
repairedHosts: string[];
|
|
51
|
+
needsRepairHosts: string[];
|
|
52
|
+
};
|
|
48
53
|
/** Issue #706: Startup timing and readiness status. */
|
|
49
54
|
startup?: {
|
|
50
55
|
status: 'ready' | 'initializing';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildInfoService.d.ts","sourceRoot":"","sources":["../../src/services/BuildInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"BuildInfoService.d.ts","sourceRoot":"","sources":["../../src/services/BuildInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIhF,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;KACjC,CAAC;IACF,WAAW,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IACF,uDAAuD;IACvD,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC;QACjC,qBAAqB,EAAE,OAAO,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,aAAa,CAAC;KACjC,CAAC;CACH;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,qEAAqE;IACrE,OAAO,CAAC,YAAY,CAA6B;IACjD,2DAA2D;IAC3D,OAAO,CAAC,oBAAoB,CAAgC;gBAEhD,cAAc,EAAE,sBAAsB;IAKlD;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI1C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI;IAIrD;;;;;;;OAOG;IACU,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAuF/C;;;;OAIG;IACI,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IA+G/C;;;OAGG;YACW,UAAU;IAcxB;;;OAGG;YACW,aAAa;IA+B3B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -12,6 +12,7 @@ import * as child_process from 'child_process';
|
|
|
12
12
|
import { logger } from '../utils/logger.js';
|
|
13
13
|
import { PACKAGE_NAME, PACKAGE_VERSION, BUILD_TIMESTAMP, BUILD_TYPE } from '../generated/version.js';
|
|
14
14
|
import { resolveSessionIdentity } from './sessionIdentity.js';
|
|
15
|
+
import { getPermissionHookAuditSummary } from '../utils/permissionHooks.js';
|
|
15
16
|
export class BuildInfoService {
|
|
16
17
|
startTime;
|
|
17
18
|
fileOperations;
|
|
@@ -48,7 +49,8 @@ export class BuildInfoService {
|
|
|
48
49
|
// Use Promise.allSettled to collect all available info, even if some sources fail
|
|
49
50
|
const results = await Promise.allSettled([
|
|
50
51
|
this.getGitInfo(),
|
|
51
|
-
this.getDockerInfo()
|
|
52
|
+
this.getDockerInfo(),
|
|
53
|
+
getPermissionHookAuditSummary(),
|
|
52
54
|
]);
|
|
53
55
|
// Package info comes from build-time generated constants
|
|
54
56
|
const packageInfo = { name: PACKAGE_NAME, version: PACKAGE_VERSION };
|
|
@@ -58,6 +60,9 @@ export class BuildInfoService {
|
|
|
58
60
|
const dockerInfo = results[1].status === 'fulfilled'
|
|
59
61
|
? results[1].value
|
|
60
62
|
: { isDocker: false, info: undefined };
|
|
63
|
+
const permissionHookInfo = results[2].status === 'fulfilled'
|
|
64
|
+
? results[2].value
|
|
65
|
+
: { installedHosts: [], currentHosts: [], repairedHosts: [], needsRepairHosts: [] };
|
|
61
66
|
// Log any failures for diagnostics
|
|
62
67
|
const failures = [];
|
|
63
68
|
if (results[0].status === 'rejected') {
|
|
@@ -66,6 +71,9 @@ export class BuildInfoService {
|
|
|
66
71
|
if (results[1].status === 'rejected') {
|
|
67
72
|
failures.push(`docker info: ${results[1].reason}`);
|
|
68
73
|
}
|
|
74
|
+
if (results[2].status === 'rejected') {
|
|
75
|
+
failures.push(`permission hook audit: ${results[2].reason}`);
|
|
76
|
+
}
|
|
69
77
|
if (failures.length > 0) {
|
|
70
78
|
logger.debug(`Build info collection had ${failures.length} failure(s): ${failures.join('; ')}`);
|
|
71
79
|
}
|
|
@@ -90,7 +98,6 @@ export class BuildInfoService {
|
|
|
90
98
|
type: BUILD_TYPE,
|
|
91
99
|
gitCommit: gitInfo.commit,
|
|
92
100
|
gitBranch: gitInfo.branch,
|
|
93
|
-
collectionFix: 'v1.6.9-beta1-collection-fix' // Version identifier for verification
|
|
94
101
|
},
|
|
95
102
|
runtime: {
|
|
96
103
|
nodeVersion: process.version,
|
|
@@ -112,6 +119,7 @@ export class BuildInfoService {
|
|
|
112
119
|
uptime: Date.now() - this.startTime.getTime(),
|
|
113
120
|
mcpConnection: true // We're connected if this method is being called via MCP
|
|
114
121
|
},
|
|
122
|
+
permissionHooks: permissionHookInfo,
|
|
115
123
|
startup: startupInfo,
|
|
116
124
|
};
|
|
117
125
|
}
|
|
@@ -176,6 +184,18 @@ export class BuildInfoService {
|
|
|
176
184
|
lines.push(`- **Started**: ${info.server.startTime.toISOString()}`);
|
|
177
185
|
lines.push(`- **Uptime**: ${this.formatUptime(info.server.uptime / 1000)}`);
|
|
178
186
|
lines.push(`- **MCP Connection**: ${info.server.mcpConnection ? '✅ Connected' : '❌ Disconnected'}`);
|
|
187
|
+
if (info.permissionHooks) {
|
|
188
|
+
const installedHosts = info.permissionHooks.installedHosts.length > 0
|
|
189
|
+
? info.permissionHooks.installedHosts.join(', ')
|
|
190
|
+
: 'None';
|
|
191
|
+
const currentHosts = info.permissionHooks.currentHosts.length > 0
|
|
192
|
+
? info.permissionHooks.currentHosts.join(', ')
|
|
193
|
+
: 'None';
|
|
194
|
+
const needsRepairHosts = info.permissionHooks.needsRepairHosts.length > 0
|
|
195
|
+
? info.permissionHooks.needsRepairHosts.join(', ')
|
|
196
|
+
: 'None';
|
|
197
|
+
lines.push('', '## 🔐 Permission Hooks', `- **Installed Hosts**: ${installedHosts}`, `- **Current Assets**: ${currentHosts}`, `- **Needs Repair**: ${needsRepairHosts}`);
|
|
198
|
+
}
|
|
179
199
|
// Issue #706: Startup timing
|
|
180
200
|
if (info.startup) {
|
|
181
201
|
lines.push('');
|
|
@@ -271,4 +291,4 @@ export class BuildInfoService {
|
|
|
271
291
|
return `${mb.toFixed(1)} MB`;
|
|
272
292
|
}
|
|
273
293
|
}
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRJbmZvU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9CdWlsZEluZm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sS0FBSyxhQUFhLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUE4QzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFDVixTQUFTLENBQU87SUFDaEIsY0FBYyxDQUF5QjtJQUN4RCxxRUFBcUU7SUFDN0QsWUFBWSxHQUF3QixJQUFJLENBQUM7SUFDakQsMkRBQTJEO0lBQ25ELG9CQUFvQixHQUEyQixJQUFJLENBQUM7SUFFNUQsWUFBWSxjQUFzQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxPQUFzQjtRQUM1QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsa0ZBQWtGO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxhQUFh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LElBQUksR0FBRyxDQUFDO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksT0FBTyxHQUFHLENBQUM7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMzQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFFM0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYTtRQUNoQyxNQUFNLEVBQUUsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMvQixPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnVpbGRJbmZvU2VydmljZSAtIFByb3ZpZGVzIGJ1aWxkIGFuZCBydW50aW1lIGluZm9ybWF0aW9uXG4gKiBTZXBhcmF0ZWQgZnJvbSBtYWluIGluZGV4LnRzIHRvIGF2b2lkIG1ha2luZyB0aGF0IGZpbGUgbGFyZ2VyXG4gKiBcbiAqIFNFQ1VSSVRZIEZJWCAoUFIgIzYxNCk6XG4gKiAxLiBETUNQLVNFQy0wMDQ6IEZBTFNFIFBPU0lUSVZFIFNVUFBSRVNTSU9OIC0gTm8gdXNlciBpbnB1dCBVbmljb2RlIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4gKiAgICBUaGlzIHNlcnZpY2Ugb25seSBwcm9jZXNzZXMgc3lzdGVtIGluZm9ybWF0aW9uIChnaXQsIHBhY2thZ2UuanNvbiwgZW52aXJvbm1lbnQgdmFyaWFibGVzKVxuICogICAgVGhlIE1DUCB0b29sICdnZXRfYnVpbGRfaW5mbycgdGFrZXMgTk8gcGFyYW1ldGVycyAoZW1wdHkgaW5wdXRTY2hlbWEpXG4gKiAgICBObyB1c2VyLXByb3ZpZGVkIGRhdGEgZmxvd3MgdGhyb3VnaCB0aGlzIHNlcnZpY2UgdGhhdCByZXF1aXJlcyBVbmljb2RlIG5vcm1hbGl6YXRpb25cbiAqL1xuXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IElGaWxlT3BlcmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuL0ZpbGVPcGVyYXRpb25zU2VydmljZS5qcyc7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUsIFBBQ0tBR0VfVkVSU0lPTiwgQlVJTERfVElNRVNUQU1QLCBCVUlMRF9UWVBFIH0gZnJvbSAnLi4vZ2VuZXJhdGVkL3ZlcnNpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFydHVwVGltZXIsIFN0YXJ0dXBSZXBvcnQgfSBmcm9tICcuLi90ZWxlbWV0cnkvU3RhcnR1cFRpbWVyLmpzJztcbmltcG9ydCB7IHJlc29sdmVTZXNzaW9uSWRlbnRpdHkgfSBmcm9tICcuL3Nlc3Npb25JZGVudGl0eS5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRJbmZvIHtcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHJ1bnRpbWVTZXNzaW9uSWQ6IHN0cmluZztcbiAgc2Vzc2lvblNvdXJjZTogJ2VudicgfCAnZGVyaXZlZCc7XG4gIHBhY2thZ2U6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICB9O1xuICBidWlsZDoge1xuICAgIHRpbWVzdGFtcD86IHN0cmluZztcbiAgICB0eXBlOiAnZ2l0JyB8ICducG0nIHwgJ3Vua25vd24nO1xuICAgIGdpdENvbW1pdD86IHN0cmluZztcbiAgICBnaXRCcmFuY2g/OiBzdHJpbmc7XG4gICAgY29sbGVjdGlvbkZpeD86IHN0cmluZzsgIC8vIFZlcnNpb24gaWRlbnRpZmllciBmb3IgdmVyaWZpY2F0aW9uXG4gIH07XG4gIHJ1bnRpbWU6IHtcbiAgICBub2RlVmVyc2lvbjogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgYXJjaDogc3RyaW5nO1xuICAgIHVwdGltZTogbnVtYmVyO1xuICAgIG1lbW9yeVVzYWdlOiBOb2RlSlMuTWVtb3J5VXNhZ2U7XG4gIH07XG4gIGVudmlyb25tZW50OiB7XG4gICAgbm9kZUVudj86IHN0cmluZztcbiAgICBpc1Byb2R1Y3Rpb246IGJvb2xlYW47XG4gICAgaXNEZXZlbG9wbWVudDogYm9vbGVhbjtcbiAgICBpc0RlYnVnOiBib29sZWFuO1xuICAgIGlzRG9ja2VyOiBib29sZWFuO1xuICAgIGRvY2tlckluZm8/OiBzdHJpbmc7XG4gIH07XG4gIHNlcnZlcjoge1xuICAgIHN0YXJ0VGltZTogRGF0ZTtcbiAgICB1cHRpbWU6IG51bWJlcjtcbiAgICBtY3BDb25uZWN0aW9uOiBib29sZWFuO1xuICB9O1xuICAvKiogSXNzdWUgIzcwNjogU3RhcnR1cCB0aW1pbmcgYW5kIHJlYWRpbmVzcyBzdGF0dXMuICovXG4gIHN0YXJ0dXA/OiB7XG4gICAgc3RhdHVzOiAncmVhZHknIHwgJ2luaXRpYWxpemluZyc7XG4gICAgZGVmZXJyZWRTZXR1cENvbXBsZXRlOiBib29sZWFuO1xuICAgIHVwdGltZU1zOiBudW1iZXI7XG4gICAgc3RhcnR1cFRpbWluZ01zPzogU3RhcnR1cFJlcG9ydDtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEJ1aWxkSW5mb1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0VGltZTogRGF0ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlT3BlcmF0aW9uczogSUZpbGVPcGVyYXRpb25zU2VydmljZTtcbiAgLyoqIElzc3VlICM3MDY6IE9wdGlvbmFsIHN0YXJ0dXAgdGltZXIgZm9yIHRpbWluZyBpbnN0cnVtZW50YXRpb24uICovXG4gIHByaXZhdGUgc3RhcnR1cFRpbWVyOiBTdGFydHVwVGltZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIElzc3VlICM3MDY6IENhbGxiYWNrIHRvIGNoZWNrIGRlZmVycmVkIHNldHVwIHN0YXR1cy4gKi9cbiAgcHJpdmF0ZSBkZWZlcnJlZFNldHVwQ2hlY2tlcjogKCgpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoZmlsZU9wZXJhdGlvbnM6IElGaWxlT3BlcmF0aW9uc1NlcnZpY2UpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5maWxlT3BlcmF0aW9ucyA9IGZpbGVPcGVyYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIElzc3VlICM3MDY6IFdpcmUgaW4gc3RhcnR1cCBpbnN0cnVtZW50YXRpb24gYWZ0ZXIgREkgaXMgcmVhZHkuXG4gICAqIENhbGxlZCBmcm9tIENvbnRhaW5lciB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGF0IHJlZ2lzdHJhdGlvbiB0aW1lLlxuICAgKi9cbiAgc2V0U3RhcnR1cFRpbWVyKHRpbWVyOiBTdGFydHVwVGltZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0dXBUaW1lciA9IHRpbWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIElzc3VlICM3MDY6IFdpcmUgaW4gZGVmZXJyZWQgc2V0dXAgc3RhdHVzIGNoZWNrZXIuXG4gICAqL1xuICBzZXREZWZlcnJlZFNldHVwQ2hlY2tlcihjaGVja2VyOiAoKSA9PiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZWZlcnJlZFNldHVwQ2hlY2tlciA9IGNoZWNrZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbXByZWhlbnNpdmUgYnVpbGQgaW5mb3JtYXRpb25cbiAgICogU0VDVVJJVFkgTk9URTogVGhpcyBtZXRob2QgcHJvY2Vzc2VzIG9ubHkgc3lzdGVtLWdlbmVyYXRlZCBkYXRhXG4gICAqIE5vIHVzZXIgaW5wdXQgaXMgaW52b2x2ZWQgLSBhbGwgZGF0YSBjb21lcyBmcm9tIGZpbGVzeXN0ZW0sIGdpdCwgYW5kIE5vZGUuanMgcHJvY2Vzc1xuICAgKlxuICAgKiBVc2VzIFByb21pc2UuYWxsU2V0dGxlZCB0byBjb2xsZWN0IHBhcnRpYWwgcmVzdWx0cyBldmVuIGlmIHNvbWUgc291cmNlcyBmYWlsLFxuICAgKiBwcm92aWRpbmcgbWF4aW11bSBpbmZvcm1hdGlvbiBhdmFpbGFiaWxpdHkgd2l0aCBncmFjZWZ1bCBkZWdyYWRhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRCdWlsZEluZm8oKTogUHJvbWlzZTxCdWlsZEluZm8+IHtcbiAgICAvLyBVc2UgUHJvbWlzZS5hbGxTZXR0bGVkIHRvIGNvbGxlY3QgYWxsIGF2YWlsYWJsZSBpbmZvLCBldmVuIGlmIHNvbWUgc291cmNlcyBmYWlsXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICB0aGlzLmdldEdpdEluZm8oKSxcbiAgICAgIHRoaXMuZ2V0RG9ja2VySW5mbygpXG4gICAgXSk7XG5cbiAgICAvLyBQYWNrYWdlIGluZm8gY29tZXMgZnJvbSBidWlsZC10aW1lIGdlbmVyYXRlZCBjb25zdGFudHNcbiAgICBjb25zdCBwYWNrYWdlSW5mbyA9IHsgbmFtZTogUEFDS0FHRV9OQU1FLCB2ZXJzaW9uOiBQQUNLQUdFX1ZFUlNJT04gfTtcblxuICAgIGNvbnN0IGdpdEluZm8gPSByZXN1bHRzWzBdLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCdcbiAgICAgID8gcmVzdWx0c1swXS52YWx1ZVxuICAgICAgOiB7IGNvbW1pdDogdW5kZWZpbmVkLCBicmFuY2g6IHVuZGVmaW5lZCB9O1xuXG4gICAgY29uc3QgZG9ja2VySW5mbyA9IHJlc3VsdHNbMV0uc3RhdHVzID09PSAnZnVsZmlsbGVkJ1xuICAgICAgPyByZXN1bHRzWzFdLnZhbHVlXG4gICAgICA6IHsgaXNEb2NrZXI6IGZhbHNlLCBpbmZvOiB1bmRlZmluZWQgfTtcblxuICAgIC8vIExvZyBhbnkgZmFpbHVyZXMgZm9yIGRpYWdub3N0aWNzXG4gICAgY29uc3QgZmFpbHVyZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHJlc3VsdHNbMF0uc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKGBnaXQgaW5mbzogJHtyZXN1bHRzWzBdLnJlYXNvbn1gKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdHNbMV0uc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKGBkb2NrZXIgaW5mbzogJHtyZXN1bHRzWzFdLnJlYXNvbn1gKTtcbiAgICB9XG5cbiAgICBpZiAoZmFpbHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBCdWlsZCBpbmZvIGNvbGxlY3Rpb24gaGFkICR7ZmFpbHVyZXMubGVuZ3RofSBmYWlsdXJlKHMpOiAke2ZhaWx1cmVzLmpvaW4oJzsgJyl9YCk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGltZXN0YW1wIGNvbWVzIGZyb20gYnVpbGQtdGltZSBnZW5lcmF0ZWQgY29uc3RhbnRzXG4gICAgY29uc3QgYnVpbGRUaW1lc3RhbXAgPSBCVUlMRF9USU1FU1RBTVA7XG5cbiAgICAvLyBJc3N1ZSAjNzA2OiBTdGFydHVwIHRpbWluZyBhbmQgcmVhZGluZXNzXG4gICAgY29uc3QgZGVmZXJyZWRDb21wbGV0ZSA9IHRoaXMuZGVmZXJyZWRTZXR1cENoZWNrZXIgPyB0aGlzLmRlZmVycmVkU2V0dXBDaGVja2VyKCkgOiB0cnVlO1xuICAgIGNvbnN0IHN0YXJ0dXBJbmZvOiBCdWlsZEluZm9bJ3N0YXJ0dXAnXSA9IHtcbiAgICAgIHN0YXR1czogZGVmZXJyZWRDb21wbGV0ZSA/ICdyZWFkeScgOiAnaW5pdGlhbGl6aW5nJyxcbiAgICAgIGRlZmVycmVkU2V0dXBDb21wbGV0ZTogZGVmZXJyZWRDb21wbGV0ZSxcbiAgICAgIHVwdGltZU1zOiBEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpLFxuICAgICAgc3RhcnR1cFRpbWluZ01zOiB0aGlzLnN0YXJ0dXBUaW1lcj8uZ2V0UmVwb3J0KCksXG4gICAgfTtcbiAgICBjb25zdCBzZXNzaW9uSWRlbnRpdHkgPSByZXNvbHZlU2Vzc2lvbklkZW50aXR5KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRlbnRpdHkuc2Vzc2lvbklkLFxuICAgICAgcnVudGltZVNlc3Npb25JZDogc2Vzc2lvbklkZW50aXR5LnJ1bnRpbWVTZXNzaW9uSWQsXG4gICAgICBzZXNzaW9uU291cmNlOiBzZXNzaW9uSWRlbnRpdHkuc291cmNlLFxuICAgICAgcGFja2FnZTogcGFja2FnZUluZm8sXG4gICAgICBidWlsZDoge1xuICAgICAgICB0aW1lc3RhbXA6IGJ1aWxkVGltZXN0YW1wLFxuICAgICAgICB0eXBlOiBCVUlMRF9UWVBFLFxuICAgICAgICBnaXRDb21taXQ6IGdpdEluZm8uY29tbWl0LFxuICAgICAgICBnaXRCcmFuY2g6IGdpdEluZm8uYnJhbmNoLFxuICAgICAgICBjb2xsZWN0aW9uRml4OiAndjEuNi45LWJldGExLWNvbGxlY3Rpb24tZml4JyAgLy8gVmVyc2lvbiBpZGVudGlmaWVyIGZvciB2ZXJpZmljYXRpb25cbiAgICAgIH0sXG4gICAgICBydW50aW1lOiB7XG4gICAgICAgIG5vZGVWZXJzaW9uOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHVwdGltZTogcHJvY2Vzcy51cHRpbWUoKSxcbiAgICAgICAgbWVtb3J5VXNhZ2U6IHByb2Nlc3MubWVtb3J5VXNhZ2UoKVxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIG5vZGVFbnY6IHByb2Nlc3MuZW52Lk5PREVfRU5WLFxuICAgICAgICBpc1Byb2R1Y3Rpb246IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicsXG4gICAgICAgIGlzRGV2ZWxvcG1lbnQ6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnLFxuICAgICAgICBpc0RlYnVnOiBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnIHx8IHByb2Nlc3MuZW52LkRFQlVHID09PSAnMScsXG4gICAgICAgIGlzRG9ja2VyOiBkb2NrZXJJbmZvLmlzRG9ja2VyLFxuICAgICAgICBkb2NrZXJJbmZvOiBkb2NrZXJJbmZvLmluZm9cbiAgICAgIH0sXG4gICAgICBzZXJ2ZXI6IHtcbiAgICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSxcbiAgICAgICAgdXB0aW1lOiBEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpLFxuICAgICAgICBtY3BDb25uZWN0aW9uOiB0cnVlIC8vIFdlJ3JlIGNvbm5lY3RlZCBpZiB0aGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQgdmlhIE1DUFxuICAgICAgfSxcbiAgICAgIHN0YXJ0dXA6IHN0YXJ0dXBJbmZvLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGJ1aWxkIGluZm8gYXMgdXNlci1mcmllbmRseSBtYXJrZG93blxuICAgKiBTRUNVUklUWSBOT1RFOiBPbmx5IGZvcm1hdHMgc3lzdGVtLWdlbmVyYXRlZCBkYXRhIC0gbm8gdXNlciBpbnB1dCBwcm9jZXNzaW5nXG4gICAqIEFsbCBpbnB1dCBkYXRhIGNvbWVzIGZyb20gZ2V0QnVpbGRJbmZvKCkgd2hpY2ggb25seSByZWFkcyBzeXN0ZW0gaW5mb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRCdWlsZEluZm8oaW5mbzogQnVpbGRJbmZvKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBcbiAgICBsaW5lcy5wdXNoKCcjIPCflKcgQnVpbGQgSW5mb3JtYXRpb25cXG4nKTtcbiAgICBcbiAgICAvLyBQYWNrYWdlIGluZm9cbiAgICBsaW5lcy5wdXNoKCcjIyDwn5OmIFBhY2thZ2UnKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqTmFtZSoqOiAke2luZm8ucGFja2FnZS5uYW1lfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipWZXJzaW9uKio6ICR7aW5mby5wYWNrYWdlLnZlcnNpb259YCk7XG4gICAgbGluZXMucHVzaCgnJyk7XG5cbiAgICBjb25zdCBpZGVudGl0eVNvdXJjZUxhYmVsID0gaW5mby5zZXNzaW9uU291cmNlID09PSAnZW52J1xuICAgICAgPyAnRXhwbGljaXQgZW52aXJvbm1lbnQnXG4gICAgICA6ICdEZXJpdmVkIGZyb20gd29ya3NwYWNlIGNvbnRleHQnO1xuICAgIGNvbnN0IHNlc3Npb25MaW5lcyA9IFtcbiAgICAgICcjIyDwn6qqIFNlc3Npb24nLFxuICAgICAgYC0gKipTZXNzaW9uIElEKio6ICR7aW5mby5zZXNzaW9uSWR9YCxcbiAgICAgIGAtICoqSWRlbnRpdHkgU291cmNlKio6ICR7aWRlbnRpdHlTb3VyY2VMYWJlbH1gLFxuICAgIF07XG4gICAgaWYgKGluZm8ucnVudGltZVNlc3Npb25JZCAhPT0gaW5mby5zZXNzaW9uSWQpIHtcbiAgICAgIHNlc3Npb25MaW5lcy5zcGxpY2UoMiwgMCwgYC0gKipSdW50aW1lIFNlc3Npb24gSUQqKjogJHtpbmZvLnJ1bnRpbWVTZXNzaW9uSWR9YCk7XG4gICAgfVxuICAgIGxpbmVzLnB1c2goLi4uc2Vzc2lvbkxpbmVzLCAnJyk7XG4gICAgXG4gICAgLy8gQnVpbGQgaW5mb1xuICAgIGxpbmVzLnB1c2goJyMjIPCfj5fvuI8gQnVpbGQnKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqVHlwZSoqOiAke2luZm8uYnVpbGQudHlwZX1gKTtcbiAgICBpZiAoaW5mby5idWlsZC50aW1lc3RhbXApIHtcbiAgICAgIGxpbmVzLnB1c2goYC0gKipUaW1lc3RhbXAqKjogJHtpbmZvLmJ1aWxkLnRpbWVzdGFtcH1gKTtcbiAgICB9XG4gICAgaWYgKGluZm8uYnVpbGQuZ2l0Q29tbWl0KSB7XG4gICAgICBsaW5lcy5wdXNoKGAtICoqR2l0IENvbW1pdCoqOiBcXGAke2luZm8uYnVpbGQuZ2l0Q29tbWl0fVxcYGApO1xuICAgIH1cbiAgICBpZiAoaW5mby5idWlsZC5naXRCcmFuY2gpIHtcbiAgICAgIGxpbmVzLnB1c2goYC0gKipHaXQgQnJhbmNoKio6ICR7aW5mby5idWlsZC5naXRCcmFuY2h9YCk7XG4gICAgfVxuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIFxuICAgIC8vIFJ1bnRpbWUgaW5mb1xuICAgIGxpbmVzLnB1c2goJyMjIPCfkrsgUnVudGltZScpO1xuICAgIGxpbmVzLnB1c2goYC0gKipOb2RlLmpzKio6ICR7aW5mby5ydW50aW1lLm5vZGVWZXJzaW9ufWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipQbGF0Zm9ybSoqOiAke2luZm8ucnVudGltZS5wbGF0Zm9ybX1gKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqQXJjaGl0ZWN0dXJlKio6ICR7aW5mby5ydW50aW1lLmFyY2h9YCk7XG4gICAgbGluZXMucHVzaChgLSAqKlByb2Nlc3MgVXB0aW1lKio6ICR7dGhpcy5mb3JtYXRVcHRpbWUoaW5mby5ydW50aW1lLnVwdGltZSl9YCk7XG4gICAgbGluZXMucHVzaChgLSAqKk1lbW9yeSBVc2FnZSoqOiAke3RoaXMuZm9ybWF0TWVtb3J5KGluZm8ucnVudGltZS5tZW1vcnlVc2FnZS5oZWFwVXNlZCl9IC8gJHt0aGlzLmZvcm1hdE1lbW9yeShpbmZvLnJ1bnRpbWUubWVtb3J5VXNhZ2UuaGVhcFRvdGFsKX1gKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICBcbiAgICAvLyBFbnZpcm9ubWVudCBpbmZvXG4gICAgbGluZXMucHVzaCgnIyMg4pqZ77iPIEVudmlyb25tZW50Jyk7XG4gICAgbGluZXMucHVzaChgLSAqKk5PREVfRU5WKio6ICR7aW5mby5lbnZpcm9ubWVudC5ub2RlRW52IHx8ICdub3Qgc2V0J31gKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqTW9kZSoqOiAke2luZm8uZW52aXJvbm1lbnQuaXNQcm9kdWN0aW9uID8gJ1Byb2R1Y3Rpb24nIDogaW5mby5lbnZpcm9ubWVudC5pc0RldmVsb3BtZW50ID8gJ0RldmVsb3BtZW50JyA6ICdVbmtub3duJ31gKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqRGVidWcqKjogJHtpbmZvLmVudmlyb25tZW50LmlzRGVidWcgPyAnRW5hYmxlZCcgOiAnRGlzYWJsZWQnfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipEb2NrZXIqKjogJHtpbmZvLmVudmlyb25tZW50LmlzRG9ja2VyID8gJ1llcycgOiAnTm8nfWApO1xuICAgIGlmIChpbmZvLmVudmlyb25tZW50LmRvY2tlckluZm8pIHtcbiAgICAgIGxpbmVzLnB1c2goYC0gKipDb250YWluZXIqKjogJHtpbmZvLmVudmlyb25tZW50LmRvY2tlckluZm99YCk7XG4gICAgfVxuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIFxuICAgIC8vIFNlcnZlciBpbmZvXG4gICAgbGluZXMucHVzaCgnIyMg8J+agCBTZXJ2ZXInKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqU3RhcnRlZCoqOiAke2luZm8uc2VydmVyLnN0YXJ0VGltZS50b0lTT1N0cmluZygpfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipVcHRpbWUqKjogJHt0aGlzLmZvcm1hdFVwdGltZShpbmZvLnNlcnZlci51cHRpbWUgLyAxMDAwKX1gKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqTUNQIENvbm5lY3Rpb24qKjogJHtpbmZvLnNlcnZlci5tY3BDb25uZWN0aW9uID8gJ+KchSBDb25uZWN0ZWQnIDogJ+KdjCBEaXNjb25uZWN0ZWQnfWApO1xuXG4gICAgLy8gSXNzdWUgIzcwNjogU3RhcnR1cCB0aW1pbmdcbiAgICBpZiAoaW5mby5zdGFydHVwKSB7XG4gICAgICBsaW5lcy5wdXNoKCcnKTtcbiAgICAgIGxpbmVzLnB1c2goJyMjIOKPse+4jyBTdGFydHVwJyk7XG4gICAgICBsaW5lcy5wdXNoKGAtICoqU3RhdHVzKio6ICR7aW5mby5zdGFydHVwLnN0YXR1cyA9PT0gJ3JlYWR5JyA/ICfinIUgUmVhZHknIDogJ+KPsyBJbml0aWFsaXppbmcnfWApO1xuICAgICAgbGluZXMucHVzaChgLSAqKkRlZmVycmVkIFNldHVwKio6ICR7aW5mby5zdGFydHVwLmRlZmVycmVkU2V0dXBDb21wbGV0ZSA/ICdDb21wbGV0ZScgOiAnSW4gUHJvZ3Jlc3MnfWApO1xuICAgICAgaWYgKGluZm8uc3RhcnR1cC5zdGFydHVwVGltaW5nTXMpIHtcbiAgICAgICAgY29uc3QgdGltaW5nID0gaW5mby5zdGFydHVwLnN0YXJ0dXBUaW1pbmdNcztcbiAgICAgICAgbGluZXMucHVzaChgLSAqKkNyaXRpY2FsIFBhdGgqKjogJHt0aW1pbmcuY3JpdGljYWxQYXRoTXN9bXNgKTtcbiAgICAgICAgbGluZXMucHVzaChgLSAqKkRlZmVycmVkIFdvcmsqKjogJHt0aW1pbmcuZGVmZXJyZWRNc31tc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGAtICoqVG90YWwgU3RhcnR1cCoqOiAke3RpbWluZy50b3RhbE1zfW1zYCk7XG4gICAgICAgIGlmICh0aW1pbmcuY29ubmVjdEF0TXMgIT09IG51bGwpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKGAtICoqVGltZSB0byBDb25uZWN0Kio6ICR7dGltaW5nLmNvbm5lY3RBdE1zfW1zYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWluZy5waGFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goJy0gKipQaGFzZXMqKjonKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBoYXNlIG9mIHRpbWluZy5waGFzZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZyA9IHBoYXNlLmNyaXRpY2FsID8gJ2NyaXRpY2FsJyA6ICdkZWZlcnJlZCc7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgIC0gJHtwaGFzZS5uYW1lfTogJHtwaGFzZS5kdXJhdGlvbk1zfW1zICgke3RhZ30pYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNFQ1VSSVRZIE5PVEU6IE5vIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgLSBleGVjdXRlcyBzeXN0ZW0gZ2l0IGNvbW1hbmRzXG4gICAqIERhdGEgc291cmNlOiBHaXQgQ0xJIG91dHB1dCAoc3lzdGVtLWNvbnRyb2xsZWQpLCBubyB1c2VyIGlucHV0XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEdpdEluZm8oKTogUHJvbWlzZTx7IGNvbW1pdD86IHN0cmluZzsgYnJhbmNoPzogc3RyaW5nIH0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gU0VDVVJJVFkgTk9URTogR2l0IGNvbW1hbmRzIHJldHVybiBzeXN0ZW0tY29udHJvbGxlZCBkYXRhIC0gbm90IHVzZXIgaW5wdXRcbiAgICAgIC8vIEdpdCBjb21taXQgaGFzaGVzIGFuZCBicmFuY2ggbmFtZXMgYXJlIGNvbnRyb2xsZWQgYnkgZ2l0LCBubyBVbmljb2RlIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4gICAgICBjb25zdCBjb21taXQgPSBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKCdnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRCcsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkudHJpbSgpO1xuICAgICAgY29uc3QgYnJhbmNoID0gY2hpbGRfcHJvY2Vzcy5leGVjU3luYygnZ2l0IHJldi1wYXJzZSAtLWFiYnJldi1yZWYgSEVBRCcsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkudHJpbSgpO1xuICAgICAgXG4gICAgICByZXR1cm4geyBjb21taXQsIGJyYW5jaCB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTm90IGluIGEgZ2l0IHJlcG9zaXRvcnkgb3IgZ2l0IG5vdCBhdmFpbGFibGVcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU0VDVVJJVFkgTk9URTogTm8gVW5pY29kZSBub3JtYWxpemF0aW9uIG5lZWRlZCAtIHJlYWRzIGNvbnRhaW5lciBydW50aW1lIGZpbGVzXG4gICAqIERhdGEgc291cmNlOiBTeXN0ZW0gY2dyb3VwIGZpbGVzIChjb250YWluZXItY29udHJvbGxlZCksIG5vIHVzZXIgaW5wdXRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2V0RG9ja2VySW5mbygpOiBQcm9taXNlPHsgaXNEb2NrZXI6IGJvb2xlYW47IGluZm8/OiBzdHJpbmcgfT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBTRUNVUklUWSBOT1RFOiBSZWFkaW5nIHN5c3RlbSBjZ3JvdXAgZmlsZSAtIGNvbnRyb2xsZWQgYnkgY29udGFpbmVyIHJ1bnRpbWUsIG5vdCB1c2VyIGlucHV0XG4gICAgICAvLyBDb250YWluZXIgcnVudGltZSBnZW5lcmF0ZXMgdGhpcyBmaWxlIGNvbnRlbnQsIG5vIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBuZWVkZWRcbiAgICAgIGNvbnN0IGNncm91cENvbnRlbnQgPSBhd2FpdCB0aGlzLmZpbGVPcGVyYXRpb25zLnJlYWRGaWxlKCcvcHJvYy8xL2Nncm91cCcsIHtcbiAgICAgICAgc291cmNlOiAnQnVpbGRJbmZvU2VydmljZS5nZXREb2NrZXJJbmZvJ1xuICAgICAgfSk7XG4gICAgICBjb25zdCBpc0RvY2tlciA9IGNncm91cENvbnRlbnQuaW5jbHVkZXMoJ2RvY2tlcicpIHx8IGNncm91cENvbnRlbnQuaW5jbHVkZXMoJ2NvbnRhaW5lcmQnKTtcbiAgICAgIFxuICAgICAgaWYgKGlzRG9ja2VyKSB7XG4gICAgICAgIC8vIFRyeSB0byBnZXQgY29udGFpbmVyIElEXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcklkID0gY2dyb3VwQ29udGVudFxuICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAuZmluZChsaW5lID0+IGxpbmUuaW5jbHVkZXMoJ2RvY2tlcicpKVxuICAgICAgICAgID8uc3BsaXQoJy8nKVxuICAgICAgICAgIC5wb3AoKVxuICAgICAgICAgID8uc3Vic3RyaW5nKDAsIDEyKTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaXNEb2NrZXI6IHRydWUsXG4gICAgICAgICAgaW5mbzogY29udGFpbmVySWQgPyBgQ29udGFpbmVyIElEOiAke2NvbnRhaW5lcklkfWAgOiAnUnVubmluZyBpbiBEb2NrZXInXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBcbiAgICAgIHJldHVybiB7IGlzRG9ja2VyOiBmYWxzZSB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gTm90IGluIERvY2tlciBvciAvcHJvYyBub3QgYXZhaWxhYmxlXG4gICAgICByZXR1cm4geyBpc0RvY2tlcjogZmFsc2UgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFVwdGltZShzZWNvbmRzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA4NjQwMCk7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKChzZWNvbmRzICUgODY0MDApIC8gMzYwMCk7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHNlY29uZHMgJSAzNjAwKSAvIDYwKTtcbiAgICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApO1xuICAgIFxuICAgIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChkYXlzID4gMCkgcGFydHMucHVzaChgJHtkYXlzfWRgKTtcbiAgICBpZiAoaG91cnMgPiAwKSBwYXJ0cy5wdXNoKGAke2hvdXJzfWhgKTtcbiAgICBpZiAobWludXRlcyA+IDApIHBhcnRzLnB1c2goYCR7bWludXRlc31tYCk7XG4gICAgaWYgKHNlY3MgPiAwIHx8IHBhcnRzLmxlbmd0aCA9PT0gMCkgcGFydHMucHVzaChgJHtzZWNzfXNgKTtcbiAgICBcbiAgICByZXR1cm4gcGFydHMuam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNZW1vcnkoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWIgPSBieXRlcyAvIDEwMjQgLyAxMDI0O1xuICAgIHJldHVybiBgJHttYi50b0ZpeGVkKDEpfSBNQmA7XG4gIH1cbn1cbiJdfQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVpbGRJbmZvU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9CdWlsZEluZm9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sS0FBSyxhQUFhLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFtRDVFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDVixTQUFTLENBQU87SUFDaEIsY0FBYyxDQUF5QjtJQUN4RCxxRUFBcUU7SUFDN0QsWUFBWSxHQUF3QixJQUFJLENBQUM7SUFDakQsMkRBQTJEO0lBQ25ELG9CQUFvQixHQUEyQixJQUFJLENBQUM7SUFFNUQsWUFBWSxjQUFzQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWUsQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxPQUFzQjtRQUM1QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsa0ZBQWtGO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQztZ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SSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUV0QyxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7UUFDM0IsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLE9BQU8sR0FBRyxDQUFDO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRTNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWE7UUFDaEMsTUFBTSxFQUFFLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7UUFDL0IsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ1aWxkSW5mb1NlcnZpY2UgLSBQcm92aWRlcyBidWlsZCBhbmQgcnVudGltZSBpbmZvcm1hdGlvblxuICogU2VwYXJhdGVkIGZyb20gbWFpbiBpbmRleC50cyB0byBhdm9pZCBtYWtpbmcgdGhhdCBmaWxlIGxhcmdlclxuICogXG4gKiBTRUNVUklUWSBGSVggKFBSICM2MTQpOlxuICogMS4gRE1DUC1TRUMtMDA0OiBGQUxTRSBQT1NJVElWRSBTVVBQUkVTU0lPTiAtIE5vIHVzZXIgaW5wdXQgVW5pY29kZSBub3JtYWxpemF0aW9uIG5lZWRlZFxuICogICAgVGhpcyBzZXJ2aWNlIG9ubHkgcHJvY2Vzc2VzIHN5c3RlbSBpbmZvcm1hdGlvbiAoZ2l0LCBwYWNrYWdlLmpzb24sIGVudmlyb25tZW50IHZhcmlhYmxlcylcbiAqICAgIFRoZSBNQ1AgdG9vbCAnZ2V0X2J1aWxkX2luZm8nIHRha2VzIE5PIHBhcmFtZXRlcnMgKGVtcHR5IGlucHV0U2NoZW1hKVxuICogICAgTm8gdXNlci1wcm92aWRlZCBkYXRhIGZsb3dzIHRocm91Z2ggdGhpcyBzZXJ2aWNlIHRoYXQgcmVxdWlyZXMgVW5pY29kZSBub3JtYWxpemF0aW9uXG4gKi9cblxuaW1wb3J0ICogYXMgY2hpbGRfcHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBJRmlsZU9wZXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9GaWxlT3BlcmF0aW9uc1NlcnZpY2UuanMnO1xuaW1wb3J0IHsgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1ZFUlNJT04sIEJVSUxEX1RJTUVTVEFNUCwgQlVJTERfVFlQRSB9IGZyb20gJy4uL2dlbmVyYXRlZC92ZXJzaW9uLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhcnR1cFRpbWVyLCBTdGFydHVwUmVwb3J0IH0gZnJvbSAnLi4vdGVsZW1ldHJ5L1N0YXJ0dXBUaW1lci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlU2Vzc2lvbklkZW50aXR5IH0gZnJvbSAnLi9zZXNzaW9uSWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgZ2V0UGVybWlzc2lvbkhvb2tBdWRpdFN1bW1hcnkgfSBmcm9tICcuLi91dGlscy9wZXJtaXNzaW9uSG9va3MuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkSW5mbyB7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBydW50aW1lU2Vzc2lvbklkOiBzdHJpbmc7XG4gIHNlc3Npb25Tb3VyY2U6ICdlbnYnIHwgJ2Rlcml2ZWQnO1xuICBwYWNrYWdlOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgfTtcbiAgYnVpbGQ6IHtcbiAgICB0aW1lc3RhbXA/OiBzdHJpbmc7XG4gICAgdHlwZTogJ2dpdCcgfCAnbnBtJyB8ICd1bmtub3duJztcbiAgICBnaXRDb21taXQ/OiBzdHJpbmc7XG4gICAgZ2l0QnJhbmNoPzogc3RyaW5nO1xuICB9O1xuICBydW50aW1lOiB7XG4gICAgbm9kZVZlcnNpb246IHN0cmluZztcbiAgICBwbGF0Zm9ybTogc3RyaW5nO1xuICAgIGFyY2g6IHN0cmluZztcbiAgICB1cHRpbWU6IG51bWJlcjtcbiAgICBtZW1vcnlVc2FnZTogTm9kZUpTLk1lbW9yeVVzYWdlO1xuICB9O1xuICBlbnZpcm9ubWVudDoge1xuICAgIG5vZGVFbnY/OiBzdHJpbmc7XG4gICAgaXNQcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIGlzRGV2ZWxvcG1lbnQ6IGJvb2xlYW47XG4gICAgaXNEZWJ1ZzogYm9vbGVhbjtcbiAgICBpc0RvY2tlcjogYm9vbGVhbjtcbiAgICBkb2NrZXJJbmZvPzogc3RyaW5nO1xuICB9O1xuICBzZXJ2ZXI6IHtcbiAgICBzdGFydFRpbWU6IERhdGU7XG4gICAgdXB0aW1lOiBudW1iZXI7XG4gICAgbWNwQ29ubmVjdGlvbjogYm9vbGVhbjtcbiAgfTtcbiAgcGVybWlzc2lvbkhvb2tzPzoge1xuICAgIGluc3RhbGxlZEhvc3RzOiBzdHJpbmdbXTtcbiAgICBjdXJyZW50SG9zdHM6IHN0cmluZ1tdO1xuICAgIHJlcGFpcmVkSG9zdHM6IHN0cmluZ1tdO1xuICAgIG5lZWRzUmVwYWlySG9zdHM6IHN0cmluZ1tdO1xuICB9O1xuICAvKiogSXNzdWUgIzcwNjogU3RhcnR1cCB0aW1pbmcgYW5kIHJlYWRpbmVzcyBzdGF0dXMuICovXG4gIHN0YXJ0dXA/OiB7XG4gICAgc3RhdHVzOiAncmVhZHknIHwgJ2luaXRpYWxpemluZyc7XG4gICAgZGVmZXJyZWRTZXR1cENvbXBsZXRlOiBib29sZWFuO1xuICAgIHVwdGltZU1zOiBudW1iZXI7XG4gICAgc3RhcnR1cFRpbWluZ01zPzogU3RhcnR1cFJlcG9ydDtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEJ1aWxkSW5mb1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0VGltZTogRGF0ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaWxlT3BlcmF0aW9uczogSUZpbGVPcGVyYXRpb25zU2VydmljZTtcbiAgLyoqIElzc3VlICM3MDY6IE9wdGlvbmFsIHN0YXJ0dXAgdGltZXIgZm9yIHRpbWluZyBpbnN0cnVtZW50YXRpb24uICovXG4gIHByaXZhdGUgc3RhcnR1cFRpbWVyOiBTdGFydHVwVGltZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIElzc3VlICM3MDY6IENhbGxiYWNrIHRvIGNoZWNrIGRlZmVycmVkIHNldHVwIHN0YXR1cy4gKi9cbiAgcHJpdmF0ZSBkZWZlcnJlZFNldHVwQ2hlY2tlcjogKCgpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoZmlsZU9wZXJhdGlvbnM6IElGaWxlT3BlcmF0aW9uc1NlcnZpY2UpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5maWxlT3BlcmF0aW9ucyA9IGZpbGVPcGVyYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIElzc3VlICM3MDY6IFdpcmUgaW4gc3RhcnR1cCBpbnN0cnVtZW50YXRpb24gYWZ0ZXIgREkgaXMgcmVhZHkuXG4gICAqIENhbGxlZCBmcm9tIENvbnRhaW5lciB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGF0IHJlZ2lzdHJhdGlvbiB0aW1lLlxuICAgKi9cbiAgc2V0U3RhcnR1cFRpbWVyKHRpbWVyOiBTdGFydHVwVGltZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0dXBUaW1lciA9IHRpbWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIElzc3VlICM3MDY6IFdpcmUgaW4gZGVmZXJyZWQgc2V0dXAgc3RhdHVzIGNoZWNrZXIuXG4gICAqL1xuICBzZXREZWZlcnJlZFNldHVwQ2hlY2tlcihjaGVja2VyOiAoKSA9PiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kZWZlcnJlZFNldHVwQ2hlY2tlciA9IGNoZWNrZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbXByZWhlbnNpdmUgYnVpbGQgaW5mb3JtYXRpb25cbiAgICogU0VDVVJJVFkgTk9URTogVGhpcyBtZXRob2QgcHJvY2Vzc2VzIG9ubHkgc3lzdGVtLWdlbmVyYXRlZCBkYXRhXG4gICAqIE5vIHVzZXIgaW5wdXQgaXMgaW52b2x2ZWQgLSBhbGwgZGF0YSBjb21lcyBmcm9tIGZpbGVzeXN0ZW0sIGdpdCwgYW5kIE5vZGUuanMgcHJvY2Vzc1xuICAgKlxuICAgKiBVc2VzIFByb21pc2UuYWxsU2V0dGxlZCB0byBjb2xsZWN0IHBhcnRpYWwgcmVzdWx0cyBldmVuIGlmIHNvbWUgc291cmNlcyBmYWlsLFxuICAgKiBwcm92aWRpbmcgbWF4aW11bSBpbmZvcm1hdGlvbiBhdmFpbGFiaWxpdHkgd2l0aCBncmFjZWZ1bCBkZWdyYWRhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRCdWlsZEluZm8oKTogUHJvbWlzZTxCdWlsZEluZm8+IHtcbiAgICAvLyBVc2UgUHJvbWlzZS5hbGxTZXR0bGVkIHRvIGNvbGxlY3QgYWxsIGF2YWlsYWJsZSBpbmZvLCBldmVuIGlmIHNvbWUgc291cmNlcyBmYWlsXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICB0aGlzLmdldEdpdEluZm8oKSxcbiAgICAgIHRoaXMuZ2V0RG9ja2VySW5mbygpLFxuICAgICAgZ2V0UGVybWlzc2lvbkhvb2tBdWRpdFN1bW1hcnkoKSxcbiAgICBdKTtcblxuICAgIC8vIFBhY2thZ2UgaW5mbyBjb21lcyBmcm9tIGJ1aWxkLXRpbWUgZ2VuZXJhdGVkIGNvbnN0YW50c1xuICAgIGNvbnN0IHBhY2thZ2VJbmZvID0geyBuYW1lOiBQQUNLQUdFX05BTUUsIHZlcnNpb246IFBBQ0tBR0VfVkVSU0lPTiB9O1xuXG4gICAgY29uc3QgZ2l0SW5mbyA9IHJlc3VsdHNbMF0uc3RhdHVzID09PSAnZnVsZmlsbGVkJ1xuICAgICAgPyByZXN1bHRzWzBdLnZhbHVlXG4gICAgICA6IHsgY29tbWl0OiB1bmRlZmluZWQsIGJyYW5jaDogdW5kZWZpbmVkIH07XG5cbiAgICBjb25zdCBkb2NrZXJJbmZvID0gcmVzdWx0c1sxXS5zdGF0dXMgPT09ICdmdWxmaWxsZWQnXG4gICAgICA/IHJlc3VsdHNbMV0udmFsdWVcbiAgICAgIDogeyBpc0RvY2tlcjogZmFsc2UsIGluZm86IHVuZGVmaW5lZCB9O1xuICAgIGNvbnN0IHBlcm1pc3Npb25Ib29rSW5mbyA9IHJlc3VsdHNbMl0uc3RhdHVzID09PSAnZnVsZmlsbGVkJ1xuICAgICAgPyByZXN1bHRzWzJdLnZhbHVlXG4gICAgICA6IHsgaW5zdGFsbGVkSG9zdHM6IFtdLCBjdXJyZW50SG9zdHM6IFtdLCByZXBhaXJlZEhvc3RzOiBbXSwgbmVlZHNSZXBhaXJIb3N0czogW10gfTtcblxuICAgIC8vIExvZyBhbnkgZmFpbHVyZXMgZm9yIGRpYWdub3N0aWNzXG4gICAgY29uc3QgZmFpbHVyZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHJlc3VsdHNbMF0uc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKGBnaXQgaW5mbzogJHtyZXN1bHRzWzBdLnJlYXNvbn1gKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdHNbMV0uc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKGBkb2NrZXIgaW5mbzogJHtyZXN1bHRzWzFdLnJlYXNvbn1gKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdHNbMl0uc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICBmYWlsdXJlcy5wdXNoKGBwZXJtaXNzaW9uIGhvb2sgYXVkaXQ6ICR7cmVzdWx0c1syXS5yZWFzb259YCk7XG4gICAgfVxuXG4gICAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQnVpbGQgaW5mbyBjb2xsZWN0aW9uIGhhZCAke2ZhaWx1cmVzLmxlbmd0aH0gZmFpbHVyZShzKTogJHtmYWlsdXJlcy5qb2luKCc7ICcpfWApO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRpbWVzdGFtcCBjb21lcyBmcm9tIGJ1aWxkLXRpbWUgZ2VuZXJhdGVkIGNvbnN0YW50c1xuICAgIGNvbnN0IGJ1aWxkVGltZXN0YW1wID0gQlVJTERfVElNRVNUQU1QO1xuXG4gICAgLy8gSXNzdWUgIzcwNjogU3RhcnR1cCB0aW1pbmcgYW5kIHJlYWRpbmVzc1xuICAgIGNvbnN0IGRlZmVycmVkQ29tcGxldGUgPSB0aGlzLmRlZmVycmVkU2V0dXBDaGVja2VyID8gdGhpcy5kZWZlcnJlZFNldHVwQ2hlY2tlcigpIDogdHJ1ZTtcbiAgICBjb25zdCBzdGFydHVwSW5mbzogQnVpbGRJbmZvWydzdGFydHVwJ10gPSB7XG4gICAgICBzdGF0dXM6IGRlZmVycmVkQ29tcGxldGUgPyAncmVhZHknIDogJ2luaXRpYWxpemluZycsXG4gICAgICBkZWZlcnJlZFNldHVwQ29tcGxldGU6IGRlZmVycmVkQ29tcGxldGUsXG4gICAgICB1cHRpbWVNczogRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSxcbiAgICAgIHN0YXJ0dXBUaW1pbmdNczogdGhpcy5zdGFydHVwVGltZXI/LmdldFJlcG9ydCgpLFxuICAgIH07XG4gICAgY29uc3Qgc2Vzc2lvbklkZW50aXR5ID0gcmVzb2x2ZVNlc3Npb25JZGVudGl0eSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNlc3Npb25JZDogc2Vzc2lvbklkZW50aXR5LnNlc3Npb25JZCxcbiAgICAgIHJ1bnRpbWVTZXNzaW9uSWQ6IHNlc3Npb25JZGVudGl0eS5ydW50aW1lU2Vzc2lvbklkLFxuICAgICAgc2Vzc2lvblNvdXJjZTogc2Vzc2lvbklkZW50aXR5LnNvdXJjZSxcbiAgICAgIHBhY2thZ2U6IHBhY2thZ2VJbmZvLFxuICAgICAgYnVpbGQ6IHtcbiAgICAgICAgdGltZXN0YW1wOiBidWlsZFRpbWVzdGFtcCxcbiAgICAgICAgdHlwZTogQlVJTERfVFlQRSxcbiAgICAgICAgZ2l0Q29tbWl0OiBnaXRJbmZvLmNvbW1pdCxcbiAgICAgICAgZ2l0QnJhbmNoOiBnaXRJbmZvLmJyYW5jaCxcbiAgICAgIH0sXG4gICAgICBydW50aW1lOiB7XG4gICAgICAgIG5vZGVWZXJzaW9uOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLFxuICAgICAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAgICAgIHVwdGltZTogcHJvY2Vzcy51cHRpbWUoKSxcbiAgICAgICAgbWVtb3J5VXNhZ2U6IHByb2Nlc3MubWVtb3J5VXNhZ2UoKVxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIG5vZGVFbnY6IHByb2Nlc3MuZW52Lk5PREVfRU5WLFxuICAgICAgICBpc1Byb2R1Y3Rpb246IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicsXG4gICAgICAgIGlzRGV2ZWxvcG1lbnQ6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnLFxuICAgICAgICBpc0RlYnVnOiBwcm9jZXNzLmVudi5ERUJVRyA9PT0gJ3RydWUnIHx8IHByb2Nlc3MuZW52LkRFQlVHID09PSAnMScsXG4gICAgICAgIGlzRG9ja2VyOiBkb2NrZXJJbmZvLmlzRG9ja2VyLFxuICAgICAgICBkb2NrZXJJbmZvOiBkb2NrZXJJbmZvLmluZm9cbiAgICAgIH0sXG4gICAgICBzZXJ2ZXI6IHtcbiAgICAgICAgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0VGltZSxcbiAgICAgICAgdXB0aW1lOiBEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpLFxuICAgICAgICBtY3BDb25uZWN0aW9uOiB0cnVlIC8vIFdlJ3JlIGNvbm5lY3RlZCBpZiB0aGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQgdmlhIE1DUFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25Ib29rczogcGVybWlzc2lvbkhvb2tJbmZvLFxuICAgICAgc3RhcnR1cDogc3RhcnR1cEluZm8sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYnVpbGQgaW5mbyBhcyB1c2VyLWZyaWVuZGx5IG1hcmtkb3duXG4gICAqIFNFQ1VSSVRZIE5PVEU6IE9ubHkgZm9ybWF0cyBzeXN0ZW0tZ2VuZXJhdGVkIGRhdGEgLSBubyB1c2VyIGlucHV0IHByb2Nlc3NpbmdcbiAgICogQWxsIGlucHV0IGRhdGEgY29tZXMgZnJvbSBnZXRCdWlsZEluZm8oKSB3aGljaCBvbmx5IHJlYWRzIHN5c3RlbSBpbmZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIGZvcm1hdEJ1aWxkSW5mbyhpbmZvOiBCdWlsZEluZm8pOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIFxuICAgIGxpbmVzLnB1c2goJyMg8J+UpyBCdWlsZCBJbmZvcm1hdGlvblxcbicpO1xuICAgIFxuICAgIC8vIFBhY2thZ2UgaW5mb1xuICAgIGxpbmVzLnB1c2goJyMjIPCfk6YgUGFja2FnZScpO1xuICAgIGxpbmVzLnB1c2goYC0gKipOYW1lKio6ICR7aW5mby5wYWNrYWdlLm5hbWV9YCk7XG4gICAgbGluZXMucHVzaChgLSAqKlZlcnNpb24qKjogJHtpbmZvLnBhY2thZ2UudmVyc2lvbn1gKTtcbiAgICBsaW5lcy5wdXNoKCcnKTtcblxuICAgIGNvbnN0IGlkZW50aXR5U291cmNlTGFiZWwgPSBpbmZvLnNlc3Npb25Tb3VyY2UgPT09ICdlbnYnXG4gICAgICA/ICdFeHBsaWNpdCBlbnZpcm9ubWVudCdcbiAgICAgIDogJ0Rlcml2ZWQgZnJvbSB3b3Jrc3BhY2UgY29udGV4dCc7XG4gICAgY29uc3Qgc2Vzc2lvbkxpbmVzID0gW1xuICAgICAgJyMjIPCfqqogU2Vzc2lvbicsXG4gICAgICBgLSAqKlNlc3Npb24gSUQqKjogJHtpbmZvLnNlc3Npb25JZH1gLFxuICAgICAgYC0gKipJZGVudGl0eSBTb3VyY2UqKjogJHtpZGVudGl0eVNvdXJjZUxhYmVsfWAsXG4gICAgXTtcbiAgICBpZiAoaW5mby5ydW50aW1lU2Vzc2lvbklkICE9PSBpbmZvLnNlc3Npb25JZCkge1xuICAgICAgc2Vzc2lvbkxpbmVzLnNwbGljZSgyLCAwLCBgLSAqKlJ1bnRpbWUgU2Vzc2lvbiBJRCoqOiAke2luZm8ucnVudGltZVNlc3Npb25JZH1gKTtcbiAgICB9XG4gICAgbGluZXMucHVzaCguLi5zZXNzaW9uTGluZXMsICcnKTtcbiAgICBcbiAgICAvLyBCdWlsZCBpbmZvXG4gICAgbGluZXMucHVzaCgnIyMg8J+Pl++4jyBCdWlsZCcpO1xuICAgIGxpbmVzLnB1c2goYC0gKipUeXBlKio6ICR7aW5mby5idWlsZC50eXBlfWApO1xuICAgIGlmIChpbmZvLmJ1aWxkLnRpbWVzdGFtcCkge1xuICAgICAgbGluZXMucHVzaChgLSAqKlRpbWVzdGFtcCoqOiAke2luZm8uYnVpbGQudGltZXN0YW1wfWApO1xuICAgIH1cbiAgICBpZiAoaW5mby5idWlsZC5naXRDb21taXQpIHtcbiAgICAgIGxpbmVzLnB1c2goYC0gKipHaXQgQ29tbWl0Kio6IFxcYCR7aW5mby5idWlsZC5naXRDb21taXR9XFxgYCk7XG4gICAgfVxuICAgIGlmIChpbmZvLmJ1aWxkLmdpdEJyYW5jaCkge1xuICAgICAgbGluZXMucHVzaChgLSAqKkdpdCBCcmFuY2gqKjogJHtpbmZvLmJ1aWxkLmdpdEJyYW5jaH1gKTtcbiAgICB9XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgXG4gICAgLy8gUnVudGltZSBpbmZvXG4gICAgbGluZXMucHVzaCgnIyMg8J+SuyBSdW50aW1lJyk7XG4gICAgbGluZXMucHVzaChgLSAqKk5vZGUuanMqKjogJHtpbmZvLnJ1bnRpbWUubm9kZVZlcnNpb259YCk7XG4gICAgbGluZXMucHVzaChgLSAqKlBsYXRmb3JtKio6ICR7aW5mby5ydW50aW1lLnBsYXRmb3JtfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipBcmNoaXRlY3R1cmUqKjogJHtpbmZvLnJ1bnRpbWUuYXJjaH1gKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqUHJvY2VzcyBVcHRpbWUqKjogJHt0aGlzLmZvcm1hdFVwdGltZShpbmZvLnJ1bnRpbWUudXB0aW1lKX1gKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqTWVtb3J5IFVzYWdlKio6ICR7dGhpcy5mb3JtYXRNZW1vcnkoaW5mby5ydW50aW1lLm1lbW9yeVVzYWdlLmhlYXBVc2VkKX0gLyAke3RoaXMuZm9ybWF0TWVtb3J5KGluZm8ucnVudGltZS5tZW1vcnlVc2FnZS5oZWFwVG90YWwpfWApO1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIFxuICAgIC8vIEVudmlyb25tZW50IGluZm9cbiAgICBsaW5lcy5wdXNoKCcjIyDimpnvuI8gRW52aXJvbm1lbnQnKTtcbiAgICBsaW5lcy5wdXNoKGAtICoqTk9ERV9FTlYqKjogJHtpbmZvLmVudmlyb25tZW50Lm5vZGVFbnYgfHwgJ25vdCBzZXQnfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipNb2RlKio6ICR7aW5mby5lbnZpcm9ubWVudC5pc1Byb2R1Y3Rpb24gPyAnUHJvZHVjdGlvbicgOiBpbmZvLmVudmlyb25tZW50LmlzRGV2ZWxvcG1lbnQgPyAnRGV2ZWxvcG1lbnQnIDogJ1Vua25vd24nfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipEZWJ1ZyoqOiAke2luZm8uZW52aXJvbm1lbnQuaXNEZWJ1ZyA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCd9YCk7XG4gICAgbGluZXMucHVzaChgLSAqKkRvY2tlcioqOiAke2luZm8uZW52aXJvbm1lbnQuaXNEb2NrZXIgPyAnWWVzJyA6ICdObyd9YCk7XG4gICAgaWYgKGluZm8uZW52aXJvbm1lbnQuZG9ja2VySW5mbykge1xuICAgICAgbGluZXMucHVzaChgLSAqKkNvbnRhaW5lcioqOiAke2luZm8uZW52aXJvbm1lbnQuZG9ja2VySW5mb31gKTtcbiAgICB9XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgXG4gICAgLy8gU2VydmVyIGluZm9cbiAgICBsaW5lcy5wdXNoKCcjIyDwn5qAIFNlcnZlcicpO1xuICAgIGxpbmVzLnB1c2goYC0gKipTdGFydGVkKio6ICR7aW5mby5zZXJ2ZXIuc3RhcnRUaW1lLnRvSVNPU3RyaW5nKCl9YCk7XG4gICAgbGluZXMucHVzaChgLSAqKlVwdGltZSoqOiAke3RoaXMuZm9ybWF0VXB0aW1lKGluZm8uc2VydmVyLnVwdGltZSAvIDEwMDApfWApO1xuICAgIGxpbmVzLnB1c2goYC0gKipNQ1AgQ29ubmVjdGlvbioqOiAke2luZm8uc2VydmVyLm1jcENvbm5lY3Rpb24gPyAn4pyFIENvbm5lY3RlZCcgOiAn4p2MIERpc2Nvbm5lY3RlZCd9YCk7XG5cbiAgICBpZiAoaW5mby5wZXJtaXNzaW9uSG9va3MpIHtcbiAgICAgIGNvbnN0IGluc3RhbGxlZEhvc3RzID0gaW5mby5wZXJtaXNzaW9uSG9va3MuaW5zdGFsbGVkSG9zdHMubGVuZ3RoID4gMFxuICAgICAgICA/IGluZm8ucGVybWlzc2lvbkhvb2tzLmluc3RhbGxlZEhvc3RzLmpvaW4oJywgJylcbiAgICAgICAgOiAnTm9uZSc7XG4gICAgICBjb25zdCBjdXJyZW50SG9zdHMgPSBpbmZvLnBlcm1pc3Npb25Ib29rcy5jdXJyZW50SG9zdHMubGVuZ3RoID4gMFxuICAgICAgICA/IGluZm8ucGVybWlzc2lvbkhvb2tzLmN1cnJlbnRIb3N0cy5qb2luKCcsICcpXG4gICAgICAgIDogJ05vbmUnO1xuICAgICAgY29uc3QgbmVlZHNSZXBhaXJIb3N0cyA9IGluZm8ucGVybWlzc2lvbkhvb2tzLm5lZWRzUmVwYWlySG9zdHMubGVuZ3RoID4gMFxuICAgICAgICA/IGluZm8ucGVybWlzc2lvbkhvb2tzLm5lZWRzUmVwYWlySG9zdHMuam9pbignLCAnKVxuICAgICAgICA6ICdOb25lJztcblxuICAgICAgbGluZXMucHVzaChcbiAgICAgICAgJycsXG4gICAgICAgICcjIyDwn5SQIFBlcm1pc3Npb24gSG9va3MnLFxuICAgICAgICBgLSAqKkluc3RhbGxlZCBIb3N0cyoqOiAke2luc3RhbGxlZEhvc3RzfWAsXG4gICAgICAgIGAtICoqQ3VycmVudCBBc3NldHMqKjogJHtjdXJyZW50SG9zdHN9YCxcbiAgICAgICAgYC0gKipOZWVkcyBSZXBhaXIqKjogJHtuZWVkc1JlcGFpckhvc3RzfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIElzc3VlICM3MDY6IFN0YXJ0dXAgdGltaW5nXG4gICAgaWYgKGluZm8uc3RhcnR1cCkge1xuICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICBsaW5lcy5wdXNoKCcjIyDij7HvuI8gU3RhcnR1cCcpO1xuICAgICAgbGluZXMucHVzaChgLSAqKlN0YXR1cyoqOiAke2luZm8uc3RhcnR1cC5zdGF0dXMgPT09ICdyZWFkeScgPyAn4pyFIFJlYWR5JyA6ICfij7MgSW5pdGlhbGl6aW5nJ31gKTtcbiAgICAgIGxpbmVzLnB1c2goYC0gKipEZWZlcnJlZCBTZXR1cCoqOiAke2luZm8uc3RhcnR1cC5kZWZlcnJlZFNldHVwQ29tcGxldGUgPyAnQ29tcGxldGUnIDogJ0luIFByb2dyZXNzJ31gKTtcbiAgICAgIGlmIChpbmZvLnN0YXJ0dXAuc3RhcnR1cFRpbWluZ01zKSB7XG4gICAgICAgIGNvbnN0IHRpbWluZyA9IGluZm8uc3RhcnR1cC5zdGFydHVwVGltaW5nTXM7XG4gICAgICAgIGxpbmVzLnB1c2goYC0gKipDcml0aWNhbCBQYXRoKio6ICR7dGltaW5nLmNyaXRpY2FsUGF0aE1zfW1zYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYC0gKipEZWZlcnJlZCBXb3JrKio6ICR7dGltaW5nLmRlZmVycmVkTXN9bXNgKTtcbiAgICAgICAgbGluZXMucHVzaChgLSAqKlRvdGFsIFN0YXJ0dXAqKjogJHt0aW1pbmcudG90YWxNc31tc2ApO1xuICAgICAgICBpZiAodGltaW5nLmNvbm5lY3RBdE1zICE9PSBudWxsKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgLSAqKlRpbWUgdG8gQ29ubmVjdCoqOiAke3RpbWluZy5jb25uZWN0QXRNc31tc2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1pbmcucGhhc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKCctICoqUGhhc2VzKio6Jyk7XG4gICAgICAgICAgZm9yIChjb25zdCBwaGFzZSBvZiB0aW1pbmcucGhhc2VzKSB7XG4gICAgICAgICAgICBjb25zdCB0YWcgPSBwaGFzZS5jcml0aWNhbCA/ICdjcml0aWNhbCcgOiAnZGVmZXJyZWQnO1xuICAgICAgICAgICAgbGluZXMucHVzaChgICAtICR7cGhhc2UubmFtZX06ICR7cGhhc2UuZHVyYXRpb25Nc31tcyAoJHt0YWd9KWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTRUNVUklUWSBOT1RFOiBObyBVbmljb2RlIG5vcm1hbGl6YXRpb24gbmVlZGVkIC0gZXhlY3V0ZXMgc3lzdGVtIGdpdCBjb21tYW5kc1xuICAgKiBEYXRhIHNvdXJjZTogR2l0IENMSSBvdXRwdXQgKHN5c3RlbS1jb250cm9sbGVkKSwgbm8gdXNlciBpbnB1dFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRHaXRJbmZvKCk6IFByb21pc2U8eyBjb21taXQ/OiBzdHJpbmc7IGJyYW5jaD86IHN0cmluZyB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFNFQ1VSSVRZIE5PVEU6IEdpdCBjb21tYW5kcyByZXR1cm4gc3lzdGVtLWNvbnRyb2xsZWQgZGF0YSAtIG5vdCB1c2VyIGlucHV0XG4gICAgICAvLyBHaXQgY29tbWl0IGhhc2hlcyBhbmQgYnJhbmNoIG5hbWVzIGFyZSBjb250cm9sbGVkIGJ5IGdpdCwgbm8gVW5pY29kZSBub3JtYWxpemF0aW9uIG5lZWRlZFxuICAgICAgY29uc3QgY29tbWl0ID0gY2hpbGRfcHJvY2Vzcy5leGVjU3luYygnZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQnLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pLnRyaW0oKTtcbiAgICAgIGNvbnN0IGJyYW5jaCA9IGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoJ2dpdCByZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQUQnLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pLnRyaW0oKTtcbiAgICAgIFxuICAgICAgcmV0dXJuIHsgY29tbWl0LCBicmFuY2ggfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE5vdCBpbiBhIGdpdCByZXBvc2l0b3J5IG9yIGdpdCBub3QgYXZhaWxhYmxlXG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNFQ1VSSVRZIE5PVEU6IE5vIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBuZWVkZWQgLSByZWFkcyBjb250YWluZXIgcnVudGltZSBmaWxlc1xuICAgKiBEYXRhIHNvdXJjZTogU3lzdGVtIGNncm91cCBmaWxlcyAoY29udGFpbmVyLWNvbnRyb2xsZWQpLCBubyB1c2VyIGlucHV0XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldERvY2tlckluZm8oKTogUHJvbWlzZTx7IGlzRG9ja2VyOiBib29sZWFuOyBpbmZvPzogc3RyaW5nIH0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gU0VDVVJJVFkgTk9URTogUmVhZGluZyBzeXN0ZW0gY2dyb3VwIGZpbGUgLSBjb250cm9sbGVkIGJ5IGNvbnRhaW5lciBydW50aW1lLCBub3QgdXNlciBpbnB1dFxuICAgICAgLy8gQ29udGFpbmVyIHJ1bnRpbWUgZ2VuZXJhdGVzIHRoaXMgZmlsZSBjb250ZW50LCBubyBVbmljb2RlIG5vcm1hbGl6YXRpb24gbmVlZGVkXG4gICAgICBjb25zdCBjZ3JvdXBDb250ZW50ID0gYXdhaXQgdGhpcy5maWxlT3BlcmF0aW9ucy5yZWFkRmlsZSgnL3Byb2MvMS9jZ3JvdXAnLCB7XG4gICAgICAgIHNvdXJjZTogJ0J1aWxkSW5mb1NlcnZpY2UuZ2V0RG9ja2VySW5mbydcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaXNEb2NrZXIgPSBjZ3JvdXBDb250ZW50LmluY2x1ZGVzKCdkb2NrZXInKSB8fCBjZ3JvdXBDb250ZW50LmluY2x1ZGVzKCdjb250YWluZXJkJyk7XG4gICAgICBcbiAgICAgIGlmIChpc0RvY2tlcikge1xuICAgICAgICAvLyBUcnkgdG8gZ2V0IGNvbnRhaW5lciBJRFxuICAgICAgICBjb25zdCBjb250YWluZXJJZCA9IGNncm91cENvbnRlbnRcbiAgICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgLmZpbmQobGluZSA9PiBsaW5lLmluY2x1ZGVzKCdkb2NrZXInKSlcbiAgICAgICAgICA/LnNwbGl0KCcvJylcbiAgICAgICAgICAucG9wKClcbiAgICAgICAgICA/LnN1YnN0cmluZygwLCAxMik7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlzRG9ja2VyOiB0cnVlLFxuICAgICAgICAgIGluZm86IGNvbnRhaW5lcklkID8gYENvbnRhaW5lciBJRDogJHtjb250YWluZXJJZH1gIDogJ1J1bm5pbmcgaW4gRG9ja2VyJ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4geyBpc0RvY2tlcjogZmFsc2UgfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE5vdCBpbiBEb2NrZXIgb3IgL3Byb2Mgbm90IGF2YWlsYWJsZVxuICAgICAgcmV0dXJuIHsgaXNEb2NrZXI6IGZhbHNlIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRVcHRpbWUoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gODY0MDApO1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcigoc2Vjb25kcyAlIDg2NDAwKSAvIDM2MDApO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChzZWNvbmRzICUgMzYwMCkgLyA2MCk7XG4gICAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAlIDYwKTtcbiAgICBcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoZGF5cyA+IDApIHBhcnRzLnB1c2goYCR7ZGF5c31kYCk7XG4gICAgaWYgKGhvdXJzID4gMCkgcGFydHMucHVzaChgJHtob3Vyc31oYCk7XG4gICAgaWYgKG1pbnV0ZXMgPiAwKSBwYXJ0cy5wdXNoKGAke21pbnV0ZXN9bWApO1xuICAgIGlmIChzZWNzID4gMCB8fCBwYXJ0cy5sZW5ndGggPT09IDApIHBhcnRzLnB1c2goYCR7c2Vjc31zYCk7XG4gICAgXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TWVtb3J5KGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1iID0gYnl0ZXMgLyAxMDI0IC8gMTAyNDtcbiAgICByZXR1cm4gYCR7bWIudG9GaXhlZCgxKX0gTUJgO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitToPortfolioTool.d.ts","sourceRoot":"","sources":["../../../src/tools/portfolio/submitToPortfolioTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAA2B,MAAM,qCAAqC,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAYnD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGhG,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAKhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"submitToPortfolioTool.d.ts","sourceRoot":"","sources":["../../../src/tools/portfolio/submitToPortfolioTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAA2B,MAAM,qCAAqC,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAYnD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAGhG,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAKhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAMjF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,iCAAiC;IAChD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,WAAW,EAAE,YAAY,CAAC;IAC1B,cAAc,EAAE,sBAAsB,CAAC;IACvC,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,YAAY,CAAe;gBAEvB,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,iCAAiC;IA0B/E;;;;OAIG;YACW,0BAA0B;IA8BxC;;;OAGG;YACW,mBAAmB;IA2BjC;;;;;;OAMG;YACW,gCAAgC;IAsH9C;;;;OAIG;YACW,sBAAsB;IA+DpC;;;;;;OAMG;YACW,sBAAsB;IA2EpC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;;;;;OAMG;YACW,sBAAsB;IAiEpC;;;;;OAKG;YACW,wBAAwB;IAsItC;;;;;OAKG;YACW,qBAAqB;IA6NnC;;;;;;;;;OASG;YACW,2BAA2B;IA6GzC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwBlC;;;;OAIG;YACW,qBAAqB;IA+CnC;;;;;;;OAOG;YACW,oBAAoB;IA8DlC;;;;;;OAMG;YACW,kBAAkB;IAkDhC;;;;;;;;OAQG;YACW,8BAA8B;IAyJtC,OAAO,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAoJhF;;;OAGG;YACW,6BAA6B;IAuE3C;;;OAGG;YACW,qBAAqB;YAwRrB,gBAAgB;IA6I9B;;;;;;;OAOG;YACW,iBAAiB;IAoH/B;;;;OAIG;YACW,uBAAuB;IA6HrC;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;OAGG;YACW,oBAAoB;IAyElC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAmDzB"}
|