@dwelle/excalidraw 0.3.21 → 0.3.25

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 (54) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +2 -0
  3. package/dist/excalidraw-assets/image-2be1c869cd5bacebdc3c.js +1 -0
  4. package/dist/excalidraw.development.js +10 -10
  5. package/dist/excalidraw.production.min.js +2 -1
  6. package/package.json +4 -4
  7. package/types/packages/excalidraw/dist/excalidraw-assets/image-2be1c869cd5bacebdc3c.d.ts +0 -0
  8. package/types/packages/excalidraw/dist/excalidraw-assets/image-8e0c265e832504f62477.d.ts +0 -0
  9. package/types/packages/excalidraw/dist/excalidraw-assets/image-9592159c56d563857679.d.ts +0 -0
  10. package/types/packages/excalidraw/dist/excalidraw-assets/image-98a7b39bd21998c69c4b.d.ts +0 -0
  11. package/types/packages/excalidraw/dist/excalidraw-assets/image-af02967a8a4c328f2713.d.ts +0 -0
  12. package/types/packages/excalidraw/dist/excalidraw-assets/image-bd5991c772b4867c8d27.d.ts +0 -0
  13. package/types/packages/excalidraw/dist/excalidraw-assets/image-c198828284ec0dba28dc.d.ts +0 -0
  14. package/types/packages/excalidraw/dist/excalidraw-assets/image-eac20119cbc2ceb81523.d.ts +0 -0
  15. package/types/packages/excalidraw/webpack.prod.config.d.ts +2 -0
  16. package/dist/excalidraw-assets/image-02a1f3ecd6baf42daaa6.js +0 -1
  17. package/dist/excalidraw-assets/image-0db17e06143a31f9772b.js +0 -1
  18. package/dist/excalidraw-assets/image-46f5e8e621bfedbf6d91.js +0 -1
  19. package/dist/excalidraw-assets/image-6f8d3b9873832b5f7a67.js +0 -1
  20. package/dist/excalidraw-assets/image-a26261fb8a718f15853e.js +0 -1
  21. package/dist/excalidraw-assets/image-a97adda58b4c4d8d0107.js +0 -1
  22. package/dist/excalidraw-assets/image-eafab0c39ce13f7fea67.js +0 -1
  23. package/dist/excalidraw-assets/vendor-1018b0a7e7e60d808384.js +0 -2
  24. package/dist/excalidraw-assets/vendor-1018b0a7e7e60d808384.js.LICENSE.txt +0 -14
  25. package/dist/excalidraw-assets/vendor-405364e1fdefedf5d3d7.js +0 -2
  26. package/dist/excalidraw-assets/vendor-405364e1fdefedf5d3d7.js.LICENSE.txt +0 -14
  27. package/dist/excalidraw-assets/vendor-448ccb79e58765b61834.js +0 -2
  28. package/dist/excalidraw-assets/vendor-448ccb79e58765b61834.js.LICENSE.txt +0 -1
  29. package/dist/excalidraw-assets/vendor-585a4c89d479fd91edeb.js +0 -2
  30. package/dist/excalidraw-assets/vendor-585a4c89d479fd91edeb.js.LICENSE.txt +0 -1
  31. package/dist/excalidraw-assets/vendor-807e23d7531555236936.js +0 -2
  32. package/dist/excalidraw-assets/vendor-807e23d7531555236936.js.LICENSE.txt +0 -14
  33. package/dist/excalidraw-assets/vendor-b088910ac1ba8853a571.js +0 -2
  34. package/dist/excalidraw-assets/vendor-b088910ac1ba8853a571.js.LICENSE.txt +0 -8
  35. package/dist/excalidraw-assets/vendor-cb708a4580b007d81177.js +0 -2
  36. package/dist/excalidraw-assets/vendor-cb708a4580b007d81177.js.LICENSE.txt +0 -1
  37. package/dist/excalidraw-assets/vendor-ce466849186c701b6c48.js +0 -2
  38. package/dist/excalidraw-assets/vendor-ce466849186c701b6c48.js.LICENSE.txt +0 -14
  39. package/dist/excalidraw-assets/vendor-e5c6cd57013e8e575a61.js +0 -1
  40. package/dist/excalidraw-assets-dev/image-028ba554a42cc8a4995a.js +0 -42
  41. package/dist/excalidraw-assets-dev/image-664005f0b02c93342b89.js +0 -42
  42. package/dist/excalidraw-assets-dev/image-821afe7d20de2d2ca898.js +0 -42
  43. package/dist/excalidraw-assets-dev/image-9f771c114a0a3ad7b334.js +0 -42
  44. package/dist/excalidraw-assets-dev/image-a98d24ea9aa42940a0df.js +0 -42
  45. package/dist/excalidraw-assets-dev/image-b2befe1e2a0424a41fb3.js +0 -42
  46. package/dist/excalidraw-assets-dev/image-cacb3d0c02eb2e346ecc.js +0 -33
  47. package/dist/excalidraw-assets-dev/image-d7e941a51c2e0a7b3c23.js +0 -42
  48. package/dist/excalidraw-assets-dev/vendor-0454f90696ac835aeb45.js +0 -356
  49. package/dist/excalidraw-assets-dev/vendor-26ccabf52930f0ce0ffd.js +0 -334
  50. package/dist/excalidraw-assets-dev/vendor-5d1c4700bd0fa2109ab5.js +0 -334
  51. package/dist/excalidraw-assets-dev/vendor-7664c12c379862ed98a5.js +0 -356
  52. package/dist/excalidraw-assets-dev/vendor-7fcb99cece261da4983f.js +0 -344
  53. package/dist/excalidraw-assets-dev/vendor-bb07a412033591d5470d.js +0 -344
  54. package/dist/excalidraw-assets-dev/vendor-ec7db14ff9ba640888c4.js +0 -344
@@ -1,33 +0,0 @@
1
- /*
2
- * ATTENTION: An "eval-source-map" devtool has been used.
3
- * This devtool is neither made for production nor for readable output files.
4
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
- * or disable the default devtool with "devtool: false".
7
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
- */
9
- (globalThis["webpackChunkExcalidraw"] = globalThis["webpackChunkExcalidraw"] || []).push([["image"],{
10
-
11
- /***/ "../../data/encode.ts":
12
- /*!****************************!*\
13
- !*** ../../data/encode.ts ***!
14
- \****************************/
15
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16
-
17
- "use strict";
18
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"toByteString\": () => (/* binding */ toByteString),\n/* harmony export */ \"stringToBase64\": () => (/* binding */ stringToBase64),\n/* harmony export */ \"base64ToString\": () => (/* binding */ base64ToString),\n/* harmony export */ \"encode\": () => (/* binding */ encode),\n/* harmony export */ \"decode\": () => (/* binding */ decode)\n/* harmony export */ });\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pako */ \"../../../node_modules/pako/index.js\");\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pako__WEBPACK_IMPORTED_MODULE_0__);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n// -----------------------------------------------------------------------------\r\n// byte (binary) strings\r\n// -----------------------------------------------------------------------------\r\n// fast, Buffer-compatible implem\r\nconst toByteString = (data) => {\r\n return new Promise((resolve, reject) => {\r\n const blob = typeof data === \"string\"\r\n ? new Blob([new TextEncoder().encode(data)])\r\n : new Blob([data]);\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n if (!event.target || typeof event.target.result !== \"string\") {\r\n return reject(new Error(\"couldn't convert to byte string\"));\r\n }\r\n resolve(event.target.result);\r\n };\r\n reader.readAsBinaryString(blob);\r\n });\r\n};\r\nconst byteStringToArrayBuffer = (byteString) => {\r\n const buffer = new ArrayBuffer(byteString.length);\r\n const bufferView = new Uint8Array(buffer);\r\n for (let i = 0, len = byteString.length; i < len; i++) {\r\n bufferView[i] = byteString.charCodeAt(i);\r\n }\r\n return buffer;\r\n};\r\nconst byteStringToString = (byteString) => {\r\n return new TextDecoder(\"utf-8\").decode(byteStringToArrayBuffer(byteString));\r\n};\r\n// -----------------------------------------------------------------------------\r\n// base64\r\n// -----------------------------------------------------------------------------\r\n/**\r\n * @param isByteString set to true if already byte string to prevent bloat\r\n * due to reencoding\r\n */\r\nconst stringToBase64 = (str, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\r\n return isByteString ? btoa(str) : btoa(yield toByteString(str));\r\n});\r\n// async to align with stringToBase64\r\nconst base64ToString = (base64, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\r\n return isByteString ? atob(base64) : byteStringToString(atob(base64));\r\n});\r\n/**\r\n * Encodes (and potentially compresses via zlib) text to byte string\r\n */\r\nconst encode = ({ text, compress, }) => __awaiter(void 0, void 0, void 0, function* () {\r\n let deflated;\r\n if (compress !== false) {\r\n try {\r\n deflated = yield toByteString((0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(text));\r\n }\r\n catch (error) {\r\n console.error(\"encode: cannot deflate\", error);\r\n }\r\n }\r\n return {\r\n version: \"1\",\r\n encoding: \"bstring\",\r\n compressed: !!deflated,\r\n encoded: deflated || (yield toByteString(text)),\r\n };\r\n});\r\nconst decode = (data) => __awaiter(void 0, void 0, void 0, function* () {\r\n let decoded;\r\n switch (data.encoding) {\r\n case \"bstring\":\r\n // if compressed, do not double decode the bstring\r\n decoded = data.compressed\r\n ? data.encoded\r\n : yield byteStringToString(data.encoded);\r\n break;\r\n default:\r\n throw new Error(`decode: unknown encoding \"${data.encoding}\"`);\r\n }\r\n if (data.compressed) {\r\n return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(new Uint8Array(byteStringToArrayBuffer(decoded)), {\r\n to: \"string\",\r\n });\r\n }\r\n return decoded;\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vZGF0YS9lbmNvZGUudHM/OTRiZCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdDO0FBRXhDLGdGQUFnRjtBQUNoRix3QkFBd0I7QUFDeEIsZ0ZBQWdGO0FBRWhGLGlDQUFpQztBQUMxQixNQUFNLFlBQVksR0FBRyxDQUFDLElBQXlCLEVBQW1CLEVBQUU7SUFDekUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLElBQUksR0FDUixPQUFPLElBQUksS0FBSyxRQUFRO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFDNUQsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO2FBQzdEO1lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRTtJQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxV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QUFDakIsQ0FBQyxFQUFDIiwiZmlsZSI6Ii4uLy4uL2RhdGEvZW5jb2RlLnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmbGF0ZSwgaW5mbGF0ZSB9IGZyb20gXCJwYWtvXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBieXRlIChiaW5hcnkpIHN0cmluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIGZhc3QsIEJ1ZmZlci1jb21wYXRpYmxlIGltcGxlbVxuZXhwb3J0IGNvbnN0IHRvQnl0ZVN0cmluZyA9IChkYXRhOiBzdHJpbmcgfCBVaW50OEFycmF5KTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBibG9iID1cbiAgICAgIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gbmV3IEJsb2IoW25ldyBUZXh0RW5jb2RlcigpLmVuY29kZShkYXRhKV0pXG4gICAgICAgIDogbmV3IEJsb2IoW2RhdGFdKTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghZXZlbnQudGFyZ2V0IHx8IHR5cGVvZiBldmVudC50YXJnZXQucmVzdWx0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKFwiY291bGRuJ3QgY29udmVydCB0byBieXRlIHN0cmluZ1wiKSk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhibG9iKTtcbiAgfSk7XG59O1xuXG5jb25zdCBieXRlU3RyaW5nVG9BcnJheUJ1ZmZlciA9IChieXRlU3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVTdHJpbmcubGVuZ3RoKTtcbiAgY29uc3QgYnVmZmVyVmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBieXRlU3RyaW5nLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYnVmZmVyVmlld1tpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYnVmZmVyO1xufTtcblxuY29uc3QgYnl0ZVN0cmluZ1RvU3RyaW5nID0gKGJ5dGVTdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gbmV3IFRleHREZWNvZGVyKFwidXRmLThcIikuZGVjb2RlKGJ5dGVTdHJpbmdUb0FycmF5QnVmZmVyKGJ5dGVTdHJpbmcpKTtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBiYXNlNjRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQHBhcmFtIGlzQnl0ZVN0cmluZyBzZXQgdG8gdHJ1ZSBpZiBhbHJlYWR5IGJ5dGUgc3RyaW5nIHRvIHByZXZlbnQgYmxvYXRcbiAqICBkdWUgdG8gcmVlbmNvZGluZ1xuICovXG5leHBvcnQgY29uc3Qgc3RyaW5nVG9CYXNlNjQgPSBhc3luYyAoc3RyOiBzdHJpbmcsIGlzQnl0ZVN0cmluZyA9IGZhbHNlKSA9PiB7XG4gIHJldHVybiBpc0J5dGVTdHJpbmcgPyBidG9hKHN0cikgOiBidG9hKGF3YWl0IHRvQnl0ZVN0cmluZyhzdHIpKTtcbn07XG5cbi8vIGFzeW5jIHRvIGFsaWduIHdpdGggc3RyaW5nVG9CYXNlNjRcbmV4cG9ydCBjb25zdCBiYXNlNjRUb1N0cmluZyA9IGFzeW5jIChiYXNlNjQ6IHN0cmluZywgaXNCeXRlU3RyaW5nID0gZmFsc2UpID0+IHtcbiAgcmV0dXJuIGlzQnl0ZVN0cmluZyA/IGF0b2IoYmFzZTY0KSA6IGJ5dGVTdHJpbmdUb1N0cmluZyhhdG9iKGJhc2U2NCkpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRleHQgZW5jb2Rpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgRW5jb2RlZERhdGEgPSB7XG4gIGVuY29kZWQ6IHN0cmluZztcbiAgZW5jb2Rpbmc6IFwiYnN0cmluZ1wiO1xuICAvKiogd2hldGhlciB0ZXh0IGlzIGNvbXByZXNzZWQgKHpsaWIpICovXG4gIGNvbXByZXNzZWQ6IGJvb2xlYW47XG4gIC8qKiB2ZXJzaW9uIGZvciBwb3RlbnRpYWwgbWlncmF0aW9uIHB1cnBvc2VzICovXG4gIHZlcnNpb24/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEVuY29kZXMgKGFuZCBwb3RlbnRpYWxseSBjb21wcmVzc2VzIHZpYSB6bGliKSB0ZXh0IHRvIGJ5dGUgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBlbmNvZGUgPSBhc3luYyAoe1xuICB0ZXh0LFxuICBjb21wcmVzcyxcbn06IHtcbiAgdGV4dDogc3RyaW5nO1xuICAvKiogZGVmYXVsdHMgdG8gYHRydWVgLiBJZiBjb21wcmVzc2lvbiBmYWlscywgZmFsbHMgYmFjayB0byBic3RyaW5nIGFsb25lLiAqL1xuICBjb21wcmVzcz86IGJvb2xlYW47XG59KTogUHJvbWlzZTxFbmNvZGVkRGF0YT4gPT4ge1xuICBsZXQgZGVmbGF0ZWQhOiBzdHJpbmc7XG4gIGlmIChjb21wcmVzcyAhPT0gZmFsc2UpIHtcbiAgICB0cnkge1xuICAgICAgZGVmbGF0ZWQgPSBhd2FpdCB0b0J5dGVTdHJpbmcoZGVmbGF0ZSh0ZXh0KSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJlbmNvZGU6IGNhbm5vdCBkZWZsYXRlXCIsIGVycm9yKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBcIjFcIixcbiAgICBlbmNvZGluZzogXCJic3RyaW5nXCIsXG4gICAgY29tcHJlc3NlZDogISFkZWZsYXRlZCxcbiAgICBlbmNvZGVkOiBkZWZsYXRlZCB8fCAoYXdhaXQgdG9CeXRlU3RyaW5nKHRleHQpKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNvZGUgPSBhc3luYyAoZGF0YTogRW5jb2RlZERhdGEpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBsZXQgZGVjb2RlZDogc3RyaW5nO1xuXG4gIHN3aXRjaCAoZGF0YS5lbmNvZGluZykge1xuICAgIGNhc2UgXCJic3RyaW5nXCI6XG4gICAgICAvLyBpZiBjb21wcmVzc2VkLCBkbyBub3QgZG91YmxlIGRlY29kZSB0aGUgYnN0cmluZ1xuICAgICAgZGVjb2RlZCA9IGRhdGEuY29tcHJlc3NlZFxuICAgICAgICA/IGRhdGEuZW5jb2RlZFxuICAgICAgICA6IGF3YWl0IGJ5dGVTdHJpbmdUb1N0cmluZyhkYXRhLmVuY29kZWQpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZGVjb2RlOiB1bmtub3duIGVuY29kaW5nIFwiJHtkYXRhLmVuY29kaW5nfVwiYCk7XG4gIH1cblxuICBpZiAoZGF0YS5jb21wcmVzc2VkKSB7XG4gICAgcmV0dXJuIGluZmxhdGUobmV3IFVpbnQ4QXJyYXkoYnl0ZVN0cmluZ1RvQXJyYXlCdWZmZXIoZGVjb2RlZCkpLCB7XG4gICAgICB0bzogXCJzdHJpbmdcIixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVkO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../data/encode.ts\n");
19
-
20
- /***/ }),
21
-
22
- /***/ "../../data/image.ts":
23
- /*!***************************!*\
24
- !*** ../../data/image.ts ***!
25
- \***************************/
26
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27
-
28
- "use strict";
29
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getTEXtChunk\": () => (/* binding */ getTEXtChunk),\n/* harmony export */ \"encodePngMetadata\": () => (/* binding */ encodePngMetadata),\n/* harmony export */ \"decodePngMetadata\": () => (/* binding */ decodePngMetadata),\n/* harmony export */ \"encodeSvgMetadata\": () => (/* binding */ encodeSvgMetadata),\n/* harmony export */ \"decodeSvgMetadata\": () => (/* binding */ decodeSvgMetadata)\n/* harmony export */ });\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! png-chunks-extract */ \"../../../node_modules/png-chunks-extract/index.js\");\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var png_chunk_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! png-chunk-text */ \"../../../node_modules/png-chunk-text/index.js\");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! png-chunks-encode */ \"../../../node_modules/png-chunks-encode/index.js\");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./encode */ \"../../data/encode.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n// -----------------------------------------------------------------------------\r\n// PNG\r\n// -----------------------------------------------------------------------------\r\nconst blobToArrayBuffer = (blob) => {\r\n if (\"arrayBuffer\" in blob) {\r\n return blob.arrayBuffer();\r\n }\r\n // Safari\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n var _a;\r\n if (!((_a = event.target) === null || _a === void 0 ? void 0 : _a.result)) {\r\n return reject(new Error(\"couldn't convert blob to ArrayBuffer\"));\r\n }\r\n resolve(event.target.result);\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n });\r\n};\r\nconst getTEXtChunk = (blob) => __awaiter(void 0, void 0, void 0, function* () {\r\n const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield blobToArrayBuffer(blob)));\r\n const metadataChunk = chunks.find((chunk) => chunk.name === \"tEXt\");\r\n if (metadataChunk) {\r\n return png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.decode(metadataChunk.data);\r\n }\r\n return null;\r\n});\r\nconst encodePngMetadata = ({ blob, metadata, }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield blobToArrayBuffer(blob)));\r\n const metadataChunk = png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.encode(_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw, JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({\r\n text: metadata,\r\n compress: true,\r\n })));\r\n // insert metadata before last chunk (iEND)\r\n chunks.splice(-1, 0, metadataChunk);\r\n return new Blob([png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default()(chunks)], { type: \"image/png\" });\r\n});\r\nconst decodePngMetadata = (blob) => __awaiter(void 0, void 0, void 0, function* () {\r\n const metadata = yield getTEXtChunk(blob);\r\n if ((metadata === null || metadata === void 0 ? void 0 : metadata.keyword) === _constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw) {\r\n try {\r\n const encodedData = JSON.parse(metadata.text);\r\n if (!(\"encoded\" in encodedData)) {\r\n // legacy, un-encoded scene JSON\r\n if (\"type\" in encodedData &&\r\n encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\r\n return metadata.text;\r\n }\r\n throw new Error(\"FAILED\");\r\n }\r\n return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw new Error(\"FAILED\");\r\n }\r\n }\r\n throw new Error(\"INVALID\");\r\n});\r\n// -----------------------------------------------------------------------------\r\n// SVG\r\n// -----------------------------------------------------------------------------\r\nconst encodeSvgMetadata = ({ text }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const base64 = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.stringToBase64)(JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({ text })), true /* is already byte string */);\r\n let metadata = \"\";\r\n metadata += `<!-- payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw} -->`;\r\n metadata += `<!-- payload-version:2 -->`;\r\n metadata += \"<!-- payload-start -->\";\r\n metadata += base64;\r\n metadata += \"<!-- payload-end -->\";\r\n return metadata;\r\n});\r\nconst decodeSvgMetadata = ({ svg }) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (svg.includes(`payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw}`)) {\r\n const match = svg.match(/<!-- payload-start -->(.+?)<!-- payload-end -->/);\r\n if (!match) {\r\n throw new Error(\"INVALID\");\r\n }\r\n const versionMatch = svg.match(/<!-- payload-version:(\\d+) -->/);\r\n const version = (versionMatch === null || versionMatch === void 0 ? void 0 : versionMatch[1]) || \"1\";\r\n const isByteString = version !== \"1\";\r\n try {\r\n const json = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.base64ToString)(match[1], isByteString);\r\n const encodedData = JSON.parse(json);\r\n if (!(\"encoded\" in encodedData)) {\r\n // legacy, un-encoded scene JSON\r\n if (\"type\" in encodedData &&\r\n encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\r\n return json;\r\n }\r\n throw new Error(\"FAILED\");\r\n }\r\n return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw new Error(\"FAILED\");\r\n }\r\n }\r\n throw new Error(\"INVALID\");\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vZGF0YS9pbWFnZS50cz8xMDkxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEyQztBQUNUO0FBQ1E7QUFDZ0M7QUFDYjtBQUU3RCxnRkFBZ0Y7QUFDaEYsTUFBTTtBQUNOLGdGQUFnRjtBQUVoRixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBVSxFQUF3QixFQUFFO0lBQzdELElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMzQjtJQUNELFNBQVM7SUFDVCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFOztZQUN4QixJQUFJLENBQUMsWUFBSyxDQUFDLE1BQU0sMENBQUUsTUFBTSxHQUFFO2dCQUN6QixPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLENBQUM7YUFDbEU7WUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFxQixDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUssTUFBTSxZQUFZLEdBQUcsQ0FDMUIsSUFBVSxFQUN5QyxFQUFFO0lBQ3JELE1BQU0sTUFBTSxHQUFHLHlEQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxD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QUMiLCJmaWxlIjoiLi4vLi4vZGF0YS9pbWFnZS50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWNvZGVQbmcgZnJvbSBcInBuZy1jaHVua3MtZXh0cmFjdFwiO1xuaW1wb3J0IHRFWHQgZnJvbSBcInBuZy1jaHVuay10ZXh0XCI7XG5pbXBvcnQgZW5jb2RlUG5nIGZyb20gXCJwbmctY2h1bmtzLWVuY29kZVwiO1xuaW1wb3J0IHsgc3RyaW5nVG9CYXNlNjQsIGVuY29kZSwgZGVjb2RlLCBiYXNlNjRUb1N0cmluZyB9IGZyb20gXCIuL2VuY29kZVwiO1xuaW1wb3J0IHsgRVhQT1JUX0RBVEFfVFlQRVMsIE1JTUVfVFlQRVMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQTkdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IGJsb2JUb0FycmF5QnVmZmVyID0gKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gIGlmIChcImFycmF5QnVmZmVyXCIgaW4gYmxvYikge1xuICAgIHJldHVybiBibG9iLmFycmF5QnVmZmVyKCk7XG4gIH1cbiAgLy8gU2FmYXJpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWV2ZW50LnRhcmdldD8ucmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKFwiY291bGRuJ3QgY29udmVydCBibG9iIHRvIEFycmF5QnVmZmVyXCIpKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcik7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRFWHRDaHVuayA9IGFzeW5jIChcbiAgYmxvYjogQmxvYixcbik6IFByb21pc2U8eyBrZXl3b3JkOiBzdHJpbmc7IHRleHQ6IHN0cmluZyB9IHwgbnVsbD4gPT4ge1xuICBjb25zdCBjaHVua3MgPSBkZWNvZGVQbmcobmV3IFVpbnQ4QXJyYXkoYXdhaXQgYmxvYlRvQXJyYXlCdWZmZXIoYmxvYikpKTtcbiAgY29uc3QgbWV0YWRhdGFDaHVuayA9IGNodW5rcy5maW5kKChjaHVuaykgPT4gY2h1bmsubmFtZSA9PT0gXCJ0RVh0XCIpO1xuICBpZiAobWV0YWRhdGFDaHVuaykge1xuICAgIHJldHVybiB0RVh0LmRlY29kZShtZXRhZGF0YUNodW5rLmRhdGEpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGVuY29kZVBuZ01ldGFkYXRhID0gYXN5bmMgKHtcbiAgYmxvYixcbiAgbWV0YWRhdGEsXG59OiB7XG4gIGJsb2I6IEJsb2I7XG4gIG1ldGFkYXRhOiBzdHJpbmc7XG59KSA9PiB7XG4gIGNvbnN0IGNodW5rcyA9IGRlY29kZVBuZyhuZXcgVWludDhBcnJheShhd2FpdCBibG9iVG9BcnJheUJ1ZmZlcihibG9iKSkpO1xuXG4gIGNvbnN0IG1ldGFkYXRhQ2h1bmsgPSB0RVh0LmVuY29kZShcbiAgICBNSU1FX1RZUEVTLmV4Y2FsaWRyYXcsXG4gICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCBlbmNvZGUoe1xuICAgICAgICB0ZXh0OiBtZXRhZGF0YSxcbiAgICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgICB9KSxcbiAgICApLFxuICApO1xuICAvLyBpbnNlcnQgbWV0YWRhdGEgYmVmb3JlIGxhc3QgY2h1bmsgKGlFTkQpXG4gIGNodW5rcy5zcGxpY2UoLTEsIDAsIG1ldGFkYXRhQ2h1bmspO1xuXG4gIHJldHVybiBuZXcgQmxvYihbZW5jb2RlUG5nKGNodW5rcyldLCB7IHR5cGU6IFwiaW1hZ2UvcG5nXCIgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVjb2RlUG5nTWV0YWRhdGEgPSBhc3luYyAoYmxvYjogQmxvYikgPT4ge1xuICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IGdldFRFWHRDaHVuayhibG9iKTtcbiAgaWYgKG1ldGFkYXRhPy5rZXl3b3JkID09PSBNSU1FX1RZUEVTLmV4Y2FsaWRyYXcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZW5jb2RlZERhdGEgPSBKU09OLnBhcnNlKG1ldGFkYXRhLnRleHQpO1xuICAgICAgaWYgKCEoXCJlbmNvZGVkXCIgaW4gZW5jb2RlZERhdGEpKSB7XG4gICAgICAgIC8vIGxlZ2FjeSwgdW4tZW5jb2RlZCBzY2VuZSBKU09OXG4gICAgICAgIGlmIChcbiAgICAgICAgICBcInR5cGVcIiBpbiBlbmNvZGVkRGF0YSAmJlxuICAgICAgICAgIGVuY29kZWREYXRhLnR5cGUgPT09IEVYUE9SVF9EQVRBX1RZUEVTLmV4Y2FsaWRyYXdcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG1ldGFkYXRhLnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRkFJTEVEXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF3YWl0IGRlY29kZShlbmNvZGVkRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRkFJTEVEXCIpO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJTlZBTElEXCIpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNWR1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IGVuY29kZVN2Z01ldGFkYXRhID0gYXN5bmMgKHsgdGV4dCB9OiB7IHRleHQ6IHN0cmluZyB9KSA9PiB7XG4gIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHN0cmluZ1RvQmFzZTY0KFxuICAgIEpTT04uc3RyaW5naWZ5KGF3YWl0IGVuY29kZSh7IHRleHQgfSkpLFxuICAgIHRydWUgLyogaXMgYWxyZWFkeSBieXRlIHN0cmluZyAqLyxcbiAgKTtcblxuICBsZXQgbWV0YWRhdGEgPSBcIlwiO1xuICBtZXRhZGF0YSArPSBgPCEtLSBwYXlsb2FkLXR5cGU6JHtNSU1FX1RZUEVTLmV4Y2FsaWRyYXd9IC0tPmA7XG4gIG1ldGFkYXRhICs9IGA8IS0tIHBheWxvYWQtdmVyc2lvbjoyIC0tPmA7XG4gIG1ldGFkYXRhICs9IFwiPCEtLSBwYXlsb2FkLXN0YXJ0IC0tPlwiO1xuICBtZXRhZGF0YSArPSBiYXNlNjQ7XG4gIG1ldGFkYXRhICs9IFwiPCEtLSBwYXlsb2FkLWVuZCAtLT5cIjtcbiAgcmV0dXJuIG1ldGFkYXRhO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZVN2Z01ldGFkYXRhID0gYXN5bmMgKHsgc3ZnIH06IHsgc3ZnOiBzdHJpbmcgfSkgPT4ge1xuICBpZiAoc3ZnLmluY2x1ZGVzKGBwYXlsb2FkLXR5cGU6JHtNSU1FX1RZUEVTLmV4Y2FsaWRyYXd9YCkpIHtcbiAgICBjb25zdCBtYXRjaCA9IHN2Zy5tYXRjaCgvPCEtLSBwYXlsb2FkLXN0YXJ0IC0tPiguKz8pPCEtLSBwYXlsb2FkLWVuZCAtLT4vKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJTlZBTElEXCIpO1xuICAgIH1cbiAgICBjb25zdCB2ZXJzaW9uTWF0Y2ggPSBzdmcubWF0Y2goLzwhLS0gcGF5bG9hZC12ZXJzaW9uOihcXGQrKSAtLT4vKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gdmVyc2lvbk1hdGNoPy5bMV0gfHwgXCIxXCI7XG4gICAgY29uc3QgaXNCeXRlU3RyaW5nID0gdmVyc2lvbiAhPT0gXCIxXCI7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QganNvbiA9IGF3YWl0IGJhc2U2NFRvU3RyaW5nKG1hdGNoWzFdLCBpc0J5dGVTdHJpbmcpO1xuICAgICAgY29uc3QgZW5jb2RlZERhdGEgPSBKU09OLnBhcnNlKGpzb24pO1xuICAgICAgaWYgKCEoXCJlbmNvZGVkXCIgaW4gZW5jb2RlZERhdGEpKSB7XG4gICAgICAgIC8vIGxlZ2FjeSwgdW4tZW5jb2RlZCBzY2VuZSBKU09OXG4gICAgICAgIGlmIChcbiAgICAgICAgICBcInR5cGVcIiBpbiBlbmNvZGVkRGF0YSAmJlxuICAgICAgICAgIGVuY29kZWREYXRhLnR5cGUgPT09IEVYUE9SVF9EQVRBX1RZUEVTLmV4Y2FsaWRyYXdcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRkFJTEVEXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF3YWl0IGRlY29kZShlbmNvZGVkRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRkFJTEVEXCIpO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJJTlZBTElEXCIpO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../data/image.ts\n");
30
-
31
- /***/ })
32
-
33
- }]);
@@ -1,42 +0,0 @@
1
- "use strict";
2
- /*
3
- * ATTENTION: An "eval-source-map" devtool has been used.
4
- * This devtool is neither made for production nor for readable output files.
5
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
6
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
7
- * or disable the default devtool with "devtool: false".
8
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
9
- */
10
- (globalThis["webpackChunkExcalidraw"] = globalThis["webpackChunkExcalidraw"] || []).push([["image"],{
11
-
12
- /***/ "../../data/encode.ts":
13
- /*!****************************!*\
14
- !*** ../../data/encode.ts ***!
15
- \****************************/
16
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
17
-
18
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"toByteString\": () => (/* binding */ toByteString),\n/* harmony export */ \"stringToBase64\": () => (/* binding */ stringToBase64),\n/* harmony export */ \"base64ToString\": () => (/* binding */ base64ToString),\n/* harmony export */ \"encode\": () => (/* binding */ encode),\n/* harmony export */ \"decode\": () => (/* binding */ decode),\n/* harmony export */ \"compressData\": () => (/* binding */ compressData),\n/* harmony export */ \"decompressData\": () => (/* binding */ decompressData)\n/* harmony export */ });\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pako */ \"../../../node_modules/pako/index.js\");\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pako__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _encryption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./encryption */ \"../../data/encryption.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n// -----------------------------------------------------------------------------\r\n// byte (binary) strings\r\n// -----------------------------------------------------------------------------\r\n// fast, Buffer-compatible implem\r\nconst toByteString = (data) => {\r\n return new Promise((resolve, reject) => {\r\n const blob = typeof data === \"string\"\r\n ? new Blob([new TextEncoder().encode(data)])\r\n : new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)]);\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n if (!event.target || typeof event.target.result !== \"string\") {\r\n return reject(new Error(\"couldn't convert to byte string\"));\r\n }\r\n resolve(event.target.result);\r\n };\r\n reader.readAsBinaryString(blob);\r\n });\r\n};\r\nconst byteStringToArrayBuffer = (byteString) => {\r\n const buffer = new ArrayBuffer(byteString.length);\r\n const bufferView = new Uint8Array(buffer);\r\n for (let i = 0, len = byteString.length; i < len; i++) {\r\n bufferView[i] = byteString.charCodeAt(i);\r\n }\r\n return buffer;\r\n};\r\nconst byteStringToString = (byteString) => {\r\n return new TextDecoder(\"utf-8\").decode(byteStringToArrayBuffer(byteString));\r\n};\r\n// -----------------------------------------------------------------------------\r\n// base64\r\n// -----------------------------------------------------------------------------\r\n/**\r\n * @param isByteString set to true if already byte string to prevent bloat\r\n * due to reencoding\r\n */\r\nconst stringToBase64 = (str, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\r\n return isByteString ? window.btoa(str) : window.btoa(yield toByteString(str));\r\n});\r\n// async to align with stringToBase64\r\nconst base64ToString = (base64, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\r\n return isByteString\r\n ? window.atob(base64)\r\n : byteStringToString(window.atob(base64));\r\n});\r\n/**\r\n * Encodes (and potentially compresses via zlib) text to byte string\r\n */\r\nconst encode = ({ text, compress, }) => __awaiter(void 0, void 0, void 0, function* () {\r\n let deflated;\r\n if (compress !== false) {\r\n try {\r\n deflated = yield toByteString((0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(text));\r\n }\r\n catch (error) {\r\n console.error(\"encode: cannot deflate\", error);\r\n }\r\n }\r\n return {\r\n version: \"1\",\r\n encoding: \"bstring\",\r\n compressed: !!deflated,\r\n encoded: deflated || (yield toByteString(text)),\r\n };\r\n});\r\nconst decode = (data) => __awaiter(void 0, void 0, void 0, function* () {\r\n let decoded;\r\n switch (data.encoding) {\r\n case \"bstring\":\r\n // if compressed, do not double decode the bstring\r\n decoded = data.compressed\r\n ? data.encoded\r\n : yield byteStringToString(data.encoded);\r\n break;\r\n default:\r\n throw new Error(`decode: unknown encoding \"${data.encoding}\"`);\r\n }\r\n if (data.compressed) {\r\n return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(new Uint8Array(byteStringToArrayBuffer(decoded)), {\r\n to: \"string\",\r\n });\r\n }\r\n return decoded;\r\n});\r\n// -----------------------------------------------------------------------------\r\n/** how many bytes we use to encode how many bytes the next chunk has.\r\n * Corresponds to DataView setter methods (setUint32, setUint16, etc).\r\n *\r\n * NOTE ! values must not be changed, which would be backwards incompatible !\r\n */\r\nconst NEXT_CHUNK_SIZE_DATAVIEW_BYTES = 4;\r\nconst CHUNKS_COUNT_DATAVIEW_BYTES = 2;\r\n/**\r\n * abstraction over DataView that serves as a typed getter/setter in case\r\n * you're using constants for the byte size and want to ensure there's no\r\n * discrepenancy in the encoding across refactors.\r\n *\r\n * DataView serves for an endian-agnostic handling of numbers in ArrayBuffers.\r\n */\r\nfunction dataView(buffer, bytes, offset, value) {\r\n const bits = { 1: 8, 2: 16, 4: 32 };\r\n if (value != null) {\r\n if (value > Math.pow(2, bits[bytes]) - 1) {\r\n throw new Error(`attempting to set value higher than the allocated bytes (value: ${value}, bytes: ${bytes})`);\r\n }\r\n const method = `setUint${bits[bytes]}`;\r\n new DataView(buffer.buffer)[method](offset, value);\r\n return buffer;\r\n }\r\n const method = `getUint${bits[bytes]}`;\r\n return new DataView(buffer.buffer)[method](offset);\r\n}\r\n// -----------------------------------------------------------------------------\r\n/**\r\n * Resulting concatenated buffer has this format:\r\n *\r\n * [\r\n * COUNT chunk (number of DATA chunks — i.e. excludes this and LENGTH chunks)\r\n * LENGTH chunk 1 (4 bytes)\r\n * DATA chunk 1 (up to by 2^32 bytes)\r\n * LENGTH chunk 2 (4 bytes)\r\n * DATA chunk 2 (up to by 2^32 bytes)\r\n * ...\r\n * LENGTH chunk N-1 (4 bytes)\r\n * DATA chunk N-1 (up to by 2^32 bytes)\r\n * DATA chunk N (any size)\r\n * ]\r\n *\r\n * The last chunk doesn't need to have a length header because the COUNT chunk\r\n * tells us whether we're reading the last chunk or not.\r\n *\r\n * @param buffers each buffer (chunk) must be at most 2^32 bytes large (~4MB),\r\n * except the last chunk which can be of any size\r\n */\r\nconst concatBuffers = (...buffers) => {\r\n const bufferView = new Uint8Array(CHUNKS_COUNT_DATAVIEW_BYTES +\r\n NEXT_CHUNK_SIZE_DATAVIEW_BYTES * Math.max(buffers.length - 1, 1) +\r\n buffers.reduce((acc, buffer) => acc + buffer.byteLength, 0));\r\n let cursor = 0;\r\n // as the first chunk we'll encode how many chunks will follow\r\n dataView(bufferView, CHUNKS_COUNT_DATAVIEW_BYTES, cursor, buffers.length);\r\n cursor += CHUNKS_COUNT_DATAVIEW_BYTES;\r\n let i = 0;\r\n for (const buffer of buffers) {\r\n i++;\r\n if (i < buffers.length) {\r\n dataView(bufferView, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor, buffer.byteLength);\r\n cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\r\n }\r\n bufferView.set(buffer, cursor);\r\n cursor += buffer.byteLength;\r\n }\r\n return bufferView;\r\n};\r\n/** can only be used on buffers created via `concatBuffers()` */\r\nconst splitBuffers = (concatenatedBuffer) => {\r\n const buffers = [];\r\n let cursor = 0;\r\n // first chunk tells us how many other chunks there are\r\n const chunkCount = dataView(concatenatedBuffer, CHUNKS_COUNT_DATAVIEW_BYTES, cursor);\r\n cursor += CHUNKS_COUNT_DATAVIEW_BYTES;\r\n let i = 0;\r\n while (true) {\r\n i++;\r\n if (i < chunkCount) {\r\n const chunkSize = dataView(concatenatedBuffer, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor);\r\n cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\r\n buffers.push(concatenatedBuffer.slice(cursor, cursor + chunkSize));\r\n cursor += chunkSize;\r\n if (cursor >= concatenatedBuffer.byteLength) {\r\n break;\r\n }\r\n }\r\n else {\r\n buffers.push(concatenatedBuffer.slice(cursor));\r\n break;\r\n }\r\n }\r\n return buffers;\r\n};\r\n/** @private */\r\nconst _compress = (data, encryptionKey) => __awaiter(void 0, void 0, void 0, function* () {\r\n const deflated = new Uint8Array((0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(data));\r\n if (encryptionKey) {\r\n const { encryptedBuffer, iv } = yield (0,_encryption__WEBPACK_IMPORTED_MODULE_1__.encryptData)(encryptionKey, deflated);\r\n return concatBuffers(iv, new Uint8Array(encryptedBuffer));\r\n }\r\n return deflated;\r\n});\r\n// Format of the returned Uint8Array buffer.\r\n// `[]` represents a buffer chunk. Some chunks are nested.\r\n//\r\n// [\r\n// /* encodingMetadata */ [ data ]\r\n// /* contentsMetadata */ [ [iv] [data] ]\r\n// /* contents */ [ [iv] [data] ]\r\n// ]\r\nconst compressData = (data, options) => __awaiter(void 0, void 0, void 0, function* () {\r\n const fileInfo = {\r\n version: 1,\r\n compression: \"pako@1\",\r\n encryption: (options === null || options === void 0 ? void 0 : options.encryptionKey) ? \"AES-GCM\" : null,\r\n };\r\n const encodingMetadataBuffer = new TextEncoder().encode(JSON.stringify(fileInfo));\r\n const contentsMetadataBuffer = yield _compress(JSON.stringify((options === null || options === void 0 ? void 0 : options.metadata) || null), options === null || options === void 0 ? void 0 : options.encryptionKey);\r\n const contentsBuffer = yield _compress(data, options === null || options === void 0 ? void 0 : options.encryptionKey);\r\n return concatBuffers(encodingMetadataBuffer, contentsMetadataBuffer, contentsBuffer);\r\n});\r\n/** @private */\r\nconst _decompress = (bufferView, decryptionKey) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (decryptionKey) {\r\n const [iv, encryptedBuffer] = splitBuffers(bufferView);\r\n bufferView = new Uint8Array(yield (0,_encryption__WEBPACK_IMPORTED_MODULE_1__.decryptData)(\r\n // the iv was deserialized to array so we need convert it to typed array\r\n iv, encryptedBuffer, decryptionKey));\r\n }\r\n return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(bufferView);\r\n});\r\nconst decompressData = (bufferView, options) => __awaiter(void 0, void 0, void 0, function* () {\r\n let [encodingMetadataBuffer, contentsMetadataBuffer, contentsBuffer,] = splitBuffers(bufferView);\r\n const encodingMetadata = JSON.parse(new TextDecoder().decode(encodingMetadataBuffer));\r\n if ((options === null || options === void 0 ? void 0 : options.decryptionKey) && !encodingMetadata.encryption) {\r\n throw new Error(\"`options.decryptionKey` was supplied but the data is not encrypted.\");\r\n }\r\n if (encodingMetadata.encryption && !(options === null || options === void 0 ? void 0 : options.decryptionKey)) {\r\n throw new Error(\"The data is encrypted but `options.decryptionKey` was not supplied.\");\r\n }\r\n contentsMetadataBuffer = yield _decompress(contentsMetadataBuffer, options === null || options === void 0 ? void 0 : options.decryptionKey);\r\n contentsBuffer = yield _decompress(contentsBuffer, options === null || options === void 0 ? void 0 : options.decryptionKey);\r\n return {\r\n /** metadata source is always JSON so we can decode it here */\r\n metadata: JSON.parse(new TextDecoder().decode(contentsMetadataBuffer)),\r\n /** data can be anything so the caller must decode it */\r\n data: contentsBuffer,\r\n };\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LE9BQU87UUFDTCw4REFBOEQ7UUFDOUQsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBTTtRQUMzRSx3REFBd0Q7UUFDeEQsSUFBSSxFQUFFLGNBQWM7S0FDckIsQ0FBQztBQUNKLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9kYXRhL2VuY29kZS50cz85YjhlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmxhdGUsIGluZmxhdGUgfSBmcm9tIFwicGFrb1wiO1xuaW1wb3J0IHsgZW5jcnlwdERhdGEsIGRlY3J5cHREYXRhIH0gZnJvbSBcIi4vZW5jcnlwdGlvblwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gYnl0ZSAoYmluYXJ5KSBzdHJpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBmYXN0LCBCdWZmZXItY29tcGF0aWJsZSBpbXBsZW1cbmV4cG9ydCBjb25zdCB0b0J5dGVTdHJpbmcgPSAoXG4gIGRhdGE6IHN0cmluZyB8IFVpbnQ4QXJyYXkgfCBBcnJheUJ1ZmZlcixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgYmxvYiA9XG4gICAgICB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IG5ldyBCbG9iKFtuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZGF0YSldKVxuICAgICAgICA6IG5ldyBCbG9iKFtkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheSA/IGRhdGEgOiBuZXcgVWludDhBcnJheShkYXRhKV0pO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKCFldmVudC50YXJnZXQgfHwgdHlwZW9mIGV2ZW50LnRhcmdldC5yZXN1bHQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoXCJjb3VsZG4ndCBjb252ZXJ0IHRvIGJ5dGUgc3RyaW5nXCIpKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGJsb2IpO1xuICB9KTtcbn07XG5cbmNvbnN0IGJ5dGVTdHJpbmdUb0FycmF5QnVmZmVyID0gKGJ5dGVTdHJpbmc6IHN0cmluZykgPT4ge1xuICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZVN0cmluZy5sZW5ndGgpO1xuICBjb25zdCBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGJ5dGVTdHJpbmcubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBidWZmZXJWaWV3W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiBidWZmZXI7XG59O1xuXG5jb25zdCBieXRlU3RyaW5nVG9TdHJpbmcgPSAoYnl0ZVN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKS5kZWNvZGUoYnl0ZVN0cmluZ1RvQXJyYXlCdWZmZXIoYnl0ZVN0cmluZykpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGJhc2U2NFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBAcGFyYW0gaXNCeXRlU3RyaW5nIHNldCB0byB0cnVlIGlmIGFscmVhZHkgYnl0ZSBzdHJpbmcgdG8gcHJldmVudCBibG9hdFxuICogIGR1ZSB0byByZWVuY29kaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBzdHJpbmdUb0Jhc2U2NCA9IGFzeW5jIChzdHI6IHN0cmluZywgaXNCeXRlU3RyaW5nID0gZmFsc2UpID0+IHtcbiAgcmV0dXJuIGlzQnl0ZVN0cmluZyA/IHdpbmRvdy5idG9hKHN0cikgOiB3aW5kb3cuYnRvYShhd2FpdCB0b0J5dGVTdHJpbmcoc3RyKSk7XG59O1xuXG4vLyBhc3luYyB0byBhbGlnbiB3aXRoIHN0cmluZ1RvQmFzZTY0XG5leHBvcnQgY29uc3QgYmFzZTY0VG9TdHJpbmcgPSBhc3luYyAoYmFzZTY0OiBzdHJpbmcsIGlzQnl0ZVN0cmluZyA9IGZhbHNlKSA9PiB7XG4gIHJldHVybiBpc0J5dGVTdHJpbmdcbiAgICA/IHdpbmRvdy5hdG9iKGJhc2U2NClcbiAgICA6IGJ5dGVTdHJpbmdUb1N0cmluZyh3aW5kb3cuYXRvYihiYXNlNjQpKTtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB0ZXh0IGVuY29kaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50eXBlIEVuY29kZWREYXRhID0ge1xuICBlbmNvZGVkOiBzdHJpbmc7XG4gIGVuY29kaW5nOiBcImJzdHJpbmdcIjtcbiAgLyoqIHdoZXRoZXIgdGV4dCBpcyBjb21wcmVzc2VkICh6bGliKSAqL1xuICBjb21wcmVzc2VkOiBib29sZWFuO1xuICAvKiogdmVyc2lvbiBmb3IgcG90ZW50aWFsIG1pZ3JhdGlvbiBwdXJwb3NlcyAqL1xuICB2ZXJzaW9uPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBFbmNvZGVzIChhbmQgcG90ZW50aWFsbHkgY29tcHJlc3NlcyB2aWEgemxpYikgdGV4dCB0byBieXRlIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgZW5jb2RlID0gYXN5bmMgKHtcbiAgdGV4dCxcbiAgY29tcHJlc3MsXG59OiB7XG4gIHRleHQ6IHN0cmluZztcbiAgLyoqIGRlZmF1bHRzIHRvIGB0cnVlYC4gSWYgY29tcHJlc3Npb24gZmFpbHMsIGZhbGxzIGJhY2sgdG8gYnN0cmluZyBhbG9uZS4gKi9cbiAgY29tcHJlc3M/OiBib29sZWFuO1xufSk6IFByb21pc2U8RW5jb2RlZERhdGE+ID0+IHtcbiAgbGV0IGRlZmxhdGVkITogc3RyaW5nO1xuICBpZiAoY29tcHJlc3MgIT09IGZhbHNlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRlZmxhdGVkID0gYXdhaXQgdG9CeXRlU3RyaW5nKGRlZmxhdGUodGV4dCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiZW5jb2RlOiBjYW5ub3QgZGVmbGF0ZVwiLCBlcnJvcik7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogXCIxXCIsXG4gICAgZW5jb2Rpbmc6IFwiYnN0cmluZ1wiLFxuICAgIGNvbXByZXNzZWQ6ICEhZGVmbGF0ZWQsXG4gICAgZW5jb2RlZDogZGVmbGF0ZWQgfHwgKGF3YWl0IHRvQnl0ZVN0cmluZyh0ZXh0KSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVjb2RlID0gYXN5bmMgKGRhdGE6IEVuY29kZWREYXRhKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgbGV0IGRlY29kZWQ6IHN0cmluZztcblxuICBzd2l0Y2ggKGRhdGEuZW5jb2RpbmcpIHtcbiAgICBjYXNlIFwiYnN0cmluZ1wiOlxuICAgICAgLy8gaWYgY29tcHJlc3NlZCwgZG8gbm90IGRvdWJsZSBkZWNvZGUgdGhlIGJzdHJpbmdcbiAgICAgIGRlY29kZWQgPSBkYXRhLmNvbXByZXNzZWRcbiAgICAgICAgPyBkYXRhLmVuY29kZWRcbiAgICAgICAgOiBhd2FpdCBieXRlU3RyaW5nVG9TdHJpbmcoZGF0YS5lbmNvZGVkKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGRlY29kZTogdW5rbm93biBlbmNvZGluZyBcIiR7ZGF0YS5lbmNvZGluZ31cImApO1xuICB9XG5cbiAgaWYgKGRhdGEuY29tcHJlc3NlZCkge1xuICAgIHJldHVybiBpbmZsYXRlKG5ldyBVaW50OEFycmF5KGJ5dGVTdHJpbmdUb0FycmF5QnVmZmVyKGRlY29kZWQpKSwge1xuICAgICAgdG86IFwic3RyaW5nXCIsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGVjb2RlZDtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBiaW5hcnkgZW5jb2Rpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgRmlsZUVuY29kaW5nSW5mbyA9IHtcbiAgdmVyc2lvbjogMTtcbiAgY29tcHJlc3Npb246IFwicGFrb0AxXCI7XG4gIGVuY3J5cHRpb246IFwiQUVTLUdDTVwiIHwgbnVsbDtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiogaG93IG1hbnkgYnl0ZXMgd2UgdXNlIHRvIGVuY29kZSBob3cgbWFueSBieXRlcyB0aGUgbmV4dCBjaHVuayBoYXMuXG4gKiBDb3JyZXNwb25kcyB0byBEYXRhVmlldyBzZXR0ZXIgbWV0aG9kcyAoc2V0VWludDMyLCBzZXRVaW50MTYsIGV0YykuXG4gKlxuICogTk9URSAhIHZhbHVlcyBtdXN0IG5vdCBiZSBjaGFuZ2VkLCB3aGljaCB3b3VsZCBiZSBiYWNrd2FyZHMgaW5jb21wYXRpYmxlICFcbiAqL1xuY29uc3QgTkVYVF9DSFVOS19TSVpFX0RBVEFWSUVXX0JZVEVTID0gNDtcbmNvbnN0IENIVU5LU19DT1VOVF9EQVRBVklFV19CWVRFUyA9IDI7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBnZXR0ZXJcbmZ1bmN0aW9uIGRhdGFWaWV3KGJ1ZmZlcjogVWludDhBcnJheSwgYnl0ZXM6IDEgfCAyIHwgNCwgb2Zmc2V0OiBudW1iZXIpOiBudW1iZXI7XG4vLyBzZXR0ZXJcbmZ1bmN0aW9uIGRhdGFWaWV3KFxuICBidWZmZXI6IFVpbnQ4QXJyYXksXG4gIGJ5dGVzOiAxIHwgMiB8IDQsXG4gIG9mZnNldDogbnVtYmVyLFxuICB2YWx1ZTogbnVtYmVyLFxuKTogVWludDhBcnJheTtcbi8qKlxuICogYWJzdHJhY3Rpb24gb3ZlciBEYXRhVmlldyB0aGF0IHNlcnZlcyBhcyBhIHR5cGVkIGdldHRlci9zZXR0ZXIgaW4gY2FzZVxuICogeW91J3JlIHVzaW5nIGNvbnN0YW50cyBmb3IgdGhlIGJ5dGUgc2l6ZSBhbmQgd2FudCB0byBlbnN1cmUgdGhlcmUncyBub1xuICogZGlzY3JlcGVuYW5jeSBpbiB0aGUgZW5jb2RpbmcgYWNyb3NzIHJlZmFjdG9ycy5cbiAqXG4gKiBEYXRhVmlldyBzZXJ2ZXMgZm9yIGFuIGVuZGlhbi1hZ25vc3RpYyBoYW5kbGluZyBvZiBudW1iZXJzIGluIEFycmF5QnVmZmVycy5cbiAqL1xuZnVuY3Rpb24gZGF0YVZpZXcoXG4gIGJ1ZmZlcjogVWludDhBcnJheSxcbiAgYnl0ZXM6IDEgfCAyIHwgNCxcbiAgb2Zmc2V0OiBudW1iZXIsXG4gIHZhbHVlPzogbnVtYmVyLFxuKTogVWludDhBcnJheSB8IG51bWJlciB7XG4gIGNvbnN0IGJpdHMgPSB7IDE6IDgsIDI6IDE2LCA0OiAzMiB9IGFzIGNvbnN0O1xuICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgIGlmICh2YWx1ZSA+IE1hdGgucG93KDIsIGJpdHNbYnl0ZXNdKSAtIDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGF0dGVtcHRpbmcgdG8gc2V0IHZhbHVlIGhpZ2hlciB0aGFuIHRoZSBhbGxvY2F0ZWQgYnl0ZXMgKHZhbHVlOiAke3ZhbHVlfSwgYnl0ZXM6ICR7Ynl0ZXN9KWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2QgPSBgc2V0VWludCR7Yml0c1tieXRlc119YCBhcyBjb25zdDtcbiAgICBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlcilbbWV0aG9kXShvZmZzZXQsIHZhbHVlKTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG4gIGNvbnN0IG1ldGhvZCA9IGBnZXRVaW50JHtiaXRzW2J5dGVzXX1gIGFzIGNvbnN0O1xuICByZXR1cm4gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIpW21ldGhvZF0ob2Zmc2V0KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBSZXN1bHRpbmcgY29uY2F0ZW5hdGVkIGJ1ZmZlciBoYXMgdGhpcyBmb3JtYXQ6XG4gKlxuICogW1xuICogICBDT1VOVCBjaHVuayAobnVtYmVyIG9mIERBVEEgY2h1bmtzIOKAlCBpLmUuIGV4Y2x1ZGVzIHRoaXMgYW5kIExFTkdUSCBjaHVua3MpXG4gKiAgIExFTkdUSCBjaHVuayAxICg0IGJ5dGVzKVxuICogICBEQVRBIGNodW5rIDEgKHVwIHRvIGJ5IDJeMzIgYnl0ZXMpXG4gKiAgIExFTkdUSCBjaHVuayAyICg0IGJ5dGVzKVxuICogICBEQVRBIGNodW5rIDIgKHVwIHRvIGJ5IDJeMzIgYnl0ZXMpXG4gKiAgIC4uLlxuICogICBMRU5HVEggY2h1bmsgTi0xICg0IGJ5dGVzKVxuICogICBEQVRBIGNodW5rIE4tMSAodXAgdG8gYnkgMl4zMiBieXRlcylcbiAqICAgREFUQSBjaHVuayBOIChhbnkgc2l6ZSlcbiAqIF1cbiAqXG4gKiBUaGUgbGFzdCBjaHVuayBkb2Vzbid0IG5lZWQgdG8gaGF2ZSBhIGxlbmd0aCBoZWFkZXIgYmVjYXVzZSB0aGUgQ09VTlQgY2h1bmtcbiAqIHRlbGxzIHVzIHdoZXRoZXIgd2UncmUgcmVhZGluZyB0aGUgbGFzdCBjaHVuayBvciBub3QuXG4gKlxuICogQHBhcmFtIGJ1ZmZlcnMgZWFjaCBidWZmZXIgKGNodW5rKSBtdXN0IGJlIGF0IG1vc3QgMl4zMiBieXRlcyBsYXJnZSAofjRNQiksXG4gKiBleGNlcHQgdGhlIGxhc3QgY2h1bmsgd2hpY2ggY2FuIGJlIG9mIGFueSBzaXplXG4gKi9cbmNvbnN0IGNvbmNhdEJ1ZmZlcnMgPSAoLi4uYnVmZmVyczogVWludDhBcnJheVtdKSA9PiB7XG4gIGNvbnN0IGJ1ZmZlclZpZXcgPSBuZXcgVWludDhBcnJheShcbiAgICBDSFVOS1NfQ09VTlRfREFUQVZJRVdfQllURVMgK1xuICAgICAgTkVYVF9DSFVOS19TSVpFX0RBVEFWSUVXX0JZVEVTICogTWF0aC5tYXgoYnVmZmVycy5sZW5ndGggLSAxLCAxKSArXG4gICAgICBidWZmZXJzLnJlZHVjZSgoYWNjLCBidWZmZXIpID0+IGFjYyArIGJ1ZmZlci5ieXRlTGVuZ3RoLCAwKSxcbiAgKTtcblxuICBsZXQgY3Vyc29yID0gMDtcblxuICAvLyBhcyB0aGUgZmlyc3QgY2h1bmsgd2UnbGwgZW5jb2RlIGhvdyBtYW55IGNodW5rcyB3aWxsIGZvbGxvd1xuICBkYXRhVmlldyhidWZmZXJWaWV3LCBDSFVOS1NfQ09VTlRfREFUQVZJRVdfQllURVMsIGN1cnNvciwgYnVmZmVycy5sZW5ndGgpO1xuICBjdXJzb3IgKz0gQ0hVTktTX0NPVU5UX0RBVEFWSUVXX0JZVEVTO1xuXG4gIGxldCBpID0gMDtcbiAgZm9yIChjb25zdCBidWZmZXIgb2YgYnVmZmVycykge1xuICAgIGkrKztcbiAgICBpZiAoaSA8IGJ1ZmZlcnMubGVuZ3RoKSB7XG4gICAgICBkYXRhVmlldyhcbiAgICAgICAgYnVmZmVyVmlldyxcbiAgICAgICAgTkVYVF9DSFVOS19TSVpFX0RBVEFWSUVXX0JZVEVTLFxuICAgICAgICBjdXJzb3IsXG4gICAgICAgIGJ1ZmZlci5ieXRlTGVuZ3RoLFxuICAgICAgKTtcbiAgICAgIGN1cnNvciArPSBORVhUX0NIVU5LX1NJWkVfREFUQVZJRVdfQllURVM7XG4gICAgfVxuXG4gICAgYnVmZmVyVmlldy5zZXQoYnVmZmVyLCBjdXJzb3IpO1xuICAgIGN1cnNvciArPSBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBidWZmZXJWaWV3O1xufTtcblxuLyoqIGNhbiBvbmx5IGJlIHVzZWQgb24gYnVmZmVycyBjcmVhdGVkIHZpYSBgY29uY2F0QnVmZmVycygpYCAqL1xuY29uc3Qgc3BsaXRCdWZmZXJzID0gKGNvbmNhdGVuYXRlZEJ1ZmZlcjogVWludDhBcnJheSkgPT4ge1xuICBjb25zdCBidWZmZXJzID0gW107XG5cbiAgbGV0IGN1cnNvciA9IDA7XG5cbiAgLy8gZmlyc3QgY2h1bmsgdGVsbHMgdXMgaG93IG1hbnkgb3RoZXIgY2h1bmtzIHRoZXJlIGFyZVxuICBjb25zdCBjaHVua0NvdW50ID0gZGF0YVZpZXcoXG4gICAgY29uY2F0ZW5hdGVkQnVmZmVyLFxuICAgIENIVU5LU19DT1VOVF9EQVRBVklFV19CWVRFUyxcbiAgICBjdXJzb3IsXG4gICk7XG4gIGN1cnNvciArPSBDSFVOS1NfQ09VTlRfREFUQVZJRVdfQllURVM7XG5cbiAgbGV0IGkgPSAwO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGkrKztcbiAgICBpZiAoaSA8IGNodW5rQ291bnQpIHtcbiAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IGRhdGFWaWV3KFxuICAgICAgICBjb25jYXRlbmF0ZWRCdWZmZXIsXG4gICAgICAgIE5FWFRfQ0hVTktfU0laRV9EQVRBVklFV19CWVRFUyxcbiAgICAgICAgY3Vyc29yLFxuICAgICAgKTtcbiAgICAgIGN1cnNvciArPSBORVhUX0NIVU5LX1NJWkVfREFUQVZJRVdfQllURVM7XG5cbiAgICAgIGJ1ZmZlcnMucHVzaChjb25jYXRlbmF0ZWRCdWZmZXIuc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyBjaHVua1NpemUpKTtcbiAgICAgIGN1cnNvciArPSBjaHVua1NpemU7XG4gICAgICBpZiAoY3Vyc29yID49IGNvbmNhdGVuYXRlZEJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBidWZmZXJzLnB1c2goY29uY2F0ZW5hdGVkQnVmZmVyLnNsaWNlKGN1cnNvcikpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlcnM7XG59O1xuXG4vKiogQHByaXZhdGUgKi9cbmNvbnN0IF9jb21wcmVzcyA9IGFzeW5jIDxLIGV4dGVuZHMgc3RyaW5nPihcbiAgZGF0YTogVWludDhBcnJheSB8IHN0cmluZyxcbiAgZW5jcnlwdGlvbktleT86IEssXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+ID0+IHtcbiAgY29uc3QgZGVmbGF0ZWQgPSBuZXcgVWludDhBcnJheShkZWZsYXRlKGRhdGEpKTtcbiAgaWYgKGVuY3J5cHRpb25LZXkpIHtcbiAgICBjb25zdCB7IGVuY3J5cHRlZEJ1ZmZlciwgaXYgfSA9IGF3YWl0IGVuY3J5cHREYXRhKGVuY3J5cHRpb25LZXksIGRlZmxhdGVkKTtcblxuICAgIHJldHVybiBjb25jYXRCdWZmZXJzKGl2LCBuZXcgVWludDhBcnJheShlbmNyeXB0ZWRCdWZmZXIpKTtcbiAgfVxuICByZXR1cm4gZGVmbGF0ZWQ7XG59O1xuXG4vLyBGb3JtYXQgb2YgdGhlIHJldHVybmVkIFVpbnQ4QXJyYXkgYnVmZmVyLlxuLy8gYFtdYCByZXByZXNlbnRzIGEgYnVmZmVyIGNodW5rLiBTb21lIGNodW5rcyBhcmUgbmVzdGVkLlxuLy9cbi8vIFtcbi8vICAgLyogZW5jb2RpbmdNZXRhZGF0YSAqLyBbIGRhdGEgXVxuLy8gICAvKiBjb250ZW50c01ldGFkYXRhICovIFsgW2l2XSBbZGF0YV0gXVxuLy8gICAvKiBjb250ZW50cyAqLyAgICAgICAgIFsgW2l2XSBbZGF0YV0gXVxuLy8gXVxuZXhwb3J0IGNvbnN0IGNvbXByZXNzRGF0YSA9IGFzeW5jIDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IG5ldmVyPihcbiAgZGF0YTogVWludDhBcnJheSxcbiAgb3B0aW9ucz86IHtcbiAgICAvKiogaWYgc3VwcGxpZWQsIHRoZSBkYXRhIHdpbGwgYmUgZW5jcnlwdGVkIHVzaW5nIChvdGhlcndpc2Ugbm9cbiAgICAgKiAgZW5jcnlwdGlvbiB3aWxsIHRha2UgcGxhY2UpICovXG4gICAgZW5jcnlwdGlvbktleT86IHN0cmluZztcbiAgfSAmIChbVF0gZXh0ZW5kcyBbbmV2ZXJdXG4gICAgPyB7XG4gICAgICAgIG1ldGFkYXRhPzogVDtcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgICAgbWV0YWRhdGE6IFQ7XG4gICAgICB9KSxcbik6IFByb21pc2U8VWludDhBcnJheT4gPT4ge1xuICBjb25zdCBmaWxlSW5mbzogRmlsZUVuY29kaW5nSW5mbyA9IHtcbiAgICB2ZXJzaW9uOiAxLFxuICAgIGNvbXByZXNzaW9uOiBcInBha29AMVwiLFxuICAgIGVuY3J5cHRpb246IG9wdGlvbnM/LmVuY3J5cHRpb25LZXkgPyBcIkFFUy1HQ01cIiA6IG51bGwsXG4gIH07XG5cbiAgY29uc3QgZW5jb2RpbmdNZXRhZGF0YUJ1ZmZlciA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcbiAgICBKU09OLnN0cmluZ2lmeShmaWxlSW5mbyksXG4gICk7XG5cbiAgY29uc3QgY29udGVudHNNZXRhZGF0YUJ1ZmZlciA9IGF3YWl0IF9jb21wcmVzcyhcbiAgICBKU09OLnN0cmluZ2lmeShvcHRpb25zPy5tZXRhZGF0YSB8fCBudWxsKSxcbiAgICBvcHRpb25zPy5lbmNyeXB0aW9uS2V5LFxuICApO1xuXG4gIGNvbnN0IGNvbnRlbnRzQnVmZmVyID0gYXdhaXQgX2NvbXByZXNzKGRhdGEsIG9wdGlvbnM/LmVuY3J5cHRpb25LZXkpO1xuXG4gIHJldHVybiBjb25jYXRCdWZmZXJzKFxuICAgIGVuY29kaW5nTWV0YWRhdGFCdWZmZXIsXG4gICAgY29udGVudHNNZXRhZGF0YUJ1ZmZlcixcbiAgICBjb250ZW50c0J1ZmZlcixcbiAgKTtcbn07XG5cbi8qKiBAcHJpdmF0ZSAqL1xuY29uc3QgX2RlY29tcHJlc3MgPSBhc3luYyAoYnVmZmVyVmlldzogVWludDhBcnJheSwgZGVjcnlwdGlvbktleT86IHN0cmluZykgPT4ge1xuICBpZiAoZGVjcnlwdGlvbktleSkge1xuICAgIGNvbnN0IFtpdiwgZW5jcnlwdGVkQnVmZmVyXSA9IHNwbGl0QnVmZmVycyhidWZmZXJWaWV3KTtcbiAgICBidWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBhd2FpdCBkZWNyeXB0RGF0YShcbiAgICAgICAgLy8gdGhlIGl2IHdhcyBkZXNlcmlhbGl6ZWQgdG8gYXJyYXkgc28gd2UgbmVlZCBjb252ZXJ0IGl0IHRvIHR5cGVkIGFycmF5XG4gICAgICAgIGl2LFxuICAgICAgICBlbmNyeXB0ZWRCdWZmZXIsXG4gICAgICAgIGRlY3J5cHRpb25LZXksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gaW5mbGF0ZShidWZmZXJWaWV3KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNvbXByZXNzRGF0YSA9IGFzeW5jIDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIGJ1ZmZlclZpZXc6IFVpbnQ4QXJyYXksXG4gIG9wdGlvbnM/OiB7IGRlY3J5cHRpb25LZXk6IHN0cmluZyB9LFxuKSA9PiB7XG4gIGxldCBbXG4gICAgZW5jb2RpbmdNZXRhZGF0YUJ1ZmZlcixcbiAgICBjb250ZW50c01ldGFkYXRhQnVmZmVyLFxuICAgIGNvbnRlbnRzQnVmZmVyLFxuICBdID0gc3BsaXRCdWZmZXJzKGJ1ZmZlclZpZXcpO1xuXG4gIGNvbnN0IGVuY29kaW5nTWV0YWRhdGE6IEZpbGVFbmNvZGluZ0luZm8gPSBKU09OLnBhcnNlKFxuICAgIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShlbmNvZGluZ01ldGFkYXRhQnVmZmVyKSxcbiAgKTtcblxuICBpZiAob3B0aW9ucz8uZGVjcnlwdGlvbktleSAmJiAhZW5jb2RpbmdNZXRhZGF0YS5lbmNyeXB0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJgb3B0aW9ucy5kZWNyeXB0aW9uS2V5YCB3YXMgc3VwcGxpZWQgYnV0IHRoZSBkYXRhIGlzIG5vdCBlbmNyeXB0ZWQuXCIsXG4gICAgKTtcbiAgfVxuICBpZiAoZW5jb2RpbmdNZXRhZGF0YS5lbmNyeXB0aW9uICYmICFvcHRpb25zPy5kZWNyeXB0aW9uS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJUaGUgZGF0YSBpcyBlbmNyeXB0ZWQgYnV0IGBvcHRpb25zLmRlY3J5cHRpb25LZXlgIHdhcyBub3Qgc3VwcGxpZWQuXCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnRlbnRzTWV0YWRhdGFCdWZmZXIgPSBhd2FpdCBfZGVjb21wcmVzcyhcbiAgICBjb250ZW50c01ldGFkYXRhQnVmZmVyLFxuICAgIG9wdGlvbnM/LmRlY3J5cHRpb25LZXksXG4gICk7XG5cbiAgY29udGVudHNCdWZmZXIgPSBhd2FpdCBfZGVjb21wcmVzcyhjb250ZW50c0J1ZmZlciwgb3B0aW9ucz8uZGVjcnlwdGlvbktleSk7XG5cbiAgcmV0dXJuIHtcbiAgICAvKiogbWV0YWRhdGEgc291cmNlIGlzIGFsd2F5cyBKU09OIHNvIHdlIGNhbiBkZWNvZGUgaXQgaGVyZSAqL1xuICAgIG1ldGFkYXRhOiBKU09OLnBhcnNlKG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShjb250ZW50c01ldGFkYXRhQnVmZmVyKSkgYXMgVCxcbiAgICAvKiogZGF0YSBjYW4gYmUgYW55dGhpbmcgc28gdGhlIGNhbGxlciBtdXN0IGRlY29kZSBpdCAqL1xuICAgIGRhdGE6IGNvbnRlbnRzQnVmZmVyLFxuICB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../data/encode.ts\n");
19
-
20
- /***/ }),
21
-
22
- /***/ "../../data/encryption.ts":
23
- /*!********************************!*\
24
- !*** ../../data/encryption.ts ***!
25
- \********************************/
26
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27
-
28
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"IV_LENGTH_BYTES\": () => (/* binding */ IV_LENGTH_BYTES),\n/* harmony export */ \"createIV\": () => (/* binding */ createIV),\n/* harmony export */ \"generateEncryptionKey\": () => (/* binding */ generateEncryptionKey),\n/* harmony export */ \"getImportedKey\": () => (/* binding */ getImportedKey),\n/* harmony export */ \"encryptData\": () => (/* binding */ encryptData),\n/* harmony export */ \"decryptData\": () => (/* binding */ decryptData)\n/* harmony export */ });\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nconst IV_LENGTH_BYTES = 12;\r\nconst createIV = () => {\r\n const arr = new Uint8Array(IV_LENGTH_BYTES);\r\n return window.crypto.getRandomValues(arr);\r\n};\r\nconst generateEncryptionKey = () => __awaiter(void 0, void 0, void 0, function* () {\r\n const key = yield window.crypto.subtle.generateKey({\r\n name: \"AES-GCM\",\r\n length: 128,\r\n }, true, // extractable\r\n [\"encrypt\", \"decrypt\"]);\r\n return (yield window.crypto.subtle.exportKey(\"jwk\", key)).k;\r\n});\r\nconst getImportedKey = (key, usage) => window.crypto.subtle.importKey(\"jwk\", {\r\n alg: \"A128GCM\",\r\n ext: true,\r\n k: key,\r\n key_ops: [\"encrypt\", \"decrypt\"],\r\n kty: \"oct\",\r\n}, {\r\n name: \"AES-GCM\",\r\n length: 128,\r\n}, false, // extractable\r\n[usage]);\r\nconst encryptData = (key, data) => __awaiter(void 0, void 0, void 0, function* () {\r\n const importedKey = yield getImportedKey(key, \"encrypt\");\r\n const iv = createIV();\r\n const ui = typeof data === \"string\"\r\n ? new TextEncoder().encode(data)\r\n : data instanceof Uint8Array\r\n ? data\r\n : new Uint8Array(yield data.arrayBuffer());\r\n const encryptedBuffer = yield window.crypto.subtle.encrypt({\r\n name: \"AES-GCM\",\r\n iv,\r\n }, importedKey, ui);\r\n return { encryptedBuffer, iv };\r\n});\r\nconst decryptData = (iv, encrypted, privateKey) => __awaiter(void 0, void 0, void 0, function* () {\r\n const key = yield getImportedKey(privateKey, \"decrypt\");\r\n return window.crypto.subtle.decrypt({\r\n name: \"AES-GCM\",\r\n iv,\r\n }, key, encrypted);\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGF0YS9lbmNyeXB0aW9uLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUUzQixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFFSyxNQUFNLHFCQUFxQixHQUFHLEdBQVMsRUFBRTtJQUM5QyxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDaEQ7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxHQUFHO0tBQ1osRUFDRCxJQUFJLEVBQUUsY0FBYztJQUNwQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FDdkIsQ0FBQztJQUNGLE9BQU8sQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQyxFQUFDO0FBRUssTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBZSxFQUFFLEVBQUUsQ0FDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUM1QixLQUFLLEVBQ0w7SUFDRSxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxJQUFJO0lBQ1QsQ0FBQyxFQUFFLEdBQUc7SUFDTixPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQy9CLEdBQUcsRUFBRSxLQUFLO0NBQ1gsRUFDRDtJQUNFLElBQUksRUFBRSxTQUFTO0lBQ2YsTUFBTSxFQUFFLEdBQUc7Q0FDWixFQUNELEtBQUssRUFBRSxjQUFjO0FBQ3JCLENBQUMsS0FBSyxDQUFDLENBQ1IsQ0FBQztBQUVHLE1BQU0sV0FBVyxHQUFHLENBQ3pCLEdBQVcsRUFDWCxJQUF1QyxFQUNvQixFQUFFO0lBQzdELE1BQU0sV0FBVyxHQUFHLE1BQU0sY0FBYyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6RCxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztJQUN0QixNQUFNLEVBQUUsR0FDTixPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3RCLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDaEMsQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVO1lBQzVCLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFL0MsTUFBTSxlQUFlLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ3hEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixFQUFFO0tBQ0gsRUFDRCxXQUFXLEVBQ1gsRUFBRSxDQUNILENBQUM7SUFFRixPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pDLENBQUMsRUFBQztBQUVLLE1BQU0sV0FBVyxHQUFHLENBQ3pCLEVBQWUsRUFDZixTQUFzQixFQUN0QixVQUFrQixFQUNJLEVBQUU7SUFDeEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUNqQztRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsRUFBRTtLQUNILEVBQ0QsR0FBRyxFQUNILFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2RhdGEvZW5jcnlwdGlvbi50cz9hZDMxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBJVl9MRU5HVEhfQllURVMgPSAxMjtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUlWID0gKCkgPT4ge1xuICBjb25zdCBhcnIgPSBuZXcgVWludDhBcnJheShJVl9MRU5HVEhfQllURVMpO1xuICByZXR1cm4gd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUVuY3J5cHRpb25LZXkgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGtleSA9IGF3YWl0IHdpbmRvdy5jcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KFxuICAgIHtcbiAgICAgIG5hbWU6IFwiQUVTLUdDTVwiLFxuICAgICAgbGVuZ3RoOiAxMjgsXG4gICAgfSxcbiAgICB0cnVlLCAvLyBleHRyYWN0YWJsZVxuICAgIFtcImVuY3J5cHRcIiwgXCJkZWNyeXB0XCJdLFxuICApO1xuICByZXR1cm4gKGF3YWl0IHdpbmRvdy5jcnlwdG8uc3VidGxlLmV4cG9ydEtleShcImp3a1wiLCBrZXkpKS5rO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEltcG9ydGVkS2V5ID0gKGtleTogc3RyaW5nLCB1c2FnZTogS2V5VXNhZ2UpID0+XG4gIHdpbmRvdy5jcnlwdG8uc3VidGxlLmltcG9ydEtleShcbiAgICBcImp3a1wiLFxuICAgIHtcbiAgICAgIGFsZzogXCJBMTI4R0NNXCIsXG4gICAgICBleHQ6IHRydWUsXG4gICAgICBrOiBrZXksXG4gICAgICBrZXlfb3BzOiBbXCJlbmNyeXB0XCIsIFwiZGVjcnlwdFwiXSxcbiAgICAgIGt0eTogXCJvY3RcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiQUVTLUdDTVwiLFxuICAgICAgbGVuZ3RoOiAxMjgsXG4gICAgfSxcbiAgICBmYWxzZSwgLy8gZXh0cmFjdGFibGVcbiAgICBbdXNhZ2VdLFxuICApO1xuXG5leHBvcnQgY29uc3QgZW5jcnlwdERhdGEgPSBhc3luYyAoXG4gIGtleTogc3RyaW5nLFxuICBkYXRhOiBVaW50OEFycmF5IHwgQmxvYiB8IEZpbGUgfCBzdHJpbmcsXG4pOiBQcm9taXNlPHsgZW5jcnlwdGVkQnVmZmVyOiBBcnJheUJ1ZmZlcjsgaXY6IFVpbnQ4QXJyYXkgfT4gPT4ge1xuICBjb25zdCBpbXBvcnRlZEtleSA9IGF3YWl0IGdldEltcG9ydGVkS2V5KGtleSwgXCJlbmNyeXB0XCIpO1xuICBjb25zdCBpdiA9IGNyZWF0ZUlWKCk7XG4gIGNvbnN0IHVpID1cbiAgICB0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZGF0YSlcbiAgICAgIDogZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbiAgICAgID8gZGF0YVxuICAgICAgOiBuZXcgVWludDhBcnJheShhd2FpdCBkYXRhLmFycmF5QnVmZmVyKCkpO1xuXG4gIGNvbnN0IGVuY3J5cHRlZEJ1ZmZlciA9IGF3YWl0IHdpbmRvdy5jcnlwdG8uc3VidGxlLmVuY3J5cHQoXG4gICAge1xuICAgICAgbmFtZTogXCJBRVMtR0NNXCIsXG4gICAgICBpdixcbiAgICB9LFxuICAgIGltcG9ydGVkS2V5LFxuICAgIHVpLFxuICApO1xuXG4gIHJldHVybiB7IGVuY3J5cHRlZEJ1ZmZlciwgaXYgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNyeXB0RGF0YSA9IGFzeW5jIChcbiAgaXY6IEFycmF5QnVmZmVyLFxuICBlbmNyeXB0ZWQ6IEFycmF5QnVmZmVyLFxuICBwcml2YXRlS2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gIGNvbnN0IGtleSA9IGF3YWl0IGdldEltcG9ydGVkS2V5KHByaXZhdGVLZXksIFwiZGVjcnlwdFwiKTtcbiAgcmV0dXJuIHdpbmRvdy5jcnlwdG8uc3VidGxlLmRlY3J5cHQoXG4gICAge1xuICAgICAgbmFtZTogXCJBRVMtR0NNXCIsXG4gICAgICBpdixcbiAgICB9LFxuICAgIGtleSxcbiAgICBlbmNyeXB0ZWQsXG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../data/encryption.ts\n");
29
-
30
- /***/ }),
31
-
32
- /***/ "../../data/image.ts":
33
- /*!***************************!*\
34
- !*** ../../data/image.ts ***!
35
- \***************************/
36
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
37
-
38
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getTEXtChunk\": () => (/* binding */ getTEXtChunk),\n/* harmony export */ \"encodePngMetadata\": () => (/* binding */ encodePngMetadata),\n/* harmony export */ \"decodePngMetadata\": () => (/* binding */ decodePngMetadata),\n/* harmony export */ \"encodeSvgMetadata\": () => (/* binding */ encodeSvgMetadata),\n/* harmony export */ \"decodeSvgMetadata\": () => (/* binding */ decodeSvgMetadata)\n/* harmony export */ });\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! png-chunks-extract */ \"../../../node_modules/png-chunks-extract/index.js\");\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var png_chunk_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! png-chunk-text */ \"../../../node_modules/png-chunk-text/index.js\");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! png-chunks-encode */ \"../../../node_modules/png-chunks-encode/index.js\");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./encode */ \"../../data/encode.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n// -----------------------------------------------------------------------------\r\n// PNG\r\n// -----------------------------------------------------------------------------\r\nconst blobToArrayBuffer = (blob) => {\r\n if (\"arrayBuffer\" in blob) {\r\n return blob.arrayBuffer();\r\n }\r\n // Safari\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = (event) => {\r\n var _a;\r\n if (!((_a = event.target) === null || _a === void 0 ? void 0 : _a.result)) {\r\n return reject(new Error(\"couldn't convert blob to ArrayBuffer\"));\r\n }\r\n resolve(event.target.result);\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n });\r\n};\r\nconst getTEXtChunk = (blob) => __awaiter(void 0, void 0, void 0, function* () {\r\n const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield blobToArrayBuffer(blob)));\r\n const metadataChunk = chunks.find((chunk) => chunk.name === \"tEXt\");\r\n if (metadataChunk) {\r\n return png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.decode(metadataChunk.data);\r\n }\r\n return null;\r\n});\r\nconst encodePngMetadata = ({ blob, metadata, }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield blobToArrayBuffer(blob)));\r\n const metadataChunk = png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.encode(_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw, JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({\r\n text: metadata,\r\n compress: true,\r\n })));\r\n // insert metadata before last chunk (iEND)\r\n chunks.splice(-1, 0, metadataChunk);\r\n return new Blob([png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default()(chunks)], { type: \"image/png\" });\r\n});\r\nconst decodePngMetadata = (blob) => __awaiter(void 0, void 0, void 0, function* () {\r\n const metadata = yield getTEXtChunk(blob);\r\n if ((metadata === null || metadata === void 0 ? void 0 : metadata.keyword) === _constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw) {\r\n try {\r\n const encodedData = JSON.parse(metadata.text);\r\n if (!(\"encoded\" in encodedData)) {\r\n // legacy, un-encoded scene JSON\r\n if (\"type\" in encodedData &&\r\n encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\r\n return metadata.text;\r\n }\r\n throw new Error(\"FAILED\");\r\n }\r\n return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw new Error(\"FAILED\");\r\n }\r\n }\r\n throw new Error(\"INVALID\");\r\n});\r\n// -----------------------------------------------------------------------------\r\n// SVG\r\n// -----------------------------------------------------------------------------\r\nconst encodeSvgMetadata = ({ text }) => __awaiter(void 0, void 0, void 0, function* () {\r\n const base64 = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.stringToBase64)(JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({ text })), true /* is already byte string */);\r\n let metadata = \"\";\r\n metadata += `<!-- payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw} -->`;\r\n metadata += `<!-- payload-version:2 -->`;\r\n metadata += \"<!-- payload-start -->\";\r\n metadata += base64;\r\n metadata += \"<!-- payload-end -->\";\r\n return metadata;\r\n});\r\nconst decodeSvgMetadata = ({ svg }) => __awaiter(void 0, void 0, void 0, function* () {\r\n if (svg.includes(`payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw}`)) {\r\n const match = svg.match(/<!-- payload-start -->(.+?)<!-- payload-end -->/);\r\n if (!match) {\r\n throw new Error(\"INVALID\");\r\n }\r\n const versionMatch = svg.match(/<!-- payload-version:(\\d+) -->/);\r\n const version = (versionMatch === null || versionMatch === void 0 ? void 0 : versionMatch[1]) || \"1\";\r\n const isByteString = version !== \"1\";\r\n try {\r\n const json = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.base64ToString)(match[1], isByteString);\r\n const encodedData = JSON.parse(json);\r\n if (!(\"encoded\" in encodedData)) {\r\n // legacy, un-encoded scene JSON\r\n if (\"type\" in encodedData &&\r\n encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\r\n return json;\r\n }\r\n throw new Error(\"FAILED\");\r\n }\r\n return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw new Error(\"FAILED\");\r\n }\r\n }\r\n throw new Error(\"INVALID\");\r\n});\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ly4uLy4uL2RhdGEvaW1hZ2UudHM/MjUwMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVjb2RlUG5nIGZyb20gXCJwbmctY2h1bmtzLWV4dHJhY3RcIjtcbmltcG9ydCB0RVh0IGZyb20gXCJwbmctY2h1bmstdGV4dFwiO1xuaW1wb3J0IGVuY29kZVBuZyBmcm9tIFwicG5nLWNodW5rcy1lbmNvZGVcIjtcbmltcG9ydCB7IHN0cmluZ1RvQmFzZTY0LCBlbmNvZGUsIGRlY29kZSwgYmFzZTY0VG9TdHJpbmcgfSBmcm9tIFwiLi9lbmNvZGVcIjtcbmltcG9ydCB7IEVYUE9SVF9EQVRBX1RZUEVTLCBNSU1FX1RZUEVTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUE5HXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBibG9iVG9BcnJheUJ1ZmZlciA9IChibG9iOiBCbG9iKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4gPT4ge1xuICBpZiAoXCJhcnJheUJ1ZmZlclwiIGluIGJsb2IpIHtcbiAgICByZXR1cm4gYmxvYi5hcnJheUJ1ZmZlcigpO1xuICB9XG4gIC8vIFNhZmFyaVxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKCFldmVudC50YXJnZXQ/LnJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihcImNvdWxkbid0IGNvbnZlcnQgYmxvYiB0byBBcnJheUJ1ZmZlclwiKSk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKGV2ZW50LnRhcmdldC5yZXN1bHQgYXMgQXJyYXlCdWZmZXIpO1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRURVh0Q2h1bmsgPSBhc3luYyAoXG4gIGJsb2I6IEJsb2IsXG4pOiBQcm9taXNlPHsga2V5d29yZDogc3RyaW5nOyB0ZXh0OiBzdHJpbmcgfSB8IG51bGw+ID0+IHtcbiAgY29uc3QgY2h1bmtzID0gZGVjb2RlUG5nKG5ldyBVaW50OEFycmF5KGF3YWl0IGJsb2JUb0FycmF5QnVmZmVyKGJsb2IpKSk7XG4gIGNvbnN0IG1ldGFkYXRhQ2h1bmsgPSBjaHVua3MuZmluZCgoY2h1bmspID0+IGNodW5rLm5hbWUgPT09IFwidEVYdFwiKTtcbiAgaWYgKG1ldGFkYXRhQ2h1bmspIHtcbiAgICByZXR1cm4gdEVYdC5kZWNvZGUobWV0YWRhdGFDaHVuay5kYXRhKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBlbmNvZGVQbmdNZXRhZGF0YSA9IGFzeW5jICh7XG4gIGJsb2IsXG4gIG1ldGFkYXRhLFxufToge1xuICBibG9iOiBCbG9iO1xuICBtZXRhZGF0YTogc3RyaW5nO1xufSkgPT4ge1xuICBjb25zdCBjaHVua3MgPSBkZWNvZGVQbmcobmV3IFVpbnQ4QXJyYXkoYXdhaXQgYmxvYlRvQXJyYXlCdWZmZXIoYmxvYikpKTtcblxuICBjb25zdCBtZXRhZGF0YUNodW5rID0gdEVYdC5lbmNvZGUoXG4gICAgTUlNRV9UWVBFUy5leGNhbGlkcmF3LFxuICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgZW5jb2RlKHtcbiAgICAgICAgdGV4dDogbWV0YWRhdGEsXG4gICAgICAgIGNvbXByZXNzOiB0cnVlLFxuICAgICAgfSksXG4gICAgKSxcbiAgKTtcbiAgLy8gaW5zZXJ0IG1ldGFkYXRhIGJlZm9yZSBsYXN0IGNodW5rIChpRU5EKVxuICBjaHVua3Muc3BsaWNlKC0xLCAwLCBtZXRhZGF0YUNodW5rKTtcblxuICByZXR1cm4gbmV3IEJsb2IoW2VuY29kZVBuZyhjaHVua3MpXSwgeyB0eXBlOiBcImltYWdlL3BuZ1wiIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZVBuZ01ldGFkYXRhID0gYXN5bmMgKGJsb2I6IEJsb2IpID0+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBnZXRURVh0Q2h1bmsoYmxvYik7XG4gIGlmIChtZXRhZGF0YT8ua2V5d29yZCA9PT0gTUlNRV9UWVBFUy5leGNhbGlkcmF3KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVuY29kZWREYXRhID0gSlNPTi5wYXJzZShtZXRhZGF0YS50ZXh0KTtcbiAgICAgIGlmICghKFwiZW5jb2RlZFwiIGluIGVuY29kZWREYXRhKSkge1xuICAgICAgICAvLyBsZWdhY3ksIHVuLWVuY29kZWQgc2NlbmUgSlNPTlxuICAgICAgICBpZiAoXG4gICAgICAgICAgXCJ0eXBlXCIgaW4gZW5jb2RlZERhdGEgJiZcbiAgICAgICAgICBlbmNvZGVkRGF0YS50eXBlID09PSBFWFBPUlRfREFUQV9UWVBFUy5leGNhbGlkcmF3XG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBtZXRhZGF0YS50ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZBSUxFRFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBkZWNvZGUoZW5jb2RlZERhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZBSUxFRFwiKTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiSU5WQUxJRFwiKTtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTVkdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBlbmNvZGVTdmdNZXRhZGF0YSA9IGFzeW5jICh7IHRleHQgfTogeyB0ZXh0OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBiYXNlNjQgPSBhd2FpdCBzdHJpbmdUb0Jhc2U2NChcbiAgICBKU09OLnN0cmluZ2lmeShhd2FpdCBlbmNvZGUoeyB0ZXh0IH0pKSxcbiAgICB0cnVlIC8qIGlzIGFscmVhZHkgYnl0ZSBzdHJpbmcgKi8sXG4gICk7XG5cbiAgbGV0IG1ldGFkYXRhID0gXCJcIjtcbiAgbWV0YWRhdGEgKz0gYDwhLS0gcGF5bG9hZC10eXBlOiR7TUlNRV9UWVBFUy5leGNhbGlkcmF3fSAtLT5gO1xuICBtZXRhZGF0YSArPSBgPCEtLSBwYXlsb2FkLXZlcnNpb246MiAtLT5gO1xuICBtZXRhZGF0YSArPSBcIjwhLS0gcGF5bG9hZC1zdGFydCAtLT5cIjtcbiAgbWV0YWRhdGEgKz0gYmFzZTY0O1xuICBtZXRhZGF0YSArPSBcIjwhLS0gcGF5bG9hZC1lbmQgLS0+XCI7XG4gIHJldHVybiBtZXRhZGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNvZGVTdmdNZXRhZGF0YSA9IGFzeW5jICh7IHN2ZyB9OiB7IHN2Zzogc3RyaW5nIH0pID0+IHtcbiAgaWYgKHN2Zy5pbmNsdWRlcyhgcGF5bG9hZC10eXBlOiR7TUlNRV9UWVBFUy5leGNhbGlkcmF3fWApKSB7XG4gICAgY29uc3QgbWF0Y2ggPSBzdmcubWF0Y2goLzwhLS0gcGF5bG9hZC1zdGFydCAtLT4oLis/KTwhLS0gcGF5bG9hZC1lbmQgLS0+Lyk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSU5WQUxJRFwiKTtcbiAgICB9XG4gICAgY29uc3QgdmVyc2lvbk1hdGNoID0gc3ZnLm1hdGNoKC88IS0tIHBheWxvYWQtdmVyc2lvbjooXFxkKykgLS0+Lyk7XG4gICAgY29uc3QgdmVyc2lvbiA9IHZlcnNpb25NYXRjaD8uWzFdIHx8IFwiMVwiO1xuICAgIGNvbnN0IGlzQnl0ZVN0cmluZyA9IHZlcnNpb24gIT09IFwiMVwiO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCBiYXNlNjRUb1N0cmluZyhtYXRjaFsxXSwgaXNCeXRlU3RyaW5nKTtcbiAgICAgIGNvbnN0IGVuY29kZWREYXRhID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgIGlmICghKFwiZW5jb2RlZFwiIGluIGVuY29kZWREYXRhKSkge1xuICAgICAgICAvLyBsZWdhY3ksIHVuLWVuY29kZWQgc2NlbmUgSlNPTlxuICAgICAgICBpZiAoXG4gICAgICAgICAgXCJ0eXBlXCIgaW4gZW5jb2RlZERhdGEgJiZcbiAgICAgICAgICBlbmNvZGVkRGF0YS50eXBlID09PSBFWFBPUlRfREFUQV9UWVBFUy5leGNhbGlkcmF3XG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBqc29uO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZBSUxFRFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhd2FpdCBkZWNvZGUoZW5jb2RlZERhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZBSUxFRFwiKTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiSU5WQUxJRFwiKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../data/image.ts\n");
39
-
40
- /***/ })
41
-
42
- }]);