lexical-ai-plugin
Version:
This plugin is built to be used with Cloudflare Workers. In order to use this plugin, deploy this [Code](https://github.com/akadotsh/lexical-ai-worker) to Cloudflare.
22 lines (16 loc) • 15.9 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var react = require('react');
var LexicalComposerContext = require('@lexical/react/LexicalComposerContext');
var lexical = require('lexical');
var b = require('axios');
var jsxRuntime = require('react/jsx-runtime');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var b__default = /*#__PURE__*/_interopDefault(b);
var w=[{name:"shorten",value:["shorten"]},{name:"summarize",value:["summarize"]},{name:"simplify",value:["simplify"]},{name:"Splelling & Grammar",value:["spelling","grammar"]}],D=async(n,o,e)=>{if(!n||!o)return;let t=await b__default.default("https://lexical-ai-assistant.akashorasad2000.workers.dev/",{method:"POST",headers:{SECRET_KEY:n,"Content-Type":"application/json"},data:JSON.stringify({text:o,options:e})});return t.status===200?t.data:o};function d(n){let{parentRef:o,closeDropDown:e,onDropDownClick:t}=n,r=react.useRef(null);return react.useEffect(()=>{let a=r==null?void 0:r.current,s=o==null?void 0:o.current;if(a&&s){let p=u=>{let c=u.target;a.contains(c)||s!=null&&s.contains(c)||e();};return document.addEventListener("click",p),()=>{document.removeEventListener("click",p);}}},[r,o]),jsxRuntime.jsx("div",{className:"dropdown",ref:r,children:w.map((a,s)=>jsxRuntime.jsx("button",{className:"item",onClick:()=>{t(a.value);},children:jsxRuntime.jsx("span",{className:"text",children:a.name})},s))})}function m(n,{insertAt:o}={}){if(!n||typeof document>"u")return;let e=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css",o==="top"&&e.firstChild?e.insertBefore(t,e.firstChild):e.appendChild(t),t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n));}m(`.dropdown{z-index:5;display:block;position:absolute;box-shadow:0 12px 28px #0003,0 2px 4px #0000001a,inset 0 0 0 1px #ffffff80;border-radius:8px;min-width:100px;min-height:40px;background-color:#fff}.dropdown .item{margin:0 8px;padding:8px;color:#050505;cursor:pointer;line-height:16px;font-size:15px;display:flex;align-content:center;flex-direction:row;flex-shrink:0;justify-content:space-between;background-color:#fff;border-radius:8px;border:0;min-width:268px}.dropdown .item:first-child{margin-top:8px}.dropdown .item:last-child{margin-bottom:8px}.dropdown .item:hover{background-color:#eee}.dropdown .item .text{display:flex;line-height:20px;flex-grow:1;width:200px}.button{padding:2px 4px;cursor:pointer;outline:none;background:transparent;border:none}
`);var X=lexical.createCommand(),Z=lexical.createCommand();function R({apiKey:n,parentRef:o}){let[e]=LexicalComposerContext.useLexicalComposerContext(),[t,r]=react.useState(!1),a=react.useCallback(()=>{let i="";return e.update(()=>{i=lexical.$getTextContent();}),i},[e]),s=react.useCallback(async i=>{let x=a(),h=await D(n,x,i);e.update(()=>{let g=lexical.$getSelection();g&&h&&g.insertText(h);});},[e]),p=()=>{r(i=>!i);};return jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("button",{className:"button",onClick:()=>{p();},children:jsxRuntime.jsx("span",{children:"AI"})}),t&&jsxRuntime.jsx(d,{parentRef:o,closeDropDown:()=>{r(!1);},setShowOptions:r,onDropDownClick:i=>{s(i),p();}})]})}
exports.COPY = X;
exports.PASTE = Z;
exports.default = R;
//# sourceMappingURL=out.js.map
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50c3giLCIuLi9zcmMvdXRpbC50cyIsIi4uL3NyYy9kcm9wZG93bi50c3giLCIjc3R5bGUtaW5qZWN0OiNzdHlsZS1pbmplY3QiLCIuLi9zcmMvaW5kZXguY3NzIl0sIm5hbWVzIjpbInVzZUNhbGxiYWNrIiwidXNlU3RhdGUiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwiY3JlYXRlQ29tbWFuZCIsIiRnZXRUZXh0Q29udGVudCIsIiRnZXRTZWxlY3Rpb24iLCJheGlvcyIsIm9wdGlvbnMiLCJoYW5kbGVBSVJlcXVlc3QiLCJhcGlLZXkiLCJ0ZXh0IiwicmVzcG9uc2UiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJqc3giLCJEcm9wZG93biIsInByb3BzIiwicGFyZW50UmVmIiwiY2xvc2VEcm9wRG93biIsIm9uRHJvcERvd25DbGljayIsImRyb3BEb3duUmVmIiwiZHJvcERvd24iLCJwYXJlbnRXcmFwcGVyIiwiaGFuZGxlIiwiZXZlbnQiLCJ0YXJnZXQiLCJvcHRpb24iLCJpZHgiLCJzdHlsZUluamVjdCIsImNzcyIsImluc2VydEF0IiwiaGVhZCIsInN0eWxlIiwianN4cyIsIkNPUFkiLCJQQVNURSIsIkFJUGx1Z2luIiwiZWRpdG9yIiwic2hvd09wdGlvbnMiLCJzZXRTaG93T3B0aW9ucyIsImdldFRleHRDb250ZW50IiwiaGFuZGxlQUlBc3Npc3RhbnQiLCJhc3NpdGFudFJlc3BvbnNlIiwic2VsZWN0aW9uIiwidG9nZ2xlRHJvcERvd24iLCJwcmV2U3RhdGUiXSwibWFwcGluZ3MiOiJBQUFBLE9BQWdCLGVBQUFBLEVBQWEsWUFBQUMsTUFBZ0IsUUFDN0MsT0FBUyw2QkFBQUMsTUFBaUMsd0NBQzFDLE9BRUUsaUJBQUFDLEVBQ0EsbUJBQUFDLEVBQ0EsaUJBQUFDLE1BQ0ssVUNQUCxPQUFPQyxNQUFXLFFBRVgsSUFBTUMsRUFBVSxDQUNyQixDQUNFLEtBQU0sVUFDTixNQUFPLENBQUMsU0FBUyxDQUNuQixFQUNBLENBQ0Us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QyxFQUVMSSxFQUFvQnpDLEVBQ3hCLE1BQU9PLEdBQTJCLENBQ2hDLElBQU1HLEVBQU84QixFQUFlLEVBQ3RCRSxFQUFtQixNQUFNbEMsRUFBZ0JDLEVBQVFDLEVBQU1ILENBQU8sRUFDcEU4QixFQUFPLE9BQU8sSUFBTSxDQUNsQixJQUFNTSxFQUFZdEMsRUFBYyxFQUM1QnNDLEdBQWFELEdBQ2ZDLEVBQVUsV0FBV0QsQ0FBZ0IsQ0FFekMsQ0FBQyxDQUNILEVBQ0EsQ0FBQ0wsQ0FBTSxDQUNULEVBRU1PLEVBQWlCLElBQU0sQ0FDM0JMLEVBQWdCTSxHQUFjLENBQUNBLENBQVMsQ0FDMUMsRUFlQSxPQUNFWixFQUFDLE9BQ0MsVUFBQW5CLEVBQUMsVUFBTyxVQUFVLFNBQVMsUUFmVixJQUFNLENBQ3pCOEIsRUFBZSxDQUNqQixFQWNNLFNBQUE5QixFQUFDLFFBQUssY0FBRSxFQUNWLEVBQ0N3QixHQUNDeEIsRUFBQ0MsRUFBQSxDQUNDLFVBQVdFLEVBQ1gsY0FqQmMsSUFBTSxDQUMxQnNCLEVBQWUsRUFBSyxDQUN0QixFQWdCUSxlQUFnQkEsRUFDaEIsZ0JBZmdCaEMsR0FBMkIsQ0FDakRrQyxFQUFrQmxDLENBQU8sRUFDekJxQyxFQUFlLENBQ2pCLEVBYU0sR0FFSixDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCB9IGZyb20gXCJAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0XCI7XG5pbXBvcnQge1xuICBMZXhpY2FsQ29tbWFuZCxcbiAgY3JlYXRlQ29tbWFuZCxcbiAgJGdldFRleHRDb250ZW50LFxuICAkZ2V0U2VsZWN0aW9uLFxufSBmcm9tIFwibGV4aWNhbFwiO1xuaW1wb3J0IHsgaGFuZGxlQUlSZXF1ZXN0IH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gXCIuL2Ryb3Bkb3duXCI7XG5pbXBvcnQgXCIuL2luZGV4LmNzc1wiO1xuXG5leHBvcnQgY29uc3QgQ09QWTogTGV4aWNhbENvbW1hbmQ8c3RyaW5nPiA9IGNyZWF0ZUNvbW1hbmQoKTtcbmV4cG9ydCBjb25zdCBQQVNURTogTGV4aWNhbENvbW1hbmQ8c3RyaW5nPiA9IGNyZWF0ZUNvbW1hbmQoKTtcblxudHlwZSBQcm9wcyA9IHtcbiAgYXBpS2V5OiBzdHJpbmc7XG4gIHBhcmVudFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFJUGx1Z2luKHsgYXBpS2V5LCBwYXJlbnRSZWYgfTogUHJvcHMpIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KCk7XG4gIGNvbnN0IFtzaG93T3B0aW9ucywgc2V0U2hvd09wdGlvbnNdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGdldFRleHRDb250ZW50ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxldCB0ZXh0ID0gXCJcIjtcbiAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gJGdldFRleHRDb250ZW50KCk7XG4gICAgICB0ZXh0ID0gdGV4dENvbnRlbnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRleHQ7XG4gIH0sIFtlZGl0b3JdKTtcblxuICBjb25zdCBoYW5kbGVBSUFzc2lzdGFudCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcHRpb25zOiBBcnJheTxzdHJpbmc+KSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gZ2V0VGV4dENvbnRlbnQoKTtcbiAgICAgIGNvbnN0IGFzc2l0YW50UmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVBSVJlcXVlc3QoYXBpS2V5LCB0ZXh0LCBvcHRpb25zKTtcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24gJiYgYXNzaXRhbnRSZXNwb25zZSkge1xuICAgICAgICAgIHNlbGVjdGlvbi5pbnNlcnRUZXh0KGFzc2l0YW50UmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtlZGl0b3JdXG4gICk7XG5cbiAgY29uc3QgdG9nZ2xlRHJvcERvd24gPSAoKSA9PiB7XG4gICAgc2V0U2hvd09wdGlvbnMoKHByZXZTdGF0ZSkgPT4gIXByZXZTdGF0ZSk7XG4gIH07XG5cbiAgY29uc3Qgb3BlbkRyb3BEb3duID0gKCkgPT4ge1xuICAgIHRvZ2dsZURyb3BEb3duKCk7XG4gIH07XG5cbiAgY29uc3QgY2xvc2VEcm9wRG93biA9ICgpID0+IHtcbiAgICBzZXRTaG93T3B0aW9ucyhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRHJvcERvd24gPSAob3B0aW9uczogQXJyYXk8c3RyaW5nPikgPT4ge1xuICAgIGhhbmRsZUFJQXNzaXN0YW50KG9wdGlvbnMpO1xuICAgIHRvZ2dsZURyb3BEb3duKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidXR0b25cIiBvbkNsaWNrPXtvcGVuRHJvcERvd259PlxuICAgICAgICA8c3Bhbj5BSTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAge3Nob3dPcHRpb25zICYmIChcbiAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgcGFyZW50UmVmPXtwYXJlbnRSZWZ9XG4gICAgICAgICAgY2xvc2VEcm9wRG93bj17Y2xvc2VEcm9wRG93bn1cbiAgICAgICAgICBzZXRTaG93T3B0aW9ucz17c2V0U2hvd09wdGlvbnN9XG4gICAgICAgICAgb25Ecm9wRG93bkNsaWNrPXtoYW5kbGVEcm9wRG93bn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5cbmV4cG9ydCBjb25zdCBvcHRpb25zID0gW1xuICB7XG4gICAgbmFtZTogXCJzaG9ydGVuXCIsXG4gICAgdmFsdWU6IFtcInNob3J0ZW5cIl0sXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBcInN1bW1hcml6ZVwiLFxuICAgIHZhbHVlOiBbXCJzdW1tYXJpemVcIl0sXG4gIH0sXG4gIHtcbiAgICBuYW1lOiBcInNpbXBsaWZ5XCIsXG4gICAgdmFsdWU6IFtcInNpbXBsaWZ5XCJdLFxuICB9LFxuICB7XG4gICAgbmFtZTogXCJTcGxlbGxpbmcgJiBHcmFtbWFyXCIsXG4gICAgdmFsdWU6IFtcInNwZWxsaW5nXCIsIFwiZ3JhbW1hclwiXSxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVBSVJlcXVlc3QgPSBhc3luYyAoXG4gIGFwaUtleTogc3RyaW5nLFxuICB0ZXh0OiBzdHJpbmcsXG4gIG9wdGlvbnM6IEFycmF5PHN0cmluZz5cbikgPT4ge1xuICBpZiAoIWFwaUtleSB8fCAhdGV4dCkgcmV0dXJuO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MoXG4gICAgXCJodHRwczovL2xleGljYWwtYWktYXNzaXN0YW50LmFrYXNob3Jhc2FkMjAwMC53b3JrZXJzLmRldi9cIixcbiAgICB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBTRUNSRVRfS0VZOiBhcGlLZXksXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgfSxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdGV4dCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0pLFxuICAgIH1cbiAgKTtcblxuICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgfVxuXG4gIHJldHVybiB0ZXh0O1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyBEaXNwYXRjaCwgU2V0U3RhdGVBY3Rpb24sIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBvcHRpb25zIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW50ZXJmYWNlIFByb3BzIHtcbiAgcGFyZW50UmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xuICBjbG9zZURyb3BEb3duOiAoKSA9PiB2b2lkO1xuICBzZXRTaG93T3B0aW9uczogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+O1xuICBvbkRyb3BEb3duQ2xpY2s6IChvcHRpb25zOiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEcm9wZG93bihwcm9wczogUHJvcHMpIHtcbiAgY29uc3QgeyBwYXJlbnRSZWYsIGNsb3NlRHJvcERvd24sIG9uRHJvcERvd25DbGljayB9ID0gcHJvcHM7XG4gIGNvbnN0IGRyb3BEb3duUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRyb3BEb3duID0gZHJvcERvd25SZWY/LmN1cnJlbnQ7XG4gICAgY29uc3QgcGFyZW50V3JhcHBlciA9IHBhcmVudFJlZj8uY3VycmVudDtcblxuICAgIGlmIChkcm9wRG93biAmJiBwYXJlbnRXcmFwcGVyKSB7XG4gICAgICBjb25zdCBoYW5kbGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGU7XG5cbiAgICAgICAgaWYgKGRyb3BEb3duLmNvbnRhaW5zKHRhcmdldCkgfHwgcGFyZW50V3JhcHBlcj8uY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNsb3NlRHJvcERvd24oKTtcbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGUpO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZHJvcERvd25SZWYsIHBhcmVudFJlZl0pO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZHJvcGRvd25cIiByZWY9e2Ryb3BEb3duUmVmfT5cbiAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uLCBpZHgpID0+IChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGtleT17aWR4fVxuICAgICAgICAgIGNsYXNzTmFtZT1cIml0ZW1cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIG9uRHJvcERvd25DbGljayhvcHRpb24udmFsdWUpO1xuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0XCI+e29wdGlvbi5uYW1lfTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiIsIlxuICAgICAgICAgIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgeyBpbnNlcnRBdCB9ID0ge30pIHtcbiAgICAgICAgICAgIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVyblxuICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXVxuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gICAgICAgICAgICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJ1xuICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGluc2VydEF0ID09PSAndG9wJykge1xuICAgICAgICAgICAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGUsIGhlYWQuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAiLCJpbXBvcnQgc3R5bGVJbmplY3QgZnJvbSAnI3N0eWxlLWluamVjdCc7c3R5bGVJbmplY3QoXCIuZHJvcGRvd257ei1pbmRleDo1O2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNoYWRvdzowIDEycHggMjhweCAjMDAwMywwIDJweCA0cHggIzAwMDAwMDFhLGluc2V0IDAgMCAwIDFweCAjZmZmZmZmODA7Ym9yZGVyLXJhZGl1czo4cHg7bWluLXdpZHRoOjEwMHB4O21pbi1oZWlnaHQ6NDBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmRyb3Bkb3duIC5pdGVte21hcmdpbjowIDhweDtwYWRkaW5nOjhweDtjb2xvcjojMDUwNTA1O2N1cnNvcjpwb2ludGVyO2xpbmUtaGVpZ2h0OjE2cHg7Zm9udC1zaXplOjE1cHg7ZGlzcGxheTpmbGV4O2FsaWduLWNvbnRlbnQ6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXNocmluazowO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MDttaW4td2lkdGg6MjY4cHh9LmRyb3Bkb3duIC5pdGVtOmZpcnN0LWNoaWxke21hcmdpbi10b3A6OHB4fS5kcm9wZG93biAuaXRlbTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206OHB4fS5kcm9wZG93biAuaXRlbTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9LmRyb3Bkb3duIC5pdGVtIC50ZXh0e2Rpc3BsYXk6ZmxleDtsaW5lLWhlaWdodDoyMHB4O2ZsZXgtZ3JvdzoxO3dpZHRoOjIwMHB4fS5idXR0b257cGFkZGluZzoycHggNHB4O2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjpub25lfVxcblwiKSJdfQ==