react-lite-rich-text-editor 1.1.4 → 1.1.5
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.
- package/dist/index.cjs.js +361 -111
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +361 -111
- package/dist/index.esm.js.map +1 -1
- package/package.json +8 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/icons.jsx","../src/utils.js","../src/Spinner.jsx","../src/Label.jsx","../node_modules/style-inject/dist/style-inject.es.js","../src/RichTextEditor.jsx"],"sourcesContent":["import React from 'react';\n\nexport const FaImage = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"></path></svg>` }} />\n );\n};\n\nexport const FaArrowDown = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"></path></svg>` }} />\n );\n};\n\nexport const FaBold = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 384 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"></path></svg>` }} />\n );\n};\n\nexport const FaItalic = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 320 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"></path></svg>` }} />\n );\n};\n\nexport const FaUnderline = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaTextHeight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignCenter = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignRight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignJustify = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignLeft = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaListOl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"></path></svg>` }} />\n );\n};\n\nexport const FaListUl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaFonticons = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"></path></svg>` }} />\n );\n};\n\nexport const FaFont = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"></path></svg>` }} />\n );\n};\n\nexport const FaLink = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"></path></svg>` }} />\n );\n};\n\nexport const FaTable = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M64 448c-35.3 0-64-28.7-64-64V128c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64zm96-288H64v64h96v-64zm0 96H64v64h96v-64zm0 96H64c0 17.7 14.3 32 32 32h64v-32zm128-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v96h96v-96zm160-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v64h64c17.7 0 32-14.3 32-32v-32z\"></path></svg>` }} />\n );\n};\n\nexport const FaYoutube = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.781 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"></path></svg>` }} />\n );\n};\n\nexport const FaObjectGroup = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M480 320h-48v48c0 17.7-14.3 32-32 32h-48v32c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V160c0-26.5 21.5-48 48-48h32v-48c0-17.7 14.3-32 32-32h48V0h32c26.5 0 48 21.5 48 48v48h48c17.7 0 32 14.3 32 32v48h32c26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48z\"></path></svg>` }} />\n );\n};\n\nexport const FaTrash = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"></path></svg>` }} />\n );\n};\n\n\nexport const FaVideo = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: '<svg stroke=\\\"currentColor\\\" fill=\\\"currentColor\\\" stroke-width=\\\"0\\\" viewBox=\\\"0 0 576 512\\\" height=\\\"1em\\\" width=\\\"1em\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.3 16.9 28.2V384c0 11.9-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V174.9l14.2-9.5 96-64c9.9-6.6 22.6-7.1 32.9-1.6z\\\"></path></svg>' }} />\n );\n};\n","// Basic ID generator\nexport const getRandomId = () => {\n return (\n Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15)\n );\n};\n\n// DraftJS helper stubs\n// Since we are removing specific DraftJS dependencies for this package,\n// these serve as placeholders or basic HTML verifiers.\n\nexport const isValidDraftFormat = (content) => {\n if (typeof content !== \"object\" || content === null) return false;\n return !!(content.blocks && content.entityMap);\n};\n\n// A very basic fallback. Ideally, the user should pass HTML strings.\n// Dealing with full DraftJS->HTML conversion without the library is complex.\n// We assume for this package that if the legacy DraftJS format is passed,\n// the user might need to handle it or we expect HTML primarily.\nexport const draftBlocksToHTML = (content) => {\n console.warn(\n \"draftBlocksToHTML: DraftJS object detected but full conversion is simplified in this package.\",\n );\n // Return empty or try to extract text as a fallback\n if (content && content.blocks) {\n return content.blocks.map((b) => `<p>${b.text}</p>`).join(\"\");\n }\n return \"\";\n};\n","import React from 'react';\n\nconst Spinner = () => {\n return (\n <div className=\"rte-spinner-container\">\n <div className=\"rte-spinner\"></div>\n </div>\n );\n};\n\nexport default Spinner;\n","import React from 'react';\n\nconst LabelComponent = ({ children }) => {\n if (!children) return null;\n return (\n <label className=\"rte-label\" style={{ marginBottom: '4px', display: 'block' }}>\n {children}\n </label>\n );\n};\n\nexport default LabelComponent;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { FaImage, FaBold, FaItalic, FaUnderline, FaTextHeight, FaAlignCenter, FaAlignRight, FaAlignJustify, FaAlignLeft, FaListOl, FaListUl, FaFont, FaTable, FaYoutube, FaVideo, FaTrash, FaObjectGroup } from \"./icons\";\nimport { draftBlocksToHTML, isValidDraftFormat } from \"./utils\";\nimport Spinner from \"./Spinner\";\nimport LabelComponent from \"./Label\";\nimport \"./RichTextEditor.css\";\n\n// Helper functions for HTML escaping\nconst escapeHtml = (str) => {\n if (!str) return \"\";\n return String(str)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/'/g, \"'\");\n};\n\nconst escapeAttr = (str) => escapeHtml(str).replace(/\"/g, \""\");\n\n// URL detection regex\nconst URL_REGEX = /(https?:\\/\\/[^\\s]+)/g;\n\nexport default function RichTextEditor({\n onChange,\n showEditButton,\n onBlur,\n disabled = false,\n editable: initialEditable = false,\n value,\n isLoading,\n isList = false,\n label,\n showBorder = true,\n paddingLeft,\n minHeight,\n maxHeight,\n onImageUpload,\n}) {\n\n if (isLoading) {\n return <Spinner />;\n }\n\n const editorRef = useRef(null);\n const fileInputRef = useRef(null);\n const scrollTopRef = useRef(0);\n\n const [html, setHtml] = useState(\"\");\n const [linkModalOpen, setLinkModalOpen] = useState(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [linkText, setLinkText] = useState(\"\");\n const selectionRangeRef = useRef(null);\n const [editable, setEditable] = useState(initialEditable);\n const lastSynchronizedHtmlRef = useRef(\"\");\n\n useEffect(() => {\n setEditable(initialEditable);\n }, [initialEditable]);\n\n\n // NEW: Track current list type for dropdown\n const [currentListType, setCurrentListType] = useState(null);\n\n // NEW: Track active styles for toolbar buttons\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n\n // NEW: Track current font size\n const [currentFontSize, setCurrentFontSize] = useState(\"16\");\n\n // NEW: Track current line height\n const [currentLineHeight, setCurrentLineHeight] = useState(\"\");\n const [activeAlign, setActiveAlign] = useState(null);\n\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [selectedImageUrl, setSelectedImageUrl] = useState(\"\");\n const [zoomLevel, setZoomLevel] = useState(1);\n const [isUploading, setIsUploading] = useState(false);\n\n const [videoModalOpen, setVideoModalOpen] = useState(false);\n const [videoUrl, setVideoUrl] = useState(\"\");\n const [tableModalOpen, setTableModalOpen] = useState(false);\n const [hoveredTable, setHoveredTable] = useState(null);\n const [tableRows, setTableRows] = useState(3);\n const [tableCols, setTableCols] = useState(3);\n const [selectionVersion, setSelectionVersion] = useState(0);\n\n const [selectedImage, setSelectedImage] = useState(null);\n const [metrics, setMetrics] = useState({ words: 0, chars: 0 });\n\n const updateMetrics = useCallback(() => {\n if (!editorRef.current) return;\n // Calculate metrics immediately but outside of render path\n const text = editorRef.current.innerText || \"\";\n const cleanText = text.replace(/[\\n\\r]/g, ' ').trim();\n const words = cleanText ? cleanText.split(/\\s+/).length : 0;\n const chars = text.length;\n setMetrics({ words, chars });\n }, []);\n\n const openImageModal = (url) => {\n\n if (editorRef.current) {\n scrollTopRef.current = editorRef.current.scrollTop;\n }\n setSelectedImageUrl(url);\n setImageModalOpen(true);\n };\n\n const closeImageModal = () => {\n setImageModalOpen(false);\n setSelectedImageUrl(\"\");\n setZoomLevel(1);\n };\n\n const saveSelection = () => {\n if (typeof window === \"undefined\") return;\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleKeyUp = () => {\n saveSelection();\n setSelectionVersion(v => v + 1);\n };\n\n const handleZoomIn = () => {\n setZoomLevel((prevZoom) => prevZoom + 0.1);\n };\n\n const handleZoomOut = () => {\n setZoomLevel((prevZoom) => Math.max(0.1, prevZoom - 0.1));\n };\n\n // Effect to restore scroll position after modal closes\n useEffect(() => {\n if (!imageModalOpen && editorRef.current) {\n editorRef.current.scrollTop = scrollTopRef.current;\n }\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (!imageModalOpen) return;\n\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n closeImageModal();\n }\n };\n\n const handleWheel = (e) => {\n if (e.ctrlKey) {\n e.preventDefault();\n if (e.deltaY < 0) {\n handleZoomIn();\n } else {\n handleZoomOut();\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n window.addEventListener('wheel', handleWheel, { passive: false });\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('wheel', handleWheel);\n };\n }, [imageModalOpen]);\n\n useEffect(() => {\n const handleClick = (e) => {\n // Trigger selection update for toolbar reactivity\n setSelectionVersion(v => v + 1);\n\n const deleteBtn = e.target.closest('button[title=\"Remove image\"]');\n if (deleteBtn && editable) {\n e.preventDefault();\n e.stopPropagation();\n const wrapper = deleteBtn.closest('.image-container');\n if (wrapper && wrapper.parentNode) {\n wrapper.parentNode.removeChild(wrapper);\n triggerChange && triggerChange();\n }\n }\n };\n\n const editor = editorRef.current;\n if (editor) {\n editor.addEventListener('click', handleClick);\n return () => {\n editor.removeEventListener('click', handleClick);\n };\n }\n // Removed dependency on editable to minimize listener churn\n }, []);\n\n\n useEffect(() => {\n if (editorRef.current && value && value !== lastSynchronizedHtmlRef.current) {\n requestAnimationFrame(() => processExistingImages(editorRef.current));\n }\n }, [value]);\n\n\n // Runs whenever editable changes (toggles delete icon visibility)\n useEffect(() => {\n processExistingImages(editorRef.current, editable);\n }, [editable]);\n\n useEffect(() => {\n // Only update if value is different from our last known synced state\n if (value && value !== lastSynchronizedHtmlRef.current) {\n try {\n let newContent = \"\";\n \n // Check if value is a Draft.js content state\n if (isValidDraftFormat(value)) {\n newContent = draftBlocksToHTML(value);\n } else if (typeof value === 'string') {\n // If value is already what we have in HTML state, skip unescaping\n if (value === html) {\n lastSynchronizedHtmlRef.current = value;\n return;\n }\n newContent = unescapeHtml(value);\n }\n\n if (newContent && newContent !== html) {\n lastSynchronizedHtmlRef.current = value;\n setHtml(newContent);\n if (editorRef.current && editorRef.current.innerHTML !== newContent) {\n editorRef.current.innerHTML = newContent;\n }\n updateMetrics();\n }\n } catch (e) {\n console.error('Error processing editor content:', e);\n }\n } else if (!value && html) {\n setHtml('');\n lastSynchronizedHtmlRef.current = \"\";\n if (editorRef.current) {\n editorRef.current.innerHTML = '';\n updateMetrics();\n }\n }\n }, [value, initialEditable, updateMetrics]);\n\n\n // Trigger change manually\n const triggerChange = useCallback(() => {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n }, [onChange]);\n\n const handleChange = () => {\n if (!editorRef.current) return;\n\n // Clone editor content\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = editorRef.current.innerHTML;\n\n // Remove delete buttons from the clone\n tempDiv.querySelectorAll('button[title=\"Remove image\"]').forEach(btn => btn.remove());\n\n // Send cleaned HTML to onBlur\n onBlur && onBlur(tempDiv.innerHTML);\n };\n\n // Detect if selection is inside a list (ol or ul)\n const detectListType = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setCurrentListType(null);\n return;\n }\n let node = sel.anchorNode;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") {\n setCurrentListType(\"ordered\");\n return;\n }\n if (node.nodeName === \"UL\") {\n setCurrentListType(\"unordered\");\n return;\n }\n node = node.parentNode;\n }\n setCurrentListType(null);\n };\n\n // Helper to walk up DOM to find style tags or CSS style:\n const isParentStyle = (node, ...tagNames) => {\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1 && tagNames.includes(node.tagName)) return true;\n\n // Also check inline style for bold and italic:\n if (node.nodeType === 1 && node.style) {\n const style = node.style;\n if (\n tagNames.includes(\"bold\") &&\n (style.fontWeight === \"bold\" || Number(style.fontWeight) >= 600)\n )\n return true;\n if (tagNames.includes(\"italic\") && style.fontStyle === \"italic\")\n return true;\n if (\n tagNames.includes(\"underline\") &&\n style.textDecoration.includes(\"underline\")\n )\n return true;\n\n if (node.style && node.style.color) {\n return node.style.color;\n }\n\n // 2️⃣ Check for <font color=\"\"> (older HTML)\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n return false;\n };\n\n // Update style states based on selection or cursor position\n const updateStyleStates = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setIsBold(false);\n setIsItalic(false);\n setIsUnderline(false);\n setFontColor(\"#000000\"); // default\n return;\n }\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n const range = sel.getRangeAt(0);\n\n if (range.collapsed) {\n // Cursor only, check parent nodes\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n const computedStyles = window.getComputedStyle(container);\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n\n // ✅ Get computed color from container\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n\n } else {\n // Text selected, use execCommand state\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n\n // ✅ For selection, get color from selection's start container\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n }\n };\n\n // Helper to convert rgb() to hex\n function rgbToHex(rgb) {\n const result = rgb.match(/\\d+/g);\n if (!result) return \"#000000\";\n return (\n \"#\" +\n result\n .slice(0, 3)\n .map((x) => {\n const hex = parseInt(x, 10).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\n }\n\n\n // Listen for selection changes globally to update styles and list type in one pass\n useEffect(() => {\n const handleGlobalSelectionSync = () => {\n // Only sync if the editor has focus\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current?.contains(sel.anchorNode)) {\n return;\n }\n\n // 1. Detect List Type\n let node = sel.anchorNode;\n let listFound = null;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") { listFound = \"ordered\"; break; }\n if (node.nodeName === \"UL\") { listFound = \"unordered\"; break; }\n node = node.parentNode;\n }\n setCurrentListType(listFound);\n\n // 2. Update Style States\n const container = sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode;\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n \n const range = sel.getRangeAt(0);\n if (range.collapsed) {\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n } else {\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n }\n\n // 3. Current Font Size\n const element = range.startContainer.parentElement.closest('[style*=\"font-size\"]');\n if (element) {\n const fontSize = window.getComputedStyle(element).fontSize;\n const sizeValue = fontSize ? parseInt(fontSize) : 16;\n setCurrentFontSize(sizeValue.toString());\n } else {\n setCurrentFontSize(\"16\");\n }\n };\n\n document.addEventListener(\"selectionchange\", handleGlobalSelectionSync);\n return () => {\n document.removeEventListener(\"selectionchange\", handleGlobalSelectionSync);\n };\n }, []);\n\n\n const focus = () => editorRef.current && editorRef.current.focus();\n\n const exec = (command, value = null) => {\n document.execCommand(command, false, value);\n triggerChange();\n focus();\n };\n\n const [fontColor, setFontColor] = useState(\"#000000\");\n\n const handleColorChange = (color) => {\n setFontColor(color);\n exec(\"foreColor\", color);\n };\n\n const addLink = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n\n const selectedText = sel.toString();\n\n if (selectedText.length > 0) {\n setLinkText(selectedText);\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n } else {\n setLinkText(\"\");\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n }\n };\n\n const findParentTag = (node, tagName) => {\n if (!node) return null;\n let curr = node;\n while (curr && curr !== editorRef.current) {\n if (curr.tagName === tagName) return curr;\n curr = curr.parentNode;\n }\n return null;\n };\n\n const tableAction = (action) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n \n const cell = findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH');\n if (!cell) return;\n \n const row = cell.parentNode;\n const table = row.parentNode.closest('table');\n \n switch (action) {\n case 'addRowAbove':\n const newRowAbove = table.insertRow(row.rowIndex);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowAbove.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addRowBelow':\n const newRowBelow = table.insertRow(row.rowIndex + 1);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowBelow.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColBefore':\n const cellIndex = cell.cellIndex;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndex);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColAfter':\n const cellIndexAfter = cell.cellIndex + 1;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndexAfter);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'deleteRow': {\n const rowIndex = row.rowIndex;\n const cellIndex = cell.cellIndex;\n table.deleteRow(rowIndex);\n if (table.rows.length === 0) {\n table.remove();\n } else {\n const targetRowIndex = Math.min(rowIndex, table.rows.length - 1);\n const targetRow = table.rows[targetRowIndex];\n const targetCell = targetRow.cells[Math.min(cellIndex, targetRow.cells.length - 1)];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'deleteCol': {\n const idx = cell.cellIndex;\n const rowIndex = row.rowIndex;\n for (let i = 0; i < table.rows.length; i++) {\n table.rows[i].deleteCell(idx);\n }\n if (table.rows[0].cells.length === 0) {\n table.remove();\n } else {\n const targetColIndex = Math.min(idx, table.rows[0].cells.length - 1);\n const targetCell = table.rows[rowIndex]?.cells[targetColIndex] || table.rows[0].cells[targetColIndex];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'mergeRight':\n if (cell.nextElementSibling) {\n const nextCell = cell.nextElementSibling;\n cell.colSpan = (cell.colSpan || 1) + (nextCell.colSpan || 1);\n nextCell.remove();\n }\n break;\n case 'deleteTable':\n table.remove();\n break;\n default:\n break;\n }\n triggerChange && triggerChange();\n };\n\n const insertTable = () => {\n const rows = parseInt(tableRows) || 3;\n const cols = parseInt(tableCols) || 3;\n let tableHtml = '<table style=\"width: 100%; border-collapse: collapse; border: 1px solid #e5e7eb; margin: 16px 0;\"><tbody>';\n for (let i = 0; i < rows; i++) {\n tableHtml += '<tr>';\n for (let j = 0; j < cols; j++) {\n tableHtml += '<td style=\"border: 1px solid #e5e7eb; padding: 12px; min-height: 20px;\"> </td>';\n }\n tableHtml += '</tr>';\n }\n tableHtml += '</tbody></table><p> </p>';\n \n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n document.execCommand(\"insertHTML\", false, tableHtml);\n setTableModalOpen(false);\n triggerChange && triggerChange();\n };\n\n const parseVideoUrl = (url) => {\n url = url.trim();\n if (!url) return null;\n\n // YouTube\n const ytRegExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|watch\\?vi=|\\&vi=)([^#\\&\\?]*).*/;\n const ytMatch = url.match(ytRegExp);\n if (ytMatch && ytMatch[2].length === 11) {\n return `https://www.youtube.com/embed/${ytMatch[2]}`;\n }\n\n // Vimeo\n const vimeoRegExp = /vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n const vimeoMatch = url.match(vimeoRegExp);\n if (vimeoMatch && vimeoMatch[3]) {\n return `https://player.vimeo.com/video/${vimeoMatch[3]}`;\n }\n\n // DailyMotion\n const dmRegExp = /dailymotion\\.com\\/video\\/([a-zA-Z0-9]+)/;\n const dmMatch = url.match(dmRegExp);\n if (dmMatch && dmMatch[1]) {\n return `https://www.dailymotion.com/embed/video/${dmMatch[1]}`;\n }\n\n return null;\n };\n\n const insertVideo = () => {\n const embedUrl = parseVideoUrl(videoUrl);\n\n if (embedUrl) {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n\n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n const embedHtml = `<div class=\"video-container\">\n <iframe \n src=\"${embedUrl}\" \n frameborder=\"0\" \n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" \n allowfullscreen\n ></iframe>\n </div><p> </p>`;\n \n try {\n document.execCommand(\"insertHTML\", false, embedHtml);\n } catch (err) {\n console.error(\"Failed to insert Video HTML:\", err);\n if (editorRef.current) {\n const div = document.createElement('div');\n div.innerHTML = embedHtml;\n editorRef.current.appendChild(div);\n }\n }\n setVideoModalOpen(false);\n setVideoUrl(\"\");\n triggerChange && triggerChange();\n } else {\n console.warn(\"Invalid Video URL or Platform not supported\");\n }\n };\n\n\n const onFileInput = (e) => {\n const file = e.target.files && e.target.files[0];\n if (!file) return;\n readFileAsDataURL(file).then((dataUrl) => {\n insertImage(dataUrl, file.name);\n });\n e.target.value = null;\n };\n\n const processExistingImages = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\"img\").forEach((img) => {\n // ONLY wrap if it's not already inside a wrapper\n const existingWrapper = img.closest(\".image-container\");\n if (existingWrapper) {\n // Just update existing wrapper state if needed\n existingWrapper.style.cursor = editable ? 'pointer' : 'default';\n const deleteBtn = existingWrapper.querySelector('.image-delete-button');\n if (deleteBtn) {\n deleteBtn.style.display = editable ? 'flex' : 'none';\n }\n return;\n }\n\n const wrapper = document.createElement(\"div\");\n const align = img.getAttribute('data-align') || 'center';\n wrapper.className = `image-container image-align-${align}`;\n wrapper.style.cursor = editable ? 'pointer' : 'default';\n\n img.className = \"rte-image\";\n img.style.cssText = \"\"; // Reset inline styles\n img.setAttribute('data-align', align);\n img.dataset.hasDeleteButton = \"true\";\n\n // Add click listener to open modal\n img.addEventListener(\"click\", () => openImageModal(img.src));\n\n const deleteBtn = document.createElement(\"button\");\n deleteBtn.innerHTML = \"×\";\n deleteBtn.className = \"image-delete-button\";\n deleteBtn.style.display = editable ? 'flex' : 'none';\n deleteBtn.style.pointerEvents = editable ? 'auto' : 'none';\n deleteBtn.title = \"Remove image\";\n\n deleteBtn.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n const wrapper = e.currentTarget.closest(\".image-container\");\n if (wrapper && wrapper.parentNode) {\n wrapper.parentNode.removeChild(wrapper);\n triggerChange && triggerChange();\n }\n };\n\n const { parentNode, nextSibling } = img;\n if (parentNode) {\n parentNode.removeChild(img);\n wrapper.appendChild(img);\n wrapper.appendChild(deleteBtn);\n\n if (nextSibling) {\n parentNode.insertBefore(wrapper, nextSibling);\n } else {\n parentNode.appendChild(wrapper);\n }\n }\n });\n };\n\n\n useEffect(() => {\n if (editorRef.current && value) {\n requestAnimationFrame(() => processExistingImages(editorRef.current));\n }\n }, [value]);\n\n /* \n Advanced Tip: Use the 'onImageUpload' prop to handle file uploads to a server \n instead of using base64. If 'onImageUpload' is provided, it should return a URL string.\n */\n const insertImage = async (dataUrl, fileName) => {\n try {\n if (editable) {\n\n // Create container for the image\n const container = document.createElement('div');\n container.className = 'image-container';\n\n // Create image element\n const img = document.createElement('img');\n img.src = dataUrl;\n img.alt = fileName || \"image\";\n img.addEventListener(\"click\", () => openImageModal(dataUrl));\n\n // Add elements to container\n container.appendChild(img);\n\n // Insert at cursor position\n insertNodeAtCursor(container);\n triggerChange();\n\n // Immediately process newly inserted image so delete button appears\n requestAnimationFrame(() => {\n processExistingImages(editorRef.current);\n });\n }\n } catch (err) {\n console.error('Error inserting image:', err);\n }\n };\n\n const readFileAsDataURL = (file) =>\n new Promise((res, rej) => {\n const reader = new FileReader();\n reader.onload = (ev) => res(ev.target.result);\n reader.onerror = rej;\n reader.readAsDataURL(file);\n });\n\n // NEW: Function to auto-convert URLs to links\n const autoConvertUrlsToLinks = (html) => {\n return html.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url);\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${url}</a>`;\n });\n };\n\n const handlePaste = useCallback((e) => {\n const clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData) return;\n\n // Check for image in clipboard\n const items = clipboardData.items || [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n e.preventDefault();\n const file = item.getAsFile();\n if (file) {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n // if the user's onImageUpload resolves to `{ mediaUrl: '...' }` like the previous MediaUpload, handle it\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name || 'pasted-image');\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error uploading pasted image:', error);\n setIsUploading(false);\n });\n }\n return;\n }\n }\n\n const htmlData = clipboardData.getData('text/html');\n if (htmlData && htmlData.trim()) {\n e.preventDefault();\n\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = htmlData;\n\n tempDiv.querySelectorAll('script, meta, link').forEach(el => el.remove());\n\n document.execCommand('styleWithCSS', false, true);\n document.execCommand('insertHTML', false, tempDiv.innerHTML);\n document.execCommand('styleWithCSS', false, false);\n\n triggerChange();\n focus();\n return;\n }\n\n const plainText = clipboardData.getData('text/plain');\n if (plainText) {\n e.preventDefault();\n\n let htmlToInsert = escapeHtml(plainText);\n\n htmlToInsert = htmlToInsert.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url.trim());\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue; text-decoration: underline;\">${escapeHtml(url)}</a>`;\n });\n\n htmlToInsert = htmlToInsert.replace(/\\n/g, '<br>');\n\n document.execCommand('insertHTML', false, htmlToInsert);\n triggerChange();\n focus();\n }\n }, [insertImage, triggerChange]);\n\n const handleDrop = async (e) => {\n if (!editable) return;\n e.preventDefault();\n e.stopPropagation();\n\n const files = e.dataTransfer.files;\n if (!files || files.length === 0) return;\n\n const imageFiles = Array.from(files).filter(file => file.type.startsWith(\"image/\"));\n\n for (const file of imageFiles) {\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error processing image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error processing image:', error);\n setIsUploading(false);\n }\n }\n };\n\n const insertNodeAtCursor = (node) => {\n try {\n const sel = window.getSelection();\n let range;\n\n if (!sel || sel.rangeCount === 0 || !editorRef.current.contains(sel.anchorNode)) {\n editorRef.current.focus();\n \n // Move cursor to end if not already in editor\n range = document.createRange();\n range.selectNodeContents(editorRef.current);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n } else {\n range = sel.getRangeAt(0);\n }\n\n range.deleteContents();\n range.insertNode(node);\n \n const space = document.createTextNode(\"\\u00A0\");\n if (node.parentNode) {\n node.parentNode.insertBefore(space, node.nextSibling);\n }\n \n range.setStartAfter(space);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n } catch (error) {\n console.error(\"Insertion error:\", error);\n if (editorRef.current) {\n editorRef.current.appendChild(node);\n }\n }\n };\n\n const getCleanHtml = () => {\n if (!editorRef.current) return \"\";\n return editorRef.current.innerHTML;\n };\n\n // Helper function to unescape HTML entities\n const unescapeHtml = (html) => {\n if (!html) return '';\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = html;\n return txt.value;\n };\n\n const handleKeyDown = useCallback((e) => {\n // Handle Enter key\n if (e.key === 'Enter') {\n e.preventDefault();\n\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const node = range.startContainer;\n const parent = node.nodeType === 3 ? node.parentNode : node;\n\n // Check if we're in a list item\n const listItem = parent.closest('li');\n if (listItem) {\n const list = listItem.parentNode;\n const isOrderedList = list.tagName === 'OL';\n\n // Create a new list item\n const newItem = document.createElement('li');\n\n // If we're at the end of a list item, add a new one\n if (range.collapsed && range.endOffset === node.length) {\n // If it's empty, create a regular paragraph instead\n if (listItem.textContent.trim() === '') {\n document.execCommand('insertHTML', false, '<div><br></div>');\n // Move the cursor to the new line\n const newRange = document.createRange();\n const newDiv = editorRef.current.lastElementChild;\n newRange.setStart(newDiv, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n return;\n }\n\n // Insert new list item\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n // Move cursor to the new list item\n const newRange = document.createRange();\n newRange.setStart(newItem, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n } else {\n // If we're in the middle of text, split the list item\n const textBefore = node.textContent.substring(0, range.startOffset);\n const textAfter = node.textContent.substring(range.startOffset);\n\n // Update current item\n node.textContent = textBefore;\n\n // Insert new item after current one\n newItem.textContent = textAfter;\n\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n // Move cursor to the new list item\n const newRange = document.createRange();\n newRange.setStart(newItem.firstChild || newItem, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n } else {\n // Regular text, insert a new paragraph\n document.execCommand('insertHTML', false, '<div><br></div>');\n }\n\n triggerChange();\n return;\n }\n\n // Handle Ctrl/Cmd + B/I/U for bold/italic/underline\n if ((e.ctrlKey || e.metaKey) && e.key === \"b\") {\n e.preventDefault();\n exec(\"bold\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"i\") {\n e.preventDefault();\n exec(\"italic\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"u\") {\n e.preventDefault();\n exec(\"underline\");\n }\n }, [exec, triggerChange]);\n\n const confirmLink = () => {\n // Add protocol if missing\n let url = linkUrl.trim();\n if (url && !/^(https?:\\/\\/|mailto:|tel:)/i.test(url)) {\n url = `https://${url}`;\n }\n\n const safeUrl = escapeAttr(url);\n const safeText = escapeHtml(linkText || linkUrl);\n\n const sel = window.getSelection();\n sel.removeAllRanges();\n if (selectionRangeRef.current) {\n sel.addRange(selectionRangeRef.current);\n }\n\n const linkHtml = `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${safeText}</a>`;\n document.execCommand(\"insertHTML\", false, linkHtml);\n\n setLinkModalOpen(false);\n triggerChange();\n focus();\n selectionRangeRef.current = null;\n };\n\n const cancelLink = () => {\n setLinkModalOpen(false);\n selectionRangeRef.current = null;\n };\n\n const handleSelect = (type) => {\n exec(type === \"unordered\" ? \"insertUnorderedList\" : \"insertOrderedList\");\n };\n\n const onLineHeightChange = (value) => {\n if (!value) return;\n\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const editor = editorRef.current;\n if (!editor) return;\n\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const blocksToStyle = new Set();\n const blockTags = ['P', 'DIV', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'];\n\n const tempRange = range.cloneRange();\n\n while ((node = walker.nextNode())) {\n if (node.nodeType === 1 && blockTags.includes(node.tagName)) {\n blocksToStyle.add(node);\n } else if (node.nodeType === 3) {\n let parent = node.parentNode;\n while (parent && parent !== editor && !blockTags.includes(parent.tagName)) {\n parent = parent.parentNode;\n }\n if (parent && parent !== editor && blockTags.includes(parent.tagName)) {\n blocksToStyle.add(parent);\n }\n }\n }\n\n if (blocksToStyle.size > 0) {\n blocksToStyle.forEach(block => {\n block.style.lineHeight = value;\n });\n } else {\n let common = range.commonAncestorContainer;\n if (common.nodeType === 3) common = common.parentNode;\n\n while (common && common !== editor && !blockTags.includes(common.tagName)) {\n common = common.parentNode;\n }\n\n if (common && common !== editor) {\n common.style.lineHeight = value;\n } else if (editor) {\n document.execCommand('formatBlock', false, 'div');\n let newCommon = window.getSelection().getRangeAt(0).commonAncestorContainer;\n if (newCommon.nodeType === 3) newCommon = newCommon.parentNode;\n if (newCommon && newCommon !== editor) {\n newCommon.style.lineHeight = value;\n }\n }\n }\n\n try {\n sel.removeAllRanges();\n sel.addRange(tempRange);\n } catch (e) { }\n\n setCurrentLineHeight(value);\n triggerChange();\n focus();\n };\n\n const applyFontSize = (size) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const sizePx = `${size}px`;\n\n // Collapsed selection (cursor only): insert a styled zero-width span\n if (range.collapsed) {\n const span = document.createElement(\"span\");\n span.style.fontSize = sizePx;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n range.insertNode(span);\n\n const newRange = document.createRange();\n newRange.setStart(span.firstChild, 1);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n\n triggerChange();\n focus();\n return;\n }\n\n // Extended selection (highlighted text)\n try {\n const editor = editorRef.current;\n if (!editor) return;\n\n // We will iterate through all the text nodes in the selection\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const nodesToStyle = [];\n while ((node = walker.nextNode())) {\n nodesToStyle.push(node);\n }\n\n const savedRange = range.cloneRange();\n let lastInsertedNode = null;\n\n // Iterate through the selected text nodes and wrap them in spans\n for (const textNode of nodesToStyle) {\n const parent = textNode.parentNode;\n\n // This is important: check if the parent is a block-level element\n // like a list item or paragraph. If so, we want to style the block\n // itself to avoid breaking its structure.\n const isBlockLevel = ['P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'].includes(parent.tagName);\n\n if (isBlockLevel) {\n parent.style.fontSize = sizePx;\n } else {\n // For inline text, wrap the selected portion in a new span\n const startOffset = textNode === savedRange.startContainer ? savedRange.startOffset : 0;\n const endOffset = textNode === savedRange.endContainer ? savedRange.endOffset : textNode.length;\n\n const newSpan = document.createElement(\"span\");\n newSpan.style.fontSize = sizePx;\n newSpan.textContent = textNode.textContent.substring(startOffset, endOffset);\n\n const tempRange = document.createRange();\n tempRange.setStart(textNode, startOffset);\n tempRange.setEnd(textNode, endOffset);\n\n tempRange.deleteContents();\n tempRange.insertNode(newSpan);\n lastInsertedNode = newSpan;\n }\n }\n\n // After styling, we need to correctly position the cursor\n if (lastInsertedNode) {\n const newRange = document.createRange();\n newRange.setStartAfter(lastInsertedNode);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n } else {\n // If no nodes were wrapped (e.g., we styled a block), restore the original selection\n sel.removeAllRanges();\n sel.addRange(savedRange);\n }\n\n } catch (err) {\n console.error(\"Error applying font size:\", err);\n }\n\n triggerChange();\n focus();\n };\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const next = editorRef.current.innerHTML;\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n updateMetrics();\n }\n }, [onChange, updateMetrics]);\n\n const handleImageUpload = async (e) => {\n const file = e.target.files[0];\n if (!file) return;\n\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n e.target.value = null;\n }).catch((error) => {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n }\n };\n useEffect(() => {\n // If disabled is explicitly false, make sure the editor is not editable\n if (disabled === true) {\n setEditable(false);\n }\n }, [disabled]);\n\n const handleEditorClick = useCallback((e) => {\n setSelectionVersion(v => v + 1);\n // Check if the click is on a link\n const clickedLink = e.target.closest('a');\n\n if (clickedLink) {\n e.preventDefault();\n e.stopPropagation();\n window.open(clickedLink.href, '_blank');\n return;\n }\n\n // NEW: Check if click is on an image for resizing\n const clickedImg = e.target.closest('img');\n if (clickedImg && !clickedImg.closest('.rte-modal')) {\n setSelectedImage(clickedImg);\n } else if (!e.target.closest('.rte-image-toolbar')) {\n setSelectedImage(null);\n }\n\n\n // If disabled is true, prevent editing\n if (disabled === true) {\n e.preventDefault();\n return;\n }\n\n // Only allow setting editable to true if not disabled\n if (!editable && disabled !== true) {\n setEditable(true);\n setTimeout(() => {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n }, 0);\n }\n }, [editable, disabled]);\n\n const renderImageToolbar = () => {\n if (!selectedImage || !editorRef.current || !editable) return null;\n\n const editorRect = editorRef.current.getBoundingClientRect();\n const imgRect = selectedImage.getBoundingClientRect();\n\n const top = imgRect.top - editorRect.top + editorRef.current.scrollTop;\n const left = imgRect.left - editorRect.left + editorRef.current.scrollLeft;\n const width = imgRect.width;\n\n const handleAlignment = (align) => {\n const wrapper = selectedImage.closest('.image-container');\n if (wrapper) {\n // Remove all alignment classes first\n wrapper.classList.remove('image-align-left', 'image-align-center', 'image-align-right');\n // Add the new alignment class\n wrapper.classList.add(`image-align-${align}`);\n selectedImage.setAttribute('data-align', align);\n triggerChange();\n }\n };\n\n const removeImage = () => {\n const wrapper = selectedImage.closest('.image-container');\n if (wrapper) {\n wrapper.remove();\n setSelectedImage(null);\n triggerChange();\n }\n };\n\n const toggleSize = () => {\n const wrapper = selectedImage.closest('.image-container');\n if (wrapper) {\n const isSmall = wrapper.classList.contains('image-small');\n if (isSmall) {\n wrapper.classList.remove('image-small');\n } else {\n wrapper.classList.add('image-small');\n }\n triggerChange();\n }\n };\n\n return (\n <div \n className=\"rte-image-toolbar\"\n style={{ \n position: 'absolute', \n top: Math.max(0, top - 45), \n left: Math.max(0, left + width / 2 - 80),\n zIndex: 1000\n }}\n >\n <button type=\"button\" onClick={() => handleAlignment('left')} title=\"Align Left\">L</button>\n <button type=\"button\" onClick={() => handleAlignment('center')} title=\"Align Center\">C</button>\n <button type=\"button\" onClick={() => handleAlignment('right')} title=\"Align Right\">R</button>\n <button type=\"button\" onClick={toggleSize} title=\"Toggle 50% Width\">50%</button>\n <button type=\"button\" onClick={removeImage} className=\"danger\" title=\"Remove Image\">×</button>\n </div>\n );\n };\n\n \n\n return (\n <div className=\"rte-main-wrapper\" style={{ width: '100%', position: 'relative' }}>\n {label && <LabelComponent>{label}</LabelComponent>}\n <div\n style={{ position: 'relative' }}\n className={!showBorder ? \"\" : \"rte-container\"}\n onClick={handleEditorClick}\n onMouseOver={(e) => {\n const table = e.target.closest('table');\n if (table && editorRef.current.contains(table)) {\n setHoveredTable(table);\n }\n }}\n onMouseOut={(e) => {\n const table = e.target.closest('table');\n const related = e.relatedTarget;\n if (table && (!related || !table.contains(related)) && !related?.closest('.rte-table-delete-hover')) {\n setHoveredTable(null);\n }\n }}\n onDrop={handleDrop}\n onDragOver={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {/* Toolbar */}\n <div className=\"rte-toolbar\">\n {/* Bold */}\n <button\n type=\"button\"\n title=\"Bold\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n document.execCommand(\"bold\");\n handleInput();\n focus();\n }}\n className={`rte-toolbar-button ${isBold ? \"active\" : \"\"}`}\n >\n <FaBold size={14} />\n </button>\n\n {/* Italic */}\n <button\n type=\"button\"\n title=\"Italic\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n document.execCommand(\"italic\");\n handleInput();\n focus();\n }}\n className={`rte-toolbar-button ${isItalic ? \"active\" : \"\"}`}\n >\n <FaItalic size={14} />\n </button>\n\n {/* Underline */}\n <button\n type=\"button\"\n title=\"Underline\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n document.execCommand(\"underline\");\n handleInput();\n focus();\n }}\n className={`rte-toolbar-button ${isUnderline ? \"active\" : \"\"}`}\n >\n <FaUnderline size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Font Size */}\n <select\n value={currentFontSize}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n e.stopPropagation();\n const size = e.target.value;\n if (!size) return;\n applyFontSize(size);\n setCurrentFontSize(size);\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '70px' }}\n >\n {[8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 48].map((s) => (\n <option key={s} value={s}>{s}px</option>\n ))}\n </select>\n\n {/* Text Color */}\n <label title=\"Font Color\" className=\"rte-color-picker-label\">\n <FaFont size={14} style={{ color: fontColor }} />\n <input\n type=\"color\"\n value={fontColor}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onChange={(e) => {\n e.stopPropagation();\n handleColorChange(e.target.value);\n }}\n className=\"rte-color-input\"\n />\n </label>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Alignment */}\n <button\n type=\"button\"\n title=\"Align Left\"\n className={`rte-toolbar-button ${activeAlign === \"left\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyLeft\");\n setActiveAlign(\"left\");\n }}\n >\n <FaAlignLeft size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Center\"\n className={`rte-toolbar-button ${activeAlign === \"center\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyCenter\");\n setActiveAlign(\"center\");\n }}\n >\n <FaAlignCenter size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Right\"\n className={`rte-toolbar-button ${activeAlign === \"right\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyRight\");\n setActiveAlign(\"right\");\n }}\n >\n <FaAlignRight size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Lists */}\n <button\n type=\"button\"\n title=\"Unordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"unordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"unordered\" ? \"active\" : \"\"}`}\n >\n <FaListUl size={14} />\n </button>\n <button\n type=\"button\"\n title=\"Ordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"ordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"ordered\" ? \"active\" : \"\"}`}\n >\n <FaListOl size={14} />\n </button>\n\n {/* Line Height */}\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <select\n value={currentLineHeight}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n const height = e.target.value;\n if (height) {\n onLineHeightChange(height);\n setCurrentLineHeight(height);\n }\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '64px', paddingLeft: '24px' }}\n >\n <option value=\"\" disabled>↕</option>\n {['1', '1.15', '1.5', '2'].map((h) => (\n <option key={h} value={h}>{h}</option>\n ))}\n </select>\n <div style={{ position: 'absolute', left: '6px', pointerEvents: 'none', color: '#9ca3af' }}>\n <FaTextHeight size={12} />\n </div>\n </div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n \n <button\n type=\"button\"\n title=\"Add Link\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n addLink();\n }}\n >\n <span style={{ fontSize: '16px' }}>🔗</span>\n </button>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n style={{ display: \"none\" }}\n onChange={handleImageUpload}\n disabled={isUploading}\n />\n <button\n type=\"button\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n if (!isUploading) fileInputRef.current?.click();\n }}\n disabled={isUploading}\n title=\"Upload image\"\n >\n {isUploading ? (\n <div className=\"rte-spinner\" style={{ width: '14px', height: '14px', borderWidth: '2px' }}></div>\n ) : (\n <FaImage size={14} />\n )}\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Table */}\n <button\n type=\"button\"\n title=\"Insert Table\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n setTableModalOpen(true);\n }}\n >\n <FaTable size={14} />\n </button>\n\n {/* Video */}\n <button\n type=\"button\"\n title=\"Embed Video (YouTube, Vimeo, etc.)\"\n className={`rte-toolbar-button ${videoModalOpen ? 'active' : ''}`}\n onMouseDown={(e) => {\n e.preventDefault();\n saveSelection();\n setVideoModalOpen(true);\n }}\n >\n <FaVideo size={14} />\n </button>\n\n {/* Table Actions (Conditional) */}\n {(() => {\n if (typeof window === \"undefined\") return null;\n const sel = window.getSelection();\n // Robust check: inside cell OR the table itself is selected\n const isCell = sel && sel.rangeCount > 0 && sel.anchorNode && (findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH'));\n const isTable = sel && sel.rangeCount > 0 && sel.anchorNode && findParentTag(sel.anchorNode, 'TABLE');\n \n if (isCell || isTable) {\n return (\n <>\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n <button type=\"button\" title=\"Add Row Above\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowAbove'); }}>+R↑</button>\n <button type=\"button\" title=\"Add Row Below\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowBelow'); }}>+R↓</button>\n <button type=\"button\" title=\"Add Col Before\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColBefore'); }}>+C←</button>\n <button type=\"button\" title=\"Add Col After\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColAfter'); }}>+C→</button>\n <button type=\"button\" title=\"Merge Cells (Right)\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('mergeRight'); }}><FaObjectGroup size={14} /></button>\n <div style={{ display: 'flex', gap: '10px' }}>\n <button\n type=\"button\"\n title=\"Delete Row\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteRow'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Row</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Column\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteCol'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Col</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Table\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteTable'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Table</span>\n </button>\n</div>\n </>\n );\n }\n return null;\n })()}\n </div>\n {/* Editor Content Area */}\n <div\n ref={editorRef}\n contentEditable={editable && disabled !== true}\n suppressContentEditableWarning\n onInput={handleInput}\n onPaste={handlePaste}\n onDrop={handleDrop}\n onDragStart={(e) => e.preventDefault()}\n onDragOver={(e) => e.preventDefault()}\n onKeyDown={handleKeyDown}\n onClick={handleEditorClick}\n style={{\n minHeight: minHeight || '150px',\n maxHeight: maxHeight || '500px',\n paddingLeft: paddingLeft || '12px'\n }}\n className=\"rte-content\"\n />\n {renderImageToolbar()}\n\n \n {/* Footer with Character/Word Count */}\n <div className=\"rte-footer\">\n <div className=\"rte-footer-content\">\n <span className=\"rte-footer-item\"><b>{metrics.words}</b> words</span>\n <span className=\"rte-footer-separator\">•</span>\n <span className=\"rte-footer-item\"><b>{metrics.chars}</b> characters</span>\n </div>\n </div>\n {linkModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={cancelLink}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <h3 className=\"rte-modal-title\">Insert Link</h3>\n <div className=\"rte-modal-divider\"></div>\n <div className=\"rte-modal-body\">\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Link Text</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"e.g. Google\"\n value={linkText}\n onChange={(e) => setLinkText(e.target.value)}\n />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">URL</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"https://example.com\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && confirmLink()}\n autoFocus\n />\n </div>\n </div>\n <div className=\"rte-modal-divider\" style={{ margin: '8px 0 20px 0' }}></div>\n <div className=\"rte-modal-footer\">\n <button type=\"button\" className=\"rte-btn rte-btn-secondary\" onClick={cancelLink}>Cancel</button>\n <button type=\"button\" className=\"rte-btn rte-btn-primary\" onClick={confirmLink} disabled={!linkUrl}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Table Modal */}\n {tableModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setTableModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <h3 className=\"rte-modal-title\">Insert Table</h3>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Rows</label>\n <input type=\"number\" className=\"rte-input\" value={tableRows} onChange={(e) => setTableRows(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Columns</label>\n <input type=\"number\" className=\"rte-input\" value={tableCols} onChange={(e) => setTableCols(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setTableModalOpen(false)}>Cancel</button>\n <button type=\"button\" className=\"rte-button rte-button-primary\" onClick={insertTable}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Video Modal */}\n {videoModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setVideoModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <div className=\"rte-modal-header\">\n <h3 className=\"rte-modal-title\">Embed Video</h3>\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Paste Video URL (YouTube, Vimeo...) <span style={{ color: '#ef4444' }}>*</span></label>\n <input \n type=\"text\" \n className=\"rte-input\" \n value={videoUrl} \n onChange={(e) => setVideoUrl(e.target.value)} \n placeholder=\"Paste URL here...\" \n autoFocus \n onKeyDown={(e) => {\n if (e.key === 'Enter' && videoUrl.trim()) insertVideo();\n if (e.key === 'Escape') setVideoModalOpen(false);\n }}\n />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setVideoModalOpen(false)}>Cancel</button>\n <button \n type=\"button\" \n className=\"rte-button rte-button-primary\" \n onClick={() => {\n if (videoUrl.trim()) {\n insertVideo();\n }\n }}\n disabled={!videoUrl.trim()}\n >\n Embed Video\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Image Zoom Modal */}\n {imageModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={closeImageModal}>\n <div\n style={{ position: \"relative\", maxWidth: \"90%\", maxHeight: \"90%\" }}\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImageUrl}\n style={{\n width: \"100%\",\n maxHeight: \"90vh\",\n borderRadius: '12px',\n transform: `scale(${zoomLevel})`,\n transition: \"transform 0.2s ease\",\n boxShadow: '0 25px 50px -12px rgba(0,0,0,0.5)'\n }}\n alt=\"Zoomed\"\n />\n </div>\n </div>\n )}\n </div>\n\n {showEditButton && editable && (\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"12px\", marginTop: \"12px\" }}>\n <button\n type=\"button\"\n className=\"rte-button rte-button-secondary\"\n onClick={() => setEditable(false)}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"rte-button rte-button-primary\"\n onClick={() => {\n onChange && onChange(html);\n setEditable(false);\n }}\n >\n Save Changes\n </button>\n </div>\n )}\n </div>\n );\n}\n"],"names":["FaImage","className","size","color","style","React","createElement","display","alignItems","justifyContent","fontSize","dangerouslySetInnerHTML","__html","FaBold","FaItalic","FaUnderline","FaTextHeight","FaAlignCenter","FaAlignRight","FaAlignLeft","FaListOl","FaListUl","FaFont","FaTable","FaObjectGroup","FaTrash","FaVideo","isValidDraftFormat","content","blocks","entityMap","draftBlocksToHTML","console","warn","map","b","text","join","Spinner","LabelComponent","children","marginBottom","escapeHtml","str","String","replace","escapeAttr","URL_REGEX","RichTextEditor","onChange","showEditButton","onBlur","disabled","editable","initialEditable","value","isLoading","isList","label","showBorder","paddingLeft","minHeight","maxHeight","onImageUpload","editorRef","useRef","fileInputRef","scrollTopRef","html","setHtml","useState","linkModalOpen","setLinkModalOpen","linkUrl","setLinkUrl","linkText","setLinkText","selectionRangeRef","setEditable","lastSynchronizedHtmlRef","useEffect","currentListType","setCurrentListType","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","currentFontSize","setCurrentFontSize","currentLineHeight","setCurrentLineHeight","activeAlign","setActiveAlign","imageModalOpen","setImageModalOpen","selectedImageUrl","setSelectedImageUrl","zoomLevel","setZoomLevel","isUploading","setIsUploading","videoModalOpen","setVideoModalOpen","videoUrl","setVideoUrl","tableModalOpen","setTableModalOpen","hoveredTable","setHoveredTable","tableRows","setTableRows","tableCols","setTableCols","selectionVersion","setSelectionVersion","selectedImage","setSelectedImage","metrics","setMetrics","words","chars","updateMetrics","useCallback","current","innerText","cleanText","trim","split","length","openImageModal","url","scrollTop","closeImageModal","saveSelection","window","sel","getSelection","rangeCount","getRangeAt","cloneRange","handleZoomIn","prevZoom","handleZoomOut","Math","max","handleKeyDown","e","key","handleWheel","ctrlKey","preventDefault","deltaY","document","addEventListener","passive","removeEventListener","handleClick","v","deleteBtn","target","closest","stopPropagation","wrapper","parentNode","removeChild","triggerChange","editor","requestAnimationFrame","processExistingImages","newContent","unescapeHtml","innerHTML","error","next","getCleanHtml","isParentStyle","node","tagNames","nodeType","includes","tagName","fontWeight","Number","fontStyle","textDecoration","getAttribute","rgbToHex","rgb","result","match","slice","x","hex","parseInt","toString","handleGlobalSelectionSync","_editorRef$current","contains","anchorNode","listFound","nodeName","container","computedAlign","getComputedStyle","textAlign","range","collapsed","computedColor","setFontColor","queryCommandState","element","startContainer","parentElement","sizeValue","focus","exec","command","execCommand","fontColor","handleColorChange","addLink","selectedText","findParentTag","curr","tableAction","action","cell","row","table","newRowAbove","insertRow","rowIndex","i","cells","newCell","insertCell","border","padding","newRowBelow","cellIndex","rows","cellIndexAfter","deleteRow","remove","targetRowIndex","min","targetRow","targetCell","createRange","selectNodeContents","collapse","removeAllRanges","addRange","idx","deleteCell","_table$rows$rowIndex","targetColIndex","nextElementSibling","nextCell","colSpan","insertTable","cols","tableHtml","j","parseVideoUrl","ytRegExp","ytMatch","vimeoRegExp","vimeoMatch","dmRegExp","dmMatch","insertVideo","embedUrl","embedHtml","err","div","appendChild","querySelectorAll","forEach","img","existingWrapper","cursor","querySelector","align","cssText","setAttribute","dataset","hasDeleteButton","src","pointerEvents","title","onclick","currentTarget","nextSibling","insertBefore","insertImage","dataUrl","fileName","alt","insertNodeAtCursor","readFileAsDataURL","file","Promise","res","rej","reader","FileReader","onload","ev","onerror","readAsDataURL","handlePaste","clipboardData","items","item","kind","type","indexOf","getAsFile","uploadPromise","then","finalUrl","mediaUrl","name","catch","htmlData","getData","tempDiv","el","plainText","htmlToInsert","safeUrl","handleDrop","files","dataTransfer","imageFiles","Array","from","filter","startsWith","deleteContents","insertNode","space","createTextNode","setStartAfter","txt","selection","parent","listItem","list","newItem","endOffset","textContent","newRange","newDiv","lastElementChild","setStart","textBefore","substring","startOffset","textAfter","firstChild","metaKey","confirmLink","test","safeText","linkHtml","cancelLink","handleSelect","onLineHeightChange","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","acceptNode","intersectsNode","FILTER_ACCEPT","FILTER_REJECT","blocksToStyle","Set","blockTags","tempRange","nextNode","add","block","lineHeight","common","commonAncestorContainer","newCommon","applyFontSize","sizePx","span","nodesToStyle","push","savedRange","lastInsertedNode","textNode","isBlockLevel","endContainer","newSpan","setEnd","handleInput","handleImageUpload","handleEditorClick","clickedLink","open","href","clickedImg","setTimeout","renderImageToolbar","editorRect","getBoundingClientRect","imgRect","top","left","scrollLeft","width","handleAlignment","classList","removeImage","toggleSize","isSmall","position","zIndex","onClick","onMouseOver","onMouseOut","related","relatedTarget","onDrop","onDragOver","height","backgroundColor","margin","onMouseDown","s","h","ref","accept","_fileInputRef$current","click","borderWidth","isCell","isTable","Fragment","gap","contentEditable","suppressContentEditableWarning","onInput","onPaste","onDragStart","onKeyDown","placeholder","autoFocus","maxWidth","borderRadius","transform","transition","boxShadow","marginTop"],"mappings":"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","x_google_ignoreList":[4]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/icons.jsx","../src/utils.js","../src/Spinner.jsx","../src/Label.jsx","../node_modules/style-inject/dist/style-inject.es.js","../src/RichTextEditor.jsx"],"sourcesContent":["import React from 'react';\n\nexport const FaImage = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"></path></svg>` }} />\n );\n};\n\nexport const FaArrowDown = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"></path></svg>` }} />\n );\n};\n\nexport const FaBold = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 384 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"></path></svg>` }} />\n );\n};\n\nexport const FaItalic = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 320 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"></path></svg>` }} />\n );\n};\n\nexport const FaUnderline = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaTextHeight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignCenter = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignRight = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignJustify = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaAlignLeft = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaListOl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"></path></svg>` }} />\n );\n};\n\nexport const FaListUl = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"></path></svg>` }} />\n );\n};\n\nexport const FaFonticons = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"></path></svg>` }} />\n );\n};\n\nexport const FaFont = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"></path></svg>` }} />\n );\n};\n\nexport const FaLink = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"></path></svg>` }} />\n );\n};\n\nexport const FaTable = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M64 448c-35.3 0-64-28.7-64-64V128c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64zm96-288H64v64h96v-64zm0 96H64v64h96v-64zm0 96H64c0 17.7 14.3 32 32 32h64v-32zm128-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v96h96v-96zm160-192h-96v64h96v-64zm0 96h-96v64h96v-64zm0 96h-96v64h64c17.7 0 32-14.3 32-32v-32z\"></path></svg>` }} />\n );\n};\n\nexport const FaYoutube = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 576 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.781 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"></path></svg>` }} />\n );\n};\n\nexport const FaObjectGroup = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 512 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M480 320h-48v48c0 17.7-14.3 32-32 32h-48v32c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V160c0-26.5 21.5-48 48-48h32v-48c0-17.7 14.3-32 32-32h48V0h32c26.5 0 48 21.5 48 48v48h48c17.7 0 32 14.3 32 32v48h32c26.5 0 48 21.5 48 48v128c0 26.5-21.5 48-48 48z\"></path></svg>` }} />\n );\n};\n\nexport const FaTrash = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: `<svg stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" viewBox=\"0 0 448 512\" height=\"1em\" width=\"1em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"></path></svg>` }} />\n );\n};\n\n\nexport const FaVideo = ({ className, size, color, style }) => {\n return (\n <span className={className} style={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: size || '1em', color: color || 'inherit', ...style }} dangerouslySetInnerHTML={{ __html: '<svg stroke=\\\"currentColor\\\" fill=\\\"currentColor\\\" stroke-width=\\\"0\\\" viewBox=\\\"0 0 576 512\\\" height=\\\"1em\\\" width=\\\"1em\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.3 16.9 28.2V384c0 11.9-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V174.9l14.2-9.5 96-64c9.9-6.6 22.6-7.1 32.9-1.6z\\\"></path></svg>' }} />\n );\n};\n","// Basic ID generator\nexport const getRandomId = () => {\n return (\n Math.random().toString(36).substring(2, 15) +\n Math.random().toString(36).substring(2, 15)\n );\n};\n\n// DraftJS helper stubs\n// Since we are removing specific DraftJS dependencies for this package,\n// these serve as placeholders or basic HTML verifiers.\n\nexport const isValidDraftFormat = (content) => {\n if (typeof content !== \"object\" || content === null) return false;\n return !!(content.blocks && content.entityMap);\n};\n\n// A very basic fallback. Ideally, the user should pass HTML strings.\n// Dealing with full DraftJS->HTML conversion without the library is complex.\n// We assume for this package that if the legacy DraftJS format is passed,\n// the user might need to handle it or we expect HTML primarily.\nexport const draftBlocksToHTML = (content) => {\n console.warn(\n \"draftBlocksToHTML: DraftJS object detected but full conversion is simplified in this package.\",\n );\n // Return empty or try to extract text as a fallback\n if (content && content.blocks) {\n return content.blocks.map((b) => `<p>${b.text}</p>`).join(\"\");\n }\n return \"\";\n};\n","import React from 'react';\n\nconst Spinner = () => {\n return (\n <div className=\"rte-spinner-container\">\n <div className=\"rte-spinner\"></div>\n </div>\n );\n};\n\nexport default Spinner;\n","import React from 'react';\n\nconst LabelComponent = ({ children }) => {\n if (!children) return null;\n return (\n <label className=\"rte-label\" style={{ marginBottom: '4px', display: 'block' }}>\n {children}\n </label>\n );\n};\n\nexport default LabelComponent;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { FaImage, FaBold, FaItalic, FaUnderline, FaTextHeight, FaAlignCenter, FaAlignRight, FaAlignJustify, FaAlignLeft, FaListOl, FaListUl, FaFont, FaTable, FaYoutube, FaVideo, FaTrash, FaObjectGroup } from \"./icons\";\nimport { draftBlocksToHTML, isValidDraftFormat } from \"./utils\";\nimport Spinner from \"./Spinner\";\nimport LabelComponent from \"./Label\";\nimport \"./RichTextEditor.css\";\n\n// Helper functions for HTML escaping\nconst escapeHtml = (str) => {\n if (!str) return \"\";\n return String(str)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\\\"/g, \""\")\n .replace(/'/g, \"'\");\n};\n\nconst escapeAttr = (str) => escapeHtml(str).replace(/\"/g, \""\");\n\n// URL detection regex\nconst URL_REGEX = /(https?:\\/\\/[^\\s]+)/g;\n\nexport default function RichTextEditor({\n onChange,\n showEditButton,\n onBlur,\n disabled = false,\n editable: initialEditable = false,\n value,\n isLoading,\n isList = false,\n label,\n showBorder = true,\n paddingLeft,\n minHeight,\n maxHeight,\n onImageUpload,\n}) {\n\n const editorRef = useRef(null);\n const fileInputRef = useRef(null);\n const scrollTopRef = useRef(0);\n\n const [html, setHtml] = useState(\"\");\n const [linkModalOpen, setLinkModalOpen] = useState(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [linkText, setLinkText] = useState(\"\");\n const selectionRangeRef = useRef(null);\n const [editable, setEditable] = useState(initialEditable);\n const [editorFocused, setEditorFocused] = useState(false);\n const lastSynchronizedHtmlRef = useRef(\"\");\n\n useEffect(() => {\n setEditable(initialEditable);\n }, [initialEditable]);\n\n\n // NEW: Track current list type for dropdown\n const [currentListType, setCurrentListType] = useState(null);\n\n // NEW: Track active styles for toolbar buttons\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n\n // NEW: Track current font size\n const [currentFontSize, setCurrentFontSize] = useState(\"16\");\n\n // NEW: Track current line height\n const [currentLineHeight, setCurrentLineHeight] = useState(\"\");\n const [activeAlign, setActiveAlign] = useState(null);\n\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [selectedImageUrl, setSelectedImageUrl] = useState(\"\");\n const [zoomLevel, setZoomLevel] = useState(1);\n const [isUploading, setIsUploading] = useState(false);\n\n const [videoModalOpen, setVideoModalOpen] = useState(false);\n const [videoUrl, setVideoUrl] = useState(\"\");\n const [tableModalOpen, setTableModalOpen] = useState(false);\n const [hoveredTable, setHoveredTable] = useState(null);\n const [tableRows, setTableRows] = useState(3);\n const [tableCols, setTableCols] = useState(3);\n const [selectionVersion, setSelectionVersion] = useState(0);\n\n const [selectedImage, setSelectedImage] = useState(null);\n const [metrics, setMetrics] = useState({ words: 0, chars: 0 });\n\n const updateMetrics = useCallback(() => {\n if (!editorRef.current) return;\n // Calculate metrics immediately but outside of render path\n const text = editorRef.current.innerText || \"\";\n const cleanText = text.replace(/[\\n\\r]/g, ' ').trim();\n const words = cleanText ? cleanText.split(/\\s+/).length : 0;\n const chars = text.length;\n setMetrics({ words, chars });\n }, []);\n\n const openImageModal = (url) => {\n\n if (editorRef.current) {\n scrollTopRef.current = editorRef.current.scrollTop;\n }\n setSelectedImageUrl(url);\n setImageModalOpen(true);\n };\n\n const closeImageModal = () => {\n setImageModalOpen(false);\n setSelectedImageUrl(\"\");\n setZoomLevel(1);\n };\n\n const saveSelection = () => {\n if (typeof window === \"undefined\") return;\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n };\n\n const handleKeyUp = () => {\n saveSelection();\n setSelectionVersion(v => v + 1);\n };\n\n const handleZoomIn = () => {\n setZoomLevel((prevZoom) => prevZoom + 0.1);\n };\n\n const handleZoomOut = () => {\n setZoomLevel((prevZoom) => Math.max(0.1, prevZoom - 0.1));\n };\n\n // Effect to restore scroll position after modal closes\n useEffect(() => {\n if (!imageModalOpen && editorRef.current) {\n editorRef.current.scrollTop = scrollTopRef.current;\n }\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (!imageModalOpen) return;\n\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n closeImageModal();\n }\n };\n\n const handleWheel = (e) => {\n if (e.ctrlKey) {\n e.preventDefault();\n if (e.deltaY < 0) {\n handleZoomIn();\n } else {\n handleZoomOut();\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n window.addEventListener('wheel', handleWheel, { passive: false });\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('wheel', handleWheel);\n };\n }, [imageModalOpen]);\n\n useEffect(() => {\n if (editorRef.current && value && value !== lastSynchronizedHtmlRef.current) {\n requestAnimationFrame(() => processExistingMedia(editorRef.current));\n }\n }, [value]);\n\n\n // Runs whenever editable changes (toggles delete icon visibility)\n useEffect(() => {\n if (!editable) {\n setEditorFocused(false);\n }\n processExistingMedia(editorRef.current);\n }, [editable]);\n\n useEffect(() => {\n if (!editorRef.current) return;\n editorRef.current.querySelectorAll(\".image-container, .video-container\").forEach((container) => {\n updateMediaControlVisibility(container);\n });\n }, [editorFocused, editable]);\n\n useEffect(() => {\n // Only update if value is different from our last known synced state\n if (value && value !== lastSynchronizedHtmlRef.current) {\n try {\n let newContent = \"\";\n \n // Check if value is a Draft.js content state\n if (isValidDraftFormat(value)) {\n newContent = draftBlocksToHTML(value);\n } else if (typeof value === 'string') {\n // If value is already what we have in HTML state, skip unescaping\n if (value === html) {\n lastSynchronizedHtmlRef.current = value;\n return;\n }\n newContent = unescapeHtml(value);\n }\n\n if (newContent && newContent !== html) {\n lastSynchronizedHtmlRef.current = value;\n setHtml(newContent);\n if (editorRef.current && editorRef.current.innerHTML !== newContent) {\n editorRef.current.innerHTML = newContent;\n }\n requestAnimationFrame(() => processExistingMedia(editorRef.current));\n updateMetrics();\n }\n } catch (e) {\n console.error('Error processing editor content:', e);\n }\n } else if (!value && html) {\n setHtml('');\n lastSynchronizedHtmlRef.current = \"\";\n if (editorRef.current) {\n editorRef.current.innerHTML = '';\n updateMetrics();\n }\n }\n }, [value, initialEditable, updateMetrics]);\n\n\n const processExistingMedia = (container) => {\n if (!container) return;\n processExistingImages(container);\n processExistingVideos(container);\n };\n\n const getCleanHtml = () => {\n if (!editorRef.current) return \"\";\n const clone = editorRef.current.cloneNode(true);\n stripEditorChrome(clone);\n return clone.innerHTML;\n };\n\n // Trigger change manually\n const triggerChange = useCallback(() => {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n }, [onChange]);\n\n const handleChange = () => {\n if (!editorRef.current) return;\n onBlur && onBlur(getCleanHtml());\n };\n\n // Detect if selection is inside a list (ol or ul)\n const detectListType = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setCurrentListType(null);\n return;\n }\n let node = sel.anchorNode;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") {\n setCurrentListType(\"ordered\");\n return;\n }\n if (node.nodeName === \"UL\") {\n setCurrentListType(\"unordered\");\n return;\n }\n node = node.parentNode;\n }\n setCurrentListType(null);\n };\n\n // Helper to walk up DOM to find style tags or CSS style:\n const isParentStyle = (node, ...tagNames) => {\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1 && tagNames.includes(node.tagName)) return true;\n\n // Also check inline style for bold and italic:\n if (node.nodeType === 1 && node.style) {\n const style = node.style;\n if (\n tagNames.includes(\"bold\") &&\n (style.fontWeight === \"bold\" || Number(style.fontWeight) >= 600)\n )\n return true;\n if (tagNames.includes(\"italic\") && style.fontStyle === \"italic\")\n return true;\n if (\n tagNames.includes(\"underline\") &&\n style.textDecoration.includes(\"underline\")\n )\n return true;\n\n if (node.style && node.style.color) {\n return node.style.color;\n }\n\n // 2️⃣ Check for <font color=\"\"> (older HTML)\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n return false;\n };\n\n // Update style states based on selection or cursor position\n const updateStyleStates = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) {\n setIsBold(false);\n setIsItalic(false);\n setIsUnderline(false);\n setFontColor(\"#000000\"); // default\n return;\n }\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n const range = sel.getRangeAt(0);\n\n if (range.collapsed) {\n // Cursor only, check parent nodes\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n const computedStyles = window.getComputedStyle(container);\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n\n // ✅ Get computed color from container\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n\n } else {\n // Text selected, use execCommand state\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n\n // ✅ For selection, get color from selection's start container\n const container =\n sel.anchorNode.nodeType === 3\n ? sel.anchorNode.parentNode\n : sel.anchorNode;\n\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n }\n };\n\n // Helper to convert rgb() to hex\n function rgbToHex(rgb) {\n const result = rgb.match(/\\d+/g);\n if (!result) return \"#000000\";\n return (\n \"#\" +\n result\n .slice(0, 3)\n .map((x) => {\n const hex = parseInt(x, 10).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\n }\n\n const getColorAtCursor = () => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current) return null;\n\n let node = sel.anchorNode;\n if (node.nodeType === 3) node = node.parentNode;\n\n while (node && node !== editorRef.current) {\n if (node.nodeType === 1) {\n if (node.style && node.style.color) {\n return rgbToHex(node.style.color);\n }\n if (node.tagName === \"FONT\" && node.getAttribute(\"color\")) {\n return node.getAttribute(\"color\");\n }\n }\n node = node.parentNode;\n }\n\n const computedColor = window.getComputedStyle(\n sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode\n ).color;\n return rgbToHex(computedColor);\n };\n\n const stripEditorChrome = (root) => {\n root.querySelectorAll(\n \".image-delete-button, .video-delete-button, .video-edit-overlay, .media-resize-handles, .media-resize-handle\"\n ).forEach((element) => element.remove());\n return root;\n };\n\n const getMediaSizeLimits = () => {\n const maxWidth = editorRef.current\n ? editorRef.current.getBoundingClientRect().width - 24\n : 800;\n return {\n minWidth: 120,\n minHeight: 80,\n maxWidth,\n maxHeight: 720,\n };\n };\n\n const ensureImageMediaFrame = (imageContainer) => {\n if (!imageContainer) return null;\n\n let frame = imageContainer.querySelector(\":scope > .image-media-frame\");\n if (frame) return frame;\n\n frame = document.createElement(\"div\");\n frame.className = \"image-media-frame\";\n\n [\"width\", \"height\", \"marginLeft\", \"marginTop\", \"maxWidth\"].forEach((prop) => {\n if (imageContainer.style[prop]) {\n frame.style[prop] = imageContainer.style[prop];\n imageContainer.style[prop] = \"\";\n }\n });\n\n if (imageContainer.dataset.explicitHeight) {\n frame.dataset.explicitHeight = imageContainer.dataset.explicitHeight;\n delete imageContainer.dataset.explicitHeight;\n }\n\n const children = Array.from(imageContainer.children);\n imageContainer.appendChild(frame);\n children.forEach((child) => frame.appendChild(child));\n\n return frame;\n };\n\n const getImageMediaTarget = (imageContainer) =>\n ensureImageMediaFrame(imageContainer) || imageContainer;\n\n const applyImageMediaSize = (frame, width, height, edge) => {\n const img = frame.querySelector(\"img\");\n const isVertical = edge === \"top\" || edge === \"bottom\";\n\n frame.style.width = `${Math.round(width)}px`;\n frame.style.maxWidth = \"100%\";\n\n if (isVertical) {\n frame.style.height = `${Math.round(height)}px`;\n frame.dataset.explicitHeight = \"true\";\n if (img) {\n img.style.width = \"100%\";\n img.style.height = \"100%\";\n img.style.objectFit = \"contain\";\n }\n return;\n }\n\n if (!frame.dataset.explicitHeight) {\n frame.style.height = \"\";\n }\n\n if (img) {\n img.style.width = \"100%\";\n if (frame.dataset.explicitHeight) {\n img.style.height = \"100%\";\n img.style.objectFit = \"contain\";\n } else {\n img.style.height = \"auto\";\n img.style.objectFit = \"\";\n }\n }\n };\n\n const applyVideoMediaSize = (container, width, height) => {\n container.style.paddingBottom = \"0\";\n container.style.width = `${Math.round(width)}px`;\n container.style.maxWidth = \"100%\";\n container.style.height = `${Math.round(height)}px`;\n };\n\n const attachMediaResizeHandle = (container) => {\n if (!container || container.querySelector(\".media-resize-handles\")) return;\n\n const isVideo = container.classList.contains(\"video-container\");\n const resizeTarget = isVideo ? container : getImageMediaTarget(container);\n if (!resizeTarget) return;\n\n const handlesWrapper = document.createElement(\"div\");\n handlesWrapper.className = \"media-resize-handles\";\n handlesWrapper.setAttribute(\"contenteditable\", \"false\");\n\n const edges = [\n { edge: \"left\", title: \"Drag to resize width\" },\n { edge: \"right\", title: \"Drag to resize width\" },\n { edge: \"top\", title: \"Drag to resize height\" },\n { edge: \"bottom\", title: \"Drag to resize height\" },\n ];\n\n edges.forEach(({ edge, title }) => {\n const handle = document.createElement(\"div\");\n handle.className = `media-resize-handle media-resize-handle-${edge}`;\n handle.title = title;\n handle.setAttribute(\"contenteditable\", \"false\");\n handle.dataset.edge = edge;\n\n handle.addEventListener(\"mousedown\", (event) => {\n if (!editable) return;\n event.preventDefault();\n event.stopPropagation();\n\n const limits = getMediaSizeLimits();\n const rect = resizeTarget.getBoundingClientRect();\n const startX = event.clientX;\n const startY = event.clientY;\n const startWidth = rect.width;\n const startHeight = rect.height;\n const startMarginLeft = Number.parseFloat(resizeTarget.style.marginLeft) || 0;\n const startMarginTop = Number.parseFloat(resizeTarget.style.marginTop) || 0;\n\n if (isVideo) {\n resizeTarget.style.paddingBottom = \"0\";\n }\n\n const onMouseMove = (moveEvent) => {\n const deltaX = moveEvent.clientX - startX;\n const deltaY = moveEvent.clientY - startY;\n let nextWidth = startWidth;\n let nextHeight = startHeight;\n\n if (edge === \"right\") {\n nextWidth = startWidth + deltaX;\n } else if (edge === \"left\") {\n nextWidth = startWidth - deltaX;\n } else if (edge === \"bottom\") {\n nextHeight = startHeight + deltaY;\n } else if (edge === \"top\") {\n nextHeight = startHeight - deltaY;\n }\n\n nextWidth = Math.max(limits.minWidth, Math.min(nextWidth, limits.maxWidth));\n nextHeight = Math.max(limits.minHeight, Math.min(nextHeight, limits.maxHeight));\n\n if (edge === \"left\") {\n resizeTarget.style.marginLeft = `${Math.round(startMarginLeft + (startWidth - nextWidth))}px`;\n }\n\n if (edge === \"top\") {\n resizeTarget.style.marginTop = `${Math.round(startMarginTop + (startHeight - nextHeight))}px`;\n }\n\n if (isVideo) {\n applyVideoMediaSize(resizeTarget, nextWidth, nextHeight);\n } else {\n applyImageMediaSize(resizeTarget, nextWidth, nextHeight, edge);\n }\n };\n\n const onMouseUp = () => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n triggerChange();\n };\n\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n });\n\n handlesWrapper.appendChild(handle);\n });\n\n resizeTarget.appendChild(handlesWrapper);\n };\n\n const handleEditorFocus = () => {\n setEditorFocused(true);\n };\n\n const handleEditorBlur = () => {\n requestAnimationFrame(() => {\n if (!editorRef.current?.contains(document.activeElement)) {\n setEditorFocused(false);\n }\n });\n };\n\n const updateMediaControlVisibility = (container) => {\n const handles = container.querySelector(\".media-resize-handles\");\n if (handles instanceof HTMLElement) {\n handles.style.display = editable ? \"block\" : \"none\";\n handles.style.pointerEvents = editable ? \"auto\" : \"none\";\n }\n };\n\n const createMediaDeleteButton = (title, className, onRemove) => {\n const deleteBtn = document.createElement(\"button\");\n deleteBtn.type = \"button\";\n deleteBtn.innerHTML = \"×\";\n deleteBtn.className = className;\n deleteBtn.title = title;\n deleteBtn.setAttribute(\"contenteditable\", \"false\");\n deleteBtn.onclick = (event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove();\n };\n return deleteBtn;\n };\n\n\n // Listen for selection changes globally to update styles and list type in one pass\n useEffect(() => {\n const handleGlobalSelectionSync = () => {\n // Only sync if the editor has focus\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount || !editorRef.current?.contains(sel.anchorNode)) {\n return;\n }\n\n // 1. Detect List Type\n let node = sel.anchorNode;\n let listFound = null;\n while (node && node !== editorRef.current) {\n if (node.nodeName === \"OL\") { listFound = \"ordered\"; break; }\n if (node.nodeName === \"UL\") { listFound = \"unordered\"; break; }\n node = node.parentNode;\n }\n setCurrentListType(listFound);\n\n // 2. Update Style States\n const container = sel.anchorNode.nodeType === 3 ? sel.anchorNode.parentNode : sel.anchorNode;\n const computedAlign = window.getComputedStyle(container).textAlign;\n setActiveAlign(computedAlign);\n \n const range = sel.getRangeAt(0);\n if (range.collapsed) {\n setIsBold(isParentStyle(container, \"B\", \"STRONG\", \"bold\"));\n setIsItalic(isParentStyle(container, \"I\", \"EM\", \"italic\"));\n setIsUnderline(isParentStyle(container, \"U\", \"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n } else {\n setIsBold(document.queryCommandState(\"bold\"));\n setIsItalic(document.queryCommandState(\"italic\"));\n setIsUnderline(document.queryCommandState(\"underline\"));\n const computedColor = window.getComputedStyle(container).color;\n setFontColor(rgbToHex(computedColor));\n }\n\n // 3. Current Font Size\n const element = range.startContainer.parentElement.closest('[style*=\"font-size\"]');\n if (element) {\n const fontSize = window.getComputedStyle(element).fontSize;\n const sizeValue = fontSize ? parseInt(fontSize) : 16;\n setCurrentFontSize(sizeValue.toString());\n } else {\n setCurrentFontSize(\"16\");\n }\n };\n\n document.addEventListener(\"selectionchange\", handleGlobalSelectionSync);\n return () => {\n document.removeEventListener(\"selectionchange\", handleGlobalSelectionSync);\n };\n }, []);\n\n\n const focus = () => editorRef.current && editorRef.current.focus();\n\n const exec = (command, value = null) => {\n document.execCommand(command, false, value);\n triggerChange();\n focus();\n };\n\n const [fontColor, setFontColor] = useState(\"#000000\");\n\n const getActiveTextColor = () => getColorAtCursor() || fontColor;\n\n const handleColorChange = (color) => {\n setFontColor(color);\n exec(\"foreColor\", color);\n };\n\n const addLink = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n\n const selectedText = sel.toString();\n\n if (selectedText.length > 0) {\n setLinkText(selectedText);\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n } else {\n setLinkText(\"\");\n setLinkUrl(\"\");\n setLinkModalOpen(true);\n }\n };\n\n const findParentTag = (node, tagName) => {\n if (!node) return null;\n let curr = node;\n while (curr && curr !== editorRef.current) {\n if (curr.tagName === tagName) return curr;\n curr = curr.parentNode;\n }\n return null;\n };\n\n const tableAction = (action) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n \n const cell = findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH');\n if (!cell) return;\n \n const row = cell.parentNode;\n const table = row.parentNode.closest('table');\n \n switch (action) {\n case 'addRowAbove':\n const newRowAbove = table.insertRow(row.rowIndex);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowAbove.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addRowBelow':\n const newRowBelow = table.insertRow(row.rowIndex + 1);\n for (let i = 0; i < row.cells.length; i++) {\n const newCell = newRowBelow.insertCell(i);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColBefore':\n const cellIndex = cell.cellIndex;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndex);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'addColAfter':\n const cellIndexAfter = cell.cellIndex + 1;\n for (let i = 0; i < table.rows.length; i++) {\n const newCell = table.rows[i].insertCell(cellIndexAfter);\n newCell.style.border = \"1px solid #e5e7eb\";\n newCell.style.padding = \"12px\";\n newCell.innerHTML = \" \";\n }\n break;\n case 'deleteRow': {\n const rowIndex = row.rowIndex;\n const cellIndex = cell.cellIndex;\n table.deleteRow(rowIndex);\n if (table.rows.length === 0) {\n table.remove();\n } else {\n const targetRowIndex = Math.min(rowIndex, table.rows.length - 1);\n const targetRow = table.rows[targetRowIndex];\n const targetCell = targetRow.cells[Math.min(cellIndex, targetRow.cells.length - 1)];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'deleteCol': {\n const idx = cell.cellIndex;\n const rowIndex = row.rowIndex;\n for (let i = 0; i < table.rows.length; i++) {\n table.rows[i].deleteCell(idx);\n }\n if (table.rows[0].cells.length === 0) {\n table.remove();\n } else {\n const targetColIndex = Math.min(idx, table.rows[0].cells.length - 1);\n const targetCell = table.rows[rowIndex]?.cells[targetColIndex] || table.rows[0].cells[targetColIndex];\n if (targetCell) {\n const range = document.createRange();\n range.selectNodeContents(targetCell);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n setSelectionVersion(v => v + 1);\n }\n }\n break;\n }\n case 'mergeRight':\n if (cell.nextElementSibling) {\n const nextCell = cell.nextElementSibling;\n cell.colSpan = (cell.colSpan || 1) + (nextCell.colSpan || 1);\n nextCell.remove();\n }\n break;\n case 'deleteTable':\n table.remove();\n break;\n default:\n break;\n }\n triggerChange && triggerChange();\n };\n\n const insertTable = () => {\n const rows = parseInt(tableRows) || 3;\n const cols = parseInt(tableCols) || 3;\n let tableHtml = '<table style=\"width: 100%; border-collapse: collapse; border: 1px solid #e5e7eb; margin: 16px 0;\"><tbody>';\n for (let i = 0; i < rows; i++) {\n tableHtml += '<tr>';\n for (let j = 0; j < cols; j++) {\n tableHtml += '<td style=\"border: 1px solid #e5e7eb; padding: 12px; min-height: 20px;\"> </td>';\n }\n tableHtml += '</tr>';\n }\n tableHtml += '</tbody></table><p> </p>';\n \n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n document.execCommand(\"insertHTML\", false, tableHtml);\n setTableModalOpen(false);\n triggerChange && triggerChange();\n };\n\n const parseVideoUrl = (url) => {\n url = url.trim();\n if (!url) return null;\n\n // YouTube\n const ytRegExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|watch\\?vi=|\\&vi=)([^#\\&\\?]*).*/;\n const ytMatch = url.match(ytRegExp);\n if (ytMatch && ytMatch[2].length === 11) {\n return `https://www.youtube.com/embed/${ytMatch[2]}`;\n }\n\n // Vimeo\n const vimeoRegExp = /vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/;\n const vimeoMatch = url.match(vimeoRegExp);\n if (vimeoMatch && vimeoMatch[3]) {\n return `https://player.vimeo.com/video/${vimeoMatch[3]}`;\n }\n\n // DailyMotion\n const dmRegExp = /dailymotion\\.com\\/video\\/([a-zA-Z0-9]+)/;\n const dmMatch = url.match(dmRegExp);\n if (dmMatch && dmMatch[1]) {\n return `https://www.dailymotion.com/embed/video/${dmMatch[1]}`;\n }\n\n return null;\n };\n\n const insertVideo = () => {\n const embedUrl = parseVideoUrl(videoUrl);\n\n if (embedUrl) {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n\n if (selectionRangeRef.current) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(selectionRangeRef.current);\n }\n\n const embedHtml = `<div class=\"video-container\">\n <iframe \n src=\"${embedUrl}\" \n frameborder=\"0\" \n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" \n allowfullscreen\n ></iframe>\n </div><p> </p>`;\n \n try {\n document.execCommand(\"insertHTML\", false, embedHtml);\n } catch (err) {\n console.error(\"Failed to insert Video HTML:\", err);\n if (editorRef.current) {\n const div = document.createElement('div');\n div.innerHTML = embedHtml;\n editorRef.current.appendChild(div);\n }\n }\n setVideoModalOpen(false);\n setVideoUrl(\"\");\n triggerChange && triggerChange();\n requestAnimationFrame(() => processExistingMedia(editorRef.current));\n } else {\n console.warn(\"Invalid Video URL or Platform not supported\");\n }\n };\n\n\n const onFileInput = (e) => {\n const file = e.target.files && e.target.files[0];\n if (!file) return;\n readFileAsDataURL(file).then((dataUrl) => {\n insertImage(dataUrl, file.name);\n });\n e.target.value = null;\n };\n\n const processExistingVideos = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\".video-container\").forEach((videoContainer) => {\n if (!videoContainer.querySelector(\".video-delete-button\")) {\n const deleteBtn = createMediaDeleteButton(\n \"Remove video\",\n \"video-delete-button image-delete-button\",\n () => {\n videoContainer.remove();\n triggerChange && triggerChange();\n }\n );\n videoContainer.appendChild(deleteBtn);\n }\n\n attachMediaResizeHandle(videoContainer);\n updateMediaControlVisibility(videoContainer);\n });\n };\n\n const processExistingImages = (container) => {\n if (!container) return;\n\n container.querySelectorAll(\"img\").forEach((img) => {\n if (img.closest(\".rte-modal\")) return;\n\n const existingWrapper = img.closest(\".image-container\");\n if (existingWrapper) {\n existingWrapper.style.cursor = editable ? \"pointer\" : \"default\";\n const frame = ensureImageMediaFrame(existingWrapper);\n if (frame && !frame.querySelector(\".image-delete-button\")) {\n frame.appendChild(\n createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n existingWrapper.remove();\n triggerChange && triggerChange();\n }\n )\n );\n }\n attachMediaResizeHandle(existingWrapper);\n updateMediaControlVisibility(existingWrapper);\n return;\n }\n\n const wrapper = document.createElement(\"div\");\n const align = img.getAttribute(\"data-align\") || img.closest(\"[data-align]\")?.getAttribute(\"data-align\") || \"left\";\n wrapper.className = `image-container image-align-${align}`;\n wrapper.style.cursor = editable ? \"pointer\" : \"default\";\n\n const frame = document.createElement(\"div\");\n frame.className = \"image-media-frame\";\n\n if (img.getAttribute(\"width\") && !frame.style.width) {\n frame.style.width = `${img.getAttribute(\"width\")}px`;\n } else if (img.style.width && img.style.width.endsWith(\"px\")) {\n frame.style.width = img.style.width;\n }\n\n img.classList.add(\"rte-image\");\n img.setAttribute(\"data-align\", align);\n\n if (frame.style.width) {\n img.style.width = \"100%\";\n img.style.height = frame.dataset.explicitHeight ? \"100%\" : \"auto\";\n } else {\n img.style.width = \"\";\n img.style.height = \"auto\";\n }\n\n img.addEventListener(\"click\", (event) => {\n if (event.target.closest(\".image-delete-button, .media-resize-handle\")) return;\n openImageModal(img.src);\n });\n\n const deleteBtn = createMediaDeleteButton(\n \"Remove image\",\n \"image-delete-button\",\n () => {\n wrapper.remove();\n triggerChange && triggerChange();\n }\n );\n\n const { parentNode, nextSibling } = img;\n if (parentNode) {\n parentNode.removeChild(img);\n frame.appendChild(img);\n frame.appendChild(deleteBtn);\n wrapper.appendChild(frame);\n attachMediaResizeHandle(wrapper);\n\n if (nextSibling) {\n parentNode.insertBefore(wrapper, nextSibling);\n } else {\n parentNode.appendChild(wrapper);\n }\n }\n });\n };\n\n\n /* \n Advanced Tip: Use the 'onImageUpload' prop to handle file uploads to a server \n instead of using base64. If 'onImageUpload' is provided, it should return a URL string.\n */\n const insertImage = async (dataUrl, fileName) => {\n try {\n if (editable) {\n\n // Create container for the image\n const container = document.createElement('div');\n container.className = 'image-container image-align-left';\n\n const frame = document.createElement('div');\n frame.className = 'image-media-frame';\n\n // Create image element\n const img = document.createElement('img');\n img.src = dataUrl;\n img.alt = fileName || \"image\";\n img.addEventListener(\"click\", () => openImageModal(dataUrl));\n\n frame.appendChild(img);\n container.appendChild(frame);\n\n // Insert at cursor position\n insertNodeAtCursor(container);\n requestAnimationFrame(() => {\n processExistingMedia(editorRef.current);\n triggerChange();\n });\n }\n } catch (err) {\n console.error('Error inserting image:', err);\n }\n };\n\n const readFileAsDataURL = (file) =>\n new Promise((res, rej) => {\n const reader = new FileReader();\n reader.onload = (ev) => res(ev.target.result);\n reader.onerror = rej;\n reader.readAsDataURL(file);\n });\n\n // NEW: Function to auto-convert URLs to links\n const autoConvertUrlsToLinks = (html) => {\n return html.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url);\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${url}</a>`;\n });\n };\n\n const handlePaste = useCallback((e) => {\n const clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData) return;\n\n // Check for image in clipboard\n const items = clipboardData.items || [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n e.preventDefault();\n const file = item.getAsFile();\n if (file) {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n // if the user's onImageUpload resolves to `{ mediaUrl: '...' }` like the previous MediaUpload, handle it\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name || 'pasted-image');\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error uploading pasted image:', error);\n setIsUploading(false);\n });\n }\n return;\n }\n }\n\n const htmlData = clipboardData.getData('text/html');\n if (htmlData && htmlData.trim()) {\n e.preventDefault();\n\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = htmlData;\n\n tempDiv.querySelectorAll('script, meta, link').forEach(el => el.remove());\n\n document.execCommand('styleWithCSS', false, true);\n document.execCommand('insertHTML', false, tempDiv.innerHTML);\n document.execCommand('styleWithCSS', false, false);\n\n triggerChange();\n focus();\n return;\n }\n\n const plainText = clipboardData.getData('text/plain');\n if (plainText) {\n e.preventDefault();\n\n let htmlToInsert = escapeHtml(plainText);\n\n htmlToInsert = htmlToInsert.replace(URL_REGEX, (url) => {\n const safeUrl = escapeAttr(url.trim());\n return `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue; text-decoration: underline;\">${escapeHtml(url)}</a>`;\n });\n\n htmlToInsert = htmlToInsert.replace(/\\n/g, '<br>');\n\n document.execCommand('insertHTML', false, htmlToInsert);\n triggerChange();\n focus();\n }\n }, [insertImage, triggerChange]);\n\n const handleDrop = async (e) => {\n if (!editable) return;\n e.preventDefault();\n e.stopPropagation();\n\n const files = e.dataTransfer.files;\n if (!files || files.length === 0) return;\n\n const imageFiles = Array.from(files).filter(file => file.type.startsWith(\"image/\"));\n\n for (const file of imageFiles) {\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n }).catch((error) => {\n console.error('Error processing image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error processing image:', error);\n setIsUploading(false);\n }\n }\n };\n\n const insertNodeAtCursor = (node) => {\n try {\n const sel = window.getSelection();\n let range;\n\n if (!sel || sel.rangeCount === 0 || !editorRef.current.contains(sel.anchorNode)) {\n editorRef.current.focus();\n \n // Move cursor to end if not already in editor\n range = document.createRange();\n range.selectNodeContents(editorRef.current);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n } else {\n range = sel.getRangeAt(0);\n }\n\n range.deleteContents();\n range.insertNode(node);\n \n const space = document.createTextNode(\"\\u00A0\");\n if (node.parentNode) {\n node.parentNode.insertBefore(space, node.nextSibling);\n }\n \n range.setStartAfter(space);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n } catch (error) {\n console.error(\"Insertion error:\", error);\n if (editorRef.current) {\n editorRef.current.appendChild(node);\n }\n }\n };\n\n // Helper function to unescape HTML entities\n const unescapeHtml = (html) => {\n if (!html) return '';\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = html;\n return txt.value;\n };\n\n const isCursorAtEndOfListItem = (range, listItem) => {\n const suffixRange = document.createRange();\n suffixRange.setStart(range.startContainer, range.startOffset);\n suffixRange.setEnd(listItem, listItem.childNodes.length);\n return suffixRange.toString().replace(/\\u200B/g, \"\").length === 0;\n };\n\n const prepareListItemForTyping = (listItem, selection) => {\n const activeColor = getActiveTextColor();\n const newRange = document.createRange();\n\n if (activeColor && activeColor.toLowerCase() !== \"#000000\") {\n const span = document.createElement(\"span\");\n span.style.color = activeColor;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n listItem.appendChild(span);\n newRange.setStart(span.firstChild, 1);\n } else {\n listItem.appendChild(document.createTextNode(\"\\u200B\"));\n newRange.setStart(listItem.firstChild, 1);\n }\n\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n };\n\n const handleKeyDown = useCallback((e) => {\n // Handle Enter key\n if (e.key === 'Enter') {\n e.preventDefault();\n\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const node = range.startContainer;\n const parent = node.nodeType === 3 ? node.parentNode : node;\n\n // Check if we're in a list item\n const listItem = parent.closest('li');\n if (listItem) {\n const list = listItem.parentNode;\n\n // Create a new list item\n const newItem = document.createElement('li');\n\n // If we're at the end of a list item, add a new one\n if (range.collapsed && isCursorAtEndOfListItem(range, listItem)) {\n // If it's empty, create a regular paragraph instead\n if (listItem.textContent.replace(/\\u200B/g, '').trim() === '') {\n document.execCommand('insertHTML', false, '<div><br></div>');\n // Move the cursor to the new line\n const newRange = document.createRange();\n const newDiv = editorRef.current.lastElementChild;\n newRange.setStart(newDiv, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n triggerChange();\n return;\n }\n\n // Insert new list item\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n prepareListItemForTyping(newItem, selection);\n } else {\n // If we're in the middle of text, split the list item while preserving formatting\n const afterRange = document.createRange();\n afterRange.setStart(range.startContainer, range.startOffset);\n afterRange.setEnd(listItem, listItem.childNodes.length);\n const movedFragment = afterRange.extractContents();\n newItem.appendChild(movedFragment);\n\n if (listItem.nextSibling) {\n list.insertBefore(newItem, listItem.nextSibling);\n } else {\n list.appendChild(newItem);\n }\n\n if (!newItem.textContent.replace(/\\u200B/g, '').trim()) {\n newItem.textContent = \"\";\n prepareListItemForTyping(newItem, selection);\n } else {\n const newRange = document.createRange();\n newRange.setStart(newItem, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n } else {\n // Regular text, insert a new paragraph\n document.execCommand('insertHTML', false, '<div><br></div>');\n }\n\n triggerChange();\n return;\n }\n\n // Handle Ctrl/Cmd + B/I/U for bold/italic/underline\n if ((e.ctrlKey || e.metaKey) && e.key === \"b\") {\n e.preventDefault();\n exec(\"bold\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"i\") {\n e.preventDefault();\n exec(\"italic\");\n } else if ((e.ctrlKey || e.metaKey) && e.key === \"u\") {\n e.preventDefault();\n exec(\"underline\");\n }\n }, [exec, triggerChange, fontColor]);\n\n const confirmLink = () => {\n // Add protocol if missing\n let url = linkUrl.trim();\n if (url && !/^(https?:\\/\\/|mailto:|tel:)/i.test(url)) {\n url = `https://${url}`;\n }\n\n const safeUrl = escapeAttr(url);\n const safeText = escapeHtml(linkText || linkUrl);\n\n const sel = window.getSelection();\n sel.removeAllRanges();\n if (selectionRangeRef.current) {\n sel.addRange(selectionRangeRef.current);\n }\n\n const linkHtml = `<a href=\"${safeUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color: blue;\">${safeText}</a>`;\n document.execCommand(\"insertHTML\", false, linkHtml);\n\n setLinkModalOpen(false);\n triggerChange();\n focus();\n selectionRangeRef.current = null;\n };\n\n const cancelLink = () => {\n setLinkModalOpen(false);\n selectionRangeRef.current = null;\n };\n\n const handleSelect = (type) => {\n exec(type === \"unordered\" ? \"insertUnorderedList\" : \"insertOrderedList\");\n };\n\n const onLineHeightChange = (value) => {\n if (!value) return;\n\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const editor = editorRef.current;\n if (!editor) return;\n\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const blocksToStyle = new Set();\n const blockTags = ['P', 'DIV', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'];\n\n const tempRange = range.cloneRange();\n\n while ((node = walker.nextNode())) {\n if (node.nodeType === 1 && blockTags.includes(node.tagName)) {\n blocksToStyle.add(node);\n } else if (node.nodeType === 3) {\n let parent = node.parentNode;\n while (parent && parent !== editor && !blockTags.includes(parent.tagName)) {\n parent = parent.parentNode;\n }\n if (parent && parent !== editor && blockTags.includes(parent.tagName)) {\n blocksToStyle.add(parent);\n }\n }\n }\n\n if (blocksToStyle.size > 0) {\n blocksToStyle.forEach(block => {\n block.style.lineHeight = value;\n });\n } else {\n let common = range.commonAncestorContainer;\n if (common.nodeType === 3) common = common.parentNode;\n\n while (common && common !== editor && !blockTags.includes(common.tagName)) {\n common = common.parentNode;\n }\n\n if (common && common !== editor) {\n common.style.lineHeight = value;\n } else if (editor) {\n document.execCommand('formatBlock', false, 'div');\n let newCommon = window.getSelection().getRangeAt(0).commonAncestorContainer;\n if (newCommon.nodeType === 3) newCommon = newCommon.parentNode;\n if (newCommon && newCommon !== editor) {\n newCommon.style.lineHeight = value;\n }\n }\n }\n\n try {\n sel.removeAllRanges();\n sel.addRange(tempRange);\n } catch (e) { }\n\n setCurrentLineHeight(value);\n triggerChange();\n focus();\n };\n\n const applyFontSize = (size) => {\n const sel = window.getSelection();\n if (!sel || !sel.rangeCount) return;\n\n const range = sel.getRangeAt(0);\n const sizePx = `${size}px`;\n\n // Collapsed selection (cursor only): insert a styled zero-width span\n if (range.collapsed) {\n const span = document.createElement(\"span\");\n span.style.fontSize = sizePx;\n span.appendChild(document.createTextNode(\"\\u200B\"));\n range.insertNode(span);\n\n const newRange = document.createRange();\n newRange.setStart(span.firstChild, 1);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n\n triggerChange();\n focus();\n return;\n }\n\n // Extended selection (highlighted text)\n try {\n const editor = editorRef.current;\n if (!editor) return;\n\n // We will iterate through all the text nodes in the selection\n const walker = document.createTreeWalker(\n editor,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode: (node) => {\n return range.intersectsNode(node)\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_REJECT;\n },\n },\n false\n );\n\n let node;\n const nodesToStyle = [];\n while ((node = walker.nextNode())) {\n nodesToStyle.push(node);\n }\n\n const savedRange = range.cloneRange();\n let lastInsertedNode = null;\n\n // Iterate through the selected text nodes and wrap them in spans\n for (const textNode of nodesToStyle) {\n const parent = textNode.parentNode;\n\n // This is important: check if the parent is a block-level element\n // like a list item or paragraph. If so, we want to style the block\n // itself to avoid breaking its structure.\n const isBlockLevel = ['P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'LI', 'BLOCKQUOTE'].includes(parent.tagName);\n\n if (isBlockLevel) {\n parent.style.fontSize = sizePx;\n } else {\n // For inline text, wrap the selected portion in a new span\n const startOffset = textNode === savedRange.startContainer ? savedRange.startOffset : 0;\n const endOffset = textNode === savedRange.endContainer ? savedRange.endOffset : textNode.length;\n\n const newSpan = document.createElement(\"span\");\n newSpan.style.fontSize = sizePx;\n newSpan.textContent = textNode.textContent.substring(startOffset, endOffset);\n\n const tempRange = document.createRange();\n tempRange.setStart(textNode, startOffset);\n tempRange.setEnd(textNode, endOffset);\n\n tempRange.deleteContents();\n tempRange.insertNode(newSpan);\n lastInsertedNode = newSpan;\n }\n }\n\n // After styling, we need to correctly position the cursor\n if (lastInsertedNode) {\n const newRange = document.createRange();\n newRange.setStartAfter(lastInsertedNode);\n newRange.collapse(true);\n sel.removeAllRanges();\n sel.addRange(newRange);\n } else {\n // If no nodes were wrapped (e.g., we styled a block), restore the original selection\n sel.removeAllRanges();\n sel.addRange(savedRange);\n }\n\n } catch (err) {\n console.error(\"Error applying font size:\", err);\n }\n\n triggerChange();\n focus();\n };\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const next = getCleanHtml();\n setHtml(next);\n lastSynchronizedHtmlRef.current = next;\n onChange && onChange(next);\n updateMetrics();\n }\n }, [onChange, updateMetrics]);\n\n const handleImageUpload = async (e) => {\n const file = e.target.files[0];\n if (!file) return;\n\n try {\n setIsUploading(true);\n const uploadPromise = onImageUpload\n ? onImageUpload(file)\n : readFileAsDataURL(file);\n\n uploadPromise.then((url) => {\n if (url) {\n const finalUrl = typeof url === 'object' && url !== null && url.mediaUrl ? url.mediaUrl : url;\n insertImage(finalUrl, file.name);\n }\n setIsUploading(false);\n e.target.value = null;\n }).catch((error) => {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n });\n } catch (error) {\n console.error('Error uploading image:', error);\n setIsUploading(false);\n }\n };\n useEffect(() => {\n // If disabled is explicitly false, make sure the editor is not editable\n if (disabled === true) {\n setEditable(false);\n }\n }, [disabled]);\n\n const handleEditorClick = useCallback((e) => {\n setSelectionVersion(v => v + 1);\n\n const deleteBtn = e.target.closest(\n 'button[title=\"Remove image\"], button[title=\"Remove video\"]'\n );\n if (deleteBtn && editable && editorFocused) {\n e.preventDefault();\n e.stopPropagation();\n const wrapper = deleteBtn.closest('.image-container, .video-container');\n if (wrapper) {\n wrapper.remove();\n triggerChange();\n }\n return;\n }\n\n // Check if the click is on a link\n const clickedLink = e.target.closest('a');\n\n if (clickedLink) {\n e.preventDefault();\n e.stopPropagation();\n window.open(clickedLink.href, '_blank');\n return;\n }\n\n // NEW: Check if click is on an image for resizing\n const clickedImg = e.target.closest('img');\n if (clickedImg && !clickedImg.closest('.rte-modal')) {\n setSelectedImage(clickedImg);\n } else if (!e.target.closest('.rte-image-toolbar')) {\n setSelectedImage(null);\n }\n\n\n // If disabled is true, prevent editing\n if (disabled === true) {\n e.preventDefault();\n return;\n }\n\n // Only allow setting editable to true if not disabled\n if (!editable && disabled !== true) {\n setEditable(true);\n setTimeout(() => {\n if (editorRef.current) {\n editorRef.current.focus();\n }\n }, 0);\n }\n }, [editable, disabled, editorFocused, triggerChange]);\n\n const renderImageToolbar = () => {\n if (!selectedImage || !editorRef.current || !editable) return null;\n\n const editorRect = editorRef.current.getBoundingClientRect();\n const imgRect = selectedImage.getBoundingClientRect();\n\n const top = imgRect.top - editorRect.top + editorRef.current.scrollTop;\n const left = imgRect.left - editorRect.left + editorRef.current.scrollLeft;\n const width = imgRect.width;\n\n const handleAlignment = (align) => {\n const wrapper = selectedImage.closest('.image-container');\n if (wrapper) {\n // Remove all alignment classes first\n wrapper.classList.remove('image-align-left', 'image-align-center', 'image-align-right');\n // Add the new alignment class\n wrapper.classList.add(`image-align-${align}`);\n selectedImage.setAttribute('data-align', align);\n triggerChange();\n }\n };\n\n const removeImage = () => {\n const wrapper = selectedImage.closest('.image-container');\n if (wrapper) {\n wrapper.remove();\n setSelectedImage(null);\n triggerChange();\n }\n };\n\n const toggleSize = () => {\n const wrapper = selectedImage.closest('.image-container');\n if (wrapper) {\n const isSmall = wrapper.classList.contains('image-small');\n if (isSmall) {\n wrapper.classList.remove('image-small');\n } else {\n wrapper.classList.add('image-small');\n }\n triggerChange();\n }\n };\n\n return (\n <div \n className=\"rte-image-toolbar\"\n style={{ \n position: 'absolute', \n top: Math.max(0, top - 45), \n left: Math.max(0, left + width / 2 - 80),\n zIndex: 1000\n }}\n >\n <button type=\"button\" onClick={() => handleAlignment('left')} title=\"Align Left\">L</button>\n <button type=\"button\" onClick={() => handleAlignment('center')} title=\"Align Center\">C</button>\n <button type=\"button\" onClick={() => handleAlignment('right')} title=\"Align Right\">R</button>\n <button type=\"button\" onClick={toggleSize} title=\"Toggle 50% Width\">50%</button>\n <button type=\"button\" onClick={removeImage} className=\"danger\" title=\"Remove Image\">×</button>\n </div>\n );\n };\n\n if (isLoading) {\n return <Spinner />;\n }\n\n return (\n <div className=\"rte-main-wrapper\" style={{ width: '100%', position: 'relative' }}>\n {label && <LabelComponent>{label}</LabelComponent>}\n <div\n style={{ position: 'relative' }}\n className={!showBorder ? \"\" : \"rte-container\"}\n onClick={handleEditorClick}\n onMouseOver={(e) => {\n const table = e.target.closest('table');\n if (table && editorRef.current.contains(table)) {\n setHoveredTable(table);\n }\n }}\n onMouseOut={(e) => {\n const table = e.target.closest('table');\n const related = e.relatedTarget;\n if (table && (!related || !table.contains(related)) && !related?.closest('.rte-table-delete-hover')) {\n setHoveredTable(null);\n }\n }}\n onDrop={handleDrop}\n onDragOver={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n {/* Toolbar */}\n <div className=\"rte-toolbar\">\n {/* Bold */}\n <button\n type=\"button\"\n title=\"Bold\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n document.execCommand(\"bold\");\n handleInput();\n focus();\n }}\n className={`rte-toolbar-button ${isBold ? \"active\" : \"\"}`}\n >\n <FaBold size={14} />\n </button>\n\n {/* Italic */}\n <button\n type=\"button\"\n title=\"Italic\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n document.execCommand(\"italic\");\n handleInput();\n focus();\n }}\n className={`rte-toolbar-button ${isItalic ? \"active\" : \"\"}`}\n >\n <FaItalic size={14} />\n </button>\n\n {/* Underline */}\n <button\n type=\"button\"\n title=\"Underline\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n document.execCommand(\"underline\");\n handleInput();\n focus();\n }}\n className={`rte-toolbar-button ${isUnderline ? \"active\" : \"\"}`}\n >\n <FaUnderline size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Font Size */}\n <select\n value={currentFontSize}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n e.stopPropagation();\n const size = e.target.value;\n if (!size) return;\n applyFontSize(size);\n setCurrentFontSize(size);\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '70px' }}\n >\n {[8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 48].map((s) => (\n <option key={s} value={s}>{s}px</option>\n ))}\n </select>\n\n {/* Text Color */}\n <label title=\"Font Color\" className=\"rte-color-picker-label\">\n <FaFont size={14} style={{ color: fontColor }} />\n <input\n type=\"color\"\n value={fontColor}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onChange={(e) => {\n e.stopPropagation();\n handleColorChange(e.target.value);\n }}\n className=\"rte-color-input\"\n />\n </label>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Alignment */}\n <button\n type=\"button\"\n title=\"Align Left\"\n className={`rte-toolbar-button ${activeAlign === \"left\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyLeft\");\n setActiveAlign(\"left\");\n }}\n >\n <FaAlignLeft size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Center\"\n className={`rte-toolbar-button ${activeAlign === \"center\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyCenter\");\n setActiveAlign(\"center\");\n }}\n >\n <FaAlignCenter size={14} />\n </button>\n\n <button\n type=\"button\"\n title=\"Align Right\"\n className={`rte-toolbar-button ${activeAlign === \"right\" ? \"active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n exec(\"justifyRight\");\n setActiveAlign(\"right\");\n }}\n >\n <FaAlignRight size={14} />\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Lists */}\n <button\n type=\"button\"\n title=\"Unordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"unordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"unordered\" ? \"active\" : \"\"}`}\n >\n <FaListUl size={14} />\n </button>\n <button\n type=\"button\"\n title=\"Ordered List\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleSelect(\"ordered\");\n }}\n className={`rte-toolbar-button ${currentListType === \"ordered\" ? \"active\" : \"\"}`}\n >\n <FaListOl size={14} />\n </button>\n\n {/* Line Height */}\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <select\n value={currentLineHeight}\n onMouseDown={(e) => e.stopPropagation()}\n onChange={(e) => {\n e.preventDefault();\n const height = e.target.value;\n if (height) {\n onLineHeightChange(height);\n setCurrentLineHeight(height);\n }\n focus();\n }}\n className=\"rte-toolbar-select\"\n style={{ width: '64px', paddingLeft: '24px' }}\n >\n <option value=\"\" disabled>↕</option>\n {['1', '1.15', '1.5', '2'].map((h) => (\n <option key={h} value={h}>{h}</option>\n ))}\n </select>\n <div style={{ position: 'absolute', left: '6px', pointerEvents: 'none', color: '#9ca3af' }}>\n <FaTextHeight size={12} />\n </div>\n </div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n \n <button\n type=\"button\"\n title=\"Add Link\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n addLink();\n }}\n >\n <span style={{ fontSize: '16px' }}>🔗</span>\n </button>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n style={{ display: \"none\" }}\n onChange={handleImageUpload}\n disabled={isUploading}\n />\n <button\n type=\"button\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n if (!isUploading) fileInputRef.current?.click();\n }}\n disabled={isUploading}\n title=\"Upload image\"\n >\n {isUploading ? (\n <div className=\"rte-spinner\" style={{ width: '14px', height: '14px', borderWidth: '2px' }}></div>\n ) : (\n <FaImage size={14} />\n )}\n </button>\n\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n\n {/* Table */}\n <button\n type=\"button\"\n title=\"Insert Table\"\n className=\"rte-toolbar-button\"\n onMouseDown={(e) => {\n e.preventDefault();\n const sel = window.getSelection();\n if (sel && sel.rangeCount > 0) {\n selectionRangeRef.current = sel.getRangeAt(0).cloneRange();\n }\n setTableModalOpen(true);\n }}\n >\n <FaTable size={14} />\n </button>\n\n {/* Video */}\n <button\n type=\"button\"\n title=\"Embed Video (YouTube, Vimeo, etc.)\"\n className={`rte-toolbar-button ${videoModalOpen ? 'active' : ''}`}\n onMouseDown={(e) => {\n e.preventDefault();\n saveSelection();\n setVideoModalOpen(true);\n }}\n >\n <FaVideo size={14} />\n </button>\n\n {/* Table Actions (Conditional) */}\n {(() => {\n if (typeof window === \"undefined\") return null;\n const sel = window.getSelection();\n // Robust check: inside cell OR the table itself is selected\n const isCell = sel && sel.rangeCount > 0 && sel.anchorNode && (findParentTag(sel.anchorNode, 'TD') || findParentTag(sel.anchorNode, 'TH'));\n const isTable = sel && sel.rangeCount > 0 && sel.anchorNode && findParentTag(sel.anchorNode, 'TABLE');\n \n if (isCell || isTable) {\n return (\n <>\n <div style={{ width: '1px', height: '20px', backgroundColor: '#e5e7eb', margin: '0 4px' }}></div>\n <button type=\"button\" title=\"Add Row Above\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowAbove'); }}>+R↑</button>\n <button type=\"button\" title=\"Add Row Below\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addRowBelow'); }}>+R↓</button>\n <button type=\"button\" title=\"Add Col Before\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColBefore'); }}>+C←</button>\n <button type=\"button\" title=\"Add Col After\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('addColAfter'); }}>+C→</button>\n <button type=\"button\" title=\"Merge Cells (Right)\" className=\"rte-toolbar-button\" onMouseDown={(e) => { e.preventDefault(); tableAction('mergeRight'); }}><FaObjectGroup size={14} /></button>\n <div style={{ display: 'flex', gap: '10px' }}>\n <button\n type=\"button\"\n title=\"Delete Row\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteRow'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Row</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Column\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteCol'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Col</span>\n </button>\n\n <button\n type=\"button\"\n title=\"Delete Table\"\n className=\"rte-toolbar-button rte-toolbar-button-danger\"\n onMouseDown={(e) => { e.preventDefault(); tableAction('deleteTable'); }}\n >\n <FaTrash size={12} />\n <span style={{ fontSize: '10px' }}>Table</span>\n </button>\n</div>\n </>\n );\n }\n return null;\n })()}\n </div>\n {/* Editor Content Area */}\n <div\n ref={editorRef}\n contentEditable={editable && disabled !== true}\n suppressContentEditableWarning\n onInput={handleInput}\n onPaste={handlePaste}\n onDrop={handleDrop}\n onDragStart={(e) => e.preventDefault()}\n onDragOver={(e) => e.preventDefault()}\n onKeyDown={handleKeyDown}\n onClick={handleEditorClick}\n onFocus={handleEditorFocus}\n onBlur={handleEditorBlur}\n style={{\n minHeight: minHeight || '150px',\n maxHeight: maxHeight || '500px',\n paddingLeft: paddingLeft || '12px'\n }}\n className={`rte-content${editable ? \" rte-is-editable\" : \"\"}${editorFocused ? \" rte-is-focused\" : \"\"}`}\n />\n {renderImageToolbar()}\n\n \n {/* Footer with Character/Word Count */}\n <div className=\"rte-footer\">\n <div className=\"rte-footer-content\">\n <span className=\"rte-footer-item\"><b>{metrics.words}</b> words</span>\n <span className=\"rte-footer-separator\">•</span>\n <span className=\"rte-footer-item\"><b>{metrics.chars}</b> characters</span>\n </div>\n </div>\n {linkModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={cancelLink}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <h3 className=\"rte-modal-title\">Insert Link</h3>\n <div className=\"rte-modal-divider\"></div>\n <div className=\"rte-modal-body\">\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Link Text</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"e.g. Google\"\n value={linkText}\n onChange={(e) => setLinkText(e.target.value)}\n />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">URL</label>\n <input\n type=\"text\"\n className=\"rte-input\"\n placeholder=\"https://example.com\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => e.key === 'Enter' && confirmLink()}\n autoFocus\n />\n </div>\n </div>\n <div className=\"rte-modal-divider\" style={{ margin: '8px 0 20px 0' }}></div>\n <div className=\"rte-modal-footer\">\n <button type=\"button\" className=\"rte-btn rte-btn-secondary\" onClick={cancelLink}>Cancel</button>\n <button type=\"button\" className=\"rte-btn rte-btn-primary\" onClick={confirmLink} disabled={!linkUrl}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Table Modal */}\n {tableModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setTableModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <h3 className=\"rte-modal-title\">Insert Table</h3>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Rows</label>\n <input type=\"number\" className=\"rte-input\" value={tableRows} onChange={(e) => setTableRows(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Columns</label>\n <input type=\"number\" className=\"rte-input\" value={tableCols} onChange={(e) => setTableCols(e.target.value)} min=\"1\" max=\"10\" />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setTableModalOpen(false)}>Cancel</button>\n <button type=\"button\" className=\"rte-button rte-button-primary\" onClick={insertTable}>Insert</button>\n </div>\n </div>\n </div>\n )}\n\n {/* Video Modal */}\n {videoModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={() => setVideoModalOpen(false)}>\n <div className=\"rte-modal\" onClick={(e) => e.stopPropagation()}>\n <div className=\"rte-modal-header\">\n <h3 className=\"rte-modal-title\">Embed Video</h3>\n </div>\n <div className=\"rte-form-group\">\n <label className=\"rte-label\">Paste Video URL (YouTube, Vimeo...) <span style={{ color: '#ef4444' }}>*</span></label>\n <input \n type=\"text\" \n className=\"rte-input\" \n value={videoUrl} \n onChange={(e) => setVideoUrl(e.target.value)} \n placeholder=\"Paste URL here...\" \n autoFocus \n onKeyDown={(e) => {\n if (e.key === 'Enter' && videoUrl.trim()) insertVideo();\n if (e.key === 'Escape') setVideoModalOpen(false);\n }}\n />\n </div>\n <div className=\"rte-modal-actions\">\n <button type=\"button\" className=\"rte-button rte-button-secondary\" onClick={() => setVideoModalOpen(false)}>Cancel</button>\n <button \n type=\"button\" \n className=\"rte-button rte-button-primary\" \n onClick={() => {\n if (videoUrl.trim()) {\n insertVideo();\n }\n }}\n disabled={!videoUrl.trim()}\n >\n Embed Video\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Image Zoom Modal */}\n {imageModalOpen && (\n <div className=\"rte-modal-overlay\" onClick={closeImageModal}>\n <div\n style={{ position: \"relative\", maxWidth: \"90%\", maxHeight: \"90%\" }}\n onClick={(e) => e.stopPropagation()}\n >\n <img\n src={selectedImageUrl}\n style={{\n width: \"100%\",\n maxHeight: \"90vh\",\n borderRadius: '12px',\n transform: `scale(${zoomLevel})`,\n transition: \"transform 0.2s ease\",\n boxShadow: '0 25px 50px -12px rgba(0,0,0,0.5)'\n }}\n alt=\"Zoomed\"\n />\n </div>\n </div>\n )}\n </div>\n\n {showEditButton && editable && (\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: \"12px\", marginTop: \"12px\" }}>\n <button\n type=\"button\"\n className=\"rte-button rte-button-secondary\"\n onClick={() => setEditable(false)}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"rte-button rte-button-primary\"\n onClick={() => {\n onChange && onChange(html);\n setEditable(false);\n }}\n >\n Save Changes\n </button>\n </div>\n )}\n </div>\n );\n}\n"],"names":["FaImage","className","size","color","style","React","createElement","display","alignItems","justifyContent","fontSize","dangerouslySetInnerHTML","__html","FaBold","FaItalic","FaUnderline","FaTextHeight","FaAlignCenter","FaAlignRight","FaAlignLeft","FaListOl","FaListUl","FaFont","FaTable","FaObjectGroup","FaTrash","FaVideo","isValidDraftFormat","content","blocks","entityMap","draftBlocksToHTML","console","warn","map","b","text","join","Spinner","LabelComponent","children","marginBottom","escapeHtml","str","String","replace","escapeAttr","URL_REGEX","RichTextEditor","onChange","showEditButton","onBlur","disabled","editable","initialEditable","value","isLoading","isList","label","showBorder","paddingLeft","minHeight","maxHeight","onImageUpload","editorRef","useRef","fileInputRef","scrollTopRef","html","setHtml","useState","linkModalOpen","setLinkModalOpen","linkUrl","setLinkUrl","linkText","setLinkText","selectionRangeRef","setEditable","editorFocused","setEditorFocused","lastSynchronizedHtmlRef","useEffect","currentListType","setCurrentListType","isBold","setIsBold","isItalic","setIsItalic","isUnderline","setIsUnderline","currentFontSize","setCurrentFontSize","currentLineHeight","setCurrentLineHeight","activeAlign","setActiveAlign","imageModalOpen","setImageModalOpen","selectedImageUrl","setSelectedImageUrl","zoomLevel","setZoomLevel","isUploading","setIsUploading","videoModalOpen","setVideoModalOpen","videoUrl","setVideoUrl","tableModalOpen","setTableModalOpen","hoveredTable","setHoveredTable","tableRows","setTableRows","tableCols","setTableCols","selectionVersion","setSelectionVersion","selectedImage","setSelectedImage","metrics","setMetrics","words","chars","updateMetrics","useCallback","current","innerText","cleanText","trim","split","length","openImageModal","url","scrollTop","closeImageModal","saveSelection","window","sel","getSelection","rangeCount","getRangeAt","cloneRange","handleZoomIn","prevZoom","handleZoomOut","Math","max","handleKeyDown","e","key","handleWheel","ctrlKey","preventDefault","deltaY","document","addEventListener","passive","removeEventListener","requestAnimationFrame","processExistingMedia","querySelectorAll","forEach","container","updateMediaControlVisibility","newContent","unescapeHtml","innerHTML","error","processExistingImages","processExistingVideos","getCleanHtml","clone","cloneNode","stripEditorChrome","triggerChange","next","isParentStyle","node","tagNames","nodeType","includes","tagName","fontWeight","Number","fontStyle","textDecoration","getAttribute","parentNode","rgbToHex","rgb","result","match","slice","x","hex","parseInt","toString","getColorAtCursor","anchorNode","computedColor","getComputedStyle","root","element","remove","getMediaSizeLimits","maxWidth","getBoundingClientRect","width","minWidth","ensureImageMediaFrame","imageContainer","frame","querySelector","prop","dataset","explicitHeight","Array","from","appendChild","child","getImageMediaTarget","applyImageMediaSize","height","edge","img","isVertical","round","objectFit","applyVideoMediaSize","paddingBottom","attachMediaResizeHandle","isVideo","classList","contains","resizeTarget","handlesWrapper","setAttribute","edges","title","handle","event","stopPropagation","limits","rect","startX","clientX","startY","clientY","startWidth","startHeight","startMarginLeft","parseFloat","marginLeft","startMarginTop","marginTop","onMouseMove","moveEvent","deltaX","nextWidth","nextHeight","min","onMouseUp","handleEditorFocus","handleEditorBlur","_editorRef$current","activeElement","handles","HTMLElement","pointerEvents","createMediaDeleteButton","onRemove","deleteBtn","type","onclick","handleGlobalSelectionSync","_editorRef$current2","listFound","nodeName","computedAlign","textAlign","range","collapsed","setFontColor","queryCommandState","startContainer","parentElement","closest","sizeValue","focus","exec","command","execCommand","fontColor","getActiveTextColor","handleColorChange","addLink","selectedText","findParentTag","curr","tableAction","action","cell","row","table","newRowAbove","insertRow","rowIndex","i","cells","newCell","insertCell","border","padding","newRowBelow","cellIndex","rows","cellIndexAfter","deleteRow","targetRowIndex","targetRow","targetCell","createRange","selectNodeContents","collapse","removeAllRanges","addRange","v","idx","deleteCell","_table$rows$rowIndex","targetColIndex","nextElementSibling","nextCell","colSpan","insertTable","cols","tableHtml","j","parseVideoUrl","ytRegExp","ytMatch","vimeoRegExp","vimeoMatch","dmRegExp","dmMatch","insertVideo","embedUrl","embedHtml","err","div","videoContainer","_img$closest","existingWrapper","cursor","wrapper","align","endsWith","add","target","src","nextSibling","removeChild","insertBefore","insertImage","dataUrl","fileName","alt","insertNodeAtCursor","readFileAsDataURL","file","Promise","res","rej","reader","FileReader","onload","ev","onerror","readAsDataURL","handlePaste","clipboardData","items","item","kind","indexOf","getAsFile","uploadPromise","then","finalUrl","mediaUrl","name","catch","htmlData","getData","tempDiv","el","plainText","htmlToInsert","safeUrl","handleDrop","files","dataTransfer","imageFiles","filter","startsWith","deleteContents","insertNode","space","createTextNode","setStartAfter","txt","isCursorAtEndOfListItem","listItem","suffixRange","setStart","startOffset","setEnd","childNodes","prepareListItemForTyping","selection","activeColor","newRange","toLowerCase","span","firstChild","parent","list","newItem","textContent","newDiv","lastElementChild","afterRange","movedFragment","extractContents","metaKey","confirmLink","test","safeText","linkHtml","cancelLink","handleSelect","onLineHeightChange","editor","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","acceptNode","intersectsNode","FILTER_ACCEPT","FILTER_REJECT","blocksToStyle","Set","blockTags","tempRange","nextNode","block","lineHeight","common","commonAncestorContainer","newCommon","applyFontSize","sizePx","nodesToStyle","push","savedRange","lastInsertedNode","textNode","isBlockLevel","endOffset","endContainer","newSpan","substring","handleInput","handleImageUpload","handleEditorClick","clickedLink","open","href","clickedImg","setTimeout","renderImageToolbar","editorRect","imgRect","top","left","scrollLeft","handleAlignment","removeImage","toggleSize","isSmall","position","zIndex","onClick","onMouseOver","onMouseOut","related","relatedTarget","onDrop","onDragOver","backgroundColor","margin","onMouseDown","s","h","ref","accept","_fileInputRef$current","click","borderWidth","isCell","isTable","Fragment","gap","contentEditable","suppressContentEditableWarning","onInput","onPaste","onDragStart","onKeyDown","onFocus","placeholder","autoFocus","borderRadius","transform","transition","boxShadow"],"mappings":";;;;AAEO,MAAMA,OAAO,GAAGA,CAAC;EAAEC,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC5D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,wfAAA;AAA2f;AAAE,GAAE,CAAC;AAEptB,CAAC;AAQM,MAAMC,MAAM,GAAGA,CAAC;EAAEZ,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC3D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,yeAAA;AAA4e;AAAE,GAAE,CAAC;AAErsB,CAAC;AAEM,MAAME,QAAQ,GAAGA,CAAC;EAAEb,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC7D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,0XAAA;AAA6X;AAAE,GAAE,CAAC;AAEtlB,CAAC;AAEM,MAAMG,WAAW,GAAGA,CAAC;EAAEd,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAChE,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,2gBAAA;AAA8gB;AAAE,GAAE,CAAC;AAEvuB,CAAC;AAEM,MAAMI,YAAY,GAAGA,CAAC;EAAEf,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EACjE,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,ynBAAA;AAA4nB;AAAE,GAAE,CAAC;AAEr1B,CAAC;AAEM,MAAMK,aAAa,GAAGA,CAAC;EAAEhB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAClE,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,ioBAAA;AAAooB;AAAE,GAAE,CAAC;AAE71B,CAAC;AAEM,MAAMM,YAAY,GAAGA,CAAC;EAAEjB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EACjE,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,ipBAAA;AAAopB;AAAE,GAAE,CAAC;AAE72B,CAAC;AAQM,MAAMO,WAAW,GAAGA,CAAC;EAAElB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAChE,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,yoBAAA;AAA4oB;AAAE,GAAE,CAAC;AAEr2B,CAAC;AAEM,MAAMQ,QAAQ,GAAGA,CAAC;EAAEnB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC7D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,83CAAA;AAAi4C;AAAE,GAAE,CAAC;AAE1lD,CAAC;AAEM,MAAMS,QAAQ,GAAGA,CAAC;EAAEpB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC7D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,qkBAAA;AAAwkB;AAAE,GAAE,CAAC;AAEjyB,CAAC;AAQM,MAAMU,MAAM,GAAGA,CAAC;EAAErB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC3D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,kfAAA;AAAqf;AAAE,GAAE,CAAC;AAE9sB,CAAC;AAQM,MAAMW,OAAO,GAAGA,CAAC;EAAEtB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC5D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,sfAAA;AAAyf;AAAE,GAAE,CAAC;AAEltB,CAAC;AAQM,MAAMY,aAAa,GAAGA,CAAC;EAAEvB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAClE,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,qaAAA;AAAwa;AAAE,GAAE,CAAC;AAEjoB,CAAC;AAEM,MAAMa,OAAO,GAAGA,CAAC;EAAExB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC5D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE,CAAA,oZAAA;AAAuZ;AAAE,GAAE,CAAC;AAEhnB,CAAC;AAGM,MAAMc,OAAO,GAAGA,CAAC;EAAEzB,SAAS;EAAEC,IAAI;EAAEC,KAAK;AAAEC,EAAAA;AAAM,CAAC,KAAK;EAC5D,oBACEC,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAEA,SAAU;AAACG,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,aAAa;AAAEC,MAAAA,UAAU,EAAE,QAAQ;AAAEC,MAAAA,cAAc,EAAE,QAAQ;MAAEC,QAAQ,EAAER,IAAI,IAAI,KAAK;MAAEC,KAAK,EAAEA,KAAK,IAAI,SAAS;MAAE,GAAGC;KAAQ;AAACO,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE;AAA8b;AAAE,GAAE,CAAC;AAEvpB,CAAC;;ACzHD;;AAQA;AACA;AACA;;AAEO,MAAMe,kBAAkB,GAAIC,OAAO,IAAK;EAC7C,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;EACjE,OAAO,CAAC,EAAEA,OAAO,CAACC,MAAM,IAAID,OAAO,CAACE,SAAS,CAAC;AAChD,CAAC;;AAED;AACA;AACA;AACA;AACO,MAAMC,iBAAiB,GAAIH,OAAO,IAAK;AAC5CI,EAAAA,OAAO,CAACC,IAAI,CACV,+FACF,CAAC;AACD;AACA,EAAA,IAAIL,OAAO,IAAIA,OAAO,CAACC,MAAM,EAAE;AAC7B,IAAA,OAAOD,OAAO,CAACC,MAAM,CAACK,GAAG,CAAEC,CAAC,IAAK,CAAA,GAAA,EAAMA,CAAC,CAACC,IAAI,CAAA,IAAA,CAAM,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;AAC/D,EAAA;AACA,EAAA,OAAO,EAAE;AACX,CAAC;;AC5BD,MAAMC,OAAO,GAAGA,MAAM;EAClB,oBACIjC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAuB,eAClCI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;AAAa,GAAM,CACjC,CAAC;AAEd,CAAC;;ACND,MAAMsC,cAAc,GAAGA,CAAC;AAAEC,EAAAA;AAAS,CAAC,KAAK;AACrC,EAAA,IAAI,CAACA,QAAQ,EAAE,OAAO,IAAI;EAC1B,oBACInC,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOL,IAAAA,SAAS,EAAC,WAAW;AAACG,IAAAA,KAAK,EAAE;AAAEqC,MAAAA,YAAY,EAAE,KAAK;AAAElC,MAAAA,OAAO,EAAE;AAAQ;AAAE,GAAA,EACzEiC,QACE,CAAC;AAEhB,CAAC;;ACTD,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAY,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;AClBA;AACA,MAAME,UAAU,GAAIC,GAAG,IAAK;AAC1B,EAAA,IAAI,CAACA,GAAG,EAAE,OAAO,EAAE;AACnB,EAAA,OAAOC,MAAM,CAACD,GAAG,CAAC,CACfE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CACtBA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CACrBA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CACrBA,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CACxBA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC5B,CAAC;AAED,MAAMC,UAAU,GAAIH,GAAG,IAAKD,UAAU,CAACC,GAAG,CAAC,CAACE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAEnE;AACA,MAAME,SAAS,GAAG,sBAAsB;AAEzB,SAASC,cAAcA,CAAC;EACrCC,QAAQ;EACRC,cAAc;EACdC,MAAM;AACNC,EAAAA,QAAQ,GAAG,KAAK;EAChBC,QAAQ,EAAEC,eAAe,GAAG,KAAK;EACjCC,KAAK;EACLC,SAAS;AACTC,EAAAA,MAAM,GAAG,KAAK;EACdC,KAAK;AACLC,EAAAA,UAAU,GAAG,IAAI;EACjBC,WAAW;EACXC,SAAS;EACTC,SAAS;AACTC,EAAAA;AACF,CAAC,EAAE;AAED,EAAA,MAAMC,SAAS,GAAGC,YAAM,CAAC,IAAI,CAAC;AAC9B,EAAA,MAAMC,YAAY,GAAGD,YAAM,CAAC,IAAI,CAAC;AACjC,EAAA,MAAME,YAAY,GAAGF,YAAM,CAAC,CAAC,CAAC;EAE9B,MAAM,CAACG,IAAI,EAAEC,OAAO,CAAC,GAAGC,cAAQ,CAAC,EAAE,CAAC;EACpC,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGF,cAAQ,CAAC,KAAK,CAAC;EACzD,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAGJ,cAAQ,CAAC,EAAE,CAAC;EAC1C,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAGN,cAAQ,CAAC,EAAE,CAAC;AAC5C,EAAA,MAAMO,iBAAiB,GAAGZ,YAAM,CAAC,IAAI,CAAC;EACtC,MAAM,CAACZ,QAAQ,EAAEyB,WAAW,CAAC,GAAGR,cAAQ,CAAChB,eAAe,CAAC;EACzD,MAAM,CAACyB,aAAa,EAAEC,gBAAgB,CAAC,GAAGV,cAAQ,CAAC,KAAK,CAAC;AACzD,EAAA,MAAMW,uBAAuB,GAAGhB,YAAM,CAAC,EAAE,CAAC;AAE1CiB,EAAAA,eAAS,CAAC,MAAM;IACdJ,WAAW,CAACxB,eAAe,CAAC;AAC9B,EAAA,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;;AAGrB;EACA,MAAM,CAAC6B,eAAe,EAAEC,kBAAkB,CAAC,GAAGd,cAAQ,CAAC,IAAI,CAAC;;AAE5D;EACA,MAAM,CAACe,MAAM,EAAEC,SAAS,CAAC,GAAGhB,cAAQ,CAAC,KAAK,CAAC;EAC3C,MAAM,CAACiB,QAAQ,EAAEC,WAAW,CAAC,GAAGlB,cAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM,CAACmB,WAAW,EAAEC,cAAc,CAAC,GAAGpB,cAAQ,CAAC,KAAK,CAAC;;AAErD;EACA,MAAM,CAACqB,eAAe,EAAEC,kBAAkB,CAAC,GAAGtB,cAAQ,CAAC,IAAI,CAAC;;AAE5D;EACA,MAAM,CAACuB,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGxB,cAAQ,CAAC,EAAE,CAAC;EAC9D,MAAM,CAACyB,WAAW,EAAEC,cAAc,CAAC,GAAG1B,cAAQ,CAAC,IAAI,CAAC;EAEpD,MAAM,CAAC2B,cAAc,EAAEC,iBAAiB,CAAC,GAAG5B,cAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAAC6B,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG9B,cAAQ,CAAC,EAAE,CAAC;EAC5D,MAAM,CAAC+B,SAAS,EAAEC,YAAY,CAAC,GAAGhC,cAAQ,CAAC,CAAC,CAAC;EAC7C,MAAM,CAACiC,WAAW,EAAEC,cAAc,CAAC,GAAGlC,cAAQ,CAAC,KAAK,CAAC;EAErD,MAAM,CAACmC,cAAc,EAAEC,iBAAiB,CAAC,GAAGpC,cAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAACqC,QAAQ,EAAEC,WAAW,CAAC,GAAGtC,cAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM,CAACuC,cAAc,EAAEC,iBAAiB,CAAC,GAAGxC,cAAQ,CAAC,KAAK,CAAC;EAC3D,MAAM,CAACyC,YAAY,EAAEC,eAAe,CAAC,GAAG1C,cAAQ,CAAC,IAAI,CAAC;EACtD,MAAM,CAAC2C,SAAS,EAAEC,YAAY,CAAC,GAAG5C,cAAQ,CAAC,CAAC,CAAC;EAC7C,MAAM,CAAC6C,SAAS,EAAEC,YAAY,CAAC,GAAG9C,cAAQ,CAAC,CAAC,CAAC;EAC7C,MAAM,CAAC+C,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGhD,cAAQ,CAAC,CAAC,CAAC;EAE3D,MAAM,CAACiD,aAAa,EAAEC,gBAAgB,CAAC,GAAGlD,cAAQ,CAAC,IAAI,CAAC;AACxD,EAAA,MAAM,CAACmD,OAAO,EAAEC,UAAU,CAAC,GAAGpD,cAAQ,CAAC;AAAEqD,IAAAA,KAAK,EAAE,CAAC;AAAEC,IAAAA,KAAK,EAAE;AAAE,GAAC,CAAC;AAE9D,EAAA,MAAMC,aAAa,GAAGC,iBAAW,CAAC,MAAM;AACtC,IAAA,IAAI,CAAC9D,SAAS,CAAC+D,OAAO,EAAE;AACxB;IACA,MAAM3F,IAAI,GAAG4B,SAAS,CAAC+D,OAAO,CAACC,SAAS,IAAI,EAAE;AAC9C,IAAA,MAAMC,SAAS,GAAG7F,IAAI,CAACS,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAACqF,IAAI,EAAE;AACrD,IAAA,MAAMP,KAAK,GAAGM,SAAS,GAAGA,SAAS,CAACE,KAAK,CAAC,KAAK,CAAC,CAACC,MAAM,GAAG,CAAC;AAC3D,IAAA,MAAMR,KAAK,GAAGxF,IAAI,CAACgG,MAAM;AACzBV,IAAAA,UAAU,CAAC;MAAEC,KAAK;AAAEC,MAAAA;AAAM,KAAC,CAAC;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMS,cAAc,GAAIC,GAAG,IAAK;IAE9B,IAAItE,SAAS,CAAC+D,OAAO,EAAE;AACrB5D,MAAAA,YAAY,CAAC4D,OAAO,GAAG/D,SAAS,CAAC+D,OAAO,CAACQ,SAAS;AACpD,IAAA;IACAnC,mBAAmB,CAACkC,GAAG,CAAC;IACxBpC,iBAAiB,CAAC,IAAI,CAAC;EACzB,CAAC;EAED,MAAMsC,eAAe,GAAGA,MAAM;IAC5BtC,iBAAiB,CAAC,KAAK,CAAC;IACxBE,mBAAmB,CAAC,EAAE,CAAC;IACvBE,YAAY,CAAC,CAAC,CAAC;EACjB,CAAC;EAED,MAAMmC,aAAa,GAAGA,MAAM;AAC1B,IAAA,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;AACnC,IAAA,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,IAAA,IAAID,GAAG,IAAIA,GAAG,CAACE,UAAU,GAAG,CAAC,EAAE;AAC7BhE,MAAAA,iBAAiB,CAACkD,OAAO,GAAGY,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC,CAACC,UAAU,EAAE;AAC5D,IAAA;EACF,CAAC;EAOD,MAAMC,YAAY,GAAGA,MAAM;AACzB1C,IAAAA,YAAY,CAAE2C,QAAQ,IAAKA,QAAQ,GAAG,GAAG,CAAC;EAC5C,CAAC;EAED,MAAMC,aAAa,GAAGA,MAAM;AAC1B5C,IAAAA,YAAY,CAAE2C,QAAQ,IAAKE,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEH,QAAQ,GAAG,GAAG,CAAC,CAAC;EAC3D,CAAC;;AAED;AACA/D,EAAAA,eAAS,CAAC,MAAM;AACd,IAAA,IAAI,CAACe,cAAc,IAAIjC,SAAS,CAAC+D,OAAO,EAAE;AACxC/D,MAAAA,SAAS,CAAC+D,OAAO,CAACQ,SAAS,GAAGpE,YAAY,CAAC4D,OAAO;AACpD,IAAA;AACF,EAAA,CAAC,EAAE,CAAC9B,cAAc,CAAC,CAAC;AAEpBf,EAAAA,eAAS,CAAC,MAAM;IACd,IAAI,CAACe,cAAc,EAAE;IAErB,MAAMoD,aAAa,GAAIC,CAAC,IAAK;AAC3B,MAAA,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,EAAE;AACtBf,QAAAA,eAAe,EAAE;AACnB,MAAA;IACF,CAAC;IAED,MAAMgB,WAAW,GAAIF,CAAC,IAAK;MACzB,IAAIA,CAAC,CAACG,OAAO,EAAE;QACbH,CAAC,CAACI,cAAc,EAAE;AAClB,QAAA,IAAIJ,CAAC,CAACK,MAAM,GAAG,CAAC,EAAE;AAChBX,UAAAA,YAAY,EAAE;AAChB,QAAA,CAAC,MAAM;AACLE,UAAAA,aAAa,EAAE;AACjB,QAAA;AACF,MAAA;IACF,CAAC;AAEDU,IAAAA,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAER,aAAa,CAAC;AACnDX,IAAAA,MAAM,CAACmB,gBAAgB,CAAC,OAAO,EAAEL,WAAW,EAAE;AAAEM,MAAAA,OAAO,EAAE;AAAM,KAAC,CAAC;AAEjE,IAAA,OAAO,MAAM;AACXF,MAAAA,QAAQ,CAACG,mBAAmB,CAAC,SAAS,EAAEV,aAAa,CAAC;AACtDX,MAAAA,MAAM,CAACqB,mBAAmB,CAAC,OAAO,EAAEP,WAAW,CAAC;IAClD,CAAC;AACH,EAAA,CAAC,EAAE,CAACvD,cAAc,CAAC,CAAC;AAEpBf,EAAAA,eAAS,CAAC,MAAM;IACd,IAAIlB,SAAS,CAAC+D,OAAO,IAAIxE,KAAK,IAAIA,KAAK,KAAK0B,uBAAuB,CAAC8C,OAAO,EAAE;MAC3EiC,qBAAqB,CAAC,MAAMC,oBAAoB,CAACjG,SAAS,CAAC+D,OAAO,CAAC,CAAC;AACtE,IAAA;AACF,EAAA,CAAC,EAAE,CAACxE,KAAK,CAAC,CAAC;;AAGX;AACA2B,EAAAA,eAAS,CAAC,MAAM;IACd,IAAI,CAAC7B,QAAQ,EAAE;MACb2B,gBAAgB,CAAC,KAAK,CAAC;AACzB,IAAA;AACAiF,IAAAA,oBAAoB,CAACjG,SAAS,CAAC+D,OAAO,CAAC;AACzC,EAAA,CAAC,EAAE,CAAC1E,QAAQ,CAAC,CAAC;AAEd6B,EAAAA,eAAS,CAAC,MAAM;AACd,IAAA,IAAI,CAAClB,SAAS,CAAC+D,OAAO,EAAE;IACxB/D,SAAS,CAAC+D,OAAO,CAACmC,gBAAgB,CAAC,oCAAoC,CAAC,CAACC,OAAO,CAAEC,SAAS,IAAK;MAC9FC,4BAA4B,CAACD,SAAS,CAAC;AACzC,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,EAAE,CAACrF,aAAa,EAAE1B,QAAQ,CAAC,CAAC;AAE7B6B,EAAAA,eAAS,CAAC,MAAM;AACd;AACA,IAAA,IAAI3B,KAAK,IAAIA,KAAK,KAAK0B,uBAAuB,CAAC8C,OAAO,EAAE;MACtD,IAAI;QACF,IAAIuC,UAAU,GAAG,EAAE;;AAEnB;AACA,QAAA,IAAI3I,kBAAkB,CAAC4B,KAAK,CAAC,EAAE;AAC7B+G,UAAAA,UAAU,GAAGvI,iBAAiB,CAACwB,KAAK,CAAC;AACvC,QAAA,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AACpC;UACA,IAAIA,KAAK,KAAKa,IAAI,EAAE;YACjBa,uBAAuB,CAAC8C,OAAO,GAAGxE,KAAK;AACvC,YAAA;AACH,UAAA;AACA+G,UAAAA,UAAU,GAAGC,YAAY,CAAChH,KAAK,CAAC;AAClC,QAAA;AAEA,QAAA,IAAI+G,UAAU,IAAIA,UAAU,KAAKlG,IAAI,EAAE;UACrCa,uBAAuB,CAAC8C,OAAO,GAAGxE,KAAK;UACvCc,OAAO,CAACiG,UAAU,CAAC;UACnB,IAAItG,SAAS,CAAC+D,OAAO,IAAI/D,SAAS,CAAC+D,OAAO,CAACyC,SAAS,KAAKF,UAAU,EAAE;AACnEtG,YAAAA,SAAS,CAAC+D,OAAO,CAACyC,SAAS,GAAGF,UAAU;AAC1C,UAAA;UACAN,qBAAqB,CAAC,MAAMC,oBAAoB,CAACjG,SAAS,CAAC+D,OAAO,CAAC,CAAC;AACpEF,UAAAA,aAAa,EAAE;AACjB,QAAA;MACF,CAAC,CAAC,OAAOyB,CAAC,EAAE;AACVtH,QAAAA,OAAO,CAACyI,KAAK,CAAC,kCAAkC,EAAEnB,CAAC,CAAC;AACtD,MAAA;AACF,IAAA,CAAC,MAAM,IAAI,CAAC/F,KAAK,IAAIa,IAAI,EAAE;MACzBC,OAAO,CAAC,EAAE,CAAC;MACXY,uBAAuB,CAAC8C,OAAO,GAAG,EAAE;MACpC,IAAI/D,SAAS,CAAC+D,OAAO,EAAE;AACrB/D,QAAAA,SAAS,CAAC+D,OAAO,CAACyC,SAAS,GAAG,EAAE;AAChC3C,QAAAA,aAAa,EAAE;AACjB,MAAA;AACF,IAAA;EACF,CAAC,EAAE,CAACtE,KAAK,EAAED,eAAe,EAAEuE,aAAa,CAAC,CAAC;EAG3C,MAAMoC,oBAAoB,GAAIG,SAAS,IAAK;IAC1C,IAAI,CAACA,SAAS,EAAE;IAChBM,qBAAqB,CAACN,SAAS,CAAC;IAChCO,qBAAqB,CAACP,SAAS,CAAC;EAClC,CAAC;EAED,MAAMQ,YAAY,GAAGA,MAAM;AACzB,IAAA,IAAI,CAAC5G,SAAS,CAAC+D,OAAO,EAAE,OAAO,EAAE;IACjC,MAAM8C,KAAK,GAAG7G,SAAS,CAAC+D,OAAO,CAAC+C,SAAS,CAAC,IAAI,CAAC;IAC/CC,iBAAiB,CAACF,KAAK,CAAC;IACxB,OAAOA,KAAK,CAACL,SAAS;EACxB,CAAC;;AAED;AACA,EAAA,MAAMQ,aAAa,GAAGlD,iBAAW,CAAC,MAAM;AACtC,IAAA,MAAMmD,IAAI,GAAGL,YAAY,EAAE;IAC3BvG,OAAO,CAAC4G,IAAI,CAAC;IACbhG,uBAAuB,CAAC8C,OAAO,GAAGkD,IAAI;AACtChI,IAAAA,QAAQ,IAAIA,QAAQ,CAACgI,IAAI,CAAC;AAC5B,EAAA,CAAC,EAAE,CAAChI,QAAQ,CAAC,CAAC;;AA6Bd;AACA,EAAA,MAAMiI,aAAa,GAAGA,CAACC,IAAI,EAAE,GAAGC,QAAQ,KAAK;AAC3C,IAAA,OAAOD,IAAI,IAAIA,IAAI,KAAKnH,SAAS,CAAC+D,OAAO,EAAE;AACzC,MAAA,IAAIoD,IAAI,CAACE,QAAQ,KAAK,CAAC,IAAID,QAAQ,CAACE,QAAQ,CAACH,IAAI,CAACI,OAAO,CAAC,EAAE,OAAO,IAAI;;AAEvE;MACA,IAAIJ,IAAI,CAACE,QAAQ,KAAK,CAAC,IAAIF,IAAI,CAAC/K,KAAK,EAAE;AACrC,QAAA,MAAMA,KAAK,GAAG+K,IAAI,CAAC/K,KAAK;QACxB,IACEgL,QAAQ,CAACE,QAAQ,CAAC,MAAM,CAAC,KACxBlL,KAAK,CAACoL,UAAU,KAAK,MAAM,IAAIC,MAAM,CAACrL,KAAK,CAACoL,UAAU,CAAC,IAAI,GAAG,CAAC,EAEhE,OAAO,IAAI;AACb,QAAA,IAAIJ,QAAQ,CAACE,QAAQ,CAAC,QAAQ,CAAC,IAAIlL,KAAK,CAACsL,SAAS,KAAK,QAAQ,EAC7D,OAAO,IAAI;AACb,QAAA,IACEN,QAAQ,CAACE,QAAQ,CAAC,WAAW,CAAC,IAC9BlL,KAAK,CAACuL,cAAc,CAACL,QAAQ,CAAC,WAAW,CAAC,EAE1C,OAAO,IAAI;QAEb,IAAIH,IAAI,CAAC/K,KAAK,IAAI+K,IAAI,CAAC/K,KAAK,CAACD,KAAK,EAAE;AAClC,UAAA,OAAOgL,IAAI,CAAC/K,KAAK,CAACD,KAAK;AACzB,QAAA;;AAEA;AACA,QAAA,IAAIgL,IAAI,CAACI,OAAO,KAAK,MAAM,IAAIJ,IAAI,CAACS,YAAY,CAAC,OAAO,CAAC,EAAE;AACzD,UAAA,OAAOT,IAAI,CAACS,YAAY,CAAC,OAAO,CAAC;AACnC,QAAA;AACF,MAAA;MACAT,IAAI,GAAGA,IAAI,CAACU,UAAU;AACxB,IAAA;AACA,IAAA,OAAO,KAAK;EACd,CAAC;;AAqDD;EACA,SAASC,QAAQA,CAACC,GAAG,EAAE;AACrB,IAAA,MAAMC,MAAM,GAAGD,GAAG,CAACE,KAAK,CAAC,MAAM,CAAC;AAChC,IAAA,IAAI,CAACD,MAAM,EAAE,OAAO,SAAS;AAC7B,IAAA,OACE,GAAG,GACHA,MAAM,CACHE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACXhK,GAAG,CAAEiK,CAAC,IAAK;AACV,MAAA,MAAMC,GAAG,GAAGC,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,CAACG,QAAQ,CAAC,EAAE,CAAC;MACxC,OAAOF,GAAG,CAAChE,MAAM,KAAK,CAAC,GAAG,GAAG,GAAGgE,GAAG,GAAGA,GAAG;AAC3C,IAAA,CAAC,CAAC,CACD/J,IAAI,CAAC,EAAE,CAAC;AAEf,EAAA;EAEA,MAAMkK,gBAAgB,GAAGA,MAAM;AAC7B,IAAA,MAAM5D,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,IAAA,IAAI,CAACD,GAAG,IAAI,CAACA,GAAG,CAACE,UAAU,IAAI,CAAC7E,SAAS,CAAC+D,OAAO,EAAE,OAAO,IAAI;AAE9D,IAAA,IAAIoD,IAAI,GAAGxC,GAAG,CAAC6D,UAAU;IACzB,IAAIrB,IAAI,CAACE,QAAQ,KAAK,CAAC,EAAEF,IAAI,GAAGA,IAAI,CAACU,UAAU;AAE/C,IAAA,OAAOV,IAAI,IAAIA,IAAI,KAAKnH,SAAS,CAAC+D,OAAO,EAAE;AACzC,MAAA,IAAIoD,IAAI,CAACE,QAAQ,KAAK,CAAC,EAAE;QACvB,IAAIF,IAAI,CAAC/K,KAAK,IAAI+K,IAAI,CAAC/K,KAAK,CAACD,KAAK,EAAE;AAClC,UAAA,OAAO2L,QAAQ,CAACX,IAAI,CAAC/K,KAAK,CAACD,KAAK,CAAC;AACnC,QAAA;AACA,QAAA,IAAIgL,IAAI,CAACI,OAAO,KAAK,MAAM,IAAIJ,IAAI,CAACS,YAAY,CAAC,OAAO,CAAC,EAAE;AACzD,UAAA,OAAOT,IAAI,CAACS,YAAY,CAAC,OAAO,CAAC;AACnC,QAAA;AACF,MAAA;MACAT,IAAI,GAAGA,IAAI,CAACU,UAAU;AACxB,IAAA;IAEA,MAAMY,aAAa,GAAG/D,MAAM,CAACgE,gBAAgB,CAC3C/D,GAAG,CAAC6D,UAAU,CAACnB,QAAQ,KAAK,CAAC,GAAG1C,GAAG,CAAC6D,UAAU,CAACX,UAAU,GAAGlD,GAAG,CAAC6D,UAClE,CAAC,CAACrM,KAAK;IACP,OAAO2L,QAAQ,CAACW,aAAa,CAAC;EAChC,CAAC;EAED,MAAM1B,iBAAiB,GAAI4B,IAAI,IAAK;AAClCA,IAAAA,IAAI,CAACzC,gBAAgB,CACnB,8GACF,CAAC,CAACC,OAAO,CAAEyC,OAAO,IAAKA,OAAO,CAACC,MAAM,EAAE,CAAC;AACxC,IAAA,OAAOF,IAAI;EACb,CAAC;EAED,MAAMG,kBAAkB,GAAGA,MAAM;AAC/B,IAAA,MAAMC,QAAQ,GAAG/I,SAAS,CAAC+D,OAAO,GAC9B/D,SAAS,CAAC+D,OAAO,CAACiF,qBAAqB,EAAE,CAACC,KAAK,GAAG,EAAE,GACpD,GAAG;IACP,OAAO;AACLC,MAAAA,QAAQ,EAAE,GAAG;AACbrJ,MAAAA,SAAS,EAAE,EAAE;MACbkJ,QAAQ;AACRjJ,MAAAA,SAAS,EAAE;KACZ;EACH,CAAC;EAED,MAAMqJ,qBAAqB,GAAIC,cAAc,IAAK;AAChD,IAAA,IAAI,CAACA,cAAc,EAAE,OAAO,IAAI;AAEhC,IAAA,IAAIC,KAAK,GAAGD,cAAc,CAACE,aAAa,CAAC,6BAA6B,CAAC;IACvE,IAAID,KAAK,EAAE,OAAOA,KAAK;AAEvBA,IAAAA,KAAK,GAAGzD,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;IACrC+M,KAAK,CAACpN,SAAS,GAAG,mBAAmB;AAErC,IAAA,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAACkK,OAAO,CAAEoD,IAAI,IAAK;AAC3E,MAAA,IAAIH,cAAc,CAAChN,KAAK,CAACmN,IAAI,CAAC,EAAE;QAC9BF,KAAK,CAACjN,KAAK,CAACmN,IAAI,CAAC,GAAGH,cAAc,CAAChN,KAAK,CAACmN,IAAI,CAAC;AAC9CH,QAAAA,cAAc,CAAChN,KAAK,CAACmN,IAAI,CAAC,GAAG,EAAE;AACjC,MAAA;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,IAAIH,cAAc,CAACI,OAAO,CAACC,cAAc,EAAE;MACzCJ,KAAK,CAACG,OAAO,CAACC,cAAc,GAAGL,cAAc,CAACI,OAAO,CAACC,cAAc;AACpE,MAAA,OAAOL,cAAc,CAACI,OAAO,CAACC,cAAc;AAC9C,IAAA;IAEA,MAAMjL,QAAQ,GAAGkL,KAAK,CAACC,IAAI,CAACP,cAAc,CAAC5K,QAAQ,CAAC;AACpD4K,IAAAA,cAAc,CAACQ,WAAW,CAACP,KAAK,CAAC;IACjC7K,QAAQ,CAAC2H,OAAO,CAAE0D,KAAK,IAAKR,KAAK,CAACO,WAAW,CAACC,KAAK,CAAC,CAAC;AAErD,IAAA,OAAOR,KAAK;EACd,CAAC;EAED,MAAMS,mBAAmB,GAAIV,cAAc,IACzCD,qBAAqB,CAACC,cAAc,CAAC,IAAIA,cAAc;EAEzD,MAAMW,mBAAmB,GAAGA,CAACV,KAAK,EAAEJ,KAAK,EAAEe,MAAM,EAAEC,IAAI,KAAK;AAC1D,IAAA,MAAMC,GAAG,GAAGb,KAAK,CAACC,aAAa,CAAC,KAAK,CAAC;IACtC,MAAMa,UAAU,GAAGF,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,QAAQ;AAEtDZ,IAAAA,KAAK,CAACjN,KAAK,CAAC6M,KAAK,GAAG,CAAA,EAAG9D,IAAI,CAACiF,KAAK,CAACnB,KAAK,CAAC,CAAA,EAAA,CAAI;AAC5CI,IAAAA,KAAK,CAACjN,KAAK,CAAC2M,QAAQ,GAAG,MAAM;AAE7B,IAAA,IAAIoB,UAAU,EAAE;AACdd,MAAAA,KAAK,CAACjN,KAAK,CAAC4N,MAAM,GAAG,CAAA,EAAG7E,IAAI,CAACiF,KAAK,CAACJ,MAAM,CAAC,CAAA,EAAA,CAAI;AAC9CX,MAAAA,KAAK,CAACG,OAAO,CAACC,cAAc,GAAG,MAAM;AACrC,MAAA,IAAIS,GAAG,EAAE;AACPA,QAAAA,GAAG,CAAC9N,KAAK,CAAC6M,KAAK,GAAG,MAAM;AACxBiB,QAAAA,GAAG,CAAC9N,KAAK,CAAC4N,MAAM,GAAG,MAAM;AACzBE,QAAAA,GAAG,CAAC9N,KAAK,CAACiO,SAAS,GAAG,SAAS;AACjC,MAAA;AACA,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAChB,KAAK,CAACG,OAAO,CAACC,cAAc,EAAE;AACjCJ,MAAAA,KAAK,CAACjN,KAAK,CAAC4N,MAAM,GAAG,EAAE;AACzB,IAAA;AAEA,IAAA,IAAIE,GAAG,EAAE;AACPA,MAAAA,GAAG,CAAC9N,KAAK,CAAC6M,KAAK,GAAG,MAAM;AACxB,MAAA,IAAII,KAAK,CAACG,OAAO,CAACC,cAAc,EAAE;AAChCS,QAAAA,GAAG,CAAC9N,KAAK,CAAC4N,MAAM,GAAG,MAAM;AACzBE,QAAAA,GAAG,CAAC9N,KAAK,CAACiO,SAAS,GAAG,SAAS;AACjC,MAAA,CAAC,MAAM;AACLH,QAAAA,GAAG,CAAC9N,KAAK,CAAC4N,MAAM,GAAG,MAAM;AACzBE,QAAAA,GAAG,CAAC9N,KAAK,CAACiO,SAAS,GAAG,EAAE;AAC1B,MAAA;AACF,IAAA;EACF,CAAC;EAED,MAAMC,mBAAmB,GAAGA,CAAClE,SAAS,EAAE6C,KAAK,EAAEe,MAAM,KAAK;AACxD5D,IAAAA,SAAS,CAAChK,KAAK,CAACmO,aAAa,GAAG,GAAG;AACnCnE,IAAAA,SAAS,CAAChK,KAAK,CAAC6M,KAAK,GAAG,CAAA,EAAG9D,IAAI,CAACiF,KAAK,CAACnB,KAAK,CAAC,CAAA,EAAA,CAAI;AAChD7C,IAAAA,SAAS,CAAChK,KAAK,CAAC2M,QAAQ,GAAG,MAAM;AACjC3C,IAAAA,SAAS,CAAChK,KAAK,CAAC4N,MAAM,GAAG,CAAA,EAAG7E,IAAI,CAACiF,KAAK,CAACJ,MAAM,CAAC,CAAA,EAAA,CAAI;EACpD,CAAC;EAED,MAAMQ,uBAAuB,GAAIpE,SAAS,IAAK;IAC7C,IAAI,CAACA,SAAS,IAAIA,SAAS,CAACkD,aAAa,CAAC,uBAAuB,CAAC,EAAE;IAEpE,MAAMmB,OAAO,GAAGrE,SAAS,CAACsE,SAAS,CAACC,QAAQ,CAAC,iBAAiB,CAAC;IAC/D,MAAMC,YAAY,GAAGH,OAAO,GAAGrE,SAAS,GAAG0D,mBAAmB,CAAC1D,SAAS,CAAC;IACzE,IAAI,CAACwE,YAAY,EAAE;AAEnB,IAAA,MAAMC,cAAc,GAAGjF,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;IACpDuO,cAAc,CAAC5O,SAAS,GAAG,sBAAsB;AACjD4O,IAAAA,cAAc,CAACC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAEvD,MAAMC,KAAK,GAAG,CACZ;AAAEd,MAAAA,IAAI,EAAE,MAAM;AAAEe,MAAAA,KAAK,EAAE;AAAuB,KAAC,EAC/C;AAAEf,MAAAA,IAAI,EAAE,OAAO;AAAEe,MAAAA,KAAK,EAAE;AAAuB,KAAC,EAChD;AAAEf,MAAAA,IAAI,EAAE,KAAK;AAAEe,MAAAA,KAAK,EAAE;AAAwB,KAAC,EAC/C;AAAEf,MAAAA,IAAI,EAAE,QAAQ;AAAEe,MAAAA,KAAK,EAAE;AAAwB,KAAC,CACnD;IAEDD,KAAK,CAAC5E,OAAO,CAAC,CAAC;MAAE8D,IAAI;AAAEe,MAAAA;AAAM,KAAC,KAAK;AACjC,MAAA,MAAMC,MAAM,GAAGrF,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;AAC5C2O,MAAAA,MAAM,CAAChP,SAAS,GAAG,CAAA,wCAAA,EAA2CgO,IAAI,CAAA,CAAE;MACpEgB,MAAM,CAACD,KAAK,GAAGA,KAAK;AACpBC,MAAAA,MAAM,CAACH,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC/CG,MAAAA,MAAM,CAACzB,OAAO,CAACS,IAAI,GAAGA,IAAI;AAE1BgB,MAAAA,MAAM,CAACpF,gBAAgB,CAAC,WAAW,EAAGqF,KAAK,IAAK;QAC9C,IAAI,CAAC7L,QAAQ,EAAE;QACf6L,KAAK,CAACxF,cAAc,EAAE;QACtBwF,KAAK,CAACC,eAAe,EAAE;AAEvB,QAAA,MAAMC,MAAM,GAAGtC,kBAAkB,EAAE;AACnC,QAAA,MAAMuC,IAAI,GAAGT,YAAY,CAAC5B,qBAAqB,EAAE;AACjD,QAAA,MAAMsC,MAAM,GAAGJ,KAAK,CAACK,OAAO;AAC5B,QAAA,MAAMC,MAAM,GAAGN,KAAK,CAACO,OAAO;AAC5B,QAAA,MAAMC,UAAU,GAAGL,IAAI,CAACpC,KAAK;AAC7B,QAAA,MAAM0C,WAAW,GAAGN,IAAI,CAACrB,MAAM;AAC/B,QAAA,MAAM4B,eAAe,GAAGnE,MAAM,CAACoE,UAAU,CAACjB,YAAY,CAACxO,KAAK,CAAC0P,UAAU,CAAC,IAAI,CAAC;AAC7E,QAAA,MAAMC,cAAc,GAAGtE,MAAM,CAACoE,UAAU,CAACjB,YAAY,CAACxO,KAAK,CAAC4P,SAAS,CAAC,IAAI,CAAC;AAE3E,QAAA,IAAIvB,OAAO,EAAE;AACXG,UAAAA,YAAY,CAACxO,KAAK,CAACmO,aAAa,GAAG,GAAG;AACxC,QAAA;QAEA,MAAM0B,WAAW,GAAIC,SAAS,IAAK;AACjC,UAAA,MAAMC,MAAM,GAAGD,SAAS,CAACX,OAAO,GAAGD,MAAM;AACzC,UAAA,MAAM3F,MAAM,GAAGuG,SAAS,CAACT,OAAO,GAAGD,MAAM;UACzC,IAAIY,SAAS,GAAGV,UAAU;UAC1B,IAAIW,UAAU,GAAGV,WAAW;UAE5B,IAAI1B,IAAI,KAAK,OAAO,EAAE;YACpBmC,SAAS,GAAGV,UAAU,GAAGS,MAAM;AACjC,UAAA,CAAC,MAAM,IAAIlC,IAAI,KAAK,MAAM,EAAE;YAC1BmC,SAAS,GAAGV,UAAU,GAAGS,MAAM;AACjC,UAAA,CAAC,MAAM,IAAIlC,IAAI,KAAK,QAAQ,EAAE;YAC5BoC,UAAU,GAAGV,WAAW,GAAGhG,MAAM;AACnC,UAAA,CAAC,MAAM,IAAIsE,IAAI,KAAK,KAAK,EAAE;YACzBoC,UAAU,GAAGV,WAAW,GAAGhG,MAAM;AACnC,UAAA;AAEAyG,UAAAA,SAAS,GAAGjH,IAAI,CAACC,GAAG,CAACgG,MAAM,CAAClC,QAAQ,EAAE/D,IAAI,CAACmH,GAAG,CAACF,SAAS,EAAEhB,MAAM,CAACrC,QAAQ,CAAC,CAAC;AAC3EsD,UAAAA,UAAU,GAAGlH,IAAI,CAACC,GAAG,CAACgG,MAAM,CAACvL,SAAS,EAAEsF,IAAI,CAACmH,GAAG,CAACD,UAAU,EAAEjB,MAAM,CAACtL,SAAS,CAAC,CAAC;UAE/E,IAAImK,IAAI,KAAK,MAAM,EAAE;AACnBW,YAAAA,YAAY,CAACxO,KAAK,CAAC0P,UAAU,GAAG,GAAG3G,IAAI,CAACiF,KAAK,CAACwB,eAAe,IAAIF,UAAU,GAAGU,SAAS,CAAC,CAAC,CAAA,EAAA,CAAI;AAC/F,UAAA;UAEA,IAAInC,IAAI,KAAK,KAAK,EAAE;AAClBW,YAAAA,YAAY,CAACxO,KAAK,CAAC4P,SAAS,GAAG,GAAG7G,IAAI,CAACiF,KAAK,CAAC2B,cAAc,IAAIJ,WAAW,GAAGU,UAAU,CAAC,CAAC,CAAA,EAAA,CAAI;AAC/F,UAAA;AAEA,UAAA,IAAI5B,OAAO,EAAE;AACXH,YAAAA,mBAAmB,CAACM,YAAY,EAAEwB,SAAS,EAAEC,UAAU,CAAC;AAC1D,UAAA,CAAC,MAAM;YACLtC,mBAAmB,CAACa,YAAY,EAAEwB,SAAS,EAAEC,UAAU,EAAEpC,IAAI,CAAC;AAChE,UAAA;QACF,CAAC;QAED,MAAMsC,SAAS,GAAGA,MAAM;AACtB3G,UAAAA,QAAQ,CAACG,mBAAmB,CAAC,WAAW,EAAEkG,WAAW,CAAC;AACtDrG,UAAAA,QAAQ,CAACG,mBAAmB,CAAC,SAAS,EAAEwG,SAAS,CAAC;AAClDvF,UAAAA,aAAa,EAAE;QACjB,CAAC;AAEDpB,QAAAA,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAEoG,WAAW,CAAC;AACnDrG,QAAAA,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE0G,SAAS,CAAC;AACjD,MAAA,CAAC,CAAC;AAEF1B,MAAAA,cAAc,CAACjB,WAAW,CAACqB,MAAM,CAAC;AACpC,IAAA,CAAC,CAAC;AAEFL,IAAAA,YAAY,CAAChB,WAAW,CAACiB,cAAc,CAAC;EAC1C,CAAC;EAED,MAAM2B,iBAAiB,GAAGA,MAAM;IAC9BxL,gBAAgB,CAAC,IAAI,CAAC;EACxB,CAAC;EAED,MAAMyL,gBAAgB,GAAGA,MAAM;AAC7BzG,IAAAA,qBAAqB,CAAC,MAAM;AAAA,MAAA,IAAA0G,kBAAA;AAC1B,MAAA,IAAI,GAAAA,kBAAA,GAAC1M,SAAS,CAAC+D,OAAO,MAAA,IAAA,IAAA2I,kBAAA,KAAA,MAAA,IAAjBA,kBAAA,CAAmB/B,QAAQ,CAAC/E,QAAQ,CAAC+G,aAAa,CAAC,CAAA,EAAE;QACxD3L,gBAAgB,CAAC,KAAK,CAAC;AACzB,MAAA;AACF,IAAA,CAAC,CAAC;EACJ,CAAC;EAED,MAAMqF,4BAA4B,GAAID,SAAS,IAAK;AAClD,IAAA,MAAMwG,OAAO,GAAGxG,SAAS,CAACkD,aAAa,CAAC,uBAAuB,CAAC;IAChE,IAAIsD,OAAO,YAAYC,WAAW,EAAE;MAClCD,OAAO,CAACxQ,KAAK,CAACG,OAAO,GAAG8C,QAAQ,GAAG,OAAO,GAAG,MAAM;MACnDuN,OAAO,CAACxQ,KAAK,CAAC0Q,aAAa,GAAGzN,QAAQ,GAAG,MAAM,GAAG,MAAM;AAC1D,IAAA;EACF,CAAC;EAED,MAAM0N,uBAAuB,GAAGA,CAAC/B,KAAK,EAAE/O,SAAS,EAAE+Q,QAAQ,KAAK;AAC9D,IAAA,MAAMC,SAAS,GAAGrH,QAAQ,CAACtJ,aAAa,CAAC,QAAQ,CAAC;IAClD2Q,SAAS,CAACC,IAAI,GAAG,QAAQ;IACzBD,SAAS,CAACzG,SAAS,GAAG,GAAG;IACzByG,SAAS,CAAChR,SAAS,GAAGA,SAAS;IAC/BgR,SAAS,CAACjC,KAAK,GAAGA,KAAK;AACvBiC,IAAAA,SAAS,CAACnC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAClDmC,IAAAA,SAAS,CAACE,OAAO,GAAIjC,KAAK,IAAK;MAC7BA,KAAK,CAACxF,cAAc,EAAE;MACtBwF,KAAK,CAACC,eAAe,EAAE;AACvB6B,MAAAA,QAAQ,EAAE;IACZ,CAAC;AACD,IAAA,OAAOC,SAAS;EAClB,CAAC;;AAGD;AACA/L,EAAAA,eAAS,CAAC,MAAM;IACd,MAAMkM,yBAAyB,GAAGA,MAAM;AAAA,MAAA,IAAAC,mBAAA;AACtC;AACA,MAAA,MAAM1I,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;MACjC,IAAI,CAACD,GAAG,IAAI,CAACA,GAAG,CAACE,UAAU,IAAI,EAAA,CAAAwI,mBAAA,GAACrN,SAAS,CAAC+D,OAAO,MAAA,IAAA,IAAAsJ,mBAAA,KAAA,MAAA,IAAjBA,mBAAA,CAAmB1C,QAAQ,CAAChG,GAAG,CAAC6D,UAAU,CAAC,CAAA,EAAE;AAC3E,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAIrB,IAAI,GAAGxC,GAAG,CAAC6D,UAAU;MACzB,IAAI8E,SAAS,GAAG,IAAI;AACpB,MAAA,OAAOnG,IAAI,IAAIA,IAAI,KAAKnH,SAAS,CAAC+D,OAAO,EAAE;AACzC,QAAA,IAAIoD,IAAI,CAACoG,QAAQ,KAAK,IAAI,EAAE;AAAED,UAAAA,SAAS,GAAG,SAAS;AAAE,UAAA;AAAO,QAAA;AAC5D,QAAA,IAAInG,IAAI,CAACoG,QAAQ,KAAK,IAAI,EAAE;AAAED,UAAAA,SAAS,GAAG,WAAW;AAAE,UAAA;AAAO,QAAA;QAC9DnG,IAAI,GAAGA,IAAI,CAACU,UAAU;AACxB,MAAA;MACAzG,kBAAkB,CAACkM,SAAS,CAAC;;AAE7B;AACA,MAAA,MAAMlH,SAAS,GAAGzB,GAAG,CAAC6D,UAAU,CAACnB,QAAQ,KAAK,CAAC,GAAG1C,GAAG,CAAC6D,UAAU,CAACX,UAAU,GAAGlD,GAAG,CAAC6D,UAAU;MAC5F,MAAMgF,aAAa,GAAG9I,MAAM,CAACgE,gBAAgB,CAACtC,SAAS,CAAC,CAACqH,SAAS;MAClEzL,cAAc,CAACwL,aAAa,CAAC;AAE7B,MAAA,MAAME,KAAK,GAAG/I,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC;MAC/B,IAAI4I,KAAK,CAACC,SAAS,EAAE;QACnBrM,SAAS,CAAC4F,aAAa,CAACd,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D5E,WAAW,CAAC0F,aAAa,CAACd,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D1E,cAAc,CAACwF,aAAa,CAACd,SAAS,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAMqC,aAAa,GAAG/D,MAAM,CAACgE,gBAAgB,CAACtC,SAAS,CAAC,CAACjK,KAAK;AAC9DyR,QAAAA,YAAY,CAAC9F,QAAQ,CAACW,aAAa,CAAC,CAAC;AACvC,MAAA,CAAC,MAAM;AACLnH,QAAAA,SAAS,CAACsE,QAAQ,CAACiI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC7CrM,QAAAA,WAAW,CAACoE,QAAQ,CAACiI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACjDnM,QAAAA,cAAc,CAACkE,QAAQ,CAACiI,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvD,MAAMpF,aAAa,GAAG/D,MAAM,CAACgE,gBAAgB,CAACtC,SAAS,CAAC,CAACjK,KAAK;AAC9DyR,QAAAA,YAAY,CAAC9F,QAAQ,CAACW,aAAa,CAAC,CAAC;AACvC,MAAA;;AAEA;MACA,MAAMG,OAAO,GAAG8E,KAAK,CAACI,cAAc,CAACC,aAAa,CAACC,OAAO,CAAC,sBAAsB,CAAC;AAClF,MAAA,IAAIpF,OAAO,EAAE;QACX,MAAMlM,QAAQ,GAAGgI,MAAM,CAACgE,gBAAgB,CAACE,OAAO,CAAC,CAAClM,QAAQ;QAC1D,MAAMuR,SAAS,GAAGvR,QAAQ,GAAG2L,QAAQ,CAAC3L,QAAQ,CAAC,GAAG,EAAE;AACpDkF,QAAAA,kBAAkB,CAACqM,SAAS,CAAC3F,QAAQ,EAAE,CAAC;AAC1C,MAAA,CAAC,MAAM;QACL1G,kBAAkB,CAAC,IAAI,CAAC;AAC1B,MAAA;IACF,CAAC;AAEDgE,IAAAA,QAAQ,CAACC,gBAAgB,CAAC,iBAAiB,EAAEuH,yBAAyB,CAAC;AACvE,IAAA,OAAO,MAAM;AACXxH,MAAAA,QAAQ,CAACG,mBAAmB,CAAC,iBAAiB,EAAEqH,yBAAyB,CAAC;IAC5E,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AAGN,EAAA,MAAMc,KAAK,GAAGA,MAAMlO,SAAS,CAAC+D,OAAO,IAAI/D,SAAS,CAAC+D,OAAO,CAACmK,KAAK,EAAE;EAElE,MAAMC,IAAI,GAAGA,CAACC,OAAO,EAAE7O,KAAK,GAAG,IAAI,KAAK;IACtCqG,QAAQ,CAACyI,WAAW,CAACD,OAAO,EAAE,KAAK,EAAE7O,KAAK,CAAC;AAC3CyH,IAAAA,aAAa,EAAE;AACfkH,IAAAA,KAAK,EAAE;EACT,CAAC;EAED,MAAM,CAACI,SAAS,EAAEV,YAAY,CAAC,GAAGtN,cAAQ,CAAC,SAAS,CAAC;EAErD,MAAMiO,kBAAkB,GAAGA,MAAMhG,gBAAgB,EAAE,IAAI+F,SAAS;EAEhE,MAAME,iBAAiB,GAAIrS,KAAK,IAAK;IACnCyR,YAAY,CAACzR,KAAK,CAAC;AACnBgS,IAAAA,IAAI,CAAC,WAAW,EAAEhS,KAAK,CAAC;EAC1B,CAAC;EAED,MAAMsS,OAAO,GAAGA,MAAM;AACpB,IAAA,MAAM9J,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;IACjC,IAAI,CAACD,GAAG,IAAIA,GAAG,CAACE,UAAU,KAAK,CAAC,EAAE;AAElChE,IAAAA,iBAAiB,CAACkD,OAAO,GAAGY,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC,CAACC,UAAU,EAAE;AAE1D,IAAA,MAAM2J,YAAY,GAAG/J,GAAG,CAAC2D,QAAQ,EAAE;AAEnC,IAAA,IAAIoG,YAAY,CAACtK,MAAM,GAAG,CAAC,EAAE;MAC3BxD,WAAW,CAAC8N,YAAY,CAAC;MACzBhO,UAAU,CAAC,EAAE,CAAC;MACdF,gBAAgB,CAAC,IAAI,CAAC;AACxB,IAAA,CAAC,MAAM;MACLI,WAAW,CAAC,EAAE,CAAC;MACfF,UAAU,CAAC,EAAE,CAAC;MACdF,gBAAgB,CAAC,IAAI,CAAC;AACxB,IAAA;EACF,CAAC;AAED,EAAA,MAAMmO,aAAa,GAAGA,CAACxH,IAAI,EAAEI,OAAO,KAAK;AACvC,IAAA,IAAI,CAACJ,IAAI,EAAE,OAAO,IAAI;IACtB,IAAIyH,IAAI,GAAGzH,IAAI;AACf,IAAA,OAAOyH,IAAI,IAAIA,IAAI,KAAK5O,SAAS,CAAC+D,OAAO,EAAE;AACzC,MAAA,IAAI6K,IAAI,CAACrH,OAAO,KAAKA,OAAO,EAAE,OAAOqH,IAAI;MACzCA,IAAI,GAAGA,IAAI,CAAC/G,UAAU;AACxB,IAAA;AACA,IAAA,OAAO,IAAI;EACb,CAAC;EAED,MAAMgH,WAAW,GAAIC,MAAM,IAAK;AAC9B,IAAA,MAAMnK,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,IAAA,IAAI,CAACD,GAAG,IAAI,CAACA,GAAG,CAACE,UAAU,EAAE;AAE7B,IAAA,MAAMkK,IAAI,GAAGJ,aAAa,CAAChK,GAAG,CAAC6D,UAAU,EAAE,IAAI,CAAC,IAAImG,aAAa,CAAChK,GAAG,CAAC6D,UAAU,EAAE,IAAI,CAAC;IACvF,IAAI,CAACuG,IAAI,EAAE;AAEX,IAAA,MAAMC,GAAG,GAAGD,IAAI,CAAClH,UAAU;IAC3B,MAAMoH,KAAK,GAAGD,GAAG,CAACnH,UAAU,CAACmG,OAAO,CAAC,OAAO,CAAC;AAE7C,IAAA,QAAQc,MAAM;AACZ,MAAA,KAAK,aAAa;QAChB,MAAMI,WAAW,GAAGD,KAAK,CAACE,SAAS,CAACH,GAAG,CAACI,QAAQ,CAAC;AACjD,QAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAClL,MAAM,EAAEiL,CAAC,EAAE,EAAE;AACzC,UAAA,MAAME,OAAO,GAAGL,WAAW,CAACM,UAAU,CAACH,CAAC,CAAC;AACzCE,UAAAA,OAAO,CAACnT,KAAK,CAACqT,MAAM,GAAG,mBAAmB;AAC1CF,UAAAA,OAAO,CAACnT,KAAK,CAACsT,OAAO,GAAG,MAAM;UAC9BH,OAAO,CAAC/I,SAAS,GAAG,QAAQ;AAC9B,QAAA;AACA,QAAA;AACF,MAAA,KAAK,aAAa;QAChB,MAAMmJ,WAAW,GAAGV,KAAK,CAACE,SAAS,CAACH,GAAG,CAACI,QAAQ,GAAG,CAAC,CAAC;AACrD,QAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAClL,MAAM,EAAEiL,CAAC,EAAE,EAAE;AACzC,UAAA,MAAME,OAAO,GAAGI,WAAW,CAACH,UAAU,CAACH,CAAC,CAAC;AACzCE,UAAAA,OAAO,CAACnT,KAAK,CAACqT,MAAM,GAAG,mBAAmB;AAC1CF,UAAAA,OAAO,CAACnT,KAAK,CAACsT,OAAO,GAAG,MAAM;UAC9BH,OAAO,CAAC/I,SAAS,GAAG,QAAQ;AAC9B,QAAA;AACA,QAAA;AACF,MAAA,KAAK,cAAc;AACjB,QAAA,MAAMoJ,SAAS,GAAGb,IAAI,CAACa,SAAS;AAChC,QAAA,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACY,IAAI,CAACzL,MAAM,EAAEiL,CAAC,EAAE,EAAE;AAC1C,UAAA,MAAME,OAAO,GAAGN,KAAK,CAACY,IAAI,CAACR,CAAC,CAAC,CAACG,UAAU,CAACI,SAAS,CAAC;AACnDL,UAAAA,OAAO,CAACnT,KAAK,CAACqT,MAAM,GAAG,mBAAmB;AAC1CF,UAAAA,OAAO,CAACnT,KAAK,CAACsT,OAAO,GAAG,MAAM;UAC9BH,OAAO,CAAC/I,SAAS,GAAG,QAAQ;AAC9B,QAAA;AACA,QAAA;AACF,MAAA,KAAK,aAAa;AAChB,QAAA,MAAMsJ,cAAc,GAAGf,IAAI,CAACa,SAAS,GAAG,CAAC;AACzC,QAAA,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACY,IAAI,CAACzL,MAAM,EAAEiL,CAAC,EAAE,EAAE;AAC1C,UAAA,MAAME,OAAO,GAAGN,KAAK,CAACY,IAAI,CAACR,CAAC,CAAC,CAACG,UAAU,CAACM,cAAc,CAAC;AACxDP,UAAAA,OAAO,CAACnT,KAAK,CAACqT,MAAM,GAAG,mBAAmB;AAC1CF,UAAAA,OAAO,CAACnT,KAAK,CAACsT,OAAO,GAAG,MAAM;UAC9BH,OAAO,CAAC/I,SAAS,GAAG,QAAQ;AAC9B,QAAA;AACA,QAAA;AACF,MAAA,KAAK,WAAW;AAAE,QAAA;AAChB,UAAA,MAAM4I,QAAQ,GAAGJ,GAAG,CAACI,QAAQ;AAC7B,UAAA,MAAMQ,SAAS,GAAGb,IAAI,CAACa,SAAS;AAChCX,UAAAA,KAAK,CAACc,SAAS,CAACX,QAAQ,CAAC;AACzB,UAAA,IAAIH,KAAK,CAACY,IAAI,CAACzL,MAAM,KAAK,CAAC,EAAE;YAC3B6K,KAAK,CAACpG,MAAM,EAAE;AAChB,UAAA,CAAC,MAAM;AACL,YAAA,MAAMmH,cAAc,GAAG7K,IAAI,CAACmH,GAAG,CAAC8C,QAAQ,EAAEH,KAAK,CAACY,IAAI,CAACzL,MAAM,GAAG,CAAC,CAAC;AAChE,YAAA,MAAM6L,SAAS,GAAGhB,KAAK,CAACY,IAAI,CAACG,cAAc,CAAC;YAC5C,MAAME,UAAU,GAAGD,SAAS,CAACX,KAAK,CAACnK,IAAI,CAACmH,GAAG,CAACsD,SAAS,EAAEK,SAAS,CAACX,KAAK,CAAClL,MAAM,GAAG,CAAC,CAAC,CAAC;AACnF,YAAA,IAAI8L,UAAU,EAAE;AACd,cAAA,MAAMxC,KAAK,GAAG9H,QAAQ,CAACuK,WAAW,EAAE;AACpCzC,cAAAA,KAAK,CAAC0C,kBAAkB,CAACF,UAAU,CAAC;AACpCxC,cAAAA,KAAK,CAAC2C,QAAQ,CAAC,IAAI,CAAC;cACpB1L,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,cAAAA,GAAG,CAAC4L,QAAQ,CAAC7C,KAAK,CAAC;AACnBpK,cAAAA,mBAAmB,CAACkN,CAAC,IAAIA,CAAC,GAAG,CAAC,CAAC;AACjC,YAAA;AACF,UAAA;AACA,UAAA;AACF,QAAA;AACA,MAAA,KAAK,WAAW;AAAE,QAAA;AAChB,UAAA,MAAMC,GAAG,GAAG1B,IAAI,CAACa,SAAS;AAC1B,UAAA,MAAMR,QAAQ,GAAGJ,GAAG,CAACI,QAAQ;AAC7B,UAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACY,IAAI,CAACzL,MAAM,EAAEiL,CAAC,EAAE,EAAE;YAC1CJ,KAAK,CAACY,IAAI,CAACR,CAAC,CAAC,CAACqB,UAAU,CAACD,GAAG,CAAC;AAC/B,UAAA;AACA,UAAA,IAAIxB,KAAK,CAACY,IAAI,CAAC,CAAC,CAAC,CAACP,KAAK,CAAClL,MAAM,KAAK,CAAC,EAAE;YACpC6K,KAAK,CAACpG,MAAM,EAAE;AAChB,UAAA,CAAC,MAAM;AAAA,YAAA,IAAA8H,oBAAA;YACL,MAAMC,cAAc,GAAGzL,IAAI,CAACmH,GAAG,CAACmE,GAAG,EAAExB,KAAK,CAACY,IAAI,CAAC,CAAC,CAAC,CAACP,KAAK,CAAClL,MAAM,GAAG,CAAC,CAAC;AACpE,YAAA,MAAM8L,UAAU,GAAG,CAAA,CAAAS,oBAAA,GAAA1B,KAAK,CAACY,IAAI,CAACT,QAAQ,CAAC,MAAA,IAAA,IAAAuB,oBAAA,KAAA,MAAA,GAAA,MAAA,GAApBA,oBAAA,CAAsBrB,KAAK,CAACsB,cAAc,CAAC,KAAI3B,KAAK,CAACY,IAAI,CAAC,CAAC,CAAC,CAACP,KAAK,CAACsB,cAAc,CAAC;AACrG,YAAA,IAAIV,UAAU,EAAE;AACd,cAAA,MAAMxC,KAAK,GAAG9H,QAAQ,CAACuK,WAAW,EAAE;AACpCzC,cAAAA,KAAK,CAAC0C,kBAAkB,CAACF,UAAU,CAAC;AACpCxC,cAAAA,KAAK,CAAC2C,QAAQ,CAAC,IAAI,CAAC;cACpB1L,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,cAAAA,GAAG,CAAC4L,QAAQ,CAAC7C,KAAK,CAAC;AACnBpK,cAAAA,mBAAmB,CAACkN,CAAC,IAAIA,CAAC,GAAG,CAAC,CAAC;AACjC,YAAA;AACF,UAAA;AACA,UAAA;AACF,QAAA;AACA,MAAA,KAAK,YAAY;QACf,IAAIzB,IAAI,CAAC8B,kBAAkB,EAAE;AAC3B,UAAA,MAAMC,QAAQ,GAAG/B,IAAI,CAAC8B,kBAAkB;AACxC9B,UAAAA,IAAI,CAACgC,OAAO,GAAG,CAAChC,IAAI,CAACgC,OAAO,IAAI,CAAC,KAAKD,QAAQ,CAACC,OAAO,IAAI,CAAC,CAAC;UAC5DD,QAAQ,CAACjI,MAAM,EAAE;AACnB,QAAA;AACA,QAAA;AACF,MAAA,KAAK,aAAa;QAChBoG,KAAK,CAACpG,MAAM,EAAE;AACd,QAAA;AAGJ;IACA7B,aAAa,IAAIA,aAAa,EAAE;EAClC,CAAC;EAED,MAAMgK,WAAW,GAAGA,MAAM;AACxB,IAAA,MAAMnB,IAAI,GAAGxH,QAAQ,CAACpF,SAAS,CAAC,IAAI,CAAC;AACrC,IAAA,MAAMgO,IAAI,GAAG5I,QAAQ,CAAClF,SAAS,CAAC,IAAI,CAAC;IACrC,IAAI+N,SAAS,GAAG,2GAA2G;IAC3H,KAAK,IAAI7B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,IAAI,EAAER,CAAC,EAAE,EAAE;AAC7B6B,MAAAA,SAAS,IAAI,MAAM;MACnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,EAAEE,CAAC,EAAE,EAAE;AAC7BD,QAAAA,SAAS,IAAI,qFAAqF;AACpG,MAAA;AACAA,MAAAA,SAAS,IAAI,OAAO;AACtB,IAAA;AACAA,IAAAA,SAAS,IAAI,+BAA+B;IAE5C,IAAIrQ,iBAAiB,CAACkD,OAAO,EAAE;AAC7B,MAAA,MAAMY,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;MACjCD,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,MAAAA,GAAG,CAAC4L,QAAQ,CAAC1P,iBAAiB,CAACkD,OAAO,CAAC;AACzC,IAAA;IAEA6B,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE6C,SAAS,CAAC;IACpDpO,iBAAiB,CAAC,KAAK,CAAC;IACxBkE,aAAa,IAAIA,aAAa,EAAE;EAClC,CAAC;EAED,MAAMoK,aAAa,GAAI9M,GAAG,IAAK;AAC7BA,IAAAA,GAAG,GAAGA,GAAG,CAACJ,IAAI,EAAE;AAChB,IAAA,IAAI,CAACI,GAAG,EAAE,OAAO,IAAI;;AAErB;IACA,MAAM+M,QAAQ,GAAG,kFAAkF;AACnG,IAAA,MAAMC,OAAO,GAAGhN,GAAG,CAAC2D,KAAK,CAACoJ,QAAQ,CAAC;IACnC,IAAIC,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,CAAClN,MAAM,KAAK,EAAE,EAAE;AACvC,MAAA,OAAO,CAAA,8BAAA,EAAiCkN,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AACtD,IAAA;;AAEA;IACA,MAAMC,WAAW,GAAG,gHAAgH;AACpI,IAAA,MAAMC,UAAU,GAAGlN,GAAG,CAAC2D,KAAK,CAACsJ,WAAW,CAAC;AACzC,IAAA,IAAIC,UAAU,IAAIA,UAAU,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAA,OAAO,CAAA,+BAAA,EAAkCA,UAAU,CAAC,CAAC,CAAC,CAAA,CAAE;AAC1D,IAAA;;AAEA;IACA,MAAMC,QAAQ,GAAG,yCAAyC;AAC1D,IAAA,MAAMC,OAAO,GAAGpN,GAAG,CAAC2D,KAAK,CAACwJ,QAAQ,CAAC;AACnC,IAAA,IAAIC,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,EAAE;AACzB,MAAA,OAAO,CAAA,wCAAA,EAA2CA,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE;AAChE,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,WAAW,GAAGA,MAAM;AACxB,IAAA,MAAMC,QAAQ,GAAGR,aAAa,CAACzO,QAAQ,CAAC;AAExC,IAAA,IAAIiP,QAAQ,EAAE;MACZ,IAAI5R,SAAS,CAAC+D,OAAO,EAAE;AACrB/D,QAAAA,SAAS,CAAC+D,OAAO,CAACmK,KAAK,EAAE;AAC3B,MAAA;MAEA,IAAIrN,iBAAiB,CAACkD,OAAO,EAAE;AAC7B,QAAA,MAAMY,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;QACjCD,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,QAAAA,GAAG,CAAC4L,QAAQ,CAAC1P,iBAAiB,CAACkD,OAAO,CAAC;AACzC,MAAA;AAEA,MAAA,MAAM8N,SAAS,GAAG,CAAA;AACxB;AACA,eAAA,EAAiBD,QAAQ,CAAA;AACzB;AACA;AACA;AACA;AACA,yBAAA,CAA0B;MAEpB,IAAI;QACFhM,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAEwD,SAAS,CAAC;MACtD,CAAC,CAAC,OAAOC,GAAG,EAAE;AACZ9T,QAAAA,OAAO,CAACyI,KAAK,CAAC,8BAA8B,EAAEqL,GAAG,CAAC;QAClD,IAAI9R,SAAS,CAAC+D,OAAO,EAAE;AACrB,UAAA,MAAMgO,GAAG,GAAGnM,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;UACzCyV,GAAG,CAACvL,SAAS,GAAGqL,SAAS;AACzB7R,UAAAA,SAAS,CAAC+D,OAAO,CAAC6F,WAAW,CAACmI,GAAG,CAAC;AACpC,QAAA;AACF,MAAA;MACArP,iBAAiB,CAAC,KAAK,CAAC;MACxBE,WAAW,CAAC,EAAE,CAAC;MACfoE,aAAa,IAAIA,aAAa,EAAE;MAChChB,qBAAqB,CAAC,MAAMC,oBAAoB,CAACjG,SAAS,CAAC+D,OAAO,CAAC,CAAC;AACtE,IAAA,CAAC,MAAM;AACL/F,MAAAA,OAAO,CAACC,IAAI,CAAC,6CAA6C,CAAC;AAC7D,IAAA;EACF,CAAC;EAYD,MAAM0I,qBAAqB,GAAIP,SAAS,IAAK;IAC3C,IAAI,CAACA,SAAS,EAAE;IAEhBA,SAAS,CAACF,gBAAgB,CAAC,kBAAkB,CAAC,CAACC,OAAO,CAAE6L,cAAc,IAAK;AACzE,MAAA,IAAI,CAACA,cAAc,CAAC1I,aAAa,CAAC,sBAAsB,CAAC,EAAE;QACzD,MAAM2D,SAAS,GAAGF,uBAAuB,CACvC,cAAc,EACd,yCAAyC,EACzC,MAAM;UACJiF,cAAc,CAACnJ,MAAM,EAAE;UACvB7B,aAAa,IAAIA,aAAa,EAAE;AAClC,QAAA,CACF,CAAC;AACDgL,QAAAA,cAAc,CAACpI,WAAW,CAACqD,SAAS,CAAC;AACvC,MAAA;MAEAzC,uBAAuB,CAACwH,cAAc,CAAC;MACvC3L,4BAA4B,CAAC2L,cAAc,CAAC;AAC9C,IAAA,CAAC,CAAC;EACJ,CAAC;EAED,MAAMtL,qBAAqB,GAAIN,SAAS,IAAK;IAC3C,IAAI,CAACA,SAAS,EAAE;IAEhBA,SAAS,CAACF,gBAAgB,CAAC,KAAK,CAAC,CAACC,OAAO,CAAE+D,GAAG,IAAK;AAAA,MAAA,IAAA+H,YAAA;AACjD,MAAA,IAAI/H,GAAG,CAAC8D,OAAO,CAAC,YAAY,CAAC,EAAE;AAE/B,MAAA,MAAMkE,eAAe,GAAGhI,GAAG,CAAC8D,OAAO,CAAC,kBAAkB,CAAC;AACvD,MAAA,IAAIkE,eAAe,EAAE;QACnBA,eAAe,CAAC9V,KAAK,CAAC+V,MAAM,GAAG9S,QAAQ,GAAG,SAAS,GAAG,SAAS;AAC/D,QAAA,MAAMgK,KAAK,GAAGF,qBAAqB,CAAC+I,eAAe,CAAC;QACpD,IAAI7I,KAAK,IAAI,CAACA,KAAK,CAACC,aAAa,CAAC,sBAAsB,CAAC,EAAE;UACzDD,KAAK,CAACO,WAAW,CACfmD,uBAAuB,CACrB,cAAc,EACd,qBAAqB,EACrB,MAAM;YACJmF,eAAe,CAACrJ,MAAM,EAAE;YACxB7B,aAAa,IAAIA,aAAa,EAAE;AAClC,UAAA,CACF,CACF,CAAC;AACH,QAAA;QACAwD,uBAAuB,CAAC0H,eAAe,CAAC;QACxC7L,4BAA4B,CAAC6L,eAAe,CAAC;AAC7C,QAAA;AACF,MAAA;AAEA,MAAA,MAAME,OAAO,GAAGxM,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;MAC7C,MAAM+V,KAAK,GAAGnI,GAAG,CAACtC,YAAY,CAAC,YAAY,CAAC,KAAA,CAAAqK,YAAA,GAAI/H,GAAG,CAAC8D,OAAO,CAAC,cAAc,CAAC,MAAA,IAAA,IAAAiE,YAAA,KAAA,MAAA,GAAA,MAAA,GAA3BA,YAAA,CAA6BrK,YAAY,CAAC,YAAY,CAAC,CAAA,IAAI,MAAM;AACjHwK,MAAAA,OAAO,CAACnW,SAAS,GAAG,CAAA,4BAAA,EAA+BoW,KAAK,CAAA,CAAE;MAC1DD,OAAO,CAAChW,KAAK,CAAC+V,MAAM,GAAG9S,QAAQ,GAAG,SAAS,GAAG,SAAS;AAEvD,MAAA,MAAMgK,KAAK,GAAGzD,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;MAC3C+M,KAAK,CAACpN,SAAS,GAAG,mBAAmB;AAErC,MAAA,IAAIiO,GAAG,CAACtC,YAAY,CAAC,OAAO,CAAC,IAAI,CAACyB,KAAK,CAACjN,KAAK,CAAC6M,KAAK,EAAE;AACnDI,QAAAA,KAAK,CAACjN,KAAK,CAAC6M,KAAK,GAAG,CAAA,EAAGiB,GAAG,CAACtC,YAAY,CAAC,OAAO,CAAC,CAAA,EAAA,CAAI;AACtD,MAAA,CAAC,MAAM,IAAIsC,GAAG,CAAC9N,KAAK,CAAC6M,KAAK,IAAIiB,GAAG,CAAC9N,KAAK,CAAC6M,KAAK,CAACqJ,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC5DjJ,KAAK,CAACjN,KAAK,CAAC6M,KAAK,GAAGiB,GAAG,CAAC9N,KAAK,CAAC6M,KAAK;AACrC,MAAA;AAEAiB,MAAAA,GAAG,CAACQ,SAAS,CAAC6H,GAAG,CAAC,WAAW,CAAC;AAC9BrI,MAAAA,GAAG,CAACY,YAAY,CAAC,YAAY,EAAEuH,KAAK,CAAC;AAErC,MAAA,IAAIhJ,KAAK,CAACjN,KAAK,CAAC6M,KAAK,EAAE;AACrBiB,QAAAA,GAAG,CAAC9N,KAAK,CAAC6M,KAAK,GAAG,MAAM;AACxBiB,QAAAA,GAAG,CAAC9N,KAAK,CAAC4N,MAAM,GAAGX,KAAK,CAACG,OAAO,CAACC,cAAc,GAAG,MAAM,GAAG,MAAM;AACnE,MAAA,CAAC,MAAM;AACLS,QAAAA,GAAG,CAAC9N,KAAK,CAAC6M,KAAK,GAAG,EAAE;AACpBiB,QAAAA,GAAG,CAAC9N,KAAK,CAAC4N,MAAM,GAAG,MAAM;AAC3B,MAAA;AAEAE,MAAAA,GAAG,CAACrE,gBAAgB,CAAC,OAAO,EAAGqF,KAAK,IAAK;QACvC,IAAIA,KAAK,CAACsH,MAAM,CAACxE,OAAO,CAAC,4CAA4C,CAAC,EAAE;AACxE3J,QAAAA,cAAc,CAAC6F,GAAG,CAACuI,GAAG,CAAC;AACzB,MAAA,CAAC,CAAC;MAEF,MAAMxF,SAAS,GAAGF,uBAAuB,CACvC,cAAc,EACd,qBAAqB,EACrB,MAAM;QACJqF,OAAO,CAACvJ,MAAM,EAAE;QAChB7B,aAAa,IAAIA,aAAa,EAAE;AAClC,MAAA,CACF,CAAC;MAED,MAAM;QAAEa,UAAU;AAAE6K,QAAAA;AAAY,OAAC,GAAGxI,GAAG;AACvC,MAAA,IAAIrC,UAAU,EAAE;AACdA,QAAAA,UAAU,CAAC8K,WAAW,CAACzI,GAAG,CAAC;AAC3Bb,QAAAA,KAAK,CAACO,WAAW,CAACM,GAAG,CAAC;AACtBb,QAAAA,KAAK,CAACO,WAAW,CAACqD,SAAS,CAAC;AAC5BmF,QAAAA,OAAO,CAACxI,WAAW,CAACP,KAAK,CAAC;QAC1BmB,uBAAuB,CAAC4H,OAAO,CAAC;AAEhC,QAAA,IAAIM,WAAW,EAAE;AACf7K,UAAAA,UAAU,CAAC+K,YAAY,CAACR,OAAO,EAAEM,WAAW,CAAC;AAC/C,QAAA,CAAC,MAAM;AACL7K,UAAAA,UAAU,CAAC+B,WAAW,CAACwI,OAAO,CAAC;AACjC,QAAA;AACF,MAAA;AACF,IAAA,CAAC,CAAC;EACJ,CAAC;;AAGD;AACF;AACA;AACA;AACE,EAAA,MAAMS,WAAW,GAAG,OAAOC,OAAO,EAAEC,QAAQ,KAAK;IAC/C,IAAI;AACF,MAAA,IAAI1T,QAAQ,EAAE;AAEZ;AACA,QAAA,MAAM+G,SAAS,GAAGR,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;QAC/C8J,SAAS,CAACnK,SAAS,GAAG,kCAAkC;AAExD,QAAA,MAAMoN,KAAK,GAAGzD,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;QAC3C+M,KAAK,CAACpN,SAAS,GAAG,mBAAmB;;AAErC;AACA,QAAA,MAAMiO,GAAG,GAAGtE,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;QACzC4N,GAAG,CAACuI,GAAG,GAAGK,OAAO;AACjB5I,QAAAA,GAAG,CAAC8I,GAAG,GAAGD,QAAQ,IAAI,OAAO;QAC7B7I,GAAG,CAACrE,gBAAgB,CAAC,OAAO,EAAE,MAAMxB,cAAc,CAACyO,OAAO,CAAC,CAAC;AAE5DzJ,QAAAA,KAAK,CAACO,WAAW,CAACM,GAAG,CAAC;AACtB9D,QAAAA,SAAS,CAACwD,WAAW,CAACP,KAAK,CAAC;;AAE5B;QACA4J,kBAAkB,CAAC7M,SAAS,CAAC;AAC7BJ,QAAAA,qBAAqB,CAAC,MAAM;AAC1BC,UAAAA,oBAAoB,CAACjG,SAAS,CAAC+D,OAAO,CAAC;AACvCiD,UAAAA,aAAa,EAAE;AACjB,QAAA,CAAC,CAAC;AACJ,MAAA;IACF,CAAC,CAAC,OAAO8K,GAAG,EAAE;AACZ9T,MAAAA,OAAO,CAACyI,KAAK,CAAC,wBAAwB,EAAEqL,GAAG,CAAC;AAC9C,IAAA;EACF,CAAC;EAED,MAAMoB,iBAAiB,GAAIC,IAAI,IAC7B,IAAIC,OAAO,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;AACxB,IAAA,MAAMC,MAAM,GAAG,IAAIC,UAAU,EAAE;AAC/BD,IAAAA,MAAM,CAACE,MAAM,GAAIC,EAAE,IAAKL,GAAG,CAACK,EAAE,CAAClB,MAAM,CAACxK,MAAM,CAAC;IAC7CuL,MAAM,CAACI,OAAO,GAAGL,GAAG;AACpBC,IAAAA,MAAM,CAACK,aAAa,CAACT,IAAI,CAAC;AAC5B,EAAA,CAAC,CAAC;AAUJ,EAAA,MAAMU,WAAW,GAAG/P,iBAAW,CAAEwB,CAAC,IAAK;IACrC,MAAMwO,aAAa,GAAGxO,CAAC,CAACwO,aAAa,IAAIpP,MAAM,CAACoP,aAAa;IAC7D,IAAI,CAACA,aAAa,EAAE;;AAEpB;AACA,IAAA,MAAMC,KAAK,GAAGD,aAAa,CAACC,KAAK,IAAI,EAAE;AACvC,IAAA,KAAK,IAAI1E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0E,KAAK,CAAC3P,MAAM,EAAEiL,CAAC,EAAE,EAAE;AACrC,MAAA,MAAM2E,IAAI,GAAGD,KAAK,CAAC1E,CAAC,CAAC;AACrB,MAAA,IAAI2E,IAAI,CAACC,IAAI,KAAK,MAAM,IAAID,IAAI,CAAC9G,IAAI,CAACgH,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;QAC9D5O,CAAC,CAACI,cAAc,EAAE;AAClB,QAAA,MAAMyN,IAAI,GAAGa,IAAI,CAACG,SAAS,EAAE;AAC7B,QAAA,IAAIhB,IAAI,EAAE;UACR3Q,cAAc,CAAC,IAAI,CAAC;AACpB,UAAA,MAAM4R,aAAa,GAAGrU,aAAa,GAC/BA,aAAa,CAACoT,IAAI,CAAC,GACnBD,iBAAiB,CAACC,IAAI,CAAC;AAE3BiB,UAAAA,aAAa,CAACC,IAAI,CAAE/P,GAAG,IAAK;AAC1B,YAAA,IAAIA,GAAG,EAAE;AACP;AACA,cAAA,MAAMgQ,QAAQ,GAAG,OAAOhQ,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIA,GAAG,CAACiQ,QAAQ,GAAGjQ,GAAG,CAACiQ,QAAQ,GAAGjQ,GAAG;cAC7FuO,WAAW,CAACyB,QAAQ,EAAEnB,IAAI,CAACqB,IAAI,IAAI,cAAc,CAAC;AACpD,YAAA;YACAhS,cAAc,CAAC,KAAK,CAAC;AACvB,UAAA,CAAC,CAAC,CAACiS,KAAK,CAAEhO,KAAK,IAAK;AAClBzI,YAAAA,OAAO,CAACyI,KAAK,CAAC,+BAA+B,EAAEA,KAAK,CAAC;YACrDjE,cAAc,CAAC,KAAK,CAAC;AACvB,UAAA,CAAC,CAAC;AACJ,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,MAAMkS,QAAQ,GAAGZ,aAAa,CAACa,OAAO,CAAC,WAAW,CAAC;AACnD,IAAA,IAAID,QAAQ,IAAIA,QAAQ,CAACxQ,IAAI,EAAE,EAAE;MAC/BoB,CAAC,CAACI,cAAc,EAAE;AAElB,MAAA,MAAMkP,OAAO,GAAGhP,QAAQ,CAACtJ,aAAa,CAAC,KAAK,CAAC;MAC7CsY,OAAO,CAACpO,SAAS,GAAGkO,QAAQ;AAE5BE,MAAAA,OAAO,CAAC1O,gBAAgB,CAAC,oBAAoB,CAAC,CAACC,OAAO,CAAC0O,EAAE,IAAIA,EAAE,CAAChM,MAAM,EAAE,CAAC;MAEzEjD,QAAQ,CAACyI,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC;MACjDzI,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAEuG,OAAO,CAACpO,SAAS,CAAC;MAC5DZ,QAAQ,CAACyI,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC;AAElDrH,MAAAA,aAAa,EAAE;AACfkH,MAAAA,KAAK,EAAE;AACP,MAAA;AACF,IAAA;AAEA,IAAA,MAAM4G,SAAS,GAAGhB,aAAa,CAACa,OAAO,CAAC,YAAY,CAAC;AACrD,IAAA,IAAIG,SAAS,EAAE;MACbxP,CAAC,CAACI,cAAc,EAAE;AAElB,MAAA,IAAIqP,YAAY,GAAGrW,UAAU,CAACoW,SAAS,CAAC;MAExCC,YAAY,GAAGA,YAAY,CAAClW,OAAO,CAACE,SAAS,EAAGuF,GAAG,IAAK;QACtD,MAAM0Q,OAAO,GAAGlW,UAAU,CAACwF,GAAG,CAACJ,IAAI,EAAE,CAAC;AACtC,QAAA,OAAO,YAAY8Q,OAAO,CAAA,6FAAA,EAAgGtW,UAAU,CAAC4F,GAAG,CAAC,CAAA,IAAA,CAAM;AACjJ,MAAA,CAAC,CAAC;MAEFyQ,YAAY,GAAGA,YAAY,CAAClW,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;MAElD+G,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE0G,YAAY,CAAC;AACvD/N,MAAAA,aAAa,EAAE;AACfkH,MAAAA,KAAK,EAAE;AACT,IAAA;AACF,EAAA,CAAC,EAAE,CAAC2E,WAAW,EAAE7L,aAAa,CAAC,CAAC;AAEhC,EAAA,MAAMiO,UAAU,GAAG,MAAO3P,CAAC,IAAK;IAC9B,IAAI,CAACjG,QAAQ,EAAE;IACfiG,CAAC,CAACI,cAAc,EAAE;IAClBJ,CAAC,CAAC6F,eAAe,EAAE;AAEnB,IAAA,MAAM+J,KAAK,GAAG5P,CAAC,CAAC6P,YAAY,CAACD,KAAK;IAClC,IAAI,CAACA,KAAK,IAAIA,KAAK,CAAC9Q,MAAM,KAAK,CAAC,EAAE;IAElC,MAAMgR,UAAU,GAAG1L,KAAK,CAACC,IAAI,CAACuL,KAAK,CAAC,CAACG,MAAM,CAAClC,IAAI,IAAIA,IAAI,CAACjG,IAAI,CAACoI,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEnF,IAAA,KAAK,MAAMnC,IAAI,IAAIiC,UAAU,EAAE;MAC7B,IAAI;QACF5S,cAAc,CAAC,IAAI,CAAC;AACpB,QAAA,MAAM4R,aAAa,GAAGrU,aAAa,GAC/BA,aAAa,CAACoT,IAAI,CAAC,GACnBD,iBAAiB,CAACC,IAAI,CAAC;AAE3BiB,QAAAA,aAAa,CAACC,IAAI,CAAE/P,GAAG,IAAK;AAC1B,UAAA,IAAIA,GAAG,EAAE;AACP,YAAA,MAAMgQ,QAAQ,GAAG,OAAOhQ,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIA,GAAG,CAACiQ,QAAQ,GAAGjQ,GAAG,CAACiQ,QAAQ,GAAGjQ,GAAG;AAC7FuO,YAAAA,WAAW,CAACyB,QAAQ,EAAEnB,IAAI,CAACqB,IAAI,CAAC;AAClC,UAAA;UACAhS,cAAc,CAAC,KAAK,CAAC;AACvB,QAAA,CAAC,CAAC,CAACiS,KAAK,CAAEhO,KAAK,IAAK;AAClBzI,UAAAA,OAAO,CAACyI,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;UAC/CjE,cAAc,CAAC,KAAK,CAAC;AACvB,QAAA,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOiE,KAAK,EAAE;AACdzI,QAAAA,OAAO,CAACyI,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;QAC/CjE,cAAc,CAAC,KAAK,CAAC;AACvB,MAAA;AACF,IAAA;EACF,CAAC;EAED,MAAMyQ,kBAAkB,GAAI9L,IAAI,IAAK;IACnC,IAAI;AACF,MAAA,MAAMxC,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,MAAA,IAAI8I,KAAK;MAET,IAAI,CAAC/I,GAAG,IAAIA,GAAG,CAACE,UAAU,KAAK,CAAC,IAAI,CAAC7E,SAAS,CAAC+D,OAAO,CAAC4G,QAAQ,CAAChG,GAAG,CAAC6D,UAAU,CAAC,EAAE;AAC/ExI,QAAAA,SAAS,CAAC+D,OAAO,CAACmK,KAAK,EAAE;;AAEzB;AACAR,QAAAA,KAAK,GAAG9H,QAAQ,CAACuK,WAAW,EAAE;AAC9BzC,QAAAA,KAAK,CAAC0C,kBAAkB,CAACpQ,SAAS,CAAC+D,OAAO,CAAC;AAC3C2J,QAAAA,KAAK,CAAC2C,QAAQ,CAAC,KAAK,CAAC;QACrB1L,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,QAAAA,GAAG,CAAC4L,QAAQ,CAAC7C,KAAK,CAAC;AACrB,MAAA,CAAC,MAAM;AACLA,QAAAA,KAAK,GAAG/I,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC;AAC3B,MAAA;MAEA4I,KAAK,CAAC6H,cAAc,EAAE;AACtB7H,MAAAA,KAAK,CAAC8H,UAAU,CAACrO,IAAI,CAAC;AAEtB,MAAA,MAAMsO,KAAK,GAAG7P,QAAQ,CAAC8P,cAAc,CAAC,QAAQ,CAAC;MAC/C,IAAIvO,IAAI,CAACU,UAAU,EAAE;QACnBV,IAAI,CAACU,UAAU,CAAC+K,YAAY,CAAC6C,KAAK,EAAEtO,IAAI,CAACuL,WAAW,CAAC;AACvD,MAAA;AAEAhF,MAAAA,KAAK,CAACiI,aAAa,CAACF,KAAK,CAAC;AAC1B/H,MAAAA,KAAK,CAAC2C,QAAQ,CAAC,IAAI,CAAC;MACpB1L,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,MAAAA,GAAG,CAAC4L,QAAQ,CAAC7C,KAAK,CAAC;IACrB,CAAC,CAAC,OAAOjH,KAAK,EAAE;AACdzI,MAAAA,OAAO,CAACyI,KAAK,CAAC,kBAAkB,EAAEA,KAAK,CAAC;MACxC,IAAIzG,SAAS,CAAC+D,OAAO,EAAE;AACrB/D,QAAAA,SAAS,CAAC+D,OAAO,CAAC6F,WAAW,CAACzC,IAAI,CAAC;AACrC,MAAA;AACF,IAAA;EACF,CAAC;;AAED;EACA,MAAMZ,YAAY,GAAInG,IAAI,IAAK;AAC7B,IAAA,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;AACpB,IAAA,MAAMwV,GAAG,GAAGhQ,QAAQ,CAACtJ,aAAa,CAAC,UAAU,CAAC;IAC9CsZ,GAAG,CAACpP,SAAS,GAAGpG,IAAI;IACpB,OAAOwV,GAAG,CAACrW,KAAK;EAClB,CAAC;AAED,EAAA,MAAMsW,uBAAuB,GAAGA,CAACnI,KAAK,EAAEoI,QAAQ,KAAK;AACnD,IAAA,MAAMC,WAAW,GAAGnQ,QAAQ,CAACuK,WAAW,EAAE;IAC1C4F,WAAW,CAACC,QAAQ,CAACtI,KAAK,CAACI,cAAc,EAAEJ,KAAK,CAACuI,WAAW,CAAC;IAC7DF,WAAW,CAACG,MAAM,CAACJ,QAAQ,EAAEA,QAAQ,CAACK,UAAU,CAAC/R,MAAM,CAAC;AACxD,IAAA,OAAO2R,WAAW,CAACzN,QAAQ,EAAE,CAACzJ,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACuF,MAAM,KAAK,CAAC;EACnE,CAAC;AAED,EAAA,MAAMgS,wBAAwB,GAAGA,CAACN,QAAQ,EAAEO,SAAS,KAAK;AACxD,IAAA,MAAMC,WAAW,GAAG/H,kBAAkB,EAAE;AACxC,IAAA,MAAMgI,QAAQ,GAAG3Q,QAAQ,CAACuK,WAAW,EAAE;IAEvC,IAAImG,WAAW,IAAIA,WAAW,CAACE,WAAW,EAAE,KAAK,SAAS,EAAE;AAC1D,MAAA,MAAMC,IAAI,GAAG7Q,QAAQ,CAACtJ,aAAa,CAAC,MAAM,CAAC;AAC3Cma,MAAAA,IAAI,CAACra,KAAK,CAACD,KAAK,GAAGma,WAAW;MAC9BG,IAAI,CAAC7M,WAAW,CAAChE,QAAQ,CAAC8P,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnDI,MAAAA,QAAQ,CAAClM,WAAW,CAAC6M,IAAI,CAAC;MAC1BF,QAAQ,CAACP,QAAQ,CAACS,IAAI,CAACC,UAAU,EAAE,CAAC,CAAC;AACvC,IAAA,CAAC,MAAM;MACLZ,QAAQ,CAAClM,WAAW,CAAChE,QAAQ,CAAC8P,cAAc,CAAC,QAAQ,CAAC,CAAC;MACvDa,QAAQ,CAACP,QAAQ,CAACF,QAAQ,CAACY,UAAU,EAAE,CAAC,CAAC;AAC3C,IAAA;AAEAH,IAAAA,QAAQ,CAAClG,QAAQ,CAAC,IAAI,CAAC;IACvBgG,SAAS,CAAC/F,eAAe,EAAE;AAC3B+F,IAAAA,SAAS,CAAC9F,QAAQ,CAACgG,QAAQ,CAAC;EAC9B,CAAC;AAED,EAAA,MAAMlR,aAAa,GAAGvB,iBAAW,CAAEwB,CAAC,IAAK;AACvC;AACA,IAAA,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MACrBD,CAAC,CAACI,cAAc,EAAE;AAElB,MAAA,MAAM2Q,SAAS,GAAG3R,MAAM,CAACE,YAAY,EAAE;AACvC,MAAA,IAAI,CAACyR,SAAS,CAACxR,UAAU,EAAE;AAE3B,MAAA,MAAM6I,KAAK,GAAG2I,SAAS,CAACvR,UAAU,CAAC,CAAC,CAAC;AACrC,MAAA,MAAMqC,IAAI,GAAGuG,KAAK,CAACI,cAAc;AACjC,MAAA,MAAM6I,MAAM,GAAGxP,IAAI,CAACE,QAAQ,KAAK,CAAC,GAAGF,IAAI,CAACU,UAAU,GAAGV,IAAI;;AAE3D;AACA,MAAA,MAAM2O,QAAQ,GAAGa,MAAM,CAAC3I,OAAO,CAAC,IAAI,CAAC;AACrC,MAAA,IAAI8H,QAAQ,EAAE;AACZ,QAAA,MAAMc,IAAI,GAAGd,QAAQ,CAACjO,UAAU;;AAEhC;AACA,QAAA,MAAMgP,OAAO,GAAGjR,QAAQ,CAACtJ,aAAa,CAAC,IAAI,CAAC;;AAE5C;QACA,IAAIoR,KAAK,CAACC,SAAS,IAAIkI,uBAAuB,CAACnI,KAAK,EAAEoI,QAAQ,CAAC,EAAE;AAC/D;AACA,UAAA,IAAIA,QAAQ,CAACgB,WAAW,CAACjY,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACqF,IAAI,EAAE,KAAK,EAAE,EAAE;YAC7D0B,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,iBAAiB,CAAC;AAC5D;AACA,YAAA,MAAMkI,QAAQ,GAAG3Q,QAAQ,CAACuK,WAAW,EAAE;AACvC,YAAA,MAAM4G,MAAM,GAAG/W,SAAS,CAAC+D,OAAO,CAACiT,gBAAgB;AACjDT,YAAAA,QAAQ,CAACP,QAAQ,CAACe,MAAM,EAAE,CAAC,CAAC;AAC5BR,YAAAA,QAAQ,CAAClG,QAAQ,CAAC,IAAI,CAAC;YACvBgG,SAAS,CAAC/F,eAAe,EAAE;AAC3B+F,YAAAA,SAAS,CAAC9F,QAAQ,CAACgG,QAAQ,CAAC;AAC5BvP,YAAAA,aAAa,EAAE;AACf,YAAA;AACF,UAAA;;AAEA;UACA,IAAI8O,QAAQ,CAACpD,WAAW,EAAE;YACxBkE,IAAI,CAAChE,YAAY,CAACiE,OAAO,EAAEf,QAAQ,CAACpD,WAAW,CAAC;AAClD,UAAA,CAAC,MAAM;AACLkE,YAAAA,IAAI,CAAChN,WAAW,CAACiN,OAAO,CAAC;AAC3B,UAAA;AAEAT,UAAAA,wBAAwB,CAACS,OAAO,EAAER,SAAS,CAAC;AAC9C,QAAA,CAAC,MAAM;AACL;AACA,UAAA,MAAMY,UAAU,GAAGrR,QAAQ,CAACuK,WAAW,EAAE;UACzC8G,UAAU,CAACjB,QAAQ,CAACtI,KAAK,CAACI,cAAc,EAAEJ,KAAK,CAACuI,WAAW,CAAC;UAC5DgB,UAAU,CAACf,MAAM,CAACJ,QAAQ,EAAEA,QAAQ,CAACK,UAAU,CAAC/R,MAAM,CAAC;AACvD,UAAA,MAAM8S,aAAa,GAAGD,UAAU,CAACE,eAAe,EAAE;AAClDN,UAAAA,OAAO,CAACjN,WAAW,CAACsN,aAAa,CAAC;UAElC,IAAIpB,QAAQ,CAACpD,WAAW,EAAE;YACxBkE,IAAI,CAAChE,YAAY,CAACiE,OAAO,EAAEf,QAAQ,CAACpD,WAAW,CAAC;AAClD,UAAA,CAAC,MAAM;AACLkE,YAAAA,IAAI,CAAChN,WAAW,CAACiN,OAAO,CAAC;AAC3B,UAAA;AAEA,UAAA,IAAI,CAACA,OAAO,CAACC,WAAW,CAACjY,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACqF,IAAI,EAAE,EAAE;YACtD2S,OAAO,CAACC,WAAW,GAAG,EAAE;AACxBV,YAAAA,wBAAwB,CAACS,OAAO,EAAER,SAAS,CAAC;AAC9C,UAAA,CAAC,MAAM;AACL,YAAA,MAAME,QAAQ,GAAG3Q,QAAQ,CAACuK,WAAW,EAAE;AACvCoG,YAAAA,QAAQ,CAACP,QAAQ,CAACa,OAAO,EAAE,CAAC,CAAC;AAC7BN,YAAAA,QAAQ,CAAClG,QAAQ,CAAC,IAAI,CAAC;YACvBgG,SAAS,CAAC/F,eAAe,EAAE;AAC3B+F,YAAAA,SAAS,CAAC9F,QAAQ,CAACgG,QAAQ,CAAC;AAC9B,UAAA;AACF,QAAA;AACF,MAAA,CAAC,MAAM;AACL;QACA3Q,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,iBAAiB,CAAC;AAC9D,MAAA;AAEArH,MAAAA,aAAa,EAAE;AACf,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC1B,CAAC,CAACG,OAAO,IAAIH,CAAC,CAAC8R,OAAO,KAAK9R,CAAC,CAACC,GAAG,KAAK,GAAG,EAAE;MAC7CD,CAAC,CAACI,cAAc,EAAE;MAClByI,IAAI,CAAC,MAAM,CAAC;AACd,IAAA,CAAC,MAAM,IAAI,CAAC7I,CAAC,CAACG,OAAO,IAAIH,CAAC,CAAC8R,OAAO,KAAK9R,CAAC,CAACC,GAAG,KAAK,GAAG,EAAE;MACpDD,CAAC,CAACI,cAAc,EAAE;MAClByI,IAAI,CAAC,QAAQ,CAAC;AAChB,IAAA,CAAC,MAAM,IAAI,CAAC7I,CAAC,CAACG,OAAO,IAAIH,CAAC,CAAC8R,OAAO,KAAK9R,CAAC,CAACC,GAAG,KAAK,GAAG,EAAE;MACpDD,CAAC,CAACI,cAAc,EAAE;MAClByI,IAAI,CAAC,WAAW,CAAC;AACnB,IAAA;EACF,CAAC,EAAE,CAACA,IAAI,EAAEnH,aAAa,EAAEsH,SAAS,CAAC,CAAC;EAEpC,MAAM+I,WAAW,GAAGA,MAAM;AACxB;AACA,IAAA,IAAI/S,GAAG,GAAG7D,OAAO,CAACyD,IAAI,EAAE;IACxB,IAAII,GAAG,IAAI,CAAC,8BAA8B,CAACgT,IAAI,CAAChT,GAAG,CAAC,EAAE;MACpDA,GAAG,GAAG,CAAA,QAAA,EAAWA,GAAG,CAAA,CAAE;AACxB,IAAA;AAEA,IAAA,MAAM0Q,OAAO,GAAGlW,UAAU,CAACwF,GAAG,CAAC;AAC/B,IAAA,MAAMiT,QAAQ,GAAG7Y,UAAU,CAACiC,QAAQ,IAAIF,OAAO,CAAC;AAEhD,IAAA,MAAMkE,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;IACjCD,GAAG,CAAC2L,eAAe,EAAE;IACrB,IAAIzP,iBAAiB,CAACkD,OAAO,EAAE;AAC7BY,MAAAA,GAAG,CAAC4L,QAAQ,CAAC1P,iBAAiB,CAACkD,OAAO,CAAC;AACzC,IAAA;AAEA,IAAA,MAAMyT,QAAQ,GAAG,CAAA,SAAA,EAAYxC,OAAO,CAAA,iEAAA,EAAoEuC,QAAQ,CAAA,IAAA,CAAM;IACtH3R,QAAQ,CAACyI,WAAW,CAAC,YAAY,EAAE,KAAK,EAAEmJ,QAAQ,CAAC;IAEnDhX,gBAAgB,CAAC,KAAK,CAAC;AACvBwG,IAAAA,aAAa,EAAE;AACfkH,IAAAA,KAAK,EAAE;IACPrN,iBAAiB,CAACkD,OAAO,GAAG,IAAI;EAClC,CAAC;EAED,MAAM0T,UAAU,GAAGA,MAAM;IACvBjX,gBAAgB,CAAC,KAAK,CAAC;IACvBK,iBAAiB,CAACkD,OAAO,GAAG,IAAI;EAClC,CAAC;EAED,MAAM2T,YAAY,GAAIxK,IAAI,IAAK;IAC7BiB,IAAI,CAACjB,IAAI,KAAK,WAAW,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;EAC1E,CAAC;EAED,MAAMyK,kBAAkB,GAAIpY,KAAK,IAAK;IACpC,IAAI,CAACA,KAAK,EAAE;AAEZ,IAAA,MAAMoF,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,IAAA,IAAI,CAACD,GAAG,IAAI,CAACA,GAAG,CAACE,UAAU,EAAE;AAE7B,IAAA,MAAM6I,KAAK,GAAG/I,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC;AAC/B,IAAA,MAAM8S,MAAM,GAAG5X,SAAS,CAAC+D,OAAO;IAChC,IAAI,CAAC6T,MAAM,EAAE;AAEb,IAAA,MAAMC,MAAM,GAAGjS,QAAQ,CAACkS,gBAAgB,CACtCF,MAAM,EACNG,UAAU,CAACC,YAAY,GAAGD,UAAU,CAACE,SAAS,EAC9C;MACEC,UAAU,EAAG/Q,IAAI,IAAK;AACpB,QAAA,OAAOuG,KAAK,CAACyK,cAAc,CAAChR,IAAI,CAAC,GAC7B4Q,UAAU,CAACK,aAAa,GACxBL,UAAU,CAACM,aAAa;AAC9B,MAAA;KACD,EACD,KACF,CAAC;AAED,IAAA,IAAIlR,IAAI;AACR,IAAA,MAAMmR,aAAa,GAAG,IAAIC,GAAG,EAAE;IAC/B,MAAMC,SAAS,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC;AAEtF,IAAA,MAAMC,SAAS,GAAG/K,KAAK,CAAC3I,UAAU,EAAE;AAEpC,IAAA,OAAQoC,IAAI,GAAG0Q,MAAM,CAACa,QAAQ,EAAE,EAAG;AACjC,MAAA,IAAIvR,IAAI,CAACE,QAAQ,KAAK,CAAC,IAAImR,SAAS,CAAClR,QAAQ,CAACH,IAAI,CAACI,OAAO,CAAC,EAAE;AAC3D+Q,QAAAA,aAAa,CAAC/F,GAAG,CAACpL,IAAI,CAAC;AACzB,MAAA,CAAC,MAAM,IAAIA,IAAI,CAACE,QAAQ,KAAK,CAAC,EAAE;AAC9B,QAAA,IAAIsP,MAAM,GAAGxP,IAAI,CAACU,UAAU;AAC5B,QAAA,OAAO8O,MAAM,IAAIA,MAAM,KAAKiB,MAAM,IAAI,CAACY,SAAS,CAAClR,QAAQ,CAACqP,MAAM,CAACpP,OAAO,CAAC,EAAE;UACzEoP,MAAM,GAAGA,MAAM,CAAC9O,UAAU;AAC5B,QAAA;AACA,QAAA,IAAI8O,MAAM,IAAIA,MAAM,KAAKiB,MAAM,IAAIY,SAAS,CAAClR,QAAQ,CAACqP,MAAM,CAACpP,OAAO,CAAC,EAAE;AACrE+Q,UAAAA,aAAa,CAAC/F,GAAG,CAACoE,MAAM,CAAC;AAC3B,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,IAAI2B,aAAa,CAACpc,IAAI,GAAG,CAAC,EAAE;AAC1Boc,MAAAA,aAAa,CAACnS,OAAO,CAACwS,KAAK,IAAI;AAC7BA,QAAAA,KAAK,CAACvc,KAAK,CAACwc,UAAU,GAAGrZ,KAAK;AAChC,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,MAAM;AACL,MAAA,IAAIsZ,MAAM,GAAGnL,KAAK,CAACoL,uBAAuB;MAC1C,IAAID,MAAM,CAACxR,QAAQ,KAAK,CAAC,EAAEwR,MAAM,GAAGA,MAAM,CAAChR,UAAU;AAErD,MAAA,OAAOgR,MAAM,IAAIA,MAAM,KAAKjB,MAAM,IAAI,CAACY,SAAS,CAAClR,QAAQ,CAACuR,MAAM,CAACtR,OAAO,CAAC,EAAE;QACzEsR,MAAM,GAAGA,MAAM,CAAChR,UAAU;AAC5B,MAAA;AAEA,MAAA,IAAIgR,MAAM,IAAIA,MAAM,KAAKjB,MAAM,EAAE;AAC/BiB,QAAAA,MAAM,CAACzc,KAAK,CAACwc,UAAU,GAAGrZ,KAAK;MACjC,CAAC,MAAM,IAAIqY,MAAM,EAAE;QACjBhS,QAAQ,CAACyI,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC;AACjD,QAAA,IAAI0K,SAAS,GAAGrU,MAAM,CAACE,YAAY,EAAE,CAACE,UAAU,CAAC,CAAC,CAAC,CAACgU,uBAAuB;QAC3E,IAAIC,SAAS,CAAC1R,QAAQ,KAAK,CAAC,EAAE0R,SAAS,GAAGA,SAAS,CAAClR,UAAU;AAC9D,QAAA,IAAIkR,SAAS,IAAIA,SAAS,KAAKnB,MAAM,EAAE;AACrCmB,UAAAA,SAAS,CAAC3c,KAAK,CAACwc,UAAU,GAAGrZ,KAAK;AACpC,QAAA;AACF,MAAA;AACF,IAAA;IAEA,IAAI;MACFoF,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,MAAAA,GAAG,CAAC4L,QAAQ,CAACkI,SAAS,CAAC;AACzB,IAAA,CAAC,CAAC,OAAOnT,CAAC,EAAE,CAAE;IAEdxD,oBAAoB,CAACvC,KAAK,CAAC;AAC3ByH,IAAAA,aAAa,EAAE;AACfkH,IAAAA,KAAK,EAAE;EACT,CAAC;EAED,MAAM8K,aAAa,GAAI9c,IAAI,IAAK;AAC9B,IAAA,MAAMyI,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,IAAA,IAAI,CAACD,GAAG,IAAI,CAACA,GAAG,CAACE,UAAU,EAAE;AAE7B,IAAA,MAAM6I,KAAK,GAAG/I,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC;AAC/B,IAAA,MAAMmU,MAAM,GAAG,CAAA,EAAG/c,IAAI,CAAA,EAAA,CAAI;;AAE1B;IACA,IAAIwR,KAAK,CAACC,SAAS,EAAE;AACnB,MAAA,MAAM8I,IAAI,GAAG7Q,QAAQ,CAACtJ,aAAa,CAAC,MAAM,CAAC;AAC3Cma,MAAAA,IAAI,CAACra,KAAK,CAACM,QAAQ,GAAGuc,MAAM;MAC5BxC,IAAI,CAAC7M,WAAW,CAAChE,QAAQ,CAAC8P,cAAc,CAAC,QAAQ,CAAC,CAAC;AACnDhI,MAAAA,KAAK,CAAC8H,UAAU,CAACiB,IAAI,CAAC;AAEtB,MAAA,MAAMF,QAAQ,GAAG3Q,QAAQ,CAACuK,WAAW,EAAE;MACvCoG,QAAQ,CAACP,QAAQ,CAACS,IAAI,CAACC,UAAU,EAAE,CAAC,CAAC;AACrCH,MAAAA,QAAQ,CAAClG,QAAQ,CAAC,IAAI,CAAC;MACvB1L,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,MAAAA,GAAG,CAAC4L,QAAQ,CAACgG,QAAQ,CAAC;AAEtBvP,MAAAA,aAAa,EAAE;AACfkH,MAAAA,KAAK,EAAE;AACP,MAAA;AACF,IAAA;;AAEA;IACA,IAAI;AACF,MAAA,MAAM0J,MAAM,GAAG5X,SAAS,CAAC+D,OAAO;MAChC,IAAI,CAAC6T,MAAM,EAAE;;AAEb;MACA,MAAMC,MAAM,GAAGjS,QAAQ,CAACkS,gBAAgB,CACtCF,MAAM,EACNG,UAAU,CAACE,SAAS,EACpB;QACEC,UAAU,EAAG/Q,IAAI,IAAK;AACpB,UAAA,OAAOuG,KAAK,CAACyK,cAAc,CAAChR,IAAI,CAAC,GAC7B4Q,UAAU,CAACK,aAAa,GACxBL,UAAU,CAACM,aAAa;AAC9B,QAAA;OACD,EACD,KACF,CAAC;AAED,MAAA,IAAIlR,IAAI;MACR,MAAM+R,YAAY,GAAG,EAAE;AACvB,MAAA,OAAQ/R,IAAI,GAAG0Q,MAAM,CAACa,QAAQ,EAAE,EAAG;AACjCQ,QAAAA,YAAY,CAACC,IAAI,CAAChS,IAAI,CAAC;AACzB,MAAA;AAEA,MAAA,MAAMiS,UAAU,GAAG1L,KAAK,CAAC3I,UAAU,EAAE;MACrC,IAAIsU,gBAAgB,GAAG,IAAI;;AAE3B;AACA,MAAA,KAAK,MAAMC,QAAQ,IAAIJ,YAAY,EAAE;AACnC,QAAA,MAAMvC,MAAM,GAAG2C,QAAQ,CAACzR,UAAU;;AAElC;AACA;AACA;QACA,MAAM0R,YAAY,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAACjS,QAAQ,CAACqP,MAAM,CAACpP,OAAO,CAAC;AAE3G,QAAA,IAAIgS,YAAY,EAAE;AAChB5C,UAAAA,MAAM,CAACva,KAAK,CAACM,QAAQ,GAAGuc,MAAM;AAChC,QAAA,CAAC,MAAM;AACL;AACA,UAAA,MAAMhD,WAAW,GAAGqD,QAAQ,KAAKF,UAAU,CAACtL,cAAc,GAAGsL,UAAU,CAACnD,WAAW,GAAG,CAAC;AACvF,UAAA,MAAMuD,SAAS,GAAGF,QAAQ,KAAKF,UAAU,CAACK,YAAY,GAAGL,UAAU,CAACI,SAAS,GAAGF,QAAQ,CAAClV,MAAM;AAE/F,UAAA,MAAMsV,OAAO,GAAG9T,QAAQ,CAACtJ,aAAa,CAAC,MAAM,CAAC;AAC9Cod,UAAAA,OAAO,CAACtd,KAAK,CAACM,QAAQ,GAAGuc,MAAM;AAC/BS,UAAAA,OAAO,CAAC5C,WAAW,GAAGwC,QAAQ,CAACxC,WAAW,CAAC6C,SAAS,CAAC1D,WAAW,EAAEuD,SAAS,CAAC;AAE5E,UAAA,MAAMf,SAAS,GAAG7S,QAAQ,CAACuK,WAAW,EAAE;AACxCsI,UAAAA,SAAS,CAACzC,QAAQ,CAACsD,QAAQ,EAAErD,WAAW,CAAC;AACzCwC,UAAAA,SAAS,CAACvC,MAAM,CAACoD,QAAQ,EAAEE,SAAS,CAAC;UAErCf,SAAS,CAAClD,cAAc,EAAE;AAC1BkD,UAAAA,SAAS,CAACjD,UAAU,CAACkE,OAAO,CAAC;AAC7BL,UAAAA,gBAAgB,GAAGK,OAAO;AAC5B,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAIL,gBAAgB,EAAE;AACpB,QAAA,MAAM9C,QAAQ,GAAG3Q,QAAQ,CAACuK,WAAW,EAAE;AACvCoG,QAAAA,QAAQ,CAACZ,aAAa,CAAC0D,gBAAgB,CAAC;AACxC9C,QAAAA,QAAQ,CAAClG,QAAQ,CAAC,IAAI,CAAC;QACvB1L,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,QAAAA,GAAG,CAAC4L,QAAQ,CAACgG,QAAQ,CAAC;AACxB,MAAA,CAAC,MAAM;AACL;QACA5R,GAAG,CAAC2L,eAAe,EAAE;AACrB3L,QAAAA,GAAG,CAAC4L,QAAQ,CAAC6I,UAAU,CAAC;AAC1B,MAAA;IAEF,CAAC,CAAC,OAAOtH,GAAG,EAAE;AACZ9T,MAAAA,OAAO,CAACyI,KAAK,CAAC,2BAA2B,EAAEqL,GAAG,CAAC;AACjD,IAAA;AAEA9K,IAAAA,aAAa,EAAE;AACfkH,IAAAA,KAAK,EAAE;EACT,CAAC;AACD,EAAA,MAAM0L,WAAW,GAAG9V,iBAAW,CAAC,MAAM;IACpC,IAAI9D,SAAS,CAAC+D,OAAO,EAAE;AACrB,MAAA,MAAMkD,IAAI,GAAGL,YAAY,EAAE;MAC3BvG,OAAO,CAAC4G,IAAI,CAAC;MACbhG,uBAAuB,CAAC8C,OAAO,GAAGkD,IAAI;AACtChI,MAAAA,QAAQ,IAAIA,QAAQ,CAACgI,IAAI,CAAC;AAC1BpD,MAAAA,aAAa,EAAE;AACjB,IAAA;AACF,EAAA,CAAC,EAAE,CAAC5E,QAAQ,EAAE4E,aAAa,CAAC,CAAC;AAE7B,EAAA,MAAMgW,iBAAiB,GAAG,MAAOvU,CAAC,IAAK;IACrC,MAAM6N,IAAI,GAAG7N,CAAC,CAACkN,MAAM,CAAC0C,KAAK,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC/B,IAAI,EAAE;IAEX,IAAI;MACF3Q,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA,MAAM4R,aAAa,GAAGrU,aAAa,GAC/BA,aAAa,CAACoT,IAAI,CAAC,GACnBD,iBAAiB,CAACC,IAAI,CAAC;AAE3BiB,MAAAA,aAAa,CAACC,IAAI,CAAE/P,GAAG,IAAK;AAC1B,QAAA,IAAIA,GAAG,EAAE;AACP,UAAA,MAAMgQ,QAAQ,GAAG,OAAOhQ,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIA,GAAG,CAACiQ,QAAQ,GAAGjQ,GAAG,CAACiQ,QAAQ,GAAGjQ,GAAG;AAC7FuO,UAAAA,WAAW,CAACyB,QAAQ,EAAEnB,IAAI,CAACqB,IAAI,CAAC;AAClC,QAAA;QACAhS,cAAc,CAAC,KAAK,CAAC;AACrB8C,QAAAA,CAAC,CAACkN,MAAM,CAACjT,KAAK,GAAG,IAAI;AACvB,MAAA,CAAC,CAAC,CAACkV,KAAK,CAAEhO,KAAK,IAAK;AAClBzI,QAAAA,OAAO,CAACyI,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;QAC9CjE,cAAc,CAAC,KAAK,CAAC;AACvB,MAAA,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOiE,KAAK,EAAE;AACdzI,MAAAA,OAAO,CAACyI,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;MAC9CjE,cAAc,CAAC,KAAK,CAAC;AACvB,IAAA;EACF,CAAC;AACDtB,EAAAA,eAAS,CAAC,MAAM;AACd;IACA,IAAI9B,QAAQ,KAAK,IAAI,EAAE;MACrB0B,WAAW,CAAC,KAAK,CAAC;AACpB,IAAA;AACF,EAAA,CAAC,EAAE,CAAC1B,QAAQ,CAAC,CAAC;AAEd,EAAA,MAAM0a,iBAAiB,GAAGhW,iBAAW,CAAEwB,CAAC,IAAK;AAC3ChC,IAAAA,mBAAmB,CAACkN,CAAC,IAAIA,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAMvD,SAAS,GAAG3H,CAAC,CAACkN,MAAM,CAACxE,OAAO,CAChC,4DACF,CAAC;AACD,IAAA,IAAIf,SAAS,IAAI5N,QAAQ,IAAI0B,aAAa,EAAE;MAC1CuE,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;AACnB,MAAA,MAAMiH,OAAO,GAAGnF,SAAS,CAACe,OAAO,CAAC,oCAAoC,CAAC;AACvE,MAAA,IAAIoE,OAAO,EAAE;QACXA,OAAO,CAACvJ,MAAM,EAAE;AAChB7B,QAAAA,aAAa,EAAE;AACjB,MAAA;AACA,MAAA;AACF,IAAA;;AAEA;IACA,MAAM+S,WAAW,GAAGzU,CAAC,CAACkN,MAAM,CAACxE,OAAO,CAAC,GAAG,CAAC;AAEzC,IAAA,IAAI+L,WAAW,EAAE;MACfzU,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;MACnBzG,MAAM,CAACsV,IAAI,CAACD,WAAW,CAACE,IAAI,EAAE,QAAQ,CAAC;AACvC,MAAA;AACF,IAAA;;AAEA;IACA,MAAMC,UAAU,GAAG5U,CAAC,CAACkN,MAAM,CAACxE,OAAO,CAAC,KAAK,CAAC;IAC1C,IAAIkM,UAAU,IAAI,CAACA,UAAU,CAAClM,OAAO,CAAC,YAAY,CAAC,EAAE;MACnDxK,gBAAgB,CAAC0W,UAAU,CAAC;IAC9B,CAAC,MAAM,IAAI,CAAC5U,CAAC,CAACkN,MAAM,CAACxE,OAAO,CAAC,oBAAoB,CAAC,EAAE;MAClDxK,gBAAgB,CAAC,IAAI,CAAC;AACxB,IAAA;;AAGA;IACA,IAAIpE,QAAQ,KAAK,IAAI,EAAE;MACrBkG,CAAC,CAACI,cAAc,EAAE;AAClB,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACrG,QAAQ,IAAID,QAAQ,KAAK,IAAI,EAAE;MAClC0B,WAAW,CAAC,IAAI,CAAC;AACjBqZ,MAAAA,UAAU,CAAC,MAAM;QACf,IAAIna,SAAS,CAAC+D,OAAO,EAAE;AACrB/D,UAAAA,SAAS,CAAC+D,OAAO,CAACmK,KAAK,EAAE;AAC3B,QAAA;MACF,CAAC,EAAE,CAAC,CAAC;AACP,IAAA;EACF,CAAC,EAAE,CAAC7O,QAAQ,EAAED,QAAQ,EAAE2B,aAAa,EAAEiG,aAAa,CAAC,CAAC;EAEtD,MAAMoT,kBAAkB,GAAGA,MAAM;AAC/B,IAAA,IAAI,CAAC7W,aAAa,IAAI,CAACvD,SAAS,CAAC+D,OAAO,IAAI,CAAC1E,QAAQ,EAAE,OAAO,IAAI;IAElE,MAAMgb,UAAU,GAAGra,SAAS,CAAC+D,OAAO,CAACiF,qBAAqB,EAAE;AAC5D,IAAA,MAAMsR,OAAO,GAAG/W,aAAa,CAACyF,qBAAqB,EAAE;AAErD,IAAA,MAAMuR,GAAG,GAAGD,OAAO,CAACC,GAAG,GAAGF,UAAU,CAACE,GAAG,GAAGva,SAAS,CAAC+D,OAAO,CAACQ,SAAS;AACtE,IAAA,MAAMiW,IAAI,GAAGF,OAAO,CAACE,IAAI,GAAGH,UAAU,CAACG,IAAI,GAAGxa,SAAS,CAAC+D,OAAO,CAAC0W,UAAU;AAC1E,IAAA,MAAMxR,KAAK,GAAGqR,OAAO,CAACrR,KAAK;IAE3B,MAAMyR,eAAe,GAAIrI,KAAK,IAAK;AACjC,MAAA,MAAMD,OAAO,GAAG7O,aAAa,CAACyK,OAAO,CAAC,kBAAkB,CAAC;AACzD,MAAA,IAAIoE,OAAO,EAAE;AACX;QACAA,OAAO,CAAC1H,SAAS,CAAC7B,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC;AACvF;QACAuJ,OAAO,CAAC1H,SAAS,CAAC6H,GAAG,CAAC,CAAA,YAAA,EAAeF,KAAK,EAAE,CAAC;AAC7C9O,QAAAA,aAAa,CAACuH,YAAY,CAAC,YAAY,EAAEuH,KAAK,CAAC;AAC/CrL,QAAAA,aAAa,EAAE;AACjB,MAAA;IACF,CAAC;IAED,MAAM2T,WAAW,GAAGA,MAAM;AACxB,MAAA,MAAMvI,OAAO,GAAG7O,aAAa,CAACyK,OAAO,CAAC,kBAAkB,CAAC;AACzD,MAAA,IAAIoE,OAAO,EAAE;QACXA,OAAO,CAACvJ,MAAM,EAAE;QAChBrF,gBAAgB,CAAC,IAAI,CAAC;AACtBwD,QAAAA,aAAa,EAAE;AACjB,MAAA;IACF,CAAC;IAED,MAAM4T,UAAU,GAAGA,MAAM;AACvB,MAAA,MAAMxI,OAAO,GAAG7O,aAAa,CAACyK,OAAO,CAAC,kBAAkB,CAAC;AACzD,MAAA,IAAIoE,OAAO,EAAE;QACX,MAAMyI,OAAO,GAAGzI,OAAO,CAAC1H,SAAS,CAACC,QAAQ,CAAC,aAAa,CAAC;AACzD,QAAA,IAAIkQ,OAAO,EAAE;AACXzI,UAAAA,OAAO,CAAC1H,SAAS,CAAC7B,MAAM,CAAC,aAAa,CAAC;AACzC,QAAA,CAAC,MAAM;AACLuJ,UAAAA,OAAO,CAAC1H,SAAS,CAAC6H,GAAG,CAAC,aAAa,CAAC;AACtC,QAAA;AACAvL,QAAAA,aAAa,EAAE;AACjB,MAAA;IACF,CAAC;IAED,oBACE3K,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEL,MAAAA,SAAS,EAAC,mBAAmB;AAC7BG,MAAAA,KAAK,EAAE;AACL0e,QAAAA,QAAQ,EAAE,UAAU;QACpBP,GAAG,EAAEpV,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEmV,GAAG,GAAG,EAAE,CAAC;AAC1BC,QAAAA,IAAI,EAAErV,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEoV,IAAI,GAAGvR,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC8R,QAAAA,MAAM,EAAE;AACV;KAAE,eAEF1e,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,MAAAA,IAAI,EAAC,QAAQ;AAAC8N,MAAAA,OAAO,EAAEA,MAAMN,eAAe,CAAC,MAAM,CAAE;AAAC1P,MAAAA,KAAK,EAAC;AAAY,KAAA,EAAC,GAAS,CAAC,eAC3F3O,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,MAAAA,IAAI,EAAC,QAAQ;AAAC8N,MAAAA,OAAO,EAAEA,MAAMN,eAAe,CAAC,QAAQ,CAAE;AAAC1P,MAAAA,KAAK,EAAC;AAAc,KAAA,EAAC,GAAS,CAAC,eAC/F3O,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,MAAAA,IAAI,EAAC,QAAQ;AAAC8N,MAAAA,OAAO,EAAEA,MAAMN,eAAe,CAAC,OAAO,CAAE;AAAC1P,MAAAA,KAAK,EAAC;AAAa,KAAA,EAAC,GAAS,CAAC,eAC7F3O,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,MAAAA,IAAI,EAAC,QAAQ;AAAC8N,MAAAA,OAAO,EAAEJ,UAAW;AAAC5P,MAAAA,KAAK,EAAC;AAAkB,KAAA,EAAC,KAAW,CAAC,eAChF3O,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,MAAAA,IAAI,EAAC,QAAQ;AAAC8N,MAAAA,OAAO,EAAEL,WAAY;AAAC1e,MAAAA,SAAS,EAAC,QAAQ;AAAC+O,MAAAA,KAAK,EAAC;KAAc,EAAC,MAAS,CAC1F,CAAC;EAEV,CAAC;AAED,EAAA,IAAIxL,SAAS,EAAE;AACb,IAAA,oBAAOnD,KAAA,CAAAC,aAAA,CAACgC,OAAO,MAAE,CAAC;AACpB,EAAA;EAEA,oBACEjC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,kBAAkB;AAACG,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,MAAM;AAAE6R,MAAAA,QAAQ,EAAE;AAAW;AAAE,GAAA,EAC9Epb,KAAK,iBAAIrD,KAAA,CAAAC,aAAA,CAACiC,cAAc,EAAA,IAAA,EAAEmB,KAAsB,CAAC,eAClDrD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEF,IAAAA,KAAK,EAAE;AAAE0e,MAAAA,QAAQ,EAAE;KAAa;AAChC7e,IAAAA,SAAS,EAAE,CAAC0D,UAAU,GAAG,EAAE,GAAG,eAAgB;AAC9Cqb,IAAAA,OAAO,EAAElB,iBAAkB;IAC3BmB,WAAW,EAAG3V,CAAC,IAAK;MAClB,MAAM2J,KAAK,GAAG3J,CAAC,CAACkN,MAAM,CAACxE,OAAO,CAAC,OAAO,CAAC;MACvC,IAAIiB,KAAK,IAAIjP,SAAS,CAAC+D,OAAO,CAAC4G,QAAQ,CAACsE,KAAK,CAAC,EAAE;QAC9CjM,eAAe,CAACiM,KAAK,CAAC;AACxB,MAAA;IACF,CAAE;IACFiM,UAAU,EAAG5V,CAAC,IAAK;MACjB,MAAM2J,KAAK,GAAG3J,CAAC,CAACkN,MAAM,CAACxE,OAAO,CAAC,OAAO,CAAC;AACvC,MAAA,MAAMmN,OAAO,GAAG7V,CAAC,CAAC8V,aAAa;MAC/B,IAAInM,KAAK,KAAK,CAACkM,OAAO,IAAI,CAAClM,KAAK,CAACtE,QAAQ,CAACwQ,OAAO,CAAC,CAAC,IAAI,EAACA,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,IAAPA,OAAO,CAAEnN,OAAO,CAAC,yBAAyB,CAAC,CAAA,EAAE;QAClGhL,eAAe,CAAC,IAAI,CAAC;AACxB,MAAA;IACF,CAAE;AACFqY,IAAAA,MAAM,EAAEpG,UAAW;IACnBqG,UAAU,EAAGhW,CAAC,IAAK;MACjBA,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;AACrB,IAAA;GAAE,eAGA9O,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAa,eAE1BI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,MAAM;IACZgQ,OAAO,EAAG1V,CAAC,IAAK;MACdA,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;AACnBvF,MAAAA,QAAQ,CAACyI,WAAW,CAAC,MAAM,CAAC;AAC5BuL,MAAAA,WAAW,EAAE;AACb1L,MAAAA,KAAK,EAAE;IACT,CAAE;AACFjS,IAAAA,SAAS,EAAE,CAAA,mBAAA,EAAsBoF,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAA;AAAG,GAAA,eAE1DhF,KAAA,CAAAC,aAAA,CAACO,MAAM,EAAA;AAACX,IAAAA,IAAI,EAAE;AAAG,GAAE,CACb,CAAC,eAGTG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,QAAQ;IACdgQ,OAAO,EAAG1V,CAAC,IAAK;MACdA,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;AACnBvF,MAAAA,QAAQ,CAACyI,WAAW,CAAC,QAAQ,CAAC;AAC9BuL,MAAAA,WAAW,EAAE;AACb1L,MAAAA,KAAK,EAAE;IACT,CAAE;AACFjS,IAAAA,SAAS,EAAE,CAAA,mBAAA,EAAsBsF,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAA;AAAG,GAAA,eAE5DlF,KAAA,CAAAC,aAAA,CAACQ,QAAQ,EAAA;AAACZ,IAAAA,IAAI,EAAE;AAAG,GAAE,CACf,CAAC,eAGTG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,WAAW;IACjBgQ,OAAO,EAAG1V,CAAC,IAAK;MACdA,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;AACnBvF,MAAAA,QAAQ,CAACyI,WAAW,CAAC,WAAW,CAAC;AACjCuL,MAAAA,WAAW,EAAE;AACb1L,MAAAA,KAAK,EAAE;IACT,CAAE;AACFjS,IAAAA,SAAS,EAAE,CAAA,mBAAA,EAAsBwF,WAAW,GAAG,QAAQ,GAAG,EAAE,CAAA;AAAG,GAAA,eAE/DpF,KAAA,CAAAC,aAAA,CAACS,WAAW,EAAA;AAACb,IAAAA,IAAI,EAAE;AAAG,GAAE,CAClB,CAAC,eAETG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,KAAK;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEuR,MAAAA,eAAe,EAAE,SAAS;AAAEC,MAAAA,MAAM,EAAE;AAAQ;AAAE,GAAM,CAAC,eAGjGnf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEiD,IAAAA,KAAK,EAAEoC,eAAgB;AACvB8Z,IAAAA,WAAW,EAAGnW,CAAC,IAAKA,CAAC,CAAC6F,eAAe,EAAG;IACxClM,QAAQ,EAAGqG,CAAC,IAAK;MACfA,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;AACnB,MAAA,MAAMjP,IAAI,GAAGoJ,CAAC,CAACkN,MAAM,CAACjT,KAAK;MAC3B,IAAI,CAACrD,IAAI,EAAE;MACX8c,aAAa,CAAC9c,IAAI,CAAC;MACnB0F,kBAAkB,CAAC1F,IAAI,CAAC;AACxBgS,MAAAA,KAAK,EAAE;IACT,CAAE;AACFjS,IAAAA,SAAS,EAAC,oBAAoB;AAC9BG,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE;AAAO;AAAE,GAAA,EAExB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC/K,GAAG,CAAEwd,CAAC,iBACzDrf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQiJ,IAAAA,GAAG,EAAEmW,CAAE;AAACnc,IAAAA,KAAK,EAAEmc;GAAE,EAAEA,CAAC,EAAC,IAAU,CACxC,CACK,CAAC,eAGTrf,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAO0O,IAAAA,KAAK,EAAC,YAAY;AAAC/O,IAAAA,SAAS,EAAC;AAAwB,GAAA,eAC1DI,KAAA,CAAAC,aAAA,CAACgB,MAAM,EAAA;AAACpB,IAAAA,IAAI,EAAE,EAAG;AAACE,IAAAA,KAAK,EAAE;AAAED,MAAAA,KAAK,EAAEmS;AAAU;AAAE,GAAE,CAAC,eACjDjS,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,OAAO;AACZ3N,IAAAA,KAAK,EAAE+O,SAAU;IACjBmN,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;MAClBJ,CAAC,CAAC6F,eAAe,EAAE;IACrB,CAAE;IACFlM,QAAQ,EAAGqG,CAAC,IAAK;MACfA,CAAC,CAAC6F,eAAe,EAAE;AACnBqD,MAAAA,iBAAiB,CAAClJ,CAAC,CAACkN,MAAM,CAACjT,KAAK,CAAC;IACnC,CAAE;AACFtD,IAAAA,SAAS,EAAC;AAAiB,GAC5B,CACI,CAAC,eAERI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,KAAK;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEuR,MAAAA,eAAe,EAAE,SAAS;AAAEC,MAAAA,MAAM,EAAE;AAAQ;AAAE,GAAM,CAAC,eAGjGnf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,YAAY;IAClB/O,SAAS,EAAE,sBAAsB8F,WAAW,KAAK,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAG;IAC1E0Z,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;MAClByI,IAAI,CAAC,aAAa,CAAC;MACnBnM,cAAc,CAAC,MAAM,CAAC;AACxB,IAAA;AAAE,GAAA,eAEF3F,KAAA,CAAAC,aAAA,CAACa,WAAW,EAAA;AAACjB,IAAAA,IAAI,EAAE;AAAG,GAAE,CAClB,CAAC,eAETG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,cAAc;IACpB/O,SAAS,EAAE,sBAAsB8F,WAAW,KAAK,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAG;IAC5E0Z,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;MAClByI,IAAI,CAAC,eAAe,CAAC;MACrBnM,cAAc,CAAC,QAAQ,CAAC;AAC1B,IAAA;AAAE,GAAA,eAEF3F,KAAA,CAAAC,aAAA,CAACW,aAAa,EAAA;AAACf,IAAAA,IAAI,EAAE;AAAG,GAAE,CACpB,CAAC,eAETG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,aAAa;IACnB/O,SAAS,EAAE,sBAAsB8F,WAAW,KAAK,OAAO,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAG;IAC3E0Z,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;MAClByI,IAAI,CAAC,cAAc,CAAC;MACpBnM,cAAc,CAAC,OAAO,CAAC;AACzB,IAAA;AAAE,GAAA,eAEF3F,KAAA,CAAAC,aAAA,CAACY,YAAY,EAAA;AAAChB,IAAAA,IAAI,EAAE;AAAG,GAAE,CACnB,CAAC,eAETG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,KAAK;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEuR,MAAAA,eAAe,EAAE,SAAS;AAAEC,MAAAA,MAAM,EAAE;AAAQ;AAAE,GAAM,CAAC,eAGjGnf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,gBAAgB;IACtByQ,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;MAClBgS,YAAY,CAAC,WAAW,CAAC;IAC3B,CAAE;IACFzb,SAAS,EAAE,sBAAsBkF,eAAe,KAAK,WAAW,GAAG,QAAQ,GAAG,EAAE,CAAA;AAAG,GAAA,eAEnF9E,KAAA,CAAAC,aAAA,CAACe,QAAQ,EAAA;AAACnB,IAAAA,IAAI,EAAE;AAAG,GAAE,CACf,CAAC,eACTG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,cAAc;IACpByQ,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;MAClBgS,YAAY,CAAC,SAAS,CAAC;IACzB,CAAE;IACFzb,SAAS,EAAE,sBAAsBkF,eAAe,KAAK,SAAS,GAAG,QAAQ,GAAG,EAAE,CAAA;AAAG,GAAA,eAEjF9E,KAAA,CAAAC,aAAA,CAACc,QAAQ,EAAA;AAAClB,IAAAA,IAAI,EAAE;AAAG,GAAE,CACf,CAAC,eAGTG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE0e,MAAAA,QAAQ,EAAE,UAAU;AAAEve,MAAAA,OAAO,EAAE,MAAM;AAAEC,MAAAA,UAAU,EAAE;AAAS;GAAE,eACzEH,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACCiD,IAAAA,KAAK,EAAEsC,iBAAkB;AACzB4Z,IAAAA,WAAW,EAAGnW,CAAC,IAAKA,CAAC,CAAC6F,eAAe,EAAG;IACxClM,QAAQ,EAAGqG,CAAC,IAAK;MACfA,CAAC,CAACI,cAAc,EAAE;AAClB,MAAA,MAAMsE,MAAM,GAAG1E,CAAC,CAACkN,MAAM,CAACjT,KAAK;AAC7B,MAAA,IAAIyK,MAAM,EAAE;QACV2N,kBAAkB,CAAC3N,MAAM,CAAC;QAC1BlI,oBAAoB,CAACkI,MAAM,CAAC;AAC9B,MAAA;AACAkE,MAAAA,KAAK,EAAE;IACT,CAAE;AACFjS,IAAAA,SAAS,EAAC,oBAAoB;AAC9BG,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,MAAM;AAAErJ,MAAAA,WAAW,EAAE;AAAO;GAAE,eAE7CvD,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQiD,IAAAA,KAAK,EAAC,EAAE;IAACH,QAAQ,EAAA;AAAA,GAAA,EAAC,QAAS,CAAC,EACpC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAClB,GAAG,CAAEyd,CAAC,iBAC/Btf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQiJ,IAAAA,GAAG,EAAEoW,CAAE;AAACpc,IAAAA,KAAK,EAAEoc;AAAE,GAAA,EAAEA,CAAU,CACtC,CACK,CAAC,eACTtf,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE0e,MAAAA,QAAQ,EAAE,UAAU;AAAEN,MAAAA,IAAI,EAAE,KAAK;AAAE1N,MAAAA,aAAa,EAAE,MAAM;AAAE3Q,MAAAA,KAAK,EAAE;AAAU;AAAE,GAAA,eACzFE,KAAA,CAAAC,aAAA,CAACU,YAAY,EAAA;AAACd,IAAAA,IAAI,EAAE;AAAG,GAAE,CACtB,CACF,CAAC,eAENG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,KAAK;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEuR,MAAAA,eAAe,EAAE,SAAS;AAAEC,MAAAA,MAAM,EAAE;AAAQ;AAAE,GAAM,CAAC,eAEjGnf,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,KAAK;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEuR,MAAAA,eAAe,EAAE,SAAS;AAAEC,MAAAA,MAAM,EAAE;AAAQ;AAAE,GAAM,CAAC,eAEjGnf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,UAAU;AAChB/O,IAAAA,SAAS,EAAC,oBAAoB;IAC9Bwf,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;AAClB+I,MAAAA,OAAO,EAAE;AACX,IAAA;GAAE,eAEFpS,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMF,IAAAA,KAAK,EAAE;AAAEM,MAAAA,QAAQ,EAAE;AAAO;AAAE,GAAA,EAAC,cAAQ,CACrC,CAAC,eAETL,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACEsf,IAAAA,GAAG,EAAE1b,YAAa;AAClBgN,IAAAA,IAAI,EAAC,MAAM;AACX2O,IAAAA,MAAM,EAAC,SAAS;AAChBzf,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE;KAAS;AAC3B0C,IAAAA,QAAQ,EAAE4a,iBAAkB;AAC5Bza,IAAAA,QAAQ,EAAEmD;AAAY,GACvB,CAAC,eACFlG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACbjR,IAAAA,SAAS,EAAC,oBAAoB;IAC9Bwf,WAAW,EAAGnW,CAAC,IAAK;AAAA,MAAA,IAAAwW,qBAAA;MAClBxW,CAAC,CAACI,cAAc,EAAE;AAClB,MAAA,IAAI,CAACnD,WAAW,EAAE,CAAAuZ,qBAAA,GAAA5b,YAAY,CAAC6D,OAAO,MAAA,IAAA,IAAA+X,qBAAA,KAAA,MAAA,IAApBA,qBAAA,CAAsBC,KAAK,EAAE;IACjD,CAAE;AACF3c,IAAAA,QAAQ,EAAEmD,WAAY;AACtByI,IAAAA,KAAK,EAAC;AAAc,GAAA,EAEnBzI,WAAW,gBACVlG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,aAAa;AAACG,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,MAAM;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEgS,MAAAA,WAAW,EAAE;AAAM;AAAE,GAAM,CAAC,gBAEjG3f,KAAA,CAAAC,aAAA,CAACN,OAAO,EAAA;AAACE,IAAAA,IAAI,EAAE;AAAG,GAAE,CAEhB,CAAC,eAETG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAE6M,MAAAA,KAAK,EAAE,KAAK;AAAEe,MAAAA,MAAM,EAAE,MAAM;AAAEuR,MAAAA,eAAe,EAAE,SAAS;AAAEC,MAAAA,MAAM,EAAE;AAAQ;AAAE,GAAM,CAAC,eAGjGnf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,cAAc;AACpB/O,IAAAA,SAAS,EAAC,oBAAoB;IAC9Bwf,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;AAClB,MAAA,MAAMf,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC,MAAA,IAAID,GAAG,IAAIA,GAAG,CAACE,UAAU,GAAG,CAAC,EAAE;AAC7BhE,QAAAA,iBAAiB,CAACkD,OAAO,GAAGY,GAAG,CAACG,UAAU,CAAC,CAAC,CAAC,CAACC,UAAU,EAAE;AAC5D,MAAA;MACAjC,iBAAiB,CAAC,IAAI,CAAC;AACzB,IAAA;AAAE,GAAA,eAEFzG,KAAA,CAAAC,aAAA,CAACiB,OAAO,EAAA;AAACrB,IAAAA,IAAI,EAAE;AAAG,GAAE,CACd,CAAC,eAGTG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACblC,IAAAA,KAAK,EAAC,oCAAoC;AAC1C/O,IAAAA,SAAS,EAAE,CAAA,mBAAA,EAAsBwG,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAG;IAClEgZ,WAAW,EAAGnW,CAAC,IAAK;MAClBA,CAAC,CAACI,cAAc,EAAE;AAClBjB,MAAAA,aAAa,EAAE;MACf/B,iBAAiB,CAAC,IAAI,CAAC;AACzB,IAAA;AAAE,GAAA,eAEFrG,KAAA,CAAAC,aAAA,CAACoB,OAAO,EAAA;AAACxB,IAAAA,IAAI,EAAE;AAAG,GAAE,CACd,CAAC,EAGR,CAAC,MAAM;AACN,IAAA,IAAI,OAAOwI,MAAM,KAAK,WAAW,EAAE,OAAO,IAAI;AAC9C,IAAA,MAAMC,GAAG,GAAGD,MAAM,CAACE,YAAY,EAAE;AACjC;AACA,IAAA,MAAMqX,MAAM,GAAGtX,GAAG,IAAIA,GAAG,CAACE,UAAU,GAAG,CAAC,IAAIF,GAAG,CAAC6D,UAAU,KAAKmG,aAAa,CAAChK,GAAG,CAAC6D,UAAU,EAAE,IAAI,CAAC,IAAImG,aAAa,CAAChK,GAAG,CAAC6D,UAAU,EAAE,IAAI,CAAC,CAAC;IAC1I,MAAM0T,OAAO,GAAGvX,GAAG,IAAIA,GAAG,CAACE,UAAU,GAAG,CAAC,IAAIF,GAAG,CAAC6D,UAAU,IAAImG,aAAa,CAAChK,GAAG,CAAC6D,UAAU,EAAE,OAAO,CAAC;IAErG,IAAIyT,MAAM,IAAIC,OAAO,EAAE;MACrB,oBACE7f,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAA8f,QAAA,EAAA,IAAA,eACE9f,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,KAAK,EAAE;AAAE6M,UAAAA,KAAK,EAAE,KAAK;AAAEe,UAAAA,MAAM,EAAE,MAAM;AAAEuR,UAAAA,eAAe,EAAE,SAAS;AAAEC,UAAAA,MAAM,EAAE;AAAQ;AAAE,OAAM,CAAC,eACjGnf,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,QAAAA,IAAI,EAAC,QAAQ;AAAClC,QAAAA,KAAK,EAAC,eAAe;AAAC/O,QAAAA,SAAS,EAAC,oBAAoB;QAACwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,aAAa,CAAC;AAAE,QAAA;AAAE,OAAA,EAAC,UAAW,CAAC,eAChKxS,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,QAAAA,IAAI,EAAC,QAAQ;AAAClC,QAAAA,KAAK,EAAC,eAAe;AAAC/O,QAAAA,SAAS,EAAC,oBAAoB;QAACwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,aAAa,CAAC;AAAE,QAAA;AAAE,OAAA,EAAC,UAAW,CAAC,eAChKxS,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,QAAAA,IAAI,EAAC,QAAQ;AAAClC,QAAAA,KAAK,EAAC,gBAAgB;AAAC/O,QAAAA,SAAS,EAAC,oBAAoB;QAACwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,cAAc,CAAC;AAAE,QAAA;AAAE,OAAA,EAAC,UAAW,CAAC,eAClKxS,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,QAAAA,IAAI,EAAC,QAAQ;AAAClC,QAAAA,KAAK,EAAC,eAAe;AAAC/O,QAAAA,SAAS,EAAC,oBAAoB;QAACwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,aAAa,CAAC;AAAE,QAAA;AAAE,OAAA,EAAC,UAAW,CAAC,eAChKxS,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,QAAAA,IAAI,EAAC,QAAQ;AAAClC,QAAAA,KAAK,EAAC,qBAAqB;AAAC/O,QAAAA,SAAS,EAAC,oBAAoB;QAACwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,YAAY,CAAC;AAAE,QAAA;AAAE,OAAA,eAACxS,KAAA,CAAAC,aAAA,CAACkB,aAAa,EAAA;AAACtB,QAAAA,IAAI,EAAE;AAAG,OAAE,CAAS,CAAC,eAC9LG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,KAAK,EAAE;AAAEG,UAAAA,OAAO,EAAE,MAAM;AAAE6f,UAAAA,GAAG,EAAE;AAAO;OAAE,eAC9D/f,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,QAAAA,IAAI,EAAC,QAAQ;AACblC,QAAAA,KAAK,EAAC,YAAY;AAClB/O,QAAAA,SAAS,EAAC,8CAA8C;QACxDwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,WAAW,CAAC;AAAE,QAAA;AAAE,OAAA,eAEtExS,KAAA,CAAAC,aAAA,CAACmB,OAAO,EAAA;AAACvB,QAAAA,IAAI,EAAE;AAAG,OAAE,CAAC,eACrBG,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,KAAK,EAAE;AAAEM,UAAAA,QAAQ,EAAE;AAAO;AAAE,OAAA,EAAC,KAAS,CACtC,CAAC,eAETL,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,QAAAA,IAAI,EAAC,QAAQ;AACblC,QAAAA,KAAK,EAAC,eAAe;AACrB/O,QAAAA,SAAS,EAAC,8CAA8C;QACxDwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,WAAW,CAAC;AAAE,QAAA;AAAE,OAAA,eAEtExS,KAAA,CAAAC,aAAA,CAACmB,OAAO,EAAA;AAACvB,QAAAA,IAAI,EAAE;AAAG,OAAE,CAAC,eACrBG,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,KAAK,EAAE;AAAEM,UAAAA,QAAQ,EAAE;AAAO;AAAE,OAAA,EAAC,KAAS,CACtC,CAAC,eAETL,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,QAAAA,IAAI,EAAC,QAAQ;AACblC,QAAAA,KAAK,EAAC,cAAc;AACpB/O,QAAAA,SAAS,EAAC,8CAA8C;QACxDwf,WAAW,EAAGnW,CAAC,IAAK;UAAEA,CAAC,CAACI,cAAc,EAAE;UAAEmJ,WAAW,CAAC,aAAa,CAAC;AAAE,QAAA;AAAE,OAAA,eAExExS,KAAA,CAAAC,aAAA,CAACmB,OAAO,EAAA;AAACvB,QAAAA,IAAI,EAAE;AAAG,OAAE,CAAC,eACrBG,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,KAAK,EAAE;AAAEM,UAAAA,QAAQ,EAAE;AAAO;AAAE,OAAA,EAAC,OAAW,CACxC,CACL,CACe,CAAC;AAEP,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA,CAAC,GACE,CAAC,eAERL,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEsf,IAAAA,GAAG,EAAE5b,SAAU;AACfqc,IAAAA,eAAe,EAAEhd,QAAQ,IAAID,QAAQ,KAAK,IAAK;IAC/Ckd,8BAA8B,EAAA,IAAA;AAC9BC,IAAAA,OAAO,EAAE3C,WAAY;AACrB4C,IAAAA,OAAO,EAAE3I,WAAY;AACrBwH,IAAAA,MAAM,EAAEpG,UAAW;AACnBwH,IAAAA,WAAW,EAAGnX,CAAC,IAAKA,CAAC,CAACI,cAAc,EAAG;AACvC4V,IAAAA,UAAU,EAAGhW,CAAC,IAAKA,CAAC,CAACI,cAAc,EAAG;AACtCgX,IAAAA,SAAS,EAAErX,aAAc;AACzB2V,IAAAA,OAAO,EAAElB,iBAAkB;AAC3B6C,IAAAA,OAAO,EAAEnQ,iBAAkB;AAC3BrN,IAAAA,MAAM,EAAEsN,gBAAiB;AACzBrQ,IAAAA,KAAK,EAAE;MACLyD,SAAS,EAAEA,SAAS,IAAI,OAAO;MAC/BC,SAAS,EAAEA,SAAS,IAAI,OAAO;MAC/BF,WAAW,EAAEA,WAAW,IAAI;KAC5B;AACF3D,IAAAA,SAAS,EAAE,CAAA,WAAA,EAAcoD,QAAQ,GAAG,kBAAkB,GAAG,EAAE,CAAA,EAAG0B,aAAa,GAAG,iBAAiB,GAAG,EAAE,CAAA;GACrG,CAAC,EACDqZ,kBAAkB,EAAE,eAIrB/d,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAY,eACzBI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAoB,eACjCI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAC;AAAiB,GAAA,eAACI,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAImH,OAAO,CAACE,KAAS,CAAC,EAAA,QAAY,CAAC,eACrEtH,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAC;AAAsB,GAAA,EAAC,QAAO,CAAC,eAC/CI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAML,IAAAA,SAAS,EAAC;AAAiB,GAAA,eAACI,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAImH,OAAO,CAACG,KAAS,CAAC,EAAA,aAAiB,CACtE,CACF,CAAC,EACLrD,aAAa,iBACZlE,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,mBAAmB;AAAC+e,IAAAA,OAAO,EAAEvD;GAAW,eACrDpb,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,WAAW;AAAC+e,IAAAA,OAAO,EAAG1V,CAAC,IAAKA,CAAC,CAAC6F,eAAe;GAAG,eAC7D9O,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIL,IAAAA,SAAS,EAAC;AAAiB,GAAA,EAAC,aAAe,CAAC,eAChDI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;AAAmB,GAAM,CAAC,eACzCI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAgB,eAC7BI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAgB,eAC7BI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOL,IAAAA,SAAS,EAAC;AAAW,GAAA,EAAC,WAAgB,CAAC,eAC9CI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,MAAM;AACXjR,IAAAA,SAAS,EAAC,WAAW;AACrB2gB,IAAAA,WAAW,EAAC,aAAa;AACzBrd,IAAAA,KAAK,EAAEoB,QAAS;IAChB1B,QAAQ,EAAGqG,CAAC,IAAK1E,WAAW,CAAC0E,CAAC,CAACkN,MAAM,CAACjT,KAAK;AAAE,GAC9C,CACE,CAAC,eACNlD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAgB,eAC7BI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOL,IAAAA,SAAS,EAAC;AAAW,GAAA,EAAC,KAAU,CAAC,eACxCI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,MAAM;AACXjR,IAAAA,SAAS,EAAC,WAAW;AACrB2gB,IAAAA,WAAW,EAAC,qBAAqB;AACjCrd,IAAAA,KAAK,EAAEkB,OAAQ;IACfxB,QAAQ,EAAGqG,CAAC,IAAK5E,UAAU,CAAC4E,CAAC,CAACkN,MAAM,CAACjT,KAAK,CAAE;IAC5Cmd,SAAS,EAAGpX,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAK,OAAO,IAAI8R,WAAW,EAAG;IACrDwF,SAAS,EAAA;AAAA,GACV,CACE,CACF,CAAC,eACNxgB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,mBAAmB;AAACG,IAAAA,KAAK,EAAE;AAAEof,MAAAA,MAAM,EAAE;AAAe;AAAE,GAAM,CAAC,eAC5Enf,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAkB,eAC/BI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,2BAA2B;AAAC+e,IAAAA,OAAO,EAAEvD;AAAW,GAAA,EAAC,QAAc,CAAC,eAChGpb,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,yBAAyB;AAAC+e,IAAAA,OAAO,EAAE3D,WAAY;AAACjY,IAAAA,QAAQ,EAAE,CAACqB;GAAQ,EAAC,QAAc,CAC/G,CACF,CACF,CACN,EAGAoC,cAAc,iBACbxG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,mBAAmB;AAAC+e,IAAAA,OAAO,EAAEA,MAAMlY,iBAAiB,CAAC,KAAK;GAAE,eACzEzG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,WAAW;AAAC+e,IAAAA,OAAO,EAAG1V,CAAC,IAAKA,CAAC,CAAC6F,eAAe;GAAG,eAC7D9O,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIL,IAAAA,SAAS,EAAC;AAAiB,GAAA,EAAC,cAAgB,CAAC,eACjDI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAgB,eAC7BI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOL,IAAAA,SAAS,EAAC;AAAW,GAAA,EAAC,MAAW,CAAC,eACzCI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAO4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,WAAW;AAACsD,IAAAA,KAAK,EAAE0D,SAAU;IAAChE,QAAQ,EAAGqG,CAAC,IAAKpC,YAAY,CAACoC,CAAC,CAACkN,MAAM,CAACjT,KAAK,CAAE;AAAC+M,IAAAA,GAAG,EAAC,GAAG;AAAClH,IAAAA,GAAG,EAAC;AAAI,GAAE,CAC3H,CAAC,eACN/I,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAgB,eAC7BI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOL,IAAAA,SAAS,EAAC;AAAW,GAAA,EAAC,SAAc,CAAC,eAC5CI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAO4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,WAAW;AAACsD,IAAAA,KAAK,EAAE4D,SAAU;IAAClE,QAAQ,EAAGqG,CAAC,IAAKlC,YAAY,CAACkC,CAAC,CAACkN,MAAM,CAACjT,KAAK,CAAE;AAAC+M,IAAAA,GAAG,EAAC,GAAG;AAAClH,IAAAA,GAAG,EAAC;AAAI,GAAE,CAC3H,CAAC,eACN/I,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAmB,eAChCI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,iCAAiC;AAAC+e,IAAAA,OAAO,EAAEA,MAAMlY,iBAAiB,CAAC,KAAK;AAAE,GAAA,EAAC,QAAc,CAAC,eAC1HzG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,+BAA+B;AAAC+e,IAAAA,OAAO,EAAEhK;GAAY,EAAC,QAAc,CACjG,CACF,CACF,CACN,EAGAvO,cAAc,iBACbpG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,mBAAmB;AAAC+e,IAAAA,OAAO,EAAEA,MAAMtY,iBAAiB,CAAC,KAAK;GAAE,eACzErG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,WAAW;AAAC+e,IAAAA,OAAO,EAAG1V,CAAC,IAAKA,CAAC,CAAC6F,eAAe;GAAG,eAC7D9O,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAkB,eAC/BI,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIL,IAAAA,SAAS,EAAC;AAAiB,GAAA,EAAC,aAAe,CAC5C,CAAC,eACNI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAgB,eAC7BI,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOL,IAAAA,SAAS,EAAC;AAAW,GAAA,EAAC,sCAAoC,eAAAI,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMF,IAAAA,KAAK,EAAE;AAAED,MAAAA,KAAK,EAAE;AAAU;AAAE,GAAA,EAAC,GAAO,CAAQ,CAAC,eACpHE,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,MAAM;AACXjR,IAAAA,SAAS,EAAC,WAAW;AACrBsD,IAAAA,KAAK,EAAEoD,QAAS;IAChB1D,QAAQ,EAAGqG,CAAC,IAAK1C,WAAW,CAAC0C,CAAC,CAACkN,MAAM,CAACjT,KAAK,CAAE;AAC7Cqd,IAAAA,WAAW,EAAC,mBAAmB;IAC/BC,SAAS,EAAA,IAAA;IACTH,SAAS,EAAGpX,CAAC,IAAK;AAChB,MAAA,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,IAAI5C,QAAQ,CAACuB,IAAI,EAAE,EAAEyN,WAAW,EAAE;MACvD,IAAIrM,CAAC,CAACC,GAAG,KAAK,QAAQ,EAAE7C,iBAAiB,CAAC,KAAK,CAAC;AAClD,IAAA;AAAE,GACH,CACE,CAAC,eACNrG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC;GAAmB,eAChCI,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ4Q,IAAAA,IAAI,EAAC,QAAQ;AAACjR,IAAAA,SAAS,EAAC,iCAAiC;AAAC+e,IAAAA,OAAO,EAAEA,MAAMtY,iBAAiB,CAAC,KAAK;AAAE,GAAA,EAAC,QAAc,CAAC,eAC1HrG,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACbjR,IAAAA,SAAS,EAAC,+BAA+B;IACzC+e,OAAO,EAAEA,MAAM;AACb,MAAA,IAAIrY,QAAQ,CAACuB,IAAI,EAAE,EAAE;AACnByN,QAAAA,WAAW,EAAE;AACf,MAAA;IACF,CAAE;AACFvS,IAAAA,QAAQ,EAAE,CAACuD,QAAQ,CAACuB,IAAI;GAAG,EAC5B,aAEO,CACL,CACF,CACF,CACN,EAGAjC,cAAc,iBACb5F,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKL,IAAAA,SAAS,EAAC,mBAAmB;AAAC+e,IAAAA,OAAO,EAAExW;GAAgB,eAC1DnI,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEF,IAAAA,KAAK,EAAE;AAAE0e,MAAAA,QAAQ,EAAE,UAAU;AAAE/R,MAAAA,QAAQ,EAAE,KAAK;AAAEjJ,MAAAA,SAAS,EAAE;KAAQ;AACnEkb,IAAAA,OAAO,EAAG1V,CAAC,IAAKA,CAAC,CAAC6F,eAAe;GAAG,eAEpC9O,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmW,IAAAA,GAAG,EAAEtQ,gBAAiB;AACtB/F,IAAAA,KAAK,EAAE;AACL6M,MAAAA,KAAK,EAAE,MAAM;AACbnJ,MAAAA,SAAS,EAAE,MAAM;AACjBgd,MAAAA,YAAY,EAAE,MAAM;MACpBC,SAAS,EAAE,CAAA,MAAA,EAAS1a,SAAS,CAAA,CAAA,CAAG;AAChC2a,MAAAA,UAAU,EAAE,qBAAqB;AACjCC,MAAAA,SAAS,EAAE;KACX;AACFjK,IAAAA,GAAG,EAAC;GACL,CACE,CACF,CAEJ,CAAC,EAEL9T,cAAc,IAAIG,QAAQ,iBACzBhD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKF,IAAAA,KAAK,EAAE;AAAEG,MAAAA,OAAO,EAAE,MAAM;AAAEE,MAAAA,cAAc,EAAE,UAAU;AAAE2f,MAAAA,GAAG,EAAE,MAAM;AAAEpQ,MAAAA,SAAS,EAAE;AAAO;GAAE,eAC1F3P,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACbjR,IAAAA,SAAS,EAAC,iCAAiC;AAC3C+e,IAAAA,OAAO,EAAEA,MAAMla,WAAW,CAAC,KAAK;AAAE,GAAA,EACnC,QAEO,CAAC,eACTzE,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4Q,IAAAA,IAAI,EAAC,QAAQ;AACbjR,IAAAA,SAAS,EAAC,+BAA+B;IACzC+e,OAAO,EAAEA,MAAM;AACb/b,MAAAA,QAAQ,IAAIA,QAAQ,CAACmB,IAAI,CAAC;MAC1BU,WAAW,CAAC,KAAK,CAAC;AACpB,IAAA;GAAE,EACH,cAEO,CACL,CAEJ,CAAC;AAEV;;;;","x_google_ignoreList":[4]}
|