obsidian-dev-utils 30.2.0 → 30.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -92,7 +92,7 @@ async function getBacklinksForFileSafe(app, pathOrFile, retryOptions = {}) {
92
92
  if (safeOverload) {
93
93
  return safeOverload(pathOrFile);
94
94
  }
95
- let backlinks = null;
95
+ let backlinks = new import_implementations.CustomArrayDictImpl();
96
96
  await (0, import_Async.retryWithTimeout)(async () => {
97
97
  const file = (0, import_FileSystem.getFile)(app, pathOrFile);
98
98
  await ensureMetadataCacheReady(app);
@@ -116,18 +116,18 @@ async function getBacklinksForFileSafe(app, pathOrFile, retryOptions = {}) {
116
116
  let actualLink;
117
117
  if ((0, import_implementations.isReferenceCache)(link)) {
118
118
  actualLink = content.slice(link.position.start.offset, link.position.end.offset);
119
- } else if ((0, import_FrontmatterLinkCacheWithOffsets.isFrontmatterLinkCacheWithOffsets)(link)) {
120
- const linkValue = (0, import_ObjectUtils.getNestedPropertyValue)(frontmatter, link.key);
121
- if (typeof linkValue !== "string") {
122
- return false;
123
- }
124
- actualLink = linkValue.slice(link.startOffset, link.endOffset);
125
119
  } else if ((0, import_implementations.isFrontmatterLinkCache)(link)) {
126
120
  const linkValue = (0, import_ObjectUtils.getNestedPropertyValue)(frontmatter, link.key);
127
121
  if (typeof linkValue !== "string") {
128
122
  return false;
129
123
  }
130
- actualLink = linkValue;
124
+ let startOffset = 0;
125
+ let endOffset = linkValue.length;
126
+ if ((0, import_FrontmatterLinkCacheWithOffsets.isFrontmatterLinkCacheWithOffsets)(link)) {
127
+ startOffset = link.startOffset;
128
+ endOffset = link.endOffset;
129
+ }
130
+ actualLink = linkValue.slice(startOffset, endOffset);
131
131
  } else {
132
132
  return true;
133
133
  }
@@ -230,4 +230,4 @@ async function saveNote(app, pathOrFile) {
230
230
  tempRegisterFilesAndRun,
231
231
  tempRegisterFilesAndRunAsync
232
232
  });
233
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01ldGFkYXRhQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBSZWZlcmVuY2UsXG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGdldE5lc3RlZFByb3BlcnR5VmFsdWUgfSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgeyBzb3J0UmVmZXJlbmNlcyB9IGZyb20gJy4vUmVmZXJlbmNlLnRzJztcbmltcG9ydCB7IHJlYWRTYWZlIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgdGhlIGdldEJhY2tsaW5rc0ZvckZpbGUgbWV0aG9kIHRoYXQgcHJvdmlkZXMgYSBzYWZlIG92ZXJsb2FkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlciB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkgZm9yIGFsbCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbkNsZWFuQ2FjaGUocmVzb2x2ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgbGlua3MgZnJvbSB0aGUgcHJvdmlkZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlZmVyZW5jZSBjYWNoZXMgcmVwcmVzZW50aW5nIHRoZSBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbExpbmtzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFJlZmVyZW5jZVtdIHtcbiAgbGV0IGxpbmtzOiBSZWZlcmVuY2VbXSA9IFtdO1xuXG4gIGlmIChjYWNoZS5saW5rcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUubGlua3MpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmVtYmVkcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUuZW1iZWRzKTtcbiAgfVxuXG4gIGlmIChjYWNoZS5mcm9udG1hdHRlckxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5mcm9udG1hdHRlckxpbmtzKTtcbiAgfVxuXG4gIHNvcnRSZWZlcmVuY2VzKGxpbmtzKTtcblxuICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgbGlua3MgPSBsaW5rcy5maWx0ZXIoKGxpbmssIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xpbmsgPSBsaW5rc1tpbmRleCAtIDFdO1xuICAgIGlmICghcHJldmlvdXNMaW5rKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBvciBwYXRoLlxuICogTk9URTogVGhlIGZpbGUgbWF5IGJlIG5vbi1leGlzdGVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MgZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlLCB0cnVlKTtcbiAgcmV0dXJuIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuKGFwcCwgW2ZpbGVdLCAoKSA9PiBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbCByZXRyeSBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCByZXRyeU9wdGlvbnM6IFJldHJ5T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj4ge1xuICBjb25zdCBzYWZlT3ZlcmxvYWQgPSAoYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZSBhcyBQYXJ0aWFsPEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlcj4pLnNhZmU7XG4gIGlmIChzYWZlT3ZlcmxvYWQpIHtcbiAgICByZXR1cm4gc2FmZU92ZXJsb2FkKHBhdGhPckZpbGUpO1xuICB9XG4gIGxldCBiYWNrbGlua3M6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+ID0gbnVsbCBhcyB1bmtub3duIGFzIEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+O1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICAgIGF3YWl0IGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHApO1xuICAgIGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBmaWxlKTtcbiAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgIGNvbnN0IG5vdGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgbm90ZVBhdGgpO1xuICAgICAgaWYgKCFub3RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBub3RlKTtcblxuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgbm90ZSk7XG4gICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyKGNvbnRlbnQpO1xuICAgICAgY29uc3QgbGlua3MgPSBiYWNrbGlua3MuZ2V0KG5vdGVQYXRoKTtcbiAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgbGV0IGFjdHVhbExpbms6IHN0cmluZztcbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMobGluaykpIHtcbiAgICAgICAgICBjb25zdCBsaW5rVmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsaW5rVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdHVhbExpbmsgPSBsaW5rVmFsdWUuc2xpY2UobGluay5zdGFydE9mZnNldCwgbGluay5lbmRPZmZzZXQpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBjb25zdCBsaW5rVmFsdWUgPSBnZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKGZyb250bWF0dGVyLCBsaW5rLmtleSk7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsaW5rVmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdHVhbExpbmsgPSBsaW5rVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdHVhbExpbmsgIT09IGxpbmsub3JpZ2luYWwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgcmV0cnlPcHRpb25zKTtcblxuICByZXR1cm4gYmFja2xpbmtzO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY2FjaGVkIG1ldGFkYXRhIGZvciBhIGdpdmVuIGZpbGUgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlT3JQYXRoIC0gVGhlIGZpbGUgb3IgcGF0aCB0byByZXRyaWV2ZSB0aGUgbWV0YWRhdGEgZm9yLlxuICogQHJldHVybnMgVGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgdGhlIGZpbGUsIG9yIG51bGwgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENhY2hlU2FmZShhcHA6IEFwcCwgZmlsZU9yUGF0aDogUGF0aE9yRmlsZSk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGEgfCBudWxsPiB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgZmlsZU9yUGF0aCk7XG4gIGlmICghZmlsZSB8fCBmaWxlLmRlbGV0ZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGF3YWl0IHNhdmVOb3RlKGFwcCwgZmlsZSk7XG5cbiAgY29uc3QgZmlsZUNhY2hlRW50cnkgPSBhcHAubWV0YWRhdGFDYWNoZS5maWxlQ2FjaGVbZmlsZS5wYXRoXTtcbiAgY29uc3QgaXNVcFRvRGF0ZSA9IGZpbGVDYWNoZUVudHJ5XG4gICAgJiYgZmlsZUNhY2hlRW50cnkubXRpbWUgPT09IGZpbGUuc3RhdC5tdGltZVxuICAgICYmIGZpbGVDYWNoZUVudHJ5LnNpemUgPT09IGZpbGUuc3RhdC5zaXplXG4gICAgJiYgYXBwLm1ldGFkYXRhQ2FjaGUubWV0YWRhdGFDYWNoZVtmaWxlQ2FjaGVFbnRyeS5oYXNoXTtcbiAgaWYgKCFpc1VwVG9EYXRlKSB7XG4gICAgYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZUZpbGVNZXRhZGF0YUFzeW5jKGZpbGUpO1xuICAgIGF3YWl0IGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHApO1xuICB9XG4gIHJldHVybiBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmcm9udCBtYXR0ZXIgZnJvbSB0aGUgbWV0YWRhdGEgY2FjaGUgc2FmZWx5LlxuICpcbiAqIEB0eXBlUGFyYW0gQ3VzdG9tRnJvbnRtYXR0ZXIgLSBUaGUgdHlwZSBvZiBjdXN0b20gZnJvbnQgbWF0dGVyLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIGZyb250IG1hdHRlciBmcm9tLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIGZyb250IG1hdHRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZyb250bWF0dGVyU2FmZTxDdXN0b21Gcm9udG1hdHRlciA9IHVua25vd24+KGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTxDb21iaW5lZEZyb250bWF0dGVyPEN1c3RvbUZyb250bWF0dGVyPj4ge1xuICBjb25zdCBjYWNoZSA9IGF3YWl0IGdldENhY2hlU2FmZShhcHAsIHBhdGhPckZpbGUpO1xuICByZXR1cm4gKGNhY2hlPy5mcm9udG1hdHRlciA/PyB7fSkgYXMgQ29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj47XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBtZXRhZGF0YSBmb3IgYSBnaXZlbiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBwYXJzZSB0aGUgbWV0YWRhdGEgZm9yLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlTWV0YWRhdGEoYXBwOiBBcHAsIHN0cjogc3RyaW5nKTogUHJvbWlzZTxDYWNoZWRNZXRhZGF0YT4ge1xuICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gIGNvbnN0IGJ1ZmZlciA9IGVuY29kZXIuZW5jb2RlKHN0cikuYnVmZmVyIGFzIEFycmF5QnVmZmVyO1xuICByZXR1cm4gYXdhaXQgYXBwLm1ldGFkYXRhQ2FjaGUuY29tcHV0ZU1ldGFkYXRhQXN5bmMoYnVmZmVyKSA/PyB7fTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgZmlsZXMgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byByZWdpc3Rlci5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCB1bnJlZ2lzdGVycyB0aGUgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckZpbGVzKGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdKTogKCkgPT4gdm9pZCB7XG4gIGNvbnN0IGRlbGV0ZWRQYXRocyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGlmICghZmlsZS5kZWxldGVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgZGVsZXRlZEZpbGU6IFRBYnN0cmFjdEZpbGUgPSBmaWxlO1xuXG4gICAgd2hpbGUgKGRlbGV0ZWRGaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGRlbGV0ZWRQYXRocy5hZGQoZGVsZXRlZEZpbGUucGF0aCk7XG4gICAgICBhcHAudmF1bHQuZmlsZU1hcFtkZWxldGVkRmlsZS5wYXRoXSA9IGRlbGV0ZWRGaWxlO1xuICAgICAgZGVsZXRlZEZpbGUgPSBkZWxldGVkRmlsZS5wYXJlbnQgPz8gZ2V0Rm9sZGVyKGFwcCwgcGFyZW50Rm9sZGVyUGF0aChkZWxldGVkRmlsZS5wYXRoKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRmlsZShmaWxlKSkge1xuICAgICAgYXBwLm1ldGFkYXRhQ2FjaGUudW5pcXVlRmlsZUxvb2t1cC5hZGQoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCksIGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBwYXRoIG9mIGRlbGV0ZWRQYXRocykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZVxuICAgICAgZGVsZXRlIGFwcC52YXVsdC5maWxlTWFwW3BhdGhdO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgaWYgKGZpbGUuZGVsZXRlZCAmJiBpc0ZpbGUoZmlsZSkpIHtcbiAgICAgICAgYXBwLm1ldGFkYXRhQ2FjaGUudW5pcXVlRmlsZUxvb2t1cC5yZW1vdmUoZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCksIGZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBUZW1wb3JhcmlseSByZWdpc3RlcnMgZmlsZXMgYW5kIHJ1bnMgYSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHRlbXBvcmFyaWx5IHJlZ2lzdGVyLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW48VD4oYXBwOiBBcHAsIGZpbGVzOiBUQWJzdHJhY3RGaWxlW10sIGZuOiAoKSA9PiBUKTogVCB7XG4gIGNvbnN0IHVucmVnaXN0ZXIgPSByZWdpc3RlckZpbGVzKGFwcCwgZmlsZXMpO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgdW5yZWdpc3RlcigpO1xuICB9XG59XG5cbi8qKlxuICogVGVtcG9yYXJpbHkgcmVnaXN0ZXJzIGZpbGVzIGFuZCBydW5zIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gdGVtcG9yYXJpbHkgcmVnaXN0ZXIuXG4gKiBAcGFyYW0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZW1wUmVnaXN0ZXJGaWxlc0FuZFJ1bkFzeW5jPFQ+KGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdLCBmbjogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCB1bnJlZ2lzdGVyID0gcmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIFNhdmVzIHRoZSBzcGVjaWZpZWQgbm90ZSBpbiB0aGUgT2JzaWRpYW4gYXBwLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgbm90ZSB0byBiZSBzYXZlZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbm90ZSBpcyBzYXZlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2F2ZU5vdGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShhcHAsIHBhdGhPckZpbGUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IGdldFBhdGgoYXBwLCBwYXRoT3JGaWxlKTtcblxuICBmb3IgKGNvbnN0IGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoVmlld1R5cGUuTWFya2Rvd24pKSB7XG4gICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldyAmJiBsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gcGF0aCAmJiBsZWFmLnZpZXcuZGlydHkpIHtcbiAgICAgIGF3YWl0IGxlYWYudmlldy5zYXZlKCk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLHNCQUE2QjtBQUM3Qiw2QkFLTztBQU1QLG1CQUFpQztBQUNqQyx5QkFBdUM7QUFDdkMsd0JBT087QUFDUCx5QkFBaUM7QUFDakMsNkNBQWtEO0FBQ2xELHVCQUErQjtBQUMvQixtQkFBeUI7QUFxQnpCLGVBQXNCLHlCQUF5QixLQUF5QjtBQUN0RSxRQUFNLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDN0IsUUFBSSxjQUFjLGFBQWEsT0FBTztBQUFBLEVBQ3hDLENBQUM7QUFDSDtBQVFPLFNBQVMsWUFBWSxPQUFvQztBQUM5RCxNQUFJLFFBQXFCLENBQUM7QUFFMUIsTUFBSSxNQUFNLE9BQU87QUFDZixVQUFNLEtBQUssR0FBRyxNQUFNLEtBQUs7QUFBQSxFQUMzQjtBQUVBLE1BQUksTUFBTSxRQUFRO0FBQ2hCLFVBQU0sS0FBSyxHQUFHLE1BQU0sTUFBTTtBQUFBLEVBQzVCO0FB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
233
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL01ldGFkYXRhQ2FjaGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgbWV0YWRhdGEgY2FjaGUgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENhY2hlZE1ldGFkYXRhLFxuICBSZWZlcmVuY2UsXG4gIFRBYnN0cmFjdEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBDdXN0b21BcnJheURpY3QgfSBmcm9tICdvYnNpZGlhbi10eXBpbmdzJztcblxuaW1wb3J0IHsgTWFya2Rvd25WaWV3IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgQ3VzdG9tQXJyYXlEaWN0SW1wbCxcbiAgaXNGcm9udG1hdHRlckxpbmtDYWNoZSxcbiAgaXNSZWZlcmVuY2VDYWNoZSxcbiAgcGFyZW50Rm9sZGVyUGF0aCxcbiAgVmlld1R5cGVcbn0gZnJvbSAnb2JzaWRpYW4tdHlwaW5ncy9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQgdHlwZSB7IENvbWJpbmVkRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcblxuaW1wb3J0IHsgcmV0cnlXaXRoVGltZW91dCB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGdldE5lc3RlZFByb3BlcnR5VmFsdWUgfSBmcm9tICcuLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldFBhdGgsXG4gIGlzRmlsZSxcbiAgaXNNYXJrZG93bkZpbGVcbn0gZnJvbSAnLi9GaWxlU3lzdGVtLnRzJztcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL0Zyb250bWF0dGVyLnRzJztcbmltcG9ydCB7IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyB9IGZyb20gJy4vRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cy50cyc7XG5pbXBvcnQgeyBzb3J0UmVmZXJlbmNlcyB9IGZyb20gJy4vUmVmZXJlbmNlLnRzJztcbmltcG9ydCB7IHJlYWRTYWZlIH0gZnJvbSAnLi9WYXVsdC50cyc7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgdGhlIGdldEJhY2tsaW5rc0ZvckZpbGUgbWV0aG9kIHRoYXQgcHJvdmlkZXMgYSBzYWZlIG92ZXJsb2FkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlciB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAgICovXG4gIHNhZmUocGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q3VzdG9tQXJyYXlEaWN0PFJlZmVyZW5jZT4+O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkgZm9yIGFsbCBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgcmVhZHkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBhcHAubWV0YWRhdGFDYWNoZS5vbkNsZWFuQ2FjaGUocmVzb2x2ZSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbGwgbGlua3MgZnJvbSB0aGUgcHJvdmlkZWQgY2FjaGUuXG4gKlxuICogQHBhcmFtIGNhY2hlIC0gVGhlIGNhY2hlZCBtZXRhZGF0YS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlZmVyZW5jZSBjYWNoZXMgcmVwcmVzZW50aW5nIHRoZSBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbExpbmtzKGNhY2hlOiBDYWNoZWRNZXRhZGF0YSk6IFJlZmVyZW5jZVtdIHtcbiAgbGV0IGxpbmtzOiBSZWZlcmVuY2VbXSA9IFtdO1xuXG4gIGlmIChjYWNoZS5saW5rcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUubGlua3MpO1xuICB9XG5cbiAgaWYgKGNhY2hlLmVtYmVkcykge1xuICAgIGxpbmtzLnB1c2goLi4uY2FjaGUuZW1iZWRzKTtcbiAgfVxuXG4gIGlmIChjYWNoZS5mcm9udG1hdHRlckxpbmtzKSB7XG4gICAgbGlua3MucHVzaCguLi5jYWNoZS5mcm9udG1hdHRlckxpbmtzKTtcbiAgfVxuXG4gIHNvcnRSZWZlcmVuY2VzKGxpbmtzKTtcblxuICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgbGlua3MgPSBsaW5rcy5maWx0ZXIoKGxpbmssIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xpbmsgPSBsaW5rc1tpbmRleCAtIDFdO1xuICAgIGlmICghcHJldmlvdXNMaW5rKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNSZWZlcmVuY2VDYWNoZShsaW5rKSAmJiBpc1JlZmVyZW5jZUNhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIHJldHVybiBsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCAhPT0gcHJldmlvdXNMaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZShsaW5rKSAmJiBpc0Zyb250bWF0dGVyTGlua0NhY2hlKHByZXZpb3VzTGluaykpIHtcbiAgICAgIGNvbnN0IGxpbmtTdGFydE9mZnNldCA9IGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGVXaXRoT2Zmc2V0cyhsaW5rKSA/IGxpbmsuc3RhcnRPZmZzZXQgOiAwO1xuICAgICAgY29uc3QgcHJldmlvdXNMaW5rU3RhcnRPZmZzZXQgPSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKSA/IHByZXZpb3VzTGluay5zdGFydE9mZnNldCA6IDA7XG4gICAgICByZXR1cm4gbGluay5rZXkgIT09IHByZXZpb3VzTGluay5rZXkgfHwgaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspICE9PSBpc0Zyb250bWF0dGVyTGlua0NhY2hlV2l0aE9mZnNldHMocHJldmlvdXNMaW5rKVxuICAgICAgICB8fCBsaW5rU3RhcnRPZmZzZXQgIT09IHByZXZpb3VzTGlua1N0YXJ0T2Zmc2V0O1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gbGlua3M7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBiYWNrbGlua3MgZm9yIGEgZmlsZSBvciBwYXRoLlxuICogTk9URTogVGhlIGZpbGUgbWF5IGJlIG5vbi1leGlzdGVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSBiYWNrbGlua3MgZm9yIHRoZSBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2xpbmtzRm9yRmlsZU9yUGF0aChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+IHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGUoYXBwLCBwYXRoT3JGaWxlLCB0cnVlKTtcbiAgcmV0dXJuIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuKGFwcCwgW2ZpbGVdLCAoKSA9PiBhcHAubWV0YWRhdGFDYWNoZS5nZXRCYWNrbGlua3NGb3JGaWxlKGZpbGUpKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGJhY2tsaW5rcyBmb3IgYSBmaWxlIHNhZmVseS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSByZXRyeU9wdGlvbnMgLSBPcHRpb25hbCByZXRyeSBvcHRpb25zLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBkaWN0aW9uYXJ5IG9mIGJhY2tsaW5rcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJhY2tsaW5rc0ZvckZpbGVTYWZlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCByZXRyeU9wdGlvbnM6IFJldHJ5T3B0aW9ucyA9IHt9KTogUHJvbWlzZTxDdXN0b21BcnJheURpY3Q8UmVmZXJlbmNlPj4ge1xuICBjb25zdCBzYWZlT3ZlcmxvYWQgPSAoYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0QmFja2xpbmtzRm9yRmlsZSBhcyBQYXJ0aWFsPEdldEJhY2tsaW5rc0ZvckZpbGVTYWZlV3JhcHBlcj4pLnNhZmU7XG4gIGlmIChzYWZlT3ZlcmxvYWQpIHtcbiAgICByZXR1cm4gc2FmZU92ZXJsb2FkKHBhdGhPckZpbGUpO1xuICB9XG4gIGxldCBiYWNrbGlua3M6IEN1c3RvbUFycmF5RGljdDxSZWZlcmVuY2U+ID0gbmV3IEN1c3RvbUFycmF5RGljdEltcGw8UmVmZXJlbmNlPigpO1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICAgIGF3YWl0IGVuc3VyZU1ldGFkYXRhQ2FjaGVSZWFkeShhcHApO1xuICAgIGJhY2tsaW5rcyA9IGdldEJhY2tsaW5rc0ZvckZpbGVPclBhdGgoYXBwLCBmaWxlKTtcbiAgICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIGJhY2tsaW5rcy5rZXlzKCkpIHtcbiAgICAgIGNvbnN0IG5vdGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgbm90ZVBhdGgpO1xuICAgICAgaWYgKCFub3RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2F2ZU5vdGUoYXBwLCBub3RlKTtcblxuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRTYWZlKGFwcCwgbm90ZSk7XG4gICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBwYXJzZUZyb250bWF0dGVyKGNvbnRlbnQpO1xuICAgICAgY29uc3QgbGlua3MgPSBiYWNrbGlua3MuZ2V0KG5vdGVQYXRoKTtcbiAgICAgIGlmICghbGlua3MpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgbGV0IGFjdHVhbExpbms6IHN0cmluZztcbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlQ2FjaGUobGluaykpIHtcbiAgICAgICAgICBhY3R1YWxMaW5rID0gY29udGVudC5zbGljZShsaW5rLnBvc2l0aW9uLnN0YXJ0Lm9mZnNldCwgbGluay5wb3NpdGlvbi5lbmQub2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0Zyb250bWF0dGVyTGlua0NhY2hlKGxpbmspKSB7XG4gICAgICAgICAgY29uc3QgbGlua1ZhbHVlID0gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShmcm9udG1hdHRlciwgbGluay5rZXkpO1xuICAgICAgICAgIGlmICh0eXBlb2YgbGlua1ZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzdGFydE9mZnNldCA9IDA7XG4gICAgICAgICAgbGV0IGVuZE9mZnNldCA9IGxpbmtWYWx1ZS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAoaXNGcm9udG1hdHRlckxpbmtDYWNoZVdpdGhPZmZzZXRzKGxpbmspKSB7XG4gICAgICAgICAgICBzdGFydE9mZnNldCA9IGxpbmsuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBlbmRPZmZzZXQgPSBsaW5rLmVuZE9mZnNldDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhY3R1YWxMaW5rID0gbGlua1ZhbHVlLnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3R1YWxMaW5rICE9PSBsaW5rLm9yaWdpbmFsKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0sIHJldHJ5T3B0aW9ucyk7XG5cbiAgcmV0dXJuIGJhY2tsaW5rcztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGNhY2hlZCBtZXRhZGF0YSBmb3IgYSBnaXZlbiBmaWxlIG9yIHBhdGguXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZU9yUGF0aCAtIFRoZSBmaWxlIG9yIHBhdGggdG8gcmV0cmlldmUgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEByZXR1cm5zIFRoZSBjYWNoZWQgbWV0YWRhdGEgZm9yIHRoZSBmaWxlLCBvciBudWxsIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDYWNoZVNhZmUoYXBwOiBBcHAsIGZpbGVPclBhdGg6IFBhdGhPckZpbGUpOiBQcm9taXNlPENhY2hlZE1ldGFkYXRhIHwgbnVsbD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZU9yTnVsbChhcHAsIGZpbGVPclBhdGgpO1xuICBpZiAoIWZpbGUgfHwgZmlsZS5kZWxldGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhd2FpdCBzYXZlTm90ZShhcHAsIGZpbGUpO1xuXG4gIGNvbnN0IGZpbGVDYWNoZUVudHJ5ID0gYXBwLm1ldGFkYXRhQ2FjaGUuZmlsZUNhY2hlW2ZpbGUucGF0aF07XG4gIGNvbnN0IGlzVXBUb0RhdGUgPSBmaWxlQ2FjaGVFbnRyeVxuICAgICYmIGZpbGVDYWNoZUVudHJ5Lm10aW1lID09PSBmaWxlLnN0YXQubXRpbWVcbiAgICAmJiBmaWxlQ2FjaGVFbnRyeS5zaXplID09PSBmaWxlLnN0YXQuc2l6ZVxuICAgICYmIGFwcC5tZXRhZGF0YUNhY2hlLm1ldGFkYXRhQ2FjaGVbZmlsZUNhY2hlRW50cnkuaGFzaF07XG4gIGlmICghaXNVcFRvRGF0ZSkge1xuICAgIGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVGaWxlTWV0YWRhdGFBc3luYyhmaWxlKTtcbiAgICBhd2FpdCBlbnN1cmVNZXRhZGF0YUNhY2hlUmVhZHkoYXBwKTtcbiAgfVxuICByZXR1cm4gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZnJvbnQgbWF0dGVyIGZyb20gdGhlIG1ldGFkYXRhIGNhY2hlIHNhZmVseS5cbiAqXG4gKiBAdHlwZVBhcmFtIEN1c3RvbUZyb250bWF0dGVyIC0gVGhlIHR5cGUgb2YgY3VzdG9tIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBmcm9udCBtYXR0ZXIgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBjb21iaW5lZCBmcm9udCBtYXR0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGcm9udG1hdHRlclNhZmU8Q3VzdG9tRnJvbnRtYXR0ZXIgPSB1bmtub3duPihhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFByb21pc2U8Q29tYmluZWRGcm9udG1hdHRlcjxDdXN0b21Gcm9udG1hdHRlcj4+IHtcbiAgY29uc3QgY2FjaGUgPSBhd2FpdCBnZXRDYWNoZVNhZmUoYXBwLCBwYXRoT3JGaWxlKTtcbiAgcmV0dXJuIChjYWNoZT8uZnJvbnRtYXR0ZXIgPz8ge30pIGFzIENvbWJpbmVkRnJvbnRtYXR0ZXI8Q3VzdG9tRnJvbnRtYXR0ZXI+O1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gcGFyc2UgdGhlIG1ldGFkYXRhIGZvci5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU1ldGFkYXRhKGFwcDogQXBwLCBzdHI6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVkTWV0YWRhdGE+IHtcbiAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICBjb25zdCBidWZmZXIgPSBlbmNvZGVyLmVuY29kZShzdHIpLmJ1ZmZlciBhcyBBcnJheUJ1ZmZlcjtcbiAgcmV0dXJuIGF3YWl0IGFwcC5tZXRhZGF0YUNhY2hlLmNvbXB1dGVNZXRhZGF0YUFzeW5jKGJ1ZmZlcikgPz8ge307XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGZpbGVzIGluIHRoZSBPYnNpZGlhbiBhcHAuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gcmVnaXN0ZXIuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJGaWxlcyhhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSk6ICgpID0+IHZvaWQge1xuICBjb25zdCBkZWxldGVkUGF0aHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBpZiAoIWZpbGUuZGVsZXRlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IGRlbGV0ZWRGaWxlOiBUQWJzdHJhY3RGaWxlID0gZmlsZTtcblxuICAgIHdoaWxlIChkZWxldGVkRmlsZS5kZWxldGVkKSB7XG4gICAgICBkZWxldGVkUGF0aHMuYWRkKGRlbGV0ZWRGaWxlLnBhdGgpO1xuICAgICAgYXBwLnZhdWx0LmZpbGVNYXBbZGVsZXRlZEZpbGUucGF0aF0gPSBkZWxldGVkRmlsZTtcbiAgICAgIGRlbGV0ZWRGaWxlID0gZGVsZXRlZEZpbGUucGFyZW50ID8/IGdldEZvbGRlcihhcHAsIHBhcmVudEZvbGRlclBhdGgoZGVsZXRlZEZpbGUucGF0aCksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChpc0ZpbGUoZmlsZSkpIHtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAuYWRkKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiBkZWxldGVkUGF0aHMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgICAgIGRlbGV0ZSBhcHAudmF1bHQuZmlsZU1hcFtwYXRoXTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGlmIChmaWxlLmRlbGV0ZWQgJiYgaXNGaWxlKGZpbGUpKSB7XG4gICAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLnVuaXF1ZUZpbGVMb29rdXAucmVtb3ZlKGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpLCBmaWxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVGVtcG9yYXJpbHkgcmVnaXN0ZXJzIGZpbGVzIGFuZCBydW5zIGEgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byB0ZW1wb3JhcmlseSByZWdpc3Rlci5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBydW4uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRlbXBSZWdpc3RlckZpbGVzQW5kUnVuPFQ+KGFwcDogQXBwLCBmaWxlczogVEFic3RyYWN0RmlsZVtdLCBmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCB1bnJlZ2lzdGVyID0gcmVnaXN0ZXJGaWxlcyhhcHAsIGZpbGVzKTtcblxuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIHVucmVnaXN0ZXIoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRlbXBvcmFyaWx5IHJlZ2lzdGVycyBmaWxlcyBhbmQgcnVucyBhbiBhc3luYyBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIGZpbGVzIC0gVGhlIGZpbGVzIHRvIHRlbXBvcmFyaWx5IHJlZ2lzdGVyLlxuICogQHBhcmFtIGZuIC0gVGhlIGZ1bmN0aW9uIHRvIHJ1bi5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVtcFJlZ2lzdGVyRmlsZXNBbmRSdW5Bc3luYzxUPihhcHA6IEFwcCwgZmlsZXM6IFRBYnN0cmFjdEZpbGVbXSwgZm46ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgdW5yZWdpc3RlciA9IHJlZ2lzdGVyRmlsZXMoYXBwLCBmaWxlcyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1bnJlZ2lzdGVyKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTYXZlcyB0aGUgc3BlY2lmaWVkIG5vdGUgaW4gdGhlIE9ic2lkaWFuIGFwcC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIG5vdGUgdG8gYmUgc2F2ZWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG5vdGUgaXMgc2F2ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVOb3RlKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghaXNNYXJrZG93bkZpbGUoYXBwLCBwYXRoT3JGaWxlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yRmlsZSk7XG5cbiAgZm9yIChjb25zdCBsZWFmIG9mIGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFZpZXdUeXBlLk1hcmtkb3duKSkge1xuICAgIGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhdGggJiYgbGVhZi52aWV3LmRpcnR5KSB7XG4gICAgICBhd2FpdCBsZWFmLnZpZXcuc2F2ZSgpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFjQSxzQkFBNkI7QUFDN0IsNkJBTU87QUFNUCxtQkFBaUM7QUFDakMseUJBQXVDO0FBQ3ZDLHdCQU9PO0FBQ1AseUJBQWlDO0FBQ2pDLDZDQUFrRDtBQUNsRCx1QkFBK0I7QUFDL0IsbUJBQXlCO0FBcUJ6QixlQUFzQix5QkFBeUIsS0FBeUI7QUFDdEUsUUFBTSxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBQzdCLFFBQUksY0FBYyxhQUFhLE9BQU87QUFBQSxFQUN4QyxDQUFDO0FBQ0g7QUFRTyxTQUFTLFlBQVksT0FBb0M7QUFDOUQsTUFBSSxRQUFxQixDQUFDO0FBRTFCLE1BQUksTUFBTSxPQUFPO0FBQ2YsVUFBTSxLQUFLLEdBQUcsTUFBTSxLQUFLO0FBQUEsRUFDM0I7QUFFQSxNQUFJLE1BQU0sUUFBUTtBQUNoQixVQUFNLEtBQUssR0FBRyxNQUFNLE1BQU07QUFBQSxFQUM1QjtBQUVBLE1BQUksTUFBTSxrQkFB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
@@ -5,7 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function initEsm(){if(globalThis.process){return}const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};globalThis.process=browserProcess})();
7
7
 
8
- const LIBRARY_VERSION = "30.2.0";
8
+ const LIBRARY_VERSION = "30.3.0";
9
9
  const LIBRARY_NAME = "obsidian-dev-utils";
10
10
  const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACnCJ;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AChDF;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACRJ;EACE;;;ACDF;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
11
11
  export {
@@ -70,6 +70,9 @@ export interface ToJsonOptions {
70
70
  */
71
71
  tokenSubstitutions: Partial<TokenSubstitutions>;
72
72
  }
73
+ interface ModuleWithDefaultExport<T> {
74
+ default: T;
75
+ }
73
76
  interface TokenSubstitutions {
74
77
  circularReference: string;
75
78
  maxDepthLimitReached: string;
@@ -137,6 +140,15 @@ export declare function deleteProperties<T extends object>(obj: T, propertyNames
137
140
  * @returns `true` if the property was present, otherwise `false`.
138
141
  */
139
142
  export declare function deleteProperty<T extends object>(obj: T, propertyName: keyof T): boolean;
143
+ /**
144
+ * Extracts the default export from a module.
145
+ *
146
+ * Useful to handle incorrect default export interop between ESM and CJS.
147
+ *
148
+ * @param module - The module to extract the default export from.
149
+ * @returns The default export.
150
+ */
151
+ export declare function extractDefaultExportInterop<T>(module: ModuleWithDefaultExport<T>): T;
140
152
  /**
141
153
  * Gets all entries of an object.
142
154
  *
@@ -78,6 +78,15 @@ function deleteProperty(obj, propertyName) {
78
78
  delete obj[propertyName];
79
79
  return true;
80
80
  }
81
+ function extractDefaultExportInterop(module) {
82
+ if (typeof module !== "object" || module === null) {
83
+ return module;
84
+ }
85
+ if ("default" in module) {
86
+ return module.default;
87
+ }
88
+ return module;
89
+ }
81
90
  function getAllEntries(obj) {
82
91
  return getAllKeys(obj).map((key) => [key, obj[key]]);
83
92
  }
@@ -384,6 +393,7 @@ export {
384
393
  deepEqual,
385
394
  deleteProperties,
386
395
  deleteProperty,
396
+ extractDefaultExportInterop,
387
397
  getAllEntries,
388
398
  getAllKeys,
389
399
  getNestedPropertyValue,
@@ -393,4 +403,4 @@ export {
393
403
  setNestedPropertyValue,
394
404
  toJson
395
405
  };
396
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL09iamVjdFV0aWxzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uc3RydWN0b3IsXG4gIFVuZGVmaW5lZE9uUGFydGlhbERlZXBcbn0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUge1xuICBNYXliZVJldHVybixcbiAgU3RyaW5nS2V5c1xufSBmcm9tICcuL1R5cGUudHMnO1xuXG5pbXBvcnQge1xuICBlcnJvclRvU3RyaW5nLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dC5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25IYW5kbGluZ01vZGUge1xuICAvKipcbiAgICogRXhjbHVkZXMgZnVuY3Rpb25zIGZyb20gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIHRoZSBmdWxsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRnVsbCA9ICdmdWxsJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIG9ubHkgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgTmFtZU9ubHkgPSAnbmFtZU9ubHknXG59XG5cbmVudW0gVG9rZW5TdWJzdGl0dXRpb25LZXkge1xuICBDaXJjdWxhclJlZmVyZW5jZSA9ICdDaXJjdWxhclJlZmVyZW5jZScsXG4gIEZ1bmN0aW9uID0gJ0Z1bmN0aW9uJyxcbiAgTWF4RGVwdGhMaW1pdFJlYWNoZWQgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWQnLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5ID0gJ01heERlcHRoTGltaXRSZWFjaGVkQXJyYXknLFxuICBUb0pTT05GYWlsZWQgPSAnVG9KU09ORmFpbGVkJyxcbiAgVW5kZWZpbmVkID0gJ1VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0IChkZWZhdWx0OiBgZXhjbHVkZWApLlxuICAgKi9cbiAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIG5lc3RlZCBvYmplY3RzIHRvIGluY2x1ZGUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBVc2UgYC0xYCBmb3Igbm8gbGltaXQuXG4gICAqIERlZmF1bHRzIHRvIGAtMWAuXG4gICAqL1xuICBtYXhEZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gY2F0Y2ggZXJyb3JzIGluIGB0b0pTT04oKWAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGEgcGxhY2Vob2xkZXIuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRDYXRjaFRvSlNPTkVycm9yczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlRXJyb3JzOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gc29ydCB0aGUga2V5cyBvZiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRTb3J0S2V5czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIEpTT04gb3V0cHV0LiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBzcGFjZXMgb3IgYSBzdHJpbmcuIERlZmF1bHRzIHRvIGAyYC5cbiAgICovXG4gIHNwYWNlOiBudW1iZXIgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbnMgdG8gdXNlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIHRva2VuU3Vic3RpdHV0aW9uczogUGFydGlhbDxUb2tlblN1YnN0aXR1dGlvbnM+O1xufVxuXG5pbnRlcmZhY2UgQXBwbHlTdWJzdGl0dXRpb25zT3B0aW9ucyB7XG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdO1xuICBpbmRleDogbnVtYmVyO1xuICBrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5O1xuICBzdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnM7XG59XG5cbmludGVyZmFjZSBFcXVhbGl0eUNvbXBhcmVyRW50cnk8VD4ge1xuICBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD47XG4gIGVxdWFsaXR5Q29tcGFyZXI6IChhOiBULCBiOiBUKSA9PiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSlNPTlNlcmlhbGl6YWJsZSB7XG4gIHRvSlNPTiguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgVG9rZW5TdWJzdGl0dXRpb25zIHtcbiAgY2lyY3VsYXJSZWZlcmVuY2U6IHN0cmluZztcbiAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IHN0cmluZztcbiAgdG9KU09ORmFpbGVkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEtFWV9TRVBBUkFUT1IgPSAnLic7XG5jb25zdCBlcXVhbGl0eUNvbXBhcmVyRW50cmllcyA9IGNyZWF0ZUVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKFxuICBbXG4gICAgeyBjb25zdHJ1Y3RvcjogQXJyYXlCdWZmZXIsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbEFycmF5QnVmZmVyIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogRGF0ZSwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsRGF0ZSB9LFxuICAgIHsgY29uc3RydWN0b3I6IFJlZ0V4cCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsUmVnRXhwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogTWFwLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxNYXAgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBTZXQsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFNldCB9XG4gIF0gYXMgY29uc3Rcbik7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVT4odGFyZ2V0OiBULCBzb3VyY2U6IFUpOiBUICYgVTtcblxuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTMgLSBUaGUgdGhpcmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWLCBXPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYsIHNvdXJjZTM6IFcpOiBUICYgVSAmIFYgJiBXO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZXMgLSBUaGUgc291cmNlIG9iamVjdHMgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgcmV0dXJuIF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuLyoqXG4gKiBDbG9uZXMgYW4gb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIG9yaWdpbmFsIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSkgYXMgVDtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYUNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgY29uc3QgYkNvbnN0cnVjdG9yID0gYi5jb25zdHJ1Y3RvcjtcblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBiQ29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBkZWVwRXF1YWxUeXBlZChhLCBiKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBnZXRBbGxLZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IGdldEFsbEtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGEgYXMgR2VuZXJpY09iamVjdDtcbiAgY29uc3QgYlJlY29yZCA9IGIgYXMgR2VuZXJpY09iamVjdDtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lcyAtIFRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIHdlcmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lczogKGtleW9mIFQpW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQsIHByb3BlcnR5TmFtZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICBpZiAoIU9iamVjdC5oYXNPd24ob2JqLCBwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgZGVsZXRlIG9ialtwcm9wZXJ0eU5hbWVdO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBlbnRyaWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGVudHJpZXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwgZW50cmllcyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsRW50cmllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBbU3RyaW5nS2V5czxUPiwgVFtTdHJpbmdLZXlzPFQ+XV1bXSB7XG4gIHJldHVybiBnZXRBbGxLZXlzKG9iaikubWFwKChrZXkpID0+IFtrZXksIG9ialtrZXldXSk7XG59XG5cbi8qKlxuICogR2V0cyBhbGwga2V5cyBvZiBhbiBvYmplY3QuXG4gKiBJbmNsdWRlcyBmaWVsZHMgYW5kIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBrZXlzIG9mLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgYWxsIGtleXMgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEtleXM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogU3RyaW5nS2V5czxUPltdIHtcbiAgY29uc3Qga2V5czogU3RyaW5nS2V5czxUPltdID0gW107XG4gIGxldCBjdXJyZW50OiBudWxsIHwgb2JqZWN0ID0gb2JqO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY3VycmVudCkgYXMgUmVjb3JkPHN0cmluZywgUHJvcGVydHlEZXNjcmlwdG9yPjtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFzR2V0dGVyID0gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nO1xuICAgICAgY29uc3QgaGFzU2V0dGVyID0gdHlwZW9mIGRlc2NyaXB0b3Iuc2V0ID09PSAnZnVuY3Rpb24nO1xuICAgICAgaWYgKGhhc0dldHRlciB8fCBoYXNTZXR0ZXIpIHtcbiAgICAgICAgaWYgKGhhc0dldHRlciAmJiBoYXNTZXR0ZXIpIHtcbiAgICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmIGRlc2NyaXB0b3Iud3JpdGFibGUpIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSBhcyBTdHJpbmdLZXlzPFQ+KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjdXJyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnQpIGFzIG51bGwgfCBvYmplY3Q7XG4gIH1cbiAgcmV0dXJuIGtleXMuc29ydCgpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGZyb20uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBHZW5lcmljT2JqZWN0LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgbGV0IG5vZGU6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KEtFWV9TRVBBUkFUT1IpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvdG90eXBlIG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAcGFyYW0gaW5zdGFuY2UgLSBUaGUgb2JqZWN0IGluc3RhbmNlIHRvIHJldHJpZXZlIHRoZSBwcm90b3R5cGUgb2YuXG4gKiBAcmV0dXJucyBUaGUgcHJvdG90eXBlIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZjxUPihpbnN0YW5jZTogVCk6IFQge1xuICBpZiAoaW5zdGFuY2UgPT09IHVuZGVmaW5lZCB8fCBpbnN0YW5jZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSBhcyBUO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIHByb3BlcnR5IG9mIGEgZ2l2ZW4gdHlwZSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGFzIGEgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZW9mPFQ+KG5hbWU6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPik6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgb3B0aW9uYWwgcHJvcGVydGllcyB0byBhbGxvdyBgdW5kZWZpbmVkYCBhc3NpZ25tZW50IGluIHN0cmljdCBtb2RlLlxuICpcbiAqIFRoaXMgdXRpbGl0eSBwcm92aWRlcyBhIHdvcmthcm91bmQgZm9yIHRoZSBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgIFR5cGVTY3JpcHQgZmxhZyxcbiAqIHdoaWNoIHByb2hpYml0cyBkaXJlY3RseSBhc3NpZ25pbmcgYHVuZGVmaW5lZGAgdG8gb3B0aW9uYWwgcHJvcGVydGllcyB3aGVuIHRoZSB0eXBlXG4gKiBleHBsaWNpdGx5IG9taXRzIGB1bmRlZmluZWRgLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBXaXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlczogdHJ1ZWBcbiAqIGNvbnN0IHg6IHsgcHJvcD86IHN0cmluZyB9ID0geyBwcm9wOiB1bmRlZmluZWQgfTsgLy8gQ29tcGlsZXIgZXJyb3JcbiAqXG4gKiAvLyBVc2luZyB0aGlzIHV0aWxpdHk6XG4gKiBjb25zdCB5OiB7IHByb3A/OiBzdHJpbmcgfSA9IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczx7IHByb3A/OiBzdHJpbmcgfT4oeyBwcm9wOiB1bmRlZmluZWQgfSk7IC8vIFdvcmtzXG4gKiBgYGBcbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdGFyZ2V0IHR5cGUgd2l0aCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIG5vcm1hbGl6ZSwgYWxsb3dpbmcgZXhwbGljaXQgYHVuZGVmaW5lZGAgZm9yIG9wdGlvbmFsIHByb3BlcnRpZXMuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPFQ+KG9iajogVW5kZWZpbmVkT25QYXJ0aWFsRGVlcDxUPik6IFQge1xuICByZXR1cm4gb2JqIGFzIFQ7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgaW4gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIHNldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGluLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBHZW5lcmljT2JqZWN0LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBQcm9wZXJ0eSBwYXRoICR7cGF0aH0gbm90IGZvdW5kYCk7XG4gIGxldCBub2RlOiBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdChLRVlfU0VQQVJBVE9SKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cy5zbGljZSgwLCAtMSkpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBHZW5lcmljT2JqZWN0IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGtleXMuYXQoLTEpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8IGxhc3RLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdmFsdWUgdG8gYSBKU09OIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgY29udmVydGVkIHRvIEpTT04uIFRoaXMgY2FuIGJlIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSlNPTiBjb252ZXJzaW9uIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uKHZhbHVlOiB1bmtub3duLCBvcHRpb25zOiBQYXJ0aWFsPFRvSnNvbk9wdGlvbnM+ID0ge30pOiBzdHJpbmcge1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IHsgdG9rZW5TdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnMgfSAmIFRvSnNvbk9wdGlvbnMgPSB7XG4gICAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkV4Y2x1ZGUsXG4gICAgbWF4RGVwdGg6IC0xLFxuICAgIHNob3VsZENhdGNoVG9KU09ORXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUVycm9yczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBmYWxzZSxcbiAgICBzaG91bGRTb3J0S2V5czogZmFsc2UsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBzcGFjZTogMixcbiAgICB0b2tlblN1YnN0aXR1dGlvbnM6IHtcbiAgICAgIGNpcmN1bGFyUmVmZXJlbmNlOiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oVG9rZW5TdWJzdGl0dXRpb25LZXkuQ2lyY3VsYXJSZWZlcmVuY2UpLFxuICAgICAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZCksXG4gICAgICB0b0pTT05GYWlsZWQ6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQpXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGZ1bGxPcHRpb25zID0ge1xuICAgIC4uLkRFRkFVTFRfT1BUSU9OUyxcbiAgICAuLi5vcHRpb25zLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgLi4uREVGQVVMVF9PUFRJT05TLnRva2VuU3Vic3RpdHV0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMudG9rZW5TdWJzdGl0dXRpb25zXG4gICAgfVxuICB9O1xuXG4gIGlmIChmdWxsT3B0aW9ucy5tYXhEZXB0aCA9PT0gLTEpIHtcbiAgICBmdWxsT3B0aW9ucy5tYXhEZXB0aCA9IEluZmluaXR5O1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25UZXh0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgdXNlZE9iamVjdHMgPSBuZXcgV2Vha1NldDxvYmplY3Q+KCk7XG5cbiAgY29uc3QgcGxhaW5PYmplY3QgPSB0b1BsYWluT2JqZWN0KHZhbHVlLCAnJywgMCwgdHJ1ZSwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgbGV0IGpzb24gPSBKU09OLnN0cmluZ2lmeShwbGFpbk9iamVjdCwgbnVsbCwgZnVsbE9wdGlvbnMuc3BhY2UpID8/ICcnO1xuICBqc29uID0gcmVwbGFjZUFsbChqc29uLCAvXCJcXFtcXFsoPzxLZXk+W0EtWmEtel0rKSg/PEluZGV4PlxcZCopXFxdXFxdXCIvZywgKF8sIGtleSwgaW5kZXhTdHIpID0+XG4gICAgYXBwbHlTdWJzdGl0dXRpb25zKHtcbiAgICAgIGZ1bmN0aW9uVGV4dHMsXG4gICAgICBpbmRleDogaW5kZXhTdHIgPyBwYXJzZUludChpbmRleFN0ciwgMTApIDogMCxcbiAgICAgIGtleToga2V5IGFzIFRva2VuU3Vic3RpdHV0aW9uS2V5LFxuICAgICAgc3Vic3RpdHV0aW9uczogZnVsbE9wdGlvbnMudG9rZW5TdWJzdGl0dXRpb25zXG4gICAgfSkpO1xuICByZXR1cm4ganNvbjtcbn1cblxuZnVuY3Rpb24gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBkZXNjcmlwdG9yXSBvZiBPYmplY3QuZW50cmllcyhkZXNjcmlwdG9ycykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEF2b2lkIHJlZGVmaW5pbmcgcmVhZC1vbmx5IHByb3BlcnRpZXMgKGVzcGVjaWFsbHkgYHByb3RvdHlwZWApXG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgPT09ICdwcm90b3R5cGUnXG4gICAgICAgICAgfHwgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy53cml0YWJsZSA9PT0gZmFsc2VcbiAgICAgICAgICAgICYmICFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KT8uY29uZmlndXJhYmxlKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIGRlZmluZVByb3BlcnR5IGZhaWxzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc291cmNlUHJvdG90eXBlcyA9IHNvdXJjZXNcbiAgICAubWFwKChzb3VyY2UpID0+IGdldFByb3RvdHlwZU9mPG9iamVjdCB8IHVuZGVmaW5lZD4oc291cmNlKSlcbiAgICAuZmlsdGVyKChwcm90byk6IHByb3RvIGlzIG9iamVjdCA9PiAhIXByb3RvKTtcblxuICBpZiAoc291cmNlUHJvdG90eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgdGFyZ2V0UHJvdG90eXBlID0gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh7fSwgZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSwgLi4uc291cmNlUHJvdG90eXBlcyk7XG5cbiAgICB0cnkge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgdGFyZ2V0UHJvdG90eXBlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSBpZiBzZXRQcm90b3R5cGVPZiBmYWlsc1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGFwcGx5U3Vic3RpdHV0aW9ucyhvcHRpb25zOiBBcHBseVN1YnN0aXR1dGlvbnNPcHRpb25zKTogTWF5YmVSZXR1cm48c3RyaW5nPiB7XG4gIHN3aXRjaCAob3B0aW9ucy5rZXkpIHtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy5jaXJjdWxhclJlZmVyZW5jZTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuZnVuY3Rpb25UZXh0c1tvcHRpb25zLmluZGV4XSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKGBGdW5jdGlvbiB3aXRoIGluZGV4ICR7b3B0aW9ucy5pbmRleC50b1N0cmluZygpfSBub3QgZm91bmRgKSk7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZDpcbiAgICAgIHJldHVybiBvcHRpb25zLnN1YnN0aXR1dGlvbnMubWF4RGVwdGhMaW1pdFJlYWNoZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5OlxuICAgICAgcmV0dXJuIGBBcnJheSgke29wdGlvbnMuaW5kZXgudG9TdHJpbmcoKX0pYDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5LlRvSlNPTkZhaWxlZDpcbiAgICAgIHJldHVybiBvcHRpb25zLnN1YnN0aXR1dGlvbnMudG9KU09ORmFpbGVkO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVW5kZWZpbmVkOlxuICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gY3JlYXRlRXF1YWxpdHlDb21wYXJlckVudHJpZXM8Y29uc3QgVCBleHRlbmRzIHJlYWRvbmx5IEVxdWFsaXR5Q29tcGFyZXJFbnRyeTxhbnk+W10+KGVudHJpZXM6IFQpOiBUIHtcbiAgcmV0dXJuIGVudHJpZXM7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbEFycmF5QnVmZmVyKGE6IEFycmF5QnVmZmVyLCBiOiBBcnJheUJ1ZmZlcik6IGJvb2xlYW4ge1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB2aWV3QSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICBjb25zdCB2aWV3QiA9IG5ldyBVaW50OEFycmF5KGIpO1xuICByZXR1cm4gZGVlcEVxdWFsKHZpZXdBLCB2aWV3Qik7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbERhdGUoYTogRGF0ZSwgYjogRGF0ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxNYXAoYTogTWFwPHVua25vd24sIHVua25vd24+LCBiOiBNYXA8dW5rbm93biwgdW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgYS5lbnRyaWVzKCkpIHtcbiAgICBpZiAoIWIuaGFzKGtleSkgfHwgIWRlZXBFcXVhbCh2YWx1ZSwgYi5nZXQoa2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsUmVnRXhwKGE6IFJlZ0V4cCwgYjogUmVnRXhwKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLnNvdXJjZSA9PT0gYi5zb3VyY2UgJiYgYS5mbGFncyA9PT0gYi5mbGFncztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsU2V0KGE6IFNldDx1bmtub3duPiwgYjogU2V0PHVua25vd24+KTogYm9vbGVhbiB7XG4gIGlmIChhLnNpemUgIT09IGIuc2l6ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAoY29uc3QgdmFsdWVBIG9mIGEpIHtcbiAgICBpZiAoYi5oYXModmFsdWVBKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgdmFsdWVCIG9mIGIpIHtcbiAgICAgIGlmIChkZWVwRXF1YWwodmFsdWVBLCB2YWx1ZUIpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZm91bmQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsVHlwZWQoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IHsgY29uc3RydWN0b3IsIGVxdWFsaXR5Q29tcGFyZXIgfSBvZiBlcXVhbGl0eUNvbXBhcmVyRW50cmllcykge1xuICAgIGlmIChhIGluc3RhbmNlb2YgY29uc3RydWN0b3IgJiYgYiBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSB7XG4gICAgICByZXR1cm4gZXF1YWxpdHlDb21wYXJlcihhIGFzIG5ldmVyLCBiIGFzIG5ldmVyKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQXJyYXkoXG4gIHZhbHVlOiB1bmtub3duW10sXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKGRlcHRoID4gZnVsbE9wdGlvbnMubWF4RGVwdGgpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkQXJyYXksIHZhbHVlLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4gdG9QbGFpbk9iamVjdChpdGVtLCBpbmRleC50b1N0cmluZygpLCBkZXB0aCArIDEsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlKHZhbHVlOiBvYmplY3QsIGtleTogc3RyaW5nLCBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyk6IHVua25vd24ge1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2VzKSB7XG4gICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZSk7XG4gIH1cbiAgY29uc3QgdmFsdWVDb25zdHJ1Y3Rvck5hbWUgPSB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnO1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09OXG4tLT4gc3RhcnRpbmcgYXQgb2JqZWN0IHdpdGggY29uc3RydWN0b3IgJyR7dmFsdWVDb25zdHJ1Y3Rvck5hbWV9J1xuLS0tIHByb3BlcnR5ICcke2tleX0nIGNsb3NlcyB0aGUgY2lyY2xlYCk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGVcbmZ1bmN0aW9uIGhhbmRsZUZ1bmN0aW9uKHZhbHVlOiBGdW5jdGlvbiwgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgaW5kZXggPSBmdW5jdGlvblRleHRzLmxlbmd0aDtcbiAgY29uc3QgZnVuY3Rpb25UZXh0ID0gZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGxcbiAgICA/IHZhbHVlLnRvU3RyaW5nKClcbiAgICA6IGBmdW5jdGlvbiAke3ZhbHVlLm5hbWUgfHwgJ2Fub255bW91cyd9KCkgeyAvKiAuLi4gKi8gfWA7XG4gIGZ1bmN0aW9uVGV4dHMucHVzaChmdW5jdGlvblRleHQpO1xuICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkZ1bmN0aW9uLCBpbmRleCk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHVzZWRPYmplY3RzLmhhcyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWUsIGtleSwgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgdXNlZE9iamVjdHMuYWRkKHZhbHVlKTtcblxuICBpZiAoY2FuVXNlVG9KU09OKSB7XG4gICAgY29uc3QgdG9KU09OUmVzdWx0ID0gdHJ5SGFuZGxlVG9KU09OKHZhbHVlLCBrZXksIGRlcHRoLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICAgIGlmICh0b0pTT05SZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRvSlNPTlJlc3VsdDtcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gaGFuZGxlQXJyYXkodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gIH1cblxuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWQpO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRXJyb3IgJiYgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlRXJyb3JzKSB7XG4gICAgcmV0dXJuIGVycm9yVG9TdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGhhbmRsZVBsYWluT2JqZWN0KHZhbHVlLCBkZXB0aCwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVQbGFpbk9iamVjdChcbiAgdmFsdWU6IG9iamVjdCxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModmFsdWUpO1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkU29ydEtleXMpIHtcbiAgICBlbnRyaWVzLnNvcnQoKFtrZXkxXSwgW2tleTJdKSA9PiBrZXkxLmxvY2FsZUNvbXBhcmUoa2V5MikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBlbnRyaWVzLm1hcCgoW2tleTIsIHZhbHVlMl0pID0+IFtcbiAgICAgIGtleTIsXG4gICAgICB0b1BsYWluT2JqZWN0KHZhbHVlMiwga2V5MiwgZGVwdGggKyAxLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cylcbiAgICBdKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlT2JqZWN0VG9rZW5TdWJzdGl0dXRpb24oa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSk6IHN0cmluZyB7XG4gIHJldHVybiBgeyBcIltbJHtrZXl9XV1cIjogbnVsbCB9YDtcbn1cblxuZnVuY3Rpb24gbWFrZVBsYWNlaG9sZGVyKGtleTogVG9rZW5TdWJzdGl0dXRpb25LZXksIGluZGV4PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBbWyR7a2V5fSR7aW5kZXg/LnRvU3RyaW5nKCkgPz8gJyd9XV1gO1xufVxuXG5mdW5jdGlvbiB0b1BsYWluT2JqZWN0KFxuICB2YWx1ZTogdW5rbm93bixcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGNhblVzZVRvSlNPTjogYm9vbGVhbixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKGRlcHRoID09PSAwIHx8IGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZVVuZGVmaW5lZClcbiAgICAgID8gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LlVuZGVmaW5lZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBoYW5kbGVGdW5jdGlvbih2YWx1ZSwgZnVuY3Rpb25UZXh0cywgZnVsbE9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlT2JqZWN0KHZhbHVlLCBrZXksIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIHRyeUhhbmRsZVRvSlNPTihcbiAgdmFsdWU6IG9iamVjdCxcbiAga2V5OiBzdHJpbmcsXG4gIGRlcHRoOiBudW1iZXIsXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IHRvSlNPTiA9ICh2YWx1ZSBhcyBQYXJ0aWFsPEpTT05TZXJpYWxpemFibGU+KS50b0pTT047XG4gIGlmICh0eXBlb2YgdG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdG9KU09OLmNhbGwodmFsdWUsIGtleSk7XG4gICAgICByZXR1cm4gdG9QbGFpbk9iamVjdChuZXdWYWx1ZSwga2V5LCBkZXB0aCwgZmFsc2UsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZENhdGNoVG9KU09ORXJyb3JzKSB7XG4gICAgICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7O0FBZ0JBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxrQkFBa0I7QUFLcEIsSUFBSyx1QkFBTCxrQkFBS0EsMEJBQUw7QUFJTCxFQUFBQSxzQkFBQSxhQUFVO0FBSVYsRUFBQUEsc0JBQUEsVUFBTztBQUlQLEVBQUFBLHNCQUFBLGNBQVc7QUFaRCxTQUFBQTtBQUFBLEdBQUE7QUErRlosTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSwwQkFBMEI7QUFBQSxFQUM5QjtBQUFBLElBQ0UsRUFBRSxhQUFhLGFBQWEsa0JBQWtCLHFCQUFxQjtBQUFBLElBQ25FLEVBQUUsYUFBYSxNQUFNLGtCQUFrQixjQUFjO0FBQUEsSUFDckQsRUFBRSxhQUFhLFFBQVEs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QUN6RDtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQy9DLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxhQUFhLE9BQU8sS0FBSyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGdCQUNQLE9BQ0EsS0FDQSxPQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxTQUFVLE1BQW9DO0FBQ3BELE1BQUksT0FBTyxXQUFXLFlBQVk7QUFDaEMsUUFBSTtBQUNGLFlBQU0sV0FBVyxPQUFPLEtBQUssT0FBTyxHQUFHO0FBQ3ZDLGFBQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxPQUFPLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDM0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxZQUFZLHlCQUF5QjtBQUN2QyxlQUFPLGdCQUFnQixpQ0FBaUM7QUFBQSxNQUMxRDtBQUNBLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiXQp9Cg==
406
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL09iamVjdFV0aWxzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29uc3RydWN0b3IsXG4gIFVuZGVmaW5lZE9uUGFydGlhbERlZXBcbn0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUge1xuICBNYXliZVJldHVybixcbiAgU3RyaW5nS2V5c1xufSBmcm9tICcuL1R5cGUudHMnO1xuXG5pbXBvcnQge1xuICBlcnJvclRvU3RyaW5nLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnLi9FcnJvci50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi9TdHJpbmcudHMnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dC5cbiAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25IYW5kbGluZ01vZGUge1xuICAvKipcbiAgICogRXhjbHVkZXMgZnVuY3Rpb25zIGZyb20gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIHRoZSBmdWxsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRnVsbCA9ICdmdWxsJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIG9ubHkgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgTmFtZU9ubHkgPSAnbmFtZU9ubHknXG59XG5cbmVudW0gVG9rZW5TdWJzdGl0dXRpb25LZXkge1xuICBDaXJjdWxhclJlZmVyZW5jZSA9ICdDaXJjdWxhclJlZmVyZW5jZScsXG4gIEZ1bmN0aW9uID0gJ0Z1bmN0aW9uJyxcbiAgTWF4RGVwdGhMaW1pdFJlYWNoZWQgPSAnTWF4RGVwdGhMaW1pdFJlYWNoZWQnLFxuICBNYXhEZXB0aExpbWl0UmVhY2hlZEFycmF5ID0gJ01heERlcHRoTGltaXRSZWFjaGVkQXJyYXknLFxuICBUb0pTT05GYWlsZWQgPSAnVG9KU09ORmFpbGVkJyxcbiAgVW5kZWZpbmVkID0gJ1VuZGVmaW5lZCdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGhvdyBmdW5jdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIEpTT04gb3V0cHV0IChkZWZhdWx0OiBgZXhjbHVkZWApLlxuICAgKi9cbiAgZnVuY3Rpb25IYW5kbGluZ01vZGU6IEZ1bmN0aW9uSGFuZGxpbmdNb2RlO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIGRlcHRoIG9mIG5lc3RlZCBvYmplY3RzIHRvIGluY2x1ZGUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBVc2UgYC0xYCBmb3Igbm8gbGltaXQuXG4gICAqIERlZmF1bHRzIHRvIGAtMWAuXG4gICAqL1xuICBtYXhEZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gY2F0Y2ggZXJyb3JzIGluIGB0b0pTT04oKWAgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGEgcGxhY2Vob2xkZXIuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRDYXRjaFRvSlNPTkVycm9yczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlRXJyb3JzOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gaGFuZGxlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgKi9cbiAgc2hvdWxkSGFuZGxlVW5kZWZpbmVkOiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdG8gc29ydCB0aGUga2V5cyBvZiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAqL1xuICBzaG91bGRTb3J0S2V5czogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIEpTT04gb3V0cHV0LiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBzcGFjZXMgb3IgYSBzdHJpbmcuIERlZmF1bHRzIHRvIGAyYC5cbiAgICovXG4gIHNwYWNlOiBudW1iZXIgfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN1YnN0aXR1dGlvbnMgdG8gdXNlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICovXG4gIHRva2VuU3Vic3RpdHV0aW9uczogUGFydGlhbDxUb2tlblN1YnN0aXR1dGlvbnM+O1xufVxuXG5pbnRlcmZhY2UgQXBwbHlTdWJzdGl0dXRpb25zT3B0aW9ucyB7XG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdO1xuICBpbmRleDogbnVtYmVyO1xuICBrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5O1xuICBzdWJzdGl0dXRpb25zOiBUb2tlblN1YnN0aXR1dGlvbnM7XG59XG5cbmludGVyZmFjZSBFcXVhbGl0eUNvbXBhcmVyRW50cnk8VD4ge1xuICBjb25zdHJ1Y3RvcjogQ29uc3RydWN0b3I8VD47XG4gIGVxdWFsaXR5Q29tcGFyZXI6IChhOiBULCBiOiBUKSA9PiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgSlNPTlNlcmlhbGl6YWJsZSB7XG4gIHRvSlNPTiguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgTW9kdWxlV2l0aERlZmF1bHRFeHBvcnQ8VD4ge1xuICBkZWZhdWx0OiBUO1xufVxuXG5pbnRlcmZhY2UgVG9rZW5TdWJzdGl0dXRpb25zIHtcbiAgY2lyY3VsYXJSZWZlcmVuY2U6IHN0cmluZztcbiAgbWF4RGVwdGhMaW1pdFJlYWNoZWQ6IHN0cmluZztcbiAgdG9KU09ORmFpbGVkOiBzdHJpbmc7XG59XG5cbmNvbnN0IEtFWV9TRVBBUkFUT1IgPSAnLic7XG5jb25zdCBlcXVhbGl0eUNvbXBhcmVyRW50cmllcyA9IGNyZWF0ZUVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKFxuICBbXG4gICAgeyBjb25zdHJ1Y3RvcjogQXJyYXlCdWZmZXIsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbEFycmF5QnVmZmVyIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogRGF0ZSwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsRGF0ZSB9LFxuICAgIHsgY29uc3RydWN0b3I6IFJlZ0V4cCwgZXF1YWxpdHlDb21wYXJlcjogZGVlcEVxdWFsUmVnRXhwIH0sXG4gICAgeyBjb25zdHJ1Y3RvcjogTWFwLCBlcXVhbGl0eUNvbXBhcmVyOiBkZWVwRXF1YWxNYXAgfSxcbiAgICB7IGNvbnN0cnVjdG9yOiBTZXQsIGVxdWFsaXR5Q29tcGFyZXI6IGRlZXBFcXVhbFNldCB9XG4gIF0gYXMgY29uc3Rcbik7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVT4odGFyZ2V0OiBULCBzb3VyY2U6IFUpOiBUICYgVTtcblxuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTMgLSBUaGUgdGhpcmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWLCBXPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYsIHNvdXJjZTM6IFcpOiBUICYgVSAmIFYgJiBXO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZXMgLSBUaGUgc291cmNlIG9iamVjdHMgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgcmV0dXJuIF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuLyoqXG4gKiBDbG9uZXMgYW4gb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIG9yaWdpbmFsIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSkgYXMgVDtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYUNvbnN0cnVjdG9yID0gYS5jb25zdHJ1Y3RvcjtcbiAgY29uc3QgYkNvbnN0cnVjdG9yID0gYi5jb25zdHJ1Y3RvcjtcblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBiQ29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoYUNvbnN0cnVjdG9yICE9PSBPYmplY3QpIHtcbiAgICBjb25zdCByZXN1bHQgPSBkZWVwRXF1YWxUeXBlZChhLCBiKTtcbiAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBnZXRBbGxLZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IGdldEFsbEtleXMoYik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYVJlY29yZCA9IGEgYXMgR2VuZXJpY09iamVjdDtcbiAgY29uc3QgYlJlY29yZCA9IGIgYXMgR2VuZXJpY09iamVjdDtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lcyAtIFRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIHdlcmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCwgcHJvcGVydHlOYW1lczogKGtleW9mIFQpW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eTxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQsIHByb3BlcnR5TmFtZToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICBpZiAoIU9iamVjdC5oYXNPd24ob2JqLCBwcm9wZXJ0eU5hbWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGVcbiAgZGVsZXRlIG9ialtwcm9wZXJ0eU5hbWVdO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbSBhIG1vZHVsZS5cbiAqXG4gKiBVc2VmdWwgdG8gaGFuZGxlIGluY29ycmVjdCBkZWZhdWx0IGV4cG9ydCBpbnRlcm9wIGJldHdlZW4gRVNNIGFuZCBDSlMuXG4gKlxuICogQHBhcmFtIG1vZHVsZSAtIFRoZSBtb2R1bGUgdG8gZXh0cmFjdCB0aGUgZGVmYXVsdCBleHBvcnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcDxUPihtb2R1bGU6IE1vZHVsZVdpdGhEZWZhdWx0RXhwb3J0PFQ+KTogVCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gIGlmICh0eXBlb2YgbW9kdWxlICE9PSAnb2JqZWN0JyB8fCBtb2R1bGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbW9kdWxlO1xuICB9XG5cbiAgaWYgKCdkZWZhdWx0JyBpbiBtb2R1bGUpIHtcbiAgICByZXR1cm4gbW9kdWxlLmRlZmF1bHQ7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlO1xufVxuXG4vKipcbiAqIEdldHMgYWxsIGVudHJpZXMgb2YgYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgZW50cmllcyBvZi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFsbCBlbnRyaWVzIG9mIHRoZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxFbnRyaWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFtTdHJpbmdLZXlzPFQ+LCBUW1N0cmluZ0tleXM8VD5dXVtdIHtcbiAgcmV0dXJuIGdldEFsbEtleXMob2JqKS5tYXAoKGtleSkgPT4gW2tleSwgb2JqW2tleV1dKTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIGFuIG9iamVjdC5cbiAqIEluY2x1ZGVzIGZpZWxkcyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgdGhlIGtleXMgb2YuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhbGwga2V5cyBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsS2V5czxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBTdHJpbmdLZXlzPFQ+W10ge1xuICBjb25zdCBrZXlzOiBTdHJpbmdLZXlzPFQ+W10gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6IG51bGwgfCBvYmplY3QgPSBvYmo7XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyZW50KSBhcyBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eURlc2NyaXB0b3I+O1xuICAgIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgT2JqZWN0LmVudHJpZXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNHZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBjb25zdCBoYXNTZXR0ZXIgPSB0eXBlb2YgZGVzY3JpcHRvci5zZXQgPT09ICdmdW5jdGlvbic7XG4gICAgICBpZiAoaGFzR2V0dGVyIHx8IGhhc1NldHRlcikge1xuICAgICAgICBpZiAoaGFzR2V0dGVyICYmIGhhc1NldHRlcikge1xuICAgICAgICAgIGtleXMucHVzaChrZXkgYXMgU3RyaW5nS2V5czxUPik7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGUgJiYgZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5IGFzIFN0cmluZ0tleXM8VD4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3VycmVudCkgYXMgbnVsbCB8IG9iamVjdDtcbiAgfVxuICByZXR1cm4ga2V5cy5zb3J0KCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICBsZXQgbm9kZTogR2VuZXJpY09iamVjdCB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoS0VZX1NFUEFSQVRPUik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBpbnN0YW5jZSAtIFRoZSBvYmplY3QgaW5zdGFuY2UgdG8gcmV0cmlldmUgdGhlIHByb3RvdHlwZSBvZi5cbiAqIEByZXR1cm5zIFRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mPFQ+KGluc3RhbmNlOiBUKTogVCB7XG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluc3RhbmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIFQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkgb2YgYSBnaXZlbiB0eXBlIGBUYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYXMgYSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lb2Y8VD4obmFtZTogRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIGFsbG93IGB1bmRlZmluZWRgIGFzc2lnbm1lbnQgaW4gc3RyaWN0IG1vZGUuXG4gKlxuICogVGhpcyB1dGlsaXR5IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AgVHlwZVNjcmlwdCBmbGFnLFxuICogd2hpY2ggcHJvaGliaXRzIGRpcmVjdGx5IGFzc2lnbmluZyBgdW5kZWZpbmVkYCB0byBvcHRpb25hbCBwcm9wZXJ0aWVzIHdoZW4gdGhlIHR5cGVcbiAqIGV4cGxpY2l0bHkgb21pdHMgYHVuZGVmaW5lZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzOiB0cnVlYFxuICogY29uc3QgeDogeyBwcm9wPzogc3RyaW5nIH0gPSB7IHByb3A6IHVuZGVmaW5lZCB9OyAvLyBDb21waWxlciBlcnJvclxuICpcbiAqIC8vIFVzaW5nIHRoaXMgdXRpbGl0eTpcbiAqIGNvbnN0IHk6IHsgcHJvcD86IHN0cmluZyB9ID0gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPHsgcHJvcD86IHN0cmluZyB9Pih7IHByb3A6IHVuZGVmaW5lZCB9KTsgLy8gV29ya3NcbiAqIGBgYFxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0YXJnZXQgdHlwZSB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gbm9ybWFsaXplLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gbm9ybWFsaXplLCBhbGxvd2luZyBleHBsaWNpdCBgdW5kZWZpbmVkYCBmb3Igb3B0aW9uYWwgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIG9iamVjdCwgY29tcGF0aWJsZSB3aXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VD4ob2JqOiBVbmRlZmluZWRPblBhcnRpYWxEZWVwPFQ+KTogVCB7XG4gIHJldHVybiBvYmogYXMgVDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gc2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgaW4uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IEdlbmVyaWNPYmplY3QsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQgPSBvYmo7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KEtFWV9TRVBBUkFUT1IpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIEdlbmVyaWNPYmplY3QgfCB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBsYXN0S2V5ID0ga2V5cy5hdCgtMSk7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgbGFzdEtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBub2RlW2xhc3RLZXldID0gdmFsdWU7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBnaXZlbiB2YWx1ZSB0byBhIEpTT04gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTi4gVGhpcyBjYW4gYmUgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBKU09OIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIFRoZSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb24odmFsdWU6IHVua25vd24sIG9wdGlvbnM6IFBhcnRpYWw8VG9Kc29uT3B0aW9ucz4gPSB7fSk6IHN0cmluZyB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogeyB0b2tlblN1YnN0aXR1dGlvbnM6IFRva2VuU3Vic3RpdHV0aW9ucyB9ICYgVG9Kc29uT3B0aW9ucyA9IHtcbiAgICBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRXhjbHVkZSxcbiAgICBtYXhEZXB0aDogLTEsXG4gICAgc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogZmFsc2UsXG4gICAgc2hvdWxkSGFuZGxlRXJyb3JzOiBmYWxzZSxcbiAgICBzaG91bGRIYW5kbGVVbmRlZmluZWQ6IGZhbHNlLFxuICAgIHNob3VsZFNvcnRLZXlzOiBmYWxzZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIHNwYWNlOiAyLFxuICAgIHRva2VuU3Vic3RpdHV0aW9uczoge1xuICAgICAgY2lyY3VsYXJSZWZlcmVuY2U6IG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihUb2tlblN1YnN0aXR1dGlvbktleS5DaXJjdWxhclJlZmVyZW5jZSksXG4gICAgICBtYXhEZXB0aExpbWl0UmVhY2hlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkKSxcbiAgICAgIHRvSlNPTkZhaWxlZDogbWFrZU9iamVjdFRva2VuU3Vic3RpdHV0aW9uKFRva2VuU3Vic3RpdHV0aW9uS2V5LlRvSlNPTkZhaWxlZClcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7XG4gICAgLi4uREVGQVVMVF9PUFRJT05TLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgdG9rZW5TdWJzdGl0dXRpb25zOiB7XG4gICAgICAuLi5ERUZBVUxUX09QVElPTlMudG9rZW5TdWJzdGl0dXRpb25zLFxuICAgICAgLi4ub3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9XG4gIH07XG5cbiAgaWYgKGZ1bGxPcHRpb25zLm1heERlcHRoID09PSAtMSkge1xuICAgIGZ1bGxPcHRpb25zLm1heERlcHRoID0gSW5maW5pdHk7XG4gIH1cblxuICBjb25zdCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB1c2VkT2JqZWN0cyA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKTtcblxuICBjb25zdCBwbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3QodmFsdWUsICcnLCAwLCB0cnVlLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpO1xuICBsZXQganNvbiA9IEpTT04uc3RyaW5naWZ5KHBsYWluT2JqZWN0LCBudWxsLCBmdWxsT3B0aW9ucy5zcGFjZSkgPz8gJyc7XG4gIGpzb24gPSByZXBsYWNlQWxsKGpzb24sIC9cIlxcW1xcWyg/PEtleT5bQS1aYS16XSspKD88SW5kZXg+XFxkKilcXF1cXF1cIi9nLCAoXywga2V5LCBpbmRleFN0cikgPT5cbiAgICBhcHBseVN1YnN0aXR1dGlvbnMoe1xuICAgICAgZnVuY3Rpb25UZXh0cyxcbiAgICAgIGluZGV4OiBpbmRleFN0ciA/IHBhcnNlSW50KGluZGV4U3RyLCAxMCkgOiAwLFxuICAgICAga2V5OiBrZXkgYXMgVG9rZW5TdWJzdGl0dXRpb25LZXksXG4gICAgICBzdWJzdGl0dXRpb25zOiBmdWxsT3B0aW9ucy50b2tlblN1YnN0aXR1dGlvbnNcbiAgICB9KSk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGRlc2NyaXB0b3JdIG9mIE9iamVjdC5lbnRyaWVzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQXZvaWQgcmVkZWZpbmluZyByZWFkLW9ubHkgcHJvcGVydGllcyAoZXNwZWNpYWxseSBgcHJvdG90eXBlYClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSA9PT0gJ3Byb3RvdHlwZSdcbiAgICAgICAgICB8fCAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk/LndyaXRhYmxlID09PSBmYWxzZVxuICAgICAgICAgICAgJiYgIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpPy5jb25maWd1cmFibGUpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgaWYgZGVmaW5lUHJvcGVydHkgZmFpbHNcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gc291cmNlc1xuICAgIC5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Y8b2JqZWN0IHwgdW5kZWZpbmVkPihzb3VyY2UpKVxuICAgIC5maWx0ZXIoKHByb3RvKTogcHJvdG8gaXMgb2JqZWN0ID0+ICEhcHJvdG8pO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcblxuICAgIHRyeSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50bHkgaWdub3JlIGlmIHNldFByb3RvdHlwZU9mIGZhaWxzXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gYXBwbHlTdWJzdGl0dXRpb25zKG9wdGlvbnM6IEFwcGx5U3Vic3RpdHV0aW9uc09wdGlvbnMpOiBNYXliZVJldHVybjxzdHJpbmc+IHtcbiAgc3dpdGNoIChvcHRpb25zLmtleSkge1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuQ2lyY3VsYXJSZWZlcmVuY2U6XG4gICAgICByZXR1cm4gb3B0aW9ucy5zdWJzdGl0dXRpb25zLmNpcmN1bGFyUmVmZXJlbmNlO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb246XG4gICAgICByZXR1cm4gb3B0aW9ucy5mdW5jdGlvblRleHRzW29wdGlvbnMuaW5kZXhdID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtvcHRpb25zLmluZGV4LnRvU3RyaW5nKCl9IG5vdCBmb3VuZGApKTtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy5tYXhEZXB0aExpbWl0UmVhY2hlZDtcbiAgICBjYXNlIFRva2VuU3Vic3RpdHV0aW9uS2V5Lk1heERlcHRoTGltaXRSZWFjaGVkQXJyYXk6XG4gICAgICByZXR1cm4gYEFycmF5KCR7b3B0aW9ucy5pbmRleC50b1N0cmluZygpfSlgO1xuICAgIGNhc2UgVG9rZW5TdWJzdGl0dXRpb25LZXkuVG9KU09ORmFpbGVkOlxuICAgICAgcmV0dXJuIG9wdGlvbnMuc3Vic3RpdHV0aW9ucy50b0pTT05GYWlsZWQ7XG4gICAgY2FzZSBUb2tlblN1YnN0aXR1dGlvbktleS5VbmRlZmluZWQ6XG4gICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBjcmVhdGVFcXVhbGl0eUNvbXBhcmVyRW50cmllczxjb25zdCBUIGV4dGVuZHMgcmVhZG9ubHkgRXF1YWxpdHlDb21wYXJlckVudHJ5PGFueT5bXT4oZW50cmllczogVCk6IFQge1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsQXJyYXlCdWZmZXIoYTogQXJyYXlCdWZmZXIsIGI6IEFycmF5QnVmZmVyKTogYm9vbGVhbiB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHZpZXdBID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIGNvbnN0IHZpZXdCID0gbmV3IFVpbnQ4QXJyYXkoYik7XG4gIHJldHVybiBkZWVwRXF1YWwodmlld0EsIHZpZXdCKTtcbn1cblxuZnVuY3Rpb24gZGVlcEVxdWFsRGF0ZShhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiB7XG4gIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGRlZXBFcXVhbE1hcChhOiBNYXA8dW5rbm93biwgdW5rbm93bj4sIGI6IE1hcDx1bmtub3duLCB1bmtub3duPik6IGJvb2xlYW4ge1xuICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhLmVudHJpZXMoKSkge1xuICAgIGlmICghYi5oYXMoa2V5KSB8fCAhZGVlcEVxdWFsKHZhbHVlLCBiLmdldChrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxSZWdFeHAoYTogUmVnRXhwLCBiOiBSZWdFeHApOiBib29sZWFuIHtcbiAgcmV0dXJuIGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxTZXQoYTogU2V0PHVua25vd24+LCBiOiBTZXQ8dW5rbm93bj4pOiBib29sZWFuIHtcbiAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YWx1ZUEgb2YgYSkge1xuICAgIGlmIChiLmhhcyh2YWx1ZUEpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2YWx1ZUIgb2YgYikge1xuICAgICAgaWYgKGRlZXBFcXVhbCh2YWx1ZUEsIHZhbHVlQikpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBkZWVwRXF1YWxUeXBlZChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgeyBjb25zdHJ1Y3RvciwgZXF1YWxpdHlDb21wYXJlciB9IG9mIGVxdWFsaXR5Q29tcGFyZXJFbnRyaWVzKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciAmJiBiIGluc3RhbmNlb2YgY29uc3RydWN0b3IpIHtcbiAgICAgIHJldHVybiBlcXVhbGl0eUNvbXBhcmVyKGEgYXMgbmV2ZXIsIGIgYXMgbmV2ZXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBcnJheShcbiAgdmFsdWU6IHVua25vd25bXSxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAoZGVwdGggPiBmdWxsT3B0aW9ucy5tYXhEZXB0aCkge1xuICAgIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuTWF4RGVwdGhMaW1pdFJlYWNoZWRBcnJheSwgdmFsdWUubGVuZ3RoKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB0b1BsYWluT2JqZWN0KGl0ZW0sIGluZGV4LnRvU3RyaW5nKCksIGRlcHRoICsgMSwgY2FuVXNlVG9KU09OLCBmdWxsT3B0aW9ucywgZnVuY3Rpb25UZXh0cywgdXNlZE9iamVjdHMpKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2UodmFsdWU6IG9iamVjdCwga2V5OiBzdHJpbmcsIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zKTogdW5rbm93biB7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXMpIHtcbiAgICByZXR1cm4gbWFrZVBsYWNlaG9sZGVyKFRva2VuU3Vic3RpdHV0aW9uS2V5LkNpcmN1bGFyUmVmZXJlbmNlKTtcbiAgfVxuICBjb25zdCB2YWx1ZUNvbnN0cnVjdG9yTmFtZSA9IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoYENvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT05cbi0tPiBzdGFydGluZyBhdCBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvciAnJHt2YWx1ZUNvbnN0cnVjdG9yTmFtZX0nXG4tLS0gcHJvcGVydHkgJyR7a2V5fScgY2xvc2VzIHRoZSBjaXJjbGVgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZnVuY3Rpb24tdHlwZVxuZnVuY3Rpb24gaGFuZGxlRnVuY3Rpb24odmFsdWU6IEZ1bmN0aW9uLCBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSwgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMpOiB1bmtub3duIHtcbiAgaWYgKGZ1bGxPcHRpb25zLmZ1bmN0aW9uSGFuZGxpbmdNb2RlID09PSBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBpbmRleCA9IGZ1bmN0aW9uVGV4dHMubGVuZ3RoO1xuICBjb25zdCBmdW5jdGlvblRleHQgPSBmdWxsT3B0aW9ucy5mdW5jdGlvbkhhbmRsaW5nTW9kZSA9PT0gRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbFxuICAgID8gdmFsdWUudG9TdHJpbmcoKVxuICAgIDogYGZ1bmN0aW9uICR7dmFsdWUubmFtZSB8fCAnYW5vbnltb3VzJ30oKSB7IC8qIC4uLiAqLyB9YDtcbiAgZnVuY3Rpb25UZXh0cy5wdXNoKGZ1bmN0aW9uVGV4dCk7XG4gIHJldHVybiBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuRnVuY3Rpb24sIGluZGV4KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodXNlZE9iamVjdHMuaGFzKHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVDaXJjdWxhclJlZmVyZW5jZSh2YWx1ZSwga2V5LCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICB1c2VkT2JqZWN0cy5hZGQodmFsdWUpO1xuXG4gIGlmIChjYW5Vc2VUb0pTT04pIHtcbiAgICBjb25zdCB0b0pTT05SZXN1bHQgPSB0cnlIYW5kbGVUb0pTT04odmFsdWUsIGtleSwgZGVwdGgsIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG4gICAgaWYgKHRvSlNPTlJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdG9KU09OUmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBoYW5kbGVBcnJheSh2YWx1ZSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgfVxuXG4gIGlmIChkZXB0aCA+IGZ1bGxPcHRpb25zLm1heERlcHRoKSB7XG4gICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5NYXhEZXB0aExpbWl0UmVhY2hlZCk7XG4gIH1cblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvciAmJiBmdWxsT3B0aW9ucy5zaG91bGRIYW5kbGVFcnJvcnMpIHtcbiAgICByZXR1cm4gZXJyb3JUb1N0cmluZyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlUGxhaW5PYmplY3QodmFsdWUsIGRlcHRoLCBjYW5Vc2VUb0pTT04sIGZ1bGxPcHRpb25zLCBmdW5jdGlvblRleHRzLCB1c2VkT2JqZWN0cyk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVBsYWluT2JqZWN0KFxuICB2YWx1ZTogb2JqZWN0LFxuICBkZXB0aDogbnVtYmVyLFxuICBjYW5Vc2VUb0pTT046IGJvb2xlYW4sXG4gIGZ1bGxPcHRpb25zOiBUb0pzb25PcHRpb25zLFxuICBmdW5jdGlvblRleHRzOiBzdHJpbmdbXSxcbiAgdXNlZE9iamVjdHM6IFdlYWtTZXQ8b2JqZWN0PlxuKTogdW5rbm93biB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGlmIChmdWxsT3B0aW9ucy5zaG91bGRTb3J0S2V5cykge1xuICAgIGVudHJpZXMuc29ydCgoW2tleTFdLCBba2V5Ml0pID0+IGtleTEubG9jYWxlQ29tcGFyZShrZXkyKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIGVudHJpZXMubWFwKChba2V5MiwgdmFsdWUyXSkgPT4gW1xuICAgICAga2V5MixcbiAgICAgIHRvUGxhaW5PYmplY3QodmFsdWUyLCBrZXkyLCBkZXB0aCArIDEsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKVxuICAgIF0pXG4gICk7XG59XG5cbmZ1bmN0aW9uIG1ha2VPYmplY3RUb2tlblN1YnN0aXR1dGlvbihrZXk6IFRva2VuU3Vic3RpdHV0aW9uS2V5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGB7IFwiW1ske2tleX1dXVwiOiBudWxsIH1gO1xufVxuXG5mdW5jdGlvbiBtYWtlUGxhY2Vob2xkZXIoa2V5OiBUb2tlblN1YnN0aXR1dGlvbktleSwgaW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gYFtbJHtrZXl9JHtpbmRleD8udG9TdHJpbmcoKSA/PyAnJ31dXWA7XG59XG5cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QoXG4gIHZhbHVlOiB1bmtub3duLFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgY2FuVXNlVG9KU09OOiBib29sZWFuLFxuICBmdWxsT3B0aW9uczogVG9Kc29uT3B0aW9ucyxcbiAgZnVuY3Rpb25UZXh0czogc3RyaW5nW10sXG4gIHVzZWRPYmplY3RzOiBXZWFrU2V0PG9iamVjdD5cbik6IHVua25vd24ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAoZGVwdGggPT09IDAgfHwgZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlVW5kZWZpbmVkKVxuICAgICAgPyBtYWtlUGxhY2Vob2xkZXIoVG9rZW5TdWJzdGl0dXRpb25LZXkuVW5kZWZpbmVkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGhhbmRsZUZ1bmN0aW9uKHZhbHVlLCBmdW5jdGlvblRleHRzLCBmdWxsT3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVPYmplY3QodmFsdWUsIGtleSwgZGVwdGgsIGNhblVzZVRvSlNPTiwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbn1cblxuZnVuY3Rpb24gdHJ5SGFuZGxlVG9KU09OKFxuICB2YWx1ZTogb2JqZWN0LFxuICBrZXk6IHN0cmluZyxcbiAgZGVwdGg6IG51bWJlcixcbiAgZnVsbE9wdGlvbnM6IFRvSnNvbk9wdGlvbnMsXG4gIGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdLFxuICB1c2VkT2JqZWN0czogV2Vha1NldDxvYmplY3Q+XG4pOiB1bmtub3duIHtcbiAgY29uc3QgdG9KU09OID0gKHZhbHVlIGFzIFBhcnRpYWw8SlNPTlNlcmlhbGl6YWJsZT4pLnRvSlNPTjtcbiAgaWYgKHR5cGVvZiB0b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0b0pTT04uY2FsbCh2YWx1ZSwga2V5KTtcbiAgICAgIHJldHVybiB0b1BsYWluT2JqZWN0KG5ld1ZhbHVlLCBrZXksIGRlcHRoLCBmYWxzZSwgZnVsbE9wdGlvbnMsIGZ1bmN0aW9uVGV4dHMsIHVzZWRPYmplY3RzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkQ2F0Y2hUb0pTT05FcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VQbGFjZWhvbGRlcihUb2tlblN1YnN0aXR1dGlvbktleS5Ub0pTT05GYWlsZWQpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFnQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGtCQUFrQjtBQUtwQixJQUFLLHVCQUFMLGtCQUFLQSwwQkFBTDtBQUlMLEVBQUFBLHNCQUFBLGFBQVU7QUFJVixFQUFBQSxzQkFBQSxVQUFPO0FBSVAsRUFBQUEsc0JBQUEsY0FBVztBQVpELFNBQUFBO0FBQUEsR0FBQTtBQW1HWixNQUFNLGdCQUFnQjtBQUN0QixNQUFNLDBCQUEwQjtBQUFBLEVBQzlCO0FBQUEsSUFDRSxFQUFFLGFBQWEsYUFBYSxrQkFBa0IscUJBQXFCO0FBQUEsSUFDbkUsRUFBRSxhQUFhLE1BQU0sa0JBQWtCLGNBQWM7QUFBQSxJQUNyRCxFQUFFLGFBQWEsUUFBUSxrQkFBa0IsZ0JBQWdCO0FBQUEsSUFDekQsRUFBRSxhQUFhLEtBQUssa0JBQWtCLGFBQWE7QUFBQSxJQUNuRCxFQUFFLGFBQWEsS0FBSyxrQkFBa0IsYUFBYTtBQUFBLEVBQ3JEO0FBQ0Y7QUEwQ08sU0FBUyxrQ0FBa0MsV0FBbUIsU0FBMkI7QUFDOUYsU0FBTyxtQ0FBbUMsUUFBUSxHQUFHLE9BQU87QUFDOUQ7QUFRTyxTQUFTLGlDQUFtRCxLQUFXO0FBQzVFLFNBQU8sT0FBTyxPQUFPLGVBQWUsR0FBRyxHQUFHLE9BQU8sMEJBQTBCLEdBQUcsQ0FBQztBQUNqRjtBQVNP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QUFJLGlCQUFpQixTQUFTLFlBQVksb0JBQW9CO0FBQzVELFdBQU8sY0FBYyxLQUFLO0FBQUEsRUFDNUI7QUFFQSxTQUFPLGtCQUFrQixPQUFPLE9BQU8sY0FBYyxhQUFhLGVBQWUsV0FBVztBQUM5RjtBQUVBLFNBQVMsa0JBQ1AsT0FDQSxPQUNBLGNBQ0EsYUFDQSxlQUNBLGFBQ1M7QUFDVCxRQUFNLFVBQVUsT0FBTyxRQUFRLEtBQUs7QUFDcEMsTUFBSSxZQUFZLGdCQUFnQjtBQUM5QixZQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksTUFBTSxLQUFLLGNBQWMsSUFBSSxDQUFDO0FBQUEsRUFDM0Q7QUFFQSxTQUFPLE9BQU87QUFBQSxJQUNaLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxNQUFNLE1BQU07QUFBQSxNQUM5QjtBQUFBLE1BQ0EsY0FBYyxRQUFRLE1BQU0sUUFBUSxHQUFHLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFBQSxJQUM5RixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBRUEsU0FBUyw0QkFBNEIsS0FBbUM7QUFDdEUsU0FBTyxRQUFRLEdBQUc7QUFDcEI7QUFFQSxTQUFTLGdCQUFnQixLQUEyQixPQUF3QjtBQUMxRSxTQUFPLEtBQUssR0FBRyxHQUFHLE9BQU8sU0FBUyxLQUFLLEVBQUU7QUFDM0M7QUFFQSxTQUFTLGNBQ1AsT0FDQSxLQUNBLE9BQ0EsY0FDQSxhQUNBLGVBQ0EsYUFDUztBQUNULE1BQUksVUFBVSxRQUFXO0FBQ3ZCLFdBQVEsVUFBVSxLQUFLLFlBQVksd0JBQy9CLGdCQUFnQiwyQkFBOEIsSUFDOUM7QUFBQSxFQUNOO0FBRUEsTUFBSSxPQUFPLFVBQVUsWUFBWTtBQUMvQixXQUFPLGVBQWUsT0FBTyxlQUFlLFdBQVc7QUFBQSxFQUN6RDtBQUVBLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQy9DLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxhQUFhLE9BQU8sS0FBSyxPQUFPLGNBQWMsYUFBYSxlQUFlLFdBQVc7QUFDOUY7QUFFQSxTQUFTLGdCQUNQLE9BQ0EsS0FDQSxPQUNBLGFBQ0EsZUFDQSxhQUNTO0FBQ1QsUUFBTSxTQUFVLE1BQW9DO0FBQ3BELE1BQUksT0FBTyxXQUFXLFlBQVk7QUFDaEMsUUFBSTtBQUNGLFlBQU0sV0FBVyxPQUFPLEtBQUssT0FBTyxHQUFHO0FBQ3ZDLGFBQU8sY0FBYyxVQUFVLEtBQUssT0FBTyxPQUFPLGFBQWEsZUFBZSxXQUFXO0FBQUEsSUFDM0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxZQUFZLHlCQUF5QjtBQUN2QyxlQUFPLGdCQUFnQixpQ0FBaUM7QUFBQSxNQUMxRDtBQUNBLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiXQp9Cg==
@@ -9,6 +9,7 @@ import { config } from "dotenv";
9
9
  import { context } from "esbuild";
10
10
  import sassPlugin_ from "esbuild-sass-plugin";
11
11
  import { throwExpression } from "../../Error.mjs";
12
+ import { extractDefaultExportInterop } from "../../ObjectUtils.mjs";
12
13
  import { ObsidianPluginRepoPaths } from "../../obsidian/Plugin/ObsidianPluginRepoPaths.mjs";
13
14
  import { join } from "../../Path.mjs";
14
15
  import { buildCompile } from "../build.mjs";
@@ -31,7 +32,7 @@ import { fixSourceMapsPlugin } from "./fixSourceMapsPlugin.mjs";
31
32
  import { preprocessPlugin } from "./preprocessPlugin.mjs";
32
33
  import { renameCssPlugin } from "./renameCssPlugin.mjs";
33
34
  import { svelteWrapperPlugin } from "./svelteWrapperPlugin.mjs";
34
- const sassPlugin = "default" in sassPlugin_ ? sassPlugin_.default : sassPlugin_;
35
+ const sassPlugin = extractDefaultExportInterop(sassPlugin_);
35
36
  var BuildMode = /* @__PURE__ */ ((BuildMode2) => {
36
37
  BuildMode2[BuildMode2["Development"] = 0] = "Development";
37
38
  BuildMode2[BuildMode2["Production"] = 1] = "Production";
@@ -143,4 +144,4 @@ export {
143
144
  buildObsidianPlugin,
144
145
  invokeEsbuild
145
146
  };
146
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL2VzYnVpbGQvT2JzaWRpYW5QbHVnaW5CdWlsZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gYnVpbGQgYW5kIGJ1bmRsZSBhbiBPYnNpZGlhbiBwbHVnaW4gdXNpbmcgZXNidWlsZC5cbiAqIEl0IGluY2x1ZGVzIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGJ1aWxkIHByb2Nlc3MgYmFzZWQgb24gZGlmZmVyZW50IGJ1aWxkIG1vZGVzIChkZXZlbG9wbWVudCBvciBwcm9kdWN0aW9uKSxcbiAqIGFuZCBpdCBzZXRzIHVwIHZhcmlvdXMgZXNidWlsZCBwbHVnaW5zIHRvIHByZXByb2Nlc3MsIGxpbnQsIGZpeCBzb3VyY2UgbWFwcywgYW5kIGNvcHkgZmlsZXMgdG8gdGhlIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQnVpbGRDb250ZXh0LFxuICBCdWlsZE9wdGlvbnMsXG4gIFBsdWdpblxufSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnZG90ZW52JztcbmltcG9ydCB7IGNvbnRleHQgfSBmcm9tICdlc2J1aWxkJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1yZW5hbWUtZGVmYXVsdFxuaW1wb3J0IHNhc3NQbHVnaW5fIGZyb20gJ2VzYnVpbGQtc2Fzcy1wbHVnaW4nO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBidWlsZENvbXBpbGUgfSBmcm9tICcuLi9idWlsZC50cyc7XG5pbXBvcnQgeyBDbGlUYXNrUmVzdWx0IH0gZnJvbSAnLi4vQ2xpVXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgYnVpbHRpbk1vZHVsZXMsXG4gIGNwLFxuICBleGlzdHNTeW5jLFxuICBta2RpcixcbiAgcHJvY2VzcyxcbiAgcm0sXG4gIHdyaXRlRmlsZVxufSBmcm9tICcuLi9Ob2RlTW9kdWxlcy50cyc7XG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi9OcG0udHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGhGcm9tUm9vdCB9IGZyb20gJy4uL1Jvb3QudHMnO1xuaW1wb3J0IHsgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luIH0gZnJvbSAnLi9jb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4udHMnO1xuaW1wb3J0IHsgY3VzdG9tRXNidWlsZE9wdGlvbnNQbHVnaW4gfSBmcm9tICcuL2N1c3RvbUVzYnVpbGRPcHRpb25zUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeEVzbVBsdWdpbiB9IGZyb20gJy4vZml4RXNtUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeFNvdXJjZU1hcHNQbHVnaW4gfSBmcm9tICcuL2ZpeFNvdXJjZU1hcHNQbHVnaW4udHMnO1xuaW1wb3J0IHsgcHJlcHJvY2Vzc1BsdWdpbiB9IGZyb20gJy4vcHJlcHJvY2Vzc1BsdWdpbi50cyc7XG5pbXBvcnQgeyByZW5hbWVDc3NQbHVnaW4gfSBmcm9tICcuL3JlbmFtZUNzc1BsdWdpbi50cyc7XG5pbXBvcnQgeyBzdmVsdGVXcmFwcGVyUGx1Z2luIH0gZnJvbSAnLi9zdmVsdGVXcmFwcGVyUGx1Z2luLnRzJztcblxuY29uc3Qgc2Fzc1BsdWdpbiA9ICgnZGVmYXVsdCcgaW4gc2Fzc1BsdWdpbl8gPyBzYXNzUGx1Z2luXy5kZWZhdWx0IDogc2Fzc1BsdWdpbl8pIGFzIHVua25vd24gYXMgdHlwZW9mIHNhc3NQbHVnaW5fLmRlZmF1bHQ7XG5cbi8qKlxuICogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBidWlsZCBtb2Rlcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVpbGRNb2RlIHtcbiAgLyoqIERldmVsb3BtZW50IG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgRGV2ZWxvcG1lbnQsXG4gIC8qKiBQcm9kdWN0aW9uIG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgUHJvZHVjdGlvblxufVxuXG4vKipcbiAqIEJhbm5lciB0ZXh0IHRvIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGdlbmVyYXRlZCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhbm5lciA9IGAvKlxuVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgRVNCVUlMRFxuaWYgeW91IHdhbnQgdG8gdmlldyB0aGUgc291cmNlLCBwbGVhc2UgdmlzaXQgdGhlIGdpdGh1YiByZXBvc2l0b3J5IG9mIHRoaXMgcGx1Z2luXG4qL1xuYDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBidWlsZGluZyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGVzYnVpbGQgcGx1Z2lucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAgICovXG4gIGN1c3RvbUVzYnVpbGRQbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6ZXMgdGhlIGVzYnVpbGQgb3B0aW9ucy5cbiAgICovXG4gIGN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zPyhvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgbW9kZSwgZWl0aGVyIERldmVsb3BtZW50IG9yIFByb2R1Y3Rpb25cbiAgICovXG4gIG1vZGU6IEJ1aWxkTW9kZTtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBmb3IgT2JzaWRpYW4gY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gdGhlIGBPQlNJRElBTl9DT05GSUdfRk9MREVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIG9ic2lkaWFuQ29uZmlnRm9sZGVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgT2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52IHtcbiAgT0JTSURJQU5fQ09ORklHX0ZPTERFUjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgT2JzaWRpYW4gcGx1Z2luIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgbW9kZSBhbmQgY29uZmlndXJhdGlvbiBmb2xkZXIuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYnVpbGRpbmcgdGhlIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkT2JzaWRpYW5QbHVnaW4ob3B0aW9uczogQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMpOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgYXdhaXQgYnVpbGRDb21waWxlKCk7XG4gIGNvbmZpZygpO1xuICBjb25zdCBvYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnYgPSBwcm9jZXNzLmVudiBhcyBQYXJ0aWFsPE9ic2lkaWFuUGx1Z2luQnVpbGRlckVudj47XG5cbiAgY29uc3Qgb2JzaWRpYW5Db25maWdGb2xkZXIgPSBvcHRpb25zLm9ic2lkaWFuQ29uZmlnRm9sZGVyID8/IG9ic2lkaWFuUGx1Z2luQnVpbGRlckVudi5PQlNJRElBTl9DT05GSUdfRk9MREVSID8/ICcnO1xuICBjb25zdCBpc1Byb2R1Y3Rpb25CdWlsZCA9IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRNb2RlLlByb2R1Y3Rpb247XG5cbiAgY29uc3QgZGlzdEZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3QoaXNQcm9kdWN0aW9uQnVpbGQgPyBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQgOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0RGV2KTtcbiAgaWYgKCFkaXN0Rm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBkaXN0IGZvbGRlcicpO1xuICB9XG5cbiAgaWYgKGV4aXN0c1N5bmMoZGlzdEZvbGRlcikpIHtcbiAgICBhd2FpdCBybShkaXN0Rm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICBhd2FpdCBta2RpcihkaXN0Rm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBkaXN0RmlsZU5hbWVzID0gW1xuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvblxuICBdO1xuICBpZiAoIWlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlzdEZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuSG90UmVsb2FkKSwgJycsICd1dGYtOCcpO1xuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBkaXN0RmlsZU5hbWVzKSB7XG4gICAgY29uc3QgbG9jYWxGaWxlID0gcmVzb2x2ZVBhdGhGcm9tUm9vdChmaWxlTmFtZSk7XG4gICAgaWYgKCFsb2NhbEZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSB0aGUgbG9jYWwgZmlsZSBmb3IgJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZGlzdEZpbGUgPSBqb2luKGRpc3RGb2xkZXIsIGZpbGVOYW1lKTtcblxuICAgIGlmIChleGlzdHNTeW5jKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGNwKGxvY2FsRmlsZSwgZGlzdEZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc3RQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnMpO1xuICBjb25zdCBjc3NQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TdHlsZXNDc3MpO1xuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBwYWNrYWdlSnNvbi5uYW1lID8/ICcodW5rbm93biknO1xuXG4gIGNvbnN0IGJ1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zID0ge1xuICAgIGJhbm5lcjoge1xuICAgICAganM6IGJhbm5lclxuICAgIH0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIGNvbmRpdGlvbnM6IFsnYnJvd3NlciddLFxuICAgIGVudHJ5UG9pbnRzOiBbXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290KGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3JjLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluVHMpKVxuICAgICAgICA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHBsdWdpbicpKVxuICAgIF0sXG4gICAgZXh0ZXJuYWw6IFtcbiAgICAgICdvYnNpZGlhbicsXG4gICAgICAnZWxlY3Ryb24nLFxuICAgICAgJ0Bjb2RlbWlycm9yL2F1dG9jb21wbGV0ZScsXG4gICAgICAnQGNvZGVtaXJyb3IvY29sbGFiJyxcbiAgICAgICdAY29kZW1pcnJvci9jb21tYW5kcycsXG4gICAgICAnQGNvZGVtaXJyb3IvbGFuZ3VhZ2UnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2xpbnQnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3NlYXJjaCcsXG4gICAgICAnQGNvZGVtaXJyb3Ivc3RhdGUnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3ZpZXcnLFxuICAgICAgJ0BsZXplci9jb21tb24nLFxuICAgICAgJ0BsZXplci9oaWdobGlnaHQnLFxuICAgICAgJ0BsZXplci9scicsXG4gICAgICAnZXNidWlsZCcsXG4gICAgICAnZXNsaW50JyxcbiAgICAgIC4uLmJ1aWx0aW5Nb2R1bGVzXG4gICAgXSxcbiAgICBmb3JtYXQ6ICdjanMnLFxuICAgIGxvZ0xldmVsOiAnaW5mbycsXG4gICAgbWluaWZ5OiBpc1Byb2R1Y3Rpb25CdWlsZCxcbiAgICBvdXRmaWxlOiBkaXN0UGF0aCxcbiAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIGN1c3RvbUVzYnVpbGRPcHRpb25zUGx1Z2luKG9wdGlvbnMuY3VzdG9taXplRXNidWlsZE9wdGlvbnM/LmJpbmQob3B0aW9ucykpLFxuICAgICAgc3ZlbHRlV3JhcHBlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCksXG4gICAgICBzYXNzUGx1Z2luKHtcbiAgICAgICAgc291cmNlTWFwOiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICAgIH0pLFxuICAgICAgcmVuYW1lQ3NzUGx1Z2luKGRpc3RGb2xkZXIpLFxuICAgICAgcHJlcHJvY2Vzc1BsdWdpbigpLFxuICAgICAgZml4RXNtUGx1Z2luKCksXG4gICAgICBmaXhTb3VyY2VNYXBzUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkLCBbZGlzdFBhdGgsIGNzc1BhdGhdLCBwbHVnaW5OYW1lKSxcbiAgICAgIC4uLm9wdGlvbnMuY3VzdG9tRXNidWlsZFBsdWdpbnMgPz8gW10sXG4gICAgICBjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4oaXNQcm9kdWN0aW9uQnVpbGQsIGRpc3RGb2xkZXIsIG9ic2lkaWFuQ29uZmlnRm9sZGVyLCBwbHVnaW5OYW1lKVxuICAgIF0sXG4gICAgc291cmNlbWFwOiBpc1Byb2R1Y3Rpb25CdWlsZCA/IGZhbHNlIDogJ2lubGluZScsXG4gICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICB0cmVlU2hha2luZzogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGJ1aWxkQ29udGV4dCA9IGF3YWl0IGNvbnRleHQoYnVpbGRPcHRpb25zKTtcbiAgcmV0dXJuIGF3YWl0IGludm9rZUVzYnVpbGQoYnVpbGRDb250ZXh0LCBpc1Byb2R1Y3Rpb25CdWlsZCk7XG59XG5cbi8qKlxuICogSW52b2tlcyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIHRoZSBwcm92aWRlZCBidWlsZCBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSBidWlsZENvbnRleHQgLSBUaGUgYnVpbGQgY29udGV4dCBnZW5lcmF0ZWQgYnkgZXNidWlsZC5cbiAqIEBwYXJhbSBpc1Byb2R1Y3Rpb25CdWlsZCAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJ1aWxkIGlzIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGludm9rZUVzYnVpbGQoYnVpbGRDb250ZXh0OiBCdWlsZENvbnRleHQsIGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuKTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gIGlmIChpc1Byb2R1Y3Rpb25CdWlsZCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkQ29udGV4dC5yZWJ1aWxkKCk7XG4gICAgY29uc3QgaXNTdWNjZXNzID0gcmVzdWx0LmVycm9ycy5sZW5ndGggPT09IDAgJiYgcmVzdWx0Lndhcm5pbmdzLmxlbmd0aCA9PT0gMDtcbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKGlzU3VjY2Vzcyk7XG4gIH1cbiAgYXdhaXQgYnVpbGRDb250ZXh0Lndh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
147
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL2VzYnVpbGQvT2JzaWRpYW5QbHVnaW5CdWlsZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gYnVpbGQgYW5kIGJ1bmRsZSBhbiBPYnNpZGlhbiBwbHVnaW4gdXNpbmcgZXNidWlsZC5cbiAqIEl0IGluY2x1ZGVzIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGJ1aWxkIHByb2Nlc3MgYmFzZWQgb24gZGlmZmVyZW50IGJ1aWxkIG1vZGVzIChkZXZlbG9wbWVudCBvciBwcm9kdWN0aW9uKSxcbiAqIGFuZCBpdCBzZXRzIHVwIHZhcmlvdXMgZXNidWlsZCBwbHVnaW5zIHRvIHByZXByb2Nlc3MsIGxpbnQsIGZpeCBzb3VyY2UgbWFwcywgYW5kIGNvcHkgZmlsZXMgdG8gdGhlIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQnVpbGRDb250ZXh0LFxuICBCdWlsZE9wdGlvbnMsXG4gIFBsdWdpblxufSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnZG90ZW52JztcbmltcG9ydCB7IGNvbnRleHQgfSBmcm9tICdlc2J1aWxkJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1yZW5hbWUtZGVmYXVsdFxuaW1wb3J0IHNhc3NQbHVnaW5fIGZyb20gJ2VzYnVpbGQtc2Fzcy1wbHVnaW4nO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9FcnJvci50cyc7XG5pbXBvcnQgeyBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AgfSBmcm9tICcuLi8uLi9PYmplY3RVdGlscy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vLi4vUGF0aC50cyc7XG5pbXBvcnQgeyBidWlsZENvbXBpbGUgfSBmcm9tICcuLi9idWlsZC50cyc7XG5pbXBvcnQgeyBDbGlUYXNrUmVzdWx0IH0gZnJvbSAnLi4vQ2xpVXRpbHMudHMnO1xuaW1wb3J0IHtcbiAgYnVpbHRpbk1vZHVsZXMsXG4gIGNwLFxuICBleGlzdHNTeW5jLFxuICBta2RpcixcbiAgcHJvY2VzcyxcbiAgcm0sXG4gIHdyaXRlRmlsZVxufSBmcm9tICcuLi9Ob2RlTW9kdWxlcy50cyc7XG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi9OcG0udHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGhGcm9tUm9vdCB9IGZyb20gJy4uL1Jvb3QudHMnO1xuaW1wb3J0IHsgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luIH0gZnJvbSAnLi9jb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4udHMnO1xuaW1wb3J0IHsgY3VzdG9tRXNidWlsZE9wdGlvbnNQbHVnaW4gfSBmcm9tICcuL2N1c3RvbUVzYnVpbGRPcHRpb25zUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeEVzbVBsdWdpbiB9IGZyb20gJy4vZml4RXNtUGx1Z2luLnRzJztcbmltcG9ydCB7IGZpeFNvdXJjZU1hcHNQbHVnaW4gfSBmcm9tICcuL2ZpeFNvdXJjZU1hcHNQbHVnaW4udHMnO1xuaW1wb3J0IHsgcHJlcHJvY2Vzc1BsdWdpbiB9IGZyb20gJy4vcHJlcHJvY2Vzc1BsdWdpbi50cyc7XG5pbXBvcnQgeyByZW5hbWVDc3NQbHVnaW4gfSBmcm9tICcuL3JlbmFtZUNzc1BsdWdpbi50cyc7XG5pbXBvcnQgeyBzdmVsdGVXcmFwcGVyUGx1Z2luIH0gZnJvbSAnLi9zdmVsdGVXcmFwcGVyUGx1Z2luLnRzJztcblxuY29uc3Qgc2Fzc1BsdWdpbiA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChzYXNzUGx1Z2luXyk7XG5cbi8qKlxuICogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBidWlsZCBtb2Rlcy5cbiAqL1xuZXhwb3J0IGVudW0gQnVpbGRNb2RlIHtcbiAgLyoqIERldmVsb3BtZW50IG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgRGV2ZWxvcG1lbnQsXG4gIC8qKiBQcm9kdWN0aW9uIG1vZGUgZm9yIGJ1aWxkaW5nIHRoZSBwbHVnaW4gKi9cbiAgUHJvZHVjdGlvblxufVxuXG4vKipcbiAqIEJhbm5lciB0ZXh0IHRvIGJlIGluY2x1ZGVkIGF0IHRoZSB0b3Agb2YgdGhlIGdlbmVyYXRlZCBmaWxlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGJhbm5lciA9IGAvKlxuVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgRVNCVUlMRFxuaWYgeW91IHdhbnQgdG8gdmlldyB0aGUgc291cmNlLCBwbGVhc2UgdmlzaXQgdGhlIGdpdGh1YiByZXBvc2l0b3J5IG9mIHRoaXMgcGx1Z2luXG4qL1xuYDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBidWlsZGluZyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGVzYnVpbGQgcGx1Z2lucyB0byBiZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAgICovXG4gIGN1c3RvbUVzYnVpbGRQbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbWl6ZXMgdGhlIGVzYnVpbGQgb3B0aW9ucy5cbiAgICovXG4gIGN1c3RvbWl6ZUVzYnVpbGRPcHRpb25zPyhvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgbW9kZSwgZWl0aGVyIERldmVsb3BtZW50IG9yIFByb2R1Y3Rpb25cbiAgICovXG4gIG1vZGU6IEJ1aWxkTW9kZTtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBmb3IgT2JzaWRpYW4gY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gdGhlIGBPQlNJRElBTl9DT05GSUdfRk9MREVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIG9ic2lkaWFuQ29uZmlnRm9sZGVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgT2JzaWRpYW5QbHVnaW5CdWlsZGVyRW52IHtcbiAgT0JTSURJQU5fQ09ORklHX0ZPTERFUjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgT2JzaWRpYW4gcGx1Z2luIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgbW9kZSBhbmQgY29uZmlndXJhdGlvbiBmb2xkZXIuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgYnVpbGRpbmcgdGhlIHBsdWdpbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkT2JzaWRpYW5QbHVnaW4ob3B0aW9uczogQnVpbGRPYnNpZGlhblBsdWdpbk9wdGlvbnMpOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgYXdhaXQgYnVpbGRDb21waWxlKCk7XG4gIGNvbmZpZygpO1xuICBjb25zdCBvYnNpZGlhblBsdWdpbkJ1aWxkZXJFbnYgPSBwcm9jZXNzLmVudiBhcyBQYXJ0aWFsPE9ic2lkaWFuUGx1Z2luQnVpbGRlckVudj47XG5cbiAgY29uc3Qgb2JzaWRpYW5Db25maWdGb2xkZXIgPSBvcHRpb25zLm9ic2lkaWFuQ29uZmlnRm9sZGVyID8/IG9ic2lkaWFuUGx1Z2luQnVpbGRlckVudi5PQlNJRElBTl9DT05GSUdfRk9MREVSID8/ICcnO1xuICBjb25zdCBpc1Byb2R1Y3Rpb25CdWlsZCA9IG9wdGlvbnMubW9kZSA9PT0gQnVpbGRNb2RlLlByb2R1Y3Rpb247XG5cbiAgY29uc3QgZGlzdEZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3QoaXNQcm9kdWN0aW9uQnVpbGQgPyBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQgOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0RGV2KTtcbiAgaWYgKCFkaXN0Rm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBkaXN0IGZvbGRlcicpO1xuICB9XG5cbiAgaWYgKGV4aXN0c1N5bmMoZGlzdEZvbGRlcikpIHtcbiAgICBhd2FpdCBybShkaXN0Rm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfVxuICBhd2FpdCBta2RpcihkaXN0Rm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBkaXN0RmlsZU5hbWVzID0gW1xuICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvblxuICBdO1xuICBpZiAoIWlzUHJvZHVjdGlvbkJ1aWxkKSB7XG4gICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oZGlzdEZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuSG90UmVsb2FkKSwgJycsICd1dGYtOCcpO1xuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBkaXN0RmlsZU5hbWVzKSB7XG4gICAgY29uc3QgbG9jYWxGaWxlID0gcmVzb2x2ZVBhdGhGcm9tUm9vdChmaWxlTmFtZSk7XG4gICAgaWYgKCFsb2NhbEZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSB0aGUgbG9jYWwgZmlsZSBmb3IgJHtmaWxlTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZGlzdEZpbGUgPSBqb2luKGRpc3RGb2xkZXIsIGZpbGVOYW1lKTtcblxuICAgIGlmIChleGlzdHNTeW5jKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGNwKGxvY2FsRmlsZSwgZGlzdEZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc3RQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnMpO1xuICBjb25zdCBjc3NQYXRoID0gam9pbihkaXN0Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TdHlsZXNDc3MpO1xuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IHBsdWdpbk5hbWUgPSBwYWNrYWdlSnNvbi5uYW1lID8/ICcodW5rbm93biknO1xuXG4gIGNvbnN0IGJ1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zID0ge1xuICAgIGJhbm5lcjoge1xuICAgICAganM6IGJhbm5lclxuICAgIH0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIGNvbmRpdGlvbnM6IFsnYnJvd3NlciddLFxuICAgIGVudHJ5UG9pbnRzOiBbXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290KGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3JjLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluVHMpKVxuICAgICAgICA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHBsdWdpbicpKVxuICAgIF0sXG4gICAgZXh0ZXJuYWw6IFtcbiAgICAgICdvYnNpZGlhbicsXG4gICAgICAnZWxlY3Ryb24nLFxuICAgICAgJ0Bjb2RlbWlycm9yL2F1dG9jb21wbGV0ZScsXG4gICAgICAnQGNvZGVtaXJyb3IvY29sbGFiJyxcbiAgICAgICdAY29kZW1pcnJvci9jb21tYW5kcycsXG4gICAgICAnQGNvZGVtaXJyb3IvbGFuZ3VhZ2UnLFxuICAgICAgJ0Bjb2RlbWlycm9yL2xpbnQnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3NlYXJjaCcsXG4gICAgICAnQGNvZGVtaXJyb3Ivc3RhdGUnLFxuICAgICAgJ0Bjb2RlbWlycm9yL3ZpZXcnLFxuICAgICAgJ0BsZXplci9jb21tb24nLFxuICAgICAgJ0BsZXplci9oaWdobGlnaHQnLFxuICAgICAgJ0BsZXplci9scicsXG4gICAgICAnZXNidWlsZCcsXG4gICAgICAnZXNsaW50JyxcbiAgICAgIC4uLmJ1aWx0aW5Nb2R1bGVzXG4gICAgXSxcbiAgICBmb3JtYXQ6ICdjanMnLFxuICAgIGxvZ0xldmVsOiAnaW5mbycsXG4gICAgbWluaWZ5OiBpc1Byb2R1Y3Rpb25CdWlsZCxcbiAgICBvdXRmaWxlOiBkaXN0UGF0aCxcbiAgICBwbGF0Zm9ybTogJ25vZGUnLFxuICAgIHBsdWdpbnM6IFtcbiAgICAgIGN1c3RvbUVzYnVpbGRPcHRpb25zUGx1Z2luKG9wdGlvbnMuY3VzdG9taXplRXNidWlsZE9wdGlvbnM/LmJpbmQob3B0aW9ucykpLFxuICAgICAgc3ZlbHRlV3JhcHBlclBsdWdpbihpc1Byb2R1Y3Rpb25CdWlsZCksXG4gICAgICBzYXNzUGx1Z2luKHtcbiAgICAgICAgc291cmNlTWFwOiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICAgIH0pLFxuICAgICAgcmVuYW1lQ3NzUGx1Z2luKGRpc3RGb2xkZXIpLFxuICAgICAgcHJlcHJvY2Vzc1BsdWdpbigpLFxuICAgICAgZml4RXNtUGx1Z2luKCksXG4gICAgICBmaXhTb3VyY2VNYXBzUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkLCBbZGlzdFBhdGgsIGNzc1BhdGhdLCBwbHVnaW5OYW1lKSxcbiAgICAgIC4uLm9wdGlvbnMuY3VzdG9tRXNidWlsZFBsdWdpbnMgPz8gW10sXG4gICAgICBjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4oaXNQcm9kdWN0aW9uQnVpbGQsIGRpc3RGb2xkZXIsIG9ic2lkaWFuQ29uZmlnRm9sZGVyLCBwbHVnaW5OYW1lKVxuICAgIF0sXG4gICAgc291cmNlbWFwOiBpc1Byb2R1Y3Rpb25CdWlsZCA/IGZhbHNlIDogJ2lubGluZScsXG4gICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICB0cmVlU2hha2luZzogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0IGJ1aWxkQ29udGV4dCA9IGF3YWl0IGNvbnRleHQoYnVpbGRPcHRpb25zKTtcbiAgcmV0dXJuIGF3YWl0IGludm9rZUVzYnVpbGQoYnVpbGRDb250ZXh0LCBpc1Byb2R1Y3Rpb25CdWlsZCk7XG59XG5cbi8qKlxuICogSW52b2tlcyB0aGUgYnVpbGQgcHJvY2VzcyB3aXRoIHRoZSBwcm92aWRlZCBidWlsZCBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSBidWlsZENvbnRleHQgLSBUaGUgYnVpbGQgY29udGV4dCBnZW5lcmF0ZWQgYnkgZXNidWlsZC5cbiAqIEBwYXJhbSBpc1Byb2R1Y3Rpb25CdWlsZCAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJ1aWxkIGlzIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaW5kaWNhdGluZyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBidWlsZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGludm9rZUVzYnVpbGQoYnVpbGRDb250ZXh0OiBCdWlsZENvbnRleHQsIGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuKTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gIGlmIChpc1Byb2R1Y3Rpb25CdWlsZCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkQ29udGV4dC5yZWJ1aWxkKCk7XG4gICAgY29uc3QgaXNTdWNjZXNzID0gcmVzdWx0LmVycm9ycy5sZW5ndGggPT09IDAgJiYgcmVzdWx0Lndhcm5pbmdzLmxlbmd0aCA9PT0gMDtcbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKGlzU3VjY2Vzcyk7XG4gIH1cbiAgYXdhaXQgYnVpbGRDb250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
@@ -7,8 +7,9 @@ if you want to view the source, please visit the github repository of this plugi
7
7
 
8
8
  import esbuildSvelte_ from "esbuild-svelte";
9
9
  import { sveltePreprocess } from "svelte-preprocess";
10
+ import { extractDefaultExportInterop } from "../../ObjectUtils.mjs";
10
11
  import { readPackageJson } from "../Npm.mjs";
11
- const esbuildSvelte = esbuildSvelte_;
12
+ const esbuildSvelte = extractDefaultExportInterop(esbuildSvelte_);
12
13
  function svelteWrapperPlugin(isProductionBuild) {
13
14
  const esbuildSveltePlugin = esbuildSvelte({
14
15
  compilerOptions: {
@@ -38,4 +39,4 @@ function svelteWrapperPlugin(isProductionBuild) {
38
39
  export {
39
40
  svelteWrapperPlugin
40
41
  };
41
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL2VzYnVpbGQvc3ZlbHRlV3JhcHBlclBsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBTdmVsdGUgd3JhcHBlciBlc2J1aWxkIHBsdWdpbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgZXNidWlsZFN2ZWx0ZV8gZnJvbSAnZXNidWlsZC1zdmVsdGUnO1xuaW1wb3J0IHsgc3ZlbHRlUHJlcHJvY2VzcyB9IGZyb20gJ3N2ZWx0ZS1wcmVwcm9jZXNzJztcblxuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vTnBtLnRzJztcblxuY29uc3QgZXNidWlsZFN2ZWx0ZSA9IGVzYnVpbGRTdmVsdGVfIGFzIHVua25vd24gYXMgdHlwZW9mIGVzYnVpbGRTdmVsdGVfLmRlZmF1bHQ7XG5cbi8qKlxuICogV3JhcHMgdGhlIGVzYnVpbGQtc3ZlbHRlIHBsdWdpbiB0byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmb3JtYXQgaXMgdXNlZC5cbiAqXG4gKiBAcGFyYW0gaXNQcm9kdWN0aW9uQnVpbGQgLSBXaGV0aGVyIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gKiBAcmV0dXJucyBUaGUgZXNidWlsZCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdmVsdGVXcmFwcGVyUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuKTogUGx1Z2luIHtcbiAgY29uc3QgZXNidWlsZFN2ZWx0ZVBsdWdpbiA9IGVzYnVpbGRTdmVsdGUoe1xuICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgY3NzOiAnaW5qZWN0ZWQnLFxuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIG1vZHVsZUNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIHByZXByb2Nlc3M6IHN2ZWx0ZVByZXByb2Nlc3MoKVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzdmVsdGUtd3JhcHBlcicsXG4gICAgYXN5bmMgc2V0dXAoYnVpbGQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gICAgICBjb25zdCBmb3JtYXQgPSBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJyA/ICdlc20nIDogJ2Nqcyc7XG4gICAgICBhd2FpdCBlc2J1aWxkU3ZlbHRlUGx1Z2luLnNldHVwKHtcbiAgICAgICAgLi4uYnVpbGQsXG4gICAgICAgIGluaXRpYWxPcHRpb25zOiB7XG4gICAgICAgICAgLi4uYnVpbGQuaW5pdGlhbE9wdGlvbnMsXG4gICAgICAgICAgZm9ybWF0XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFRQSxPQUFPLG9CQUFvQjtBQUMzQixTQUFTLHdCQUF3QjtBQUVqQyxTQUFTLHVCQUF1QjtBQUVoQyxNQUFNLGdCQUFnQjtBQVFmLFNBQVMsb0JBQW9CLG1CQUFvQztBQUN0RSxRQUFNLHNCQUFzQixjQUFjO0FBQUEsSUFDeEMsaUJBQWlCO0FBQUEsTUFDZixLQUFLO0FBQUEsTUFDTCxLQUFLLENBQUM7QUFBQSxJQUNSO0FBQUEsSUFDQSx1QkFBdUI7QUFBQSxNQUNyQixLQUFLLENBQUM7QUFBQSxJQUNSO0FBQUEsSUFDQSxZQUFZLGlCQUFpQjtBQUFBLEVBQy9CLENBQUM7QUFFRCxTQUFPO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixNQUFNLE1BQU0sT0FBc0I7QUFDaEMsWUFBTSxjQUFjLE1BQU0sZ0JBQWdCO0FBQzFDLFlBQU0sU0FBUyxZQUFZLFNBQVMsV0FBVyxRQUFRO0FBQ3ZELFlBQU0sb0JBQW9CLE1BQU07QUFBQSxRQUM5QixHQUFHO0FBQUEsUUFDSCxnQkFBZ0I7QUFBQSxVQUNkLEdBQUcsTUFBTTtBQUFBLFVBQ1Q7QUFBQSxRQUNGO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
42
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL2VzYnVpbGQvc3ZlbHRlV3JhcHBlclBsdWdpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBTdmVsdGUgd3JhcHBlciBlc2J1aWxkIHBsdWdpbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ2VzYnVpbGQnO1xuXG5pbXBvcnQgZXNidWlsZFN2ZWx0ZV8gZnJvbSAnZXNidWlsZC1zdmVsdGUnO1xuaW1wb3J0IHsgc3ZlbHRlUHJlcHJvY2VzcyB9IGZyb20gJ3N2ZWx0ZS1wcmVwcm9jZXNzJztcblxuaW1wb3J0IHsgZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wIH0gZnJvbSAnLi4vLi4vT2JqZWN0VXRpbHMudHMnO1xuaW1wb3J0IHsgcmVhZFBhY2thZ2VKc29uIH0gZnJvbSAnLi4vTnBtLnRzJztcblxuY29uc3QgZXNidWlsZFN2ZWx0ZSA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChlc2J1aWxkU3ZlbHRlXyk7XG5cbi8qKlxuICogV3JhcHMgdGhlIGVzYnVpbGQtc3ZlbHRlIHBsdWdpbiB0byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmb3JtYXQgaXMgdXNlZC5cbiAqXG4gKiBAcGFyYW0gaXNQcm9kdWN0aW9uQnVpbGQgLSBXaGV0aGVyIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gKiBAcmV0dXJucyBUaGUgZXNidWlsZCBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdmVsdGVXcmFwcGVyUGx1Z2luKGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuKTogUGx1Z2luIHtcbiAgY29uc3QgZXNidWlsZFN2ZWx0ZVBsdWdpbiA9IGVzYnVpbGRTdmVsdGUoe1xuICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgY3NzOiAnaW5qZWN0ZWQnLFxuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIG1vZHVsZUNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgZGV2OiAhaXNQcm9kdWN0aW9uQnVpbGRcbiAgICB9LFxuICAgIHByZXByb2Nlc3M6IHN2ZWx0ZVByZXByb2Nlc3MoKVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzdmVsdGUtd3JhcHBlcicsXG4gICAgYXN5bmMgc2V0dXAoYnVpbGQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gICAgICBjb25zdCBmb3JtYXQgPSBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJyA/ICdlc20nIDogJ2Nqcyc7XG4gICAgICBhd2FpdCBlc2J1aWxkU3ZlbHRlUGx1Z2luLnNldHVwKHtcbiAgICAgICAgLi4uYnVpbGQsXG4gICAgICAgIGluaXRpYWxPcHRpb25zOiB7XG4gICAgICAgICAgLi4uYnVpbGQuaW5pdGlhbE9wdGlvbnMsXG4gICAgICAgICAgZm9ybWF0XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFRQSxPQUFPLG9CQUFvQjtBQUMzQixTQUFTLHdCQUF3QjtBQUVqQyxTQUFTLG1DQUFtQztBQUM1QyxTQUFTLHVCQUF1QjtBQUVoQyxNQUFNLGdCQUFnQiw0QkFBNEIsY0FBYztBQVF6RCxTQUFTLG9CQUFvQixtQkFBb0M7QUFDdEUsUUFBTSxzQkFBc0IsY0FBYztBQUFBLElBQ3hDLGlCQUFpQjtBQUFBLE1BQ2YsS0FBSztBQUFBLE1BQ0wsS0FBSyxDQUFDO0FBQUEsSUFDUjtBQUFBLElBQ0EsdUJBQXVCO0FBQUEsTUFDckIsS0FBSyxDQUFDO0FBQUEsSUFDUjtBQUFBLElBQ0EsWUFBWSxpQkFBaUI7QUFBQSxFQUMvQixDQUFDO0FBRUQsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTSxNQUFNLE9BQXNCO0FBQ2hDLFlBQU0sY0FBYyxNQUFNLGdCQUFnQjtBQUMxQyxZQUFNLFNBQVMsWUFBWSxTQUFTLFdBQVcsUUFBUTtBQUN2RCxZQUFNLG9CQUFvQixNQUFNO0FBQUEsUUFDOUIsR0FBRztBQUFBLFFBQ0gsZ0JBQWdCO0FBQUEsVUFDZCxHQUFHLE1BQU07QUFBQSxVQUNUO0FBQUEsUUFDRjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -21,7 +21,11 @@ export type PropertyValues<T extends object> = T[StringKeys<T>];
21
21
  * @typeParam T - The type of the object.
22
22
  */
23
23
  export type StringKeys<T extends object> = Extract<keyof T, string>;
24
- type ExactKeys<Type extends object, Keys extends readonly string[]> = keyof Type extends Keys[number] ? Keys[number] extends keyof Type ? Keys : `ERROR: Extra keys: ${Exclude<Keys[number], keyof Type> & string}` : `ERROR: Missing keys: ${Exclude<keyof Type, Keys[number]> & string}`;
24
+ type ExactKeys<Type extends object, Keys extends readonly string[]> = Exclude<Keys[number], keyof Type> extends never ? Exclude<keyof Type, Keys[number]> extends never ? Keys : `ERROR: Missing keys: ${TupleToString<UnionToTuple<Exclude<keyof Type, Keys[number]> & string>>}` : `ERROR: Invalid keys: ${TupleToString<UnionToTuple<Exclude<Keys[number], keyof Type> & string>>}`;
25
+ type LastInUnion<Union> = UnionToIntersection<Union extends unknown ? () => Union : never> extends () => infer Last ? Last : never;
26
+ type TupleToString<Tuple extends readonly unknown[]> = Tuple extends readonly [infer First, ...infer Rest] ? First extends string ? Rest extends readonly unknown[] ? Rest['length'] extends 0 ? First : `${First},${TupleToString<Rest>}` : never : never : '';
27
+ type UnionToIntersection<Union> = (Union extends unknown ? (key: Union) => void : never) extends (key: infer Intersection) => void ? Intersection : never;
28
+ type UnionToTuple<Union, Last = LastInUnion<Union>> = [Union] extends [never] ? [] : [...UnionToTuple<Exclude<Union, Last>>, Last];
25
29
  /**
26
30
  * Asserts that all keys of a type are present in a list of keys.
27
31
  *
@@ -33,4 +33,4 @@ export {
33
33
  assertAllTypeKeys,
34
34
  typeToDummyParam
35
35
  };
36
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1R5cGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVHlwZSB1dGlsaXRpZXMuXG4gKi9cblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgcmV0dXJuIHZhbHVlIHRoYXQgbWF5IGJlIGB2b2lkYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdGhhdCBtYXkgYmUgcmV0dXJuZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbmV4cG9ydCB0eXBlIE1heWJlUmV0dXJuPFQ+ID0gVCB8IHZvaWQ7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBQcm9wZXJ0eVZhbHVlczxUIGV4dGVuZHMgb2JqZWN0PiA9IFRbU3RyaW5nS2V5czxUPl07XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG50eXBlIEV4YWN0S2V5czxUeXBlIGV4dGVuZHMgb2JqZWN0LCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10+ID0ga2V5b2YgVHlwZSBleHRlbmRzIEtleXNbbnVtYmVyXSA/IEtleXNbbnVtYmVyXSBleHRlbmRzIGtleW9mIFR5cGUgPyBLZXlzXG4gIDogYEVSUk9SOiBFeHRyYSBrZXlzOiAke0V4Y2x1ZGU8S2V5c1tudW1iZXJdLCBrZXlvZiBUeXBlPiAmIHN0cmluZ31gXG4gIDogYEVSUk9SOiBNaXNzaW5nIGtleXM6ICR7RXhjbHVkZTxrZXlvZiBUeXBlLCBLZXlzW251bWJlcl0+ICYgc3RyaW5nfWA7XG5cbmNvbnN0IERVTU1ZX1BST1hZID0gbmV3IFByb3h5KGR1bW15VGhyb3csIHtcbiAgYXBwbHk6IGR1bW15VGhyb3csXG4gIGNvbnN0cnVjdDogZHVtbXlUaHJvdyxcbiAgZGVmaW5lUHJvcGVydHk6IGR1bW15VGhyb3csXG4gIGRlbGV0ZVByb3BlcnR5OiBkdW1teVRocm93LFxuICBnZXQ6IGR1bW15VGhyb3csXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZHVtbXlUaHJvdyxcbiAgZ2V0UHJvdG90eXBlT2Y6IGR1bW15VGhyb3csXG4gIGhhczogZHVtbXlUaHJvdyxcbiAgaXNFeHRlbnNpYmxlOiBkdW1teVRocm93LFxuICBvd25LZXlzOiBkdW1teVRocm93LFxuICBwcmV2ZW50RXh0ZW5zaW9uczogZHVtbXlUaHJvdyxcbiAgc2V0OiBkdW1teVRocm93LFxuICBzZXRQcm90b3R5cGVPZjogZHVtbXlUaHJvd1xufSk7XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGFsbCBrZXlzIG9mIGEgdHlwZSBhcmUgcHJlc2VudCBpbiBhIGxpc3Qgb2Yga2V5cy5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgdHlwZSB0byBhc3NlcnQgdGhlIGtleXMgb2YuXG4gKiBAdHlwZVBhcmFtIEtleXMgLSBUaGUgbGlzdCBvZiBrZXlzIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBfdHlwZSAtIFRoZSB0eXBlIHRvIGFzc2VydCB0aGUga2V5cyBvZi5cbiAqIEBwYXJhbSBrZXlzIC0gVGhlIGxpc3Qgb2Yga2V5cyB0byBhc3NlcnQuXG4gKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBrZXlzLlxuICpcbiAqIEByZW1hcmtzIElmIHRoZSBpbmNvcnJlY3Qga2V5cyBhcmUgcHJvdmlkZWQsIHRoZSBmdW5jdGlvbiBoYXMgYSBjb21waWxlLXRpbWUgZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBbGxUeXBlS2V5czxcbiAgVHlwZSBleHRlbmRzIG9iamVjdCxcbiAgY29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdXG4+KF90eXBlOiBUeXBlLCBrZXlzOiBFeGFjdEtleXM8VHlwZSwgS2V5cz4pOiByZWFkb25seSAoa2V5b2YgVHlwZSlbXSB7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKGtleXMuc2xpY2UoKSkgYXMgcmVhZG9ubHkgKGtleW9mIFR5cGUpW107XG59XG5cbi8qKlxuICogQ29udmVydHMgYSB0eXBlIHRvIGEgZHVtbXkgcGFyYW1ldGVyLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIGR1bW15IHBhcmFtZXRlciBvZiB0aGUgdHlwZS5cbiAqXG4gKiBAcmVtYXJrcyBUaGUgcmVzdWx0IHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIHR5cGUgaW5mZXJlbmNlLiBUaGUgdmFsdWUgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb0R1bW15UGFyYW08VD4oKTogVCB7XG4gIHJldHVybiBEVU1NWV9QUk9YWSBhcyB1bmtub3duIGFzIFQ7XG59XG5cbmZ1bmN0aW9uIGR1bW15VGhyb3coKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0R1bW15IHBhcmFtZXRlciBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQWdDQSxNQUFNLGNBQWMsSUFBSSxNQUFNLFlBQVk7QUFBQSxFQUN4QyxPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixLQUFLO0FBQUEsRUFDTCwwQkFBMEI7QUFBQSxFQUMxQixnQkFBZ0I7QUFBQSxFQUNoQixLQUFLO0FBQUEsRUFDTCxjQUFjO0FBQUEsRUFDZCxTQUFTO0FBQUEsRUFDVCxtQkFBbUI7QUFBQSxFQUNuQixLQUFLO0FBQUEsRUFDTCxnQkFBZ0I7QUFDbEIsQ0FBQztBQWFNLFNBQVMsa0JBR2QsT0FBYSxNQUFzRDtBQUNuRSxTQUFPLE9BQU8sT0FBTyxLQUFLLE1BQU0sQ0FBQztBQUNuQztBQVdPLFNBQVMsbUJBQXlCO0FBQ3ZDLFNBQU87QUFDVDtBQUVBLFNBQVMsYUFBb0I7QUFDM0IsUUFBTSxJQUFJLE1BQU0sa0RBQWtEO0FBQ3BFOyIsCiAgIm5hbWVzIjogW10KfQo=
36
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1R5cGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogVHlwZSB1dGlsaXRpZXMuXG4gKi9cblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgcmV0dXJuIHZhbHVlIHRoYXQgbWF5IGJlIGB2b2lkYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdGhhdCBtYXkgYmUgcmV0dXJuZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbmV4cG9ydCB0eXBlIE1heWJlUmV0dXJuPFQ+ID0gVCB8IHZvaWQ7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBQcm9wZXJ0eVZhbHVlczxUIGV4dGVuZHMgb2JqZWN0PiA9IFRbU3RyaW5nS2V5czxUPl07XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG50eXBlIEV4YWN0S2V5czxUeXBlIGV4dGVuZHMgb2JqZWN0LCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10+ID0gRXhjbHVkZTxLZXlzW251bWJlcl0sIGtleW9mIFR5cGU+IGV4dGVuZHMgbmV2ZXJcbiAgPyBFeGNsdWRlPGtleW9mIFR5cGUsIEtleXNbbnVtYmVyXT4gZXh0ZW5kcyBuZXZlciA/IEtleXNcbiAgOiBgRVJST1I6IE1pc3Npbmcga2V5czogJHtUdXBsZVRvU3RyaW5nPFVuaW9uVG9UdXBsZTxFeGNsdWRlPGtleW9mIFR5cGUsIEtleXNbbnVtYmVyXT4gJiBzdHJpbmc+Pn1gXG4gIDogYEVSUk9SOiBJbnZhbGlkIGtleXM6ICR7VHVwbGVUb1N0cmluZzxVbmlvblRvVHVwbGU8RXhjbHVkZTxLZXlzW251bWJlcl0sIGtleW9mIFR5cGU+ICYgc3RyaW5nPj59YDtcbnR5cGUgTGFzdEluVW5pb248VW5pb24+ID0gVW5pb25Ub0ludGVyc2VjdGlvbjxVbmlvbiBleHRlbmRzIHVua25vd24gPyAoKSA9PiBVbmlvbiA6IG5ldmVyPiBleHRlbmRzICgpID0+IGluZmVyIExhc3QgPyBMYXN0IDogbmV2ZXI7XG50eXBlIFR1cGxlVG9TdHJpbmc8VHVwbGUgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gVHVwbGUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgRmlyc3QsIC4uLmluZmVyIFJlc3RdXG4gID8gRmlyc3QgZXh0ZW5kcyBzdHJpbmcgPyBSZXN0IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID8gUmVzdFsnbGVuZ3RoJ10gZXh0ZW5kcyAwID8gRmlyc3RcbiAgICAgIDogYCR7Rmlyc3R9LCR7VHVwbGVUb1N0cmluZzxSZXN0Pn1gXG4gICAgOiBuZXZlclxuICA6IG5ldmVyXG4gIDogJyc7XG50eXBlIFVuaW9uVG9JbnRlcnNlY3Rpb248VW5pb24+ID0gKFVuaW9uIGV4dGVuZHMgdW5rbm93biA/IChrZXk6IFVuaW9uKSA9PiB2b2lkIDogbmV2ZXIpIGV4dGVuZHMgKGtleTogaW5mZXIgSW50ZXJzZWN0aW9uKSA9PiB2b2lkID8gSW50ZXJzZWN0aW9uIDogbmV2ZXI7XG50eXBlIFVuaW9uVG9UdXBsZTxVbmlvbiwgTGFzdCA9IExhc3RJblVuaW9uPFVuaW9uPj4gPSBbVW5pb25dIGV4dGVuZHMgW25ldmVyXSA/IFtdIDogWy4uLlVuaW9uVG9UdXBsZTxFeGNsdWRlPFVuaW9uLCBMYXN0Pj4sIExhc3RdO1xuXG5jb25zdCBEVU1NWV9QUk9YWSA9IG5ldyBQcm94eShkdW1teVRocm93LCB7XG4gIGFwcGx5OiBkdW1teVRocm93LFxuICBjb25zdHJ1Y3Q6IGR1bW15VGhyb3csXG4gIGRlZmluZVByb3BlcnR5OiBkdW1teVRocm93LFxuICBkZWxldGVQcm9wZXJ0eTogZHVtbXlUaHJvdyxcbiAgZ2V0OiBkdW1teVRocm93LFxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGR1bW15VGhyb3csXG4gIGdldFByb3RvdHlwZU9mOiBkdW1teVRocm93LFxuICBoYXM6IGR1bW15VGhyb3csXG4gIGlzRXh0ZW5zaWJsZTogZHVtbXlUaHJvdyxcbiAgb3duS2V5czogZHVtbXlUaHJvdyxcbiAgcHJldmVudEV4dGVuc2lvbnM6IGR1bW15VGhyb3csXG4gIHNldDogZHVtbXlUaHJvdyxcbiAgc2V0UHJvdG90eXBlT2Y6IGR1bW15VGhyb3dcbn0pO1xuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhbGwga2V5cyBvZiBhIHR5cGUgYXJlIHByZXNlbnQgaW4gYSBsaXN0IG9mIGtleXMuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgdG8gYXNzZXJ0IHRoZSBrZXlzIG9mLlxuICogQHR5cGVQYXJhbSBLZXlzIC0gVGhlIGxpc3Qgb2Yga2V5cyB0byBhc3NlcnQuXG4gKiBAcGFyYW0gX3R5cGUgLSBUaGUgdHlwZSB0byBhc3NlcnQgdGhlIGtleXMgb2YuXG4gKiBAcGFyYW0ga2V5cyAtIFRoZSBsaXN0IG9mIGtleXMgdG8gYXNzZXJ0LlxuICogQHJldHVybnMgVGhlIGxpc3Qgb2Yga2V5cy5cbiAqXG4gKiBAcmVtYXJrcyBJZiB0aGUgaW5jb3JyZWN0IGtleXMgYXJlIHByb3ZpZGVkLCB0aGUgZnVuY3Rpb24gaGFzIGEgY29tcGlsZS10aW1lIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QWxsVHlwZUtleXM8XG4gIFR5cGUgZXh0ZW5kcyBvYmplY3QsXG4gIGNvbnN0IEtleXMgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXVxuPihfdHlwZTogVHlwZSwga2V5czogRXhhY3RLZXlzPFR5cGUsIEtleXM+KTogcmVhZG9ubHkgKGtleW9mIFR5cGUpW10ge1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZShrZXlzLnNsaWNlKCkpIGFzIHJlYWRvbmx5IChrZXlvZiBUeXBlKVtdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgdHlwZSB0byBhIGR1bW15IHBhcmFtZXRlci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBkdW1teSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUuXG4gKlxuICogQHJlbWFya3MgVGhlIHJlc3VsdCBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciB0eXBlIGluZmVyZW5jZS4gVGhlIHZhbHVlIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnNcbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9EdW1teVBhcmFtPFQ+KCk6IFQge1xuICByZXR1cm4gRFVNTVlfUFJPWFkgYXMgdW5rbm93biBhcyBUO1xufVxuXG5mdW5jdGlvbiBkdW1teVRocm93KCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdEdW1teSBwYXJhbWV0ZXIgc2hvdWxkIG5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4nKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUEwQ0EsTUFBTSxjQUFjLElBQUksTUFBTSxZQUFZO0FBQUEsRUFDeEMsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsS0FBSztBQUFBLEVBQ0wsMEJBQTBCO0FBQUEsRUFDMUIsZ0JBQWdCO0FBQUEsRUFDaEIsS0FBSztBQUFBLEVBQ0wsY0FBYztBQUFBLEVBQ2QsU0FBUztBQUFBLEVBQ1QsbUJBQW1CO0FBQUEsRUFDbkIsS0FBSztBQUFBLEVBQ0wsZ0JBQWdCO0FBQ2xCLENBQUM7QUFhTSxTQUFTLGtCQUdkLE9BQWEsTUFBc0Q7QUFDbkUsU0FBTyxPQUFPLE9BQU8sS0FBSyxNQUFNLENBQUM7QUFDbkM7QUFXTyxTQUFTLG1CQUF5QjtBQUN2QyxTQUFPO0FBQ1Q7QUFFQSxTQUFTLGFBQW9CO0FBQzNCLFFBQU0sSUFBSSxNQUFNLGtEQUFrRDtBQUNwRTsiLAogICJuYW1lcyI6IFtdCn0K