@worktile/theia 17.3.2 → 17.4.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.
Files changed (32) hide show
  1. package/components/text/text.component.d.ts +2 -2
  2. package/editor.component.d.ts +3 -6
  3. package/esm2022/components/text/text.component.mjs +7 -8
  4. package/esm2022/core/with-theia.mjs +1 -1
  5. package/esm2022/editor.component.mjs +10 -25
  6. package/esm2022/interfaces/editor.mjs +1 -1
  7. package/esm2022/interfaces/plugins/index.mjs +2 -2
  8. package/esm2022/plugins/code/code.component.mjs +2 -2
  9. package/esm2022/plugins/code/code.plugin.mjs +7 -6
  10. package/esm2022/plugins/common/insert-data-by-invalid-type.mjs +6 -6
  11. package/esm2022/plugins/deserialize/deserialize-html.plugin.mjs +20 -18
  12. package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +10 -10
  13. package/esm2022/plugins/image/image.component.mjs +2 -3
  14. package/esm2022/plugins/image/image.plugin.mjs +5 -4
  15. package/esm2022/plugins/index.mjs +2 -2
  16. package/esm2022/plugins/link/link.plugin.mjs +28 -13
  17. package/esm2022/plugins/list/list.plugin.mjs +17 -27
  18. package/esm2022/plugins/public-api.mjs +2 -1
  19. package/esm2022/plugins/quick-insert/index.mjs +4 -0
  20. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +1 -1
  21. package/esm2022/plugins/table/table.plugin.mjs +48 -54
  22. package/esm2022/utils/copy-node.mjs +29 -34
  23. package/esm2022/utils/fragment.mjs +11 -11
  24. package/fesm2022/worktile-theia.mjs +311 -333
  25. package/fesm2022/worktile-theia.mjs.map +1 -1
  26. package/interfaces/editor.d.ts +5 -7
  27. package/interfaces/plugins/index.d.ts +1 -1
  28. package/package.json +2 -1
  29. package/plugins/public-api.d.ts +1 -0
  30. package/plugins/quick-insert/index.d.ts +3 -0
  31. package/utils/copy-node.d.ts +4 -3
  32. package/utils/fragment.d.ts +1 -1
@@ -1,5 +1,6 @@
1
1
  import { Editor, Element, Text } from 'slate';
2
- import { CLIPBOARD_FORMAT_KEY, ELEMENT_UNIQUE_ID } from '../constants/default';
2
+ import { ELEMENT_UNIQUE_ID } from '../constants/default';
3
+ import { getClipboardData } from 'slate-angular';
3
4
  export const getStartBlock = (editor, fragment) => {
4
5
  const firstChild = fragment.children && fragment.children[0];
5
6
  if (firstChild &&
@@ -22,19 +23,18 @@ export const getEndBlock = (editor, fragment) => {
22
23
  }
23
24
  return fragment;
24
25
  };
25
- export const extractFragment = (data, deleteKey = ELEMENT_UNIQUE_ID) => {
26
- const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
27
- if (fragment) {
28
- const decoded = decodeURIComponent(window.atob(fragment));
29
- let nodes = JSON.parse(decoded);
30
- if (!Array.isArray(nodes)) {
31
- nodes = [nodes];
26
+ export const extractFragment = async (data, deleteKey = ELEMENT_UNIQUE_ID) => {
27
+ const clipboardData = await getClipboardData(data);
28
+ let elements = clipboardData?.elements;
29
+ if (elements) {
30
+ if (!Array.isArray(elements)) {
31
+ elements = [elements];
32
32
  }
33
33
  // delete key to avoid duplicate keys
34
34
  if (deleteKey) {
35
- deleteElementKey(nodes, deleteKey);
35
+ deleteElementKey(elements, deleteKey);
36
36
  }
37
- return nodes;
37
+ return elements;
38
38
  }
39
39
  return null;
40
40
  };
@@ -79,4 +79,4 @@ export function recursionNodes(nodes, callback) {
79
79
  callback(element);
80
80
  });
81
81
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFRLE1BQU0sT0FBTyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFpQixFQUFFLEVBQUU7SUFDL0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELElBQ0ksVUFBVTtRQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQzdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1FBQ3BDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFDL0IsQ0FBQztRQUNDLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBYyxFQUFFLFFBQWlCLEVBQUUsRUFBRTtJQUM3RCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkYsSUFDSSxTQUFTO1FBQ1QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDNUIsQ0FBQyxNQUFN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QUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBUZXh0LCBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQ0xJUEJPQVJEX0ZPUk1BVF9LRVksIEVMRU1FTlRfVU5JUVVFX0lEIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RlZmF1bHQnO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RhcnRCbG9jayA9IChlZGl0b3I6IEVkaXRvciwgZnJhZ21lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBmaXJzdENoaWxkID0gZnJhZ21lbnQuY2hpbGRyZW4gJiYgZnJhZ21lbnQuY2hpbGRyZW5bMF07XG4gICAgaWYgKFxuICAgICAgICBmaXJzdENoaWxkICYmXG4gICAgICAgIEVsZW1lbnQuaXNFbGVtZW50KGZpcnN0Q2hpbGQpICYmXG4gICAgICAgICFFZGl0b3IuaXNJbmxpbmUoZWRpdG9yLCBmaXJzdENoaWxkKSAmJlxuICAgICAgICAhVGV4dC5pc1RleHQoZmlyc3RDaGlsZCkgJiZcbiAgICAgICAgRWxlbWVudC5pc0VsZW1lbnQoZmlyc3RDaGlsZClcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGdldFN0YXJ0QmxvY2soZWRpdG9yLCBmaXJzdENoaWxkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZyYWdtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVuZEJsb2NrID0gKGVkaXRvcjogRWRpdG9yLCBmcmFnbWVudDogRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGxhc3RDaGlsZCA9IGZyYWdtZW50LmNoaWxkcmVuICYmIGZyYWdtZW50LmNoaWxkcmVuW2ZyYWdtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgIGlmIChcbiAgICAgICAgbGFzdENoaWxkICYmXG4gICAgICAgIEVsZW1lbnQuaXNFbGVtZW50KGxhc3RDaGlsZCkgJiZcbiAgICAgICAgIUVkaXRvci5pc0lubGluZShlZGl0b3IsIGxhc3RDaGlsZCkgJiZcbiAgICAgICAgIVRleHQuaXNUZXh0KGxhc3RDaGlsZCkgJiZcbiAgICAgICAgRWxlbWVudC5pc0VsZW1lbnQobGFzdENoaWxkKVxuICAgICkge1xuICAgICAgICByZXR1cm4gZ2V0RW5kQmxvY2soZWRpdG9yLCBsYXN0Q2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gZnJhZ21lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdEZyYWdtZW50ID0gKGRhdGE6IERhdGFUcmFuc2ZlciwgZGVsZXRlS2V5ID0gRUxFTUVOVF9VTklRVUVfSUQpID0+IHtcbiAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICBpZiAoZnJhZ21lbnQpIHtcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cuYXRvYihmcmFnbWVudCkpO1xuICAgICAgICBsZXQgbm9kZXMgPSBKU09OLnBhcnNlKGRlY29kZWQpIGFzIEVsZW1lbnRbXTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGVzKSkge1xuICAgICAgICAgICAgbm9kZXMgPSBbbm9kZXNdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRlbGV0ZSBrZXkgdG8gYXZvaWQgZHVwbGljYXRlIGtleXNcbiAgICAgICAgaWYgKGRlbGV0ZUtleSkge1xuICAgICAgICAgICAgZGVsZXRlRWxlbWVudEtleShub2RlcywgZGVsZXRlS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZXM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUVsZW1lbnRLZXkobm9kZXM6IE5vZGVbXSwga2V5OiBzdHJpbmcpIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBpZiAobm9kZVtrZXldKSB7XG4gICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBkZWxldGVFbGVtZW50S2V5KG5vZGUuY2hpbGRyZW4sIGtleSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG59XG5cbi8qKlxuICog6L+H5ruk5paH5pys5qC85byP77ya6aKc6ImyL+iDjOaZr+iJsi/lrZfkvZPlpKflsI9cbiAqIEBwYXJhbSBub2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJUZXh0Rm9ybWF0KG5vZGU6IEVsZW1lbnQpIHtcbiAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICBpZiAoVGV4dC5pc1RleHQoY2hpbGQpKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRbJ2NvbG9yJ10pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY2hpbGRbJ2NvbG9yJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGRbJ2JhY2tncm91bmQtY29sb3InXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZFsnYmFja2dyb3VuZC1jb2xvciddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoaWxkWydmb250LXNpemUnXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZFsnZm9udC1zaXplJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXJUZXh0Rm9ybWF0KGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjdXJzaW9uTm9kZXMobm9kZXM6IE5vZGVbXSwgY2FsbGJhY2s6IChub2RlOiBOb2RlKSA9PiB2b2lkKSB7XG4gICAgbm9kZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZWN1cnNpb25Ob2RlcyhlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgfSk7XG59XG4iXX0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvZnJhZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFRLE1BQU0sT0FBTyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsUUFBaUIsRUFBRSxFQUFFO0lBQy9ELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUM3QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztRQUNwQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQy9CLENBQUM7UUFDQyxPQUFPLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWMsRUFBRSxRQUFpQixFQUFFLEVBQUU7SUFDN0QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLElBQ0ksU0FBUztRQUNULE9BQU8sQ0FBQyxTQUFT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QUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIFRleHQsIE5vZGUgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBFTEVNRU5UX1VOSVFVRV9JRCB9IGZyb20gJy4uL2NvbnN0YW50cy9kZWZhdWx0JztcbmltcG9ydCB7IGdldENsaXBib2FyZERhdGEgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcblxuZXhwb3J0IGNvbnN0IGdldFN0YXJ0QmxvY2sgPSAoZWRpdG9yOiBFZGl0b3IsIGZyYWdtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGZyYWdtZW50LmNoaWxkcmVuICYmIGZyYWdtZW50LmNoaWxkcmVuWzBdO1xuICAgIGlmIChcbiAgICAgICAgZmlyc3RDaGlsZCAmJlxuICAgICAgICBFbGVtZW50LmlzRWxlbWVudChmaXJzdENoaWxkKSAmJlxuICAgICAgICAhRWRpdG9yLmlzSW5saW5lKGVkaXRvciwgZmlyc3RDaGlsZCkgJiZcbiAgICAgICAgIVRleHQuaXNUZXh0KGZpcnN0Q2hpbGQpICYmXG4gICAgICAgIEVsZW1lbnQuaXNFbGVtZW50KGZpcnN0Q2hpbGQpXG4gICAgKSB7XG4gICAgICAgIHJldHVybiBnZXRTdGFydEJsb2NrKGVkaXRvciwgZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHJldHVybiBmcmFnbWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbmRCbG9jayA9IChlZGl0b3I6IEVkaXRvciwgZnJhZ21lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBsYXN0Q2hpbGQgPSBmcmFnbWVudC5jaGlsZHJlbiAmJiBmcmFnbWVudC5jaGlsZHJlbltmcmFnbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICBpZiAoXG4gICAgICAgIGxhc3RDaGlsZCAmJlxuICAgICAgICBFbGVtZW50LmlzRWxlbWVudChsYXN0Q2hpbGQpICYmXG4gICAgICAgICFFZGl0b3IuaXNJbmxpbmUoZWRpdG9yLCBsYXN0Q2hpbGQpICYmXG4gICAgICAgICFUZXh0LmlzVGV4dChsYXN0Q2hpbGQpICYmXG4gICAgICAgIEVsZW1lbnQuaXNFbGVtZW50KGxhc3RDaGlsZClcbiAgICApIHtcbiAgICAgICAgcmV0dXJuIGdldEVuZEJsb2NrKGVkaXRvciwgbGFzdENoaWxkKTtcbiAgICB9XG4gICAgcmV0dXJuIGZyYWdtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RGcmFnbWVudCA9IGFzeW5jIChkYXRhOiBEYXRhVHJhbnNmZXIsIGRlbGV0ZUtleSA9IEVMRU1FTlRfVU5JUVVFX0lEKSA9PiB7XG4gICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGF3YWl0IGdldENsaXBib2FyZERhdGEoZGF0YSk7XG4gICAgbGV0IGVsZW1lbnRzID0gY2xpcGJvYXJkRGF0YT8uZWxlbWVudHM7XG5cbiAgICBpZiAoZWxlbWVudHMpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGRlbGV0ZSBrZXkgdG8gYXZvaWQgZHVwbGljYXRlIGtleXNcbiAgICAgICAgaWYgKGRlbGV0ZUtleSkge1xuICAgICAgICAgICAgZGVsZXRlRWxlbWVudEtleShlbGVtZW50cywgZGVsZXRlS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUVsZW1lbnRLZXkobm9kZXM6IE5vZGVbXSwga2V5OiBzdHJpbmcpIHtcbiAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBpZiAobm9kZVtrZXldKSB7XG4gICAgICAgICAgICBkZWxldGUgbm9kZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBkZWxldGVFbGVtZW50S2V5KG5vZGUuY2hpbGRyZW4sIGtleSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZXM7XG59XG5cbi8qKlxuICog6L+H5ruk5paH5pys5qC85byP77ya6aKc6ImyL+iDjOaZr+iJsi/lrZfkvZPlpKflsI9cbiAqIEBwYXJhbSBub2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJUZXh0Rm9ybWF0KG5vZGU6IEVsZW1lbnQpIHtcbiAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICBpZiAoVGV4dC5pc1RleHQoY2hpbGQpKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRbJ2NvbG9yJ10pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY2hpbGRbJ2NvbG9yJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGRbJ2JhY2tncm91bmQtY29sb3InXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZFsnYmFja2dyb3VuZC1jb2xvciddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoaWxkWydmb250LXNpemUnXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjaGlsZFsnZm9udC1zaXplJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXJUZXh0Rm9ybWF0KGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjdXJzaW9uTm9kZXMobm9kZXM6IE5vZGVbXSwgY2FsbGJhY2s6IChub2RlOiBOb2RlKSA9PiB2b2lkKSB7XG4gICAgbm9kZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKEVsZW1lbnQuaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZWN1cnNpb25Ob2RlcyhlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2soZWxlbWVudCk7XG4gICAgfSk7XG59XG4iXX0=