@workflow/web-shared 5.0.0-beta.13 → 5.0.0-beta.15

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.
Files changed (38) hide show
  1. package/dist/components/new-trace-viewer/components/event-list.js +3 -3
  2. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
  3. package/dist/components/new-trace-viewer/components/timeline.js +26 -14
  4. package/dist/components/new-trace-viewer/components/timeline.module.css +31 -0
  5. package/dist/components/new-trace-viewer/utils.d.ts +1 -1
  6. package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
  7. package/dist/components/new-trace-viewer/utils.js +12 -5
  8. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  9. package/dist/components/sidebar/attribute-panel.js +8 -4
  10. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  11. package/dist/components/sidebar/entity-detail-panel.js +12 -11
  12. package/dist/components/sidebar/events-list.d.ts +3 -1
  13. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  14. package/dist/components/sidebar/events-list.js +4 -3
  15. package/dist/components/sidebar/span-detail-merge.d.ts +16 -0
  16. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
  17. package/dist/components/sidebar/span-detail-merge.js +53 -0
  18. package/dist/components/trace-viewer/util/timing.d.ts +2 -2
  19. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  20. package/dist/components/trace-viewer/util/timing.js +3 -3
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -2
  24. package/dist/lib/utils.d.ts +11 -0
  25. package/dist/lib/utils.d.ts.map +1 -1
  26. package/dist/lib/utils.js +49 -1
  27. package/package.json +4 -4
  28. package/src/components/new-trace-viewer/components/event-list.tsx +2 -2
  29. package/src/components/new-trace-viewer/components/timeline.module.css +31 -0
  30. package/src/components/new-trace-viewer/components/timeline.tsx +60 -12
  31. package/src/components/new-trace-viewer/utils.ts +12 -4
  32. package/src/components/sidebar/attribute-panel.tsx +7 -3
  33. package/src/components/sidebar/entity-detail-panel.tsx +28 -13
  34. package/src/components/sidebar/events-list.tsx +34 -25
  35. package/src/components/sidebar/span-detail-merge.ts +65 -0
  36. package/src/components/trace-viewer/util/timing.ts +2 -2
  37. package/src/index.ts +1 -0
  38. package/src/lib/utils.ts +57 -0
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AA6VA,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,MAQrD,CAAC;AAoBF,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmPD,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,mDAyEA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,uHAW5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,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,4CAyNA,CAAC"}
1
+ {"version":3,"file":"attribute-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/attribute-panel.tsx"],"names":[],"mappings":"AA+VA,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,MAQrD,CAAC;AAoBF,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAqPD,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,mDAyEA,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,uHAW5B;IACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,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,4CAyNA,CAAC"}
@@ -135,6 +135,7 @@ const attributeOrder = [
135
135
  'eventData',
136
136
  'input',
137
137
  'output',
138
+ 'attributes',
138
139
  'resumeAt',
139
140
  ];
140
141
  const sortByAttributeOrder = (a, b) => {
@@ -156,6 +157,7 @@ const attributeDisplayNames = {
156
157
  runId: 'Run ID',
157
158
  token: 'Token',
158
159
  eventType: 'Event Type',
160
+ errorCode: 'Error Code',
159
161
  correlationId: 'Correlation ID',
160
162
  deploymentId: 'Deployment ID',
161
163
  specVersion: 'Spec Version',
@@ -265,12 +267,12 @@ const attributeToDisplayFn = {
265
267
  environment: (_value) => null,
266
268
  executionContext: (_value) => null,
267
269
  // Attributes MVP — string-string metadata attached to the run.
268
- // Rendered as a JSON block; if empty/missing, hidden by the
269
- // hasDisplayContent gate above.
270
+ // Rendered in its own collapsible DetailCard; if empty/missing, hidden
271
+ // by the hasDisplayContent gate.
270
272
  attributes: (value) => {
271
273
  if (!hasDisplayContent(value))
272
274
  return null;
273
- return JsonBlock(value);
275
+ return _jsx(DetailCard, { summary: "Attributes", children: JsonBlock(value) });
274
276
  },
275
277
  // Dates — wrapped with TimestampTooltip showing UTC/local + relative time
276
278
  createdAt: timestampWithTooltipOrNull,
@@ -371,6 +373,7 @@ const resolvableAttributes = [
371
373
  'output',
372
374
  'error',
373
375
  'metadata',
376
+ 'attributes',
374
377
  'eventData',
375
378
  ];
376
379
  // Attributes whose displayFn renders its own section header via DetailCard,
@@ -379,6 +382,7 @@ const selfHeaderedAttributes = new Set([
379
382
  'input',
380
383
  'output',
381
384
  'error',
385
+ 'attributes',
382
386
  'eventData',
383
387
  ]);
384
388
  const ExpiredDataMessage = () => (_jsx("div", { className: "text-copy-12 rounded-md border p-4 my-2", style: {
@@ -535,4 +539,4 @@ export const AttributePanel = ({ data, moduleSpecifier, isLoading, error, expire
535
539
  }, title: displayValue, children: [_jsx(MiddleTruncate, { value: displayValue, className: "flex-1" }), _jsx(CopyButton, { copyText: displayValue, ariaLabel: `Copy ${getAttributeDisplayName(attribute)}`, className: "shrink-0 -mr-1" })] })) : (_jsx("span", { className: "text-right text-label-13 font-mono", children: displayValue }))] }, attribute));
536
540
  }), isLoading && resource === 'sleep' && !displayData.resumeAt && (_jsx("div", { className: "py-1", children: _jsxs("div", { className: "flex min-h-[32px] items-center justify-between gap-4 rounded-sm px-2.5 py-1", children: [_jsx("span", { className: "text-[14px] first-letter:uppercase", style: { color: 'var(--ds-gray-700)' }, children: "resumeAt" }), _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 ? (_jsx(_Fragment, { children: resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute], context: displayContext }, attribute))) })) : null] }) }) }));
537
541
  };
538
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci9hdHRyaWJ1dGUtcGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxV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QyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDckMsS0FBQyxjQUFjLElBQ2IsU0FBUyxFQUFFLFNBQVMsRUFFcEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxTQUFxQyxDQUFDLEVBQ3pELE9BQU8sRUFBRSxjQUFjLElBSGxCLFNBQVMsQ0FJZCxDQUNILENBQUMsR0FDRCxDQUNKLENBQUMsQ0FBQyxDQUFDLElBQUksSUFDcUIsR0FDSCxHQUNMLENBQzVCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHBhcnNlU3RlcE5hbWUsIHBhcnNlV29ya2Zsb3dOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHR5cGUgeyBFdmVudCwgSG9vaywgU3RlcCwgV29ya2Zsb3dSdW4gfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHR5cGUgeyBNb2RlbE1lc3NhZ2UgfSBmcm9tICdhaSc7XG5pbXBvcnQgdHlwZSB7IEtleWJvYXJkRXZlbnQsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRW5jcnlwdGVkTWFya2VyLCBpc0V4cGlyZWRNYXJrZXIgfSBmcm9tICcuLi8uLi9saWIvaHlkcmF0aW9uJztcbmltcG9ydCB7IHVzZVRvYXN0IH0gZnJvbSAnLi4vLi4vbGliL3RvYXN0JztcbmltcG9ydCB7IGV4dHJhY3RDb252ZXJzYXRpb24sIGlzRG9TdHJlYW1TdGVwIH0gZnJvbSAnLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IENvcHlCdXR0b24gfSBmcm9tICcuLi9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvY29weS1idXR0b24nO1xuaW1wb3J0IHsgTWlkZGxlVHJ1bmNhdGUgfSBmcm9tICcuLi9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvbWlkZGxlLXRydW5jYXRlL21pZGRsZS10cnVuY2F0ZSc7XG5pbXBvcnQge1xuICBEZWNyeXB0Q2xpY2tDb250ZXh0LFxuICBSdW5DbGlja0NvbnRleHQsXG4gIFN0cmVhbUNsaWNrQ29udGV4dCxcbn0gZnJvbSAnLi4vdWkvZGF0YS1pbnNwZWN0b3InO1xuaW1wb3J0IHsgRXJyb3JDYXJkIH0gZnJvbSAnLi4vdWkvZXJyb3ItY2FyZCc7XG5pbXBvcnQgeyBFcnJvclN0YWNrQmxvY2ssIGlzU3RydWN0dXJlZEVycm9yIH0gZnJvbSAnLi4vdWkvZXJyb3Itc3RhY2stYmxvY2snO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi91aS9za2VsZXRvbic7XG5pbXBvcnQgeyBUaW1lc3RhbXBUb29sdGlwIH0gZnJvbSAnLi4vdWkvdGltZXN0YW1wLXRvb2x0aXAnO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uVmlldyB9IGZyb20gJy4vY29udmVyc2F0aW9uLXZpZXcnO1xuaW1wb3J0IHsgQ29weWFibGVEYXRhQmxvY2ssIEVuY3J5cHRlZERhdGFCbG9jayB9IGZyb20gJy4vY29weWFibGUtZGF0YS1ibG9jayc7XG5pbXBvcnQgeyBEZXRhaWxDYXJkIH0gZnJvbSAnLi9kZXRhaWwtY2FyZCc7XG5cbi8qKlxuICogVGFiIGJ1dHRvbiBmb3IgY29udmVyc2F0aW9uL0pTT04gdG9nZ2xlXG4gKi9cbmZ1bmN0aW9uIFRhYkJ1dHRvbih7XG4gIGFjdGl2ZSxcbiAgb25DbGljayxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgYXJpYS1zZWxlY3RlZD17YWN0aXZlfVxuICAgICAgdGFiSW5kZXg9e2FjdGl2ZSA/IDAgOiAtMX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBjbGFzc05hbWU9XCJweC0zIHB5LTEuNSB0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAtbWItcHhcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLy8gRXhwbGljaXQgc3R5bGVzIHRvIHByZXZlbnQgYXBwLWxldmVsIGJ1dHRvbiBvdmVycmlkZXMgd2hlbiB3ZWItc2hhcmVkXG4gICAgICAgIC8vIGlzIGVtYmVkZGVkIGluIGEgc2VsZi1ob3N0ZWQgYXBwLlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGJvcmRlclRvcDogJ25vbmUnLFxuICAgICAgICBib3JkZXJMZWZ0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlclJpZ2h0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlckJvdHRvbTogYDJweCBzb2xpZCAke2FjdGl2ZSA/ICd2YXIoLS1kcy1ibHVlLTYwMCknIDogJ3RyYW5zcGFyZW50J31gLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICBjb2xvcjogYWN0aXZlID8gJ3ZhcigtLWRzLWdyYXktMTAwMCknIDogJ3ZhcigtLWRzLWdyYXktNjAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuLyoqXG4gKiBTaGFyZWQgdGFiYmVkIGNvbnRhaW5lciB3aXRoIGFjY2Vzc2libGUgQVJJQSByb2xlcyBhbmQga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAqIFVzZWQgYnkgQ29udmVyc2F0aW9uV2l0aFRhYnMgZm9yIHRoZSBjb252ZXJzYXRpb24vSlNPTiB0b2dnbGUuXG4gKi9cbmZ1bmN0aW9uIFRhYmJlZENvbnRhaW5lcjxUIGV4dGVuZHMgc3RyaW5nPih7XG4gIHRhYnMsXG4gIGFjdGl2ZVRhYixcbiAgb25UYWJDaGFuZ2UsXG4gIGFyaWFMYWJlbCxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHRhYnM6IHsgaWQ6IFQ7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICBhY3RpdmVUYWI6IFQ7XG4gIG9uVGFiQ2hhbmdlOiAodGFiOiBUKSA9PiB2b2lkO1xuICBhcmlhTGFiZWw6IHN0cmluZztcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09ICdBcnJvd1JpZ2h0JyAmJiBldmVudC5rZXkgIT09ICdBcnJvd0xlZnQnKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFicy5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IGFjdGl2ZVRhYik7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgICBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0J1xuICAgICAgICAgID8gKGN1cnJlbnRJbmRleCArIDEpICUgdGFicy5sZW5ndGhcbiAgICAgICAgICA6IChjdXJyZW50SW5kZXggLSAxICsgdGFicy5sZW5ndGgpICUgdGFicy5sZW5ndGg7XG4gICAgICBvblRhYkNoYW5nZSh0YWJzW25leHRJbmRleF0uaWQpO1xuICAgIH0sXG4gICAgW3RhYnMsIGFjdGl2ZVRhYiwgb25UYWJDaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGdhcC0xIGJvcmRlci1iXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICAgIDxUYWJCdXR0b25cbiAgICAgICAgICAgIGtleT17dGFiLmlkfVxuICAgICAgICAgICAgYWN0aXZlPXthY3RpdmVUYWIgPT09IHRhYi5pZH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVGFiQ2hhbmdlKHRhYi5pZCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RhYi5sYWJlbH1cbiAgICAgICAgICA8L1RhYkJ1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiByb2xlPVwidGFicGFuZWxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IGNvbnZlcnNhdGlvblRhYnMgPSBbXG4gIHsgaWQ6ICdjb252ZXJzYXRpb24nIGFzIGNvbnN0LCBsYWJlbDogJ0NvbnZlcnNhdGlvbicgfSxcbiAgeyBpZDogJ2pzb24nIGFzIGNvbnN0LCBsYWJlbDogJ1JhdyBKU09OJyB9LFxuXTtcblxuLyoqXG4gKiBUYWJiZWQgdmlldyBmb3IgY29udmVyc2F0aW9uIGFuZCByYXcgSlNPTlxuICovXG5mdW5jdGlvbiBDb252ZXJzYXRpb25XaXRoVGFicyh7XG4gIGNvbnZlcnNhdGlvbixcbiAgYXJncyxcbn06IHtcbiAgY29udmVyc2F0aW9uOiBNb2RlbE1lc3NhZ2VbXTtcbiAgYXJnczogdW5rbm93bltdO1xufSkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGU8J2NvbnZlcnNhdGlvbicgfCAnanNvbic+KFxuICAgICdjb252ZXJzYXRpb24nXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiSW5wdXRcIj5cbiAgICAgIDxUYWJiZWRDb250YWluZXJcbiAgICAgICAgdGFicz17Y29udmVyc2F0aW9uVGFic31cbiAgICAgICAgYWN0aXZlVGFiPXthY3RpdmVUYWJ9XG4gICAgICAgIG9uVGFiQ2hhbmdlPXtzZXRBY3RpdmVUYWJ9XG4gICAgICAgIGFyaWFMYWJlbD1cIkNvbnZlcnNhdGlvbiB2aWV3XCJcbiAgICAgID5cbiAgICAgICAge2FjdGl2ZVRhYiA9PT0gJ2NvbnZlcnNhdGlvbicgPyAoXG4gICAgICAgICAgPENvbnZlcnNhdGlvblZpZXcgbWVzc2FnZXM9e2NvbnZlcnNhdGlvbn0gLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtM1wiPlxuICAgICAgICAgICAge0FycmF5LmlzQXJyYXkoYXJncylcbiAgICAgICAgICAgICAgPyBhcmdzLm1hcCgodiwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZpcnN0Om10LTBcIiBrZXk9e2l9PlxuICAgICAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKHYpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgOiBKc29uQmxvY2soYXJncyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L1RhYmJlZENvbnRhaW5lcj5cbiAgICA8L0RldGFpbENhcmQ+XG4gICk7XG59XG5cbi8qKlxuICogUmVuZGVyIGEgdmFsdWUgd2l0aCB0aGUgc2hhcmVkIERhdGFJbnNwZWN0b3IgKE9iamVjdEluc3BlY3RvciB3aXRoXG4gKiBjdXN0b20gdGhlbWluZywgbm9kZVJlbmRlcmVyIGZvciBTdHJlYW1SZWYvQ2xhc3NJbnN0YW5jZVJlZiwgZXRjLilcbiAqL1xuZnVuY3Rpb24gRW5jcnlwdGVkRmllbGRCbG9jaygpIHtcbiAgcmV0dXJuIDxFbmNyeXB0ZWREYXRhQmxvY2sgLz47XG59XG5cbi8qKlxuICogSW5saW5lIGRpc3BsYXkgZm9yIGFuIGV4cGlyZWQgZmllbGQg4oCUIGZsYXQgbGFiZWwgaW5kaWNhdGluZyBkYXRhIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuXG4gKi9cbmZ1bmN0aW9uIEV4cGlyZWRGaWVsZEJsb2NrKCkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0yIHRleHQteHNcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+RGF0YSBleHBpcmVkPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBKc29uQmxvY2sodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIDxDb3B5YWJsZURhdGFCbG9jayBkYXRhPXt2YWx1ZX0gLz47XG59XG5cbmNvbnN0IGhhc0Rpc3BsYXlDb250ZW50ID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDA7XG4gIHJldHVybiB0cnVlO1xufTtcblxudHlwZSBBdHRyaWJ1dGVLZXkgPVxuICB8IGtleW9mIFN0ZXBcbiAgfCBrZXlvZiBXb3JrZmxvd1J1blxuICB8IGtleW9mIEhvb2tcbiAgfCBrZXlvZiBFdmVudFxuICB8ICdtb2R1bGVTcGVjaWZpZXInXG4gIHwgJ2V2ZW50RGF0YSdcbiAgfCAncmVzdW1lQXQnXG4gIHwgJ2V4cGlyZWRBdCdcbiAgfCAnd29ya2Zsb3dDb3JlVmVyc2lvbidcbiAgfCAncmVjZWl2ZWRDb3VudCdcbiAgfCAnbGFzdFJlY2VpdmVkQXQnXG4gIHwgJ2Rpc3Bvc2VkQXQnXG4gIHwgJ2lzU3lzdGVtJ1xuICB8ICdlcnJvckNvZGUnO1xuXG5jb25zdCBhdHRyaWJ1dGVPcmRlcjogQXR0cmlidXRlS2V5W10gPSBbXG4gICd3b3JrZmxvd05hbWUnLFxuICAnbW9kdWxlU3BlY2lmaWVyJyxcbiAgJ3N0ZXBOYW1lJyxcbiAgJ3N0YXR1cycsXG4gICdzdGVwSWQnLFxuICAnaG9va0lkJyxcbiAgJ2V2ZW50SWQnLFxuICAncnVuSWQnLFxuICAnYXR0ZW1wdCcsXG4gICd0b2tlbicsXG4gICdyZWNlaXZlZENvdW50JyxcbiAgJ2xhc3RSZWNlaXZlZEF0JyxcbiAgJ2Rpc3Bvc2VkQXQnLFxuICAnY29ycmVsYXRpb25JZCcsXG4gICdldmVudFR5cGUnLFxuICAnZGVwbG95bWVudElkJyxcbiAgJ3NwZWNWZXJzaW9uJyxcbiAgJ3dvcmtmbG93Q29yZVZlcnNpb24nLFxuICAnb3duZXJJZCcsXG4gICdwcm9qZWN0SWQnLFxuICAnZW52aXJvbm1lbnQnLFxuICAnZXhlY3V0aW9uQ29udGV4dCcsXG4gICdjcmVhdGVkQXQnLFxuICAnc3RhcnRlZEF0JyxcbiAgJ3VwZGF0ZWRBdCcsXG4gICdjb21wbGV0ZWRBdCcsXG4gICdleHBpcmVkQXQnLFxuICAncmV0cnlBZnRlcicsXG4gICdlcnJvcicsXG4gICdtZXRhZGF0YScsXG4gICdldmVudERhdGEnLFxuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ3Jlc3VtZUF0Jyxcbl07XG5cbmNvbnN0IHNvcnRCeUF0dHJpYnV0ZU9yZGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgY29uc3QgYUluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihhIGFzIEF0dHJpYnV0ZUtleSkgfHwgMDtcbiAgY29uc3QgYkluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihiIGFzIEF0dHJpYnV0ZUtleSkgfHwgMDtcbiAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbn07XG5cbi8qKlxuICogRGlzcGxheSBuYW1lcyBmb3IgYXR0cmlidXRlcyB0aGF0IHNob3VsZCByZW5kZXIgZGlmZmVyZW50bHkgZnJvbSB0aGVpciBrZXkuXG4gKi9cbmNvbnN0IGF0dHJpYnV0ZURpc3BsYXlOYW1lczogUGFydGlhbDxSZWNvcmQ8QXR0cmlidXRlS2V5LCBzdHJpbmc+PiA9IHtcbiAgbW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlJyxcbiAgd29ya2Zsb3dOYW1lOiAnV29ya2Zsb3cgTmFtZScsXG4gIHN0ZXBOYW1lOiAnU3RlcCBOYW1lJyxcbiAgc3RlcElkOiAnU3RlcCBJRCcsXG4gIGhvb2tJZDogJ0hvb2sgSUQnLFxuICBhdHRlbXB0OiAnQXR0ZW1wdHMnLFxuICBldmVudElkOiAnRXZlbnQgSUQnLFxuICBydW5JZDogJ1J1biBJRCcsXG4gIHRva2VuOiAnVG9rZW4nLFxuICBldmVudFR5cGU6ICdFdmVudCBUeXBlJyxcbiAgY29ycmVsYXRpb25JZDogJ0NvcnJlbGF0aW9uIElEJyxcbiAgZGVwbG95bWVudElkOiAnRGVwbG95bWVudCBJRCcsXG4gIHNwZWNWZXJzaW9uOiAnU3BlYyBWZXJzaW9uJyxcbiAgd29ya2Zsb3dDb3JlVmVyc2lvbjogJ0B3b3JrZmxvdy9jb3JlIHZlcnNpb24nLFxuICBjcmVhdGVkQXQ6ICdDcmVhdGVkJyxcbiAgc3RhcnRlZEF0OiAnU3RhcnRlZCcsXG4gIHVwZGF0ZWRBdDogJ1VwZGF0ZWQnLFxuICBjb21wbGV0ZWRBdDogJ0NvbXBsZXRlZCcsXG4gIGV4cGlyZWRBdDogJ0V4cGlyZWQnLFxuICByZXRyeUFmdGVyOiAnUmV0cnkgQWZ0ZXInLFxuICByZXN1bWVBdDogJ1Jlc3VtZScsXG4gIGxhc3RSZWNlaXZlZEF0OiAnTGFzdCBSZWNlaXZlZCcsXG4gIGRpc3Bvc2VkQXQ6ICdEaXNwb3NlZCcsXG4gIHJlY2VpdmVkQ291bnQ6ICdUaW1lcyBSZXNvbHZlZCcsXG59O1xuXG4vKipcbiAqIEdldCB0aGUgZGlzcGxheSBuYW1lIGZvciBhbiBhdHRyaWJ1dGUga2V5LlxuICovXG5jb25zdCBnZXRBdHRyaWJ1dGVEaXNwbGF5TmFtZSA9IChhdHRyaWJ1dGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBhdHRyaWJ1dGVEaXNwbGF5TmFtZXNbYXR0cmlidXRlIGFzIEF0dHJpYnV0ZUtleV0gPz8gYXR0cmlidXRlO1xufTtcblxuY29uc3QgZ2V0TW9kdWxlU3BlY2lmaWVyRnJvbU5hbWUgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4ge1xuICBjb25zdCByYXcgPSBTdHJpbmcodmFsdWUpO1xuICBjb25zdCBwYXJzZWRTdGVwID0gcGFyc2VTdGVwTmFtZShyYXcpO1xuICBpZiAocGFyc2VkU3RlcCkge1xuICAgIHJldHVybiBwYXJzZWRTdGVwLm1vZHVsZVNwZWNpZmllcjtcbiAgfVxuICBjb25zdCBwYXJzZWRXb3JrZmxvdyA9IHBhcnNlV29ya2Zsb3dOYW1lKHJhdyk7XG4gIGlmIChwYXJzZWRXb3JrZmxvdykge1xuICAgIHJldHVybiBwYXJzZWRXb3JrZmxvdy5tb2R1bGVTcGVjaWZpZXI7XG4gIH1cbiAgcmV0dXJuIHJhdztcbn07XG5cbmNvbnN0IHBhcnNlRGF0ZVZhbHVlID0gKHZhbHVlOiB1bmtub3duKTogRGF0ZSB8IG51bGwgPT4ge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKHZhbHVlLmdldFRpbWUoKSkgPyBudWxsIDogdmFsdWU7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9XG4gICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IG5ldyBEYXRlKHZhbHVlKSA6IG5ldyBEYXRlKFN0cmluZyh2YWx1ZSkpO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGUuZ2V0VGltZSgpKSA/IG51bGwgOiBkYXRlO1xufTtcblxuY29uc3QgZm9ybWF0TG9jYWxNaWxsaXNlY29uZFRpbWUgPSAoZGF0ZTogRGF0ZSk6IHN0cmluZyA9PlxuICBkYXRlLnRvTG9jYWxlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgIHllYXI6ICdudW1lcmljJyxcbiAgICBtb250aDogJ251bWVyaWMnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgICBzZWNvbmQ6ICdudW1lcmljJyxcbiAgICBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiAzLFxuICB9KTtcblxuZXhwb3J0IGNvbnN0IGxvY2FsTWlsbGlzZWNvbmRUaW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuICctJztcbiAgfVxuXG4gIC8vIGUuZy4gMTIvMTcvMjAyNSwgOTowODo1NS4xODIgQU1cbiAgcmV0dXJuIGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpO1xufTtcblxuY29uc3QgbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpO1xufTtcblxuY29uc3QgdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBSZWFjdE5vZGUgfCBudWxsID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChcbiAgICA8VGltZXN0YW1wVG9vbHRpcCBkYXRlPXtkYXRlfT5cbiAgICAgIDxzcGFuPntmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKX08L3NwYW4+XG4gICAgPC9UaW1lc3RhbXBUb29sdGlwPlxuICApO1xufTtcblxuaW50ZXJmYWNlIERpc3BsYXlDb250ZXh0IHtcbiAgc3RlcE5hbWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGF0dHJpYnV0ZVRvRGlzcGxheUZuOiBSZWNvcmQ8XG4gIEF0dHJpYnV0ZUtleSxcbiAgKHZhbHVlOiB1bmtub3duLCBjb250ZXh0PzogRGlzcGxheUNvbnRleHQpID0+IG51bGwgfCBzdHJpbmcgfCBSZWFjdE5vZGVcbj4gPSB7XG4gIC8vIE5hbWVzIHRoYXQgbmVlZCBwcmV0dHktcHJpbnRpbmdcbiAgd29ya2Zsb3dOYW1lOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBtb2R1bGVTcGVjaWZpZXI6ICh2YWx1ZTogdW5rbm93bikgPT4gZ2V0TW9kdWxlU3BlY2lmaWVyRnJvbU5hbWUodmFsdWUpLFxuICBzdGVwTmFtZTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gSURzXG4gIHJ1bklkOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBzdGVwSWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaG9va0lkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGV2ZW50SWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gUnVuL3N0ZXAgZGV0YWlsc1xuICBzdGF0dXM6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGF0dGVtcHQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gSG9vayBkZXRhaWxzXG4gIHRva2VuOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGlzV2ViaG9vazogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBpc1N5c3RlbTogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICByZWNlaXZlZENvdW50OiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGxhc3RSZWNlaXZlZEF0OiBsb2NhbE1pbGxpc2Vjb25kVGltZU9yTnVsbCxcbiAgZGlzcG9zZWRBdDogbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwsXG4gIC8vIEV2ZW50IGRldGFpbHNcbiAgZXZlbnRUeXBlOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGNvcnJlbGF0aW9uSWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gUHJvamVjdCBkZXRhaWxzXG4gIGRlcGxveW1lbnRJZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBzcGVjVmVyc2lvbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICB3b3JrZmxvd0NvcmVWZXJzaW9uOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFRlbmFuY3kgKHdlIGRvbid0IHNob3cgdGhlc2UpXG4gIG93bmVySWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHByb2plY3RJZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgZW52aXJvbm1lbnQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGV4ZWN1dGlvbkNvbnRleHQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIC8vIEF0dHJpYnV0ZXMgTVZQIOKAlCBzdHJpbmctc3RyaW5nIG1ldGFkYXRhIGF0dGFjaGVkIHRvIHRoZSBydW4uXG4gIC8vIFJlbmRlcmVkIGFzIGEgSlNPTiBibG9jazsgaWYgZW1wdHkvbWlzc2luZywgaGlkZGVuIGJ5IHRoZVxuICAvLyBoYXNEaXNwbGF5Q29udGVudCBnYXRlIGFib3ZlLlxuICBhdHRyaWJ1dGVzOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIEpzb25CbG9jayh2YWx1ZSk7XG4gIH0sXG4gIC8vIERhdGVzIOKAlCB3cmFwcGVkIHdpdGggVGltZXN0YW1wVG9vbHRpcCBzaG93aW5nIFVUQy9sb2NhbCArIHJlbGF0aXZlIHRpbWVcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgc3RhcnRlZEF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgdXBkYXRlZEF0OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBjb21wbGV0ZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIGV4cGlyZWRBdDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgcmV0cnlBZnRlcjogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIHJlc3VtZUF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgLy8gUmVzb2x2ZWQgYXR0cmlidXRlcywgd29uJ3QgYWN0dWFsbHkgdXNlIHRoaXMgZnVuY3Rpb25cbiAgbWV0YWRhdGE6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEVuY3J5cHRlZERhdGFCbG9jayAvPjtcbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICByZXR1cm4gSnNvbkJsb2NrKHZhbHVlKTtcbiAgfSxcbiAgaW5wdXQ6ICh2YWx1ZTogdW5rbm93biwgY29udGV4dD86IERpc3BsYXlDb250ZXh0KSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0XCI+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgLy8gQ2hlY2sgaWYgaW5wdXQgaGFzIGFyZ3MgKyBjbG9zdXJlIHZhcnMgc3RydWN0dXJlXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2FyZ3MnIGluIHZhbHVlKSB7XG4gICAgICBjb25zdCB7IGFyZ3MsIGNsb3N1cmVWYXJzLCB0aGlzVmFsIH0gPSB2YWx1ZSBhcyB7XG4gICAgICAgIGFyZ3M6IHVua25vd25bXTtcbiAgICAgICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdGhpc1ZhbD86IHVua25vd247XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFzQ2xvc3VyZVZhcnMgPSBoYXNEaXNwbGF5Q29udGVudChjbG9zdXJlVmFycyk7XG4gICAgICBjb25zdCBoYXNUaGlzVmFsID0gaGFzRGlzcGxheUNvbnRlbnQodGhpc1ZhbCk7XG4gICAgICBjb25zdCBoYXNBcmdzID0gaGFzRGlzcGxheUNvbnRlbnQoYXJncyk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBkb1N0cmVhbVN0ZXAgLSBzaG93IGNvbnZlcnNhdGlvbiB2aWV3IHdpdGggdGFic1xuICAgICAgaWYgKGNvbnRleHQ/LnN0ZXBOYW1lICYmIGlzRG9TdHJlYW1TdGVwKGNvbnRleHQuc3RlcE5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGV4dHJhY3RDb252ZXJzYXRpb24oYXJncyk7XG4gICAgICAgIGlmIChjb252ZXJzYXRpb24gJiYgY29udmVyc2F0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPENvbnZlcnNhdGlvbldpdGhUYWJzIGNvbnZlcnNhdGlvbj17Y29udmVyc2F0aW9ufSBhcmdzPXthcmdzfSAvPlxuICAgICAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgICAgIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJDbG9zdXJlIFZhcmlhYmxlc1wiPlxuICAgICAgICAgICAgICAgICAge0pzb25CbG9jayhjbG9zdXJlVmFycyl9XG4gICAgICAgICAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aGFzVGhpc1ZhbCAmJiAoXG4gICAgICAgICAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIlRoaXMgVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodGhpc1ZhbCl9XG4gICAgICAgICAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBEb24ndCByZW5kZXIgYW4gZW1wdHkgXCJJbnB1dCAoMCBhcmd1bWVudHMpXCIgY2FyZCB3aGVuIG5vIGlucHV0IGV4aXN0cy5cbiAgICAgIGlmICghaGFzQXJncyAmJiAhaGFzQ2xvc3VyZVZhcnMgJiYgIWhhc1RoaXNWYWwpIHtcbiAgICAgICAgcmV0dXJuIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJJbnB1dCAobm8gZGF0YSlcIiBkaXNhYmxlZCAvPjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiSW5wdXRcIj5cbiAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGFyZ3MpXG4gICAgICAgICAgICAgID8gYXJncy5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogSnNvbkJsb2NrKGFyZ3MpfVxuICAgICAgICAgIDwvRGV0YWlsQ2FyZD5cbiAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkNsb3N1cmUgVmFyaWFibGVzXCI+XG4gICAgICAgICAgICAgIHtKc29uQmxvY2soY2xvc3VyZVZhcnMpfVxuICAgICAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2hhc1RoaXNWYWwgJiYgKFxuICAgICAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkNvbnRleHRcIj57SnNvbkJsb2NrKHRoaXNWYWwpfTwvRGV0YWlsQ2FyZD5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IHRyZWF0IGFzIHBsYWluIGFycmF5IG9yIG9iamVjdFxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0IChubyBkYXRhKVwiIGRpc2FibGVkIC8+O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0XCI+XG4gICAgICAgIHtBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gdmFsdWUubWFwKCh2LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKHYpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgOiBKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICk7XG4gIH0sXG4gIG91dHB1dDogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIk91dHB1dFwiPlxuICAgICAgICAgIDxFbmNyeXB0ZWRGaWVsZEJsb2NrIC8+XG4gICAgICAgIDwvRGV0YWlsQ2FyZD5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICByZXR1cm4gPERldGFpbENhcmQgc3VtbWFyeT1cIk91dHB1dFwiPntKc29uQmxvY2sodmFsdWUpfTwvRGV0YWlsQ2FyZD47XG4gIH0sXG4gIGVycm9yOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0RldGFpbENhcmQ+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgICAvLyBTdHJ1Y3R1cmVkIHdvcmtmbG93IGVycm9ycyBtYXkgYmUgcGVyc2lzdGVkIGFzIGVpdGhlciBgeyBtZXNzYWdlIH1gIG9yXG4gICAgLy8gYHsgbWVzc2FnZSwgc3RhY2sgfWAuIFJlbmRlciBib3RoIHdpdGggdGhlIGRlZGljYXRlZCBlcnJvciBibG9jay5cbiAgICBpZiAoaXNTdHJ1Y3R1cmVkRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RXJyb3JTdGFja0Jsb2NrIHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICk7XG4gIH0sXG4gIGV2ZW50RGF0YTogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkV2ZW50IERhdGFcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0RldGFpbENhcmQ+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJFdmVudCBEYXRhXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICk7XG4gIH0sXG4gIGVycm9yQ29kZTogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfSxcbn07XG5cbmNvbnN0IHJlc29sdmFibGVBdHRyaWJ1dGVzID0gW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2V2ZW50RGF0YScsXG5dO1xuXG4vLyBBdHRyaWJ1dGVzIHdob3NlIGRpc3BsYXlGbiByZW5kZXJzIGl0cyBvd24gc2VjdGlvbiBoZWFkZXIgdmlhIERldGFpbENhcmQsXG4vLyBzbyB0aGUgb3V0ZXIgQXR0cmlidXRlQmxvY2sgc2hvdWxkIG5vdCBkdXBsaWNhdGUgdGhlIGxhYmVsLlxuY29uc3Qgc2VsZkhlYWRlcmVkQXR0cmlidXRlcyA9IG5ldyBTZXQoW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ2V2ZW50RGF0YScsXG5dKTtcblxuY29uc3QgRXhwaXJlZERhdGFNZXNzYWdlID0gKCkgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPVwidGV4dC1jb3B5LTEyIHJvdW5kZWQtbWQgYm9yZGVyIHAtNCBteS0yXCJcbiAgICBzdHlsZT17e1xuICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICB9fVxuICA+XG4gICAgPHNwYW4+VGhlIGRhdGEgZm9yIHRoaXMgcnVuIGhhcyBleHBpcmVkIGFuZCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjwvc3Bhbj5cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBjb3B5YWJsZUJhc2ljQXR0cmlidXRlcyA9IG5ldyBTZXQ8QXR0cmlidXRlS2V5PihbXG4gICdzdGVwSWQnLFxuICAnaG9va0lkJyxcbiAgJ2V2ZW50SWQnLFxuICAnZGVwbG95bWVudElkJyxcbl0pO1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlQmxvY2sgPSAoe1xuICBhdHRyaWJ1dGUsXG4gIHZhbHVlLFxuICBpc0xvYWRpbmcsXG4gIGlubGluZSA9IGZhbHNlLFxuICBjb250ZXh0LFxufToge1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGlubGluZT86IGJvb2xlYW47XG4gIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dDtcbn0pID0+IHtcbiAgY29uc3QgZGVjcnlwdEN0eCA9IHVzZUNvbnRleHQoRGVjcnlwdENsaWNrQ29udGV4dCk7XG4gIGNvbnN0IGlzRXhwYW5kYWJsZUxvYWRpbmdUYXJnZXQgPVxuICAgIGF0dHJpYnV0ZSA9PT0gJ2lucHV0JyB8fFxuICAgIGF0dHJpYnV0ZSA9PT0gJ291dHB1dCcgfHxcbiAgICBhdHRyaWJ1dGUgPT09ICdldmVudERhdGEnO1xuICBpZiAoaXNMb2FkaW5nICYmIGlzRXhwYW5kYWJsZUxvYWRpbmdUYXJnZXQgJiYgIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkge1xuICAgIGNvbnN0IGxhYmVsID1cbiAgICAgIGF0dHJpYnV0ZSA9PT0gJ2V2ZW50RGF0YSdcbiAgICAgICAgPyAnRXZlbnQgRGF0YSdcbiAgICAgICAgOiBhdHRyaWJ1dGUgPT09ICdvdXRwdXQnXG4gICAgICAgICAgPyAnT3V0cHV0J1xuICAgICAgICAgIDogJ0lucHV0JztcbiAgICBpZiAoZGVjcnlwdEN0eD8uaGFzRW5jcnlwdGVkRGF0YSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT17bGFiZWx9IGRlZmF1bHRPcGVuPXthdHRyaWJ1dGUgPT09ICdldmVudERhdGEnfT5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0RldGFpbENhcmQ+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gPERldGFpbENhcmQgc3VtbWFyeT17bGFiZWx9IC8+O1xuICB9XG5cbiAgY29uc3QgZGlzcGxheUZuID1cbiAgICBhdHRyaWJ1dGVUb0Rpc3BsYXlGblthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXTtcbiAgaWYgKCFkaXNwbGF5Rm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5Rm4odmFsdWUsIGNvbnRleHQpO1xuICBpZiAoIWRpc3BsYXlWYWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlubGluZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XSBmb250LW1lZGl1bVwiXG4gICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTcwMCknIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YXR0cmlidXRlfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzExcHhdXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyB9fT5cbiAgICAgICAgICB7ZGlzcGxheVZhbHVlfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHNlbGZIZWFkZXJlZEF0dHJpYnV0ZXMuaGFzKGF0dHJpYnV0ZSkpIHtcbiAgICByZXR1cm4gPD57ZGlzcGxheVZhbHVlfTwvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAge3R5cGVvZiBpc0xvYWRpbmcgPT09ICdib29sZWFuJyAmJiBpc0xvYWRpbmcgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC05IHJpZ2h0LTRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW4gcm91bmRlZC1mdWxsIGgtNCB3LTQgYm9yZGVyLWItMlwiXG4gICAgICAgICAgICBzdHlsZT17eyBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktOTAwKScgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8ZGl2IGtleT17YXR0cmlidXRlfSBjbGFzc05hbWU9XCJteS0yIGZsZXggZmxleC1jb2wgZ2FwLTBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sYWJlbC0xNCB0ZXh0LWdyYXktMTAwMCBmb250LW1lZGl1bSBmaXJzdC1sZXR0ZXI6dXBwZXJjYXNlXCI+XG4gICAgICAgICAge2F0dHJpYnV0ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzXCIgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyB9fT5cbiAgICAgICAgICB7ZGlzcGxheVZhbHVlfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVQYW5lbCA9ICh7XG4gIGRhdGEsXG4gIG1vZHVsZVNwZWNpZmllcixcbiAgaXNMb2FkaW5nLFxuICBlcnJvcixcbiAgZXhwaXJlZEF0LFxuICBvblN0cmVhbUNsaWNrLFxuICBvblJ1bkNsaWNrLFxuICBvbkRlY3J5cHQsXG4gIGlzRGVjcnlwdGluZyA9IGZhbHNlLFxuICByZXNvdXJjZSxcbn06IHtcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1vZHVsZVNwZWNpZmllcj86IHN0cmluZztcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgZXJyb3I/OiBFcnJvcjtcbiAgZXhwaXJlZEF0Pzogc3RyaW5nIHwgRGF0ZTtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYSBzdHJlYW0gcmVmZXJlbmNlIGlzIGNsaWNrZWQgKi9cbiAgb25TdHJlYW1DbGljaz86IChzdHJlYW1JZDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBhIHJ1biByZWZlcmVuY2UgaXMgY2xpY2tlZCAqL1xuICBvblJ1bkNsaWNrPzogKHJ1bklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIC8qKiBDYWxsYmFjayB3aGVuIGFuIGVuY3J5cHRlZCBtYXJrZXIgaXMgY2xpY2tlZCAodHJpZ2dlcnMgZGVjcnlwdGlvbikgKi9cbiAgb25EZWNyeXB0PzogKCkgPT4gdm9pZDtcbiAgLyoqIFdoZXRoZXIgZGVjcnlwdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MgKi9cbiAgaXNEZWNyeXB0aW5nPzogYm9vbGVhbjtcbiAgLyoqIFJlc291cmNlIHR5cGUgb2YgdGhlIHNlbGVjdGVkIHNwYW4g4oCUIHVzZWQgdG8gc2hvdyB0YXJnZXRlZCBsb2FkaW5nIHNrZWxldG9ucy4gKi9cbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG59KSA9PiB7XG4gIGNvbnN0IHRvYXN0ID0gdXNlVG9hc3QoKTtcbiAgLy8gRXh0cmFjdCB3b3JrZmxvd0NvcmVWZXJzaW9uIGZyb20gZXhlY3V0aW9uQ29udGV4dCBmb3IgZGlzcGxheVxuICBjb25zdCBkaXNwbGF5RGF0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgLi4uZGF0YSB9O1xuICAgIGNvbnN0IGV4ZWNDdHggPSBkYXRhLmV4ZWN1dGlvbkNvbnRleHQgYXNcbiAgICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIGlmIChleGVjQ3R4Py53b3JrZmxvd0NvcmVWZXJzaW9uKSB7XG4gICAgICByZXN1bHQud29ya2Zsb3dDb3JlVmVyc2lvbiA9IGV4ZWNDdHgud29ya2Zsb3dDb3JlVmVyc2lvbjtcbiAgICB9XG4gICAgaWYgKG1vZHVsZVNwZWNpZmllcikge1xuICAgICAgcmVzdWx0Lm1vZHVsZVNwZWNpZmllciA9IG1vZHVsZVNwZWNpZmllcjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhLnN0ZXBOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0Lm1vZHVsZVNwZWNpZmllciA9IGRhdGEuc3RlcE5hbWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YS53b3JrZmxvd05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQubW9kdWxlU3BlY2lmaWVyID0gZGF0YS53b3JrZmxvd05hbWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtkYXRhLCBtb2R1bGVTcGVjaWZpZXJdKTtcbiAgY29uc3QgaGFzRXhwaXJlZCA9IGV4cGlyZWRBdCAhPSBudWxsICYmIG5ldyBEYXRlKGV4cGlyZWRBdCkgPCBuZXcgRGF0ZSgpO1xuICBjb25zdCBiYXNpY0F0dHJpYnV0ZXMgPSBPYmplY3Qua2V5cyhkaXNwbGF5RGF0YSlcbiAgICAuZmlsdGVyKChrZXkpID0+ICFyZXNvbHZhYmxlQXR0cmlidXRlcy5pbmNsdWRlcyhrZXkpKVxuICAgIC5zb3J0KHNvcnRCeUF0dHJpYnV0ZU9yZGVyKTtcbiAgY29uc3QgcmVzb2x2ZWRBdHRyaWJ1dGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcHJlc2VudCA9IE9iamVjdC5rZXlzKGRpc3BsYXlEYXRhKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiByZXNvbHZhYmxlQXR0cmlidXRlcy5pbmNsdWRlcyhrZXkpKVxuICAgICAgLnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuXG4gICAgaWYgKCFpc0xvYWRpbmcpIHJldHVybiBwcmVzZW50O1xuXG4gICAgaWYgKHJlc291cmNlID09PSAnc2xlZXAnKSByZXR1cm4gcHJlc2VudDtcblxuICAgIC8vIER1cmluZyBsb2FkaW5nLCBlbnN1cmUgc2VjdGlvbnMgYXBwZWFyIHNvIHRoZWlyIHNrZWxldG9ucyByZW5kZXJcbiAgICAvLyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbiAoYWJvdmUgdGhlIGV2ZW50cyBzZWN0aW9uKS5cbiAgICBjb25zdCBsb2FkaW5nRGVmYXVsdHMgPSBbJ2lucHV0JywgJ291dHB1dCddO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGxvYWRpbmdEZWZhdWx0cykge1xuICAgICAgaWYgKCFwcmVzZW50LmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcHJlc2VudC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVzZW50LnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuICB9LCBbZGlzcGxheURhdGEsIGlzTG9hZGluZywgcmVzb3VyY2VdKTtcblxuICAvLyBGaWx0ZXIgb3V0IGF0dHJpYnV0ZXMgdGhhdCByZXR1cm4gbnVsbFxuICBjb25zdCB2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzID0gYmFzaWNBdHRyaWJ1dGVzLmZpbHRlcigoYXR0cmlidXRlKSA9PiB7XG4gICAgY29uc3QgZGlzcGxheUZuID1cbiAgICAgIGF0dHJpYnV0ZVRvRGlzcGxheUZuW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgYXR0cmlidXRlVG9EaXNwbGF5Rm5dO1xuICAgIGlmICghZGlzcGxheUZuKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgZGlzcGxheVZhbHVlID0gZGlzcGxheUZuKFxuICAgICAgZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV1cbiAgICApO1xuICAgIHJldHVybiBkaXNwbGF5VmFsdWUgIT09IG51bGw7XG4gIH0pO1xuXG4gIC8vIEtlZXAgYG1vZHVsZVNwZWNpZmllcmAgaW1tZWRpYXRlbHkgYWZ0ZXIgYHdvcmtmbG93TmFtZWAgb3IgYHN0ZXBOYW1lYC5cbiAgY29uc3Qgb3JkZXJlZEJhc2ljQXR0cmlidXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbLi4udmlzaWJsZUJhc2ljQXR0cmlidXRlc107XG4gICAgY29uc3QgbW9kdWxlU3BlY2lmaWVySW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoJ21vZHVsZVNwZWNpZmllcicpO1xuICAgIGlmIChtb2R1bGVTcGVjaWZpZXJJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMuc3BsaWNlKG1vZHVsZVNwZWNpZmllckluZGV4LCAxKTtcbiAgICBjb25zdCB3b3JrZmxvd05hbWVJbmRleCA9IGF0dHJpYnV0ZXMuaW5kZXhPZignd29ya2Zsb3dOYW1lJyk7XG4gICAgaWYgKHdvcmtmbG93TmFtZUluZGV4ICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlcy5zcGxpY2Uod29ya2Zsb3dOYW1lSW5kZXggKyAxLCAwLCAnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwTmFtZUluZGV4ID0gYXR0cmlidXRlcy5pbmRleE9mKCdzdGVwTmFtZScpO1xuICAgIGlmIChzdGVwTmFtZUluZGV4ICE9PSAtMSkge1xuICAgICAgYXR0cmlidXRlcy5zcGxpY2Uoc3RlcE5hbWVJbmRleCArIDEsIDAsICdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGF0dHJpYnV0ZXMudW5zaGlmdCgnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gIH0sIFt2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzXSk7XG5cbiAgLy8gTWVtb2l6ZSBjb250ZXh0IG9iamVjdCB0byBhdm9pZCBvYmplY3QgcmVjb25zdHJ1Y3Rpb24gb24gcmVuZGVyXG4gIGNvbnN0IGRpc3BsYXlDb250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgc3RlcE5hbWU6IGRpc3BsYXlEYXRhLnN0ZXBOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB9KSxcbiAgICBbZGlzcGxheURhdGEuc3RlcE5hbWVdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNvcHlNb2R1bGVTcGVjaWZpZXIgPSB1c2VDYWxsYmFjaygodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmRcbiAgICAgIC53cml0ZVRleHQodmFsdWUpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ21vZHVsZVNwZWNpZmllciBjb3BpZWQnKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0b2FzdC5lcnJvcignRmFpbGVkIHRvIGNvcHkgbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgICB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG91dGVyRGVjcnlwdEN0eCA9IHVzZUNvbnRleHQoRGVjcnlwdENsaWNrQ29udGV4dCk7XG4gIGNvbnN0IGRlY3J5cHRWYWx1ZSA9IG9uRGVjcnlwdFxuICAgID8ge1xuICAgICAgICBvbkRlY3J5cHQsXG4gICAgICAgIGlzRGVjcnlwdGluZyxcbiAgICAgICAgaGFzRW5jcnlwdGVkRGF0YTogb3V0ZXJEZWNyeXB0Q3R4Py5oYXNFbmNyeXB0ZWREYXRhLFxuICAgICAgfVxuICAgIDogb3V0ZXJEZWNyeXB0Q3R4O1xuXG4gIHJldHVybiAoXG4gICAgPFJ1bkNsaWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17b25SdW5DbGlja30+XG4gICAgICA8U3RyZWFtQ2xpY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvblN0cmVhbUNsaWNrfT5cbiAgICAgICAgPERlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2RlY3J5cHRWYWx1ZX0+XG4gICAgICAgICAge3Zpc2libGVCYXNpY0F0dHJpYnV0ZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGRpdmlkZS15IGRpdmlkZS1ncmF5LWFscGhhLTQwMCBtYi0zXCI+XG4gICAgICAgICAgICAgIHtvcmRlcmVkQmFzaWNBdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gYXR0cmlidXRlVG9EaXNwbGF5Rm5bXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXG4gICAgICAgICAgICAgICAgXT8uKGRpc3BsYXlEYXRhW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheURhdGFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc01vZHVsZVNwZWNpZmllciA9IGF0dHJpYnV0ZSA9PT0gJ21vZHVsZVNwZWNpZmllcic7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDb3B5YWJsZUJhc2ljQXR0cmlidXRlID1cbiAgICAgICAgICAgICAgICAgIGNvcHlhYmxlQmFzaWNBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5KSAmJlxuICAgICAgICAgICAgICAgICAgdHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kdWxlU3BlY2lmaWVyVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgdHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBkaXNwbGF5VmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBTdHJpbmcoZGlzcGxheVZhbHVlID8/IGRpc3BsYXlEYXRhLm1vZHVsZVNwZWNpZmllciA/PyAnJyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktMlwiXG4gICAgICAgICAgICAgICAgICAgIGtleT17YXR0cmlidXRlfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTE0IHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0QXR0cmlidXRlRGlzcGxheU5hbWUoYXR0cmlidXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7aXNNb2R1bGVTcGVjaWZpZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtaW4tdy0wIG1heC13LVs3MCVdIHRydW5jYXRlIHRleHQtcmlnaHQgdGV4dC1sYWJlbC0xMyBmb250LW1vbm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e21vZHVsZVNwZWNpZmllclZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29weU1vZHVsZVNwZWNpZmllcihtb2R1bGVTcGVjaWZpZXJWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bW9kdWxlU3BlY2lmaWVyVmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkgOiBpc0NvcHlhYmxlQmFzaWNBdHRyaWJ1dGUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBtaW4tdy0wIG1heC13LVs3MCVdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBnYXAtMSB0ZXh0LXJpZ2h0IHRleHQtWzEzcHhdIGZvbnQtbW9ub1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwMCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1pZGRsZVRydW5jYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvcHlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVRleHQ9e2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtgQ29weSAke2dldEF0dHJpYnV0ZURpc3BsYXlOYW1lKGF0dHJpYnV0ZSl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2hyaW5rLTAgLW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJpZ2h0IHRleHQtbGFiZWwtMTMgZm9udC1tb25vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmIHJlc291cmNlID09PSAnc2xlZXAnICYmICFkaXNwbGF5RGF0YS5yZXN1bWVBdCAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJweS0xXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggbWluLWgtWzMycHhdIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQgcm91bmRlZC1zbSBweC0yLjUgcHktMVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtWzE0cHhdIGZpcnN0LWxldHRlcjp1cHBlcmNhc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgcmVzdW1lQXRcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC00IHctWzU1JV1cIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtlcnJvciA/IChcbiAgICAgICAgICAgIDxFcnJvckNhcmRcbiAgICAgICAgICAgICAgdGl0bGU9XCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZSBkZXRhaWxzXCJcbiAgICAgICAgICAgICAgZGV0YWlscz17ZXJyb3IubWVzc2FnZX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktNFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBoYXNFeHBpcmVkID8gKFxuICAgICAgICAgICAgPEV4cGlyZWREYXRhTWVzc2FnZSAvPlxuICAgICAgICAgICkgOiByZXNvbHZlZEF0dHJpYnV0ZXMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtyZXNvbHZlZEF0dHJpYnV0ZXMubWFwKChhdHRyaWJ1dGUpID0+IChcbiAgICAgICAgICAgICAgICA8QXR0cmlidXRlQmxvY2tcbiAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAga2V5PXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5RGF0YVthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGRpc3BsYXlEYXRhXX1cbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ9e2Rpc3BsYXlDb250ZXh0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvRGVjcnlwdENsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvU3RyZWFtQ2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUnVuQ2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcbiJdfQ==
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci9hdHRyaWJ1dGUtcGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGtCQUFrQixHQUNuQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxV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QixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNsQyw0QkFDRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQ3JDLEtBQUMsY0FBYyxJQUNiLFNBQVMsRUFBRSxTQUFTLEVBRXBCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLEtBQUssRUFBRSxXQUFXLENBQUMsU0FBcUMsQ0FBQyxFQUN6RCxPQUFPLEVBQUUsY0FBYyxJQUhsQixTQUFTLENBSWQsQ0FDSCxDQUFDLEdBQ0QsQ0FDSixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQ3FCLEdBQ0gsR0FDTCxDQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBwYXJzZVN0ZXBOYW1lLCBwYXJzZVdvcmtmbG93TmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB0eXBlIHsgRXZlbnQsIEhvb2ssIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgTW9kZWxNZXNzYWdlIH0gZnJvbSAnYWknO1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZEV2ZW50LCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0VuY3J5cHRlZE1hcmtlciwgaXNFeHBpcmVkTWFya2VyIH0gZnJvbSAnLi4vLi4vbGliL2h5ZHJhdGlvbic7XG5pbXBvcnQgeyB1c2VUb2FzdCB9IGZyb20gJy4uLy4uL2xpYi90b2FzdCc7XG5pbXBvcnQgeyBleHRyYWN0Q29udmVyc2F0aW9uLCBpc0RvU3RyZWFtU3RlcCB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBDb3B5QnV0dG9uIH0gZnJvbSAnLi4vbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL2NvcHktYnV0dG9uJztcbmltcG9ydCB7IE1pZGRsZVRydW5jYXRlIH0gZnJvbSAnLi4vbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL21pZGRsZS10cnVuY2F0ZS9taWRkbGUtdHJ1bmNhdGUnO1xuaW1wb3J0IHtcbiAgRGVjcnlwdENsaWNrQ29udGV4dCxcbiAgUnVuQ2xpY2tDb250ZXh0LFxuICBTdHJlYW1DbGlja0NvbnRleHQsXG59IGZyb20gJy4uL3VpL2RhdGEtaW5zcGVjdG9yJztcbmltcG9ydCB7IEVycm9yQ2FyZCB9IGZyb20gJy4uL3VpL2Vycm9yLWNhcmQnO1xuaW1wb3J0IHsgRXJyb3JTdGFja0Jsb2NrLCBpc1N0cnVjdHVyZWRFcnJvciB9IGZyb20gJy4uL3VpL2Vycm9yLXN0YWNrLWJsb2NrJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi4vdWkvc2tlbGV0b24nO1xuaW1wb3J0IHsgVGltZXN0YW1wVG9vbHRpcCB9IGZyb20gJy4uL3VpL3RpbWVzdGFtcC10b29sdGlwJztcbmltcG9ydCB7IENvbnZlcnNhdGlvblZpZXcgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi12aWV3JztcbmltcG9ydCB7IENvcHlhYmxlRGF0YUJsb2NrLCBFbmNyeXB0ZWREYXRhQmxvY2sgfSBmcm9tICcuL2NvcHlhYmxlLWRhdGEtYmxvY2snO1xuaW1wb3J0IHsgRGV0YWlsQ2FyZCB9IGZyb20gJy4vZGV0YWlsLWNhcmQnO1xuXG4vKipcbiAqIFRhYiBidXR0b24gZm9yIGNvbnZlcnNhdGlvbi9KU09OIHRvZ2dsZVxuICovXG5mdW5jdGlvbiBUYWJCdXR0b24oe1xuICBhY3RpdmUsXG4gIG9uQ2xpY2ssXG4gIGNoaWxkcmVuLFxufToge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59KSB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICByb2xlPVwidGFiXCJcbiAgICAgIGFyaWEtc2VsZWN0ZWQ9e2FjdGl2ZX1cbiAgICAgIHRhYkluZGV4PXthY3RpdmUgPyAwIDogLTF9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgY2xhc3NOYW1lPVwicHgtMyBweS0xLjUgdGV4dC1bMTFweF0gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgLW1iLXB4XCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC8vIEV4cGxpY2l0IHN0eWxlcyB0byBwcmV2ZW50IGFwcC1sZXZlbCBidXR0b24gb3ZlcnJpZGVzIHdoZW4gd2ViLXNoYXJlZFxuICAgICAgICAvLyBpcyBlbWJlZGRlZCBpbiBhIHNlbGYtaG9zdGVkIGFwcC5cbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBib3JkZXJUb3A6ICdub25lJyxcbiAgICAgICAgYm9yZGVyTGVmdDogJ25vbmUnLFxuICAgICAgICBib3JkZXJSaWdodDogJ25vbmUnLFxuICAgICAgICBib3JkZXJCb3R0b206IGAycHggc29saWQgJHthY3RpdmUgPyAndmFyKC0tZHMtYmx1ZS02MDApJyA6ICd0cmFuc3BhcmVudCd9YCxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgY29sb3I6IGFjdGl2ZSA/ICd2YXIoLS1kcy1ncmF5LTEwMDApJyA6ICd2YXIoLS1kcy1ncmF5LTYwMCknLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9idXR0b24+XG4gICk7XG59XG5cbi8qKlxuICogU2hhcmVkIHRhYmJlZCBjb250YWluZXIgd2l0aCBhY2Nlc3NpYmxlIEFSSUEgcm9sZXMgYW5kIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gKiBVc2VkIGJ5IENvbnZlcnNhdGlvbldpdGhUYWJzIGZvciB0aGUgY29udmVyc2F0aW9uL0pTT04gdG9nZ2xlLlxuICovXG5mdW5jdGlvbiBUYWJiZWRDb250YWluZXI8VCBleHRlbmRzIHN0cmluZz4oe1xuICB0YWJzLFxuICBhY3RpdmVUYWIsXG4gIG9uVGFiQ2hhbmdlLFxuICBhcmlhTGFiZWwsXG4gIGNoaWxkcmVuLFxufToge1xuICB0YWJzOiB7IGlkOiBUOyBsYWJlbDogc3RyaW5nIH1bXTtcbiAgYWN0aXZlVGFiOiBUO1xuICBvblRhYkNoYW5nZTogKHRhYjogVCkgPT4gdm9pZDtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59KSB7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnQXJyb3dSaWdodCcgJiYgZXZlbnQua2V5ICE9PSAnQXJyb3dMZWZ0JykgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRhYnMuZmluZEluZGV4KCh0KSA9PiB0LmlkID09PSBhY3RpdmVUYWIpO1xuICAgICAgY29uc3QgbmV4dEluZGV4ID1cbiAgICAgICAgZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCdcbiAgICAgICAgICA/IChjdXJyZW50SW5kZXggKyAxKSAlIHRhYnMubGVuZ3RoXG4gICAgICAgICAgOiAoY3VycmVudEluZGV4IC0gMSArIHRhYnMubGVuZ3RoKSAlIHRhYnMubGVuZ3RoO1xuICAgICAgb25UYWJDaGFuZ2UodGFic1tuZXh0SW5kZXhdLmlkKTtcbiAgICB9LFxuICAgIFt0YWJzLCBhY3RpdmVUYWIsIG9uVGFiQ2hhbmdlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXJcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBnYXAtMSBib3JkZXItYlwiXG4gICAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3RhYnMubWFwKCh0YWIpID0+IChcbiAgICAgICAgICA8VGFiQnV0dG9uXG4gICAgICAgICAgICBrZXk9e3RhYi5pZH1cbiAgICAgICAgICAgIGFjdGl2ZT17YWN0aXZlVGFiID09PSB0YWIuaWR9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRhYkNoYW5nZSh0YWIuaWQpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0YWIubGFiZWx9XG4gICAgICAgICAgPC9UYWJCdXR0b24+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgcm9sZT1cInRhYnBhbmVsXCI+e2NoaWxkcmVufTwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBjb252ZXJzYXRpb25UYWJzID0gW1xuICB7IGlkOiAnY29udmVyc2F0aW9uJyBhcyBjb25zdCwgbGFiZWw6ICdDb252ZXJzYXRpb24nIH0sXG4gIHsgaWQ6ICdqc29uJyBhcyBjb25zdCwgbGFiZWw6ICdSYXcgSlNPTicgfSxcbl07XG5cbi8qKlxuICogVGFiYmVkIHZpZXcgZm9yIGNvbnZlcnNhdGlvbiBhbmQgcmF3IEpTT05cbiAqL1xuZnVuY3Rpb24gQ29udmVyc2F0aW9uV2l0aFRhYnMoe1xuICBjb252ZXJzYXRpb24sXG4gIGFyZ3MsXG59OiB7XG4gIGNvbnZlcnNhdGlvbjogTW9kZWxNZXNzYWdlW107XG4gIGFyZ3M6IHVua25vd25bXTtcbn0pIHtcbiAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlPCdjb252ZXJzYXRpb24nIHwgJ2pzb24nPihcbiAgICAnY29udmVyc2F0aW9uJ1xuICApO1xuXG4gIHJldHVybiAoXG4gICAgPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0XCI+XG4gICAgICA8VGFiYmVkQ29udGFpbmVyXG4gICAgICAgIHRhYnM9e2NvbnZlcnNhdGlvblRhYnN9XG4gICAgICAgIGFjdGl2ZVRhYj17YWN0aXZlVGFifVxuICAgICAgICBvblRhYkNoYW5nZT17c2V0QWN0aXZlVGFifVxuICAgICAgICBhcmlhTGFiZWw9XCJDb252ZXJzYXRpb24gdmlld1wiXG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdjb252ZXJzYXRpb24nID8gKFxuICAgICAgICAgIDxDb252ZXJzYXRpb25WaWV3IG1lc3NhZ2VzPXtjb252ZXJzYXRpb259IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTNcIj5cbiAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGFyZ3MpXG4gICAgICAgICAgICAgID8gYXJncy5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogSnNvbkJsb2NrKGFyZ3MpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9UYWJiZWRDb250YWluZXI+XG4gICAgPC9EZXRhaWxDYXJkPlxuICApO1xufVxuXG4vKipcbiAqIFJlbmRlciBhIHZhbHVlIHdpdGggdGhlIHNoYXJlZCBEYXRhSW5zcGVjdG9yIChPYmplY3RJbnNwZWN0b3Igd2l0aFxuICogY3VzdG9tIHRoZW1pbmcsIG5vZGVSZW5kZXJlciBmb3IgU3RyZWFtUmVmL0NsYXNzSW5zdGFuY2VSZWYsIGV0Yy4pXG4gKi9cbmZ1bmN0aW9uIEVuY3J5cHRlZEZpZWxkQmxvY2soKSB7XG4gIHJldHVybiA8RW5jcnlwdGVkRGF0YUJsb2NrIC8+O1xufVxuXG4vKipcbiAqIElubGluZSBkaXNwbGF5IGZvciBhbiBleHBpcmVkIGZpZWxkIOKAlCBmbGF0IGxhYmVsIGluZGljYXRpbmcgZGF0YSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLlxuICovXG5mdW5jdGlvbiBFeHBpcmVkRmllbGRCbG9jaygpIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHJvdW5kZWQtbWQgYm9yZGVyIHB4LTMgcHktMiB0ZXh0LXhzXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS0zMDApJyxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTcwMCknLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bVwiPkRhdGEgZXhwaXJlZDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gSnNvbkJsb2NrKHZhbHVlOiB1bmtub3duKSB7XG4gIHJldHVybiA8Q29weWFibGVEYXRhQmxvY2sgZGF0YT17dmFsdWV9IC8+O1xufVxuXG5jb25zdCBoYXNEaXNwbGF5Q29udGVudCA9ICh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4gPT4ge1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAwO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnR5cGUgQXR0cmlidXRlS2V5ID1cbiAgfCBrZXlvZiBTdGVwXG4gIHwga2V5b2YgV29ya2Zsb3dSdW5cbiAgfCBrZXlvZiBIb29rXG4gIHwga2V5b2YgRXZlbnRcbiAgfCAnbW9kdWxlU3BlY2lmaWVyJ1xuICB8ICdldmVudERhdGEnXG4gIHwgJ3Jlc3VtZUF0J1xuICB8ICdleHBpcmVkQXQnXG4gIHwgJ3dvcmtmbG93Q29yZVZlcnNpb24nXG4gIHwgJ3JlY2VpdmVkQ291bnQnXG4gIHwgJ2xhc3RSZWNlaXZlZEF0J1xuICB8ICdkaXNwb3NlZEF0J1xuICB8ICdpc1N5c3RlbSdcbiAgfCAnZXJyb3JDb2RlJztcblxuY29uc3QgYXR0cmlidXRlT3JkZXI6IEF0dHJpYnV0ZUtleVtdID0gW1xuICAnd29ya2Zsb3dOYW1lJyxcbiAgJ21vZHVsZVNwZWNpZmllcicsXG4gICdzdGVwTmFtZScsXG4gICdzdGF0dXMnLFxuICAnc3RlcElkJyxcbiAgJ2hvb2tJZCcsXG4gICdldmVudElkJyxcbiAgJ3J1bklkJyxcbiAgJ2F0dGVtcHQnLFxuICAndG9rZW4nLFxuICAncmVjZWl2ZWRDb3VudCcsXG4gICdsYXN0UmVjZWl2ZWRBdCcsXG4gICdkaXNwb3NlZEF0JyxcbiAgJ2NvcnJlbGF0aW9uSWQnLFxuICAnZXZlbnRUeXBlJyxcbiAgJ2RlcGxveW1lbnRJZCcsXG4gICdzcGVjVmVyc2lvbicsXG4gICd3b3JrZmxvd0NvcmVWZXJzaW9uJyxcbiAgJ293bmVySWQnLFxuICAncHJvamVjdElkJyxcbiAgJ2Vudmlyb25tZW50JyxcbiAgJ2V4ZWN1dGlvbkNvbnRleHQnLFxuICAnY3JlYXRlZEF0JyxcbiAgJ3N0YXJ0ZWRBdCcsXG4gICd1cGRhdGVkQXQnLFxuICAnY29tcGxldGVkQXQnLFxuICAnZXhwaXJlZEF0JyxcbiAgJ3JldHJ5QWZ0ZXInLFxuICAnZXJyb3InLFxuICAnbWV0YWRhdGEnLFxuICAnZXZlbnREYXRhJyxcbiAgJ2lucHV0JyxcbiAgJ291dHB1dCcsXG4gICdhdHRyaWJ1dGVzJyxcbiAgJ3Jlc3VtZUF0Jyxcbl07XG5cbmNvbnN0IHNvcnRCeUF0dHJpYnV0ZU9yZGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgY29uc3QgYUluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihhIGFzIEF0dHJpYnV0ZUtleSkgfHwgMDtcbiAgY29uc3QgYkluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihiIGFzIEF0dHJpYnV0ZUtleSkgfHwgMDtcbiAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbn07XG5cbi8qKlxuICogRGlzcGxheSBuYW1lcyBmb3IgYXR0cmlidXRlcyB0aGF0IHNob3VsZCByZW5kZXIgZGlmZmVyZW50bHkgZnJvbSB0aGVpciBrZXkuXG4gKi9cbmNvbnN0IGF0dHJpYnV0ZURpc3BsYXlOYW1lczogUGFydGlhbDxSZWNvcmQ8QXR0cmlidXRlS2V5LCBzdHJpbmc+PiA9IHtcbiAgbW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlJyxcbiAgd29ya2Zsb3dOYW1lOiAnV29ya2Zsb3cgTmFtZScsXG4gIHN0ZXBOYW1lOiAnU3RlcCBOYW1lJyxcbiAgc3RlcElkOiAnU3RlcCBJRCcsXG4gIGhvb2tJZDogJ0hvb2sgSUQnLFxuICBhdHRlbXB0OiAnQXR0ZW1wdHMnLFxuICBldmVudElkOiAnRXZlbnQgSUQnLFxuICBydW5JZDogJ1J1biBJRCcsXG4gIHRva2VuOiAnVG9rZW4nLFxuICBldmVudFR5cGU6ICdFdmVudCBUeXBlJyxcbiAgZXJyb3JDb2RlOiAnRXJyb3IgQ29kZScsXG4gIGNvcnJlbGF0aW9uSWQ6ICdDb3JyZWxhdGlvbiBJRCcsXG4gIGRlcGxveW1lbnRJZDogJ0RlcGxveW1lbnQgSUQnLFxuICBzcGVjVmVyc2lvbjogJ1NwZWMgVmVyc2lvbicsXG4gIHdvcmtmbG93Q29yZVZlcnNpb246ICdAd29ya2Zsb3cvY29yZSB2ZXJzaW9uJyxcbiAgY3JlYXRlZEF0OiAnQ3JlYXRlZCcsXG4gIHN0YXJ0ZWRBdDogJ1N0YXJ0ZWQnLFxuICB1cGRhdGVkQXQ6ICdVcGRhdGVkJyxcbiAgY29tcGxldGVkQXQ6ICdDb21wbGV0ZWQnLFxuICBleHBpcmVkQXQ6ICdFeHBpcmVkJyxcbiAgcmV0cnlBZnRlcjogJ1JldHJ5IEFmdGVyJyxcbiAgcmVzdW1lQXQ6ICdSZXN1bWUnLFxuICBsYXN0UmVjZWl2ZWRBdDogJ0xhc3QgUmVjZWl2ZWQnLFxuICBkaXNwb3NlZEF0OiAnRGlzcG9zZWQnLFxuICByZWNlaXZlZENvdW50OiAnVGltZXMgUmVzb2x2ZWQnLFxufTtcblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYW4gYXR0cmlidXRlIGtleS5cbiAqL1xuY29uc3QgZ2V0QXR0cmlidXRlRGlzcGxheU5hbWUgPSAoYXR0cmlidXRlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYXR0cmlidXRlRGlzcGxheU5hbWVzW2F0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVLZXldID8/IGF0dHJpYnV0ZTtcbn07XG5cbmNvbnN0IGdldE1vZHVsZVNwZWNpZmllckZyb21OYW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcmF3ID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgcGFyc2VkU3RlcCA9IHBhcnNlU3RlcE5hbWUocmF3KTtcbiAgaWYgKHBhcnNlZFN0ZXApIHtcbiAgICByZXR1cm4gcGFyc2VkU3RlcC5tb2R1bGVTcGVjaWZpZXI7XG4gIH1cbiAgY29uc3QgcGFyc2VkV29ya2Zsb3cgPSBwYXJzZVdvcmtmbG93TmFtZShyYXcpO1xuICBpZiAocGFyc2VkV29ya2Zsb3cpIHtcbiAgICByZXR1cm4gcGFyc2VkV29ya2Zsb3cubW9kdWxlU3BlY2lmaWVyO1xuICB9XG4gIHJldHVybiByYXc7XG59O1xuXG5jb25zdCBwYXJzZURhdGVWYWx1ZSA9ICh2YWx1ZTogdW5rbm93bik6IERhdGUgfCBudWxsID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gbnVsbCA6IHZhbHVlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBuZXcgRGF0ZShTdHJpbmcodmFsdWUpKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZTtcbn07XG5cbmNvbnN0IGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lID0gKGRhdGU6IERhdGUpOiBzdHJpbmcgPT5cbiAgZGF0ZS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHtcbiAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgbW9udGg6ICdudW1lcmljJyxcbiAgICBkYXk6ICdudW1lcmljJyxcbiAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMyxcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBsb2NhbE1pbGxpc2Vjb25kVGltZSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGVWYWx1ZSh2YWx1ZSk7XG4gIGlmICghZGF0ZSkge1xuICAgIHJldHVybiAnLSc7XG4gIH1cblxuICAvLyBlLmcuIDEyLzE3LzIwMjUsIDk6MDg6NTUuMTgyIEFNXG4gIHJldHVybiBmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKTtcbn07XG5cbmNvbnN0IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGVWYWx1ZSh2YWx1ZSk7XG4gIGlmICghZGF0ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKTtcbn07XG5cbmNvbnN0IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsID0gKHZhbHVlOiB1bmtub3duKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGVWYWx1ZSh2YWx1ZSk7XG4gIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPFRpbWVzdGFtcFRvb2x0aXAgZGF0ZT17ZGF0ZX0+XG4gICAgICA8c3Bhbj57Zm9ybWF0TG9jYWxNaWxsaXNlY29uZFRpbWUoZGF0ZSl9PC9zcGFuPlxuICAgIDwvVGltZXN0YW1wVG9vbHRpcD5cbiAgKTtcbn07XG5cbmludGVyZmFjZSBEaXNwbGF5Q29udGV4dCB7XG4gIHN0ZXBOYW1lPzogc3RyaW5nO1xufVxuXG5jb25zdCBhdHRyaWJ1dGVUb0Rpc3BsYXlGbjogUmVjb3JkPFxuICBBdHRyaWJ1dGVLZXksXG4gICh2YWx1ZTogdW5rbm93biwgY29udGV4dD86IERpc3BsYXlDb250ZXh0KSA9PiBudWxsIHwgc3RyaW5nIHwgUmVhY3ROb2RlXG4+ID0ge1xuICAvLyBOYW1lcyB0aGF0IG5lZWQgcHJldHR5LXByaW50aW5nXG4gIHdvcmtmbG93TmFtZTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgbW9kdWxlU3BlY2lmaWVyOiAodmFsdWU6IHVua25vd24pID0+IGdldE1vZHVsZVNwZWNpZmllckZyb21OYW1lKHZhbHVlKSxcbiAgc3RlcE5hbWU6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIC8vIElEc1xuICBydW5JZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgc3RlcElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGhvb2tJZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBldmVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFJ1bi9zdGVwIGRldGFpbHNcbiAgc3RhdHVzOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBhdHRlbXB0OiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIEhvb2sgZGV0YWlsc1xuICB0b2tlbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBpc1dlYmhvb2s6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaXNTeXN0ZW06ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgcmVjZWl2ZWRDb3VudDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBsYXN0UmVjZWl2ZWRBdDogbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwsXG4gIGRpc3Bvc2VkQXQ6IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsLFxuICAvLyBFdmVudCBkZXRhaWxzXG4gIGV2ZW50VHlwZTogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBjb3JyZWxhdGlvbklkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFByb2plY3QgZGV0YWlsc1xuICBkZXBsb3ltZW50SWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgc3BlY1ZlcnNpb246ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgd29ya2Zsb3dDb3JlVmVyc2lvbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBUZW5hbmN5ICh3ZSBkb24ndCBzaG93IHRoZXNlKVxuICBvd25lcklkOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBwcm9qZWN0SWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIGVudmlyb25tZW50OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBleGVjdXRpb25Db250ZXh0OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICAvLyBBdHRyaWJ1dGVzIE1WUCDigJQgc3RyaW5nLXN0cmluZyBtZXRhZGF0YSBhdHRhY2hlZCB0byB0aGUgcnVuLlxuICAvLyBSZW5kZXJlZCBpbiBpdHMgb3duIGNvbGxhcHNpYmxlIERldGFpbENhcmQ7IGlmIGVtcHR5L21pc3NpbmcsIGhpZGRlblxuICAvLyBieSB0aGUgaGFzRGlzcGxheUNvbnRlbnQgZ2F0ZS5cbiAgYXR0cmlidXRlczogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiQXR0cmlidXRlc1wiPntKc29uQmxvY2sodmFsdWUpfTwvRGV0YWlsQ2FyZD47XG4gIH0sXG4gIC8vIERhdGVzIOKAlCB3cmFwcGVkIHdpdGggVGltZXN0YW1wVG9vbHRpcCBzaG93aW5nIFVUQy9sb2NhbCArIHJlbGF0aXZlIHRpbWVcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgc3RhcnRlZEF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgdXBkYXRlZEF0OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBjb21wbGV0ZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIGV4cGlyZWRBdDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgcmV0cnlBZnRlcjogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIHJlc3VtZUF0OiB0aW1lc3RhbXBXaXRoVG9vbHRpcE9yTnVsbCxcbiAgLy8gUmVzb2x2ZWQgYXR0cmlidXRlcywgd29uJ3QgYWN0dWFsbHkgdXNlIHRoaXMgZnVuY3Rpb25cbiAgbWV0YWRhdGE6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSByZXR1cm4gPEVuY3J5cHRlZERhdGFCbG9jayAvPjtcbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICByZXR1cm4gSnNvbkJsb2NrKHZhbHVlKTtcbiAgfSxcbiAgaW5wdXQ6ICh2YWx1ZTogdW5rbm93biwgY29udGV4dD86IERpc3BsYXlDb250ZXh0KSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0XCI+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgLy8gQ2hlY2sgaWYgaW5wdXQgaGFzIGFyZ3MgKyBjbG9zdXJlIHZhcnMgc3RydWN0dXJlXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2FyZ3MnIGluIHZhbHVlKSB7XG4gICAgICBjb25zdCB7IGFyZ3MsIGNsb3N1cmVWYXJzLCB0aGlzVmFsIH0gPSB2YWx1ZSBhcyB7XG4gICAgICAgIGFyZ3M6IHVua25vd25bXTtcbiAgICAgICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdGhpc1ZhbD86IHVua25vd247XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFzQ2xvc3VyZVZhcnMgPSBoYXNEaXNwbGF5Q29udGVudChjbG9zdXJlVmFycyk7XG4gICAgICBjb25zdCBoYXNUaGlzVmFsID0gaGFzRGlzcGxheUNvbnRlbnQodGhpc1ZhbCk7XG4gICAgICBjb25zdCBoYXNBcmdzID0gaGFzRGlzcGxheUNvbnRlbnQoYXJncyk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBkb1N0cmVhbVN0ZXAgLSBzaG93IGNvbnZlcnNhdGlvbiB2aWV3IHdpdGggdGFic1xuICAgICAgaWYgKGNvbnRleHQ/LnN0ZXBOYW1lICYmIGlzRG9TdHJlYW1TdGVwKGNvbnRleHQuc3RlcE5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGV4dHJhY3RDb252ZXJzYXRpb24oYXJncyk7XG4gICAgICAgIGlmIChjb252ZXJzYXRpb24gJiYgY29udmVyc2F0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPENvbnZlcnNhdGlvbldpdGhUYWJzIGNvbnZlcnNhdGlvbj17Y29udmVyc2F0aW9ufSBhcmdzPXthcmdzfSAvPlxuICAgICAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgICAgIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJDbG9zdXJlIFZhcmlhYmxlc1wiPlxuICAgICAgICAgICAgICAgICAge0pzb25CbG9jayhjbG9zdXJlVmFycyl9XG4gICAgICAgICAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aGFzVGhpc1ZhbCAmJiAoXG4gICAgICAgICAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIlRoaXMgVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodGhpc1ZhbCl9XG4gICAgICAgICAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBEb24ndCByZW5kZXIgYW4gZW1wdHkgXCJJbnB1dCAoMCBhcmd1bWVudHMpXCIgY2FyZCB3aGVuIG5vIGlucHV0IGV4aXN0cy5cbiAgICAgIGlmICghaGFzQXJncyAmJiAhaGFzQ2xvc3VyZVZhcnMgJiYgIWhhc1RoaXNWYWwpIHtcbiAgICAgICAgcmV0dXJuIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJJbnB1dCAobm8gZGF0YSlcIiBkaXNhYmxlZCAvPjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiSW5wdXRcIj5cbiAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGFyZ3MpXG4gICAgICAgICAgICAgID8gYXJncy5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogSnNvbkJsb2NrKGFyZ3MpfVxuICAgICAgICAgIDwvRGV0YWlsQ2FyZD5cbiAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkNsb3N1cmUgVmFyaWFibGVzXCI+XG4gICAgICAgICAgICAgIHtKc29uQmxvY2soY2xvc3VyZVZhcnMpfVxuICAgICAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2hhc1RoaXNWYWwgJiYgKFxuICAgICAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkNvbnRleHRcIj57SnNvbkJsb2NrKHRoaXNWYWwpfTwvRGV0YWlsQ2FyZD5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IHRyZWF0IGFzIHBsYWluIGFycmF5IG9yIG9iamVjdFxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0IChubyBkYXRhKVwiIGRpc2FibGVkIC8+O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIklucHV0XCI+XG4gICAgICAgIHtBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgID8gdmFsdWUubWFwKCh2LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKHYpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgOiBKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICk7XG4gIH0sXG4gIG91dHB1dDogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIk91dHB1dFwiPlxuICAgICAgICAgIDxFbmNyeXB0ZWRGaWVsZEJsb2NrIC8+XG4gICAgICAgIDwvRGV0YWlsQ2FyZD5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICByZXR1cm4gPERldGFpbENhcmQgc3VtbWFyeT1cIk91dHB1dFwiPntKc29uQmxvY2sodmFsdWUpfTwvRGV0YWlsQ2FyZD47XG4gIH0sXG4gIGVycm9yOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoaXNFbmNyeXB0ZWRNYXJrZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0RldGFpbENhcmQ+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgICAvLyBTdHJ1Y3R1cmVkIHdvcmtmbG93IGVycm9ycyBtYXkgYmUgcGVyc2lzdGVkIGFzIGVpdGhlciBgeyBtZXNzYWdlIH1gIG9yXG4gICAgLy8gYHsgbWVzc2FnZSwgc3RhY2sgfWAuIFJlbmRlciBib3RoIHdpdGggdGhlIGRlZGljYXRlZCBlcnJvciBibG9jay5cbiAgICBpZiAoaXNTdHJ1Y3R1cmVkRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RGV0YWlsQ2FyZCBzdW1tYXJ5PVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RXJyb3JTdGFja0Jsb2NrIHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICk7XG4gIH0sXG4gIGV2ZW50RGF0YTogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERldGFpbENhcmQgc3VtbWFyeT1cIkV2ZW50IERhdGFcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0RldGFpbENhcmQ+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEZXRhaWxDYXJkIHN1bW1hcnk9XCJFdmVudCBEYXRhXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICk7XG4gIH0sXG4gIGVycm9yQ29kZTogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfSxcbn07XG5cbmNvbnN0IHJlc29sdmFibGVBdHRyaWJ1dGVzID0gW1xuICAnaW5wdXQnLFxuICAnb3V0cHV0JyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2F0dHJpYnV0ZXMnLFxuICAnZXZlbnREYXRhJyxcbl07XG5cbi8vIEF0dHJpYnV0ZXMgd2hvc2UgZGlzcGxheUZuIHJlbmRlcnMgaXRzIG93biBzZWN0aW9uIGhlYWRlciB2aWEgRGV0YWlsQ2FyZCxcbi8vIHNvIHRoZSBvdXRlciBBdHRyaWJ1dGVCbG9jayBzaG91bGQgbm90IGR1cGxpY2F0ZSB0aGUgbGFiZWwuXG5jb25zdCBzZWxmSGVhZGVyZWRBdHRyaWJ1dGVzID0gbmV3IFNldChbXG4gICdpbnB1dCcsXG4gICdvdXRwdXQnLFxuICAnZXJyb3InLFxuICAnYXR0cmlidXRlcycsXG4gICdldmVudERhdGEnLFxuXSk7XG5cbmNvbnN0IEV4cGlyZWREYXRhTWVzc2FnZSA9ICgpID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT1cInRleHQtY29weS0xMiByb3VuZGVkLW1kIGJvcmRlciBwLTQgbXktMlwiXG4gICAgc3R5bGU9e3tcbiAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS0zMDApJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScsXG4gICAgfX1cbiAgPlxuICAgIDxzcGFuPlRoZSBkYXRhIGZvciB0aGlzIHJ1biBoYXMgZXhwaXJlZCBhbmQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS48L3NwYW4+XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgY29weWFibGVCYXNpY0F0dHJpYnV0ZXMgPSBuZXcgU2V0PEF0dHJpYnV0ZUtleT4oW1xuICAnc3RlcElkJyxcbiAgJ2hvb2tJZCcsXG4gICdldmVudElkJyxcbiAgJ2RlcGxveW1lbnRJZCcsXG5dKTtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0ZUJsb2NrID0gKHtcbiAgYXR0cmlidXRlLFxuICB2YWx1ZSxcbiAgaXNMb2FkaW5nLFxuICBpbmxpbmUgPSBmYWxzZSxcbiAgY29udGV4dCxcbn06IHtcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBpbmxpbmU/OiBib29sZWFuO1xuICBjb250ZXh0PzogRGlzcGxheUNvbnRleHQ7XG59KSA9PiB7XG4gIGNvbnN0IGRlY3J5cHRDdHggPSB1c2VDb250ZXh0KERlY3J5cHRDbGlja0NvbnRleHQpO1xuICBjb25zdCBpc0V4cGFuZGFibGVMb2FkaW5nVGFyZ2V0ID1cbiAgICBhdHRyaWJ1dGUgPT09ICdpbnB1dCcgfHxcbiAgICBhdHRyaWJ1dGUgPT09ICdvdXRwdXQnIHx8XG4gICAgYXR0cmlidXRlID09PSAnZXZlbnREYXRhJztcbiAgaWYgKGlzTG9hZGluZyAmJiBpc0V4cGFuZGFibGVMb2FkaW5nVGFyZ2V0ICYmICFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHtcbiAgICBjb25zdCBsYWJlbCA9XG4gICAgICBhdHRyaWJ1dGUgPT09ICdldmVudERhdGEnXG4gICAgICAgID8gJ0V2ZW50IERhdGEnXG4gICAgICAgIDogYXR0cmlidXRlID09PSAnb3V0cHV0J1xuICAgICAgICAgID8gJ091dHB1dCdcbiAgICAgICAgICA6ICdJbnB1dCc7XG4gICAgaWYgKGRlY3J5cHRDdHg/Lmhhc0VuY3J5cHRlZERhdGEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxEZXRhaWxDYXJkIHN1bW1hcnk9e2xhYmVsfSBkZWZhdWx0T3Blbj17YXR0cmlidXRlID09PSAnZXZlbnREYXRhJ30+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9EZXRhaWxDYXJkPlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxEZXRhaWxDYXJkIHN1bW1hcnk9e2xhYmVsfSAvPjtcbiAgfVxuXG4gIGNvbnN0IGRpc3BsYXlGbiA9XG4gICAgYXR0cmlidXRlVG9EaXNwbGF5Rm5bYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBhdHRyaWJ1dGVUb0Rpc3BsYXlGbl07XG4gIGlmICghZGlzcGxheUZuKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgZGlzcGxheVZhbHVlID0gZGlzcGxheUZuKHZhbHVlLCBjb250ZXh0KTtcbiAgaWYgKCFkaXNwbGF5VmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpbmxpbmUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gZm9udC1tZWRpdW1cIlxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2F0dHJpYnV0ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX0+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxmSGVhZGVyZWRBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGUpKSB7XG4gICAgcmV0dXJuIDw+e2Rpc3BsYXlWYWx1ZX08Lz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgIHt0eXBlb2YgaXNMb2FkaW5nID09PSAnYm9vbGVhbicgJiYgaXNMb2FkaW5nICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtOSByaWdodC00XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTQgdy00IGJvcmRlci1iLTJcIlxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBrZXk9e2F0dHJpYnV0ZX0gY2xhc3NOYW1lPVwibXktMiBmbGV4IGZsZXgtY29sIGdhcC0wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTQgdGV4dC1ncmF5LTEwMDAgZm9udC1tZWRpdW0gZmlyc3QtbGV0dGVyOnVwcGVyY2FzZVwiPlxuICAgICAgICAgIHthdHRyaWJ1dGV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX0+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlUGFuZWwgPSAoe1xuICBkYXRhLFxuICBtb2R1bGVTcGVjaWZpZXIsXG4gIGlzTG9hZGluZyxcbiAgZXJyb3IsXG4gIGV4cGlyZWRBdCxcbiAgb25TdHJlYW1DbGljayxcbiAgb25SdW5DbGljayxcbiAgb25EZWNyeXB0LFxuICBpc0RlY3J5cHRpbmcgPSBmYWxzZSxcbiAgcmVzb3VyY2UsXG59OiB7XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtb2R1bGVTcGVjaWZpZXI/OiBzdHJpbmc7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGVycm9yPzogRXJyb3I7XG4gIGV4cGlyZWRBdD86IHN0cmluZyB8IERhdGU7XG4gIC8qKiBDYWxsYmFjayB3aGVuIGEgc3RyZWFtIHJlZmVyZW5jZSBpcyBjbGlja2VkICovXG4gIG9uU3RyZWFtQ2xpY2s/OiAoc3RyZWFtSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYSBydW4gcmVmZXJlbmNlIGlzIGNsaWNrZWQgKi9cbiAgb25SdW5DbGljaz86IChydW5JZDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBhbiBlbmNyeXB0ZWQgbWFya2VyIGlzIGNsaWNrZWQgKHRyaWdnZXJzIGRlY3J5cHRpb24pICovXG4gIG9uRGVjcnlwdD86ICgpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIGRlY3J5cHRpb24gaXMgY3VycmVudGx5IGluIHByb2dyZXNzICovXG4gIGlzRGVjcnlwdGluZz86IGJvb2xlYW47XG4gIC8qKiBSZXNvdXJjZSB0eXBlIG9mIHRoZSBzZWxlY3RlZCBzcGFuIOKAlCB1c2VkIHRvIHNob3cgdGFyZ2V0ZWQgbG9hZGluZyBza2VsZXRvbnMuICovXG4gIHJlc291cmNlPzogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KCk7XG4gIC8vIEV4dHJhY3Qgd29ya2Zsb3dDb3JlVmVyc2lvbiBmcm9tIGV4ZWN1dGlvbkNvbnRleHQgZm9yIGRpc3BsYXlcbiAgY29uc3QgZGlzcGxheURhdGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLmRhdGEgfTtcbiAgICBjb25zdCBleGVjQ3R4ID0gZGF0YS5leGVjdXRpb25Db250ZXh0IGFzXG4gICAgICB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZXhlY0N0eD8ud29ya2Zsb3dDb3JlVmVyc2lvbikge1xuICAgICAgcmVzdWx0LndvcmtmbG93Q29yZVZlcnNpb24gPSBleGVjQ3R4LndvcmtmbG93Q29yZVZlcnNpb247XG4gICAgfVxuICAgIGlmIChtb2R1bGVTcGVjaWZpZXIpIHtcbiAgICAgIHJlc3VsdC5tb2R1bGVTcGVjaWZpZXIgPSBtb2R1bGVTcGVjaWZpZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YS5zdGVwTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdC5tb2R1bGVTcGVjaWZpZXIgPSBkYXRhLnN0ZXBOYW1lO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEud29ya2Zsb3dOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0Lm1vZHVsZVNwZWNpZmllciA9IGRhdGEud29ya2Zsb3dOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbZGF0YSwgbW9kdWxlU3BlY2lmaWVyXSk7XG4gIGNvbnN0IGhhc0V4cGlyZWQgPSBleHBpcmVkQXQgIT0gbnVsbCAmJiBuZXcgRGF0ZShleHBpcmVkQXQpIDwgbmV3IERhdGUoKTtcbiAgY29uc3QgYmFzaWNBdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMoZGlzcGxheURhdGEpXG4gICAgLmZpbHRlcigoa2V5KSA9PiAhcmVzb2x2YWJsZUF0dHJpYnV0ZXMuaW5jbHVkZXMoa2V5KSlcbiAgICAuc29ydChzb3J0QnlBdHRyaWJ1dGVPcmRlcik7XG4gIGNvbnN0IHJlc29sdmVkQXR0cmlidXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHByZXNlbnQgPSBPYmplY3Qua2V5cyhkaXNwbGF5RGF0YSlcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gcmVzb2x2YWJsZUF0dHJpYnV0ZXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgIC5zb3J0KHNvcnRCeUF0dHJpYnV0ZU9yZGVyKTtcblxuICAgIGlmICghaXNMb2FkaW5nKSByZXR1cm4gcHJlc2VudDtcblxuICAgIGlmIChyZXNvdXJjZSA9PT0gJ3NsZWVwJykgcmV0dXJuIHByZXNlbnQ7XG5cbiAgICAvLyBEdXJpbmcgbG9hZGluZywgZW5zdXJlIHNlY3Rpb25zIGFwcGVhciBzbyB0aGVpciBza2VsZXRvbnMgcmVuZGVyXG4gICAgLy8gaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24gKGFib3ZlIHRoZSBldmVudHMgc2VjdGlvbikuXG4gICAgY29uc3QgbG9hZGluZ0RlZmF1bHRzID0gWydpbnB1dCcsICdvdXRwdXQnXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBsb2FkaW5nRGVmYXVsdHMpIHtcbiAgICAgIGlmICghcHJlc2VudC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHByZXNlbnQucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJlc2VudC5zb3J0KHNvcnRCeUF0dHJpYnV0ZU9yZGVyKTtcbiAgfSwgW2Rpc3BsYXlEYXRhLCBpc0xvYWRpbmcsIHJlc291cmNlXSk7XG5cbiAgLy8gRmlsdGVyIG91dCBhdHRyaWJ1dGVzIHRoYXQgcmV0dXJuIG51bGxcbiAgY29uc3QgdmlzaWJsZUJhc2ljQXR0cmlidXRlcyA9IGJhc2ljQXR0cmlidXRlcy5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlGbiA9XG4gICAgICBhdHRyaWJ1dGVUb0Rpc3BsYXlGblthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXTtcbiAgICBpZiAoIWRpc3BsYXlGbikgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGRpc3BsYXlGbihcbiAgICAgIGRpc3BsYXlEYXRhW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheURhdGFdXG4gICAgKTtcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlICE9PSBudWxsO1xuICB9KTtcblxuICAvLyBLZWVwIGBtb2R1bGVTcGVjaWZpZXJgIGltbWVkaWF0ZWx5IGFmdGVyIGB3b3JrZmxvd05hbWVgIG9yIGBzdGVwTmFtZWAuXG4gIGNvbnN0IG9yZGVyZWRCYXNpY0F0dHJpYnV0ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gWy4uLnZpc2libGVCYXNpY0F0dHJpYnV0ZXNdO1xuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllckluZGV4ID0gYXR0cmlidXRlcy5pbmRleE9mKCdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICBpZiAobW9kdWxlU3BlY2lmaWVySW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVzLnNwbGljZShtb2R1bGVTcGVjaWZpZXJJbmRleCwgMSk7XG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lSW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoJ3dvcmtmbG93TmFtZScpO1xuICAgIGlmICh3b3JrZmxvd05hbWVJbmRleCAhPT0gLTEpIHtcbiAgICAgIGF0dHJpYnV0ZXMuc3BsaWNlKHdvcmtmbG93TmFtZUluZGV4ICsgMSwgMCwgJ21vZHVsZVNwZWNpZmllcicpO1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcE5hbWVJbmRleCA9IGF0dHJpYnV0ZXMuaW5kZXhPZignc3RlcE5hbWUnKTtcbiAgICBpZiAoc3RlcE5hbWVJbmRleCAhPT0gLTEpIHtcbiAgICAgIGF0dHJpYnV0ZXMuc3BsaWNlKHN0ZXBOYW1lSW5kZXggKyAxLCAwLCAnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVzLnVuc2hpZnQoJ21vZHVsZVNwZWNpZmllcicpO1xuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICB9LCBbdmlzaWJsZUJhc2ljQXR0cmlidXRlc10pO1xuXG4gIC8vIE1lbW9pemUgY29udGV4dCBvYmplY3QgdG8gYXZvaWQgb2JqZWN0IHJlY29uc3RydWN0aW9uIG9uIHJlbmRlclxuICBjb25zdCBkaXNwbGF5Q29udGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHN0ZXBOYW1lOiBkaXNwbGF5RGF0YS5zdGVwTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgfSksXG4gICAgW2Rpc3BsYXlEYXRhLnN0ZXBOYW1lXVxuICApO1xuICBjb25zdCBoYW5kbGVDb3B5TW9kdWxlU3BlY2lmaWVyID0gdXNlQ2FsbGJhY2soKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkXG4gICAgICAud3JpdGVUZXh0KHZhbHVlKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0b2FzdC5zdWNjZXNzKCdtb2R1bGVTcGVjaWZpZXIgY29waWVkJyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdG9hc3QuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IG1vZHVsZVNwZWNpZmllcicpO1xuICAgICAgfSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvdXRlckRlY3J5cHRDdHggPSB1c2VDb250ZXh0KERlY3J5cHRDbGlja0NvbnRleHQpO1xuICBjb25zdCBkZWNyeXB0VmFsdWUgPSBvbkRlY3J5cHRcbiAgICA/IHtcbiAgICAgICAgb25EZWNyeXB0LFxuICAgICAgICBpc0RlY3J5cHRpbmcsXG4gICAgICAgIGhhc0VuY3J5cHRlZERhdGE6IG91dGVyRGVjcnlwdEN0eD8uaGFzRW5jcnlwdGVkRGF0YSxcbiAgICAgIH1cbiAgICA6IG91dGVyRGVjcnlwdEN0eDtcblxuICByZXR1cm4gKFxuICAgIDxSdW5DbGlja0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e29uUnVuQ2xpY2t9PlxuICAgICAgPFN0cmVhbUNsaWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17b25TdHJlYW1DbGlja30+XG4gICAgICAgIDxEZWNyeXB0Q2xpY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkZWNyeXB0VmFsdWV9PlxuICAgICAgICAgIHt2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiBkaXZpZGUteSBkaXZpZGUtZ3JheS1hbHBoYS00MDAgbWItM1wiPlxuICAgICAgICAgICAgICB7b3JkZXJlZEJhc2ljQXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGF0dHJpYnV0ZVRvRGlzcGxheUZuW1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBhdHRyaWJ1dGVUb0Rpc3BsYXlGblxuICAgICAgICAgICAgICAgIF0/LihkaXNwbGF5RGF0YVthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGRpc3BsYXlEYXRhXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNNb2R1bGVTcGVjaWZpZXIgPSBhdHRyaWJ1dGUgPT09ICdtb2R1bGVTcGVjaWZpZXInO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29weWFibGVCYXNpY0F0dHJpYnV0ZSA9XG4gICAgICAgICAgICAgICAgICBjb3B5YWJsZUJhc2ljQXR0cmlidXRlcy5oYXMoYXR0cmlidXRlIGFzIEF0dHJpYnV0ZUtleSkgJiZcbiAgICAgICAgICAgICAgICAgIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09ICdzdHJpbmcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllclZhbHVlID1cbiAgICAgICAgICAgICAgICAgIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gZGlzcGxheVZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogU3RyaW5nKGRpc3BsYXlWYWx1ZSA/PyBkaXNwbGF5RGF0YS5tb2R1bGVTcGVjaWZpZXIgPz8gJycpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTJcIlxuICAgICAgICAgICAgICAgICAgICBrZXk9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sYWJlbC0xNCB0ZXh0LWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2dldEF0dHJpYnV0ZURpc3BsYXlOYW1lKGF0dHJpYnV0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge2lzTW9kdWxlU3BlY2lmaWVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWluLXctMCBtYXgtdy1bNzAlXSB0cnVuY2F0ZSB0ZXh0LXJpZ2h0IHRleHQtbGFiZWwtMTMgZm9udC1tb25vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXttb2R1bGVTcGVjaWZpZXJWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvcHlNb2R1bGVTcGVjaWZpZXIobW9kdWxlU3BlY2lmaWVyVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge21vZHVsZVNwZWNpZmllclZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApIDogaXNDb3B5YWJsZUJhc2ljQXR0cmlidXRlID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggbWluLXctMCBtYXgtdy1bNzAlXSBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTEgdGV4dC1yaWdodCB0ZXh0LVsxM3B4XSBmb250LW1vbm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17ZGlzcGxheVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNaWRkbGVUcnVuY2F0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheVZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3B5QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlUZXh0PXtkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17YENvcHkgJHtnZXRBdHRyaWJ1dGVEaXNwbGF5TmFtZShhdHRyaWJ1dGUpfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNocmluay0wIC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yaWdodCB0ZXh0LWxhYmVsLTEzIGZvbnQtbW9ub1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAge2lzTG9hZGluZyAmJiByZXNvdXJjZSA9PT0gJ3NsZWVwJyAmJiAhZGlzcGxheURhdGEucmVzdW1lQXQgJiYgKFxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHktMVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IG1pbi1oLVszMnB4XSBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00IHJvdW5kZWQtc20gcHgtMi41IHB5LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LVsxNHB4XSBmaXJzdC1sZXR0ZXI6dXBwZXJjYXNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZUF0XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtNCB3LVs1NSVdXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7ZXJyb3IgPyAoXG4gICAgICAgICAgICA8RXJyb3JDYXJkXG4gICAgICAgICAgICAgIHRpdGxlPVwiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UgZGV0YWlsc1wiXG4gICAgICAgICAgICAgIGRldGFpbHM9e2Vycm9yLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm15LTRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogaGFzRXhwaXJlZCA/IChcbiAgICAgICAgICAgIDxFeHBpcmVkRGF0YU1lc3NhZ2UgLz5cbiAgICAgICAgICApIDogcmVzb2x2ZWRBdHRyaWJ1dGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7cmVzb2x2ZWRBdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiAoXG4gICAgICAgICAgICAgICAgPEF0dHJpYnV0ZUJsb2NrXG4gICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIGtleT17YXR0cmlidXRlfVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV19XG4gICAgICAgICAgICAgICAgICBjb250ZXh0PXtkaXNwbGF5Q29udGV4dH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L0RlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1N0cmVhbUNsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L1J1bkNsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"entity-detail-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/entity-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAwBtE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,GAAG,EAAE,WAAW,CAAC;IACjB,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,0DAA0D;IAC1D,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IACzD,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uGAAuG;IACvG,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,IAAI,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAwV3B"}
1
+ {"version":3,"file":"entity-detail-panel.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/entity-detail-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA4BtE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,GAAG,EACH,aAAa,EACb,UAAU,EACV,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,GAAG,EAAE,WAAW,CAAC;IACjB,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,0DAA0D;IAC1D,cAAc,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IACzD,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uGAAuG;IACvG,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC,sEAAsE;IACtE,eAAe,CAAC,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,IAAI,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACvC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAmW3B"}