@workflow/web-shared 5.0.0-beta.39 → 5.0.0-beta.40
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AAkYA,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,MAOrD,CAAC;AA4BF,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAqTD,eAAO,MAAM,cAAc,GAAI,mDAM5B;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,mDA+EA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,wIAY5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,kDAAkD;IAClD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,4CAuKA,CAAC"}
|
|
@@ -112,6 +112,7 @@ const attributeOrder = [
|
|
|
112
112
|
'runId',
|
|
113
113
|
'attempt',
|
|
114
114
|
'token',
|
|
115
|
+
'tokenRetentionUntil',
|
|
115
116
|
'isWebhook',
|
|
116
117
|
'isSystem',
|
|
117
118
|
'receivedCount',
|
|
@@ -167,6 +168,7 @@ const attributeDisplayNames = {
|
|
|
167
168
|
eventId: 'Event ID',
|
|
168
169
|
runId: 'Run ID',
|
|
169
170
|
token: 'Token',
|
|
171
|
+
tokenRetentionUntil: 'Minimum Retention Until',
|
|
170
172
|
eventType: 'Event Type',
|
|
171
173
|
errorCode: 'Error Code',
|
|
172
174
|
correlationId: 'Correlation ID',
|
|
@@ -260,6 +262,7 @@ const attributeToDisplayFn = {
|
|
|
260
262
|
attempt: (value) => String(value),
|
|
261
263
|
// Hook details
|
|
262
264
|
token: (value) => String(value),
|
|
265
|
+
tokenRetentionUntil: timestampWithTooltipOrNull,
|
|
263
266
|
isWebhook: (value) => String(value),
|
|
264
267
|
isSystem: (value) => String(value),
|
|
265
268
|
receivedCount: (value) => String(value),
|
|
@@ -554,4 +557,4 @@ export const AttributePanel = ({ data, moduleSpecifier, moduleSourceUrl, isLoadi
|
|
|
554
557
|
resource === 'sleep' &&
|
|
555
558
|
!displayData.resumeAt && (_jsxs("div", { className: "flex items-center justify-between gap-3 py-0.5", children: [_jsx("span", { className: "text-label-13 text-gray-900", children: "Resume" }), _jsx(Skeleton, { className: "h-4 w-[55%]" })] }))] }) })] })), error ? (_jsx(ErrorCard, { title: "Failed to load resource details", details: error.message, className: "my-4" })) : hasExpired ? (_jsx(ExpiredDataMessage, {})) : resolvedAttributes.length > 0 ? (resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute], context: displayContext }, attribute)))) : null] }) }) }) }));
|
|
556
559
|
};
|
|
557
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci9hdHRyaWJ1dGUtcGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFD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Q0FBQyxlQUFlO3dEQUNqQixDQUFDLENBQUMsU0FBUyxJQVRWLFNBQVMsQ0FXZCxDQUNILENBQUM7NENBQ0osQ0FBQyxDQUFDLEVBQ0QsU0FBUztnREFDUixRQUFRLEtBQUssT0FBTztnREFDcEIsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQ3ZCLGVBQUssU0FBUyxFQUFDLGdEQUFnRCxhQUM3RCxlQUFNLFNBQVMsRUFBQyw2QkFBNkIsdUJBRXRDLEVBQ1AsS0FBQyxRQUFRLElBQUMsU0FBUyxFQUFDLGFBQWEsR0FBRyxJQUNoQyxDQUNQLElBQ0MsR0FDYSxJQUNMLENBQ25CLEVBQ0EsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNQLEtBQUMsU0FBUyxJQUNSLEtBQUssRUFBQyxpQ0FBaUMsRUFDdkMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQ3RCLFNBQVMsRUFBQyxNQUFNLEdBQ2hCLENBQ0gsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUNmLEtBQUMsa0JBQWtCLEtBQUcsQ0FDdkIsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbEMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUNwQyxLQUFDLGNBQWMsSUFDYixTQUFTLEVBQUUsU0FBUyxFQUVwQixTQUFTLEVBQUUsU0FBUyxFQUNwQixLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQXFDLENBQUMsRUFDekQsT0FBTyxFQUFFLGNBQWMsSUFIbEIsU0FBUyxDQUlkLENBQ0gsQ0FBQyxDQUNILENBQUMsQ0FBQyxDQUFDLElBQUksSUFDcUIsR0FDSCxHQUNMLEdBQ1AsQ0FDdkIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgcGFyc2VTdGVwTmFtZSwgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50LCBIb29rLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IE1vZGVsTWVzc2FnZSB9IGZyb20gJ2FpJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0VuY3J5cHRlZE1hcmtlciwgaXNFeHBpcmVkTWFya2VyIH0gZnJvbSAnLi4vLi4vbGliL2h5ZHJhdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0Q29udmVyc2F0aW9uLCBpc0RvU3RyZWFtU3RlcCB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQge1xuICBDb2xsYXBzaWJsZSxcbiAgQ29sbGFwc2libGVDb250ZW50LFxuICBDb2xsYXBzaWJsZVJvb3QsXG4gIENvbGxhcHNpYmxlVHJpZ2dlcixcbn0gZnJvbSAnLi4vdWkvY29sbGFwc2libGUnO1xuaW1wb3J0IHsgQ29udGV4dENhcmRQcm92aWRlciB9IGZyb20gJy4uL3VpL2NvbnRleHQtY2FyZCc7XG5pbXBvcnQge1xuICBEZWNyeXB0Q2xpY2tDb250ZXh0LFxuICBSdW5DbGlja0NvbnRleHQsXG4gIFN0cmVhbUNsaWNrQ29udGV4dCxcbn0gZnJvbSAnLi4vdWkvZGF0YS1pbnNwZWN0b3InO1xuaW1wb3J0IHsgRXJyb3JDYXJkIH0gZnJvbSAnLi4vdWkvZXJyb3ItY2FyZCc7XG5pbXBvcnQgeyBFcnJvclN0YWNrQmxvY2ssIGlzU3RydWN0dXJlZEVycm9yIH0gZnJvbSAnLi4vdWkvZXJyb3Itc3RhY2stYmxvY2snO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi91aS9za2VsZXRvbic7XG5pbXBvcnQgeyBUaW1lc3RhbXBUb29sdGlwIH0gZnJvbSAnLi4vdWkvdGltZXN0YW1wLXRvb2x0aXAnO1xuaW1wb3J0IHtcbiAgRGV0YWlsTW9ub0tleVZhbHVlUm93LFxuICBSdW5BdHRyaWJ1dGVzQ2FyZCxcbiAgUnVuTWV0YWRhdGFDYXJkLFxufSBmcm9tICcuL2F0dHJpYnV0ZXMtYmxvY2snO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uVmlldyB9IGZyb20gJy4vY29udmVyc2F0aW9uLXZpZXcnO1xuaW1wb3J0IHsgQ29weWFibGVEYXRhQmxvY2ssIEVuY3J5cHRlZERhdGFCbG9jayB9IGZyb20gJy4vY29weWFibGUtZGF0YS1ibG9jayc7XG5cbi8qKlxuICogVGFiIGJ1dHRvbiBmb3IgY29udmVyc2F0aW9uL0pTT04gdG9nZ2xlXG4gKi9cbmZ1bmN0aW9uIFRhYkJ1dHRvbih7XG4gIGFjdGl2ZSxcbiAgb25DbGljayxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgYXJpYS1zZWxlY3RlZD17YWN0aXZlfVxuICAgICAgdGFiSW5kZXg9e2FjdGl2ZSA/IDAgOiAtMX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBjbGFzc05hbWU9XCJweC0zIHB5LTEuNSB0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAtbWItcHhcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLy8gRXhwbGljaXQgc3R5bGVzIHRvIHByZXZlbnQgYXBwLWxldmVsIGJ1dHRvbiBvdmVycmlkZXMgd2hlbiB3ZWItc2hhcmVkXG4gICAgICAgIC8vIGlzIGVtYmVkZGVkIGluIGEgc2VsZi1ob3N0ZWQgYXBwLlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGJvcmRlclRvcDogJ25vbmUnLFxuICAgICAgICBib3JkZXJMZWZ0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlclJpZ2h0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlckJvdHRvbTogYDJweCBzb2xpZCAke2FjdGl2ZSA/ICd2YXIoLS1kcy1ibHVlLTYwMCknIDogJ3RyYW5zcGFyZW50J31gLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICBjb2xvcjogYWN0aXZlID8gJ3ZhcigtLWRzLWdyYXktMTAwMCknIDogJ3ZhcigtLWRzLWdyYXktNjAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuLyoqXG4gKiBTaGFyZWQgdGFiYmVkIGNvbnRhaW5lciB3aXRoIGFjY2Vzc2libGUgQVJJQSByb2xlcyBhbmQga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAqIFVzZWQgYnkgQ29udmVyc2F0aW9uV2l0aFRhYnMgZm9yIHRoZSBjb252ZXJzYXRpb24vSlNPTiB0b2dnbGUuXG4gKi9cbmZ1bmN0aW9uIFRhYmJlZENvbnRhaW5lcjxUIGV4dGVuZHMgc3RyaW5nPih7XG4gIHRhYnMsXG4gIGFjdGl2ZVRhYixcbiAgb25UYWJDaGFuZ2UsXG4gIGFyaWFMYWJlbCxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHRhYnM6IHsgaWQ6IFQ7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICBhY3RpdmVUYWI6IFQ7XG4gIG9uVGFiQ2hhbmdlOiAodGFiOiBUKSA9PiB2b2lkO1xuICBhcmlhTGFiZWw6IHN0cmluZztcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09ICdBcnJvd1JpZ2h0JyAmJiBldmVudC5rZXkgIT09ICdBcnJvd0xlZnQnKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFicy5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IGFjdGl2ZVRhYik7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgICBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0J1xuICAgICAgICAgID8gKGN1cnJlbnRJbmRleCArIDEpICUgdGFicy5sZW5ndGhcbiAgICAgICAgICA6IChjdXJyZW50SW5kZXggLSAxICsgdGFicy5sZW5ndGgpICUgdGFicy5sZW5ndGg7XG4gICAgICBvblRhYkNoYW5nZSh0YWJzW25leHRJbmRleF0uaWQpO1xuICAgIH0sXG4gICAgW3RhYnMsIGFjdGl2ZVRhYiwgb25UYWJDaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGdhcC0xIGJvcmRlci1iXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICAgIDxUYWJCdXR0b25cbiAgICAgICAgICAgIGtleT17dGFiLmlkfVxuICAgICAgICAgICAgYWN0aXZlPXthY3RpdmVUYWIgPT09IHRhYi5pZH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVGFiQ2hhbmdlKHRhYi5pZCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RhYi5sYWJlbH1cbiAgICAgICAgICA8L1RhYkJ1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiByb2xlPVwidGFicGFuZWxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IGNvbnZlcnNhdGlvblRhYnMgPSBbXG4gIHsgaWQ6ICdjb252ZXJzYXRpb24nIGFzIGNvbnN0LCBsYWJlbDogJ0NvbnZlcnNhdGlvbicgfSxcbiAgeyBpZDogJ2pzb24nIGFzIGNvbnN0LCBsYWJlbDogJ1JhdyBKU09OJyB9LFxuXTtcblxuLyoqXG4gKiBUYWJiZWQgdmlldyBmb3IgY29udmVyc2F0aW9uIGFuZCByYXcgSlNPTlxuICovXG5mdW5jdGlvbiBDb252ZXJzYXRpb25XaXRoVGFicyh7XG4gIGNvbnZlcnNhdGlvbixcbiAgYXJncyxcbiAgZGVmYXVsdE9wZW4sXG4gIG9uT3BlbkNoYW5nZSxcbn06IHtcbiAgY29udmVyc2F0aW9uOiBNb2RlbE1lc3NhZ2VbXTtcbiAgYXJnczogdW5rbm93bltdO1xuICBkZWZhdWx0T3Blbj86IGJvb2xlYW47XG4gIG9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGU8J2NvbnZlcnNhdGlvbicgfCAnanNvbic+KFxuICAgICdjb252ZXJzYXRpb24nXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29sbGFwc2libGVcbiAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgZGVmYXVsdE9wZW49e2RlZmF1bHRPcGVufVxuICAgICAgb25PcGVuQ2hhbmdlPXtvbk9wZW5DaGFuZ2V9XG4gICAgPlxuICAgICAgPFRhYmJlZENvbnRhaW5lclxuICAgICAgICB0YWJzPXtjb252ZXJzYXRpb25UYWJzfVxuICAgICAgICBhY3RpdmVUYWI9e2FjdGl2ZVRhYn1cbiAgICAgICAgb25UYWJDaGFuZ2U9e3NldEFjdGl2ZVRhYn1cbiAgICAgICAgYXJpYUxhYmVsPVwiQ29udmVyc2F0aW9uIHZpZXdcIlxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGFiID09PSAnY29udmVyc2F0aW9uJyA/IChcbiAgICAgICAgICA8Q29udmVyc2F0aW9uVmlldyBtZXNzYWdlcz17Y29udmVyc2F0aW9ufSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zXCI+XG4gICAgICAgICAgICB7QXJyYXkuaXNBcnJheShhcmdzKVxuICAgICAgICAgICAgICA/IGFyZ3MubWFwKCh2LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmlyc3Q6bXQtMFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodil9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IEpzb25CbG9jayhhcmdzKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvVGFiYmVkQ29udGFpbmVyPlxuICAgIDwvQ29sbGFwc2libGU+XG4gICk7XG59XG5cbi8qKlxuICogUmVuZGVyIGEgdmFsdWUgd2l0aCB0aGUgc2hhcmVkIERhdGFJbnNwZWN0b3IgKE9iamVjdEluc3BlY3RvciB3aXRoXG4gKiBjdXN0b20gdGhlbWluZywgbm9kZVJlbmRlcmVyIGZvciBTdHJlYW1SZWYvQ2xhc3NJbnN0YW5jZVJlZiwgZXRjLilcbiAqL1xuZnVuY3Rpb24gRW5jcnlwdGVkRmllbGRCbG9jaygpIHtcbiAgcmV0dXJuIDxFbmNyeXB0ZWREYXRhQmxvY2sgLz47XG59XG5cbi8qKlxuICogSW5saW5lIGRpc3BsYXkgZm9yIGFuIGV4cGlyZWQgZmllbGQg4oCUIGZsYXQgbGFiZWwgaW5kaWNhdGluZyBkYXRhIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuXG4gKi9cbmZ1bmN0aW9uIEV4cGlyZWRGaWVsZEJsb2NrKCkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0yIHRleHQtbGFiZWwtMTJcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+RGF0YSBleHBpcmVkPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBKc29uQmxvY2sodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIDxDb3B5YWJsZURhdGFCbG9jayBkYXRhPXt2YWx1ZX0gLz47XG59XG5cbmNvbnN0IGhhc0Rpc3BsYXlDb250ZW50ID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDA7XG4gIHJldHVybiB0cnVlO1xufTtcblxudHlwZSBBdHRyaWJ1dGVLZXkgPVxuICB8IGtleW9mIFN0ZXBcbiAgfCBrZXlvZiBXb3JrZmxvd1J1blxuICB8IGtleW9mIEhvb2tcbiAgfCBrZXlvZiBFdmVudFxuICB8ICdvY2N1cnJlZEF0J1xuICB8ICdtb2R1bGVTcGVjaWZpZXInXG4gIHwgJ2V2ZW50RGF0YSdcbiAgfCAncmVzdW1lQXQnXG4gIHwgJ2V4cGlyZWRBdCdcbiAgfCAnd29ya2Zsb3dDb3JlVmVyc2lvbidcbiAgfCAncmVjZWl2ZWRDb3VudCdcbiAgfCAnbGFzdFJlY2VpdmVkQXQnXG4gIHwgJ2Rpc3Bvc2VkQXQnXG4gIHwgJ2lzU3lzdGVtJ1xuICB8ICdlcnJvckNvZGUnXG4gIC8vIEFuYWx5dGljcy1vbmx5IHByb3ZlbmFuY2UgKEFuYWx5dGljc0V2ZW50IC8gQW5hbHl0aWNzU3RlcCksIG5vdCBvbiBFdmVudC5cbiAgfCAnY29tcHV0ZUluc3RhbmNlSWQnXG4gIC8vIEFuYWx5dGljcy1vbmx5LCBhbmQgZXZlbnQtZ3JhaW5lZDogb25seSBBbmFseXRpY3NFdmVudCBjYXJyaWVzIGl0LiBUaGUga2V5XG4gIC8vIGlzIGB2ZXJjZWxJZGAgYmVjYXVzZSB0aGF0IGlzIHRoZSBuYW1lIHRoZSBiYWNrZW5kIHN0b3JlcyB0aGUgU0RLJ3NcbiAgLy8gYHJlcXVlc3RJZGAgdW5kZXI7IEFuYWx5dGljc0V2ZW50J3Mgc2libGluZyBgcmVxdWVzdElkYCBjb2x1bW4gaXMgbmV2ZXJcbiAgLy8gd3JpdHRlbiwgc28gcmVhZGluZyB0aGF0IG9uZSB3b3VsZCBhbHdheXMgYmUgZW1wdHkuXG4gIHwgJ3ZlcmNlbElkJztcblxuY29uc3QgYXR0cmlidXRlT3JkZXI6IEF0dHJpYnV0ZUtleVtdID0gW1xuICAnd29ya2Zsb3dOYW1lJyxcbiAgJ21vZHVsZVNwZWNpZmllcicsXG4gICdzdGVwTmFtZScsXG4gICdzdGF0dXMnLFxuICAnc3RlcElkJyxcbiAgJ2hvb2tJZCcsXG4gICdldmVudElkJyxcbiAgJ3J1bklkJyxcbiAgJ2F0dGVtcHQnLFxuICAndG9rZW4nLFxuICAnaXNXZWJob29rJyxcbiAgJ2lzU3lzdGVtJyxcbiAgJ3JlY2VpdmVkQ291bnQnLFxuICAnbGFzdFJlY2VpdmVkQXQnLFxuICAnZGlzcG9zZWRBdCcsXG4gICdjb3JyZWxhdGlvbklkJyxcbiAgJ2V2ZW50VHlwZScsXG4gICdkZXBsb3ltZW50SWQnLFxuICAndmVyY2VsSWQnLFxuICAnY29tcHV0ZUluc3RhbmNlSWQnLFxuICAnc3BlY1ZlcnNpb24nLFxuICAnd29ya2Zsb3dDb3JlVmVyc2lvbicsXG4gICdvd25lcklkJyxcbiAgJ3Byb2plY3RJZCcsXG4gICdlbnZpcm9ubWVudCcsXG4gICdleGVjdXRpb25Db250ZXh0JyxcbiAgJ29jY3VycmVkQXQnLFxuICAnY3JlYXRlZEF0JyxcbiAgJ3N0YXJ0ZWRBdCcsXG4gICd1cGRhdGVkQXQnLFxuICAnY29tcGxldGVkQXQnLFxuICAnZXhwaXJlZEF0JyxcbiAgJ3JldHJ5QWZ0ZXInLFxuICAnZXJyb3JDb2RlJyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2V2ZW50RGF0YScsXG4gICdpbnB1dCcsXG4gICdvdXRwdXQnLFxuICAnYXR0cmlidXRlcycsXG4gICdyZXN1bWVBdCcsXG5dO1xuXG4vKipcbiAqIFJhbmsgb2YgYW4gYXR0cmlidXRlIGluIHtAbGluayBhdHRyaWJ1dGVPcmRlcn0uIEtleXMgYWJzZW50IGZyb20gdGhhdCBsaXN0XG4gKiBzb3J0IGFmdGVyIGV2ZXJ5IGxpc3RlZCBvbmUgcmF0aGVyIHRoYW4gYmVmb3JlIHRoZW0g4oCUIGBpbmRleE9mYCByZXBvcnRzIGFcbiAqIG1pc3MgYXMgYC0xYCwgd2hpY2ggaXMgdHJ1dGh5LCBzbyBhIGB8fCAwYCBmYWxsYmFjayBuZXZlciBmaXJlcy5cbiAqL1xuY29uc3QgYXR0cmlidXRlT3JkZXJJbmRleCA9IChhdHRyaWJ1dGU6IHN0cmluZyk6IG51bWJlciA9PiB7XG4gIGNvbnN0IGluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihhdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5KTtcbiAgcmV0dXJuIGluZGV4ID09PSAtMSA/IGF0dHJpYnV0ZU9yZGVyLmxlbmd0aCA6IGluZGV4O1xufTtcblxuY29uc3Qgc29ydEJ5QXR0cmlidXRlT3JkZXIgPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIgPT5cbiAgYXR0cmlidXRlT3JkZXJJbmRleChhKSAtIGF0dHJpYnV0ZU9yZGVySW5kZXgoYik7XG5cbi8qKlxuICogRGlzcGxheSBuYW1lcyBmb3IgYXR0cmlidXRlcyB0aGF0IHNob3VsZCByZW5kZXIgZGlmZmVyZW50bHkgZnJvbSB0aGVpciBrZXkuXG4gKi9cbmNvbnN0IGF0dHJpYnV0ZURpc3BsYXlOYW1lczogUGFydGlhbDxSZWNvcmQ8QXR0cmlidXRlS2V5LCBzdHJpbmc+PiA9IHtcbiAgbW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlJyxcbiAgd29ya2Zsb3dOYW1lOiAnV29ya2Zsb3cgTmFtZScsXG4gIHN0ZXBOYW1lOiAnU3RlcCBOYW1lJyxcbiAgc3RlcElkOiAnU3RlcCBJRCcsXG4gIGhvb2tJZDogJ0hvb2sgSUQnLFxuICBhdHRlbXB0OiAnQXR0ZW1wdHMnLFxuICBldmVudElkOiAnRXZlbnQgSUQnLFxuICBydW5JZDogJ1J1biBJRCcsXG4gIHRva2VuOiAnVG9rZW4nLFxuICBldmVudFR5cGU6ICdFdmVudCBUeXBlJyxcbiAgZXJyb3JDb2RlOiAnRXJyb3IgQ29kZScsXG4gIGNvcnJlbGF0aW9uSWQ6ICdDb3JyZWxhdGlvbiBJRCcsXG4gIGRlcGxveW1lbnRJZDogJ0RlcGxveW1lbnQgSUQnLFxuICB2ZXJjZWxJZDogJ1JlcXVlc3QgSUQnLFxuICBjb21wdXRlSW5zdGFuY2VJZDogJ0NvbXB1dGUgSW5zdGFuY2UgSUQnLFxuICBzcGVjVmVyc2lvbjogJ1NwZWMgVmVyc2lvbicsXG4gIHdvcmtmbG93Q29yZVZlcnNpb246ICdAd29ya2Zsb3cvY29yZSB2ZXJzaW9uJyxcbiAgb2NjdXJyZWRBdDogJ09jY3VycmVkJyxcbiAgY3JlYXRlZEF0OiAnQ3JlYXRlZCcsXG4gIHN0YXJ0ZWRBdDogJ1N0YXJ0ZWQnLFxuICB1cGRhdGVkQXQ6ICdVcGRhdGVkJyxcbiAgY29tcGxldGVkQXQ6ICdDb21wbGV0ZWQnLFxuICBleHBpcmVkQXQ6ICdFeHBpcmVkJyxcbiAgcmV0cnlBZnRlcjogJ1JldHJ5IEFmdGVyJyxcbiAgcmVzdW1lQXQ6ICdSZXN1bWUnLFxuICBsYXN0UmVjZWl2ZWRBdDogJ0xhc3QgUmVjZWl2ZWQnLFxuICBkaXNwb3NlZEF0OiAnRGlzcG9zZWQnLFxuICByZWNlaXZlZENvdW50OiAnVGltZXMgUmVzb2x2ZWQnLFxufTtcblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYW4gYXR0cmlidXRlIGtleS5cbiAqL1xuY29uc3QgZ2V0QXR0cmlidXRlRGlzcGxheU5hbWUgPSAoYXR0cmlidXRlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYXR0cmlidXRlRGlzcGxheU5hbWVzW2F0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVLZXldID8/IGF0dHJpYnV0ZTtcbn07XG5cbmNvbnN0IGdldE1vZHVsZVNwZWNpZmllckZyb21OYW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcmF3ID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgcGFyc2VkU3RlcCA9IHBhcnNlU3RlcE5hbWUocmF3KTtcbiAgaWYgKHBhcnNlZFN0ZXApIHtcbiAgICByZXR1cm4gcGFyc2VkU3RlcC5tb2R1bGVTcGVjaWZpZXI7XG4gIH1cbiAgY29uc3QgcGFyc2VkV29ya2Zsb3cgPSBwYXJzZVdvcmtmbG93TmFtZShyYXcpO1xuICBpZiAocGFyc2VkV29ya2Zsb3cpIHtcbiAgICByZXR1cm4gcGFyc2VkV29ya2Zsb3cubW9kdWxlU3BlY2lmaWVyO1xuICB9XG4gIHJldHVybiByYXc7XG59O1xuXG5jb25zdCBwYXJzZURhdGVWYWx1ZSA9ICh2YWx1ZTogdW5rbm93bik6IERhdGUgfCBudWxsID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gbnVsbCA6IHZhbHVlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBuZXcgRGF0ZShTdHJpbmcodmFsdWUpKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZTtcbn07XG5cbmNvbnN0IGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lID0gKGRhdGU6IERhdGUpOiBzdHJpbmcgPT5cbiAgZm9ybWF0KGRhdGUsICdNTU0gZGQgSEg6bW06c3MuU1MgT08nKS50b1VwcGVyQ2FzZSgpO1xuXG5leHBvcnQgY29uc3QgbG9jYWxNaWxsaXNlY29uZFRpbWUgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkYXRlID0gcGFyc2VEYXRlVmFsdWUodmFsdWUpO1xuICBpZiAoIWRhdGUpIHtcbiAgICByZXR1cm4gJy0nO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpO1xufTtcblxuY29uc3QgbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpO1xufTtcblxuY29uc3QgdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBSZWFjdE5vZGUgfCBudWxsID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChcbiAgICA8VGltZXN0YW1wVG9vbHRpcCBkYXRlPXtkYXRlfT5cbiAgICAgIDxzcGFuPntmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKX08L3NwYW4+XG4gICAgPC9UaW1lc3RhbXBUb29sdGlwPlxuICApO1xufTtcblxuLyoqXG4gKiBSZW5kZXJzIGFuIG9wYXF1ZSBwcm92ZW5hbmNlIGlkLiBUaGUgYW5hbHl0aWNzIHJlYWQgY29udHJhY3QgdHlwZXMgdGhlc2UgYXNcbiAqIG51bGxhYmxlLCBhbmQgb25seSBhIGBudWxsYCByZXR1cm4gaXMgZmlsdGVyZWQgb3V0IG9mIHRoZSBwYW5lbCwgc28gYSBiYXJlXG4gKiBgU3RyaW5nKClgIHdvdWxkIHN1cmZhY2UgdGhlIGxpdGVyYWwgdGV4dCBcIm51bGxcIiBhcyB0aGUgdmFsdWUuXG4gKi9cbmNvbnN0IG9wYXF1ZUlkT3JOdWxsID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCA9PlxuICBoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogbnVsbDtcblxuaW50ZXJmYWNlIERpc3BsYXlDb250ZXh0IHtcbiAgc3RlcE5hbWU/OiBzdHJpbmc7XG4gIHNlY3Rpb25PcGVuPzogYm9vbGVhbjtcbiAgb25TZWN0aW9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBhdHRyaWJ1dGVUb0Rpc3BsYXlGbjogUmVjb3JkPFxuICBBdHRyaWJ1dGVLZXksXG4gICh2YWx1ZTogdW5rbm93biwgY29udGV4dD86IERpc3BsYXlDb250ZXh0KSA9PiBudWxsIHwgc3RyaW5nIHwgUmVhY3ROb2RlXG4+ID0ge1xuICAvLyBOYW1lcyB0aGF0IG5lZWQgcHJldHR5LXByaW50aW5nXG4gIHdvcmtmbG93TmFtZTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgbW9kdWxlU3BlY2lmaWVyOiAodmFsdWU6IHVua25vd24pID0+IGdldE1vZHVsZVNwZWNpZmllckZyb21OYW1lKHZhbHVlKSxcbiAgc3RlcE5hbWU6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIC8vIElEc1xuICBydW5JZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgc3RlcElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGhvb2tJZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBldmVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFJ1bi9zdGVwIGRldGFpbHNcbiAgc3RhdHVzOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBhdHRlbXB0OiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIEhvb2sgZGV0YWlsc1xuICB0b2tlbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBpc1dlYmhvb2s6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaXNTeXN0ZW06ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgcmVjZWl2ZWRDb3VudDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBsYXN0UmVjZWl2ZWRBdDogbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwsXG4gIGRpc3Bvc2VkQXQ6IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsLFxuICAvLyBJbnRlcm5hbCByZXN1bWUgcGx1bWJpbmcg4oCUIG5vdCBzdXJmYWNlZCBpbiB0aGUgVUlcbiAgcmVzdW1lQ29udGV4dDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgcmVzdW1lSWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHJlc3VtZUNhcGFiaWxpdGllczogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gRXZlbnQgZGV0YWlsc1xuICBldmVudFR5cGU6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgY29ycmVsYXRpb25JZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBQcm9qZWN0IGRldGFpbHNcbiAgZGVwbG95bWVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHZlcmNlbElkOiBvcGFxdWVJZE9yTnVsbCxcbiAgY29tcHV0ZUluc3RhbmNlSWQ6IG9wYXF1ZUlkT3JOdWxsLFxuICBzcGVjVmVyc2lvbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICB3b3JrZmxvd0NvcmVWZXJzaW9uOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFRlbmFuY3kgKHdlIGRvbid0IHNob3cgdGhlc2UpXG4gIG93bmVySWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHByb2plY3RJZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgZW52aXJvbm1lbnQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGV4ZWN1dGlvbkNvbnRleHQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIC8vIEF0dHJpYnV0ZXMg4oCUIHN0cmluZy1zdHJpbmcgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhlIHJ1bi5cbiAgLy8gUmVuZGVyZWQgYXMga2V5LXZhbHVlIHJvd3MgaW4gaXRzIG93biBjb2xsYXBzaWJsZSBzZWN0aW9uO1xuICAvLyBpZiBlbXB0eS9taXNzaW5nLCBoaWRkZW4gYnkgdGhlIGhhc0Rpc3BsYXlDb250ZW50IGdhdGUuXG4gIGF0dHJpYnV0ZXM6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gPFJ1bkF0dHJpYnV0ZXNDYXJkIGF0dHJpYnV0ZXM9e3ZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz59IC8+O1xuICB9LFxuICAvLyBEYXRlcyDigJQgd3JhcHBlZCB3aXRoIFRpbWVzdGFtcFRvb2x0aXAgc2hvd2luZyBVVEMvbG9jYWwgKyByZWxhdGl2ZSB0aW1lXG4gIG9jY3VycmVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBzdGFydGVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICB1cGRhdGVkQXQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGNvbXBsZXRlZEF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgZXhwaXJlZEF0OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICByZXRyeUFmdGVyOiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgcmVzdW1lQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICAvLyBSZXNvbHZlZCBhdHRyaWJ1dGVzLCB3b24ndCBhY3R1YWxseSB1c2UgdGhpcyBmdW5jdGlvblxuICBtZXRhZGF0YTogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIk1ldGFkYXRhXCI+XG4gICAgICAgICAgPEVuY3J5cHRlZERhdGFCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIk1ldGFkYXRhXCI+XG4gICAgICAgICAgPEV4cGlyZWRGaWVsZEJsb2NrIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gPFJ1bk1ldGFkYXRhQ2FyZCBtZXRhZGF0YT17dmFsdWV9IC8+O1xuICB9LFxuICBpbnB1dDogKHZhbHVlOiB1bmtub3duLCBjb250ZXh0PzogRGlzcGxheUNvbnRleHQpID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICBsYWJlbD1cIklucHV0XCJcbiAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0V4cGlyZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEV4cGlyZWRGaWVsZEJsb2NrIC8+O1xuICAgIC8vIENoZWNrIGlmIGlucHV0IGhhcyBhcmdzICsgY2xvc3VyZSB2YXJzIHN0cnVjdHVyZVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdhcmdzJyBpbiB2YWx1ZSkge1xuICAgICAgY29uc3QgeyBhcmdzLCBjbG9zdXJlVmFycywgdGhpc1ZhbCB9ID0gdmFsdWUgYXMge1xuICAgICAgICBhcmdzOiB1bmtub3duW107XG4gICAgICAgIGNsb3N1cmVWYXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIHRoaXNWYWw/OiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGhhc0Nsb3N1cmVWYXJzID0gaGFzRGlzcGxheUNvbnRlbnQoY2xvc3VyZVZhcnMpO1xuICAgICAgY29uc3QgaGFzVGhpc1ZhbCA9IGhhc0Rpc3BsYXlDb250ZW50KHRoaXNWYWwpO1xuICAgICAgY29uc3QgaGFzQXJncyA9IGhhc0Rpc3BsYXlDb250ZW50KGFyZ3MpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgZG9TdHJlYW1TdGVwIC0gc2hvdyBjb252ZXJzYXRpb24gdmlldyB3aXRoIHRhYnNcbiAgICAgIGlmIChjb250ZXh0Py5zdGVwTmFtZSAmJiBpc0RvU3RyZWFtU3RlcChjb250ZXh0LnN0ZXBOYW1lKSkge1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBleHRyYWN0Q29udmVyc2F0aW9uKGFyZ3MpO1xuICAgICAgICBpZiAoY29udmVyc2F0aW9uICYmIGNvbnZlcnNhdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxDb252ZXJzYXRpb25XaXRoVGFic1xuICAgICAgICAgICAgICAgIGNvbnZlcnNhdGlvbj17Y29udmVyc2F0aW9ufVxuICAgICAgICAgICAgICAgIGFyZ3M9e2FyZ3N9XG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17Y29udGV4dD8ub25TZWN0aW9uT3BlbkNoYW5nZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2hhc0Nsb3N1cmVWYXJzICYmIChcbiAgICAgICAgICAgICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJDbG9zdXJlIFZhcmlhYmxlc1wiPlxuICAgICAgICAgICAgICAgICAge0pzb25CbG9jayhjbG9zdXJlVmFycyl9XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2hhc1RoaXNWYWwgJiYgKFxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIlRoaXMgVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodGhpc1ZhbCl9XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRG9uJ3QgcmVuZGVyIGFuIGVtcHR5IFwiSW5wdXQgKDAgYXJndW1lbnRzKVwiIGNhcmQgd2hlbiBubyBpbnB1dCBleGlzdHMuXG4gICAgICBpZiAoIWhhc0FyZ3MgJiYgIWhhc0Nsb3N1cmVWYXJzICYmICFoYXNUaGlzVmFsKSB7XG4gICAgICAgIHJldHVybiA8Q29sbGFwc2libGUgbGFiZWw9XCJJbnB1dCAobm8gZGF0YSlcIiBkaXNhYmxlZCAvPjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGFyZ3MpXG4gICAgICAgICAgICAgID8gYXJncy5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogSnNvbkJsb2NrKGFyZ3MpfVxuICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAge2hhc0Nsb3N1cmVWYXJzICYmIChcbiAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkNsb3N1cmUgVmFyaWFibGVzXCI+XG4gICAgICAgICAgICAgIHtKc29uQmxvY2soY2xvc3VyZVZhcnMpfVxuICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtoYXNUaGlzVmFsICYmIChcbiAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkNvbnRleHRcIj57SnNvbkJsb2NrKHRoaXNWYWwpfTwvQ29sbGFwc2libGU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrOiB0cmVhdCBhcyBwbGFpbiBhcnJheSBvciBvYmplY3RcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD1cIklucHV0IChubyBkYXRhKVwiIGRpc2FibGVkIC8+O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxhcHNpYmxlXG4gICAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgIG9uT3BlbkNoYW5nZT17Y29udGV4dD8ub25TZWN0aW9uT3BlbkNoYW5nZX1cbiAgICAgID5cbiAgICAgICAge0FycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyB2YWx1ZS5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZpcnN0Om10LTBcIiBrZXk9e2l9PlxuICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodil9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICA6IEpzb25CbG9jayh2YWx1ZSl9XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICk7XG4gIH0sXG4gIG91dHB1dDogKHZhbHVlOiB1bmtub3duLCBjb250ZXh0PzogRGlzcGxheUNvbnRleHQpID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICBsYWJlbD1cIk91dHB1dFwiXG4gICAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICAgIG9uT3BlbkNoYW5nZT17Y29udGV4dD8ub25TZWN0aW9uT3BlbkNoYW5nZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxFbmNyeXB0ZWRGaWVsZEJsb2NrIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICBsYWJlbD1cIk91dHB1dFwiXG4gICAgICAgIGRlZmF1bHRPcGVuPXtjb250ZXh0Py5zZWN0aW9uT3Blbn1cbiAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgPlxuICAgICAgICB7SnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgZXJyb3I6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0V4cGlyZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEV4cGlyZWRGaWVsZEJsb2NrIC8+O1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFN0cnVjdHVyZWQgd29ya2Zsb3cgZXJyb3JzIG1heSBiZSBwZXJzaXN0ZWQgYXMgZWl0aGVyIGB7IG1lc3NhZ2UgfWAgb3JcbiAgICAvLyBgeyBtZXNzYWdlLCBzdGFjayB9YC4gUmVuZGVyIGJvdGggd2l0aCB0aGUgZGVkaWNhdGVkIGVycm9yIGJsb2NrLlxuICAgIGlmIChpc1N0cnVjdHVyZWRFcnJvcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgPEVycm9yU3RhY2tCbG9jayB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJFcnJvclwiIGRlZmF1bHRPcGVuPlxuICAgICAgICB7SnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgZXZlbnREYXRhOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJFdmVudCBEYXRhXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0V4cGlyZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEV4cGlyZWRGaWVsZEJsb2NrIC8+O1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiRXZlbnQgRGF0YVwiIGRlZmF1bHRPcGVuPlxuICAgICAgICB7SnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgZXJyb3JDb2RlOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9LFxuICAvLyBJbnRlcm5hbCBlbmNyeXB0aW9uIHBsdW1iaW5nOiB0aGUgcnVuJ3MgWDI1NTE5IHB1YmxpYyBrZXksIHVzZWQgYnlcbiAgLy8gY3Jvc3MtcnVuIHdyaXRlcnMgdG8gc2VhbCBwYXlsb2FkcyB0byB0aGlzIHJ1bi4gTm90IGFjdGlvbmFibGUgZm9yIHVzZXJzXG4gIC8vIGFuZCBub3Qgc2VjcmV0IOKAlCBoaWRkZW4gcmF0aGVyIHRoYW4gcmVuZGVyZWQgYXMgNDQgb3BhcXVlIGJhc2U2NCBjaGFycy5cbiAgZW5jcnlwdGlvblB1YmxpY0tleTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbn07XG5cbmNvbnN0IHJlc29sdmFibGVBdHRyaWJ1dGVzID0gW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2F0dHJpYnV0ZXMnLFxuICAnZXZlbnREYXRhJyxcbl07XG5cbi8vIEF0dHJpYnV0ZXMgd2hvc2UgZGlzcGxheUZuIHJlbmRlcnMgaXRzIG93biBzZWN0aW9uIGhlYWRlciB2aWEgQ29sbGFwc2libGUsXG4vLyBzbyB0aGUgb3V0ZXIgQXR0cmlidXRlQmxvY2sgc2hvdWxkIG5vdCBkdXBsaWNhdGUgdGhlIGxhYmVsLlxuY29uc3Qgc2VsZkhlYWRlcmVkQXR0cmlidXRlcyA9IG5ldyBTZXQoW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2F0dHJpYnV0ZXMnLFxuICAnZXZlbnREYXRhJyxcbl0pO1xuXG5jb25zdCBFeHBpcmVkRGF0YU1lc3NhZ2UgPSAoKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTEyIHJvdW5kZWQtbWQgYm9yZGVyIHAtNCBteS0yXCJcbiAgICBzdHlsZT17e1xuICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICB9fVxuICA+XG4gICAgPHNwYW4+VGhlIGRhdGEgZm9yIHRoaXMgcnVuIGhhcyBleHBpcmVkIGFuZCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjwvc3Bhbj5cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBjb3B5YWJsZUJhc2ljQXR0cmlidXRlcyA9IG5ldyBTZXQ8QXR0cmlidXRlS2V5PihbXG4gICdzdGVwSWQnLFxuICAnaG9va0lkJyxcbiAgJ2V2ZW50SWQnLFxuICAnZGVwbG95bWVudElkJyxcbiAgJ3ZlcmNlbElkJyxcbiAgJ2NvbXB1dGVJbnN0YW5jZUlkJyxcbiAgJ21vZHVsZVNwZWNpZmllcicsXG4gICd0b2tlbicsXG5dKTtcblxuY29uc3QgbG9hZGluZ1NlY3Rpb25MYWJlbHM6IFBhcnRpYWw8UmVjb3JkPEF0dHJpYnV0ZUtleSwgc3RyaW5nPj4gPSB7XG4gIGlucHV0OiAnSW5wdXQnLFxuICBvdXRwdXQ6ICdPdXRwdXQnLFxuICBldmVudERhdGE6ICdFdmVudCBEYXRhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVCbG9jayA9ICh7XG4gIGF0dHJpYnV0ZSxcbiAgdmFsdWUsXG4gIGlzTG9hZGluZyxcbiAgaW5saW5lID0gZmFsc2UsXG4gIGNvbnRleHQsXG59OiB7XG4gIGF0dHJpYnV0ZTogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgaW5saW5lPzogYm9vbGVhbjtcbiAgY29udGV4dD86IERpc3BsYXlDb250ZXh0O1xufSkgPT4ge1xuICBjb25zdCBkZWNyeXB0Q3R4ID0gdXNlQ29udGV4dChEZWNyeXB0Q2xpY2tDb250ZXh0KTtcbiAgY29uc3Qgc2VjdGlvbk9wZW5SZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVTZWN0aW9uT3BlbkNoYW5nZSA9IHVzZUNhbGxiYWNrKChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgc2VjdGlvbk9wZW5SZWYuY3VycmVudCA9IG9wZW47XG4gIH0sIFtdKTtcbiAgY29uc3QgbGFiZWwgPSBsb2FkaW5nU2VjdGlvbkxhYmVsc1thdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5XTtcbiAgaWYgKGlzTG9hZGluZyAmJiBsYWJlbCAmJiAhaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgaWYgKGRlY3J5cHRDdHg/Lmhhc0VuY3J5cHRlZERhdGEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICBkZWZhdWx0T3Blbj17YXR0cmlidXRlID09PSAnZXZlbnREYXRhJyB8fCBzZWN0aW9uT3BlblJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uT3BlbkNoYW5nZT17aGFuZGxlU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD17bGFiZWx9IC8+O1xuICB9XG5cbiAgY29uc3QgZGlzcGxheUZuID1cbiAgICBhdHRyaWJ1dGVUb0Rpc3BsYXlGblthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXTtcbiAgaWYgKCFkaXNwbGF5Rm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5Rm4odmFsdWUsIHtcbiAgICAuLi5jb250ZXh0LFxuICAgIHNlY3Rpb25PcGVuOiBzZWN0aW9uT3BlblJlZi5jdXJyZW50LFxuICAgIG9uU2VjdGlvbk9wZW5DaGFuZ2U6IGhhbmRsZVNlY3Rpb25PcGVuQ2hhbmdlLFxuICB9KTtcbiAgaWYgKCFkaXNwbGF5VmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpbmxpbmUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gZm9udC1tZWRpdW1cIlxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2F0dHJpYnV0ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX0+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxmSGVhZGVyZWRBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGUpKSB7XG4gICAgcmV0dXJuIDw+e2Rpc3BsYXlWYWx1ZX08Lz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgIHt0eXBlb2YgaXNMb2FkaW5nID09PSAnYm9vbGVhbicgJiYgaXNMb2FkaW5nICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtOSByaWdodC00XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTQgdy00IGJvcmRlci1iLTJcIlxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBrZXk9e2F0dHJpYnV0ZX0gY2xhc3NOYW1lPVwibXktMiBmbGV4IGZsZXgtY29sIGdhcC0wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTQgdGV4dC1ncmF5LTEwMDAgZm9udC1tZWRpdW0gZmlyc3QtbGV0dGVyOnVwcGVyY2FzZVwiPlxuICAgICAgICAgIHthdHRyaWJ1dGV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTEyXCJcbiAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwMCknIH19XG4gICAgICAgID5cbiAgICAgICAgICB7ZGlzcGxheVZhbHVlfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVQYW5lbCA9ICh7XG4gIGRhdGEsXG4gIG1vZHVsZVNwZWNpZmllcixcbiAgbW9kdWxlU291cmNlVXJsLFxuICBpc0xvYWRpbmcsXG4gIGVycm9yLFxuICBleHBpcmVkQXQsXG4gIG9uU3RyZWFtQ2xpY2ssXG4gIG9uUnVuQ2xpY2ssXG4gIG9uRGVjcnlwdCxcbiAgaXNEZWNyeXB0aW5nID0gZmFsc2UsXG4gIHJlc291cmNlLFxufToge1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbW9kdWxlU3BlY2lmaWVyPzogc3RyaW5nO1xuICBtb2R1bGVTb3VyY2VVcmw/OiBzdHJpbmc7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGVycm9yPzogRXJyb3I7XG4gIGV4cGlyZWRBdD86IHN0cmluZyB8IERhdGU7XG4gIC8qKiBDYWxsYmFjayB3aGVuIGEgc3RyZWFtIHJlZmVyZW5jZSBpcyBjbGlja2VkICovXG4gIG9uU3RyZWFtQ2xpY2s/OiAoc3RyZWFtSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYSBydW4gcmVmZXJlbmNlIGlzIGNsaWNrZWQgKi9cbiAgb25SdW5DbGljaz86IChydW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBhbiBlbmNyeXB0ZWQgbWFya2VyIGlzIGNsaWNrZWQgKHRyaWdnZXJzIGRlY3J5cHRpb24pICovXG4gIG9uRGVjcnlwdD86ICgpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIGRlY3J5cHRpb24gaXMgY3VycmVudGx5IGluIHByb2dyZXNzICovXG4gIGlzRGVjcnlwdGluZz86IGJvb2xlYW47XG4gIC8qKiBSZXNvdXJjZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBzcGFuIOKAlCB1c2VkIHRvIHNob3cgdGFyZ2V0ZWQgbG9hZGluZyBza2VsZXRvbnMuICovXG4gIHJlc291cmNlPzogc3RyaW5nO1xufSkgPT4ge1xuICAvLyBFeHRyYWN0IHdvcmtmbG93Q29yZVZlcnNpb24gZnJvbSBleGVjdXRpb25Db250ZXh0IGZvciBkaXNwbGF5XG4gIGNvbnN0IGRpc3BsYXlEYXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5kYXRhIH07XG4gICAgY29uc3QgZXhlY0N0eCA9IGRhdGEuZXhlY3V0aW9uQ29udGV4dCBhc1xuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGV4ZWNDdHg/LndvcmtmbG93Q29yZVZlcnNpb24pIHtcbiAgICAgIHJlc3VsdC53b3JrZmxvd0NvcmVWZXJzaW9uID0gZXhlY0N0eC53b3JrZmxvd0NvcmVWZXJzaW9uO1xuICAgIH1cbiAgICBpZiAobW9kdWxlU3BlY2lmaWVyKSB7XG4gICAgICByZXN1bHQubW9kdWxlU3BlY2lmaWVyID0gbW9kdWxlU3BlY2lmaWVyO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEuc3RlcE5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQubW9kdWxlU3BlY2lmaWVyID0gZGF0YS5zdGVwTmFtZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhLndvcmtmbG93TmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdC5tb2R1bGVTcGVjaWZpZXIgPSBkYXRhLndvcmtmbG93TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW2RhdGEsIG1vZHVsZVNwZWNpZmllcl0pO1xuICBjb25zdCBoYXNFeHBpcmVkID0gZXhwaXJlZEF0ICE9IG51bGwgJiYgbmV3IERhdGUoZXhwaXJlZEF0KSA8IG5ldyBEYXRlKCk7XG4gIGNvbnN0IGJhc2ljQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKGRpc3BsYXlEYXRhKVxuICAgIC5maWx0ZXIoKGtleSkgPT4gIXJlc29sdmFibGVBdHRyaWJ1dGVzLmluY2x1ZGVzKGtleSkpXG4gICAgLnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuICBjb25zdCByZXNvbHZlZEF0dHJpYnV0ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwcmVzZW50ID0gT2JqZWN0LmtleXMoZGlzcGxheURhdGEpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IHJlc29sdmFibGVBdHRyaWJ1dGVzLmluY2x1ZGVzKGtleSkpXG4gICAgICAuc29ydChzb3J0QnlBdHRyaWJ1dGVPcmRlcik7XG5cbiAgICBpZiAoIWlzTG9hZGluZykgcmV0dXJuIHByZXNlbnQ7XG5cbiAgICBpZiAocmVzb3VyY2UgPT09ICdzbGVlcCcpIHJldHVybiBwcmVzZW50O1xuXG4gICAgY29uc3QgbG9hZGluZ1BsYWNlaG9sZGVycyA9IFsnaW5wdXQnLCAnb3V0cHV0J107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgbG9hZGluZ1BsYWNlaG9sZGVycykge1xuICAgICAgaWYgKCFwcmVzZW50LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcHJlc2VudC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVzZW50LnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuICB9LCBbZGlzcGxheURhdGEsIGlzTG9hZGluZywgcmVzb3VyY2VdKTtcblxuICAvLyBGaWx0ZXIgb3V0IGF0dHJpYnV0ZXMgdGhhdCByZXR1cm4gbnVsbFxuICBjb25zdCB2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzID0gYmFzaWNBdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheUZuID1cbiAgICAgIGF0dHJpYnV0ZVRvRGlzcGxheUZuW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgYXR0cmlidXRlVG9EaXNwbGF5Rm5dO1xuICAgIGlmICghZGlzcGxheUZuKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gZGlzcGxheUZuKFxuICAgICAgZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV1cbiAgICApO1xuICAgIHJldHVybiBkaXNwbGF5VmFsdWUgIT09IG51bGw7XG4gIH0pO1xuXG4gIC8vIEtlZXAgYG1vZHVsZVNwZWNpZmllcmAgaW1tZWRpYXRlbHkgYWZ0ZXIgYHdvcmtmbG93TmFtZWAgb3IgYHN0ZXBOYW1lYC5cbiAgY29uc3Qgb3JkZXJlZEJhc2ljQXR0cmlidXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbLi4udmlzaWJsZUJhc2ljQXR0cmlidXRlc107XG4gICAgY29uc3QgbW9kdWxlU3BlY2lmaWVySW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoJ21vZHVsZVNwZWNpZmllcicpO1xuICAgIGlmIChtb2R1bGVTcGVjaWZpZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMuc3BsaWNlKG1vZHVsZVNwZWNpZmllckluZGV4LCAxKTtcbiAgICBjb25zdCB3b3JrZmxvd05hbWVJbmRleCA9IGF0dHJpYnV0ZXMuaW5kZXhPZignd29ya2Zsb3dOYW1lJyk7XG4gICAgaWYgKHdvcmtmbG93TmFtZUluZGV4ICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlcy5zcGxpY2Uod29ya2Zsb3dOYW1lSW5kZXggKyAxLCAwLCAnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwTmFtZUluZGV4ID0gYXR0cmlidXRlcy5pbmRleE9mKCdzdGVwTmFtZScpO1xuICAgIGlmIChzdGVwTmFtZUluZGV4ICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlcy5zcGxpY2Uoc3RlcE5hbWVJbmRleCArIDEsIDAsICdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMudW5zaGlmdCgnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gIH0sIFt2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzXSk7XG5cbiAgLy8gTWVtb2l6ZSBjb250ZXh0IG9iamVjdCB0byBhdm9pZCBvYmplY3QgcmVjb25zdHJ1Y3Rpb24gb24gcmVuZGVyXG4gIGNvbnN0IGRpc3BsYXlDb250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgc3RlcE5hbWU6IGRpc3BsYXlEYXRhLnN0ZXBOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KSxcbiAgICBbZGlzcGxheURhdGEuc3RlcE5hbWVdXG4gICk7XG4gIGNvbnN0IG91dGVyRGVjcnlwdEN0eCA9IHVzZUNvbnRleHQoRGVjcnlwdENsaWNrQ29udGV4dCk7XG4gIGNvbnN0IGRlY3J5cHRWYWx1ZSA9IG9uRGVjcnlwdFxuICAgID8ge1xuICAgICAgICBvbkRlY3J5cHQsXG4gICAgICAgIGlzRGVjcnlwdGluZyxcbiAgICAgICAgaGFzRW5jcnlwdGVkRGF0YTogb3V0ZXJEZWNyeXB0Q3R4Py5oYXNFbmNyeXB0ZWREYXRhLFxuICAgICAgfVxuICAgIDogb3V0ZXJEZWNyeXB0Q3R4O1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRDYXJkUHJvdmlkZXI+XG4gICAgICA8UnVuQ2xpY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvblJ1bkNsaWNrfT5cbiAgICAgICAgPFN0cmVhbUNsaWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17b25TdHJlYW1DbGlja30+XG4gICAgICAgICAgPERlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2RlY3J5cHRWYWx1ZX0+XG4gICAgICAgICAgICB7dmlzaWJsZUJhc2ljQXR0cmlidXRlcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPENvbGxhcHNpYmxlUm9vdCBkZWZhdWx0T3Blbj5cbiAgICAgICAgICAgICAgICA8Q29sbGFwc2libGVUcmlnZ2VyPk1ldGFkYXRhPC9Db2xsYXBzaWJsZVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPENvbGxhcHNpYmxlQ29udGVudCBjbGFzc05hbWU9XCJtdC0wIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICB7b3JkZXJlZEJhc2ljQXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGF0dHJpYnV0ZVRvRGlzcGxheUZuW1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBhdHRyaWJ1dGVUb0Rpc3BsYXlGblxuICAgICAgICAgICAgICAgICAgICAgIF0/LihkaXNwbGF5RGF0YVthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGRpc3BsYXlEYXRhXSk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb3B5YWJsZUJhc2ljQXR0cmlidXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlhYmxlQmFzaWNBdHRyaWJ1dGVzLmhhcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGFzIEF0dHJpYnV0ZUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgKSAmJiB0eXBlb2YgZGlzcGxheVZhbHVlID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGdldEF0dHJpYnV0ZURpc3BsYXlOYW1lKGF0dHJpYnV0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERldGFpbE1vbm9LZXlWYWx1ZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5VGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb3B5YWJsZUJhc2ljQXR0cmlidXRlID8gZGlzcGxheVZhbHVlIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlID09PSAnbW9kdWxlU3BlY2lmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtb2R1bGVTb3VyY2VVcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9PT0gJ3NsZWVwJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNwbGF5RGF0YS5yZXN1bWVBdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyBweS0wLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sYWJlbC0xMyB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtNCB3LVs1NSVdXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZVJvb3Q+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Vycm9yID8gKFxuICAgICAgICAgICAgICA8RXJyb3JDYXJkXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSBkZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBkZXRhaWxzPXtlcnJvci5tZXNzYWdlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LTRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IGhhc0V4cGlyZWQgPyAoXG4gICAgICAgICAgICAgIDxFeHBpcmVkRGF0YU1lc3NhZ2UgLz5cbiAgICAgICAgICAgICkgOiByZXNvbHZlZEF0dHJpYnV0ZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgcmVzb2x2ZWRBdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiAoXG4gICAgICAgICAgICAgICAgPEF0dHJpYnV0ZUJsb2NrXG4gICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIGtleT17YXR0cmlidXRlfVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV19XG4gICAgICAgICAgICAgICAgICBjb250ZXh0PXtkaXNwbGF5Q29udGV4dH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9EZWNyeXB0Q2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1N0cmVhbUNsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvUnVuQ2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ29udGV4dENhcmRQcm92aWRlcj5cbiAgKTtcbn07XG4iXX0=
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci9hdHRyaWJ1dGUtcGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFD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TmFtZSwgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50LCBIb29rLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IE1vZGVsTWVzc2FnZSB9IGZyb20gJ2FpJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0VuY3J5cHRlZE1hcmtlciwgaXNFeHBpcmVkTWFya2VyIH0gZnJvbSAnLi4vLi4vbGliL2h5ZHJhdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0Q29udmVyc2F0aW9uLCBpc0RvU3RyZWFtU3RlcCB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQge1xuICBDb2xsYXBzaWJsZSxcbiAgQ29sbGFwc2libGVDb250ZW50LFxuICBDb2xsYXBzaWJsZVJvb3QsXG4gIENvbGxhcHNpYmxlVHJpZ2dlcixcbn0gZnJvbSAnLi4vdWkvY29sbGFwc2libGUnO1xuaW1wb3J0IHsgQ29udGV4dENhcmRQcm92aWRlciB9IGZyb20gJy4uL3VpL2NvbnRleHQtY2FyZCc7XG5pbXBvcnQge1xuICBEZWNyeXB0Q2xpY2tDb250ZXh0LFxuICBSdW5DbGlja0NvbnRleHQsXG4gIFN0cmVhbUNsaWNrQ29udGV4dCxcbn0gZnJvbSAnLi4vdWkvZGF0YS1pbnNwZWN0b3InO1xuaW1wb3J0IHsgRXJyb3JDYXJkIH0gZnJvbSAnLi4vdWkvZXJyb3ItY2FyZCc7XG5pbXBvcnQgeyBFcnJvclN0YWNrQmxvY2ssIGlzU3RydWN0dXJlZEVycm9yIH0gZnJvbSAnLi4vdWkvZXJyb3Itc3RhY2stYmxvY2snO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi91aS9za2VsZXRvbic7XG5pbXBvcnQgeyBUaW1lc3RhbXBUb29sdGlwIH0gZnJvbSAnLi4vdWkvdGltZXN0YW1wLXRvb2x0aXAnO1xuaW1wb3J0IHtcbiAgRGV0YWlsTW9ub0tleVZhbHVlUm93LFxuICBSdW5BdHRyaWJ1dGVzQ2FyZCxcbiAgUnVuTWV0YWRhdGFDYXJkLFxufSBmcm9tICcuL2F0dHJpYnV0ZXMtYmxvY2snO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uVmlldyB9IGZyb20gJy4vY29udmVyc2F0aW9uLXZpZXcnO1xuaW1wb3J0IHsgQ29weWFibGVEYXRhQmxvY2ssIEVuY3J5cHRlZERhdGFCbG9jayB9IGZyb20gJy4vY29weWFibGUtZGF0YS1ibG9jayc7XG5cbi8qKlxuICogVGFiIGJ1dHRvbiBmb3IgY29udmVyc2F0aW9uL0pTT04gdG9nZ2xlXG4gKi9cbmZ1bmN0aW9uIFRhYkJ1dHRvbih7XG4gIGFjdGl2ZSxcbiAgb25DbGljayxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgYXJpYS1zZWxlY3RlZD17YWN0aXZlfVxuICAgICAgdGFiSW5kZXg9e2FjdGl2ZSA/IDAgOiAtMX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBjbGFzc05hbWU9XCJweC0zIHB5LTEuNSB0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAtbWItcHhcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLy8gRXhwbGljaXQgc3R5bGVzIHRvIHByZXZlbnQgYXBwLWxldmVsIGJ1dHRvbiBvdmVycmlkZXMgd2hlbiB3ZWItc2hhcmVkXG4gICAgICAgIC8vIGlzIGVtYmVkZGVkIGluIGEgc2VsZi1ob3N0ZWQgYXBwLlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGJvcmRlclRvcDogJ25vbmUnLFxuICAgICAgICBib3JkZXJMZWZ0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlclJpZ2h0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlckJvdHRvbTogYDJweCBzb2xpZCAke2FjdGl2ZSA/ICd2YXIoLS1kcy1ibHVlLTYwMCknIDogJ3RyYW5zcGFyZW50J31gLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICBjb2xvcjogYWN0aXZlID8gJ3ZhcigtLWRzLWdyYXktMTAwMCknIDogJ3ZhcigtLWRzLWdyYXktNjAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuLyoqXG4gKiBTaGFyZWQgdGFiYmVkIGNvbnRhaW5lciB3aXRoIGFjY2Vzc2libGUgQVJJQSByb2xlcyBhbmQga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAqIFVzZWQgYnkgQ29udmVyc2F0aW9uV2l0aFRhYnMgZm9yIHRoZSBjb252ZXJzYXRpb24vSlNPTiB0b2dnbGUuXG4gKi9cbmZ1bmN0aW9uIFRhYmJlZENvbnRhaW5lcjxUIGV4dGVuZHMgc3RyaW5nPih7XG4gIHRhYnMsXG4gIGFjdGl2ZVRhYixcbiAgb25UYWJDaGFuZ2UsXG4gIGFyaWFMYWJlbCxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHRhYnM6IHsgaWQ6IFQ7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICBhY3RpdmVUYWI6IFQ7XG4gIG9uVGFiQ2hhbmdlOiAodGFiOiBUKSA9PiB2b2lkO1xuICBhcmlhTGFiZWw6IHN0cmluZztcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09ICdBcnJvd1JpZ2h0JyAmJiBldmVudC5rZXkgIT09ICdBcnJvd0xlZnQnKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFicy5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IGFjdGl2ZVRhYik7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgICBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0J1xuICAgICAgICAgID8gKGN1cnJlbnRJbmRleCArIDEpICUgdGFicy5sZW5ndGhcbiAgICAgICAgICA6IChjdXJyZW50SW5kZXggLSAxICsgdGFicy5sZW5ndGgpICUgdGFicy5sZW5ndGg7XG4gICAgICBvblRhYkNoYW5nZSh0YWJzW25leHRJbmRleF0uaWQpO1xuICAgIH0sXG4gICAgW3RhYnMsIGFjdGl2ZVRhYiwgb25UYWJDaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGdhcC0xIGJvcmRlci1iXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICAgIDxUYWJCdXR0b25cbiAgICAgICAgICAgIGtleT17dGFiLmlkfVxuICAgICAgICAgICAgYWN0aXZlPXthY3RpdmVUYWIgPT09IHRhYi5pZH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVGFiQ2hhbmdlKHRhYi5pZCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RhYi5sYWJlbH1cbiAgICAgICAgICA8L1RhYkJ1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiByb2xlPVwidGFicGFuZWxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IGNvbnZlcnNhdGlvblRhYnMgPSBbXG4gIHsgaWQ6ICdjb252ZXJzYXRpb24nIGFzIGNvbnN0LCBsYWJlbDogJ0NvbnZlcnNhdGlvbicgfSxcbiAgeyBpZDogJ2pzb24nIGFzIGNvbnN0LCBsYWJlbDogJ1JhdyBKU09OJyB9LFxuXTtcblxuLyoqXG4gKiBUYWJiZWQgdmlldyBmb3IgY29udmVyc2F0aW9uIGFuZCByYXcgSlNPTlxuICovXG5mdW5jdGlvbiBDb252ZXJzYXRpb25XaXRoVGFicyh7XG4gIGNvbnZlcnNhdGlvbixcbiAgYXJncyxcbiAgZGVmYXVsdE9wZW4sXG4gIG9uT3BlbkNoYW5nZSxcbn06IHtcbiAgY29udmVyc2F0aW9uOiBNb2RlbE1lc3NhZ2VbXTtcbiAgYXJnczogdW5rbm93bltdO1xuICBkZWZhdWx0T3Blbj86IGJvb2xlYW47XG4gIG9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGU8J2NvbnZlcnNhdGlvbicgfCAnanNvbic+KFxuICAgICdjb252ZXJzYXRpb24nXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29sbGFwc2libGVcbiAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgZGVmYXVsdE9wZW49e2RlZmF1bHRPcGVufVxuICAgICAgb25PcGVuQ2hhbmdlPXtvbk9wZW5DaGFuZ2V9XG4gICAgPlxuICAgICAgPFRhYmJlZENvbnRhaW5lclxuICAgICAgICB0YWJzPXtjb252ZXJzYXRpb25UYWJzfVxuICAgICAgICBhY3RpdmVUYWI9e2FjdGl2ZVRhYn1cbiAgICAgICAgb25UYWJDaGFuZ2U9e3NldEFjdGl2ZVRhYn1cbiAgICAgICAgYXJpYUxhYmVsPVwiQ29udmVyc2F0aW9uIHZpZXdcIlxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGFiID09PSAnY29udmVyc2F0aW9uJyA/IChcbiAgICAgICAgICA8Q29udmVyc2F0aW9uVmlldyBtZXNzYWdlcz17Y29udmVyc2F0aW9ufSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zXCI+XG4gICAgICAgICAgICB7QXJyYXkuaXNBcnJheShhcmdzKVxuICAgICAgICAgICAgICA/IGFyZ3MubWFwKCh2LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmlyc3Q6bXQtMFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodil9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IEpzb25CbG9jayhhcmdzKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvVGFiYmVkQ29udGFpbmVyPlxuICAgIDwvQ29sbGFwc2libGU+XG4gICk7XG59XG5cbi8qKlxuICogUmVuZGVyIGEgdmFsdWUgd2l0aCB0aGUgc2hhcmVkIERhdGFJbnNwZWN0b3IgKE9iamVjdEluc3BlY3RvciB3aXRoXG4gKiBjdXN0b20gdGhlbWluZywgbm9kZVJlbmRlcmVyIGZvciBTdHJlYW1SZWYvQ2xhc3NJbnN0YW5jZVJlZiwgZXRjLilcbiAqL1xuZnVuY3Rpb24gRW5jcnlwdGVkRmllbGRCbG9jaygpIHtcbiAgcmV0dXJuIDxFbmNyeXB0ZWREYXRhQmxvY2sgLz47XG59XG5cbi8qKlxuICogSW5saW5lIGRpc3BsYXkgZm9yIGFuIGV4cGlyZWQgZmllbGQg4oCUIGZsYXQgbGFiZWwgaW5kaWNhdGluZyBkYXRhIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuXG4gKi9cbmZ1bmN0aW9uIEV4cGlyZWRGaWVsZEJsb2NrKCkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0yIHRleHQtbGFiZWwtMTJcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+RGF0YSBleHBpcmVkPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBKc29uQmxvY2sodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIDxDb3B5YWJsZURhdGFCbG9jayBkYXRhPXt2YWx1ZX0gLz47XG59XG5cbmNvbnN0IGhhc0Rpc3BsYXlDb250ZW50ID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDA7XG4gIHJldHVybiB0cnVlO1xufTtcblxudHlwZSBBdHRyaWJ1dGVLZXkgPVxuICB8IGtleW9mIFN0ZXBcbiAgfCBrZXlvZiBXb3JrZmxvd1J1blxuICB8IGtleW9mIEhvb2tcbiAgfCBrZXlvZiBFdmVudFxuICB8ICdvY2N1cnJlZEF0J1xuICB8ICdtb2R1bGVTcGVjaWZpZXInXG4gIHwgJ2V2ZW50RGF0YSdcbiAgfCAncmVzdW1lQXQnXG4gIHwgJ2V4cGlyZWRBdCdcbiAgfCAnd29ya2Zsb3dDb3JlVmVyc2lvbidcbiAgfCAncmVjZWl2ZWRDb3VudCdcbiAgfCAnbGFzdFJlY2VpdmVkQXQnXG4gIHwgJ2Rpc3Bvc2VkQXQnXG4gIHwgJ2lzU3lzdGVtJ1xuICB8ICdlcnJvckNvZGUnXG4gIC8vIEFuYWx5dGljcy1vbmx5IHByb3ZlbmFuY2UgKEFuYWx5dGljc0V2ZW50IC8gQW5hbHl0aWNzU3RlcCksIG5vdCBvbiBFdmVudC5cbiAgfCAnY29tcHV0ZUluc3RhbmNlSWQnXG4gIC8vIEFuYWx5dGljcy1vbmx5LCBhbmQgZXZlbnQtZ3JhaW5lZDogb25seSBBbmFseXRpY3NFdmVudCBjYXJyaWVzIGl0LiBUaGUga2V5XG4gIC8vIGlzIGB2ZXJjZWxJZGAgYmVjYXVzZSB0aGF0IGlzIHRoZSBuYW1lIHRoZSBiYWNrZW5kIHN0b3JlcyB0aGUgU0RLJ3NcbiAgLy8gYHJlcXVlc3RJZGAgdW5kZXI7IEFuYWx5dGljc0V2ZW50J3Mgc2libGluZyBgcmVxdWVzdElkYCBjb2x1bW4gaXMgbmV2ZXJcbiAgLy8gd3JpdHRlbiwgc28gcmVhZGluZyB0aGF0IG9uZSB3b3VsZCBhbHdheXMgYmUgZW1wdHkuXG4gIHwgJ3ZlcmNlbElkJztcblxuY29uc3QgYXR0cmlidXRlT3JkZXI6IEF0dHJpYnV0ZUtleVtdID0gW1xuICAnd29ya2Zsb3dOYW1lJyxcbiAgJ21vZHVsZVNwZWNpZmllcicsXG4gICdzdGVwTmFtZScsXG4gICdzdGF0dXMnLFxuICAnc3RlcElkJyxcbiAgJ2hvb2tJZCcsXG4gICdldmVudElkJyxcbiAgJ3J1bklkJyxcbiAgJ2F0dGVtcHQnLFxuICAndG9rZW4nLFxuICAndG9rZW5SZXRlbnRpb25VbnRpbCcsXG4gICdpc1dlYmhvb2snLFxuICAnaXNTeXN0ZW0nLFxuICAncmVjZWl2ZWRDb3VudCcsXG4gICdsYXN0UmVjZWl2ZWRBdCcsXG4gICdkaXNwb3NlZEF0JyxcbiAgJ2NvcnJlbGF0aW9uSWQnLFxuICAnZXZlbnRUeXBlJyxcbiAgJ2RlcGxveW1lbnRJZCcsXG4gICd2ZXJjZWxJZCcsXG4gICdjb21wdXRlSW5zdGFuY2VJZCcsXG4gICdzcGVjVmVyc2lvbicsXG4gICd3b3JrZmxvd0NvcmVWZXJzaW9uJyxcbiAgJ293bmVySWQnLFxuICAncHJvamVjdElkJyxcbiAgJ2Vudmlyb25tZW50JyxcbiAgJ2V4ZWN1dGlvbkNvbnRleHQnLFxuICAnb2NjdXJyZWRBdCcsXG4gICdjcmVhdGVkQXQnLFxuICAnc3RhcnRlZEF0JyxcbiAgJ3VwZGF0ZWRBdCcsXG4gICdjb21wbGV0ZWRBdCcsXG4gICdleHBpcmVkQXQnLFxuICAncmV0cnlBZnRlcicsXG4gICdlcnJvckNvZGUnLFxuICAnZXJyb3InLFxuICAnbWV0YWRhdGEnLFxuICAnZXZlbnREYXRhJyxcbiAgJ2lucHV0JyxcbiAgJ291dHB1dCcsXG4gICdhdHRyaWJ1dGVzJyxcbiAgJ3Jlc3VtZUF0Jyxcbl07XG5cbi8qKlxuICogUmFuayBvZiBhbiBhdHRyaWJ1dGUgaW4ge0BsaW5rIGF0dHJpYnV0ZU9yZGVyfS4gS2V5cyBhYnNlbnQgZnJvbSB0aGF0IGxpc3RcbiAqIHNvcnQgYWZ0ZXIgZXZlcnkgbGlzdGVkIG9uZSByYXRoZXIgdGhhbiBiZWZvcmUgdGhlbSDigJQgYGluZGV4T2ZgIHJlcG9ydHMgYVxuICogbWlzcyBhcyBgLTFgLCB3aGljaCBpcyB0cnV0aHksIHNvIGEgYHx8IDBgIGZhbGxiYWNrIG5ldmVyIGZpcmVzLlxuICovXG5jb25zdCBhdHRyaWJ1dGVPcmRlckluZGV4ID0gKGF0dHJpYnV0ZTogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgY29uc3QgaW5kZXggPSBhdHRyaWJ1dGVPcmRlci5pbmRleE9mKGF0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVLZXkpO1xuICByZXR1cm4gaW5kZXggPT09IC0xID8gYXR0cmlidXRlT3JkZXIubGVuZ3RoIDogaW5kZXg7XG59O1xuXG5jb25zdCBzb3J0QnlBdHRyaWJ1dGVPcmRlciA9IChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciA9PlxuICBhdHRyaWJ1dGVPcmRlckluZGV4KGEpIC0gYXR0cmlidXRlT3JkZXJJbmRleChiKTtcblxuLyoqXG4gKiBEaXNwbGF5IG5hbWVzIGZvciBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIHJlbmRlciBkaWZmZXJlbnRseSBmcm9tIHRoZWlyIGtleS5cbiAqL1xuY29uc3QgYXR0cmlidXRlRGlzcGxheU5hbWVzOiBQYXJ0aWFsPFJlY29yZDxBdHRyaWJ1dGVLZXksIHN0cmluZz4+ID0ge1xuICBtb2R1bGVTcGVjaWZpZXI6ICdNb2R1bGUnLFxuICB3b3JrZmxvd05hbWU6ICdXb3JrZmxvdyBOYW1lJyxcbiAgc3RlcE5hbWU6ICdTdGVwIE5hbWUnLFxuICBzdGVwSWQ6ICdTdGVwIElEJyxcbiAgaG9va0lkOiAnSG9vayBJRCcsXG4gIGF0dGVtcHQ6ICdBdHRlbXB0cycsXG4gIGV2ZW50SWQ6ICdFdmVudCBJRCcsXG4gIHJ1bklkOiAnUnVuIElEJyxcbiAgdG9rZW46ICdUb2tlbicsXG4gIHRva2VuUmV0ZW50aW9uVW50aWw6ICdNaW5pbXVtIFJldGVudGlvbiBVbnRpbCcsXG4gIGV2ZW50VHlwZTogJ0V2ZW50IFR5cGUnLFxuICBlcnJvckNvZGU6ICdFcnJvciBDb2RlJyxcbiAgY29ycmVsYXRpb25JZDogJ0NvcnJlbGF0aW9uIElEJyxcbiAgZGVwbG95bWVudElkOiAnRGVwbG95bWVudCBJRCcsXG4gIHZlcmNlbElkOiAnUmVxdWVzdCBJRCcsXG4gIGNvbXB1dGVJbnN0YW5jZUlkOiAnQ29tcHV0ZSBJbnN0YW5jZSBJRCcsXG4gIHNwZWNWZXJzaW9uOiAnU3BlYyBWZXJzaW9uJyxcbiAgd29ya2Zsb3dDb3JlVmVyc2lvbjogJ0B3b3JrZmxvdy9jb3JlIHZlcnNpb24nLFxuICBvY2N1cnJlZEF0OiAnT2NjdXJyZWQnLFxuICBjcmVhdGVkQXQ6ICdDcmVhdGVkJyxcbiAgc3RhcnRlZEF0OiAnU3RhcnRlZCcsXG4gIHVwZGF0ZWRBdDogJ1VwZGF0ZWQnLFxuICBjb21wbGV0ZWRBdDogJ0NvbXBsZXRlZCcsXG4gIGV4cGlyZWRBdDogJ0V4cGlyZWQnLFxuICByZXRyeUFmdGVyOiAnUmV0cnkgQWZ0ZXInLFxuICByZXN1bWVBdDogJ1Jlc3VtZScsXG4gIGxhc3RSZWNlaXZlZEF0OiAnTGFzdCBSZWNlaXZlZCcsXG4gIGRpc3Bvc2VkQXQ6ICdEaXNwb3NlZCcsXG4gIHJlY2VpdmVkQ291bnQ6ICdUaW1lcyBSZXNvbHZlZCcsXG59O1xuXG4vKipcbiAqIEdldCB0aGUgZGlzcGxheSBuYW1lIGZvciBhbiBhdHRyaWJ1dGUga2V5LlxuICovXG5jb25zdCBnZXRBdHRyaWJ1dGVEaXNwbGF5TmFtZSA9IChhdHRyaWJ1dGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBhdHRyaWJ1dGVEaXNwbGF5TmFtZXNbYXR0cmlidXRlIGFzIEF0dHJpYnV0ZUtleV0gPz8gYXR0cmlidXRlO1xufTtcblxuY29uc3QgZ2V0TW9kdWxlU3BlY2lmaWVyRnJvbU5hbWUgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4ge1xuICBjb25zdCByYXcgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBwYXJzZWRTdGVwID0gcGFyc2VTdGVwTmFtZShyYXcpO1xuICBpZiAocGFyc2VkU3RlcCkge1xuICAgIHJldHVybiBwYXJzZWRTdGVwLm1vZHVsZVNwZWNpZmllcjtcbiAgfVxuICBjb25zdCBwYXJzZWRXb3JrZmxvdyA9IHBhcnNlV29ya2Zsb3dOYW1lKHJhdyk7XG4gIGlmIChwYXJzZWRXb3JrZmxvdykge1xuICAgIHJldHVybiBwYXJzZWRXb3JrZmxvdy5tb2R1bGVTcGVjaWZpZXI7XG4gIH1cbiAgcmV0dXJuIHJhdztcbn07XG5cbmNvbnN0IHBhcnNlRGF0ZVZhbHVlID0gKHZhbHVlOiB1bmtub3duKTogRGF0ZSB8IG51bGwgPT4ge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKHZhbHVlLmdldFRpbWUoKSkgPyBudWxsIDogdmFsdWU7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9XG4gICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IG5ldyBEYXRlKHZhbHVlKSA6IG5ldyBEYXRlKFN0cmluZyh2YWx1ZSkpO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IG51bGwgOiBkYXRlO1xufTtcblxuY29uc3QgZm9ybWF0TG9jYWxNaWxsaXNlY29uZFRpbWUgPSAoZGF0ZTogRGF0ZSk6IHN0cmluZyA9PlxuICBmb3JtYXQoZGF0ZSwgJ01NTSBkZCBISDptbTpzcy5TUyBPTycpLnRvVXBwZXJDYXNlKCk7XG5cbmV4cG9ydCBjb25zdCBsb2NhbE1pbGxpc2Vjb25kVGltZSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGVWYWx1ZSh2YWx1ZSk7XG4gIGlmICghZGF0ZSkge1xuICAgIHJldHVybiAnLSc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0TG9jYWxNaWxsaXNlY29uZFRpbWUoZGF0ZSk7XG59O1xuXG5jb25zdCBsb2NhbE1pbGxpc2Vjb25kVGltZU9yTnVsbCA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCBkYXRlID0gcGFyc2VEYXRlVmFsdWUodmFsdWUpO1xuICBpZiAoIWRhdGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZm9ybWF0TG9jYWxNaWxsaXNlY29uZFRpbWUoZGF0ZSk7XG59O1xuXG5jb25zdCB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCA9ICh2YWx1ZTogdW5rbm93bik6IFJlYWN0Tm9kZSB8IG51bGwgPT4ge1xuICBjb25zdCBkYXRlID0gcGFyc2VEYXRlVmFsdWUodmFsdWUpO1xuICBpZiAoIWRhdGUpIHJldHVybiBudWxsO1xuICByZXR1cm4gKFxuICAgIDxUaW1lc3RhbXBUb29sdGlwIGRhdGU9e2RhdGV9PlxuICAgICAgPHNwYW4+e2Zvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpfTwvc3Bhbj5cbiAgICA8L1RpbWVzdGFtcFRvb2x0aXA+XG4gICk7XG59O1xuXG4vKipcbiAqIFJlbmRlcnMgYW4gb3BhcXVlIHByb3ZlbmFuY2UgaWQuIFRoZSBhbmFseXRpY3MgcmVhZCBjb250cmFjdCB0eXBlcyB0aGVzZSBhc1xuICogbnVsbGFibGUsIGFuZCBvbmx5IGEgYG51bGxgIHJldHVybiBpcyBmaWx0ZXJlZCBvdXQgb2YgdGhlIHBhbmVsLCBzbyBhIGJhcmVcbiAqIGBTdHJpbmcoKWAgd291bGQgc3VyZmFjZSB0aGUgbGl0ZXJhbCB0ZXh0IFwibnVsbFwiIGFzIHRoZSB2YWx1ZS5cbiAqL1xuY29uc3Qgb3BhcXVlSWRPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCBudWxsID0+XG4gIGhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSA/IFN0cmluZyh2YWx1ZSkgOiBudWxsO1xuXG5pbnRlcmZhY2UgRGlzcGxheUNvbnRleHQge1xuICBzdGVwTmFtZT86IHN0cmluZztcbiAgc2VjdGlvbk9wZW4/OiBib29sZWFuO1xuICBvblNlY3Rpb25PcGVuQ2hhbmdlPzogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IGF0dHJpYnV0ZVRvRGlzcGxheUZuOiBSZWNvcmQ8XG4gIEF0dHJpYnV0ZUtleSxcbiAgKHZhbHVlOiB1bmtub3duLCBjb250ZXh0PzogRGlzcGxheUNvbnRleHQpID0+IG51bGwgfCBzdHJpbmcgfCBSZWFjdE5vZGVcbj4gPSB7XG4gIC8vIE5hbWVzIHRoYXQgbmVlZCBwcmV0dHktcHJpbnRpbmdcbiAgd29ya2Zsb3dOYW1lOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBtb2R1bGVTcGVjaWZpZXI6ICh2YWx1ZTogdW5rbm93bikgPT4gZ2V0TW9kdWxlU3BlY2lmaWVyRnJvbU5hbWUodmFsdWUpLFxuICBzdGVwTmFtZTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gSURzXG4gIHJ1bklkOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBzdGVwSWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaG9va0lkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGV2ZW50SWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gUnVuL3N0ZXAgZGV0YWlsc1xuICBzdGF0dXM6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGF0dGVtcHQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gSG9vayBkZXRhaWxzXG4gIHRva2VuOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHRva2VuUmV0ZW50aW9uVW50aWw6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBpc1dlYmhvb2s6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaXNTeXN0ZW06ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgcmVjZWl2ZWRDb3VudDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBsYXN0UmVjZWl2ZWRBdDogbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwsXG4gIGRpc3Bvc2VkQXQ6IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsLFxuICAvLyBJbnRlcm5hbCByZXN1bWUgcGx1bWJpbmcg4oCUIG5vdCBzdXJmYWNlZCBpbiB0aGUgVUlcbiAgcmVzdW1lQ29udGV4dDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgcmVzdW1lSWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHJlc3VtZUNhcGFiaWxpdGllczogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gRXZlbnQgZGV0YWlsc1xuICBldmVudFR5cGU6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgY29ycmVsYXRpb25JZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBQcm9qZWN0IGRldGFpbHNcbiAgZGVwbG95bWVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHZlcmNlbElkOiBvcGFxdWVJZE9yTnVsbCxcbiAgY29tcHV0ZUluc3RhbmNlSWQ6IG9wYXF1ZUlkT3JOdWxsLFxuICBzcGVjVmVyc2lvbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICB3b3JrZmxvd0NvcmVWZXJzaW9uOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFRlbmFuY3kgKHdlIGRvbid0IHNob3cgdGhlc2UpXG4gIG93bmVySWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHByb2plY3RJZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgZW52aXJvbm1lbnQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGV4ZWN1dGlvbkNvbnRleHQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIC8vIEF0dHJpYnV0ZXMg4oCUIHN0cmluZy1zdHJpbmcgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhlIHJ1bi5cbiAgLy8gUmVuZGVyZWQgYXMga2V5LXZhbHVlIHJvd3MgaW4gaXRzIG93biBjb2xsYXBzaWJsZSBzZWN0aW9uO1xuICAvLyBpZiBlbXB0eS9taXNzaW5nLCBoaWRkZW4gYnkgdGhlIGhhc0Rpc3BsYXlDb250ZW50IGdhdGUuXG4gIGF0dHJpYnV0ZXM6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gPFJ1bkF0dHJpYnV0ZXNDYXJkIGF0dHJpYnV0ZXM9e3ZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz59IC8+O1xuICB9LFxuICAvLyBEYXRlcyDigJQgd3JhcHBlZCB3aXRoIFRpbWVzdGFtcFRvb2x0aXAgc2hvd2luZyBVVEMvbG9jYWwgKyByZWxhdGl2ZSB0aW1lXG4gIG9jY3VycmVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBzdGFydGVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICB1cGRhdGVkQXQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGNvbXBsZXRlZEF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgZXhwaXJlZEF0OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICByZXRyeUFmdGVyOiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgcmVzdW1lQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICAvLyBSZXNvbHZlZCBhdHRyaWJ1dGVzLCB3b24ndCBhY3R1YWxseSB1c2UgdGhpcyBmdW5jdGlvblxuICBtZXRhZGF0YTogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIk1ldGFkYXRhXCI+XG4gICAgICAgICAgPEVuY3J5cHRlZERhdGFCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIk1ldGFkYXRhXCI+XG4gICAgICAgICAgPEV4cGlyZWRGaWVsZEJsb2NrIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gPFJ1bk1ldGFkYXRhQ2FyZCBtZXRhZGF0YT17dmFsdWV9IC8+O1xuICB9LFxuICBpbnB1dDogKHZhbHVlOiB1bmtub3duLCBjb250ZXh0PzogRGlzcGxheUNvbnRleHQpID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICBsYWJlbD1cIklucHV0XCJcbiAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0V4cGlyZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEV4cGlyZWRGaWVsZEJsb2NrIC8+O1xuICAgIC8vIENoZWNrIGlmIGlucHV0IGhhcyBhcmdzICsgY2xvc3VyZSB2YXJzIHN0cnVjdHVyZVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdhcmdzJyBpbiB2YWx1ZSkge1xuICAgICAgY29uc3QgeyBhcmdzLCBjbG9zdXJlVmFycywgdGhpc1ZhbCB9ID0gdmFsdWUgYXMge1xuICAgICAgICBhcmdzOiB1bmtub3duW107XG4gICAgICAgIGNsb3N1cmVWYXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIHRoaXNWYWw/OiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGhhc0Nsb3N1cmVWYXJzID0gaGFzRGlzcGxheUNvbnRlbnQoY2xvc3VyZVZhcnMpO1xuICAgICAgY29uc3QgaGFzVGhpc1ZhbCA9IGhhc0Rpc3BsYXlDb250ZW50KHRoaXNWYWwpO1xuICAgICAgY29uc3QgaGFzQXJncyA9IGhhc0Rpc3BsYXlDb250ZW50KGFyZ3MpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgZG9TdHJlYW1TdGVwIC0gc2hvdyBjb252ZXJzYXRpb24gdmlldyB3aXRoIHRhYnNcbiAgICAgIGlmIChjb250ZXh0Py5zdGVwTmFtZSAmJiBpc0RvU3RyZWFtU3RlcChjb250ZXh0LnN0ZXBOYW1lKSkge1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBleHRyYWN0Q29udmVyc2F0aW9uKGFyZ3MpO1xuICAgICAgICBpZiAoY29udmVyc2F0aW9uICYmIGNvbnZlcnNhdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxDb252ZXJzYXRpb25XaXRoVGFic1xuICAgICAgICAgICAgICAgIGNvbnZlcnNhdGlvbj17Y29udmVyc2F0aW9ufVxuICAgICAgICAgICAgICAgIGFyZ3M9e2FyZ3N9XG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17Y29udGV4dD8ub25TZWN0aW9uT3BlbkNoYW5nZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2hhc0Nsb3N1cmVWYXJzICYmIChcbiAgICAgICAgICAgICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJDbG9zdXJlIFZhcmlhYmxlc1wiPlxuICAgICAgICAgICAgICAgICAge0pzb25CbG9jayhjbG9zdXJlVmFycyl9XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2hhc1RoaXNWYWwgJiYgKFxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIlRoaXMgVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodGhpc1ZhbCl9XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRG9uJ3QgcmVuZGVyIGFuIGVtcHR5IFwiSW5wdXQgKDAgYXJndW1lbnRzKVwiIGNhcmQgd2hlbiBubyBpbnB1dCBleGlzdHMuXG4gICAgICBpZiAoIWhhc0FyZ3MgJiYgIWhhc0Nsb3N1cmVWYXJzICYmICFoYXNUaGlzVmFsKSB7XG4gICAgICAgIHJldHVybiA8Q29sbGFwc2libGUgbGFiZWw9XCJJbnB1dCAobm8gZGF0YSlcIiBkaXNhYmxlZCAvPjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGFyZ3MpXG4gICAgICAgICAgICAgID8gYXJncy5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogSnNvbkJsb2NrKGFyZ3MpfVxuICAgICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICAgICAge2hhc0Nsb3N1cmVWYXJzICYmIChcbiAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkNsb3N1cmUgVmFyaWFibGVzXCI+XG4gICAgICAgICAgICAgIHtKc29uQmxvY2soY2xvc3VyZVZhcnMpfVxuICAgICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtoYXNUaGlzVmFsICYmIChcbiAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkNvbnRleHRcIj57SnNvbkJsb2NrKHRoaXNWYWwpfTwvQ29sbGFwc2libGU+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrOiB0cmVhdCBhcyBwbGFpbiBhcnJheSBvciBvYmplY3RcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD1cIklucHV0IChubyBkYXRhKVwiIGRpc2FibGVkIC8+O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxhcHNpYmxlXG4gICAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgIG9uT3BlbkNoYW5nZT17Y29udGV4dD8ub25TZWN0aW9uT3BlbkNoYW5nZX1cbiAgICAgID5cbiAgICAgICAge0FycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyB2YWx1ZS5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZpcnN0Om10LTBcIiBrZXk9e2l9PlxuICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodil9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICA6IEpzb25CbG9jayh2YWx1ZSl9XG4gICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICk7XG4gIH0sXG4gIG91dHB1dDogKHZhbHVlOiB1bmtub3duLCBjb250ZXh0PzogRGlzcGxheUNvbnRleHQpID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICBsYWJlbD1cIk91dHB1dFwiXG4gICAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICAgIG9uT3BlbkNoYW5nZT17Y29udGV4dD8ub25TZWN0aW9uT3BlbkNoYW5nZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxFbmNyeXB0ZWRGaWVsZEJsb2NrIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICBsYWJlbD1cIk91dHB1dFwiXG4gICAgICAgIGRlZmF1bHRPcGVuPXtjb250ZXh0Py5zZWN0aW9uT3Blbn1cbiAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgPlxuICAgICAgICB7SnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgZXJyb3I6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0V4cGlyZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEV4cGlyZWRGaWVsZEJsb2NrIC8+O1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFN0cnVjdHVyZWQgd29ya2Zsb3cgZXJyb3JzIG1heSBiZSBwZXJzaXN0ZWQgYXMgZWl0aGVyIGB7IG1lc3NhZ2UgfWAgb3JcbiAgICAvLyBgeyBtZXNzYWdlLCBzdGFjayB9YC4gUmVuZGVyIGJvdGggd2l0aCB0aGUgZGVkaWNhdGVkIGVycm9yIGJsb2NrLlxuICAgIGlmIChpc1N0cnVjdHVyZWRFcnJvcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgPEVycm9yU3RhY2tCbG9jayB2YWx1ZT17dmFsdWV9IC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJFcnJvclwiIGRlZmF1bHRPcGVuPlxuICAgICAgICB7SnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgZXZlbnREYXRhOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJFdmVudCBEYXRhXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChpc0V4cGlyZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEV4cGlyZWRGaWVsZEJsb2NrIC8+O1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiRXZlbnQgRGF0YVwiIGRlZmF1bHRPcGVuPlxuICAgICAgICB7SnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgZXJyb3JDb2RlOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9LFxuICAvLyBJbnRlcm5hbCBlbmNyeXB0aW9uIHBsdW1iaW5nOiB0aGUgcnVuJ3MgWDI1NTE5IHB1YmxpYyBrZXksIHVzZWQgYnlcbiAgLy8gY3Jvc3MtcnVuIHdyaXRlcnMgdG8gc2VhbCBwYXlsb2FkcyB0byB0aGlzIHJ1bi4gTm90IGFjdGlvbmFibGUgZm9yIHVzZXJzXG4gIC8vIGFuZCBub3Qgc2VjcmV0IOKAlCBoaWRkZW4gcmF0aGVyIHRoYW4gcmVuZGVyZWQgYXMgNDQgb3BhcXVlIGJhc2U2NCBjaGFycy5cbiAgZW5jcnlwdGlvblB1YmxpY0tleTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbn07XG5cbmNvbnN0IHJlc29sdmFibGVBdHRyaWJ1dGVzID0gW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2F0dHJpYnV0ZXMnLFxuICAnZXZlbnREYXRhJyxcbl07XG5cbi8vIEF0dHJpYnV0ZXMgd2hvc2UgZGlzcGxheUZuIHJlbmRlcnMgaXRzIG93biBzZWN0aW9uIGhlYWRlciB2aWEgQ29sbGFwc2libGUsXG4vLyBzbyB0aGUgb3V0ZXIgQXR0cmlidXRlQmxvY2sgc2hvdWxkIG5vdCBkdXBsaWNhdGUgdGhlIGxhYmVsLlxuY29uc3Qgc2VsZkhlYWRlcmVkQXR0cmlidXRlcyA9IG5ldyBTZXQoW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2F0dHJpYnV0ZXMnLFxuICAnZXZlbnREYXRhJyxcbl0pO1xuXG5jb25zdCBFeHBpcmVkRGF0YU1lc3NhZ2UgPSAoKSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTEyIHJvdW5kZWQtbWQgYm9yZGVyIHAtNCBteS0yXCJcbiAgICBzdHlsZT17e1xuICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICB9fVxuICA+XG4gICAgPHNwYW4+VGhlIGRhdGEgZm9yIHRoaXMgcnVuIGhhcyBleHBpcmVkIGFuZCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjwvc3Bhbj5cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBjb3B5YWJsZUJhc2ljQXR0cmlidXRlcyA9IG5ldyBTZXQ8QXR0cmlidXRlS2V5PihbXG4gICdzdGVwSWQnLFxuICAnaG9va0lkJyxcbiAgJ2V2ZW50SWQnLFxuICAnZGVwbG95bWVudElkJyxcbiAgJ3ZlcmNlbElkJyxcbiAgJ2NvbXB1dGVJbnN0YW5jZUlkJyxcbiAgJ21vZHVsZVNwZWNpZmllcicsXG4gICd0b2tlbicsXG5dKTtcblxuY29uc3QgbG9hZGluZ1NlY3Rpb25MYWJlbHM6IFBhcnRpYWw8UmVjb3JkPEF0dHJpYnV0ZUtleSwgc3RyaW5nPj4gPSB7XG4gIGlucHV0OiAnSW5wdXQnLFxuICBvdXRwdXQ6ICdPdXRwdXQnLFxuICBldmVudERhdGE6ICdFdmVudCBEYXRhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVCbG9jayA9ICh7XG4gIGF0dHJpYnV0ZSxcbiAgdmFsdWUsXG4gIGlzTG9hZGluZyxcbiAgaW5saW5lID0gZmFsc2UsXG4gIGNvbnRleHQsXG59OiB7XG4gIGF0dHJpYnV0ZTogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgaW5saW5lPzogYm9vbGVhbjtcbiAgY29udGV4dD86IERpc3BsYXlDb250ZXh0O1xufSkgPT4ge1xuICBjb25zdCBkZWNyeXB0Q3R4ID0gdXNlQ29udGV4dChEZWNyeXB0Q2xpY2tDb250ZXh0KTtcbiAgY29uc3Qgc2VjdGlvbk9wZW5SZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVTZWN0aW9uT3BlbkNoYW5nZSA9IHVzZUNhbGxiYWNrKChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgc2VjdGlvbk9wZW5SZWYuY3VycmVudCA9IG9wZW47XG4gIH0sIFtdKTtcbiAgY29uc3QgbGFiZWwgPSBsb2FkaW5nU2VjdGlvbkxhYmVsc1thdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5XTtcbiAgaWYgKGlzTG9hZGluZyAmJiBsYWJlbCAmJiAhaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgaWYgKGRlY3J5cHRDdHg/Lmhhc0VuY3J5cHRlZERhdGEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICBkZWZhdWx0T3Blbj17YXR0cmlidXRlID09PSAnZXZlbnREYXRhJyB8fCBzZWN0aW9uT3BlblJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uT3BlbkNoYW5nZT17aGFuZGxlU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD17bGFiZWx9IC8+O1xuICB9XG5cbiAgY29uc3QgZGlzcGxheUZuID1cbiAgICBhdHRyaWJ1dGVUb0Rpc3BsYXlGblthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXTtcbiAgaWYgKCFkaXNwbGF5Rm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5Rm4odmFsdWUsIHtcbiAgICAuLi5jb250ZXh0LFxuICAgIHNlY3Rpb25PcGVuOiBzZWN0aW9uT3BlblJlZi5jdXJyZW50LFxuICAgIG9uU2VjdGlvbk9wZW5DaGFuZ2U6IGhhbmRsZVNlY3Rpb25PcGVuQ2hhbmdlLFxuICB9KTtcbiAgaWYgKCFkaXNwbGF5VmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpbmxpbmUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gZm9udC1tZWRpdW1cIlxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2F0dHJpYnV0ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX0+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxmSGVhZGVyZWRBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGUpKSB7XG4gICAgcmV0dXJuIDw+e2Rpc3BsYXlWYWx1ZX08Lz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgIHt0eXBlb2YgaXNMb2FkaW5nID09PSAnYm9vbGVhbicgJiYgaXNMb2FkaW5nICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtOSByaWdodC00XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTQgdy00IGJvcmRlci1iLTJcIlxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBrZXk9e2F0dHJpYnV0ZX0gY2xhc3NOYW1lPVwibXktMiBmbGV4IGZsZXgtY29sIGdhcC0wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTQgdGV4dC1ncmF5LTEwMDAgZm9udC1tZWRpdW0gZmlyc3QtbGV0dGVyOnVwcGVyY2FzZVwiPlxuICAgICAgICAgIHthdHRyaWJ1dGV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTEyXCJcbiAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwMCknIH19XG4gICAgICAgID5cbiAgICAgICAgICB7ZGlzcGxheVZhbHVlfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVQYW5lbCA9ICh7XG4gIGRhdGEsXG4gIG1vZHVsZVNwZWNpZmllcixcbiAgbW9kdWxlU291cmNlVXJsLFxuICBpc0xvYWRpbmcsXG4gIGVycm9yLFxuICBleHBpcmVkQXQsXG4gIG9uU3RyZWFtQ2xpY2ssXG4gIG9uUnVuQ2xpY2ssXG4gIG9uRGVjcnlwdCxcbiAgaXNEZWNyeXB0aW5nID0gZmFsc2UsXG4gIHJlc291cmNlLFxufToge1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgbW9kdWxlU3BlY2lmaWVyPzogc3RyaW5nO1xuICBtb2R1bGVTb3VyY2VVcmw/OiBzdHJpbmc7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGVycm9yPzogRXJyb3I7XG4gIGV4cGlyZWRBdD86IHN0cmluZyB8IERhdGU7XG4gIC8qKiBDYWxsYmFjayB3aGVuIGEgc3RyZWFtIHJlZmVyZW5jZSBpcyBjbGlja2VkICovXG4gIG9uU3RyZWFtQ2xpY2s/OiAoc3RyZWFtSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYSBydW4gcmVmZXJlbmNlIGlzIGNsaWNrZWQgKi9cbiAgb25SdW5DbGljaz86IChydW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBhbiBlbmNyeXB0ZWQgbWFya2VyIGlzIGNsaWNrZWQgKHRyaWdnZXJzIGRlY3J5cHRpb24pICovXG4gIG9uRGVjcnlwdD86ICgpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIGRlY3J5cHRpb24gaXMgY3VycmVudGx5IGluIHByb2dyZXNzICovXG4gIGlzRGVjcnlwdGluZz86IGJvb2xlYW47XG4gIC8qKiBSZXNvdXJjZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBzcGFuIOKAlCB1c2VkIHRvIHNob3cgdGFyZ2V0ZWQgbG9hZGluZyBza2VsZXRvbnMuICovXG4gIHJlc291cmNlPzogc3RyaW5nO1xufSkgPT4ge1xuICAvLyBFeHRyYWN0IHdvcmtmbG93Q29yZVZlcnNpb24gZnJvbSBleGVjdXRpb25Db250ZXh0IGZvciBkaXNwbGF5XG4gIGNvbnN0IGRpc3BsYXlEYXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5kYXRhIH07XG4gICAgY29uc3QgZXhlY0N0eCA9IGRhdGEuZXhlY3V0aW9uQ29udGV4dCBhc1xuICAgICAgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGV4ZWNDdHg/LndvcmtmbG93Q29yZVZlcnNpb24pIHtcbiAgICAgIHJlc3VsdC53b3JrZmxvd0NvcmVWZXJzaW9uID0gZXhlY0N0eC53b3JrZmxvd0NvcmVWZXJzaW9uO1xuICAgIH1cbiAgICBpZiAobW9kdWxlU3BlY2lmaWVyKSB7XG4gICAgICByZXN1bHQubW9kdWxlU3BlY2lmaWVyID0gbW9kdWxlU3BlY2lmaWVyO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEuc3RlcE5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQubW9kdWxlU3BlY2lmaWVyID0gZGF0YS5zdGVwTmFtZTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhLndvcmtmbG93TmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdC5tb2R1bGVTcGVjaWZpZXIgPSBkYXRhLndvcmtmbG93TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW2RhdGEsIG1vZHVsZVNwZWNpZmllcl0pO1xuICBjb25zdCBoYXNFeHBpcmVkID0gZXhwaXJlZEF0ICE9IG51bGwgJiYgbmV3IERhdGUoZXhwaXJlZEF0KSA8IG5ldyBEYXRlKCk7XG4gIGNvbnN0IGJhc2ljQXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKGRpc3BsYXlEYXRhKVxuICAgIC5maWx0ZXIoKGtleSkgPT4gIXJlc29sdmFibGVBdHRyaWJ1dGVzLmluY2x1ZGVzKGtleSkpXG4gICAgLnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuICBjb25zdCByZXNvbHZlZEF0dHJpYnV0ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBwcmVzZW50ID0gT2JqZWN0LmtleXMoZGlzcGxheURhdGEpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IHJlc29sdmFibGVBdHRyaWJ1dGVzLmluY2x1ZGVzKGtleSkpXG4gICAgICAuc29ydChzb3J0QnlBdHRyaWJ1dGVPcmRlcik7XG5cbiAgICBpZiAoIWlzTG9hZGluZykgcmV0dXJuIHByZXNlbnQ7XG5cbiAgICBpZiAocmVzb3VyY2UgPT09ICdzbGVlcCcpIHJldHVybiBwcmVzZW50O1xuXG4gICAgY29uc3QgbG9hZGluZ1BsYWNlaG9sZGVycyA9IFsnaW5wdXQnLCAnb3V0cHV0J107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgbG9hZGluZ1BsYWNlaG9sZGVycykge1xuICAgICAgaWYgKCFwcmVzZW50LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcHJlc2VudC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVzZW50LnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuICB9LCBbZGlzcGxheURhdGEsIGlzTG9hZGluZywgcmVzb3VyY2VdKTtcblxuICAvLyBGaWx0ZXIgb3V0IGF0dHJpYnV0ZXMgdGhhdCByZXR1cm4gbnVsbFxuICBjb25zdCB2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzID0gYmFzaWNBdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheUZuID1cbiAgICAgIGF0dHJpYnV0ZVRvRGlzcGxheUZuW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgYXR0cmlidXRlVG9EaXNwbGF5Rm5dO1xuICAgIGlmICghZGlzcGxheUZuKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gZGlzcGxheUZuKFxuICAgICAgZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV1cbiAgICApO1xuICAgIHJldHVybiBkaXNwbGF5VmFsdWUgIT09IG51bGw7XG4gIH0pO1xuXG4gIC8vIEtlZXAgYG1vZHVsZVNwZWNpZmllcmAgaW1tZWRpYXRlbHkgYWZ0ZXIgYHdvcmtmbG93TmFtZWAgb3IgYHN0ZXBOYW1lYC5cbiAgY29uc3Qgb3JkZXJlZEJhc2ljQXR0cmlidXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbLi4udmlzaWJsZUJhc2ljQXR0cmlidXRlc107XG4gICAgY29uc3QgbW9kdWxlU3BlY2lmaWVySW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoJ21vZHVsZVNwZWNpZmllcicpO1xuICAgIGlmIChtb2R1bGVTcGVjaWZpZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMuc3BsaWNlKG1vZHVsZVNwZWNpZmllckluZGV4LCAxKTtcbiAgICBjb25zdCB3b3JrZmxvd05hbWVJbmRleCA9IGF0dHJpYnV0ZXMuaW5kZXhPZignd29ya2Zsb3dOYW1lJyk7XG4gICAgaWYgKHdvcmtmbG93TmFtZUluZGV4ICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlcy5zcGxpY2Uod29ya2Zsb3dOYW1lSW5kZXggKyAxLCAwLCAnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwTmFtZUluZGV4ID0gYXR0cmlidXRlcy5pbmRleE9mKCdzdGVwTmFtZScpO1xuICAgIGlmIChzdGVwTmFtZUluZGV4ICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlcy5zcGxpY2Uoc3RlcE5hbWVJbmRleCArIDEsIDAsICdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMudW5zaGlmdCgnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gIH0sIFt2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzXSk7XG5cbiAgLy8gTWVtb2l6ZSBjb250ZXh0IG9iamVjdCB0byBhdm9pZCBvYmplY3QgcmVjb25zdHJ1Y3Rpb24gb24gcmVuZGVyXG4gIGNvbnN0IGRpc3BsYXlDb250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgc3RlcE5hbWU6IGRpc3BsYXlEYXRhLnN0ZXBOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KSxcbiAgICBbZGlzcGxheURhdGEuc3RlcE5hbWVdXG4gICk7XG4gIGNvbnN0IG91dGVyRGVjcnlwdEN0eCA9IHVzZUNvbnRleHQoRGVjcnlwdENsaWNrQ29udGV4dCk7XG4gIGNvbnN0IGRlY3J5cHRWYWx1ZSA9IG9uRGVjcnlwdFxuICAgID8ge1xuICAgICAgICBvbkRlY3J5cHQsXG4gICAgICAgIGlzRGVjcnlwdGluZyxcbiAgICAgICAgaGFzRW5jcnlwdGVkRGF0YTogb3V0ZXJEZWNyeXB0Q3R4Py5oYXNFbmNyeXB0ZWREYXRhLFxuICAgICAgfVxuICAgIDogb3V0ZXJEZWNyeXB0Q3R4O1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHRDYXJkUHJvdmlkZXI+XG4gICAgICA8UnVuQ2xpY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvblJ1bkNsaWNrfT5cbiAgICAgICAgPFN0cmVhbUNsaWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17b25TdHJlYW1DbGlja30+XG4gICAgICAgICAgPERlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2RlY3J5cHRWYWx1ZX0+XG4gICAgICAgICAgICB7dmlzaWJsZUJhc2ljQXR0cmlidXRlcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPENvbGxhcHNpYmxlUm9vdCBkZWZhdWx0T3Blbj5cbiAgICAgICAgICAgICAgICA8Q29sbGFwc2libGVUcmlnZ2VyPk1ldGFkYXRhPC9Db2xsYXBzaWJsZVRyaWdnZXI+XG4gICAgICAgICAgICAgICAgPENvbGxhcHNpYmxlQ29udGVudCBjbGFzc05hbWU9XCJtdC0wIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICB7b3JkZXJlZEJhc2ljQXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGF0dHJpYnV0ZVRvRGlzcGxheUZuW1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBhdHRyaWJ1dGVUb0Rpc3BsYXlGblxuICAgICAgICAgICAgICAgICAgICAgIF0/LihkaXNwbGF5RGF0YVthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGRpc3BsYXlEYXRhXSk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb3B5YWJsZUJhc2ljQXR0cmlidXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlhYmxlQmFzaWNBdHRyaWJ1dGVzLmhhcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGFzIEF0dHJpYnV0ZUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgKSAmJiB0eXBlb2YgZGlzcGxheVZhbHVlID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGdldEF0dHJpYnV0ZURpc3BsYXlOYW1lKGF0dHJpYnV0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPERldGFpbE1vbm9LZXlWYWx1ZVJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5VGV4dD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb3B5YWJsZUJhc2ljQXR0cmlidXRlID8gZGlzcGxheVZhbHVlIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlID09PSAnbW9kdWxlU3BlY2lmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtb2R1bGVTb3VyY2VVcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSA9PT0gJ3NsZWVwJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNwbGF5RGF0YS5yZXN1bWVBdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyBweS0wLjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sYWJlbC0xMyB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtNCB3LVs1NSVdXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZVJvb3Q+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Vycm9yID8gKFxuICAgICAgICAgICAgICA8RXJyb3JDYXJkXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSBkZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBkZXRhaWxzPXtlcnJvci5tZXNzYWdlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LTRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IGhhc0V4cGlyZWQgPyAoXG4gICAgICAgICAgICAgIDxFeHBpcmVkRGF0YU1lc3NhZ2UgLz5cbiAgICAgICAgICAgICkgOiByZXNvbHZlZEF0dHJpYnV0ZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgcmVzb2x2ZWRBdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiAoXG4gICAgICAgICAgICAgICAgPEF0dHJpYnV0ZUJsb2NrXG4gICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIGtleT17YXR0cmlidXRlfVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV19XG4gICAgICAgICAgICAgICAgICBjb250ZXh0PXtkaXNwbGF5Q29udGV4dH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9EZWNyeXB0Q2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1N0cmVhbUNsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvUnVuQ2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ29udGV4dENhcmRQcm92aWRlcj5cbiAgKTtcbn07XG4iXX0=
|
package/dist/styles.css
CHANGED
|
@@ -16,93 +16,123 @@
|
|
|
16
16
|
@custom-variant light-theme (&:where(.light-theme, .light-theme *, .light, .light *));
|
|
17
17
|
|
|
18
18
|
:root {
|
|
19
|
+
--ds-black: oklch(0 0 0);
|
|
20
|
+
--ds-white: oklch(1 0 0);
|
|
21
|
+
|
|
19
22
|
/* Background */
|
|
20
|
-
--ds-background-100:
|
|
21
|
-
--ds-background-200:
|
|
23
|
+
--ds-background-100: oklch(1 0 0);
|
|
24
|
+
--ds-background-200: oklch(0.984 0 0);
|
|
22
25
|
|
|
23
26
|
/* Gray */
|
|
24
|
-
--ds-gray-100:
|
|
25
|
-
--ds-gray-200:
|
|
26
|
-
--ds-gray-300:
|
|
27
|
-
--ds-gray-400:
|
|
28
|
-
--ds-gray-500:
|
|
29
|
-
--ds-gray-600:
|
|
30
|
-
--ds-gray-700:
|
|
31
|
-
--ds-gray-800:
|
|
32
|
-
--ds-gray-900:
|
|
33
|
-
--ds-gray-1000:
|
|
27
|
+
--ds-gray-100: oklch(0.961 0 0);
|
|
28
|
+
--ds-gray-200: oklch(0.94 0 0);
|
|
29
|
+
--ds-gray-300: oklch(0.925 0 0);
|
|
30
|
+
--ds-gray-400: oklch(0.937 0 0);
|
|
31
|
+
--ds-gray-500: oklch(0.836 0 0);
|
|
32
|
+
--ds-gray-600: oklch(0.732 0 0);
|
|
33
|
+
--ds-gray-700: oklch(0.65 0 0);
|
|
34
|
+
--ds-gray-800: oklch(0.59 0 0);
|
|
35
|
+
--ds-gray-900: oklch(0.42 0 0);
|
|
36
|
+
--ds-gray-1000: oklch(0.205 0 0);
|
|
34
37
|
|
|
35
38
|
/* Gray Alpha */
|
|
36
|
-
--ds-gray-alpha-100:
|
|
37
|
-
--ds-gray-alpha-200:
|
|
38
|
-
--ds-gray-alpha-
|
|
39
|
-
--ds-gray-alpha-
|
|
40
|
-
--ds-gray-alpha-
|
|
39
|
+
--ds-gray-alpha-100: oklch(0 0 0 / 0.05);
|
|
40
|
+
--ds-gray-alpha-200: oklch(0 0 0 / 0.081);
|
|
41
|
+
--ds-gray-alpha-300: oklch(0 0 0 / 0.1);
|
|
42
|
+
--ds-gray-alpha-400: oklch(0 0 0 / 0.08);
|
|
43
|
+
--ds-gray-alpha-500: oklch(0 0 0 / 0.21);
|
|
44
|
+
--ds-gray-alpha-600: oklch(0 0 0 / 0.24);
|
|
45
|
+
--ds-gray-alpha-700: oklch(0 0 0 / 0.44);
|
|
46
|
+
--ds-gray-alpha-800: oklch(0 0 0 / 0.51);
|
|
47
|
+
--ds-gray-alpha-900: oklch(0 0 0 / 0.7);
|
|
48
|
+
--ds-gray-alpha-1000: oklch(0 0 0 / 0.91);
|
|
41
49
|
|
|
42
50
|
/* Focus */
|
|
43
51
|
--ds-focus-color: var(--ds-blue-700);
|
|
44
52
|
|
|
45
53
|
/* Blue */
|
|
46
|
-
--ds-blue-100:
|
|
47
|
-
--ds-blue-200:
|
|
48
|
-
--ds-blue-300:
|
|
49
|
-
--ds-blue-400:
|
|
50
|
-
--ds-blue-500:
|
|
51
|
-
--ds-blue-600:
|
|
52
|
-
--ds-blue-700:
|
|
53
|
-
--ds-blue-
|
|
54
|
+
--ds-blue-100: oklch(97.32% 0.0141 251.56);
|
|
55
|
+
--ds-blue-200: oklch(96.29% 0.0195 250.59);
|
|
56
|
+
--ds-blue-300: oklch(94.58% 0.0293 249.85);
|
|
57
|
+
--ds-blue-400: oklch(91.58% 0.0473 245.12);
|
|
58
|
+
--ds-blue-500: oklch(82.75% 0.0979 248.48);
|
|
59
|
+
--ds-blue-600: oklch(73.08% 0.1583 248.13);
|
|
60
|
+
--ds-blue-700: oklch(57.61% 0.2508 258.23);
|
|
61
|
+
--ds-blue-800: oklch(51.51% 0.2399 257.85);
|
|
62
|
+
--ds-blue-900: oklch(53.18% 0.2399 256.99);
|
|
63
|
+
--ds-blue-1000: oklch(26.67% 0.1099 254.34);
|
|
54
64
|
|
|
55
65
|
/* Red */
|
|
56
|
-
--ds-red-100:
|
|
57
|
-
--ds-red-200:
|
|
58
|
-
--ds-red-300:
|
|
59
|
-
--ds-red-400:
|
|
60
|
-
--ds-red-500:
|
|
61
|
-
--ds-red-600:
|
|
62
|
-
--ds-red-700:
|
|
63
|
-
--ds-red-
|
|
66
|
+
--ds-red-100: oklch(96.5% 0.0223 13.09);
|
|
67
|
+
--ds-red-200: oklch(95.41% 0.0299 14.25);
|
|
68
|
+
--ds-red-300: oklch(94.33% 0.0369 15.01);
|
|
69
|
+
--ds-red-400: oklch(91.51% 0.0471 19.8);
|
|
70
|
+
--ds-red-500: oklch(84.47% 0.1018 17.71);
|
|
71
|
+
--ds-red-600: oklch(71.12% 0.1881 21.22);
|
|
72
|
+
--ds-red-700: oklch(62.56% 0.2524 23.03);
|
|
73
|
+
--ds-red-800: oklch(58.19% 0.2482 25.15);
|
|
74
|
+
--ds-red-900: oklch(54.99% 0.232 25.29);
|
|
75
|
+
--ds-red-1000: oklch(24.8% 0.1041 18.86);
|
|
64
76
|
|
|
65
77
|
/* Amber */
|
|
66
|
-
--ds-amber-100:
|
|
67
|
-
--ds-amber-200:
|
|
68
|
-
--ds-amber-300:
|
|
69
|
-
--ds-amber-400:
|
|
70
|
-
--ds-amber-500:
|
|
71
|
-
--ds-amber-600:
|
|
72
|
-
--ds-amber-700:
|
|
73
|
-
--ds-amber-
|
|
78
|
+
--ds-amber-100: oklch(97.48% 0.0331 85.79);
|
|
79
|
+
--ds-amber-200: oklch(96.81% 0.0495 90.24);
|
|
80
|
+
--ds-amber-300: oklch(95.93% 0.0636 90.52);
|
|
81
|
+
--ds-amber-400: oklch(91.02% 0.1322 88.25);
|
|
82
|
+
--ds-amber-500: oklch(86.55% 0.1583 79.63);
|
|
83
|
+
--ds-amber-600: oklch(80.25% 0.1953 73.59);
|
|
84
|
+
--ds-amber-700: oklch(81.87% 0.1969 76.46);
|
|
85
|
+
--ds-amber-800: oklch(77.21% 0.1991 64.28);
|
|
86
|
+
--ds-amber-900: oklch(52.79% 0.1496 54.65);
|
|
87
|
+
--ds-amber-1000: oklch(30.83% 0.099 45.48);
|
|
74
88
|
|
|
75
89
|
/* Green */
|
|
76
|
-
--ds-green-100:
|
|
77
|
-
--ds-green-200:
|
|
78
|
-
--ds-green-300:
|
|
79
|
-
--ds-green-400:
|
|
80
|
-
--ds-green-500:
|
|
81
|
-
--ds-green-600:
|
|
82
|
-
--ds-green-700:
|
|
83
|
-
--ds-green-
|
|
90
|
+
--ds-green-100: oklch(97.59% 0.0289 145.42);
|
|
91
|
+
--ds-green-200: oklch(96.92% 0.037 147.15);
|
|
92
|
+
--ds-green-300: oklch(94.6% 0.0674 144.23);
|
|
93
|
+
--ds-green-400: oklch(91.49% 0.0976 146.24);
|
|
94
|
+
--ds-green-500: oklch(85.45% 0.1627 146.3);
|
|
95
|
+
--ds-green-600: oklch(80.25% 0.214 145.18);
|
|
96
|
+
--ds-green-700: oklch(64.58% 0.1746 147.27);
|
|
97
|
+
--ds-green-800: oklch(57.81% 0.1507 147.5);
|
|
98
|
+
--ds-green-900: oklch(51.75% 0.1453 147.65);
|
|
99
|
+
--ds-green-1000: oklch(29.15% 0.1197 147.38);
|
|
84
100
|
|
|
85
101
|
/* Teal */
|
|
86
|
-
--ds-teal-
|
|
87
|
-
--ds-teal-
|
|
88
|
-
--ds-teal-
|
|
89
|
-
--ds-teal-
|
|
102
|
+
--ds-teal-100: oklch(97.72% 0.0359 186.7);
|
|
103
|
+
--ds-teal-200: oklch(97.06% 0.0347 180.66);
|
|
104
|
+
--ds-teal-300: oklch(94.92% 0.0478 182.07);
|
|
105
|
+
--ds-teal-400: oklch(92.76% 0.0718 183.78);
|
|
106
|
+
--ds-teal-500: oklch(86.88% 0.1344 182.42);
|
|
107
|
+
--ds-teal-600: oklch(81.5% 0.161 178.96);
|
|
108
|
+
--ds-teal-700: oklch(64.92% 0.1572 181.95);
|
|
109
|
+
--ds-teal-800: oklch(57.53% 0.1392 181.66);
|
|
110
|
+
--ds-teal-900: oklch(52.08% 0.1251 182.93);
|
|
111
|
+
--ds-teal-1000: oklch(32.11% 0.0788 179.82);
|
|
90
112
|
|
|
91
113
|
/* Purple */
|
|
92
|
-
--ds-purple-100:
|
|
93
|
-
--ds-purple-200:
|
|
94
|
-
--ds-purple-300:
|
|
95
|
-
--ds-purple-400:
|
|
96
|
-
--ds-purple-500:
|
|
97
|
-
--ds-purple-600:
|
|
98
|
-
--ds-purple-700:
|
|
99
|
-
--ds-purple-
|
|
114
|
+
--ds-purple-100: oklch(96.65% 0.0244 312.19);
|
|
115
|
+
--ds-purple-200: oklch(96.73% 0.0228 309.8);
|
|
116
|
+
--ds-purple-300: oklch(94.85% 0.0364 310.15);
|
|
117
|
+
--ds-purple-400: oklch(91.77% 0.0614 312.82);
|
|
118
|
+
--ds-purple-500: oklch(81.26% 0.1409 310.8);
|
|
119
|
+
--ds-purple-600: oklch(72.07% 0.2083 308.19);
|
|
120
|
+
--ds-purple-700: oklch(55.5% 0.3008 306.12);
|
|
121
|
+
--ds-purple-800: oklch(48.58% 0.2638 305.73);
|
|
122
|
+
--ds-purple-900: oklch(47.18% 0.2579 304);
|
|
123
|
+
--ds-purple-1000: oklch(23.96% 0.13 305.66);
|
|
100
124
|
|
|
101
125
|
/* Pink */
|
|
102
|
-
--ds-pink-
|
|
103
|
-
--ds-pink-
|
|
104
|
-
--ds-pink-
|
|
105
|
-
--ds-pink-
|
|
126
|
+
--ds-pink-100: oklch(95.69% 0.0359 344.62);
|
|
127
|
+
--ds-pink-200: oklch(95.71% 0.0321 353.14);
|
|
128
|
+
--ds-pink-300: oklch(93.83% 0.0451 356.29);
|
|
129
|
+
--ds-pink-400: oklch(91.12% 0.0573 358.82);
|
|
130
|
+
--ds-pink-500: oklch(84.28% 0.0915 356.99);
|
|
131
|
+
--ds-pink-600: oklch(74.33% 0.1547 0.24);
|
|
132
|
+
--ds-pink-700: oklch(63.52% 0.238 1.01);
|
|
133
|
+
--ds-pink-800: oklch(59.51% 0.2339 4.21);
|
|
134
|
+
--ds-pink-900: oklch(53.5% 0.2058 2.84);
|
|
135
|
+
--ds-pink-1000: oklch(26% 0.0977 359);
|
|
106
136
|
|
|
107
137
|
/* Shadows */
|
|
108
138
|
--ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.04);
|
|
@@ -115,82 +145,109 @@
|
|
|
115
145
|
.dark-theme,
|
|
116
146
|
.dark,
|
|
117
147
|
[data-theme="dark"] {
|
|
118
|
-
--ds-background-100:
|
|
119
|
-
--ds-background-200:
|
|
120
|
-
|
|
121
|
-
--ds-gray-100:
|
|
122
|
-
--ds-gray-200:
|
|
123
|
-
--ds-gray-300:
|
|
124
|
-
--ds-gray-400:
|
|
125
|
-
--ds-gray-500:
|
|
126
|
-
--ds-gray-600:
|
|
127
|
-
--ds-gray-700:
|
|
128
|
-
--ds-gray-800:
|
|
129
|
-
--ds-gray-900:
|
|
130
|
-
--ds-gray-1000:
|
|
131
|
-
|
|
132
|
-
--ds-gray-alpha-100:
|
|
133
|
-
--ds-gray-alpha-200:
|
|
134
|
-
--ds-gray-alpha-
|
|
135
|
-
--ds-gray-alpha-
|
|
136
|
-
--ds-gray-alpha-
|
|
148
|
+
--ds-background-100: oklch(0 0 0);
|
|
149
|
+
--ds-background-200: oklch(0.027 0 0);
|
|
150
|
+
|
|
151
|
+
--ds-gray-100: oklch(0.218 0 0);
|
|
152
|
+
--ds-gray-200: oklch(0.239 0 0);
|
|
153
|
+
--ds-gray-300: oklch(0.281 0 0);
|
|
154
|
+
--ds-gray-400: oklch(0.301 0 0);
|
|
155
|
+
--ds-gray-500: oklch(0.39 0 0);
|
|
156
|
+
--ds-gray-600: oklch(0.623 0 0);
|
|
157
|
+
--ds-gray-700: oklch(0.65 0 0);
|
|
158
|
+
--ds-gray-800: oklch(0.59 0 0);
|
|
159
|
+
--ds-gray-900: oklch(0.706 0 0);
|
|
160
|
+
--ds-gray-1000: oklch(0.946 0 0);
|
|
161
|
+
|
|
162
|
+
--ds-gray-alpha-100: oklch(1 0 0 / 0.07);
|
|
163
|
+
--ds-gray-alpha-200: oklch(1 0 0 / 0.09);
|
|
164
|
+
--ds-gray-alpha-300: oklch(1 0 0 / 0.13);
|
|
165
|
+
--ds-gray-alpha-400: oklch(1 0 0 / 0.14);
|
|
166
|
+
--ds-gray-alpha-500: oklch(1 0 0 / 0.24);
|
|
167
|
+
--ds-gray-alpha-600: oklch(1 0 0 / 0.51);
|
|
168
|
+
--ds-gray-alpha-700: oklch(1 0 0 / 0.54);
|
|
169
|
+
--ds-gray-alpha-800: oklch(1 0 0 / 0.47);
|
|
170
|
+
--ds-gray-alpha-900: oklch(1 0 0 / 0.61);
|
|
171
|
+
--ds-gray-alpha-1000: oklch(1 0 0 / 0.92);
|
|
137
172
|
|
|
138
173
|
--ds-focus-color: var(--ds-blue-900);
|
|
139
174
|
|
|
140
|
-
--ds-blue-100:
|
|
141
|
-
--ds-blue-200:
|
|
142
|
-
--ds-blue-300:
|
|
143
|
-
--ds-blue-400:
|
|
144
|
-
--ds-blue-500:
|
|
145
|
-
--ds-blue-600:
|
|
146
|
-
--ds-blue-700:
|
|
147
|
-
--ds-blue-
|
|
148
|
-
|
|
149
|
-
--ds-
|
|
150
|
-
|
|
151
|
-
--ds-red-
|
|
152
|
-
--ds-red-
|
|
153
|
-
--ds-red-
|
|
154
|
-
--ds-red-
|
|
155
|
-
--ds-red-
|
|
156
|
-
--ds-red-
|
|
157
|
-
|
|
158
|
-
--ds-
|
|
159
|
-
--ds-
|
|
160
|
-
--ds-
|
|
161
|
-
|
|
162
|
-
--ds-amber-
|
|
163
|
-
--ds-amber-
|
|
164
|
-
--ds-amber-
|
|
165
|
-
--ds-amber-
|
|
166
|
-
|
|
167
|
-
--ds-
|
|
168
|
-
--ds-
|
|
169
|
-
--ds-
|
|
170
|
-
--ds-
|
|
171
|
-
--ds-
|
|
172
|
-
|
|
173
|
-
--ds-green-
|
|
174
|
-
--ds-green-
|
|
175
|
-
|
|
176
|
-
--ds-
|
|
177
|
-
--ds-
|
|
178
|
-
--ds-
|
|
179
|
-
--ds-
|
|
180
|
-
|
|
181
|
-
--ds-
|
|
182
|
-
--ds-
|
|
183
|
-
|
|
184
|
-
--ds-
|
|
185
|
-
--ds-
|
|
186
|
-
--ds-
|
|
187
|
-
--ds-
|
|
188
|
-
--ds-
|
|
189
|
-
|
|
190
|
-
--ds-
|
|
191
|
-
--ds-
|
|
192
|
-
--ds-
|
|
193
|
-
--ds-
|
|
175
|
+
--ds-blue-100: oklch(22.17% 0.069 259.89);
|
|
176
|
+
--ds-blue-200: oklch(25.45% 0.0811 255.8);
|
|
177
|
+
--ds-blue-300: oklch(30.86% 0.1022 255.21);
|
|
178
|
+
--ds-blue-400: oklch(34.1% 0.121 254.74);
|
|
179
|
+
--ds-blue-500: oklch(38.5% 0.1403 254.4);
|
|
180
|
+
--ds-blue-600: oklch(64.94% 0.1982 251.81);
|
|
181
|
+
--ds-blue-700: oklch(57.61% 0.2321 258.23);
|
|
182
|
+
--ds-blue-800: oklch(51.51% 0.2307 257.85);
|
|
183
|
+
--ds-blue-900: oklch(71.7% 0.1648 250.79);
|
|
184
|
+
--ds-blue-1000: oklch(96.75% 0.0179 242.42);
|
|
185
|
+
|
|
186
|
+
--ds-red-100: oklch(22.1% 0.0657 15.11);
|
|
187
|
+
--ds-red-200: oklch(25.93% 0.0834 19.02);
|
|
188
|
+
--ds-red-300: oklch(31.47% 0.1105 20.96);
|
|
189
|
+
--ds-red-400: oklch(35.27% 0.1273 21.23);
|
|
190
|
+
--ds-red-500: oklch(40.68% 0.1479 23.16);
|
|
191
|
+
--ds-red-600: oklch(62.56% 0.2277 23.03);
|
|
192
|
+
--ds-red-700: oklch(62.56% 0.2234 23.03);
|
|
193
|
+
--ds-red-800: oklch(58.01% 0.227 25.12);
|
|
194
|
+
--ds-red-900: oklch(69.96% 0.2136 22.03);
|
|
195
|
+
--ds-red-1000: oklch(95.6% 0.0293 6.61);
|
|
196
|
+
|
|
197
|
+
--ds-amber-100: oklch(22.46% 0.0538 76.04);
|
|
198
|
+
--ds-amber-200: oklch(24.95% 0.0642 64.78);
|
|
199
|
+
--ds-amber-300: oklch(32.34% 0.0837 63.83);
|
|
200
|
+
--ds-amber-400: oklch(35.53% 0.0903 66.3);
|
|
201
|
+
--ds-amber-500: oklch(41.55% 0.1044 67.98);
|
|
202
|
+
--ds-amber-600: oklch(75.04% 0.1737 74.49);
|
|
203
|
+
--ds-amber-700: oklch(81.87% 0.1969 76.46);
|
|
204
|
+
--ds-amber-800: oklch(77.21% 0.1991 64.28);
|
|
205
|
+
--ds-amber-900: oklch(77.21% 0.1991 64.28);
|
|
206
|
+
--ds-amber-1000: oklch(96.7% 0.0418 84.59);
|
|
207
|
+
|
|
208
|
+
--ds-green-100: oklch(23.09% 0.0716 149.68);
|
|
209
|
+
--ds-green-200: oklch(27.12% 0.0895 150.09);
|
|
210
|
+
--ds-green-300: oklch(29.84% 0.096 149.25);
|
|
211
|
+
--ds-green-400: oklch(34.39% 0.1039 147.78);
|
|
212
|
+
--ds-green-500: oklch(44.19% 0.1484 147.2);
|
|
213
|
+
--ds-green-600: oklch(58.11% 0.1815 146.55);
|
|
214
|
+
--ds-green-700: oklch(64.58% 0.199 147.27);
|
|
215
|
+
--ds-green-800: oklch(57.81% 0.1776 147.5);
|
|
216
|
+
--ds-green-900: oklch(73.1% 0.2158 148.29);
|
|
217
|
+
--ds-green-1000: oklch(96.76% 0.056 154.18);
|
|
218
|
+
|
|
219
|
+
--ds-teal-100: oklch(22.1% 0.0544 178.74);
|
|
220
|
+
--ds-teal-200: oklch(25.06% 0.062 178.76);
|
|
221
|
+
--ds-teal-300: oklch(31.5% 0.0767 180.99);
|
|
222
|
+
--ds-teal-400: oklch(32.43% 0.0763 180.13);
|
|
223
|
+
--ds-teal-500: oklch(43.35% 0.1055 180.97);
|
|
224
|
+
--ds-teal-600: oklch(60.71% 0.1485 180.24);
|
|
225
|
+
--ds-teal-700: oklch(64.92% 0.1403 181.95);
|
|
226
|
+
--ds-teal-800: oklch(57.53% 0.1392 181.66);
|
|
227
|
+
--ds-teal-900: oklch(74.56% 0.1765 182.8);
|
|
228
|
+
--ds-teal-1000: oklch(96.46% 0.056 180.29);
|
|
229
|
+
|
|
230
|
+
--ds-purple-100: oklch(22.34% 0.0779 316.87);
|
|
231
|
+
--ds-purple-200: oklch(25.91% 0.0921 314.41);
|
|
232
|
+
--ds-purple-300: oklch(31.98% 0.1219 312.41);
|
|
233
|
+
--ds-purple-400: oklch(35.93% 0.1504 309.78);
|
|
234
|
+
--ds-purple-500: oklch(40.99% 0.1721 307.92);
|
|
235
|
+
--ds-purple-600: oklch(55.5% 0.2191 306.12);
|
|
236
|
+
--ds-purple-700: oklch(55.5% 0.2186 306.12);
|
|
237
|
+
--ds-purple-800: oklch(48.58% 0.2102 305.73);
|
|
238
|
+
--ds-purple-900: oklch(69.87% 0.2037 309.51);
|
|
239
|
+
--ds-purple-1000: oklch(96.1% 0.0304 316.46);
|
|
240
|
+
|
|
241
|
+
--ds-pink-100: oklch(22.67% 0.0628 354.73);
|
|
242
|
+
--ds-pink-200: oklch(26.2% 0.0859 356.68);
|
|
243
|
+
--ds-pink-300: oklch(31.15% 0.1067 355.93);
|
|
244
|
+
--ds-pink-400: oklch(32.13% 0.1174 356.71);
|
|
245
|
+
--ds-pink-500: oklch(37.01% 0.1453 358.39);
|
|
246
|
+
--ds-pink-600: oklch(50.33% 0.2089 4.33);
|
|
247
|
+
--ds-pink-700: oklch(63.52% 0.2346 1.01);
|
|
248
|
+
--ds-pink-800: oklch(59.51% 0.2429 4.21);
|
|
249
|
+
--ds-pink-900: oklch(69.36% 0.2223 3.91);
|
|
250
|
+
--ds-pink-1000: oklch(95.74% 0.0326 350.08);
|
|
194
251
|
|
|
195
252
|
--ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.3);
|
|
196
253
|
--ds-shadow-tooltip:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/web-shared",
|
|
3
3
|
"description": "Shared components for Workflow Observability UI",
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.40",
|
|
5
5
|
"private": false,
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
"streamdown": "2.3.0",
|
|
56
56
|
"tailwind-merge": "3.5.0",
|
|
57
57
|
"tailwindcss": "4",
|
|
58
|
-
"@workflow/core": "5.0.0-beta.
|
|
58
|
+
"@workflow/core": "5.0.0-beta.40",
|
|
59
59
|
"@workflow/utils": "5.0.0-beta.8",
|
|
60
|
-
"@workflow/world": "5.0.0-beta.
|
|
60
|
+
"@workflow/world": "5.0.0-beta.25"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@biomejs/biome": "^2.4.4",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"ai": "6.0.116",
|
|
68
68
|
"typescript": "^6.0.3",
|
|
69
69
|
"vitest": "^4.1.10",
|
|
70
|
-
"@workflow/errors": "5.0.0-beta.
|
|
70
|
+
"@workflow/errors": "5.0.0-beta.16",
|
|
71
71
|
"@workflow/tsconfig": "5.0.0-beta.0"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
@@ -263,6 +263,7 @@ const attributeOrder: AttributeKey[] = [
|
|
|
263
263
|
'runId',
|
|
264
264
|
'attempt',
|
|
265
265
|
'token',
|
|
266
|
+
'tokenRetentionUntil',
|
|
266
267
|
'isWebhook',
|
|
267
268
|
'isSystem',
|
|
268
269
|
'receivedCount',
|
|
@@ -322,6 +323,7 @@ const attributeDisplayNames: Partial<Record<AttributeKey, string>> = {
|
|
|
322
323
|
eventId: 'Event ID',
|
|
323
324
|
runId: 'Run ID',
|
|
324
325
|
token: 'Token',
|
|
326
|
+
tokenRetentionUntil: 'Minimum Retention Until',
|
|
325
327
|
eventType: 'Event Type',
|
|
326
328
|
errorCode: 'Error Code',
|
|
327
329
|
correlationId: 'Correlation ID',
|
|
@@ -441,6 +443,7 @@ const attributeToDisplayFn: Record<
|
|
|
441
443
|
attempt: (value: unknown) => String(value),
|
|
442
444
|
// Hook details
|
|
443
445
|
token: (value: unknown) => String(value),
|
|
446
|
+
tokenRetentionUntil: timestampWithTooltipOrNull,
|
|
444
447
|
isWebhook: (value: unknown) => String(value),
|
|
445
448
|
isSystem: (value: unknown) => String(value),
|
|
446
449
|
receivedCount: (value: unknown) => String(value),
|
package/src/styles.css
CHANGED
|
@@ -16,93 +16,123 @@
|
|
|
16
16
|
@custom-variant light-theme (&:where(.light-theme, .light-theme *, .light, .light *));
|
|
17
17
|
|
|
18
18
|
:root {
|
|
19
|
+
--ds-black: oklch(0 0 0);
|
|
20
|
+
--ds-white: oklch(1 0 0);
|
|
21
|
+
|
|
19
22
|
/* Background */
|
|
20
|
-
--ds-background-100:
|
|
21
|
-
--ds-background-200:
|
|
23
|
+
--ds-background-100: oklch(1 0 0);
|
|
24
|
+
--ds-background-200: oklch(0.984 0 0);
|
|
22
25
|
|
|
23
26
|
/* Gray */
|
|
24
|
-
--ds-gray-100:
|
|
25
|
-
--ds-gray-200:
|
|
26
|
-
--ds-gray-300:
|
|
27
|
-
--ds-gray-400:
|
|
28
|
-
--ds-gray-500:
|
|
29
|
-
--ds-gray-600:
|
|
30
|
-
--ds-gray-700:
|
|
31
|
-
--ds-gray-800:
|
|
32
|
-
--ds-gray-900:
|
|
33
|
-
--ds-gray-1000:
|
|
27
|
+
--ds-gray-100: oklch(0.961 0 0);
|
|
28
|
+
--ds-gray-200: oklch(0.94 0 0);
|
|
29
|
+
--ds-gray-300: oklch(0.925 0 0);
|
|
30
|
+
--ds-gray-400: oklch(0.937 0 0);
|
|
31
|
+
--ds-gray-500: oklch(0.836 0 0);
|
|
32
|
+
--ds-gray-600: oklch(0.732 0 0);
|
|
33
|
+
--ds-gray-700: oklch(0.65 0 0);
|
|
34
|
+
--ds-gray-800: oklch(0.59 0 0);
|
|
35
|
+
--ds-gray-900: oklch(0.42 0 0);
|
|
36
|
+
--ds-gray-1000: oklch(0.205 0 0);
|
|
34
37
|
|
|
35
38
|
/* Gray Alpha */
|
|
36
|
-
--ds-gray-alpha-100:
|
|
37
|
-
--ds-gray-alpha-200:
|
|
38
|
-
--ds-gray-alpha-
|
|
39
|
-
--ds-gray-alpha-
|
|
40
|
-
--ds-gray-alpha-
|
|
39
|
+
--ds-gray-alpha-100: oklch(0 0 0 / 0.05);
|
|
40
|
+
--ds-gray-alpha-200: oklch(0 0 0 / 0.081);
|
|
41
|
+
--ds-gray-alpha-300: oklch(0 0 0 / 0.1);
|
|
42
|
+
--ds-gray-alpha-400: oklch(0 0 0 / 0.08);
|
|
43
|
+
--ds-gray-alpha-500: oklch(0 0 0 / 0.21);
|
|
44
|
+
--ds-gray-alpha-600: oklch(0 0 0 / 0.24);
|
|
45
|
+
--ds-gray-alpha-700: oklch(0 0 0 / 0.44);
|
|
46
|
+
--ds-gray-alpha-800: oklch(0 0 0 / 0.51);
|
|
47
|
+
--ds-gray-alpha-900: oklch(0 0 0 / 0.7);
|
|
48
|
+
--ds-gray-alpha-1000: oklch(0 0 0 / 0.91);
|
|
41
49
|
|
|
42
50
|
/* Focus */
|
|
43
51
|
--ds-focus-color: var(--ds-blue-700);
|
|
44
52
|
|
|
45
53
|
/* Blue */
|
|
46
|
-
--ds-blue-100:
|
|
47
|
-
--ds-blue-200:
|
|
48
|
-
--ds-blue-300:
|
|
49
|
-
--ds-blue-400:
|
|
50
|
-
--ds-blue-500:
|
|
51
|
-
--ds-blue-600:
|
|
52
|
-
--ds-blue-700:
|
|
53
|
-
--ds-blue-
|
|
54
|
+
--ds-blue-100: oklch(97.32% 0.0141 251.56);
|
|
55
|
+
--ds-blue-200: oklch(96.29% 0.0195 250.59);
|
|
56
|
+
--ds-blue-300: oklch(94.58% 0.0293 249.85);
|
|
57
|
+
--ds-blue-400: oklch(91.58% 0.0473 245.12);
|
|
58
|
+
--ds-blue-500: oklch(82.75% 0.0979 248.48);
|
|
59
|
+
--ds-blue-600: oklch(73.08% 0.1583 248.13);
|
|
60
|
+
--ds-blue-700: oklch(57.61% 0.2508 258.23);
|
|
61
|
+
--ds-blue-800: oklch(51.51% 0.2399 257.85);
|
|
62
|
+
--ds-blue-900: oklch(53.18% 0.2399 256.99);
|
|
63
|
+
--ds-blue-1000: oklch(26.67% 0.1099 254.34);
|
|
54
64
|
|
|
55
65
|
/* Red */
|
|
56
|
-
--ds-red-100:
|
|
57
|
-
--ds-red-200:
|
|
58
|
-
--ds-red-300:
|
|
59
|
-
--ds-red-400:
|
|
60
|
-
--ds-red-500:
|
|
61
|
-
--ds-red-600:
|
|
62
|
-
--ds-red-700:
|
|
63
|
-
--ds-red-
|
|
66
|
+
--ds-red-100: oklch(96.5% 0.0223 13.09);
|
|
67
|
+
--ds-red-200: oklch(95.41% 0.0299 14.25);
|
|
68
|
+
--ds-red-300: oklch(94.33% 0.0369 15.01);
|
|
69
|
+
--ds-red-400: oklch(91.51% 0.0471 19.8);
|
|
70
|
+
--ds-red-500: oklch(84.47% 0.1018 17.71);
|
|
71
|
+
--ds-red-600: oklch(71.12% 0.1881 21.22);
|
|
72
|
+
--ds-red-700: oklch(62.56% 0.2524 23.03);
|
|
73
|
+
--ds-red-800: oklch(58.19% 0.2482 25.15);
|
|
74
|
+
--ds-red-900: oklch(54.99% 0.232 25.29);
|
|
75
|
+
--ds-red-1000: oklch(24.8% 0.1041 18.86);
|
|
64
76
|
|
|
65
77
|
/* Amber */
|
|
66
|
-
--ds-amber-100:
|
|
67
|
-
--ds-amber-200:
|
|
68
|
-
--ds-amber-300:
|
|
69
|
-
--ds-amber-400:
|
|
70
|
-
--ds-amber-500:
|
|
71
|
-
--ds-amber-600:
|
|
72
|
-
--ds-amber-700:
|
|
73
|
-
--ds-amber-
|
|
78
|
+
--ds-amber-100: oklch(97.48% 0.0331 85.79);
|
|
79
|
+
--ds-amber-200: oklch(96.81% 0.0495 90.24);
|
|
80
|
+
--ds-amber-300: oklch(95.93% 0.0636 90.52);
|
|
81
|
+
--ds-amber-400: oklch(91.02% 0.1322 88.25);
|
|
82
|
+
--ds-amber-500: oklch(86.55% 0.1583 79.63);
|
|
83
|
+
--ds-amber-600: oklch(80.25% 0.1953 73.59);
|
|
84
|
+
--ds-amber-700: oklch(81.87% 0.1969 76.46);
|
|
85
|
+
--ds-amber-800: oklch(77.21% 0.1991 64.28);
|
|
86
|
+
--ds-amber-900: oklch(52.79% 0.1496 54.65);
|
|
87
|
+
--ds-amber-1000: oklch(30.83% 0.099 45.48);
|
|
74
88
|
|
|
75
89
|
/* Green */
|
|
76
|
-
--ds-green-100:
|
|
77
|
-
--ds-green-200:
|
|
78
|
-
--ds-green-300:
|
|
79
|
-
--ds-green-400:
|
|
80
|
-
--ds-green-500:
|
|
81
|
-
--ds-green-600:
|
|
82
|
-
--ds-green-700:
|
|
83
|
-
--ds-green-
|
|
90
|
+
--ds-green-100: oklch(97.59% 0.0289 145.42);
|
|
91
|
+
--ds-green-200: oklch(96.92% 0.037 147.15);
|
|
92
|
+
--ds-green-300: oklch(94.6% 0.0674 144.23);
|
|
93
|
+
--ds-green-400: oklch(91.49% 0.0976 146.24);
|
|
94
|
+
--ds-green-500: oklch(85.45% 0.1627 146.3);
|
|
95
|
+
--ds-green-600: oklch(80.25% 0.214 145.18);
|
|
96
|
+
--ds-green-700: oklch(64.58% 0.1746 147.27);
|
|
97
|
+
--ds-green-800: oklch(57.81% 0.1507 147.5);
|
|
98
|
+
--ds-green-900: oklch(51.75% 0.1453 147.65);
|
|
99
|
+
--ds-green-1000: oklch(29.15% 0.1197 147.38);
|
|
84
100
|
|
|
85
101
|
/* Teal */
|
|
86
|
-
--ds-teal-
|
|
87
|
-
--ds-teal-
|
|
88
|
-
--ds-teal-
|
|
89
|
-
--ds-teal-
|
|
102
|
+
--ds-teal-100: oklch(97.72% 0.0359 186.7);
|
|
103
|
+
--ds-teal-200: oklch(97.06% 0.0347 180.66);
|
|
104
|
+
--ds-teal-300: oklch(94.92% 0.0478 182.07);
|
|
105
|
+
--ds-teal-400: oklch(92.76% 0.0718 183.78);
|
|
106
|
+
--ds-teal-500: oklch(86.88% 0.1344 182.42);
|
|
107
|
+
--ds-teal-600: oklch(81.5% 0.161 178.96);
|
|
108
|
+
--ds-teal-700: oklch(64.92% 0.1572 181.95);
|
|
109
|
+
--ds-teal-800: oklch(57.53% 0.1392 181.66);
|
|
110
|
+
--ds-teal-900: oklch(52.08% 0.1251 182.93);
|
|
111
|
+
--ds-teal-1000: oklch(32.11% 0.0788 179.82);
|
|
90
112
|
|
|
91
113
|
/* Purple */
|
|
92
|
-
--ds-purple-100:
|
|
93
|
-
--ds-purple-200:
|
|
94
|
-
--ds-purple-300:
|
|
95
|
-
--ds-purple-400:
|
|
96
|
-
--ds-purple-500:
|
|
97
|
-
--ds-purple-600:
|
|
98
|
-
--ds-purple-700:
|
|
99
|
-
--ds-purple-
|
|
114
|
+
--ds-purple-100: oklch(96.65% 0.0244 312.19);
|
|
115
|
+
--ds-purple-200: oklch(96.73% 0.0228 309.8);
|
|
116
|
+
--ds-purple-300: oklch(94.85% 0.0364 310.15);
|
|
117
|
+
--ds-purple-400: oklch(91.77% 0.0614 312.82);
|
|
118
|
+
--ds-purple-500: oklch(81.26% 0.1409 310.8);
|
|
119
|
+
--ds-purple-600: oklch(72.07% 0.2083 308.19);
|
|
120
|
+
--ds-purple-700: oklch(55.5% 0.3008 306.12);
|
|
121
|
+
--ds-purple-800: oklch(48.58% 0.2638 305.73);
|
|
122
|
+
--ds-purple-900: oklch(47.18% 0.2579 304);
|
|
123
|
+
--ds-purple-1000: oklch(23.96% 0.13 305.66);
|
|
100
124
|
|
|
101
125
|
/* Pink */
|
|
102
|
-
--ds-pink-
|
|
103
|
-
--ds-pink-
|
|
104
|
-
--ds-pink-
|
|
105
|
-
--ds-pink-
|
|
126
|
+
--ds-pink-100: oklch(95.69% 0.0359 344.62);
|
|
127
|
+
--ds-pink-200: oklch(95.71% 0.0321 353.14);
|
|
128
|
+
--ds-pink-300: oklch(93.83% 0.0451 356.29);
|
|
129
|
+
--ds-pink-400: oklch(91.12% 0.0573 358.82);
|
|
130
|
+
--ds-pink-500: oklch(84.28% 0.0915 356.99);
|
|
131
|
+
--ds-pink-600: oklch(74.33% 0.1547 0.24);
|
|
132
|
+
--ds-pink-700: oklch(63.52% 0.238 1.01);
|
|
133
|
+
--ds-pink-800: oklch(59.51% 0.2339 4.21);
|
|
134
|
+
--ds-pink-900: oklch(53.5% 0.2058 2.84);
|
|
135
|
+
--ds-pink-1000: oklch(26% 0.0977 359);
|
|
106
136
|
|
|
107
137
|
/* Shadows */
|
|
108
138
|
--ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.04);
|
|
@@ -115,82 +145,109 @@
|
|
|
115
145
|
.dark-theme,
|
|
116
146
|
.dark,
|
|
117
147
|
[data-theme="dark"] {
|
|
118
|
-
--ds-background-100:
|
|
119
|
-
--ds-background-200:
|
|
120
|
-
|
|
121
|
-
--ds-gray-100:
|
|
122
|
-
--ds-gray-200:
|
|
123
|
-
--ds-gray-300:
|
|
124
|
-
--ds-gray-400:
|
|
125
|
-
--ds-gray-500:
|
|
126
|
-
--ds-gray-600:
|
|
127
|
-
--ds-gray-700:
|
|
128
|
-
--ds-gray-800:
|
|
129
|
-
--ds-gray-900:
|
|
130
|
-
--ds-gray-1000:
|
|
131
|
-
|
|
132
|
-
--ds-gray-alpha-100:
|
|
133
|
-
--ds-gray-alpha-200:
|
|
134
|
-
--ds-gray-alpha-
|
|
135
|
-
--ds-gray-alpha-
|
|
136
|
-
--ds-gray-alpha-
|
|
148
|
+
--ds-background-100: oklch(0 0 0);
|
|
149
|
+
--ds-background-200: oklch(0.027 0 0);
|
|
150
|
+
|
|
151
|
+
--ds-gray-100: oklch(0.218 0 0);
|
|
152
|
+
--ds-gray-200: oklch(0.239 0 0);
|
|
153
|
+
--ds-gray-300: oklch(0.281 0 0);
|
|
154
|
+
--ds-gray-400: oklch(0.301 0 0);
|
|
155
|
+
--ds-gray-500: oklch(0.39 0 0);
|
|
156
|
+
--ds-gray-600: oklch(0.623 0 0);
|
|
157
|
+
--ds-gray-700: oklch(0.65 0 0);
|
|
158
|
+
--ds-gray-800: oklch(0.59 0 0);
|
|
159
|
+
--ds-gray-900: oklch(0.706 0 0);
|
|
160
|
+
--ds-gray-1000: oklch(0.946 0 0);
|
|
161
|
+
|
|
162
|
+
--ds-gray-alpha-100: oklch(1 0 0 / 0.07);
|
|
163
|
+
--ds-gray-alpha-200: oklch(1 0 0 / 0.09);
|
|
164
|
+
--ds-gray-alpha-300: oklch(1 0 0 / 0.13);
|
|
165
|
+
--ds-gray-alpha-400: oklch(1 0 0 / 0.14);
|
|
166
|
+
--ds-gray-alpha-500: oklch(1 0 0 / 0.24);
|
|
167
|
+
--ds-gray-alpha-600: oklch(1 0 0 / 0.51);
|
|
168
|
+
--ds-gray-alpha-700: oklch(1 0 0 / 0.54);
|
|
169
|
+
--ds-gray-alpha-800: oklch(1 0 0 / 0.47);
|
|
170
|
+
--ds-gray-alpha-900: oklch(1 0 0 / 0.61);
|
|
171
|
+
--ds-gray-alpha-1000: oklch(1 0 0 / 0.92);
|
|
137
172
|
|
|
138
173
|
--ds-focus-color: var(--ds-blue-900);
|
|
139
174
|
|
|
140
|
-
--ds-blue-100:
|
|
141
|
-
--ds-blue-200:
|
|
142
|
-
--ds-blue-300:
|
|
143
|
-
--ds-blue-400:
|
|
144
|
-
--ds-blue-500:
|
|
145
|
-
--ds-blue-600:
|
|
146
|
-
--ds-blue-700:
|
|
147
|
-
--ds-blue-
|
|
148
|
-
|
|
149
|
-
--ds-
|
|
150
|
-
|
|
151
|
-
--ds-red-
|
|
152
|
-
--ds-red-
|
|
153
|
-
--ds-red-
|
|
154
|
-
--ds-red-
|
|
155
|
-
--ds-red-
|
|
156
|
-
--ds-red-
|
|
157
|
-
|
|
158
|
-
--ds-
|
|
159
|
-
--ds-
|
|
160
|
-
--ds-
|
|
161
|
-
|
|
162
|
-
--ds-amber-
|
|
163
|
-
--ds-amber-
|
|
164
|
-
--ds-amber-
|
|
165
|
-
--ds-amber-
|
|
166
|
-
|
|
167
|
-
--ds-
|
|
168
|
-
--ds-
|
|
169
|
-
--ds-
|
|
170
|
-
--ds-
|
|
171
|
-
--ds-
|
|
172
|
-
|
|
173
|
-
--ds-green-
|
|
174
|
-
--ds-green-
|
|
175
|
-
|
|
176
|
-
--ds-
|
|
177
|
-
--ds-
|
|
178
|
-
--ds-
|
|
179
|
-
--ds-
|
|
180
|
-
|
|
181
|
-
--ds-
|
|
182
|
-
--ds-
|
|
183
|
-
|
|
184
|
-
--ds-
|
|
185
|
-
--ds-
|
|
186
|
-
--ds-
|
|
187
|
-
--ds-
|
|
188
|
-
--ds-
|
|
189
|
-
|
|
190
|
-
--ds-
|
|
191
|
-
--ds-
|
|
192
|
-
--ds-
|
|
193
|
-
--ds-
|
|
175
|
+
--ds-blue-100: oklch(22.17% 0.069 259.89);
|
|
176
|
+
--ds-blue-200: oklch(25.45% 0.0811 255.8);
|
|
177
|
+
--ds-blue-300: oklch(30.86% 0.1022 255.21);
|
|
178
|
+
--ds-blue-400: oklch(34.1% 0.121 254.74);
|
|
179
|
+
--ds-blue-500: oklch(38.5% 0.1403 254.4);
|
|
180
|
+
--ds-blue-600: oklch(64.94% 0.1982 251.81);
|
|
181
|
+
--ds-blue-700: oklch(57.61% 0.2321 258.23);
|
|
182
|
+
--ds-blue-800: oklch(51.51% 0.2307 257.85);
|
|
183
|
+
--ds-blue-900: oklch(71.7% 0.1648 250.79);
|
|
184
|
+
--ds-blue-1000: oklch(96.75% 0.0179 242.42);
|
|
185
|
+
|
|
186
|
+
--ds-red-100: oklch(22.1% 0.0657 15.11);
|
|
187
|
+
--ds-red-200: oklch(25.93% 0.0834 19.02);
|
|
188
|
+
--ds-red-300: oklch(31.47% 0.1105 20.96);
|
|
189
|
+
--ds-red-400: oklch(35.27% 0.1273 21.23);
|
|
190
|
+
--ds-red-500: oklch(40.68% 0.1479 23.16);
|
|
191
|
+
--ds-red-600: oklch(62.56% 0.2277 23.03);
|
|
192
|
+
--ds-red-700: oklch(62.56% 0.2234 23.03);
|
|
193
|
+
--ds-red-800: oklch(58.01% 0.227 25.12);
|
|
194
|
+
--ds-red-900: oklch(69.96% 0.2136 22.03);
|
|
195
|
+
--ds-red-1000: oklch(95.6% 0.0293 6.61);
|
|
196
|
+
|
|
197
|
+
--ds-amber-100: oklch(22.46% 0.0538 76.04);
|
|
198
|
+
--ds-amber-200: oklch(24.95% 0.0642 64.78);
|
|
199
|
+
--ds-amber-300: oklch(32.34% 0.0837 63.83);
|
|
200
|
+
--ds-amber-400: oklch(35.53% 0.0903 66.3);
|
|
201
|
+
--ds-amber-500: oklch(41.55% 0.1044 67.98);
|
|
202
|
+
--ds-amber-600: oklch(75.04% 0.1737 74.49);
|
|
203
|
+
--ds-amber-700: oklch(81.87% 0.1969 76.46);
|
|
204
|
+
--ds-amber-800: oklch(77.21% 0.1991 64.28);
|
|
205
|
+
--ds-amber-900: oklch(77.21% 0.1991 64.28);
|
|
206
|
+
--ds-amber-1000: oklch(96.7% 0.0418 84.59);
|
|
207
|
+
|
|
208
|
+
--ds-green-100: oklch(23.09% 0.0716 149.68);
|
|
209
|
+
--ds-green-200: oklch(27.12% 0.0895 150.09);
|
|
210
|
+
--ds-green-300: oklch(29.84% 0.096 149.25);
|
|
211
|
+
--ds-green-400: oklch(34.39% 0.1039 147.78);
|
|
212
|
+
--ds-green-500: oklch(44.19% 0.1484 147.2);
|
|
213
|
+
--ds-green-600: oklch(58.11% 0.1815 146.55);
|
|
214
|
+
--ds-green-700: oklch(64.58% 0.199 147.27);
|
|
215
|
+
--ds-green-800: oklch(57.81% 0.1776 147.5);
|
|
216
|
+
--ds-green-900: oklch(73.1% 0.2158 148.29);
|
|
217
|
+
--ds-green-1000: oklch(96.76% 0.056 154.18);
|
|
218
|
+
|
|
219
|
+
--ds-teal-100: oklch(22.1% 0.0544 178.74);
|
|
220
|
+
--ds-teal-200: oklch(25.06% 0.062 178.76);
|
|
221
|
+
--ds-teal-300: oklch(31.5% 0.0767 180.99);
|
|
222
|
+
--ds-teal-400: oklch(32.43% 0.0763 180.13);
|
|
223
|
+
--ds-teal-500: oklch(43.35% 0.1055 180.97);
|
|
224
|
+
--ds-teal-600: oklch(60.71% 0.1485 180.24);
|
|
225
|
+
--ds-teal-700: oklch(64.92% 0.1403 181.95);
|
|
226
|
+
--ds-teal-800: oklch(57.53% 0.1392 181.66);
|
|
227
|
+
--ds-teal-900: oklch(74.56% 0.1765 182.8);
|
|
228
|
+
--ds-teal-1000: oklch(96.46% 0.056 180.29);
|
|
229
|
+
|
|
230
|
+
--ds-purple-100: oklch(22.34% 0.0779 316.87);
|
|
231
|
+
--ds-purple-200: oklch(25.91% 0.0921 314.41);
|
|
232
|
+
--ds-purple-300: oklch(31.98% 0.1219 312.41);
|
|
233
|
+
--ds-purple-400: oklch(35.93% 0.1504 309.78);
|
|
234
|
+
--ds-purple-500: oklch(40.99% 0.1721 307.92);
|
|
235
|
+
--ds-purple-600: oklch(55.5% 0.2191 306.12);
|
|
236
|
+
--ds-purple-700: oklch(55.5% 0.2186 306.12);
|
|
237
|
+
--ds-purple-800: oklch(48.58% 0.2102 305.73);
|
|
238
|
+
--ds-purple-900: oklch(69.87% 0.2037 309.51);
|
|
239
|
+
--ds-purple-1000: oklch(96.1% 0.0304 316.46);
|
|
240
|
+
|
|
241
|
+
--ds-pink-100: oklch(22.67% 0.0628 354.73);
|
|
242
|
+
--ds-pink-200: oklch(26.2% 0.0859 356.68);
|
|
243
|
+
--ds-pink-300: oklch(31.15% 0.1067 355.93);
|
|
244
|
+
--ds-pink-400: oklch(32.13% 0.1174 356.71);
|
|
245
|
+
--ds-pink-500: oklch(37.01% 0.1453 358.39);
|
|
246
|
+
--ds-pink-600: oklch(50.33% 0.2089 4.33);
|
|
247
|
+
--ds-pink-700: oklch(63.52% 0.2346 1.01);
|
|
248
|
+
--ds-pink-800: oklch(59.51% 0.2429 4.21);
|
|
249
|
+
--ds-pink-900: oklch(69.36% 0.2223 3.91);
|
|
250
|
+
--ds-pink-1000: oklch(95.74% 0.0326 350.08);
|
|
194
251
|
|
|
195
252
|
--ds-shadow-small: 0px 1px 2px rgba(0, 0, 0, 0.3);
|
|
196
253
|
--ds-shadow-tooltip:
|