react-tailwind-email-editor 0.0.15 → 0.0.17

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/accordion.tsx","../src/components/editor/context.tsx","../src/components/editor/Toolbox.tsx","../src/components/ui/button.tsx","../src/components/ui/scroll-area.tsx","../src/components/editor/SettingsPanel.tsx","../src/components/editor/Paper.tsx","../src/components/editor/RenderNode.tsx","../src/components/editor/components/Container.tsx","../src/components/editor/components/EmailHeader.tsx","../src/components/editor/components/EmailFooter.tsx","../src/components/editor/components/EmailButton.tsx","../src/components/editor/components/TextBlock.tsx","../src/components/editor/components/ImageBlock.tsx","../src/components/editor/components/Divider.tsx","../src/components/editor/components/InvoiceTable.tsx","../src/components/editor/components/Spacer.tsx","../src/components/editor/components/SocialLinks.tsx","../src/components/editor/components/Countdown.tsx","../src/components/editor/components/PromoCode.tsx","../src/components/editor/components/Testimonial.tsx","../src/components/editor/components/VideoPlaceholder.tsx","../src/components/editor/components/VariableText.tsx","../src/components/editor/components/IconList.tsx","../src/components/editor/defaultComponents.tsx","../src/lib/htmlExporter.ts","../src/components/ui/tabs.tsx","../src/components/editor/EmailEditor.tsx"],"names":["twMerge","clsx","AccordionPrimitive","React","jsx","jsxs","ChevronDown","createContext","useContext","useMemo","useEditor","cva","React4","Slot","React5","ScrollAreaPrimitive","selected","node","Layers","ChevronUp","Copy","Trash2","Settings2","Paintbrush","useNode","query","useEffect","useCallback","dom","_a","Fragment","Move","ArrowUp","PanelTop","PanelBottom","LayoutTemplate","Element","ArrowUpDown","Minus","Type","Image","MousePointer2","PlayCircle","List","Share2","Timer","Tag","Quote","Variable","Table","socialIcons","TabsPrimitive","React8","createPortal","useState","Undo2","Redo2","Eye","Code","Check","Download","Settings","Editor","Frame"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACCA,IAAM,SAAA,GAA+BC,6BAAA,CAAA,IAAA;AAErC,IAAM,aAAA,GAAsBC,6BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,IAClC,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAA,GAAyBC,iBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA,CAAoBF,6BAAA,CAAA,MAAA,EAAnB,EAA0B,WAAU,MAAA,EACnC,QAAA,kBAAAG,eAAA;AAAA,EAAoBH,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,8HAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDE,cAAA,CAACE,uBAAA,EAAA,EAAY,SAAA,EAAU,oDAAA,EAAqD;AAAA;AAAA;AAC9E,CAAA,EACF,CACD,CAAA;AACD,gBAAA,CAAiB,cAAiCJ,6BAAA,CAAA,OAAA,CAAQ,WAAA;AAE1D,IAAM,gBAAA,GAAyBC,6BAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0HAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD,CAAA;AAED,gBAAA,CAAiB,cAAiCA,6BAAA,CAAA,OAAA,CAAQ,WAAA;AC7B1D,IAAM,YAAA,GAA4B;AAAA,EAChC,UAAA,EAAY,GAAA;AAAA,EACZ,cAAA,EAAgB,GAAA;AAAA,EAChB,eAAA,EAAiB;AACnB,CAAA;AAEA,IAAM,gBAAgBK,oBAAA,CAAkC;AAAA,EACtD,YAAY,EAAC;AAAA,EACb,KAAA,EAAO,YAAA;AAAA,EACP,OAAO,EAAC;AAAA,EACR,WAAW,EAAC;AAAA,EACZ,WAAW,EAAC;AAAA,EACZ,eAAe,EAAC;AAAA,EAChB,KAAA,EAAO,EAAA;AAAA,EACP,WAAA,EAAa,IAAA;AAAA,EACb,WAAA,EAAa,IAAA;AAAA,EACb,iBAAA,EAAmB;AACrB,CAAC,CAAA;AAEM,IAAM,eAAA,GAAkB,MAAMC,iBAAA,CAAW,aAAa;AAOtD,IAAM,iBAAgD,CAAC;AAAA,EAC5D,QAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,WAAA,GAAcC,cAAA;AAAA,IAClB,OAAO,EAAE,GAAG,YAAA,EAAc,GAAG,MAAM,KAAA,EAAM,CAAA;AAAA,IACzC,CAAC,MAAM,KAAK;AAAA,GACd;AAEA,EAAA,MAAM,GAAA,GAAMA,cAAA;AAAA,IACV,OAAO,EAAE,GAAG,KAAA,EAAO,OAAO,WAAA,EAAY,CAAA;AAAA,IACtC,CAAC,OAAO,WAAW;AAAA,GACrB;AAEA,EAAA,uBACEL,cAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,KAAM,QAAA,EAAS,CAAA;AAElD;ACnDA,IAAM,WAAA,GAAc,CAAC,EAAE,IAAA,EAAM,QAAO,KAAwB;AAC1D,EAAA,MAAM,EAAE,UAAA,EAAW,GAAIM,cAAA,EAAU;AACjC,EAAA,MAAM,YAAY,MAAA,CAAO,SAAA;AACzB,EAAA,MAAM,OAAA,GAAU,OAAO,aAAA,GAAgB,MAAA,CAAO,eAAc,mBAAIN,eAAC,SAAA,EAAA,EAAU,CAAA;AAC3E,EAAA,MAAM,WAAW,MAAA,CAAO,IAAA;AAExB,EAAA,uBACEC,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAO,UAAA,CAAW,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,MACnD,SAAA,EAAU,0HAAA;AAAA,MACV,OAAO,MAAA,CAAO,WAAA;AAAA,MAEd,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uKAAA,EACZ,QAAA,EAAA,QAAA,oBAAYA,cAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA,EAC7C,CAAA;AAAA,wBACAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAA,EACb,iBAAO,KAAA,EACV,CAAA;AAAA,UACC,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,8CAAA,EACb,iBAAO,WAAA,EACV;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEO,IAAM,UAAU,MAAM;AAC3B,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,eAAA,EAAgB;AAGvC,EAAA,MAAM,OAAA,GAAUD,yBAAAA,CAAM,OAAA,CAAQ,MAAM;AAClC,IAAA,MAAM,MAA8D,EAAC;AACrE,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AACvD,MAAA,MAAM,GAAA,GAAM,OAAO,QAAA,IAAY,OAAA;AAC/B,MAAA,IAAI,CAAC,GAAA,CAAI,GAAG,GAAG,GAAA,CAAI,GAAG,IAAI,EAAC;AAC3B,MAAA,GAAA,CAAI,GAAG,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA,IAC9B;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AAExC,EAAA,uBACEC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACb,0BAAAA,cAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,UAAA,EAAW,cAAc,YAAA,EACtC,QAAA,EAAA,YAAA,CAAa,IAAI,CAAC,QAAA,EAAU,wBAC3BC,eAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MAEC,KAAA,EAAO,QAAA;AAAA,MACP,SAAA,EACE,GAAA,GAAM,YAAA,CAAa,MAAA,GAAS,IAAI,UAAA,GAAa,YAAA;AAAA,MAG/C,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,8FAAA,EACzB,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,wBACAC,eAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,MAAA,EAC1B,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EACZ,kBAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAA,qBACnCA,cAAAA,CAAC,WAAA,EAAA,EAAuB,MAAY,MAAA,EAAA,EAAlB,IAAkC,CACrD,CAAA,EACH,CAAA;AAAA,UACC,QAAA,KAAa,SAAA,oBACZA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,kBAAAC,eAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,YAAA,oBAAA;AAAA,YACxB,GAAA;AAAA,4BACnBD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CACb,QAAA,EAAA,gBAAA,EACH,CAAA;AAAA,YAAQ,GAAA;AAAA,YAAI;AAAA,WAAA,EAEd,CAAA,EACF;AAAA,SAAA,EAEJ;AAAA;AAAA,KAAA;AAAA,IA1BK;AAAA,GA4BR,GACH,CAAA,EACF,CAAA;AAEJ;AC7FA,IAAM,cAAA,GAAiBO,0BAAA;AAAA,EACrB,0VAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,oEAAA;AAAA,QACF,OAAA,EACE,gFAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AASA,IAAM,MAAA,GAAeC,iBAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAChE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAC9B,IAAA,uBACET,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AChDrB,IAAM,UAAA,GAAmBU,iBAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCT,eAAAA;AAAA,EAAqBU,8BAAA,CAAA,IAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAX,cAAAA,CAAqBW,8BAAA,CAAA,QAAA,EAApB,EAA6B,SAAA,EAAU,mCACrC,QAAA,EACH,CAAA;AAAA,sBACAX,eAAC,SAAA,EAAA,EAAU,CAAA;AAAA,sBACXA,cAAAA,CAAqBW,8BAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAC9B,CACD,CAAA;AACD,UAAA,CAAW,cAAkCA,8BAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,SAAA,GAAkBD,iBAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,UAAA,EAAY,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpDV,cAAAA;AAAA,EAAqBW,8BAAA,CAAA,mBAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+CAAA;AAAA,MACA,gBAAgB,UAAA,IACd,oDAAA;AAAA,MACF,gBAAgB,YAAA,IACd,sDAAA;AAAA,MACF;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAX,cAAAA,CAAqBW,8BAAA,CAAA,eAAA,EAApB,EAAoC,WAAU,wCAAA,EAAyC;AAAA;AAC1F,CACD,CAAA;AACD,SAAA,CAAU,cAAkCA,8BAAA,CAAA,mBAAA,CAAoB,WAAA;ACtBzD,IAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,eAAA,EAAgB;AAElC,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,OAAM,GAAIL,cAAAA,CAAU,CAAC,KAAA,KAAU;AAxB5D,IAAA,IAAA,EAAA;AAyBI,IAAA,MAAM,CAAC,aAAa,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,QAAA;AACrC,IAAA,IAAIM,SAAAA;AAEJ,IAAA,IAAI,aAAA,EAAe;AACjB,MAAAA,SAAAA,GAAW;AAAA,QACT,EAAA,EAAI,aAAA;AAAA,QACJ,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,aAAa,EAAE,IAAA,CAAK,IAAA;AAAA,QACtC,WAAA,EACE,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,IAAA,CAAK,WAAA,IAChC,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,IAAA,CAAK,IAAA;AAAA,QAClC,WAAU,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,YAA3B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoC,QAAA;AAAA,QAC9C,aAAa,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,KAAK,IAAA,KAAS,OAAA;AAAA,QACtD,MAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,aAAa,EAAE,IAAA,CAAK,MAAA;AAAA,QACxC,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,aAAa,EAAE,IAAA,CAAK;AAAA,OACzC;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,UAAAA,SAAAA,EAAS;AAAA,EACpB,CAAC,CAAA;AAED,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,WAAA,EAAa;AACxC,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,EAAE,EAAE,GAAA,EAAI;AACzC,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AACzB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI;AACF,QAAA,MAAM,iBAAiB,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,EAAE,EAAE,gBAAA,EAAiB;AAChE,QAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,MAAM,EAAE,GAAA,EAAI;AAC1C,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAA,IAAS,EAAC;AAC3C,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA;AACjD,QAAA,MAAM,UAAU,KAAA,CACb,mBAAA,CAAoB,cAAc,CAAA,CAClC,MAAA,CAAO,CAACC,KAAAA,KAAS;AAChB,UAAAA,KAAAA,CAAK,KAAK,CAAA,EAAGA,KAAAA,CAAK,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,GAAS,QAAA,CAAS,EAAE,EAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACpF,UAAA,OAAOA,KAAAA;AAAA,QACT,CAAC,CAAA;AACH,QAAA,OAAA,CAAQ,WAAA;AAAA,UACN,EAAE,UAAA,EAAY,OAAA,CAAQ,EAAA,EAAI,KAAA,EAAO,EAAE,CAAC,OAAA,CAAQ,EAAE,GAAG,OAAA,EAAQ,EAAE;AAAA,UAC3D,MAAA;AAAA,UACA,YAAA,GAAe;AAAA,SACjB;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,GAAA,CAAI,oBAAoB,CAAC,CAAA;AAAA,MACnC;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,MAAA,EAAQ;AACnC,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,MAAM,EAAE,GAAA,EAAI;AACnD,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAA,IAAS,EAAC;AAC3C,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA;AACjD,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,OAAA,CAAQ,KAAK,QAAA,CAAS,EAAA,EAAI,QAAA,CAAS,MAAA,EAAQ,eAAe,CAAC,CAAA;AAAA,IAC7D;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,MAAA,EAAQ;AACnC,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,MAAM,EAAE,GAAA,EAAI;AACnD,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAA,IAAS,EAAC;AAC3C,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA;AACjD,IAAA,IAAI,YAAA,GAAe,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AACtC,MAAA,OAAA,CAAQ,KAAK,QAAA,CAAS,EAAA,EAAI,QAAA,CAAS,MAAA,EAAQ,eAAe,CAAC,CAAA;AAAA,IAC7D;AAAA,EACF,CAAA;AAGA,EAAA,IAAI,KAAA,CAAM,iBAAiB,QAAA,EAAU;AACnC,IAAA,OAAOd,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,aAAA,EAAe;AAAA,MAC9C,YAAY,QAAA,CAAS,EAAA;AAAA,MACrB,YAAA,EAAc,QAAA,CAAS,WAAA,IAAe,QAAA,CAAS,IAAA;AAAA;AAAA,MAE/C,kBAAkB,QAAA,CAAS,QAAA;AAAA,MAC3B,QAAA,EAAU,SAAS,WAAA,GACf,MAAM,QAAQ,MAAA,CAAO,QAAA,CAAS,EAAE,CAAA,GAChC,MAAA;AAAA,MACJ,WAAA,EAAa,eAAA;AAAA,MACb,QAAA,EAAU,YAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,IAAI,MAAM,kBAAA,EAAoB;AAC5B,MAAA,OAAOA,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,kBAAkB,CAAA;AAAA,IACrD;AAEA,IAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,+EAAA,EACb,0BAAAA,cAAAA,CAACc,kBAAA,EAAA,EAAO,SAAA,EAAU,+BAAA,EAAgC,CAAA,EACpD,CAAA;AAAA,sBACAd,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oCAAmC,QAAA,EAAA,qBAAA,EAEjD,CAAA;AAAA,sBACAA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAgC,QAAA,EAAA,2DAAA,EAE7C;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,wCAAA,EACb,0BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,wBACjDA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBACX,QAAA,EAAA,QAAA,CAAS,WAAA,IAAe,SAAS,IAAA,EACpC;AAAA,OAAA,EACF,CAAA,EACF,CAAA;AAAA,MAEC,SAAS,WAAA,oBACRC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,cAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,YAAA;AAAA,YACT,KAAA,EAAM,SAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACe,qBAAA,EAAA,EAAU,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAC5C;AAAA,wBACAd,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,cAAA;AAAA,YACT,KAAA,EAAM,WAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACE,uBAAAA,EAAA,EAAY,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAC9C;AAAA,wBACAD,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,eAAA;AAAA,YACT,KAAA,EAAM,WAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACgB,gBAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SACvC;AAAA,wBACAhB,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,aAAA;AAAA,YACV,OAAA,EAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,SAAS,EAAE,CAAA;AAAA,YACzC,KAAA,EAAM,QAAA;AAAA,YAEN,QAAA,kBAAAA,cAAAA,CAACiB,kBAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAClC,OAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAjB,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,QAAA,EACpB,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACZ,QAAA,EAAA,QAAA,CAAS,QAAA,mBACRA,cAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,UAAA,EAAW,YAAA,EAAc,CAAC,SAAS,CAAA,EACjD,QAAA,kBAAAC,eAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAM,SAAA,EAAU,SAAA,EAAU,UAAA,EACvC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,oBAAiB,SAAA,EAAU,iCAAA,EAC1B,0BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAACkB,qBAAA,EAAA,EAAU,SAAA,EAAU,+BAAA,EAAgC,CAAA;AAAA,wBACrDlB,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,YAAA,EAAU;AAAA,OAAA,EAClB,CAAA,EACF,CAAA;AAAA,sBACAA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,MAAA,EACzB,UAAAD,yBAAAA,CAAM,aAAA,CAAc,QAAA,CAAS,QAAQ,CAAA,EACxC;AAAA,KAAA,EACF,GACF,CAAA,mBAEAE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gDAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAACmB,sBAAA,EAAA,EAAW,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,sBACxDnB,cAAAA,CAAC,GAAA,EAAA,EAAE,QAAA,EAAA,wBAAA,EAAsB;AAAA,KAAA,EAC3B,GAEJ,CAAA,EACF,CAAA;AAAA,oBAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DACb,QAAA,kBAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,gBAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,QAAA,aAAA;AAAA,QAAY,QAAA,CAAS;AAAA,OAAA,EAAK,CAAA;AAAA,sBAChCD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACb,mBAAS,EAAA,CAAG,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EACzB;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AChNO,IAAM,KAAA,GAAQ,CAAC,EAAE,QAAA,EAAU,YAAW,KAAkB;AAC7D,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,OAAA,EAAQ,KAAMoB,YAAA,EAAQ;AAC5C,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,eAAA,EAAgB;AAElC,EAAA,MAAM,EAAA,GAAK,UAAA,IAAc,KAAA,CAAM,eAAA,IAAmB,SAAA;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,GAAI,CAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,UAAA,IAAc,GAAG,CAAA,EAAA,CAAA;AAAA,QACjC,SAAA,EAAW,CAAA,EAAG,KAAA,CAAM,cAAA,IAAkB,GAAG,CAAA,EAAA,CAAA;AAAA,QACzC,MAAA,EAAQ,QAAA;AAAA,QACR,eAAA,EAAiB,EAAA;AAAA,QACjB,SAAA,EAAW,gCAAA;AAAA,QACX,QAAA,EAAU;AAAA,OACZ;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEA,IAAM,gBAAgB,MAAM;AAC1B,EAAA,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,UAAA,EAAW,GAAIoB,YAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC9D,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC9B,CAAE,CAAA;AAEF,EAAA,uBACEpB,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,kBAAAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,oBAClEA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,OAAO,UAAA,IAAc,SAAA;AAAA,QACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAuB,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,QACnF,SAAA,EAAU;AAAA;AAAA;AACZ,GAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAA;AAEA,KAAA,CAAM,KAAA,GAAQ;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACvDO,IAAM,UAAA,GAAa,CAAC,EAAE,MAAA,EAAO,KAAmC;AACrE,EAAA,MAAM,EAAE,EAAA,EAAG,GAAIoB,YAAAA,EAAQ;AACvB,EAAA,MAAM,EAAE,SAAS,KAAA,EAAO,QAAA,KAAad,cAAAA,CAAU,CAAC,GAAGe,MAAAA,MAAW;AAAA,IAC5D,UAAUA,MAAAA,CAAM,QAAA,CAAS,UAAU,CAAA,CAAE,SAAS,EAAE;AAAA,GAClD,CAAE,CAAA;AAEF,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA,EAAY,EAAE,IAAA,EAAK;AAAA,IACnB;AAAA,GACF,GAAID,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,IACrB,KAAK,IAAA,CAAK,GAAA;AAAA,IACV,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,WAAA,IAAe,KAAK,IAAA,CAAK,WAAA;AAAA,IAChD,UAAU,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,WAAA,EAAY;AAAA,IAC1C,WAAW,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,WAAA,EAAY;AAAA,IAC3C,MAAA,EAAQ,KAAK,IAAA,CAAK;AAAA,GACpB,CAAE,CAAA;AAEF,EAAAE,gBAAA,CAAU,MAAM;AACd,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,GAAA,CAAI,SAAA,CAAU,IAAI,oBAAoB,CAAA;AAAA,MACxC,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,SAAA,CAAU,OAAO,oBAAoB,CAAA;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,QAAA,EAAU,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,MAAA,GAASC,kBAAA,CAAY,CAACC,IAAAA,KAA4B;AACtD,IAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAM,MAAA,KAAWA,IAAAA,GAAMA,IAAAA,CAAI,qBAAA,EAAsB,GAAI,EAAE,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA,EAAE;AAC/F,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,CAAA,EAAG,GAAA,GAAM,CAAA,GAAI,MAAM,MAAM,CAAA,EAAA,CAAA;AAAA,MAC9B,IAAA,EAAM,GAAG,IAAI,CAAA,EAAA;AAAA,KACf;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,MAAA,GAASD,mBAAY,MAAM;AAC/B,IAAA,MAAM,UAAA,GAAa,GAAA;AACnB,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAK,GAAI,OAAO,UAAU,CAAA;AAAA,EAEzC,CAAA,EAAG,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhB,EAAAD,gBAAA,CAAU,MAAM;AApDlB,IAAA,IAAA,EAAA;AAqDI,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,aAAA,CAAc,mBAAmB,CAAA,KAA1C,IAAA,GAAA,MAAA,GAAA,EAAA,CAA6C,iBAAiB,QAAA,EAAU,MAAA,CAAA;AACxE,IAAA,OAAO,MAAM;AAtDjB,MAAA,IAAAG,GAAAA;AAuDM,MAAA,CAAAA,GAAAA,GAAA,SAAS,aAAA,CAAc,mBAAmB,MAA1C,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA6C,oBAAoB,QAAA,EAAU,MAAA,CAAA;AAAA,IAC7E,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACExB,gBAAAyB,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,OAAA,IAAW,2BACVzB,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,kHAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,aAAA,EAAe;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA,oBACCD,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,CAAC,GAAA,KAAQ,GAAA,IAAO,KAAK,GAAG,CAAA;AAAA,cAC7B,SAAA,EAAU,aAAA;AAAA,cAEV,QAAA,kBAAAA,cAAAA,CAAC2B,gBAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC5B;AAAA,0BAEF3B,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UACX,0BACCA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,cACxC,SAAA,EAAU,mDAAA;AAAA,cAEV,QAAA,kBAAAA,cAAAA,CAAC4B,mBAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAC/B;AAAA;AAAA,KAEJ,GACE,IAAA;AAAA,IACH;AAAA,GAAA,EACH,CAAA;AAEJ;ACjFO,IAAM,SAAA,GAAY,CAAC,EAAE,UAAA,GAAa,WAAW,OAAA,GAAU,EAAA,EAAI,UAAS,KAAsB;AAC/F,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMR,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO;AAAA,OACT;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,YAAY,OAAA,EAAQ,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACvE,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,UAAA,IAAc,SAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACvF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACzDO,IAAM,cAAc,CAAC;AAAA,EAC1B,OAAA,GAAU,EAAA;AAAA,EACV,WAAA,GAAc,cAAA;AAAA,EACd,eAAA,GAAkB,SAAA;AAAA,EAClB,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU;AACZ,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,OAAA,oBACCD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,GAAA,EAAI,MAAA;AAAA,YACJ,KAAA,EAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,cAAc,MAAA;AAAO;AAAA,SACnD;AAAA,wBAEFA,cAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,OAAA,EAAS,WAAA,EAAa,eAAA,EAAiB,SAAA,EAAW,OAAA,EAAQ,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC7G,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,OAAA,GAAU,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACtF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa,cAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACjHO,IAAM,cAAc,CAAC;AAAA,EAC1B,WAAA,GAAc,cAAA;AAAA,EACd,OAAA,GAAU,gCAAA;AAAA,EACV,KAAA,GAAQ,kBAAA;AAAA,EACR,KAAA,GAAQ,gBAAA;AAAA,EACR,eAAA,GAAkB,SAAA;AAAA,EAClB,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU;AACZ,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW,QAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACd;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,UAAA,EAAY,MAAA,IAC9E,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,wBACAA,cAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAY,EACjE,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,wBACAC,eAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAY,EAAG,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,UAC7D,KAAA;AAAA,UAAM,YAAA;AAAA,UAAW;AAAA,SAAA,EAC3B,CAAA;AAAA,wBACAA,eAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,KAAI,EAAG,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UAAA,iBACjF,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UAAE,GAAA;AAAA,UAAE,WAAA;AAAA,UAAY;AAAA,SAAA,EAC5C;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,WAAA,EAAa,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,iBAAiB,SAAA,EAAW,OAAA,EAAQ,GAAImB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC3H,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,OAAA,GAAU,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACtF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,cAAA;AAAA,IACb,OAAA,EAAS,gCAAA;AAAA,IACT,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,gBAAA;AAAA,IACP,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACnIO,IAAM,cAAc,CAAC;AAAA,EAC1B,IAAA,GAAO,YAAA;AAAA,EACP,IAAA,GAAO,GAAA;AAAA,EACP,eAAA,GAAkB,SAAA;AAAA,EAClB,SAAA,GAAY,SAAA;AAAA,EACZ,YAAA,GAAe,CAAA;AAAA,EACf,QAAA,GAAW,EAAA;AAAA,EACX,QAAA,GAAW,EAAA;AAAA,EACX,QAAA,GAAW,EAAA;AAAA,EACX,KAAA,GAAQ;AACV,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACX;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,eAAA;AAAA,YACA,KAAA,EAAO,SAAA;AAAA,YACP,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,YAClC,YAAA,EAAc,GAAG,YAAY,CAAA,EAAA,CAAA;AAAA,YAC7B,cAAA,EAAgB,MAAA;AAAA,YAChB,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,YACrB,UAAA,EAAY,MAAA;AAAA,YACZ,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,MAAM,IAAA,EAAM,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAc,UAAU,QAAA,EAAU,QAAA,EAAU,OAAM,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC7I,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,YAAA;AAAA,IAC9B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACzB,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACnH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,YAAA,IAAgB,CAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACrG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QAAa;AAAA,OAAA,EAAE;AAAA,KAAA,EAClE,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACjG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,GAAA;AAAA,IACN,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW,SAAA;AAAA,IACX,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACrJO,IAAM,YAAY,CAAC;AAAA,EACxB,IAAA,GAAO,yBAAA;AAAA,EACP,QAAA,GAAW,EAAA;AAAA,EACX,UAAA,GAAa,QAAA;AAAA,EACb,KAAA,GAAQ,SAAA;AAAA,EACR,KAAA,GAAQ,MAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,UAAA,GAAa;AACf,CAAA,KAAsB;AACpB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,YACrB,UAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW,KAAA;AAAA,YACX,UAAA;AAAA,YACA,MAAA,EAAQ,CAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,OAAO,OAAA,EAAS,UAAA,EAAW,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACjH,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC9B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACjF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC/F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,UAAA,IAAc,QAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAA2B,CAAA;AAAA,UAC5G,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA;AAC3B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,SAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAClF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACjH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,GAAA;AAAA,UACN,OAAO,UAAA,IAAc,GAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,UAAA,GAAa,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACnG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,UAAA,EAAW;AAAA,KAAA,EAC9D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,yBAAA;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC/IO,IAAM,aAAa,CAAC;AAAA,EACzB,GAAA,GAAM,qCAAA;AAAA,EACN,GAAA,GAAM,OAAA;AAAA,EACN,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA,GAAQ,QAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,YAAA,GAAe;AACjB,CAAA,KAAuB;AACrB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMoB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,GAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL,KAAA;AAAA,YACA,QAAA,EAAU,MAAA;AAAA,YACV,YAAA,EAAc,GAAG,YAAY,CAAA,EAAA,CAAA;AAAA,YAC7B,OAAA,EAAS;AAAA;AACX;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAM,qBAAqB,MAAM;AAC/B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,GAAA,EAAK,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,EAAa,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACjG,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAChC,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,GAAA,GAAM,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACjF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,GAAA,GAAM,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACjF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UAClH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA4B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC/F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,YAAA,IAAgB,CAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA4B,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACpG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QAAa;AAAA,OAAA,EAAE;AAAA,KAAA,EAClE;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,UAAA,CAAW,KAAA,GAAQ;AAAA,EACjB,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,qCAAA;AAAA,IACL,GAAA,EAAK,OAAA;AAAA,IACL,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC/HO,IAAM,UAAU,CAAC;AAAA,EACtB,KAAA,GAAQ,SAAA;AAAA,EACR,SAAA,GAAY,CAAA;AAAA,EACZ,MAAA,GAAS,EAAA;AAAA,EACT,KAAA,GAAQ;AACV,CAAA,KAAoB;AAClB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,QAClB,SAAA,EAAW;AAAA,OACb;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,MAAA,EAAQ,MAAA;AAAA,YACR,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA;AAAA,YACxC,KAAA;AAAA,YACA,MAAA,EAAQ;AAAA;AACV;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAM,kBAAkB,MAAM;AAC5B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,KAAA,EAAM,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACnF,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,IACxB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACzB,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,SAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAyB,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAChF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,SAAA,IAAa,CAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAyB,KAAA,CAAM,SAAA,GAAY,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAAU;AAAA,OAAA,EAAE;AAAA,KAAA,EAC/D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,sBACrEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,MAAA,IAAU,EAAA;AAAA,UACjB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAyB,KAAA,CAAM,MAAA,GAAS,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC3F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,MAAA;AAAA,QAAO;AAAA,OAAA,EAAE;AAAA,KAAA,EAC5D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAyB,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAChF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,OAAA,CAAQ,KAAA,GAAQ;AAAA,EACd,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ,EAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACvFO,IAAM,eAAe,CAAC;AAAA,EAC3B,KAAA,GAAQ;AAAA,IACN,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,IAC7D,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,EAAA;AAAG,GAC9D;AAAA,EACA,QAAA,GAAW,SAAA;AAAA,EACX,WAAA,GAAc,SAAA;AAAA,EACd,WAAA,GAAc,SAAA;AAAA,EACd,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA,GAAW;AACb,CAAA,KAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,UAAA,EAAY,EAAE,OAAA,EAAS,IAAA;AAAK,MAC1BoB,YAAAA,EAAQ;AAEZ,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AAAA,IAClB,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,WAAW,IAAA,CAAK,SAAA;AAAA,IAC1C;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAiC;AAAA,IACrC,OAAA,EAAS,WAAA;AAAA,IACT,YAAA,EAAc,aAAa,WAAW,CAAA,CAAA;AAAA,IACtC,UAAA,EAAY,mBAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,MAAM,WAAA,GAAmC;AAAA,IACvC,GAAG,SAAA;AAAA,IACH,eAAA,EAAiB,QAAA;AAAA,IACjB,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAEA,EAAA,uBACEpB,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,CAAC,QAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,GAAG,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,IACxD,QAAA,kBAAAC,eAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,MAAA;AAAA,QACP,cAAA,EAAgB,UAAA;AAAA,QAChB,MAAA,EAAQ,aAAa,WAAW,CAAA;AAAA,OAClC;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAC,eAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,WAAA,EAAa,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,0BACnCA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,MAAA,EAAO,EAAG,QAAA,EAAA,KAAA,EAEnE,CAAA;AAAA,0BACAA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,EAAG,QAAA,EAAA,YAAA,EAEnE,CAAA;AAAA,0BACAA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,EAAG,QAAA,EAAA,QAAA,EAEnE;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACAA,cAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAChBC,eAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,SAAA,EAAY,eAAK,WAAA,EAAY,CAAA;AAAA,0BACxCA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,SAAA,EAAW,QAAA,EAAS,EAC5C,QAAA,EAAA,IAAA,CAAK,QAAA,EACR,CAAA;AAAA,0BACAC,gBAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,SAAA,EAAW,OAAA,EAAQ,EAC3C,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YACA,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,CAAC;AAAA,WAAA,EAC3B,CAAA;AAAA,0BACAA,gBAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,SAAA,EAAW,OAAA,EAAQ,EAC3C,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YAAA,CACC,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAC;AAAA,WAAA,EAC7C;AAAA,SAAA,EAAA,EAZO,KAaT,CACD,CAAA,EACH,CAAA;AAAA,QACC,6BACCD,cAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAC,gBAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,cAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,CAAA;AAAA,cACT,OAAO,EAAE,GAAG,WAAW,SAAA,EAAW,OAAA,EAAS,YAAY,MAAA,EAAO;AAAA,cAC/D,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAC,eAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,GAAG,SAAA;AAAA,gBACH,SAAA,EAAW,OAAA;AAAA,gBACX,UAAA,EAAY,MAAA;AAAA,gBACZ,eAAA,EAAiB;AAAA,eACnB;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,QAAA;AAAA,gBACA,KAAA,CAAM,QAAQ,CAAC;AAAA;AAAA;AAAA;AAClB,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAEA,IAAM,uBAAuB,MAAM;AACjC,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF,GAAImB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC5B,CAAE,CAAA;AAEF,EAAA,MAAM,UAAA,GAAa,CACjB,KAAA,EACA,KAAA,EACA,KAAA,KACG;AACH,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,MAAM,WAAW,CAAC,GAAI,KAAA,CAAM,KAAA,IAAS,EAAG,CAAA;AACxC,MAAA,QAAA,CAAS,KAAK,CAAA,GAAI,EAAE,GAAG,QAAA,CAAS,KAAK,CAAA,EAAG,CAAC,KAAK,GAAG,KAAA,EAAM;AACvD,MAAA,KAAA,CAAM,KAAA,GAAQ,QAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,KAAA,CAAM,KAAA,GAAQ;AAAA,QACZ,GAAI,KAAA,CAAM,KAAA,IAAS,EAAC;AAAA,QACpB,EAAE,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,CAAA,EAAG,WAAW,CAAA;AAAE,OACvD;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,KAAA,CAAM,KAAA,GAAA,CAAS,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,OAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA;AAAA,IAChE,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,MAAA,CAC7D,KAAA,IAAS,EAAC,EAAG,GAAA,CAAI,CAAC,IAAA,EAAW,KAAA,qBAC7BC,eAAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAU,wCAAA,EACzB,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,OAAO,IAAA,CAAK,WAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,OAAO,aAAA,EAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAChE,SAAA,EAAU,8CAAA;AAAA,YACV,WAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBACAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,cAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAO,IAAA,CAAK,QAAA;AAAA,cACZ,QAAA,EAAU,CAAC,CAAA,KACT,UAAA,CAAW,KAAA,EAAO,UAAA,EAAY,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK,CAAC,CAAA;AAAA,cAE7D,SAAA,EAAU,uCAAA;AAAA,cACV,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACAA,cAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAO,IAAA,CAAK,SAAA;AAAA,cACZ,QAAA,EAAU,CAAC,CAAA,KACT,UAAA;AAAA,gBACE,KAAA;AAAA,gBACA,WAAA;AAAA,gBACA,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK;AAAA,eAChC;AAAA,cAEF,SAAA,EAAU,yCAAA;AAAA,cACV,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACAA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,cAC/B,SAAA,EAAU,sEAAA;AAAA,cACX,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF;AAAA,OAAA,EAAA,EArCQ,KAsCV,CACD,CAAA;AAAA,sBACDA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,OAAA;AAAA,UACT,SAAA,EAAU,+FAAA;AAAA,UACX,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,iBAAA,EAElD,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,QAAA,IAAY,GAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KAA8B,KAAA,CAAM,QAAA,GAAW,EAAE,MAAA,CAAO;AAAA,WAC3D;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,mBAAA,EAElD,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,QAAA,IAAY,SAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KAA8B,KAAA,CAAM,QAAA,GAAW,EAAE,MAAA,CAAO;AAAA,WAC3D;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,mBAAA,EAElD,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KACE,KAAA,CAAM,WAAA,GAAc,EAAE,MAAA,CAAO;AAAA,WAClC;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KACE,KAAA,CAAM,WAAA,GAAc,EAAE,MAAA,CAAO;AAAA,WAClC;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,SAAS,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,IAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KACE,KAAA,CAAM,SAAA,GAAY,EAAE,MAAA,CAAO;AAAA,WAChC;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,uBAAsB,QAAA,EAAA,gBAAA,EAAc;AAAA,KAAA,EACvD;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,YAAA,CAAa,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,MAC7D,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,EAAA;AAAG,KAC9D;AAAA,IACA,QAAA,EAAU,SAAA;AAAA,IACV,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACjTO,IAAM,MAAA,GAAS,CAAC,EAAE,MAAA,GAAS,IAAG,KAAmB;AACtD,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMoB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,GAAG,MAAM,CAAA,EAAA,CAAA;AAAA,QACjB,KAAA,EAAO,MAAA;AAAA,QACP,eAAA,EAAiB;AAAA;AACnB;AAAA,GACF;AAEJ;AAEA,IAAM,iBAAiB,MAAM;AAC3B,EAAA,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,MAAA,EAAO,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC1D,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC1B,CAAE,CAAA;AAEF,EAAA,uBACEpB,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,kBAAAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,oBACxDA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,GAAA,EAAK,CAAA;AAAA,QACL,GAAA,EAAK,GAAA;AAAA,QACL,OAAO,MAAA,IAAU,EAAA;AAAA,QACjB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAwB,KAAA,CAAM,MAAA,GAAS,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,QAC1F,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,MAAA,MAAA;AAAA,MAAO;AAAA,KAAA,EAAE;AAAA,GAAA,EAC5D,CAAA,EACF,CAAA;AAEJ,CAAA;AAEA,MAAA,CAAO,KAAA,GAAQ;AAAA,EACb,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AClCA,IAAM,WAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,uDAAA;AAAA,EACV,OAAA,EAAS,uDAAA;AAAA,EACT,SAAA,EAAW,yDAAA;AAAA,EACX,QAAA,EAAU,yDAAA;AAAA,EACV,OAAA,EAAS,yDAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B,KAAA,GAAQ;AAAA,IACN,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA,EAAI;AAAA,IACjC,EAAE,QAAA,EAAU,SAAA,EAAW,GAAA,EAAK,GAAA,EAAI;AAAA,IAChC,EAAE,QAAA,EAAU,WAAA,EAAa,GAAA,EAAK,GAAA,EAAI;AAAA,IAClC,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA;AAAI,GACnC;AAAA,EACA,QAAA,GAAW,EAAA;AAAA,EACX,SAAA,GAAY,SAAA;AAAA,EACZ,eAAA,GAAkB,aAAA;AAAA,EAClB,KAAA,GAAQ,QAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,GAAA,GAAM;AACR,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEA,0BAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAS,aAAA,EAAe,GAAA,EAAK,CAAA,EAAG,GAAG,MAAK,EACnD,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,0BAChBA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UAEC,MAAM,IAAA,CAAK,GAAA;AAAA,UACX,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,KAAA,EAAO,QAAA;AAAA,YACP,MAAA,EAAQ;AAAA,WACV;AAAA,UAEA,QAAA,kBAAAA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,cAC9B,KAAK,IAAA,CAAK,QAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,MAAA;AAAA,gBACR,SAAA,EAAW;AAAA;AACb;AAAA;AACF,SAAA;AAAA,QAhBK;AAAA,OAkBR,CAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,OAAA,EAAS,GAAA,EAAK,eAAA,EAAgB,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACzG,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACnC,CAAE,CAAA;AAEF,EAAA,MAAM,YAAY,CAAC,UAAA,EAAY,WAAW,WAAA,EAAa,UAAA,EAAY,WAAW,QAAQ,CAAA;AACtF,EAAA,MAAM,YAAA,GAAe,SAAS,EAAC;AAE/B,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAqB;AAC3C,IAAA,MAAM,SAAS,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,KAAkB,CAAA,CAAE,aAAa,QAAQ,CAAA;AAC3E,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAA,CAAQ,CAAC,KAAA,KAA4B;AACnC,QAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAkB,CAAA,CAAE,aAAa,QAAQ,CAAA;AAAA,MAC9E,CAAC,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,CAAC,KAAA,KAA4B;AACnC,QAAA,KAAA,CAAM,KAAA,GAAQ,CAAC,GAAG,YAAA,EAAc,EAAE,QAAA,EAA8C,GAAA,EAAK,KAAK,CAAA;AAAA,MAC5F,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,QAAA,EAAkB,GAAA,KAAgB;AACnD,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA4B;AACnC,MAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,GAAA;AAAA,QAAI,CAAC,MAC9B,CAAA,CAAE,QAAA,KAAa,WAAW,EAAE,GAAG,CAAA,EAAG,GAAA,EAAI,GAAI;AAAA,OAC5C;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,qBACdC,eAAAA,CAAC,OAAA,EAAA,EAAqB,WAAU,gDAAA,EAC9B,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,UAAA;AAAA,YACL,SAAS,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,KAAkB,CAAA,CAAE,aAAa,QAAQ,CAAA;AAAA,YACrE,QAAA,EAAU,MAAM,cAAA,CAAe,QAAQ,CAAA;AAAA,YACvC,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAc,QAAA,EAAA,QAAA,EAAS;AAAA,OAAA,EAAA,EAP7B,QAQZ,CACD,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,IAEC,aAAa,GAAA,CAAI,CAAC,IAAA,qBACjBC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,QAAA;AAAA,QAAS;AAAA,OAAA,EAAI,CAAA;AAAA,sBAChFD,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,CAAK,GAAA;AAAA,UACZ,QAAA,EAAU,CAAC,CAAA,KAAM,SAAA,CAAU,KAAK,QAAA,EAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UACxD,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EAAA,EARQ,IAAA,CAAK,QASf,CACD,CAAA;AAAA,oBAEDC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACjG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,sBACrDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,GAAA,GAAM,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC5F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAAI;AAAA,OAAA,EAAE;AAAA,KAAA,EACzD,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACnH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA,EAAI;AAAA,MACjC,EAAE,QAAA,EAAU,SAAA,EAAW,GAAA,EAAK,GAAA,EAAI;AAAA,MAChC,EAAE,QAAA,EAAU,WAAA,EAAa,GAAA,EAAK,GAAA,EAAI;AAAA,MAClC,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA;AAAI,KACnC;AAAA,IACA,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW,SAAA;AAAA,IACX,eAAA,EAAiB,aAAA;AAAA,IACjB,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACnNO,IAAM,YAAY,CAAC;AAAA,EACxB,KAAA,GAAQ,cAAA;AAAA,EACR,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,OAAA,GAAU,EAAA;AAAA,EACV,eAAA,GAAkB,SAAA;AAAA,EAClB,WAAA,GAAc,SAAA;AAAA,EACd,UAAA,GAAa,SAAA;AAAA,EACb,UAAA,GAAa,SAAA;AAAA,EACb,aAAA,GAAgB,iBAAA;AAAA,EAChB,OAAA,GAAU;AACZ,CAAA,KAAsB;AACpB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,MAAM,UAAU,CAAC,EAAE,KAAA,EAAO,KAAA,uBACxBnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,aAAA;AAAA,QACZ,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAc,KAAA;AAAA,QACd,SAAA,EAAW,QAAA;AAAA,QACX,QAAA,EAAU;AAAA,OACZ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO,WAAA;AAAA,cACP,UAAA,EAAY,mBAAA;AAAA,cACZ,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG;AAAA;AAAA,SAChC;AAAA,wBACAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,UAAA;AAAA,cACP,aAAA,EAAe,WAAA;AAAA,cACf,aAAA,EAAe,KAAA;AAAA,cACf,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAGF,EAAA,uBACEC,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCD,cAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,UAAA;AAAA,cACP,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,YAAA,EAAc,MAAA;AAAA,cACd,UAAA,EAAY,mBAAA;AAAA,cACZ,MAAA,EAAQ;AAAA,aACV;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEFC,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cACT,GAAA,EAAK,MAAA;AAAA,cACL,cAAA,EAAgB;AAAA,aAClB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,OAAM,MAAA,EAAO,CAAA;AAAA,8BACnCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,OAAM,OAAA,EAAQ,CAAA;AAAA,8BACrCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,OAAM,MAAA,EAAO,CAAA;AAAA,8BACtCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,OAAM,MAAA,EAAO;AAAA;AAAA;AAAA;AACxC;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,aAAA;AAAA,IAC/B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAClF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,wBACtDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,OAAO,IAAA,IAAQ,CAAA;AAAA,YACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,IAAA,GAAO,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC3F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,sBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACvDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAO,KAAA,IAAS,CAAA;AAAA,YAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC5F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,sBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,wBACzDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAO,OAAA,IAAW,CAAA;AAAA,YAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,sBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,wBACzDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAO,OAAA,IAAW,CAAA;AAAA,YAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC5F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,UAAA,IAAc,SAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACvF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,cAAA;AAAA,IACP,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,EAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,OAAA,EAAS,EAAA;AAAA,IACT,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,SAAA;AAAA,IACb,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,iBAAA;AAAA,IACf,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC/OO,IAAM,YAAY,CAAC;AAAA,EACxB,KAAA,GAAQ,0BAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,WAAA,GAAc,qDAAA;AAAA,EACd,eAAA,GAAkB,SAAA;AAAA,EAClB,WAAA,GAAc,SAAA;AAAA,EACd,cAAA,GAAiB,SAAA;AAAA,EACjB,SAAA,GAAY,SAAA;AAAA,EACZ,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU,EAAA;AAAA,EACV,WAAA,GAAc;AAChB,CAAA,KAAsB;AACpB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,MAAA,EAAQ,CAAA,IAAA,EAAO,WAAW,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,QACzC,YAAA,EAAc,KAAA;AAAA,QACd,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW,QAAA;AAAA,QACX,MAAA,EAAQ;AAAA,OACV;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,YAAA,EAAc,MAAA;AAAA,cACd,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAGFA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,cAAA;AAAA,cACT,eAAA,EAAiB,cAAA;AAAA,cACjB,MAAA,EAAQ,aAAa,WAAW,CAAA,CAAA;AAAA,cAChC,YAAA,EAAc,KAAA;AAAA,cACd,OAAA,EAAS,WAAA;AAAA,cACT,YAAA,EAAc;AAAA,aAChB;AAAA,YAEA,QAAA,kBAAAA,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,MAAA;AAAA,kBACZ,UAAA,EAAY,WAAA;AAAA,kBACZ,aAAA,EAAe,KAAA;AAAA,kBACf,KAAA,EAAO;AAAA,iBACT;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,SACF;AAAA,QAEC,+BACCA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,SAAA;AAAA,cACP,UAAA,EAAY,mBAAA;AAAA,cACZ,OAAA,EAAS;AAAA,aACX;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,cAAA,EAAgB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,cAAA;AAAA,IAChC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC/B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAClF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,WAAA,EAAc,CAAA;AAAA,UAC/F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,WAAA,IAAe,QAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAuC,CAAA;AAAA,UACzH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,OAAA,EAAQ,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BAC3BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA;AAAA;AAC/B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC5F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACtF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,0BAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,qDAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,SAAA;AAAA,IACb,cAAA,EAAgB,SAAA;AAAA,IAChB,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACnNO,IAAM,cAAc,CAAC;AAAA,EAC1B,KAAA,GAAQ,+FAAA;AAAA,EACR,UAAA,GAAa,eAAA;AAAA,EACb,WAAA,GAAc,eAAA;AAAA,EACd,WAAA,GAAc,EAAA;AAAA,EACd,eAAA,GAAkB,SAAA;AAAA,EAClB,UAAA,GAAa,SAAA;AAAA,EACb,WAAA,GAAc,SAAA;AAAA,EACd,WAAA,GAAc,SAAA;AAAA,EACd,OAAA,GAAU,EAAA;AAAA,EACV,aAAA,GAAgB;AAClB,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,UAAA,EAAY,aAAa,WAAW,CAAA,CAAA;AAAA,QACpC,MAAA,EAAQ;AAAA,OACV;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,aAAA,oBACCD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,WAAA;AAAA,cACP,OAAA,EAAS,GAAA;AAAA,cACT,UAAA,EAAY,CAAA;AAAA,cACZ,YAAA,EAAc,OAAA;AAAA,cACd,UAAA,EAAY;AAAA,aACd;AAAA,YACD,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBAGFA,cAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,SAAA,EAAW,QAAA;AAAA,cACX,KAAA,EAAO,UAAA;AAAA,cACP,UAAA,EAAY,GAAA;AAAA,cACZ,MAAA,EAAQ,YAAA;AAAA,cACR,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEAC,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,MAAA,EAAO,EAC9D,QAAA,EAAA;AAAA,UAAA,WAAA,oBACCD,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,GAAA,EAAK,UAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAc,KAAA;AAAA,gBACd,SAAA,EAAW;AAAA;AACb;AAAA,WACF;AAAA,0BAEFC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,MAAA;AAAA,kBACZ,KAAA,EAAO,UAAA;AAAA,kBACP,UAAA,EAAY;AAAA,iBACd;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,+BACCA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,MAAA;AAAA,kBACV,KAAA,EAAO,WAAA;AAAA,kBACP,UAAA,EAAY;AAAA,iBACd;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EAEJ;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACjC,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,UAAA,IAAc,EAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACzF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAA,cAAAA,CAAC,KAAA,EAAA,EACC,0BAAAC,eAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,gDAAA,EACf,QAAA,EAAA;AAAA,sBAAAD,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,SAAS,aAAA,KAAkB,KAAA;AAAA,UAC3B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,aAAA,GAAgB,CAAA,CAAE,MAAA,CAAO,OAAQ,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MAAE;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,UAAA,IAAc,SAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACzF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,+FAAA;AAAA,IACP,UAAA,EAAY,eAAA;AAAA,IACZ,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,EAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS,EAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC7OO,IAAM,mBAAmB,CAAC;AAAA,EAC/B,YAAA,GAAe,mFAAA;AAAA,EACf,QAAA,GAAW,GAAA;AAAA,EACX,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA,GAAQ,QAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,eAAA,GAAkB,SAAA;AAAA,EAClB,cAAA,GAAiB;AACnB,CAAA,KAA6B;AAC3B,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,QAAA,EAAU,UAAA;AAAA,YACV,KAAA;AAAA,YACA,QAAA,EAAU;AAAA,WACZ;AAAA,UAEA,QAAA,kBAAAC,eAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,UAAA;AAAA,gBACV,YAAA,EAAc,GAAG,YAAY,CAAA,EAAA,CAAA;AAAA,gBAC7B,QAAA,EAAU;AAAA,eACZ;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,YAAA;AAAA,oBACL,GAAA,EAAI,iBAAA;AAAA,oBACJ,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,MAAA;AAAA,sBACP,OAAA,EAAS;AAAA;AACX;AAAA,iBACF;AAAA,gCAGAA,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,QAAA,EAAU,UAAA;AAAA,sBACV,GAAA,EAAK,CAAA;AAAA,sBACL,IAAA,EAAM,CAAA;AAAA,sBACN,KAAA,EAAO,CAAA;AAAA,sBACP,MAAA,EAAQ,CAAA;AAAA,sBACR,eAAA,EAAiB,cAAc,cAAc,CAAA,CAAA,CAAA;AAAA,sBAC7C,OAAA,EAAS,MAAA;AAAA,sBACT,UAAA,EAAY,QAAA;AAAA,sBACZ,cAAA,EAAgB;AAAA,qBAClB;AAAA,oBAGA,QAAA,kBAAAA,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,KAAA,EAAO,MAAA;AAAA,0BACP,MAAA,EAAQ,MAAA;AAAA,0BACR,eAAA,EAAiB,iBAAA;AAAA,0BACjB,YAAA,EAAc,KAAA;AAAA,0BACd,OAAA,EAAS,MAAA;AAAA,0BACT,UAAA,EAAY,QAAA;AAAA,0BACZ,cAAA,EAAgB,QAAA;AAAA,0BAChB,MAAA,EAAQ,aAAa,eAAe,CAAA;AAAA,yBACtC;AAAA,wBAEA,QAAA,kBAAAA,cAAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,KAAA,EAAO,CAAA;AAAA,8BACP,MAAA,EAAQ,CAAA;AAAA,8BACR,SAAA,EAAW,wBAAA;AAAA,8BACX,YAAA,EAAc,wBAAA;AAAA,8BACd,UAAA,EAAY,cAAc,eAAe,CAAA,CAAA;AAAA,8BACzC,UAAA,EAAY;AAAA;AACd;AAAA;AACF;AAAA;AACF;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAM,2BAA2B,MAAM;AACrC,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,YAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,YAAA;AAAA,IAC9B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,YAAA;AAAA,IAC9B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,cAAA,EAAgB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAClC,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,YAAA,IAAgB,EAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,YAAA,GAAe,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAChG,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,QAAA,GAAW,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC5F,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACzF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACxH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,sBACnEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnG,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,sBACjEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,GAAA;AAAA,UACN,OAAO,cAAA,IAAkB,GAAA;AAAA,UACzB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAkC,KAAA,CAAM,cAAA,GAAiB,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9G,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAkC,QAAA,EAAA,CAAA,cAAA,IAAkB,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,KAAA,EACtF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,YAAA,IAAgB,CAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAkC,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC1G,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QAAa;AAAA,OAAA,EAAE;AAAA,KAAA,EAClE,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAkC,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACrG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,gBAAA,CAAiB,KAAA,GAAQ;AAAA,EACvB,KAAA,EAAO;AAAA,IACL,YAAA,EAAc,mFAAA;AAAA,IACd,QAAA,EAAU,GAAA;AAAA,IACV,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc,CAAA;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACpOA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,EAAE,GAAA,EAAK,gBAAA,EAAkB,KAAA,EAAO,YAAA,EAAc,SAAS,MAAA,EAAO;AAAA,EAC9D,EAAE,GAAA,EAAK,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,SAAS,KAAA,EAAM;AAAA,EAC3D,EAAE,GAAA,EAAK,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,SAAS,UAAA,EAAW;AAAA,EAChE,EAAE,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,OAAA,EAAS,SAAS,kBAAA,EAAmB;AAAA,EAChE,EAAE,GAAA,EAAK,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,SAAS,UAAA,EAAW;AAAA,EAC5D,EAAE,GAAA,EAAK,oBAAA,EAAsB,KAAA,EAAO,WAAA,EAAa,SAAS,SAAA,EAAU;AAAA,EACpE,EAAE,GAAA,EAAK,kBAAA,EAAoB,KAAA,EAAO,cAAA,EAAgB,SAAS,YAAA,EAAa;AAAA,EACxE,EAAE,GAAA,EAAK,cAAA,EAAgB,KAAA,EAAO,UAAA,EAAY,SAAS,YAAA,EAAa;AAAA,EAChE,EAAE,GAAA,EAAK,kBAAA,EAAoB,KAAA,EAAO,cAAA,EAAgB,SAAS,WAAA,EAAY;AAAA,EACvE,EAAE,GAAA,EAAK,kBAAA,EAAoB,KAAA,EAAO,SAAA,EAAW,SAAS,WAAA;AACxD;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,KAAiB;AAC5C,EAAA,IAAI,QAAA,GAAW,IAAA;AACf,EAAA,mBAAA,CAAoB,OAAA,CAAQ,CAAC,EAAE,GAAA,EAAK,SAAQ,KAAM;AAChD,IAAA,QAAA,GAAW,QAAA,CAAS,OAAA;AAAA,MAAQ,IAAI,MAAA,CAAO,GAAA,CAAI,QAAQ,OAAA,EAAS,MAAM,GAAG,GAAG,CAAA;AAAA,MACtE,sJAAsJ,OAAO,CAAA,OAAA;AAAA,KAC/J;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,QAAA;AACT,CAAA;AAEO,IAAM,eAAe,CAAC;AAAA,EAC3B,IAAA,GAAO,kEAAA;AAAA,EACP,QAAA,GAAW,EAAA;AAAA,EACX,UAAA,GAAa,QAAA;AAAA,EACb,KAAA,GAAQ,SAAA;AAAA,EACR,KAAA,GAAQ,MAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,UAAA,GAAa;AACf,CAAA,KAAyB;AACvB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,YACrB,UAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW,KAAA;AAAA,YACX,UAAA;AAAA,YACA,MAAA,EAAQ,CAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACd;AAAA,UACA,uBAAA,EAAyB,EAAE,MAAA,EAAQ,mBAAA,CAAoB,IAAI,CAAA;AAAE;AAAA;AAC/D;AAAA,GACF;AAEJ;AAEA,IAAM,uBAAuB,MAAM;AACjC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,OAAO,OAAA,EAAS,UAAA,EAAW,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACjH,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC9B,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAqB;AAC3C,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,KAAA,CAAM,IAAA,GAAA,CAAQ,KAAA,CAAM,IAAA,IAAQ,EAAA,IAAM,QAAA;AAAA,IACpC,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,sBACjEA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBACZ,QAAA,EAAA,mBAAA,CAAoB,GAAA,CAAI,CAAC,CAAA,qBACxBA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,MAAM,cAAA,CAAe,CAAA,CAAE,GAAG,CAAA;AAAA,UACnC,SAAA,EAAU,qHAAA;AAAA,UAET,QAAA,EAAA,CAAA,CAAE;AAAA,SAAA;AAAA,QAJE,CAAA,CAAE;AAAA,OAMV,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA8B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAClG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,UAAA,IAAc,QAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAA2B,CAAA;AAAA,UAC/G,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA;AAC3B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,SAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACrF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACpH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA8B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACjG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,GAAA;AAAA,UACN,OAAO,UAAA,IAAc,GAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA8B,KAAA,CAAM,UAAA,GAAa,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACtG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,UAAA,EAAW;AAAA,KAAA,EAC9D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,YAAA,CAAa,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,kEAAA;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACzLA,IAAM,KAAA,GAAQ;AAAA,EACZ,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,WAAA;AAAA,EACN,MAAA,EAAQ,WAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,WAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB,KAAA,GAAQ;AAAA,IACN,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,4BAAA,EAA6B;AAAA,IACpD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,0BAAA,EAA2B;AAAA,IAClD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,uBAAA,EAAwB;AAAA,IAC/C,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,6BAAA;AAA8B,GACvD;AAAA,EACA,SAAA,GAAY,SAAA;AAAA,EACZ,SAAA,GAAY,SAAA;AAAA,EACZ,eAAA,GAAkB,aAAA;AAAA,EAClB,QAAA,GAAW,EAAA;AAAA,EACX,QAAA,GAAW,EAAA;AAAA,EACX,GAAA,GAAM,EAAA;AAAA,EACN,OAAA,GAAU;AACZ,CAAA,KAAqB;AACnB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMoB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,SAAA,EAAW,MAAA;AAAA,YACX,MAAA,EAAQ,CAAA;AAAA,YACR,OAAA,EAAS,CAAA;AAAA,YACT,OAAA,EAAS,MAAA;AAAA,YACT,aAAA,EAAe,QAAA;AAAA,YACf,GAAA,EAAK,GAAG,GAAG,CAAA,EAAA;AAAA,WACb;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChBC,eAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,MAAA;AAAA,gBACT,UAAA,EAAY,YAAA;AAAA,gBACZ,GAAA,EAAK,MAAA;AAAA,gBACL,UAAA,EAAY;AAAA,eACd;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,SAAA;AAAA,sBACP,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,sBACrB,UAAA,EAAY,GAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBAEC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,IAA0B,CAAA,IAAK,IAAA,CAAK;AAAA;AAAA,iBAClD;AAAA,gCACAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,SAAA;AAAA,sBACP,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,sBACrB,UAAA,EAAY;AAAA,qBACd;AAAA,oBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA,aAAA;AAAA,YA1BK;AAAA,WA4BR;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,mBAAmB,MAAM;AAC7B,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,MAAM,YAAA,GAAe,SAAS,EAAC;AAE/B,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,EAAe,KAAA,EAAwB,KAAA,KAAkB;AAC3E,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAyB;AAChC,MAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,GAAA;AAAA,QAAI,CAAC,IAAA,EAAgB,CAAA,KAC9C,CAAA,KAAM,KAAA,GAAQ,EAAE,GAAG,IAAA,EAAM,CAAC,KAAK,GAAG,KAAA,EAAM,GAAI;AAAA,OAC9C;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAyB;AAChC,MAAA,KAAA,CAAM,KAAA,GAAQ,CAAC,GAAG,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,CAAA;AAAA,IACrE,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAyB;AAChC,MAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,EAAa,CAAA,KAAc,MAAM,KAAK,CAAA;AAAA,IAC3E,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAgB,KAAA,qBACjCC,eAAAA,CAAC,KAAA,EAAA,EAAgB,WAAU,wBAAA,EACzB,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,IAAA,CAAK,IAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,OAAO,MAAA,EAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACzD,SAAA,EAAU,0CAAA;AAAA,YAET,iBAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,IAAI,CAAA,qBACpCA,cAAAA,CAAC,QAAA,EAAA,EAAiB,OAAO,GAAA,EAAM,QAAA,EAAA,IAAA,EAAA,EAAlB,GAAuB,CACrC;AAAA;AAAA,SACH;AAAA,wBACAA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,OAAO,IAAA,CAAK,IAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,OAAO,MAAA,EAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACzD,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,YAC/B,SAAA,EAAU,4DAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EAAA,EArBQ,KAsBV,CACD,CAAA,EACH,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,OAAA;AAAA,UACT,SAAA,EAAU,4FAAA;AAAA,UACX,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA0B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACrF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA0B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACrF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,sBACrDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,GAAA,GAAM,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACzF,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAAI;AAAA,OAAA,EAAE;AAAA,KAAA,EACzD,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC7F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,QAAA,CAAS,KAAA,GAAQ;AAAA,EACf,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,4BAAA,EAA6B;AAAA,MACpD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,0BAAA,EAA2B;AAAA,MAClD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,uBAAA,EAAwB;AAAA,MAC/C,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,6BAAA;AAA8B,KACvD;AAAA,IACA,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,eAAA,EAAiB,aAAA;AAAA,IACjB,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC9OO,IAAM,kBAAA,GAAwC;AAAA,EACnD,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAM4B,oBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,0BAAA;AAAA,IACb,IAAA,EAAMC,uBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa,yBAAA;AAAA,IACb,IAAA,EAAMC,0BAAA;AAAA,IACN,QAAA,EAAU,QAAA;AAAA,IACV,aAAA,EAAe,sBAAM/B,cAAAA,CAACgC,cAAA,EAAQ,EAAA,EAAI,SAAA,EAAW,MAAA,EAAM,IAAA,EAAC;AAAA,GACtD;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,oBAAA;AAAA,IACb,IAAA,EAAMC,uBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,SAAA,EAAW,OAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,2BAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,sBAAA;AAAA,IACb,IAAA,EAAMC,gBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,SAAA,EAAW,UAAA;AAAA,IACX,KAAA,EAAO,OAAA;AAAA,IACP,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAMC,yBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,SAAA,EAAW,gBAAA;AAAA,IACX,KAAA,EAAO,OAAA;AAAA,IACP,WAAA,EAAa,2BAAA;AAAA,IACb,IAAA,EAAMC,sBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa,iBAAA;AAAA,IACb,IAAA,EAAMC,gBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,oBAAA;AAAA,IACb,IAAA,EAAMC,kBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,mBAAA;AAAA,IACb,IAAA,EAAMC,eAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EAAa,sBAAA;AAAA,IACb,IAAA,EAAMC,oBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEd;AAGO,IAAM,aAAA,GAAgB,CAC3B,QAAA,KAC6C;AAC7C,EAAA,MAAM,WAAqD,EAAC;AAC5D,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACrD,IAAA,QAAA,CAAS,IAAI,IAAI,MAAA,CAAO,SAAA;AAAA,EAC1B;AACA,EAAA,OAAO,QAAA;AACT;AAGO,IAAM,aAAA,GAAgB,CAAC,QAAA,KAA0C;AACtE,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,KAAA,MAAW,MAAA,IAAU,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,EAAG;AAC5C,IAAA,IAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,EAC/C;AACA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;;;ACvKO,IAAM,iBAAA,GAAoB,CAC/B,KAAA,EACA,eAAA,KACW;AACX,EAAA,MAAM,UAAA,GAAa,CAAC,MAAA,KAA2B;AAC7C,IAAA,MAAM,IAAA,GAAO,MAAM,MAAM,CAAA;AACzB,IAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAElB,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,aAAY,GAAI,IAAA;AACxD,IAAA,MAAM,WAAW,IAAA,CAAK,YAAA;AAEtB,IAAA,IAAI,YAAA,GAAe,EAAA;AACnB,IAAA,IAAI,UAAA,IAAc,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AACvC,MAAA,YAAA,GAAe,UAAA,CAAW,IAAI,CAAC,OAAA,KAAoB,WAAW,OAAO,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA,CAAE,OAAA,CAAQ,CAAC,QAAA,KAAqB;AACvD,QAAA,YAAA,IAAgB,WAAW,QAAQ,CAAA;AAAA,MACrC,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,mDAAkB,QAAA,CAAA,EAAW;AAC/B,MAAA,MAAM,SAAS,eAAA,CAAgB,QAAQ,EAAE,QAAA,EAAU,KAAA,EAAO,cAAc,WAAW,CAAA;AACnF,MAAA,IAAI,MAAA,KAAW,MAAM,OAAO,MAAA;AAAA,IAC9B;AAEA,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,OAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wGAAA,EAsB2F,KAAA,CAAM,cAAc,SAAS,CAAA;AAAA;AAAA;AAAA,EAGrI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAA,CAAA;AAAA,MAUR,KAAK,WAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,UAAA,IAAc,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,EAC7G,YAAY;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKR,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,SAAA,GAAa,MAAM,SAAA,IAAwB,EAAA;AACjD,QAAA,MAAM,aAAa,GAAA,GAAM,SAAA;AACzB,QAAA,MAAM,YAAW,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,aAAA,CAAA,IAAiB,WAAW,WAAA,CAAY,aAAa,CAAC,CAAA,GAAI,EAAA;AACzF,QAAA,MAAM,aAAY,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,cAAA,CAAA,IAAkB,WAAW,WAAA,CAAY,cAAc,CAAC,CAAA,GAAI,EAAA;AAE5F,QAAA,OAAO;AAAA,+GAAA,EACkG,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA;AAAA,6BAAA,EAErJ,SAAS,CAAA,sCAAA,EAA0C,KAAA,CAAM,GAAA,GAAiB,KAAK,EAAE,CAAA;AAAA,oBAAA,EAC1F,QAAQ;AAAA;AAAA,6BAAA,EAEC,UAAU,CAAA,qCAAA,EAAyC,KAAA,CAAM,GAAA,GAAiB,KAAK,EAAE,CAAA;AAAA,oBAAA,EAC1F,SAAS;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAIzB;AAAA,MAEA,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,oBAAA,EAC9F,MAAM,OAAA,GAAU,CAAA,UAAA,EAAa,KAAA,CAAM,OAAO,iEAAiE,EAAE;AAAA,sCAAA,EAC3F,MAAM,SAAA,IAAa,SAAS,CAAA,kFAAA,EAAqF,KAAA,CAAM,eAAe,cAAc,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKtL,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,qCAAA,EAC7E,MAAM,SAAA,IAAa,SAAS,CAAA,0DAAA,EAA6D,KAAA,CAAM,eAAe,cAAc,CAAA;AAAA,qCAAA,EAC5H,MAAM,SAAA,IAAa,SAAS,CAAA,uCAAA,EAA0C,KAAA,CAAM,WAAW,gCAAgC,CAAA;AAAA,qCAAA,EACvH,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,8CAAA,EAAiD,KAAA,CAAM,SAAS,kBAAkB,CAAA,UAAA,EAAa,KAAA,CAAM,KAAA,IAAS,gBAAgB,CAAA;AAAA,qCAAA,EAC1J,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,2DAAA,EAAA,iBAA2D,IAAI,IAAA,EAAK,EAAE,WAAA,EAAa,CAAA,CAAA,EAAI,KAAA,CAAM,WAAA,IAAe,cAAc,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKvL,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,KAAA,CAAM,SAAS,QAAQ,CAAA;AAAA,6BAAA,EACnC,KAAA,CAAM,IAAA,IAAQ,GAAG,CAAA,kDAAA,EAAqD,KAAA,CAAM,eAAA,IAAmB,SAAS,CAAA,SAAA,EAAY,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,WAAA,EAAc,MAAM,QAAA,IAAY,EAAE,CAAA,GAAA,EAAM,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,mBAAA,EAAsB,KAAA,CAAM,YAAA,IAAgB,CAAC,CAAA,sCAAA,EAAyC,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,wDAAA,EAA2D,KAAA,CAAM,QAAQ,YAAY,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKpa,KAAK,WAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,yCAAA,EAChB,KAAA,CAAM,YAAY,EAAE,CAAA,iBAAA,EAAoB,MAAM,UAAA,IAAc,QAAQ,CAAA,SAAA,EAAY,KAAA,CAAM,KAAA,IAAS,SAAS,iBAAiB,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,cAAc,GAAG,CAAA,8CAAA,EAAiD,KAAA,CAAM,IAAA,IAAQ,yBAAyB,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKpT,KAAK,cAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,yCAAA,EAChB,KAAA,CAAM,YAAY,EAAE,CAAA,iBAAA,EAAoB,MAAM,UAAA,IAAc,QAAQ,CAAA,SAAA,EAAY,KAAA,CAAM,KAAA,IAAS,SAAS,iBAAiB,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,cAAc,GAAG,CAAA,8CAAA,EAAiD,KAAA,CAAM,IAAA,IAAQ,EAAE,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK7R,KAAK,YAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,MAAM,KAAA,IAAS,QAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,8BAAA,EACnE,KAAA,CAAM,GAAA,IAAO,qCAAqC,CAAA,OAAA,EAAU,MAAM,GAAA,IAAO,OAAO,CAAA,gBAAA,EAAmB,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,kCAAA,EAAqC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK9M,KAAK,kBAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,MAAM,KAAA,IAAS,QAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,6BAAA,EACpE,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA,gCAAA,EAClB,KAAA,CAAM,YAAA,IAAgB,qCAAqC,CAAA,sCAAA,EAAyC,KAAA,CAAM,SAAS,MAAM,CAAA,kCAAA,EAAqC,KAAA,CAAM,YAAA,IAAgB,CAAC,CAAA;AAAA,2MAAA,EACV,KAAA,CAAM,mBAAmB,SAAS,CAAA;AAAA,uOAAA,EACN,KAAA,CAAM,mBAAmB,SAAS,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAOrQ,KAAK,SAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,KAAA,CAAM,UAAU,EAAE,CAAA;AAAA,yDAAA,EACC,KAAA,CAAM,SAAA,IAAa,CAAC,CAAA,SAAA,EAAY,KAAA,CAAM,SAAS,SAAS,CAAA,SAAA,EAAY,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK9I,KAAK,QAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,qCAAA,EAGwB,MAAM,MAAA,IAAU,EAAE,CAAA,iBAAA,EAAoB,KAAA,CAAM,UAAU,EAAE,CAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAIzF,KAAK,aAAA,EAAe;AAClB,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAsD,EAAC;AAC5E,QAAA,MAAM,QAAA,GAAY,MAAM,QAAA,IAAuB,EAAA;AAC/C,QAAA,MAAM,GAAA,GAAO,MAAM,GAAA,IAAkB,EAAA;AAErC,QAAA,MAAMC,YAAAA,GAAsC;AAAA,UAC1C,QAAA,EAAU,uDAAA;AAAA,UACV,OAAA,EAAS,uDAAA;AAAA,UACT,SAAA,EAAW,yDAAA;AAAA,UACX,QAAA,EAAU,yDAAA;AAAA,UACV,OAAA,EAAS,yDAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACV;AAEA,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAAA,mBAAA,EACzB,IAAA,CAAK,GAAG,CAAA,0CAAA,EAA6C,GAAA,GAAM,CAAC,CAAA;AAAA,sBAAA,EACzDA,YAAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,IAAK,EAAE,CAAA,OAAA,EAAU,IAAA,CAAK,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,YAAA,EAAe,QAAQ,CAAA;AAAA;AAAA,QAAA,CAExH,CAAA,CAAE,KAAK,EAAE,CAAA;AAEV,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,KAAA,CAAM,KAAA,IAAS,QAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA,sBAAA,EAAyB,KAAA,CAAM,eAAA,IAAmB,aAAa,CAAA;AAAA,oBAAA,EAC5I,SAAS;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAIzB;AAAA,MAEA,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,QAAA,GAAW,CAAA,YAAA,EAAe,KAAA,CAAM,aAAA,IAAiB,iBAAiB,CAAA,mGAAA,CAAA;AACxE,QAAA,MAAM,WAAA,GAAc,CAAA,2CAAA,EAA8C,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,iCAAA,CAAA;AAChG,QAAA,MAAM,UAAA,GAAa,CAAA,wBAAA,EAA2B,KAAA,CAAM,UAAA,IAAc,SAAS,CAAA,iDAAA,CAAA;AAE3E,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,oBAAA,EAC9F,KAAA,CAAM,KAAA,GAAQ,CAAA,kBAAA,EAAqB,KAAA,CAAM,UAAA,IAAc,SAAS,CAAA,2FAAA,EAA8F,KAAA,CAAM,KAAK,CAAA,KAAA,CAAA,GAAU,EAAE;AAAA;AAAA;AAAA,mCAAA,EAGtK,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,IAAA,IAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EACxD,UAAU,CAAA;AAAA;AAAA,mCAAA,EAEb,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,KAAA,IAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EACzD,UAAU,CAAA;AAAA;AAAA,mCAAA,EAEb,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,OAAA,IAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EAC3D,UAAU,CAAA;AAAA;AAAA,mCAAA,EAEb,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,OAAA,IAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EAC3D,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAO5C;AAAA,MAEA,KAAK,WAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA,kDAAA,EAIqC,KAAA,CAAM,eAAA,IAAmB,SAAS,CAAA,cAAA,EAAiB,MAAM,WAAA,IAAe,QAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,+BAAA,EAAkC,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,sBAAA,EACnM,KAAA,CAAM,KAAA,GAAQ,CAAA,uDAAA,EAA0D,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,wDAAA,EAA2D,KAAA,CAAM,KAAK,CAAA,MAAA,CAAA,GAAW,EAAE;AAAA,2EAAA,EAClI,MAAM,cAAA,IAAkB,SAAS,CAAA,oBAAA,EAAuB,KAAA,CAAM,eAAe,SAAS,CAAA;AAAA,6HAAA,EACpC,MAAM,SAAA,IAAa,SAAS,CAAA,GAAA,EAAM,KAAA,CAAM,QAAQ,QAAQ,CAAA;AAAA;AAAA,sBAAA,EAE/J,KAAA,CAAM,WAAA,GAAc,CAAA,oCAAA,EAAuC,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,iDAAA,EAAoD,KAAA,CAAM,WAAW,CAAA,MAAA,CAAA,GAAW,EAAE;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAM3L,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA,kDAAA,EAIqC,KAAA,CAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA,2BAAA,EAA8B,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA;AAAA,sBAAA,EAC3J,KAAA,CAAM,kBAAkB,KAAA,GAAQ,CAAA,oCAAA,EAAuC,MAAM,WAAA,IAAe,SAAS,gGAAgG,EAAE;AAAA,4EAAA,EACjJ,MAAM,UAAA,IAAc,SAAS,CAAA,sEAAA,EAAyE,KAAA,CAAM,SAAS,EAAE,CAAA;AAAA;AAAA;AAAA,0BAAA,EAGzK,KAAA,CAAM,cAAc,CAAA,mEAAA,EAAsE,KAAA,CAAM,WAAW,CAAA,OAAA,EAAU,KAAA,CAAM,UAAU,CAAA,8DAAA,CAAA,GAAmE,EAAE;AAAA;AAAA,mFAAA,EAEjJ,MAAM,UAAA,IAAc,SAAS,CAAA,mCAAA,EAAsC,KAAA,CAAM,cAAc,EAAE,CAAA;AAAA,4BAAA,EAChJ,KAAA,CAAM,WAAA,GAAc,CAAA,oCAAA,EAAuC,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,mCAAA,EAAsC,KAAA,CAAM,WAAW,CAAA,MAAA,CAAA,GAAW,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MASrL,KAAK,UAAA,EAAY;AACf,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAmD,EAAC;AACzE,QAAA,MAAM,KAAA,GAAgC;AAAA,UACpC,KAAA,EAAO,QAAA;AAAA,UAAK,IAAA,EAAM,QAAA;AAAA,UAAK,KAAA,EAAO,QAAA;AAAA,UAAK,MAAA,EAAQ,QAAA;AAAA,UAAK,KAAA,EAAO,QAAA;AAAA,UACvD,IAAA,EAAM,WAAA;AAAA,UAAM,MAAA,EAAQ,WAAA;AAAA,UAAM,OAAA,EAAS,QAAA;AAAA,UAAK,IAAA,EAAM,WAAA;AAAA,UAAM,KAAA,EAAO;AAAA,SAC7D;AAEA,QAAA,MAAM,QAAA,GAAW,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAAA;AAAA,wEAAA,EAE6B,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,aAAA,EAAgB,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,uBAAA,EAA0B,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,IAAK,KAAK,IAAI,CAAA;AAAA,mDAAA,EAC5I,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,aAAA,EAAgB,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,sCAAA,EAAyC,KAAA,CAAM,GAAA,IAAO,EAAE,CAAA,qCAAA,EAAwC,KAAK,IAAI,CAAA;AAAA;AAAA,QAAA,CAErN,CAAA,CAAE,KAAK,EAAE,CAAA;AAEV,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,MAAM,OAAA,IAAW,EAAE,CAAA,sBAAA,EAAyB,KAAA,CAAM,mBAAmB,aAAa,CAAA;AAAA;AAAA,sBAAA,EAElG,QAAQ;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK1B;AAAA,MAEA,KAAK,cAAA,EAAgB;AACnB,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAiF,EAAC;AACvG,QAAA,MAAM,QAAA,GAAY,MAAM,QAAA,IAAuB,GAAA;AAC/C,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,EAAW,CAAC,CAAA;AAEjF,QAAA,MAAM,WAAA,GAAc,CAAA,kBAAA,EAAqB,KAAA,CAAM,QAAA,IAAY,SAAS,CAAA,SAAA,EAAY,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,oFAAA,EAAuF,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,CAAA,CAAA;AACnO,QAAA,MAAM,SAAA,GAAY,CAAA,6CAAA,EAAgD,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,kDAAA,CAAA;AAEhG,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA,gJAAA,EAImI,KAAA,CAAM,eAAe,SAAS,CAAA;AAAA;AAAA,mCAAA,EAE3I,WAAW,CAAA;AAAA,mCAAA,EACX,WAAW,CAAA;AAAA,mCAAA,EACX,WAAW,CAAA;AAAA,mCAAA,EACX,WAAW,CAAA;AAAA;AAAA,sBAAA,EAExB,KAAA,CAAM,IAAI,CAAA,IAAA,KAAQ;AAAA;AAAA,mCAAA,EAEL,SAAS,CAAA,EAAA,EAAK,IAAA,CAAK,WAAW,CAAA;AAAA,mCAAA,EAC9B,SAAS,CAAA,sBAAA,EAAyB,IAAA,CAAK,QAAQ,CAAA;AAAA,mCAAA,EAC/C,SAAS,wBAAwB,QAAQ,CAAA,EAAG,KAAK,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,mCAAA,EACrE,SAAS,CAAA,qBAAA,EAAwB,QAAQ,CAAA,EAAA,CAAI,IAAA,CAAK,WAAW,IAAA,CAAK,SAAA,EAAW,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,2BAAA,CAChG,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC;AAAA,sBAAA,EACd,KAAA,CAAM,cAAc,KAAA,GAAQ;AAAA;AAAA,+CAAA,EAEH,SAAS,CAAA;AAAA,mCAAA,EACrB,SAAS,CAAA,mEAAA,EAAsE,QAAQ,GAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,2BAAA,CAAA,GAChH,EAAE;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK3B;AAAA,MAEA;AACE,QAAA,OAAO,YAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,OAAO,WAAW,MAAM,CAAA;AAC1B;AC/WA,IAAM,IAAA,GAAqBC,wBAAA,CAAA,IAAA;AAE3B,IAAM,QAAA,GAAiBC,6BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhD,cAAAA;AAAA,EAAe+C,wBAAA,CAAA,IAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,QAAA,CAAS,cAA4BA,wBAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBC,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhD,cAAAA;AAAA,EAAe+C,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qYAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;AAEhD,IAAM,WAAA,GAAoBC,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhD,cAAAA;AAAA,EAAe+C,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;ACoBhD,IAAM,QAA8B,CAAC;AAAA,EACnC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,GAAA;AAAA,EACX,SAAA,GAAY;AACd,CAAA,KAAM;AACJ,EAAA,MAAM,QAAA,GAAWhD,yBAAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,yBAAAA,CAAM,SAAS,KAAK,CAAA;AAE5D,EAAAuB,iBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAqB;AACpC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,EAAQ;AAAA,IAClC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AAElB,EAAAA,iBAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA;AACjC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAC/B,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,IAAA;AAAA,MACjC,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAA,iBAAU,MAAM;AACd,IAAA,IAAI,IAAA,IAAQ,QAAA,CAAS,OAAA,EAAS,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,EACvD,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,OAAO2B,qBAAA;AAAA,oBACLjD,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACX,iBAAA,EAAiB,QAAQ,aAAA,GAAgB,MAAA;AAAA,QACzC,kBAAA,EAAkB,cAAc,YAAA,GAAe,MAAA;AAAA,QAC/C,WAAA,EAAa,CAAC,CAAA,KAAM;AAClB,UAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,aAAA,EAAe,OAAA,EAAQ;AAAA,QAC5C,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,OAAA;AAAA,UACV,KAAA,EAAO,CAAA;AAAA,UACP,MAAA,EAAQ,IAAA;AAAA,UACR,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,eAAA,EAAiB,iBAAA;AAAA,UACjB,OAAA,EAAS;AAAA,SACX;AAAA,QAEA,QAAA,kBAAAC,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,QAAA,EAAU,EAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,eAAA,EAAiB,SAAA;AAAA,cACjB,YAAA,EAAc,MAAA;AAAA,cACd,SAAA,EAAW,0DAAA;AAAA,cACX,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,cACrB,SAAA;AAAA,cACA,SAAA,EAAW,MAAA;AAAA,cACX,OAAA,EAAS;AAAA,aACX;AAAA,YAGA,QAAA,EAAA;AAAA,8BAAAD,cAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,OAAA;AAAA,kBACT,YAAA,EAAW,aAAA;AAAA,kBACX,YAAA,EAAc,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,kBACxC,YAAA,EAAc,MAAM,eAAA,CAAgB,KAAK,CAAA;AAAA,kBACzC,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,UAAA;AAAA,oBACV,GAAA,EAAK,MAAA;AAAA,oBACL,KAAA,EAAO,MAAA;AAAA,oBACP,KAAA,EAAO,MAAA;AAAA,oBACP,MAAA,EAAQ,MAAA;AAAA,oBACR,YAAA,EAAc,KAAA;AAAA,oBACd,MAAA,EAAQ,MAAA;AAAA,oBACR,UAAA,EAAY,eAAe,SAAA,GAAY,aAAA;AAAA,oBACvC,MAAA,EAAQ,SAAA;AAAA,oBACR,OAAA,EAAS,MAAA;AAAA,oBACT,UAAA,EAAY,QAAA;AAAA,oBACZ,cAAA,EAAgB,QAAA;AAAA,oBAChB,KAAA,EAAO,eAAe,SAAA,GAAY,SAAA;AAAA,oBAClC,QAAA,EAAU,MAAA;AAAA,oBACV,UAAA,EAAY,CAAA;AAAA,oBACZ,OAAA,EAAS,CAAA;AAAA,oBACT,UAAA,EAAY,CAAA;AAAA,oBACZ,UAAA,EAAY;AAAA,mBACd;AAAA,kBACD,QAAA,EAAA;AAAA;AAAA,eAED;AAAA,cAAA,CAGE,KAAA,IAAS,WAAA,qBACTC,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,kBAAA,EAAoB,UAAA,EAAY,CAAA,EAAE,EACtD,QAAA,EAAA;AAAA,gBAAA,KAAA,oBACCD,cAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAG,aAAA;AAAA,oBACH,KAAA,EAAO;AAAA,sBACL,MAAA,EAAQ,CAAA;AAAA,sBACR,QAAA,EAAU,MAAA;AAAA,sBACV,UAAA,EAAY,GAAA;AAAA,sBACZ,UAAA,EAAY,KAAA;AAAA,sBACZ,KAAA,EAAO;AAAA,qBACT;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,iBACH;AAAA,gBAED,+BACCA,cAAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAG,YAAA;AAAA,oBACH,KAAA,EAAO;AAAA,sBACL,MAAA,EAAQ,WAAA;AAAA,sBACR,QAAA,EAAU,MAAA;AAAA,sBACV,UAAA,EAAY,KAAA;AAAA,sBACZ,KAAA,EAAO;AAAA,qBACT;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA;AACH,eAAA,EAEJ,CAAA;AAAA,8BAIFA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAO,EAAE,OAAA,EAAS,uBAAuB,SAAA,EAAW,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,kBAEnE;AAAA;AAAA;AACH;AAAA;AAAA;AACF;AAAA,KACF;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF,CAAA;AA2BA,IAAM,WAAoC,CAAC;AAAA,EACzC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIkD,gBAAS,KAAK,CAAA;AACtC,EAAA,MAAM,YAAA,GAAenD,yBAAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AAGtD,EAAAuB,iBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AAhQvC,MAAA,IAAA,EAAA;AAiQM,MAAA,IAAI,EAAA,CAAC,kBAAa,OAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,SAAS,CAAA,CAAE,MAAA,CAAA,CAAA,UAAyB,KAAK,CAAA;AAAA,IACtE,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,OAAO,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,EAAAA,iBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAqB;AACpC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA;AAAA,IACvC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,uBACErB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAS,cAAA,EAAe;AAAA,MAGvD,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA,EAAI,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAGhD,wBACCC,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,GAAA,EAAK,kBAAA;AAAA,cACL,GAAI,UAAU,KAAA,GAAQ,EAAE,OAAO,CAAA,EAAE,GAAI,EAAE,IAAA,EAAM,CAAA,EAAE;AAAA,cAC/C,MAAA,EAAQ,IAAA;AAAA,cACR,QAAA,EAAU,OAAA;AAAA,cACV,eAAA,EAAiB,SAAA;AAAA,cACjB,MAAA,EAAQ,mBAAA;AAAA,cACR,YAAA,EAAc,KAAA;AAAA,cACd,SAAA,EACE,yDAAA;AAAA,cACF,OAAA,EAAS,KAAA;AAAA,cACT,OAAA,EAAS;AAAA,aACX;AAAA,YAGC,QAAA,EAAA;AAAA,cAAA,KAAA,oBACCD,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,OAAA,EAAS,iBAAA;AAAA,oBACT,QAAA,EAAU,MAAA;AAAA,oBACV,UAAA,EAAY,GAAA;AAAA,oBACZ,KAAA,EAAO,SAAA;AAAA,oBACP,aAAA,EAAe,WAAA;AAAA,oBACf,aAAA,EAAe;AAAA,mBACjB;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cAGD,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,KAAU;AACpB,gBAAA,IAAI,WAAA,IAAe,KAAA,IAAS,KAAA,CAAM,SAAA,EAAW;AAC3C,kBAAA,uBACEA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBAEC,KAAA,EAAO;AAAA,wBACL,MAAA,EAAQ,KAAA;AAAA,wBACR,eAAA,EAAiB,SAAA;AAAA,wBACjB,MAAA,EAAQ;AAAA;AACV,qBAAA;AAAA,oBALK,KAAA,CAAM;AAAA,mBAMb;AAAA,gBAEJ;AACA,gBAAA,MAAM,IAAA,GAAO,KAAA;AACb,gBAAA,uBACEA,cAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBAEC,IAAA;AAAA,oBACA,UAAU,MAAM;AACd,sBAAA,IAAA,CAAK,OAAA,EAAQ;AACb,sBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,oBACf;AAAA,mBAAA;AAAA,kBALK,IAAA,CAAK;AAAA,iBAMZ;AAAA,cAEJ,CAAC;AAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAM,eAAA,GAGD,CAAC,EAAE,IAAA,EAAM,UAAS,KAAM;AAC3B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIkD,gBAAS,KAAK,CAAA;AAC5C,EAAA,uBACElD,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,QAAA;AAAA,MACT,YAAA,EAAc,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MACnC,YAAA,EAAc,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MACpC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,GAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU,MAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,YAAA,EAAc,KAAA;AAAA,QACd,MAAA,EAAQ,MAAA;AAAA,QACR,UAAA,EAAY,UAAU,SAAA,GAAY,aAAA;AAAA,QAClC,MAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,SAAA,GAAY,SAAA;AAAA,QACjC,SAAA,EAAW,MAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACd;AAAA,MAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,GACR;AAEJ,CAAA;AAIA,IAAM,sBAAA,GAA8C;AAAA,EAClD,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,OAAA,EAAS,UAAA;AAAA,EACT,QAAA,EAAU,MAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,YAAA,EAAc,KAAA;AAAA,EACd,MAAA,EAAQ,mBAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,eAAA,GAAuC;AAAA,EAC3C,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,QAAA,GAAgC;AAAA,EACpC,OAAA,EAAS,MAAA;AAAA,EACT,QAAA,EAAU,MAAA;AAAA,EACV,UAAA,EACE,kEAAA;AAAA,EACF,UAAA,EAAY,UAAA;AAAA,EACZ,MAAA,EAAQ,CAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAgIA,IAAM,SAAS,CAAC;AAAA,EACd,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAmB;AACjB,EAAA,MAAM,EAAE,SAAS,KAAA,EAAO,OAAA,EAAS,SAAQ,GAAIM,cAAAA,CAAU,CAAC,KAAA,EAAO,QAAA,MAAc;AAAA,IAC3E,SAAS,KAAA,CAAM,OAAA,CAAQ,OAAA,IAAW,QAAA,CAAS,QAAQ,OAAA,EAAQ;AAAA,IAC3D,SAAS,KAAA,CAAM,OAAA,CAAQ,OAAA,IAAW,QAAA,CAAS,QAAQ,OAAA;AAAQ,GAC7D,CAAE,CAAA;AAEF,EAAA,MAAM,EAAE,OAAO,IAAA,EAAM,SAAA,EAAW,WAAW,KAAA,EAAO,aAAA,KAChD,eAAA,EAAgB;AAElB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI4C,gBAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,gBAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,gBAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,gBAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAA;AAAA,IACxC;AAAA,GACF;AAEA,EAAA,MAAM,OAAA,GAAU3B,mBAAY,MAAM;AAChC,IAAA,MAAM,IAAA,GAAO,MAAM,SAAA,EAAU;AAC7B,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,IAAA,OAAO,iBAAA,CAAkB,OAAO,aAAa,CAAA;AAAA,EAC/C,CAAA,EAAG,CAAC,KAAA,EAAO,aAAa,CAAC,CAAA;AAEzB,EAAA,MAAM,eAAe,MAAM;AArjB7B,IAAA,IAAA,EAAA;AAsjBI,IAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,aAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,EAAqB,IAAA,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,QAAQ,CAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,QAAQ,CAAA,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AACvD,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,QAAA,GAAW,qBAAA;AACb,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAplBlC,IAAA,IAAA,EAAA;AAqlBI,IAAA,OAAA,CAAQ,WAAA,EAAY;AACpB,IAAA,OAAA,CAAQ,WAAA,CAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,CAWlB,CAAA;AACF,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,OAAA,KAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAA4B;AArmB1D,IAAA,IAAA,EAAA;AAsmBI,IAAA,IAAI;AACF,MAAA,OAAA,CAAQ,WAAA,CAAY,SAAS,IAAI,CAAA;AACjC,MAAA,CAAA,EAAA,GAAA,SAAA,CAAU,cAAA,KAAV,mCAA2B,QAAA,CAAS,EAAA,CAAA;AAAA,IACtC,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,CAAC,CAAA;AAAA,IAC7C;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,MAAM,OAAA,EAAS;AACjB,IAAA,OAAOxB,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,OAAA,EAAS;AAAA,MACxC,QAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,OAAA;AAAA,MACX,OAAA,EAAS,iBAAA;AAAA,MACT,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,uBACEE,eAAAA,CAAAyB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAzB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,kBAAAA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,KAAA,EAAM,CAAA,EAC/D,CAAA;AAAA,wBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EAAqB,CAAA;AAAA,wBAEpCA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,KAAA,EAAM,uBAAA;AAAA,YACN,yBACEC,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAU,qBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAD,cAAAA,CAAC+B,0BAAAA,EAAA,EAAe,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA,aAE5C;AAAA,YAEF,KAAA,EAAO;AAAA,cACL,GAAG,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,MAAc;AAAA,gBAC9B,KAAK,QAAA,CAAS,EAAA;AAAA,gBACd,KAAA,kBACE9B,eAAAA,CAACF,yBAAAA,CAAM,UAAN,EACE,QAAA,EAAA;AAAA,kBAAA,QAAA,CAAS,IAAA,IACRA,yBAAAA,CAAM,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM;AAAA,oBACjC,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,EAAA;AAAA,sBACP,MAAA,EAAQ,EAAA;AAAA,sBACR,KAAA,EAAO,SAAA;AAAA,sBACP,UAAA,EAAY;AAAA;AACd,mBACD,CAAA;AAAA,kCACHE,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oCAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,MAAA,EAAO,EAC7C,QAAA,EAAA,QAAA,CAAS,IAAA,EACZ,CAAA;AAAA,oBACC,QAAA,CAAS,+BACRA,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,MAAA;AAAA,0BACV,KAAA,EAAO,SAAA;AAAA,0BACP,SAAA,EAAW;AAAA,yBACb;AAAA,wBAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA;AACZ,mBAAA,EAEJ;AAAA,iBAAA,EACF,CAAA;AAAA,gBAEF,OAAA,EAAS,MAAM,kBAAA,CAAmB,QAAQ;AAAA,eAC5C,CAAE,CAAA;AAAA,cACF,GAAI,SAAA,CAAU,MAAA,GAAS,CAAA,GACnB,CAAC,EAAE,GAAA,EAAK,WAAA,EAAa,SAAA,EAAW,IAAA,EAAe,CAAA,GAC/C,EAAC;AAAA,cACL;AAAA,gBACE,GAAA,EAAK,OAAA;AAAA,gBACL,KAAA,EAAO,cAAA;AAAA,gBACP,OAAA,EAAS,iBAAA;AAAA,gBACT,MAAA,EAAQ;AAAA;AACV;AACF;AAAA;AACF,OAAA,EACF,CAAA;AAAA,sBAEAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,UAAU,CAAC,OAAA;AAAA,cACX,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAK;AAAA,cACpC,SAAA,EAAU,aAAA;AAAA,cACV,KAAA,EAAM,MAAA;AAAA,cAEN,QAAA,kBAAAA,cAAAA,CAACmD,iBAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA,WACjC;AAAA,0BACAnD,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,UAAU,CAAC,OAAA;AAAA,cACX,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAK;AAAA,cACpC,SAAA,EAAU,aAAA;AAAA,cACV,KAAA,EAAM,MAAA;AAAA,cAEN,QAAA,kBAAAA,cAAAA,CAACoD,iBAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AACjC,SAAA,EACF,CAAA;AAAA,wBACAnD,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,aAAA;AAAA,YACT,SAAA,EAAU,qBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACqD,eAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SACjC;AAAA,wBACApD,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,qBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACsD,gBAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA;AAClC,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAtD,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK,CAAA;AAAA,QAChC,KAAA,EAAM,aAAA;AAAA,QACN,WAAA,EAAY,4DAAA;AAAA,QACZ,QAAA,EAAU,GAAA;AAAA,QACV,SAAA,EAAU,MAAA;AAAA,QAET,QAAA,EAAA,KAAA,CAAM,YAAA,GACLD,yBAAAA,CAAM,aAAA,CAAc,MAAM,YAAA,EAAc;AAAA,UACtC,IAAA,EAAM,QAAA;AAAA,UACN,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK;AAAA,SACjC,CAAA,mBAEDE,eAAAA,CAAAyB,qBAAA,EACE,QAAA,EAAA;AAAA,0BAAAzB,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAA,EAAK,KAAA,EAAO,YAAA,EAAc,MAAA,EAAO,EAC9D,QAAA,EAAA;AAAA,4BAAAA,eAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,UAAA;AAAA,gBACT,KAAA,EAAO,sBAAA;AAAA,gBACP,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAEtC,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAGrC,QAAA,EAAA;AAAA,kBAAA,MAAA,mBACCD,eAACuD,iBAAA,EAAA,EAAM,IAAA,EAAM,IAAI,KAAA,EAAO,EAAE,aAAa,CAAA,EAAE,EAAG,oBAE5CvD,cAAAA,CAACgB,kBAAA,EAAK,IAAA,EAAM,IAAI,KAAA,EAAO,EAAE,WAAA,EAAa,CAAA,EAAE,EAAG,CAAA;AAAA,kBAE5C,SAAS,SAAA,GAAY;AAAA;AAAA;AAAA,aACxB;AAAA,4BACAf,eAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,cAAA;AAAA,gBACT,KAAA,EAAO,sBAAA;AAAA,gBACP,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAEtC,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAGtC,QAAA,EAAA;AAAA,kCAAAD,cAAAA,CAACwD,wBAAS,IAAA,EAAM,EAAA,EAAI,OAAO,EAAE,WAAA,EAAa,GAAE,EAAG,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA;AAEnD,WAAA,EACF,CAAA;AAAA,0BACAxD,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,eAAA,EACV,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,QAAA,EAAW,QAAA,EAAA,QAAA,EAAS,CAAA,EAClC;AAAA,SAAA,EACF;AAAA;AAAA,KAEJ;AAAA,oBAGAA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,MAAM,cAAA,CAAe,KAAK,CAAA;AAAA,QACnC,KAAA,EAAM,eAAA;AAAA,QACN,WAAA,EAAY,oDAAA;AAAA,QACZ,QAAA,EAAU,IAAA;AAAA,QACV,SAAA,EAAU,MAAA;AAAA,QAET,QAAA,EAAA,KAAA,CAAM,aAAA,GACLD,yBAAAA,CAAM,aAAA,CAAc,MAAM,aAAA,EAAe;AAAA,UACvC,IAAA,EAAM,QAAA;AAAA,UACN,OAAA,EAAS,MAAM,cAAA,CAAe,KAAK;AAAA,SACpC,CAAA,mBAEDC,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAQ,EAClD,QAAA,kBAAAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,MAAA,EAAQ,QAAA;AAAA,cACR,UAAA,EAAY,gBAAA;AAAA,cACZ,QAAA,EAAU,aAAA,KAAkB,QAAA,GAAW,OAAA,GAAU;AAAA,aACnD;AAAA,YAEA,QAAA,kBAAAC,eAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,MAAA,EAAQ,mBAAA;AAAA,kBACR,YAAA,EAAc,KAAA;AAAA,kBACd,UAAA,EAAY,uBAAA;AAAA,kBACZ,QAAA,EAAU;AAAA,iBACZ;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,aAAA,KAAkB,4BACjBD,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,MAAA,EAAQ,MAAA;AAAA,wBACR,UAAA,EAAY,SAAA;AAAA,wBACZ,OAAA,EAAS,MAAA;AAAA,wBACT,UAAA,EAAY,QAAA;AAAA,wBACZ,cAAA,EAAgB;AAAA,uBAClB;AAAA,sBAEA,QAAA,kBAAAA,cAAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO;AAAA,4BACL,KAAA,EAAO,MAAA;AAAA,4BACP,MAAA,EAAQ,KAAA;AAAA,4BACR,UAAA,EAAY,uBAAA;AAAA,4BACZ,YAAA,EAAc;AAAA;AAChB;AAAA;AACF;AAAA,mBACF;AAAA,kCAEFA,cAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,MAAA,EAAQ,QAAA;AAAA,sBACR,KAAA,EAAM,eAAA;AAAA,sBACN,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,MAAA;AAAA,wBACP,SAAA,EAAW,OAAA;AAAA,wBACX,UAAA,EAAY,SAAA;AAAA,wBACZ,MAAA,EAAQ,MAAA;AAAA,wBACR,OAAA,EAAS,OAAA;AAAA,wBACT,MAAA,EAAQ,aAAA,KAAkB,QAAA,GAAW,OAAA,GAAU;AAAA;AACjD;AAAA;AACF;AAAA;AAAA;AACF;AAAA,SACF,EACF;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ,CAAA;AAIA,IAAM,WAAA,GAAc,CAAC,EAAE,YAAA,EAAc,WAAU,KAAM;AACnD,EAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAM,GAAI,eAAA,EAAgB;AAC9C,EAAA,MAAM,EAAE,cAAA,EAAe,GAAIM,cAAAA,CAAU,CAAC,KAAA,MAAW;AAAA;AAAA,IAE/C,cAAA,EAAgB,KAAA,CAAM,MAAA,CAAO,QAAA,CAAS,CAAC;AAAA,GACzC,CAAE,CAAA;AAEF,EAAAgB,iBAAU,MAAM;AACd,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,YAAA,CAAa,YAAY,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,UAAA,GAAajB,eAAQ,MAAM;AAC/B,IAAA,OAAO,OAAO,IAAA,CAAK,UAAU,EAAE,MAAA,CAAiB,CAAC,KAAK,CAAA,KAAM;AAC1D,MAAA,MAAM,GAAA,GAAM,UAAA,CAAW,CAAC,CAAA,CAAE,QAAA,IAAY,OAAA;AACtC,MAAA,IAAI,CAAC,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,EAAG,GAAA,CAAI,KAAK,GAAG,CAAA;AACpC,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,uBACEL,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6DACb,QAAA,kBAAAC,eAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,aAAA,EAAe,CAAC,KAAA,KACd,YAAA,CAAa,KAAoC,CAAA;AAAA,MAEnD,SAAA,EAAU,sBAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,kCAAA,EACb,0BAAAC,eAAAA,CAAC,QAAA,EAAA,EAAS,WAAU,wBAAA,EAClB,QAAA,EAAA;AAAA,0BAAAA,eAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,YAAA;AAAA,cACN,SAAA,EAAU,0DAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,cAAAA,CAACc,kBAAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA,WAEpC;AAAA,0BACAb,eAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,YAAA;AAAA,cACN,SAAA,EAAU,0DAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,cAAAA,CAACyD,oBAAA,EAAA,EAAS,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA;AAEtC,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBAEAzD,cAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,YAAA,EAAa,SAAA,EAAU,cAAA,EACxC,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,wBAAA,EACnB,QAAA,EAAA,KAAA,CAAM,OAAA,GACLD,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,OAAA,EAAS,EAAE,UAAA,EAAY,UAAA,EAAY,CAAA,mBAE7DC,cAAAA,CAAC,OAAA,EAAA,EAAQ,CAAA,EAEb,CAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,YAAA,EAAa,WAAU,cAAA,EACxC,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,GACjB,CAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;AAIA,IAAM,mBAAA,mBAAsBA,cAAAA,CAACgC,YAAAA,EAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,QAAM,IAAA,EAAC,CAAA;AAIvD,IAAM,4BAAA,GAA+B,CAAC,UAAA,KAA+B;AAn7BrE,EAAA,IAAA,EAAA;AAo7BE,EAAA,MAAM,YAAY,MAAA,CAAO,UAAA;AAAA,IAAA,CAAA,CACvB,EAAA,GAAA,UAAA,CAAW,IAAA,EAAK,CAAE,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAhC,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmC,OAAA,CAAQ,GAAA,EAAK,EAAA,CAAA,KAAO;AAAA,GACzD;AACA,EAAA,OAAO,SAAA,GAAY,KAAK,mBAAA,GAAsB,aAAA;AAChD,CAAA;AAIO,IAAM,cAA0C,CAAC;AAAA,EACtD,UAAA,EAAY,cAAA;AAAA,EACZ,eAAA,GAAkB,KAAA;AAAA,EAClB,QAAQ,EAAC;AAAA,EACT,QAAQ,EAAC;AAAA,EACT,YAAY,EAAC;AAAA,EACb,YAAY,EAAC;AAAA,EACb,YAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA,GAAQ,cAAA;AAAA,EACR,IAAA;AAAA,EACA,gBAAgB,EAAC;AAAA,EACjB,WAAA,GAAc,IAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,QAAA,GAAW,IAAA;AAAA,EACX,SAAA;AAAA,EACA;AACF,CAAA,KAAM;AA78BN,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA88BE,EAAA,MAAM,gBAAA,GAAmB3B,eAA2B,MAAM;AACxD,IAAA,IAAI,eAAA,EAAiB,OAAO,cAAA,IAAkB,EAAC;AAC/C,IAAA,OAAO,EAAE,GAAG,kBAAA,EAAoB,GAAI,cAAA,IAAkB,EAAC,EAAG;AAAA,EAC5D,CAAA,EAAG,CAAC,cAAA,EAAgB,eAAe,CAAC,CAAA;AAEpC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI6C,eAAA;AAAA,IAChC;AAAA,GACF;AAEA,EAAA,MAAM,QAAA,GAAW7C,eAAQ,MAAM;AAC7B,IAAA,MAAM,GAAA,GAAM,cAAc,gBAAgB,CAAA;AAC1C,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA;AACZ,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,MAAM,YAAA,GAAgB,MAAM,UAAA,IAAc,UAAA;AAE1C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI6C,eAAA,CAAS,CAAC,QAAQ,CAAA;AACtD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAA;AAAA,IAAA,CACtC,EAAA,GAAA,KAAA,CAAM,WAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc;AAAA,GAChB;AAEA,EAAA5B,iBAAU,MAAM;AAp+BlB,IAAA,IAAAG,GAAAA;AAq+BI,IAAA,eAAA,CAAA,CAAgBA,GAAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAAA,IAAc,OAAO,CAAA;AAAA,EACvC,GAAG,CAAA,CAAC,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,OAAO,CAAC,CAAA;AAE1B,EAAA,MAAM,iBAAA,GAAoBpB,eAAQ,MAAM;AAx+B1C,IAAA,IAAAoB,GAAAA;AAy+BI,IAAA,IAAA,CAAIA,GAAAA,GAAA,MAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAAA,IAAc,iBAAA,EAAmB,OAAO,MAAM,MAAA,CAAO,iBAAA;AACzD,IAAA,IAAI,CAAC,cAAc,OAAO,MAAA;AAC1B,IAAA,OAAO,6BAA6B,YAAY,CAAA;AAAA,EAClD,GAAG,CAAC,YAAA,EAAA,CAAc,WAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,iBAAiB,CAAC,CAAA;AAElD,EAAA,MAAM,cAAA,GAAiBpB,eAAQ,MAAM;AACnC,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,IAAU,EAAC;AAChC,IAAA,OAAO;AAAA,MACL,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,oBAAoB,MAAA,CAAO,eAAA;AAAA,MAC3B,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,oBAAoB,MAAA,CAAO,eAAA;AAAA,MAC3B,qBAAqB,MAAA,CAAO;AAAA,KAC9B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,MAAM,CAAC,CAAA;AAEjB,EAAA,MAAM,WAAA,GAAcA,eAAQ,MAAM;AAChC,IAAA,MAAM,OAAA,GAA6B,EAAE,GAAI,KAAA,IAAS,EAAC,EAAG;AAEtD,IAAA,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,KAAA,EAAO,KAAK,CAAA,KAAM;AACzD,MAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,CAAA,EAAA,EAAK,KAAK,EAAE,CAAA,GAAI,KAAA;AAAA,IACrC,CAAC,CAAA;AAED,IAAA,IAAI,YAAA,EAAc,OAAA,CAAQ,WAAW,CAAA,GAAI,YAAA;AACzC,IAAA,IAAI,iBAAA,EAAmB,OAAA,CAAQ,sBAAsB,CAAA,GAAI,iBAAA;AACzD,IAAA,IAAI,MAAM,YAAA,EAAc,OAAA,CAAQ,UAAU,CAAA,GAAI,CAAA,EAAG,MAAM,YAAY,CAAA,EAAA,CAAA;AACnE,IAAA,IAAI,KAAA,CAAM,UAAA,EAAY,OAAA,CAAQ,UAAA,GAAa,KAAA,CAAM,UAAA;AAEjD,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,EAAG;AAAA,IACD,KAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,iBAAA;AAAA,IACA,KAAA,CAAM,YAAA;AAAA,IACN,KAAA,CAAM;AAAA,GACP,CAAA;AAED,EAAA,uBACEL,cAAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,gBAAA;AAAA,QACZ,KAAA;AAAA,QACA,KAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,iBAAA,EAAmB;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,CAAA,uBAAA,EAA0B,UAAA,GAAa,SAAS,EAAE,CAAA,+BAAA,EAAkC,aAAa,EAAE,CAAA,CAAA;AAAA,UAC9G,KAAA,EAAO,WAAA;AAAA,UAEP,QAAA,kBAAAC,eAAAA,CAACyD,WAAA,EAAA,EAAO,QAAA,EAAoB,UAAU,YAAA,EACnC,QAAA,EAAA;AAAA,YAAA,WAAA,oBACC1D,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,UAAA;AAAA,gBACA,kBAAkB,MAAM,aAAA,CAAc,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAAA,gBACrD,YAAA;AAAA,gBACA,oBAAA,EAAsB,CAAC,UAAA,KAAe;AA5iCpD,kBAAA,IAAAyB,GAAAA;AA6iCgB,kBAAA,eAAA,CAAgB,UAAU,CAAA;AAC1B,kBAAA,CAAAA,GAAAA,GAAA,SAAA,CAAU,aAAA,KAAV,IAAA,GAAA,MAAA,GAAAA,IAAA,IAAA,CAAA,SAAA,EAA0B,UAAA,CAAA;AAAA,gBAC5B;AAAA;AAAA,aACF;AAAA,4BAEFxB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,cAAA,WAAA,oBACCD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCACb,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,YAAA;AAAA,kBACA;AAAA;AAAA,eACF,EACF,CAAA;AAAA,8BAGFA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,uCAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,eAAA,EAAA,CAAA,CACE,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,gBAAA,KAAoB;AAAA,mBACtC;AAAA,kBAEA,QAAA,kBAAAA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,KAAA;AAAA,sBACV,SAAS,MAAM;AACb,wBAAA,YAAA,CAAa,YAAY,CAAA;AAAA,sBAC3B,CAAA;AAAA,sBAEA,QAAA,kBAAAA,cAAAA,CAAC2D,UAAA,EAAA,EAAM,IAAA,EAAM,cAAe,QAAA,EAAA,mBAAA,EAAoB;AAAA;AAAA;AAClD;AAAA;AACF,aAAA,EACF;AAAA,WAAA,EACF;AAAA;AAAA;AACF;AAAA,GACF;AAEJ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n//@ts-ignore\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import React, { createContext, useContext, useMemo } from \"react\";\r\nimport {\r\n EditorTheme,\r\n EditorSlots,\r\n ComponentRegistry,\r\n EditorCallbacks,\r\n EmailTemplate,\r\n HtmlRenderer,\r\n} from \"./types\";\r\n\r\ninterface EditorContextValue {\r\n components: ComponentRegistry;\r\n theme: EditorTheme;\r\n slots: EditorSlots;\r\n templates: EmailTemplate[];\r\n callbacks: EditorCallbacks;\r\n htmlRenderers: Record<string, HtmlRenderer>;\r\n title: string;\r\n logo?: React.ReactNode;\r\n showToolbar: boolean;\r\n showToolbox: boolean;\r\n showSettingsPanel?: boolean;\r\n}\r\n\r\nconst defaultTheme: EditorTheme = {\r\n paperWidth: 600,\r\n paperMinHeight: 800,\r\n paperBackground: \"#ffffff\",\r\n};\r\n\r\nconst EditorContext = createContext<EditorContextValue>({\r\n components: {},\r\n theme: defaultTheme,\r\n slots: {},\r\n templates: [],\r\n callbacks: {},\r\n htmlRenderers: {},\r\n title: \"\",\r\n showToolbar: true,\r\n showToolbox: true,\r\n showSettingsPanel: true,\r\n});\r\n\r\nexport const useEditorConfig = () => useContext(EditorContext);\r\n\r\ninterface EditorProviderProps {\r\n children: React.ReactNode;\r\n value: Omit<EditorContextValue, \"theme\"> & { theme: EditorTheme };\r\n}\r\n\r\nexport const EditorProvider: React.FC<EditorProviderProps> = ({\r\n children,\r\n value,\r\n}) => {\r\n const mergedTheme = useMemo(\r\n () => ({ ...defaultTheme, ...value.theme }),\r\n [value.theme],\r\n );\r\n\r\n const ctx = useMemo(\r\n () => ({ ...value, theme: mergedTheme }),\r\n [value, mergedTheme],\r\n );\r\n\r\n return (\r\n <EditorContext.Provider value={ctx}>{children}</EditorContext.Provider>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { useEditor, Element } from \"@craftjs/core\";\r\nimport {\r\n Accordion,\r\n AccordionContent,\r\n AccordionItem,\r\n AccordionTrigger,\r\n} from \"../../components/ui/accordion\";\r\nimport { useEditorConfig } from \"./context\";\r\nimport type { EditorComponentConfig } from \"./types\";\r\n\r\ninterface ToolboxItemProps {\r\n name: string;\r\n config: EditorComponentConfig;\r\n}\r\n\r\nconst ToolboxItem = ({ name, config }: ToolboxItemProps) => {\r\n const { connectors } = useEditor();\r\n const Component = config.component;\r\n const element = config.createElement ? config.createElement() : <Component />;\r\n const IconComp = config.icon;\r\n\r\n return (\r\n <div\r\n ref={(ref) => ref && connectors.create(ref, element)}\r\n className=\"flex items-center gap-3 p-2.5 border rounded-lg cursor-grab hover:bg-accent hover:border-primary/50 transition-all group\"\r\n title={config.description}\r\n >\r\n <div className=\"flex-shrink-0 w-9 h-9 rounded-md bg-muted flex items-center justify-center text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors\">\r\n {IconComp && <IconComp className=\"h-4 w-4\" />}\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <span className=\"text-sm font-medium text-foreground block truncate\">\r\n {config.label}\r\n </span>\r\n {config.description && (\r\n <span className=\"text-xs text-muted-foreground block truncate\">\r\n {config.description}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const Toolbox = () => {\r\n const { components } = useEditorConfig();\r\n\r\n // Group components by category\r\n const grouped = React.useMemo(() => {\r\n const map: Record<string, Array<[string, EditorComponentConfig]>> = {};\r\n for (const [name, config] of Object.entries(components)) {\r\n const cat = config.category || \"Other\";\r\n if (!map[cat]) map[cat] = [];\r\n map[cat].push([name, config]);\r\n }\r\n return map;\r\n }, [components]);\r\n\r\n const categoryKeys = Object.keys(grouped);\r\n\r\n return (\r\n <div className=\"p-5\">\r\n <Accordion type=\"multiple\" defaultValue={categoryKeys}>\r\n {categoryKeys.map((category, idx) => (\r\n <AccordionItem\r\n key={category}\r\n value={category}\r\n className={\r\n idx < categoryKeys.length - 1 ? \"border-b\" : \"border-b-0\"\r\n }\r\n >\r\n <AccordionTrigger className=\"py-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:no-underline\">\r\n {category}\r\n </AccordionTrigger>\r\n <AccordionContent className=\"pb-3\">\r\n <div className=\"space-y-2\">\r\n {grouped[category].map(([name, config]) => (\r\n <ToolboxItem key={name} name={name} config={config} />\r\n ))}\r\n </div>\r\n {category === \"Dynamic\" && (\r\n <div className=\"mt-3 p-3 bg-muted/50 rounded-lg\">\r\n <p className=\"text-xs text-muted-foreground\">\r\n Use variables like{\" \"}\r\n <code className=\"bg-primary/10 text-primary px-1 rounded\">\r\n {\"{{first_name}}\"}\r\n </code>{\" \"}\r\n for personalized emails\r\n </p>\r\n </div>\r\n )}\r\n </AccordionContent>\r\n </AccordionItem>\r\n ))}\r\n </Accordion>\r\n </div>\r\n );\r\n};\r\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import React from \"react\";\r\nimport { useEditor } from \"@craftjs/core\";\r\nimport {\r\n Trash2,\r\n Copy,\r\n ChevronUp,\r\n ChevronDown,\r\n Layers,\r\n Paintbrush,\r\n Settings2,\r\n} from \"lucide-react\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\r\nimport {\r\n Accordion,\r\n AccordionContent,\r\n AccordionItem,\r\n AccordionTrigger,\r\n} from \"../../components/ui/accordion\";\r\nimport { useEditorConfig } from \"./context\";\r\n\r\nexport const SettingsPanel = () => {\r\n const { slots } = useEditorConfig();\r\n\r\n const { selected, actions, query } = useEditor((state) => {\r\n const [currentNodeId] = state.events.selected;\r\n let selected;\r\n\r\n if (currentNodeId) {\r\n selected = {\r\n id: currentNodeId,\r\n name: state.nodes[currentNodeId].data.name,\r\n displayName:\r\n state.nodes[currentNodeId].data.displayName ||\r\n state.nodes[currentNodeId].data.name,\r\n settings: state.nodes[currentNodeId].related?.settings,\r\n isDeletable: state.nodes[currentNodeId].data.name !== \"Paper\",\r\n parent: state.nodes[currentNodeId].data.parent,\r\n props: state.nodes[currentNodeId].data.props,\r\n };\r\n }\r\n\r\n return { selected };\r\n });\r\n\r\n const handleDuplicate = () => {\r\n if (!selected || !selected.isDeletable) return;\r\n const node = query.node(selected.id).get();\r\n const parent = node.data.parent;\r\n if (parent) {\r\n try {\r\n const serializedNode = query.node(selected.id).toSerializedNode();\r\n const parentNode = query.node(parent).get();\r\n const siblings = parentNode.data.nodes || [];\r\n const currentIndex = siblings.indexOf(selected.id);\r\n const newNode = query\r\n .parseSerializedNode(serializedNode)\r\n .toNode((node) => {\r\n node.id = `${node.data.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\r\n return node;\r\n });\r\n actions.addNodeTree(\r\n { rootNodeId: newNode.id, nodes: { [newNode.id]: newNode } },\r\n parent,\r\n currentIndex + 1,\r\n );\r\n } catch (e) {\r\n console.log(\"Duplicate error:\", e);\r\n }\r\n }\r\n };\r\n\r\n const handleMoveUp = () => {\r\n if (!selected || !selected.parent) return;\r\n const parentNode = query.node(selected.parent).get();\r\n const siblings = parentNode.data.nodes || [];\r\n const currentIndex = siblings.indexOf(selected.id);\r\n if (currentIndex > 0) {\r\n actions.move(selected.id, selected.parent, currentIndex - 1);\r\n }\r\n };\r\n\r\n const handleMoveDown = () => {\r\n if (!selected || !selected.parent) return;\r\n const parentNode = query.node(selected.parent).get();\r\n const siblings = parentNode.data.nodes || [];\r\n const currentIndex = siblings.indexOf(selected.id);\r\n if (currentIndex < siblings.length - 1) {\r\n actions.move(selected.id, selected.parent, currentIndex + 2);\r\n }\r\n };\r\n\r\n // Use custom slot for settings panel\r\n if (slots.settingsPanel && selected) {\r\n return React.createElement(slots.settingsPanel, {\r\n selectedId: selected.id,\r\n selectedName: selected.displayName || selected.name,\r\n //@ts-ignore\r\n selectedSettings: selected.settings,\r\n onDelete: selected.isDeletable\r\n ? () => actions.delete(selected.id)\r\n : undefined,\r\n onDuplicate: handleDuplicate,\r\n onMoveUp: handleMoveUp,\r\n onMoveDown: handleMoveDown,\r\n });\r\n }\r\n\r\n if (!selected) {\r\n if (slots.settingsEmptyState) {\r\n return React.createElement(slots.settingsEmptyState);\r\n }\r\n\r\n return (\r\n <div className=\"p-6 text-center\">\r\n <div className=\"w-16 h-16 mx-auto mb-4 rounded-full bg-muted flex items-center justify-center\">\r\n <Layers className=\"h-8 w-8 text-muted-foreground\" />\r\n </div>\r\n <h3 className=\"font-medium text-foreground mb-2\">\r\n No Element Selected\r\n </h3>\r\n <p className=\"text-sm text-muted-foreground\">\r\n Click on a component in the canvas to edit its properties\r\n </p>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full flex flex-col\">\r\n <div className=\"p-4 border-b bg-muted/30\">\r\n <div className=\"flex items-center justify-between mb-3\">\r\n <div className=\"flex items-center gap-2\">\r\n <div className=\"w-2 h-2 rounded-full bg-primary\" />\r\n <h3 className=\"font-semibold text-sm\">\r\n {selected.displayName || selected.name}\r\n </h3>\r\n </div>\r\n </div>\r\n\r\n {selected.isDeletable && (\r\n <div className=\"flex gap-1.5\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"flex-1 h-8 text-xs\"\r\n onClick={handleMoveUp}\r\n title=\"Move Up\"\r\n >\r\n <ChevronUp className=\"h-3.5 w-3.5 mr-1\" /> Up\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"flex-1 h-8 text-xs\"\r\n onClick={handleMoveDown}\r\n title=\"Move Down\"\r\n >\r\n <ChevronDown className=\"h-3.5 w-3.5 mr-1\" /> Down\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"flex-1 h-8 text-xs\"\r\n onClick={handleDuplicate}\r\n title=\"Duplicate\"\r\n >\r\n <Copy className=\"h-3.5 w-3.5 mr-1\" /> Copy\r\n </Button>\r\n <Button\r\n variant=\"destructive\"\r\n size=\"sm\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => actions.delete(selected.id)}\r\n title=\"Delete\"\r\n >\r\n <Trash2 className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n\r\n <ScrollArea className=\"flex-1\">\r\n <div className=\"p-4\">\r\n {selected.settings ? (\r\n <Accordion type=\"multiple\" defaultValue={[\"content\"]}>\r\n <AccordionItem value=\"content\" className=\"border-b\">\r\n <AccordionTrigger className=\"py-3 text-sm hover:no-underline\">\r\n <div className=\"flex items-center gap-2\">\r\n <Settings2 className=\"h-4 w-4 text-muted-foreground\" />\r\n <span>Properties</span>\r\n </div>\r\n </AccordionTrigger>\r\n <AccordionContent className=\"pb-4\">\r\n {React.createElement(selected.settings)}\r\n </AccordionContent>\r\n </AccordionItem>\r\n </Accordion>\r\n ) : (\r\n <div className=\"text-center text-muted-foreground text-sm py-8\">\r\n <Paintbrush className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\r\n <p>No editable properties</p>\r\n </div>\r\n )}\r\n </div>\r\n </ScrollArea>\r\n\r\n <div className=\"p-3 border-t bg-muted/20 text-xs text-muted-foreground\">\r\n <div className=\"flex justify-between\">\r\n <span>Component: {selected.name}</span>\r\n <span className=\"font-mono text-[10px]\">\r\n {selected.id.slice(0, 8)}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\nimport { useEditorConfig } from './context';\r\n\r\ninterface PaperProps {\r\n children?: React.ReactNode;\r\n background?: string;\r\n}\r\n\r\nexport const Paper = ({ children, background }: PaperProps) => {\r\n const { connectors: { connect } } = useNode();\r\n const { theme } = useEditorConfig();\r\n\r\n const bg = background || theme.paperBackground || '#ffffff';\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(ref!)}\r\n style={{\r\n width: `${theme.paperWidth || 600}px`,\r\n minHeight: `${theme.paperMinHeight || 800}px`,\r\n margin: '0 auto',\r\n backgroundColor: bg,\r\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\r\n position: 'relative',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst PaperSettings = () => {\r\n const { actions: { setProp }, background } = useNode((node) => ({\r\n background: node.data.props.background,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Email Background</label>\r\n <input\r\n type=\"color\"\r\n value={background || '#ffffff'}\r\n onChange={(e) => setProp((props: PaperProps) => (props.background = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nPaper.craft = {\r\n props: {\r\n background: '#ffffff',\r\n },\r\n related: {\r\n settings: PaperSettings,\r\n },\r\n};\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport { useNode, useEditor } from '@craftjs/core';\r\nimport { Move, ArrowUp } from 'lucide-react';\r\n\r\nexport const RenderNode = ({ render }: { render: React.ReactNode }) => {\r\n const { id } = useNode();\r\n const { actions, query, isActive } = useEditor((_, query) => ({\r\n isActive: query.getEvent('selected').contains(id),\r\n }));\r\n\r\n const {\r\n isHover,\r\n dom,\r\n name,\r\n moveable,\r\n deletable,\r\n connectors: { drag },\r\n parent,\r\n } = useNode((node) => ({\r\n isHover: node.events.hovered,\r\n dom: node.dom,\r\n name: node.data.custom.displayName || node.data.displayName,\r\n moveable: query.node(node.id).isDraggable(),\r\n deletable: query.node(node.id).isDeletable(),\r\n parent: node.data.parent,\r\n }));\r\n\r\n useEffect(() => {\r\n if (dom) {\r\n if (isActive || isHover) {\r\n dom.classList.add('component-selected');\r\n } else {\r\n dom.classList.remove('component-selected');\r\n }\r\n }\r\n }, [dom, isActive, isHover]);\r\n\r\n const getPos = useCallback((dom: HTMLElement | null) => {\r\n const { top, left, bottom } = dom ? dom.getBoundingClientRect() : { top: 0, left: 0, bottom: 0 };\r\n return {\r\n top: `${top > 0 ? top : bottom}px`,\r\n left: `${left}px`,\r\n };\r\n }, []);\r\n\r\n const scroll = useCallback(() => {\r\n const currentDOM = dom;\r\n if (!currentDOM) return;\r\n const { top, left } = getPos(currentDOM);\r\n // Update indicator position if needed\r\n }, [dom, getPos]);\r\n\r\n useEffect(() => {\r\n document.querySelector('.craftjs-renderer')?.addEventListener('scroll', scroll);\r\n return () => {\r\n document.querySelector('.craftjs-renderer')?.removeEventListener('scroll', scroll);\r\n };\r\n }, [scroll]);\r\n\r\n return (\r\n <>\r\n {isHover || isActive ? (\r\n <div\r\n className=\"absolute -top-7 left-0 bg-primary text-primary-foreground text-xs px-2 py-1 rounded flex items-center gap-1 z-50\"\r\n style={{\r\n pointerEvents: 'auto',\r\n }}\r\n >\r\n {moveable && (\r\n <span\r\n ref={(ref) => ref && drag(ref)}\r\n className=\"cursor-grab\"\r\n >\r\n <Move className=\"h-3 w-3\" />\r\n </span>\r\n )}\r\n <span>{name}</span>\r\n {parent && (\r\n <button\r\n onClick={() => actions.selectNode(parent)}\r\n className=\"ml-1 hover:bg-primary-foreground/20 rounded p-0.5\"\r\n >\r\n <ArrowUp className=\"h-3 w-3\" />\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n {render}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface ContainerProps {\r\n background?: string;\r\n padding?: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const Container = ({ background = '#ffffff', padding = 20, children }: ContainerProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n background,\r\n padding: `${padding}px`,\r\n minHeight: '50px',\r\n width: '100%',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst ContainerSettings = () => {\r\n const { actions: { setProp }, background, padding } = useNode((node) => ({\r\n background: node.data.props.background,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={background || '#ffffff'}\r\n onChange={(e) => setProp((props: ContainerProps) => (props.background = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={60}\r\n value={padding || 20}\r\n onChange={(e) => setProp((props: ContainerProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nContainer.craft = {\r\n props: {\r\n background: '#ffffff',\r\n padding: 20,\r\n },\r\n related: {\r\n settings: ContainerSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface EmailHeaderProps {\r\n logoUrl?: string;\r\n companyName?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n padding?: number;\r\n}\r\n\r\nexport const EmailHeader = ({\r\n logoUrl = '',\r\n companyName = 'Your Company',\r\n backgroundColor = '#1a1a2e',\r\n textColor = '#ffffff',\r\n padding = 24,\r\n}: EmailHeaderProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n }}\r\n >\r\n {logoUrl && (\r\n <img\r\n src={logoUrl}\r\n alt=\"Logo\"\r\n style={{ maxHeight: '60px', marginBottom: '12px' }}\r\n />\r\n )}\r\n <h1\r\n style={{\r\n color: textColor,\r\n fontSize: '24px',\r\n fontWeight: 'bold',\r\n margin: 0,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {companyName}\r\n </h1>\r\n </div>\r\n );\r\n};\r\n\r\nconst EmailHeaderSettings = () => {\r\n const { actions: { setProp }, logoUrl, companyName, backgroundColor, textColor, padding } = useNode((node) => ({\r\n logoUrl: node.data.props.logoUrl,\r\n companyName: node.data.props.companyName,\r\n backgroundColor: node.data.props.backgroundColor,\r\n textColor: node.data.props.textColor,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Company Name</label>\r\n <input\r\n type=\"text\"\r\n value={companyName || ''}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.companyName = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Logo URL</label>\r\n <input\r\n type=\"text\"\r\n value={logoUrl || ''}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.logoUrl = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://example.com/logo.png\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#1a1a2e'}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#ffffff'}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={60}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmailHeader.craft = {\r\n props: {\r\n logoUrl: '',\r\n companyName: 'Your Company',\r\n backgroundColor: '#1a1a2e',\r\n textColor: '#ffffff',\r\n padding: 24,\r\n },\r\n related: {\r\n settings: EmailHeaderSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface EmailFooterProps {\r\n companyName?: string;\r\n address?: string;\r\n email?: string;\r\n phone?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n padding?: number;\r\n}\r\n\r\nexport const EmailFooter = ({\r\n companyName = 'Your Company',\r\n address = '123 Business St, City, Country',\r\n email = 'info@company.com',\r\n phone = '+1 234 567 890',\r\n backgroundColor = '#f5f5f5',\r\n textColor = '#666666',\r\n padding = 24,\r\n}: EmailFooterProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n <p style={{ color: textColor, fontSize: '14px', margin: '0 0 8px 0', fontWeight: 'bold' }}>\r\n {companyName}\r\n </p>\r\n <p style={{ color: textColor, fontSize: '12px', margin: '0 0 4px 0' }}>\r\n {address}\r\n </p>\r\n <p style={{ color: textColor, fontSize: '12px', margin: '0 0 4px 0' }}>\r\n Email: {email} | Phone: {phone}\r\n </p>\r\n <p style={{ color: textColor, fontSize: '11px', margin: '12px 0 0 0', opacity: 0.7 }}>\r\n © {new Date().getFullYear()} {companyName}. All rights reserved.\r\n </p>\r\n </div>\r\n );\r\n};\r\n\r\nconst EmailFooterSettings = () => {\r\n const { actions: { setProp }, companyName, address, email, phone, backgroundColor, textColor, padding } = useNode((node) => ({\r\n companyName: node.data.props.companyName,\r\n address: node.data.props.address,\r\n email: node.data.props.email,\r\n phone: node.data.props.phone,\r\n backgroundColor: node.data.props.backgroundColor,\r\n textColor: node.data.props.textColor,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Company Name</label>\r\n <input\r\n type=\"text\"\r\n value={companyName || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.companyName = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Address</label>\r\n <input\r\n type=\"text\"\r\n value={address || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.address = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Email</label>\r\n <input\r\n type=\"email\"\r\n value={email || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.email = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Phone</label>\r\n <input\r\n type=\"text\"\r\n value={phone || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.phone = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#f5f5f5'}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#666666'}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={60}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmailFooter.craft = {\r\n props: {\r\n companyName: 'Your Company',\r\n address: '123 Business St, City, Country',\r\n email: 'info@company.com',\r\n phone: '+1 234 567 890',\r\n backgroundColor: '#f5f5f5',\r\n textColor: '#666666',\r\n padding: 24,\r\n },\r\n related: {\r\n settings: EmailFooterSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface EmailButtonProps {\r\n text?: string;\r\n href?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n borderRadius?: number;\r\n paddingX?: number;\r\n paddingY?: number;\r\n fontSize?: number;\r\n align?: 'left' | 'center' | 'right';\r\n}\r\n\r\nexport const EmailButton = ({\r\n text = 'Click Here',\r\n href = '#',\r\n backgroundColor = '#0066cc',\r\n textColor = '#ffffff',\r\n borderRadius = 6,\r\n paddingX = 24,\r\n paddingY = 12,\r\n fontSize = 16,\r\n align = 'center',\r\n}: EmailButtonProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: '10px 0',\r\n }}\r\n >\r\n <a\r\n href={href}\r\n style={{\r\n display: 'inline-block',\r\n backgroundColor,\r\n color: textColor,\r\n padding: `${paddingY}px ${paddingX}px`,\r\n borderRadius: `${borderRadius}px`,\r\n textDecoration: 'none',\r\n fontSize: `${fontSize}px`,\r\n fontWeight: 'bold',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {text}\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nconst EmailButtonSettings = () => {\r\n const { actions: { setProp }, text, href, backgroundColor, textColor, borderRadius, paddingX, paddingY, fontSize, align } = useNode((node) => ({\r\n text: node.data.props.text,\r\n href: node.data.props.href,\r\n backgroundColor: node.data.props.backgroundColor,\r\n textColor: node.data.props.textColor,\r\n borderRadius: node.data.props.borderRadius,\r\n paddingX: node.data.props.paddingX,\r\n paddingY: node.data.props.paddingY,\r\n fontSize: node.data.props.fontSize,\r\n align: node.data.props.align,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Button Text</label>\r\n <input\r\n type=\"text\"\r\n value={text || ''}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.text = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Link URL</label>\r\n <input\r\n type=\"text\"\r\n value={href || ''}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.href = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#0066cc'}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#ffffff'}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={30}\r\n value={borderRadius || 6}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.borderRadius = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={24}\r\n value={fontSize || 16}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmailButton.craft = {\r\n props: {\r\n text: 'Click Here',\r\n href: '#',\r\n backgroundColor: '#0066cc',\r\n textColor: '#ffffff',\r\n borderRadius: 6,\r\n paddingX: 24,\r\n paddingY: 12,\r\n fontSize: 16,\r\n align: 'center',\r\n },\r\n related: {\r\n settings: EmailButtonSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface TextBlockProps {\r\n text?: string;\r\n fontSize?: number;\r\n fontWeight?: 'normal' | 'bold';\r\n color?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n lineHeight?: number;\r\n}\r\n\r\nexport const TextBlock = ({\r\n text = 'Enter your text here...',\r\n fontSize = 14,\r\n fontWeight = 'normal',\r\n color = '#333333',\r\n align = 'left',\r\n padding = 10,\r\n lineHeight = 1.6,\r\n}: TextBlockProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <p\r\n style={{\r\n fontSize: `${fontSize}px`,\r\n fontWeight,\r\n color,\r\n textAlign: align,\r\n lineHeight,\r\n margin: 0,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {text}\r\n </p>\r\n </div>\r\n );\r\n};\r\n\r\nconst TextBlockSettings = () => {\r\n const { actions: { setProp }, text, fontSize, fontWeight, color, align, padding, lineHeight } = useNode((node) => ({\r\n text: node.data.props.text,\r\n fontSize: node.data.props.fontSize,\r\n fontWeight: node.data.props.fontWeight,\r\n color: node.data.props.color,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n lineHeight: node.data.props.lineHeight,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Content</label>\r\n <textarea\r\n value={text || ''}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.text = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px]\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={10}\r\n max={32}\r\n value={fontSize || 14}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Weight</label>\r\n <select\r\n value={fontWeight || 'normal'}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.fontWeight = e.target.value as 'normal' | 'bold'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={color || '#333333'}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.color = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'left'}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Line Height</label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={2.5}\r\n step={0.1}\r\n value={lineHeight || 1.6}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.lineHeight = parseFloat(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{lineHeight}</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTextBlock.craft = {\r\n props: {\r\n text: 'Enter your text here...',\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n align: 'left',\r\n padding: 10,\r\n lineHeight: 1.6,\r\n },\r\n related: {\r\n settings: TextBlockSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface ImageBlockProps {\r\n src?: string;\r\n alt?: string;\r\n width?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n borderRadius?: number;\r\n}\r\n\r\nexport const ImageBlock = ({\r\n src = 'https://via.placeholder.com/400x200',\r\n alt = 'Image',\r\n width = '100%',\r\n align = 'center',\r\n padding = 10,\r\n borderRadius = 0,\r\n}: ImageBlockProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <img\r\n src={src}\r\n alt={alt}\r\n style={{\r\n width,\r\n maxWidth: '100%',\r\n borderRadius: `${borderRadius}px`,\r\n display: 'inline-block',\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nconst ImageBlockSettings = () => {\r\n const { actions: { setProp }, src, alt, width, align, padding, borderRadius } = useNode((node) => ({\r\n src: node.data.props.src,\r\n alt: node.data.props.alt,\r\n width: node.data.props.width,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n borderRadius: node.data.props.borderRadius,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Image URL</label>\r\n <input\r\n type=\"text\"\r\n value={src || ''}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.src = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://example.com/image.png\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alt Text</label>\r\n <input\r\n type=\"text\"\r\n value={alt || ''}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.alt = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Width</label>\r\n <input\r\n type=\"text\"\r\n value={width || '100%'}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.width = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"100% or 300px\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={30}\r\n value={borderRadius || 0}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.borderRadius = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nImageBlock.craft = {\r\n props: {\r\n src: 'https://via.placeholder.com/400x200',\r\n alt: 'Image',\r\n width: '100%',\r\n align: 'center',\r\n padding: 10,\r\n borderRadius: 0,\r\n },\r\n related: {\r\n settings: ImageBlockSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface DividerProps {\r\n color?: string;\r\n thickness?: number;\r\n margin?: number;\r\n width?: string;\r\n}\r\n\r\nexport const Divider = ({\r\n color = '#e0e0e0',\r\n thickness = 1,\r\n margin = 20,\r\n width = '100%',\r\n}: DividerProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${margin}px 0`,\r\n textAlign: 'center',\r\n }}\r\n >\r\n <hr\r\n style={{\r\n border: 'none',\r\n borderTop: `${thickness}px solid ${color}`,\r\n width,\r\n margin: '0 auto',\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nconst DividerSettings = () => {\r\n const { actions: { setProp }, color, thickness, margin, width } = useNode((node) => ({\r\n color: node.data.props.color,\r\n thickness: node.data.props.thickness,\r\n margin: node.data.props.margin,\r\n width: node.data.props.width,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Color</label>\r\n <input\r\n type=\"color\"\r\n value={color || '#e0e0e0'}\r\n onChange={(e) => setProp((props: DividerProps) => (props.color = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Thickness</label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={10}\r\n value={thickness || 1}\r\n onChange={(e) => setProp((props: DividerProps) => (props.thickness = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{thickness}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Margin (Top/Bottom)</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={margin || 20}\r\n onChange={(e) => setProp((props: DividerProps) => (props.margin = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{margin}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Width</label>\r\n <input\r\n type=\"text\"\r\n value={width || '100%'}\r\n onChange={(e) => setProp((props: DividerProps) => (props.width = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"100% or 80%\"\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nDivider.craft = {\r\n props: {\r\n color: '#e0e0e0',\r\n thickness: 1,\r\n margin: 20,\r\n width: '100%',\r\n },\r\n related: {\r\n settings: DividerSettings,\r\n },\r\n};\r\n","import React from \"react\";\r\nimport { useNode } from \"@craftjs/core\";\r\n\r\ninterface InvoiceItem {\r\n description: string;\r\n quantity: number;\r\n unitPrice: number;\r\n}\r\n\r\ninterface InvoiceTableProps {\r\n items?: InvoiceItem[];\r\n headerBg?: string;\r\n headerColor?: string;\r\n borderColor?: string;\r\n showTotal?: boolean;\r\n currency?: string;\r\n}\r\n\r\nexport const InvoiceTable = ({\r\n items = [\r\n { description: \"Service Item 1\", quantity: 1, unitPrice: 100 },\r\n { description: \"Service Item 2\", quantity: 2, unitPrice: 50 },\r\n ],\r\n headerBg = \"#1a1a2e\",\r\n headerColor = \"#ffffff\",\r\n borderColor = \"#e0e0e0\",\r\n showTotal = true,\r\n currency = \"$\",\r\n}: InvoiceTableProps) => {\r\n const {\r\n connectors: { connect, drag },\r\n } = useNode();\r\n\r\n const total = items.reduce(\r\n (sum, item) => sum + item.quantity * item.unitPrice,\r\n 0,\r\n );\r\n\r\n const cellStyle: React.CSSProperties = {\r\n padding: \"12px 16px\",\r\n borderBottom: `1px solid ${borderColor}`,\r\n fontFamily: \"Arial, sans-serif\",\r\n fontSize: \"14px\",\r\n };\r\n\r\n const headerStyle: React.CSSProperties = {\r\n ...cellStyle,\r\n backgroundColor: headerBg,\r\n color: headerColor,\r\n fontWeight: \"bold\",\r\n textAlign: \"left\",\r\n };\r\n\r\n return (\r\n <div ref={(ref) => connect(drag(ref!))} style={{ padding: \"10px\" }}>\r\n <table\r\n style={{\r\n width: \"100%\",\r\n borderCollapse: \"collapse\",\r\n border: `1px solid ${borderColor}`,\r\n }}\r\n >\r\n <thead>\r\n <tr>\r\n <th style={headerStyle}>Description</th>\r\n <th style={{ ...headerStyle, textAlign: \"center\", width: \"80px\" }}>\r\n Qty\r\n </th>\r\n <th style={{ ...headerStyle, textAlign: \"right\", width: \"100px\" }}>\r\n Unit Price\r\n </th>\r\n <th style={{ ...headerStyle, textAlign: \"right\", width: \"100px\" }}>\r\n Amount\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {items.map((item, index) => (\r\n <tr key={index}>\r\n <td style={cellStyle}>{item.description}</td>\r\n <td style={{ ...cellStyle, textAlign: \"center\" }}>\r\n {item.quantity}\r\n </td>\r\n <td style={{ ...cellStyle, textAlign: \"right\" }}>\r\n {currency}\r\n {item.unitPrice.toFixed(2)}\r\n </td>\r\n <td style={{ ...cellStyle, textAlign: \"right\" }}>\r\n {currency}\r\n {(item.quantity * item.unitPrice).toFixed(2)}\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n {showTotal && (\r\n <tfoot>\r\n <tr>\r\n <td\r\n colSpan={3}\r\n style={{ ...cellStyle, textAlign: \"right\", fontWeight: \"bold\" }}\r\n >\r\n Total:\r\n </td>\r\n <td\r\n style={{\r\n ...cellStyle,\r\n textAlign: \"right\",\r\n fontWeight: \"bold\",\r\n backgroundColor: \"#f5f5f5\",\r\n }}\r\n >\r\n {currency}\r\n {total.toFixed(2)}\r\n </td>\r\n </tr>\r\n </tfoot>\r\n )}\r\n </table>\r\n </div>\r\n );\r\n};\r\n\r\nconst InvoiceTableSettings = () => {\r\n const {\r\n actions: { setProp },\r\n items,\r\n headerBg,\r\n headerColor,\r\n borderColor,\r\n showTotal,\r\n currency,\r\n } = useNode((node) => ({\r\n items: node.data.props.items,\r\n headerBg: node.data.props.headerBg,\r\n headerColor: node.data.props.headerColor,\r\n borderColor: node.data.props.borderColor,\r\n showTotal: node.data.props.showTotal,\r\n currency: node.data.props.currency,\r\n }));\r\n\r\n const updateItem = (\r\n index: number,\r\n field: keyof InvoiceItem,\r\n value: string | number,\r\n ) => {\r\n setProp((props: InvoiceTableProps) => {\r\n const newItems = [...(props.items || [])];\r\n newItems[index] = { ...newItems[index], [field]: value };\r\n props.items = newItems;\r\n });\r\n };\r\n\r\n const addItem = () => {\r\n setProp((props: InvoiceTableProps) => {\r\n props.items = [\r\n ...(props.items || []),\r\n { description: \"New Item\", quantity: 1, unitPrice: 0 },\r\n ];\r\n });\r\n };\r\n\r\n const removeItem = (index: number) => {\r\n setProp((props: InvoiceTableProps) => {\r\n props.items = (props.items || []).filter((_, i) => i !== index);\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">Invoice Items</label>\r\n {(items || []).map((item: any, index: any) => (\r\n <div key={index} className=\"mb-3 p-3 border rounded-md bg-muted/30\">\r\n <input\r\n type=\"text\"\r\n value={item.description}\r\n onChange={(e) => updateItem(index, \"description\", e.target.value)}\r\n className=\"w-full px-2 py-1 border rounded text-sm mb-2\"\r\n placeholder=\"Description\"\r\n />\r\n <div className=\"flex gap-2\">\r\n <input\r\n type=\"number\"\r\n value={item.quantity}\r\n onChange={(e) =>\r\n updateItem(index, \"quantity\", parseInt(e.target.value) || 0)\r\n }\r\n className=\"w-20 px-2 py-1 border rounded text-sm\"\r\n placeholder=\"Qty\"\r\n />\r\n <input\r\n type=\"number\"\r\n value={item.unitPrice}\r\n onChange={(e) =>\r\n updateItem(\r\n index,\r\n \"unitPrice\",\r\n parseFloat(e.target.value) || 0,\r\n )\r\n }\r\n className=\"flex-1 px-2 py-1 border rounded text-sm\"\r\n placeholder=\"Price\"\r\n />\r\n <button\r\n onClick={() => removeItem(index)}\r\n className=\"px-2 py-1 bg-destructive text-destructive-foreground rounded text-sm\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n ))}\r\n <button\r\n onClick={addItem}\r\n className=\"w-full py-2 border-2 border-dashed rounded-md text-sm text-muted-foreground hover:bg-muted/50\"\r\n >\r\n + Add Item\r\n </button>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">\r\n Currency Symbol\r\n </label>\r\n <input\r\n type=\"text\"\r\n value={currency || \"$\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) => (props.currency = e.target.value),\r\n )\r\n }\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">\r\n Header Background\r\n </label>\r\n <input\r\n type=\"color\"\r\n value={headerBg || \"#1a1a2e\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) => (props.headerBg = e.target.value),\r\n )\r\n }\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">\r\n Header Text Color\r\n </label>\r\n <input\r\n type=\"color\"\r\n value={headerColor || \"#ffffff\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) =>\r\n (props.headerColor = e.target.value),\r\n )\r\n }\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Color</label>\r\n <input\r\n type=\"color\"\r\n value={borderColor || \"#e0e0e0\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) =>\r\n (props.borderColor = e.target.value),\r\n )\r\n }\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div className=\"flex items-center gap-2\">\r\n <input\r\n type=\"checkbox\"\r\n checked={showTotal ?? true}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) =>\r\n (props.showTotal = e.target.checked),\r\n )\r\n }\r\n className=\"rounded\"\r\n />\r\n <label className=\"text-sm font-medium\">Show Total Row</label>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nInvoiceTable.craft = {\r\n props: {\r\n items: [\r\n { description: \"Service Item 1\", quantity: 1, unitPrice: 100 },\r\n { description: \"Service Item 2\", quantity: 2, unitPrice: 50 },\r\n ],\r\n headerBg: \"#1a1a2e\",\r\n headerColor: \"#ffffff\",\r\n borderColor: \"#e0e0e0\",\r\n showTotal: true,\r\n currency: \"$\",\r\n },\r\n related: {\r\n settings: InvoiceTableSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface SpacerProps {\r\n height?: number;\r\n}\r\n\r\nexport const Spacer = ({ height = 20 }: SpacerProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n height: `${height}px`,\r\n width: '100%',\r\n backgroundColor: 'transparent',\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst SpacerSettings = () => {\r\n const { actions: { setProp }, height } = useNode((node) => ({\r\n height: node.data.props.height,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Height</label>\r\n <input\r\n type=\"range\"\r\n min={5}\r\n max={100}\r\n value={height || 20}\r\n onChange={(e) => setProp((props: SpacerProps) => (props.height = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{height}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nSpacer.craft = {\r\n props: {\r\n height: 20,\r\n },\r\n related: {\r\n settings: SpacerSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface SocialLink {\r\n platform: 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'youtube' | 'tiktok';\r\n url: string;\r\n}\r\n\r\ninterface SocialLinksProps {\r\n links?: SocialLink[];\r\n iconSize?: number;\r\n iconColor?: string;\r\n backgroundColor?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n gap?: number;\r\n}\r\n\r\nconst socialIcons: Record<string, string> = {\r\n facebook: 'https://cdn-icons-png.flaticon.com/128/733/733547.png',\r\n twitter: 'https://cdn-icons-png.flaticon.com/128/733/733579.png',\r\n instagram: 'https://cdn-icons-png.flaticon.com/128/2111/2111463.png',\r\n linkedin: 'https://cdn-icons-png.flaticon.com/128/3536/3536505.png',\r\n youtube: 'https://cdn-icons-png.flaticon.com/128/1384/1384060.png',\r\n tiktok: 'https://cdn-icons-png.flaticon.com/128/3046/3046121.png',\r\n};\r\n\r\nexport const SocialLinks = ({\r\n links = [\r\n { platform: 'facebook', url: '#' },\r\n { platform: 'twitter', url: '#' },\r\n { platform: 'instagram', url: '#' },\r\n { platform: 'linkedin', url: '#' },\r\n ],\r\n iconSize = 32,\r\n iconColor = '#333333',\r\n backgroundColor = 'transparent',\r\n align = 'center',\r\n padding = 16,\r\n gap = 16,\r\n}: SocialLinksProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: `${padding}px`,\r\n backgroundColor,\r\n }}\r\n >\r\n <div style={{ display: 'inline-flex', gap: `${gap}px` }}>\r\n {links.map((link, index) => (\r\n <a\r\n key={index}\r\n href={link.url}\r\n style={{\r\n display: 'inline-block',\r\n width: iconSize,\r\n height: iconSize,\r\n }}\r\n >\r\n <img\r\n src={socialIcons[link.platform]}\r\n alt={link.platform}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'contain',\r\n }}\r\n />\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst SocialLinksSettings = () => {\r\n const { actions: { setProp }, links, iconSize, align, padding, gap, backgroundColor } = useNode((node) => ({\r\n links: node.data.props.links,\r\n iconSize: node.data.props.iconSize,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n gap: node.data.props.gap,\r\n backgroundColor: node.data.props.backgroundColor,\r\n }));\r\n\r\n const platforms = ['facebook', 'twitter', 'instagram', 'linkedin', 'youtube', 'tiktok'];\r\n const currentLinks = links || [];\r\n\r\n const togglePlatform = (platform: string) => {\r\n const exists = currentLinks.find((l: SocialLink) => l.platform === platform);\r\n if (exists) {\r\n setProp((props: SocialLinksProps) => {\r\n props.links = currentLinks.filter((l: SocialLink) => l.platform !== platform);\r\n });\r\n } else {\r\n setProp((props: SocialLinksProps) => {\r\n props.links = [...currentLinks, { platform: platform as SocialLink['platform'], url: '#' }];\r\n });\r\n }\r\n };\r\n\r\n const updateUrl = (platform: string, url: string) => {\r\n setProp((props: SocialLinksProps) => {\r\n props.links = currentLinks.map((l: SocialLink) =>\r\n l.platform === platform ? { ...l, url } : l\r\n );\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">Platforms</label>\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n {platforms.map((platform) => (\r\n <label key={platform} className=\"flex items-center gap-2 text-sm cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={currentLinks.some((l: SocialLink) => l.platform === platform)}\r\n onChange={() => togglePlatform(platform)}\r\n className=\"rounded\"\r\n />\r\n <span className=\"capitalize\">{platform}</span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {currentLinks.map((link: SocialLink) => (\r\n <div key={link.platform}>\r\n <label className=\"block text-sm font-medium mb-1 capitalize\">{link.platform} URL</label>\r\n <input\r\n type=\"text\"\r\n value={link.url}\r\n onChange={(e) => updateUrl(link.platform, e.target.value)}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://...\"\r\n />\r\n </div>\r\n ))}\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Icon Size</label>\r\n <input\r\n type=\"range\"\r\n min={20}\r\n max={48}\r\n value={iconSize || 32}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.iconSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{iconSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\r\n <input\r\n type=\"range\"\r\n min={8}\r\n max={32}\r\n value={gap || 16}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.gap = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#ffffff'}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 16}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nSocialLinks.craft = {\r\n props: {\r\n links: [\r\n { platform: 'facebook', url: '#' },\r\n { platform: 'twitter', url: '#' },\r\n { platform: 'instagram', url: '#' },\r\n { platform: 'linkedin', url: '#' },\r\n ],\r\n iconSize: 32,\r\n iconColor: '#333333',\r\n backgroundColor: 'transparent',\r\n align: 'center',\r\n padding: 16,\r\n gap: 16,\r\n },\r\n related: {\r\n settings: SocialLinksSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface CountdownProps {\r\n title?: string;\r\n days?: number;\r\n hours?: number;\r\n minutes?: number;\r\n seconds?: number;\r\n backgroundColor?: string;\r\n numberColor?: string;\r\n labelColor?: string;\r\n titleColor?: string;\r\n boxBackground?: string;\r\n padding?: number;\r\n}\r\n\r\nexport const Countdown = ({\r\n title = 'Sale Ends In',\r\n days = 3,\r\n hours = 12,\r\n minutes = 45,\r\n seconds = 30,\r\n backgroundColor = '#ff6b6b',\r\n numberColor = '#ffffff',\r\n labelColor = '#ffffff',\r\n titleColor = '#ffffff',\r\n boxBackground = 'rgba(0,0,0,0.2)',\r\n padding = 24,\r\n}: CountdownProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n const TimeBox = ({ value, label }: { value: number; label: string }) => (\r\n <div\r\n style={{\r\n background: boxBackground,\r\n padding: '12px 16px',\r\n borderRadius: '8px',\r\n textAlign: 'center',\r\n minWidth: '60px',\r\n }}\r\n >\r\n <div\r\n style={{\r\n fontSize: '28px',\r\n fontWeight: 'bold',\r\n color: numberColor,\r\n fontFamily: 'Arial, sans-serif',\r\n lineHeight: 1.2,\r\n }}\r\n >\r\n {String(value).padStart(2, '0')}\r\n </div>\r\n <div\r\n style={{\r\n fontSize: '11px',\r\n color: labelColor,\r\n textTransform: 'uppercase',\r\n letterSpacing: '1px',\r\n marginTop: '4px',\r\n }}\r\n >\r\n {label}\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n }}\r\n >\r\n {title && (\r\n <h3\r\n style={{\r\n color: titleColor,\r\n fontSize: '18px',\r\n fontWeight: 'bold',\r\n marginBottom: '16px',\r\n fontFamily: 'Arial, sans-serif',\r\n margin: '0 0 16px 0',\r\n }}\r\n >\r\n {title}\r\n </h3>\r\n )}\r\n <div\r\n style={{\r\n display: 'inline-flex',\r\n gap: '12px',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <TimeBox value={days} label=\"Days\" />\r\n <TimeBox value={hours} label=\"Hours\" />\r\n <TimeBox value={minutes} label=\"Mins\" />\r\n <TimeBox value={seconds} label=\"Secs\" />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst CountdownSettings = () => {\r\n const {\r\n actions: { setProp },\r\n title,\r\n days,\r\n hours,\r\n minutes,\r\n seconds,\r\n backgroundColor,\r\n numberColor,\r\n labelColor,\r\n titleColor,\r\n boxBackground,\r\n padding,\r\n } = useNode((node) => ({\r\n title: node.data.props.title,\r\n days: node.data.props.days,\r\n hours: node.data.props.hours,\r\n minutes: node.data.props.minutes,\r\n seconds: node.data.props.seconds,\r\n backgroundColor: node.data.props.backgroundColor,\r\n numberColor: node.data.props.numberColor,\r\n labelColor: node.data.props.labelColor,\r\n titleColor: node.data.props.titleColor,\r\n boxBackground: node.data.props.boxBackground,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Title</label>\r\n <input\r\n type=\"text\"\r\n value={title || ''}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.title = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Days</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n value={days || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.days = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Hours</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n max={23}\r\n value={hours || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.hours = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Minutes</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n max={59}\r\n value={minutes || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.minutes = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Seconds</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n max={59}\r\n value={seconds || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.seconds = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#ff6b6b'}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Title Color</label>\r\n <input\r\n type=\"color\"\r\n value={titleColor || '#ffffff'}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.titleColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Number Color</label>\r\n <input\r\n type=\"color\"\r\n value={numberColor || '#ffffff'}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.numberColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={8}\r\n max={48}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCountdown.craft = {\r\n props: {\r\n title: 'Sale Ends In',\r\n days: 3,\r\n hours: 12,\r\n minutes: 45,\r\n seconds: 30,\r\n backgroundColor: '#ff6b6b',\r\n numberColor: '#ffffff',\r\n labelColor: '#ffffff',\r\n titleColor: '#ffffff',\r\n boxBackground: 'rgba(0,0,0,0.2)',\r\n padding: 24,\r\n },\r\n related: {\r\n settings: CountdownSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface PromoCodeProps {\r\n title?: string;\r\n code?: string;\r\n description?: string;\r\n backgroundColor?: string;\r\n borderColor?: string;\r\n codeBackground?: string;\r\n textColor?: string;\r\n codeColor?: string;\r\n padding?: number;\r\n borderStyle?: 'solid' | 'dashed' | 'dotted';\r\n}\r\n\r\nexport const PromoCode = ({\r\n title = '🎉 Special Offer!',\r\n code = 'SAVE20',\r\n description = 'Use this code at checkout to get 20% off your order',\r\n backgroundColor = '#fff8e1',\r\n borderColor = '#ffc107',\r\n codeBackground = '#ffffff',\r\n textColor = '#333333',\r\n codeColor = '#e65100',\r\n padding = 24,\r\n borderStyle = 'dashed',\r\n}: PromoCodeProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n border: `2px ${borderStyle} ${borderColor}`,\r\n borderRadius: '8px',\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n margin: '10px',\r\n }}\r\n >\r\n {title && (\r\n <div\r\n style={{\r\n fontSize: '18px',\r\n fontWeight: 'bold',\r\n color: textColor,\r\n marginBottom: '12px',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {title}\r\n </div>\r\n )}\r\n \r\n <div\r\n style={{\r\n display: 'inline-block',\r\n backgroundColor: codeBackground,\r\n border: `1px solid ${borderColor}`,\r\n borderRadius: '6px',\r\n padding: '12px 24px',\r\n marginBottom: '12px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n fontSize: '24px',\r\n fontWeight: 'bold',\r\n fontFamily: 'monospace',\r\n letterSpacing: '3px',\r\n color: codeColor,\r\n }}\r\n >\r\n {code}\r\n </span>\r\n </div>\r\n\r\n {description && (\r\n <div\r\n style={{\r\n fontSize: '14px',\r\n color: textColor,\r\n fontFamily: 'Arial, sans-serif',\r\n opacity: 0.8,\r\n }}\r\n >\r\n {description}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst PromoCodeSettings = () => {\r\n const {\r\n actions: { setProp },\r\n title,\r\n code,\r\n description,\r\n backgroundColor,\r\n borderColor,\r\n codeBackground,\r\n textColor,\r\n codeColor,\r\n padding,\r\n borderStyle,\r\n } = useNode((node) => ({\r\n title: node.data.props.title,\r\n code: node.data.props.code,\r\n description: node.data.props.description,\r\n backgroundColor: node.data.props.backgroundColor,\r\n borderColor: node.data.props.borderColor,\r\n codeBackground: node.data.props.codeBackground,\r\n textColor: node.data.props.textColor,\r\n codeColor: node.data.props.codeColor,\r\n padding: node.data.props.padding,\r\n borderStyle: node.data.props.borderStyle,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Title</label>\r\n <input\r\n type=\"text\"\r\n value={title || ''}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.title = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Promo Code</label>\r\n <input\r\n type=\"text\"\r\n value={code || ''}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.code = e.target.value.toUpperCase()))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm font-mono\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Description</label>\r\n <textarea\r\n value={description || ''}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.description = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[60px]\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Style</label>\r\n <select\r\n value={borderStyle || 'dashed'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.borderStyle = e.target.value as 'solid' | 'dashed' | 'dotted'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"solid\">Solid</option>\r\n <option value=\"dashed\">Dashed</option>\r\n <option value=\"dotted\">Dotted</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#fff8e1'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Color</label>\r\n <input\r\n type=\"color\"\r\n value={borderColor || '#ffc107'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.borderColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Code Color</label>\r\n <input\r\n type=\"color\"\r\n value={codeColor || '#e65100'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.codeColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={48}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nPromoCode.craft = {\r\n props: {\r\n title: '🎉 Special Offer!',\r\n code: 'SAVE20',\r\n description: 'Use this code at checkout to get 20% off your order',\r\n backgroundColor: '#fff8e1',\r\n borderColor: '#ffc107',\r\n codeBackground: '#ffffff',\r\n textColor: '#333333',\r\n codeColor: '#e65100',\r\n padding: 24,\r\n borderStyle: 'dashed',\r\n },\r\n related: {\r\n settings: PromoCodeSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface TestimonialProps {\r\n quote?: string;\r\n authorName?: string;\r\n authorTitle?: string;\r\n authorImage?: string;\r\n backgroundColor?: string;\r\n quoteColor?: string;\r\n authorColor?: string;\r\n accentColor?: string;\r\n padding?: number;\r\n showQuoteIcon?: boolean;\r\n}\r\n\r\nexport const Testimonial = ({\r\n quote = \"This product has completely transformed how we do business. The results have been incredible!\",\r\n authorName = 'Sarah Johnson',\r\n authorTitle = 'CEO, TechCorp',\r\n authorImage = '',\r\n backgroundColor = '#f8f9fa',\r\n quoteColor = '#333333',\r\n authorColor = '#666666',\r\n accentColor = '#0066cc',\r\n padding = 24,\r\n showQuoteIcon = true,\r\n}: TestimonialProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n borderLeft: `4px solid ${accentColor}`,\r\n margin: '10px',\r\n }}\r\n >\r\n {showQuoteIcon && (\r\n <div\r\n style={{\r\n fontSize: '48px',\r\n color: accentColor,\r\n opacity: 0.3,\r\n lineHeight: 1,\r\n marginBottom: '-20px',\r\n fontFamily: 'Georgia, serif',\r\n }}\r\n >\r\n \"\r\n </div>\r\n )}\r\n \r\n <p\r\n style={{\r\n fontSize: '16px',\r\n fontStyle: 'italic',\r\n color: quoteColor,\r\n lineHeight: 1.7,\r\n margin: '0 0 16px 0',\r\n fontFamily: 'Georgia, serif',\r\n }}\r\n >\r\n {quote}\r\n </p>\r\n\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\r\n {authorImage && (\r\n <img\r\n src={authorImage}\r\n alt={authorName}\r\n style={{\r\n width: '48px',\r\n height: '48px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n )}\r\n <div>\r\n <div\r\n style={{\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n color: quoteColor,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {authorName}\r\n </div>\r\n {authorTitle && (\r\n <div\r\n style={{\r\n fontSize: '12px',\r\n color: authorColor,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {authorTitle}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst TestimonialSettings = () => {\r\n const {\r\n actions: { setProp },\r\n quote,\r\n authorName,\r\n authorTitle,\r\n authorImage,\r\n backgroundColor,\r\n quoteColor,\r\n authorColor,\r\n accentColor,\r\n padding,\r\n showQuoteIcon,\r\n } = useNode((node) => ({\r\n quote: node.data.props.quote,\r\n authorName: node.data.props.authorName,\r\n authorTitle: node.data.props.authorTitle,\r\n authorImage: node.data.props.authorImage,\r\n backgroundColor: node.data.props.backgroundColor,\r\n quoteColor: node.data.props.quoteColor,\r\n authorColor: node.data.props.authorColor,\r\n accentColor: node.data.props.accentColor,\r\n padding: node.data.props.padding,\r\n showQuoteIcon: node.data.props.showQuoteIcon,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Quote</label>\r\n <textarea\r\n value={quote || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.quote = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px]\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Author Name</label>\r\n <input\r\n type=\"text\"\r\n value={authorName || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorName = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Author Title</label>\r\n <input\r\n type=\"text\"\r\n value={authorTitle || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorTitle = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Author Image URL</label>\r\n <input\r\n type=\"text\"\r\n value={authorImage || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorImage = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://...\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"flex items-center gap-2 text-sm cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={showQuoteIcon !== false}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.showQuoteIcon = e.target.checked))}\r\n className=\"rounded\"\r\n />\r\n Show Quote Icon\r\n </label>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#f8f9fa'}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Accent Color</label>\r\n <input\r\n type=\"color\"\r\n value={accentColor || '#0066cc'}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.accentColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Quote Color</label>\r\n <input\r\n type=\"color\"\r\n value={quoteColor || '#333333'}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.quoteColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={48}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTestimonial.craft = {\r\n props: {\r\n quote: \"This product has completely transformed how we do business. The results have been incredible!\",\r\n authorName: 'Sarah Johnson',\r\n authorTitle: 'CEO, TechCorp',\r\n authorImage: '',\r\n backgroundColor: '#f8f9fa',\r\n quoteColor: '#333333',\r\n authorColor: '#666666',\r\n accentColor: '#0066cc',\r\n padding: 24,\r\n showQuoteIcon: true,\r\n },\r\n related: {\r\n settings: TestimonialSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface VideoPlaceholderProps {\r\n thumbnailUrl?: string;\r\n videoUrl?: string;\r\n width?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n borderRadius?: number;\r\n playButtonColor?: string;\r\n overlayOpacity?: number;\r\n}\r\n\r\nexport const VideoPlaceholder = ({\r\n thumbnailUrl = 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=338&fit=crop',\r\n videoUrl = '#',\r\n width = '100%',\r\n align = 'center',\r\n padding = 10,\r\n borderRadius = 8,\r\n playButtonColor = '#ffffff',\r\n overlayOpacity = 0.3,\r\n}: VideoPlaceholderProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <a\r\n href={videoUrl}\r\n style={{\r\n display: 'inline-block',\r\n position: 'relative',\r\n width,\r\n maxWidth: '100%',\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n borderRadius: `${borderRadius}px`,\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <img\r\n src={thumbnailUrl}\r\n alt=\"Video thumbnail\"\r\n style={{\r\n width: '100%',\r\n display: 'block',\r\n }}\r\n />\r\n \r\n {/* Overlay */}\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: `rgba(0,0,0,${overlayOpacity})`,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n {/* Play Button */}\r\n <div\r\n style={{\r\n width: '64px',\r\n height: '64px',\r\n backgroundColor: 'rgba(0,0,0,0.6)',\r\n borderRadius: '50%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n border: `3px solid ${playButtonColor}`,\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: 0,\r\n height: 0,\r\n borderTop: '12px solid transparent',\r\n borderBottom: '12px solid transparent',\r\n borderLeft: `20px solid ${playButtonColor}`,\r\n marginLeft: '4px',\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nconst VideoPlaceholderSettings = () => {\r\n const {\r\n actions: { setProp },\r\n thumbnailUrl,\r\n videoUrl,\r\n width,\r\n align,\r\n padding,\r\n borderRadius,\r\n playButtonColor,\r\n overlayOpacity,\r\n } = useNode((node) => ({\r\n thumbnailUrl: node.data.props.thumbnailUrl,\r\n videoUrl: node.data.props.videoUrl,\r\n width: node.data.props.width,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n borderRadius: node.data.props.borderRadius,\r\n playButtonColor: node.data.props.playButtonColor,\r\n overlayOpacity: node.data.props.overlayOpacity,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Thumbnail URL</label>\r\n <input\r\n type=\"text\"\r\n value={thumbnailUrl || ''}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.thumbnailUrl = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://...\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Video URL</label>\r\n <input\r\n type=\"text\"\r\n value={videoUrl || ''}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.videoUrl = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://youtube.com/watch?v=...\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Width</label>\r\n <input\r\n type=\"text\"\r\n value={width || '100%'}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.width = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"100% or 400px\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Play Button Color</label>\r\n <input\r\n type=\"color\"\r\n value={playButtonColor || '#ffffff'}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.playButtonColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Overlay Opacity</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={0.8}\r\n step={0.1}\r\n value={overlayOpacity || 0.3}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.overlayOpacity = parseFloat(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{(overlayOpacity || 0.3).toFixed(1)}</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={24}\r\n value={borderRadius || 8}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.borderRadius = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nVideoPlaceholder.craft = {\r\n props: {\r\n thumbnailUrl: 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=338&fit=crop',\r\n videoUrl: '#',\r\n width: '100%',\r\n align: 'center',\r\n padding: 10,\r\n borderRadius: 8,\r\n playButtonColor: '#ffffff',\r\n overlayOpacity: 0.3,\r\n },\r\n related: {\r\n settings: VideoPlaceholderSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface VariableTextProps {\r\n text?: string;\r\n fontSize?: number;\r\n fontWeight?: 'normal' | 'bold';\r\n color?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n lineHeight?: number;\r\n}\r\n\r\nconst AVAILABLE_VARIABLES = [\r\n { key: '{{first_name}}', label: 'First Name', preview: 'John' },\r\n { key: '{{last_name}}', label: 'Last Name', preview: 'Doe' },\r\n { key: '{{full_name}}', label: 'Full Name', preview: 'John Doe' },\r\n { key: '{{email}}', label: 'Email', preview: 'john@example.com' },\r\n { key: '{{company}}', label: 'Company', preview: 'Acme Inc' },\r\n { key: '{{invoice_number}}', label: 'Invoice #', preview: 'INV-001' },\r\n { key: '{{invoice_date}}', label: 'Invoice Date', preview: '2024-01-15' },\r\n { key: '{{due_date}}', label: 'Due Date', preview: '2024-01-30' },\r\n { key: '{{total_amount}}', label: 'Total Amount', preview: '$1,500.00' },\r\n { key: '{{order_number}}', label: 'Order #', preview: 'ORD-12345' },\r\n];\r\n\r\nconst renderWithVariables = (text: string) => {\r\n let rendered = text;\r\n AVAILABLE_VARIABLES.forEach(({ key, preview }) => {\r\n rendered = rendered.replace(new RegExp(key.replace(/[{}]/g, '\\\\$&'), 'g'), \r\n `<span style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">${preview}</span>`\r\n );\r\n });\r\n return rendered;\r\n};\r\n\r\nexport const VariableText = ({\r\n text = 'Hello {{first_name}}, thank you for your order {{order_number}}!',\r\n fontSize = 14,\r\n fontWeight = 'normal',\r\n color = '#333333',\r\n align = 'left',\r\n padding = 10,\r\n lineHeight = 1.6,\r\n}: VariableTextProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <p\r\n style={{\r\n fontSize: `${fontSize}px`,\r\n fontWeight,\r\n color,\r\n textAlign: align,\r\n lineHeight,\r\n margin: 0,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n dangerouslySetInnerHTML={{ __html: renderWithVariables(text) }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nconst VariableTextSettings = () => {\r\n const { actions: { setProp }, text, fontSize, fontWeight, color, align, padding, lineHeight } = useNode((node) => ({\r\n text: node.data.props.text,\r\n fontSize: node.data.props.fontSize,\r\n fontWeight: node.data.props.fontWeight,\r\n color: node.data.props.color,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n lineHeight: node.data.props.lineHeight,\r\n }));\r\n\r\n const insertVariable = (variable: string) => {\r\n setProp((props: VariableTextProps) => {\r\n props.text = (props.text || '') + variable;\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Content</label>\r\n <textarea\r\n value={text || ''}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.text = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px] font-mono\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">Insert Variable</label>\r\n <div className=\"flex flex-wrap gap-1\">\r\n {AVAILABLE_VARIABLES.map((v) => (\r\n <button\r\n key={v.key}\r\n onClick={() => insertVariable(v.key)}\r\n className=\"px-2 py-1 text-xs bg-primary/10 hover:bg-primary/20 text-primary rounded border border-primary/20 transition-colors\"\r\n >\r\n {v.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={10}\r\n max={32}\r\n value={fontSize || 14}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Weight</label>\r\n <select\r\n value={fontWeight || 'normal'}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.fontWeight = e.target.value as 'normal' | 'bold'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={color || '#333333'}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.color = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'left'}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Line Height</label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={2.5}\r\n step={0.1}\r\n value={lineHeight || 1.6}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.lineHeight = parseFloat(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{lineHeight}</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nVariableText.craft = {\r\n props: {\r\n text: 'Hello {{first_name}}, thank you for your order {{order_number}}!',\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n align: 'left',\r\n padding: 10,\r\n lineHeight: 1.6,\r\n },\r\n related: {\r\n settings: VariableTextSettings,\r\n },\r\n};\r\n\r\nexport { AVAILABLE_VARIABLES };\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface ListItem {\r\n icon: string;\r\n text: string;\r\n}\r\n\r\ninterface IconListProps {\r\n items?: ListItem[];\r\n iconColor?: string;\r\n textColor?: string;\r\n backgroundColor?: string;\r\n fontSize?: number;\r\n iconSize?: number;\r\n gap?: number;\r\n padding?: number;\r\n}\r\n\r\nconst ICONS = {\r\n check: '✓',\r\n star: '★',\r\n arrow: '→',\r\n bullet: '•',\r\n heart: '❤',\r\n fire: '🔥',\r\n rocket: '🚀',\r\n sparkle: '✨',\r\n gift: '🎁',\r\n clock: '⏰',\r\n};\r\n\r\nexport const IconList = ({\r\n items = [\r\n { icon: 'check', text: 'Fast and reliable delivery' },\r\n { icon: 'check', text: 'Premium quality products' },\r\n { icon: 'check', text: '24/7 customer support' },\r\n { icon: 'check', text: '30-day money back guarantee' },\r\n ],\r\n iconColor = '#22c55e',\r\n textColor = '#333333',\r\n backgroundColor = 'transparent',\r\n fontSize = 14,\r\n iconSize = 18,\r\n gap = 12,\r\n padding = 16,\r\n}: IconListProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${padding}px`,\r\n backgroundColor,\r\n }}\r\n >\r\n <ul\r\n style={{\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: `${gap}px`,\r\n }}\r\n >\r\n {items.map((item, index) => (\r\n <li\r\n key={index}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: iconColor,\r\n fontSize: `${iconSize}px`,\r\n lineHeight: 1.4,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {ICONS[item.icon as keyof typeof ICONS] || item.icon}\r\n </span>\r\n <span\r\n style={{\r\n color: textColor,\r\n fontSize: `${fontSize}px`,\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {item.text}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nconst IconListSettings = () => {\r\n const {\r\n actions: { setProp },\r\n items,\r\n iconColor,\r\n textColor,\r\n backgroundColor,\r\n fontSize,\r\n iconSize,\r\n gap,\r\n padding,\r\n } = useNode((node) => ({\r\n items: node.data.props.items,\r\n iconColor: node.data.props.iconColor,\r\n textColor: node.data.props.textColor,\r\n backgroundColor: node.data.props.backgroundColor,\r\n fontSize: node.data.props.fontSize,\r\n iconSize: node.data.props.iconSize,\r\n gap: node.data.props.gap,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n const currentItems = items || [];\r\n\r\n const updateItem = (index: number, field: 'icon' | 'text', value: string) => {\r\n setProp((props: IconListProps) => {\r\n props.items = currentItems.map((item: ListItem, i: number) =>\r\n i === index ? { ...item, [field]: value } : item\r\n );\r\n });\r\n };\r\n\r\n const addItem = () => {\r\n setProp((props: IconListProps) => {\r\n props.items = [...currentItems, { icon: 'check', text: 'New item' }];\r\n });\r\n };\r\n\r\n const removeItem = (index: number) => {\r\n setProp((props: IconListProps) => {\r\n props.items = currentItems.filter((_: ListItem, i: number) => i !== index);\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">List Items</label>\r\n <div className=\"space-y-3\">\r\n {currentItems.map((item: ListItem, index: number) => (\r\n <div key={index} className=\"flex gap-2 items-start\">\r\n <select\r\n value={item.icon}\r\n onChange={(e) => updateItem(index, 'icon', e.target.value)}\r\n className=\"w-16 px-2 py-2 border rounded-md text-sm\"\r\n >\r\n {Object.entries(ICONS).map(([key, icon]) => (\r\n <option key={key} value={key}>{icon}</option>\r\n ))}\r\n </select>\r\n <input\r\n type=\"text\"\r\n value={item.text}\r\n onChange={(e) => updateItem(index, 'text', e.target.value)}\r\n className=\"flex-1 px-3 py-2 border rounded-md text-sm\"\r\n />\r\n <button\r\n onClick={() => removeItem(index)}\r\n className=\"px-2 py-2 text-destructive hover:bg-destructive/10 rounded\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n <button\r\n onClick={addItem}\r\n className=\"mt-2 w-full py-2 text-sm border border-dashed rounded-md hover:bg-accent transition-colors\"\r\n >\r\n + Add Item\r\n </button>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Icon Color</label>\r\n <input\r\n type=\"color\"\r\n value={iconColor || '#22c55e'}\r\n onChange={(e) => setProp((props: IconListProps) => (props.iconColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#333333'}\r\n onChange={(e) => setProp((props: IconListProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={20}\r\n value={fontSize || 14}\r\n onChange={(e) => setProp((props: IconListProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Icon Size</label>\r\n <input\r\n type=\"range\"\r\n min={14}\r\n max={28}\r\n value={iconSize || 18}\r\n onChange={(e) => setProp((props: IconListProps) => (props.iconSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{iconSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\r\n <input\r\n type=\"range\"\r\n min={4}\r\n max={24}\r\n value={gap || 12}\r\n onChange={(e) => setProp((props: IconListProps) => (props.gap = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 16}\r\n onChange={(e) => setProp((props: IconListProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nIconList.craft = {\r\n props: {\r\n items: [\r\n { icon: 'check', text: 'Fast and reliable delivery' },\r\n { icon: 'check', text: 'Premium quality products' },\r\n { icon: 'check', text: '24/7 customer support' },\r\n { icon: 'check', text: '30-day money back guarantee' },\r\n ],\r\n iconColor: '#22c55e',\r\n textColor: '#333333',\r\n backgroundColor: 'transparent',\r\n fontSize: 14,\r\n iconSize: 18,\r\n gap: 12,\r\n padding: 16,\r\n },\r\n related: {\r\n settings: IconListSettings,\r\n },\r\n};\r\n","import React from \"react\";\r\nimport { Element } from \"@craftjs/core\";\r\nimport {\r\n PanelTop,\r\n PanelBottom,\r\n LayoutTemplate,\r\n Columns,\r\n ArrowUpDown,\r\n Minus,\r\n Type,\r\n Image,\r\n MousePointer2,\r\n PlayCircle,\r\n List,\r\n Share2,\r\n Timer,\r\n Tag,\r\n Quote,\r\n Variable,\r\n Table,\r\n} from \"lucide-react\";\r\n\r\nimport { Container } from \"./components/Container\";\r\nimport { EmailHeader } from \"./components/EmailHeader\";\r\nimport { EmailFooter } from \"./components/EmailFooter\";\r\nimport { EmailButton } from \"./components/EmailButton\";\r\nimport { TextBlock } from \"./components/TextBlock\";\r\nimport { ImageBlock } from \"./components/ImageBlock\";\r\nimport { Divider } from \"./components/Divider\";\r\nimport { InvoiceTable } from \"./components/InvoiceTable\";\r\nimport { Spacer } from \"./components/Spacer\";\r\nimport { SocialLinks } from \"./components/SocialLinks\";\r\n// import { TwoColumn } from './components/TwoColumn';\r\nimport { Countdown } from \"./components/Countdown\";\r\nimport { PromoCode } from \"./components/PromoCode\";\r\nimport { Testimonial } from \"./components/Testimonial\";\r\nimport { VideoPlaceholder } from \"./components/VideoPlaceholder\";\r\nimport { VariableText } from \"./components/VariableText\";\r\nimport { IconList } from \"./components/IconList\";\r\n\r\nimport type { ComponentRegistry } from \"./types\";\r\n\r\nexport const DEFAULT_COMPONENTS: ComponentRegistry = {\r\n EmailHeader: {\r\n component: EmailHeader,\r\n label: \"Header\",\r\n description: \"Email header with logo\",\r\n icon: PanelTop,\r\n category: \"Layout\",\r\n },\r\n EmailFooter: {\r\n component: EmailFooter,\r\n label: \"Footer\",\r\n description: \"Contact info & copyright\",\r\n icon: PanelBottom,\r\n category: \"Layout\",\r\n },\r\n Container: {\r\n component: Container,\r\n label: \"Container\",\r\n description: \"Group elements together\",\r\n icon: LayoutTemplate,\r\n category: \"Layout\",\r\n createElement: () => <Element is={Container} canvas />,\r\n },\r\n\r\n Spacer: {\r\n component: Spacer,\r\n label: \"Spacer\",\r\n description: \"Add vertical space\",\r\n icon: ArrowUpDown,\r\n category: \"Layout\",\r\n },\r\n Divider: {\r\n component: Divider,\r\n label: \"Divider\",\r\n description: \"Horizontal line separator\",\r\n icon: Minus,\r\n category: \"Layout\",\r\n },\r\n TextBlock: {\r\n component: TextBlock,\r\n label: \"Text Block\",\r\n description: \"Paragraph or heading\",\r\n icon: Type,\r\n category: \"Content\",\r\n },\r\n ImageBlock: {\r\n component: ImageBlock,\r\n label: \"Image\",\r\n description: \"Add photos or graphics\",\r\n icon: Image,\r\n category: \"Content\",\r\n },\r\n EmailButton: {\r\n component: EmailButton,\r\n label: \"Button\",\r\n description: \"Call-to-action button\",\r\n icon: MousePointer2,\r\n category: \"Content\",\r\n },\r\n VideoPlaceholder: {\r\n component: VideoPlaceholder,\r\n label: \"Video\",\r\n description: \"Video thumbnail with play\",\r\n icon: PlayCircle,\r\n category: \"Content\",\r\n },\r\n IconList: {\r\n component: IconList,\r\n label: \"Icon List\",\r\n description: \"List with icons\",\r\n icon: List,\r\n category: \"Content\",\r\n },\r\n SocialLinks: {\r\n component: SocialLinks,\r\n label: \"Social Links\",\r\n description: \"Social media icons\",\r\n icon: Share2,\r\n category: \"Content\",\r\n },\r\n Countdown: {\r\n component: Countdown,\r\n label: \"Countdown\",\r\n description: \"Urgency timer display\",\r\n icon: Timer,\r\n category: \"Marketing\",\r\n },\r\n PromoCode: {\r\n component: PromoCode,\r\n label: \"Promo Code\",\r\n description: \"Discount code box\",\r\n icon: Tag,\r\n category: \"Marketing\",\r\n },\r\n Testimonial: {\r\n component: Testimonial,\r\n label: \"Testimonial\",\r\n description: \"Customer review quote\",\r\n icon: Quote,\r\n category: \"Marketing\",\r\n },\r\n VariableText: {\r\n component: VariableText,\r\n label: \"Variable Text\",\r\n description: \"Personalized content\",\r\n icon: Variable,\r\n category: \"Dynamic\",\r\n },\r\n InvoiceTable: {\r\n component: InvoiceTable,\r\n label: \"Invoice Table\",\r\n description: \"Itemized billing table\",\r\n icon: Table,\r\n category: \"Invoice\",\r\n },\r\n};\r\n\r\n/** Helper to get the Craft.js resolver map from a ComponentRegistry */\r\nexport const buildResolver = (\r\n registry: ComponentRegistry,\r\n): Record<string, React.ComponentType<any>> => {\r\n const resolver: Record<string, React.ComponentType<any>> = {};\r\n for (const [name, config] of Object.entries(registry)) {\r\n resolver[name] = config.component;\r\n }\r\n return resolver;\r\n};\r\n\r\n/** Helper to get unique sorted categories from a ComponentRegistry */\r\nexport const getCategories = (registry: ComponentRegistry): string[] => {\r\n const cats = new Set<string>();\r\n for (const config of Object.values(registry)) {\r\n if (config.category) cats.add(config.category);\r\n }\r\n return Array.from(cats);\r\n};\r\n","import { SerializedNodes } from '@craftjs/core';\nimport type { HtmlRenderer } from '../components/editor';\n\ninterface NodeData {\n type: { resolvedName: string };\n props: Record<string, unknown>;\n nodes: string[];\n linkedNodes?: Record<string, string>;\n}\n\nexport const generateEmailHtml = (\n nodes: SerializedNodes,\n customRenderers?: Record<string, HtmlRenderer>\n): string => {\n const renderNode = (nodeId: string): string => {\n const node = nodes[nodeId] as unknown as NodeData;\n if (!node) return '';\n\n const { type, props, nodes: childNodes, linkedNodes } = node;\n const typeName = type.resolvedName;\n\n let childrenHtml = '';\n if (childNodes && childNodes.length > 0) {\n childrenHtml = childNodes.map((childId: string) => renderNode(childId)).join('');\n }\n if (linkedNodes) {\n Object.values(linkedNodes).forEach((linkedId: string) => {\n childrenHtml += renderNode(linkedId);\n });\n }\n\n // Check custom renderers first\n if (customRenderers?.[typeName]) {\n const result = customRenderers[typeName](typeName, props, childrenHtml, linkedNodes);\n if (result !== null) return result;\n }\n\n switch (typeName) {\n case 'Paper':\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <title>Email Template</title>\n <!--[if mso]>\n <noscript>\n <xml>\n <o:OfficeDocumentSettings>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n </xml>\n </noscript>\n <![endif]-->\n</head>\n<body style=\"margin: 0; padding: 0; background-color: #f4f4f4; font-family: Arial, sans-serif;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color: #f4f4f4;\">\n <tr>\n <td align=\"center\" style=\"padding: 20px 0;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"background-color: ${props.background || '#ffffff'}; max-width: 600px;\">\n <tr>\n <td>\n${childrenHtml}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>`;\n\n case 'Container':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.background || '#ffffff'}; padding: ${props.padding || 20}px;\">\n${childrenHtml}\n </td>\n </tr>\n </table>`;\n\n case 'TwoColumn': {\n const leftWidth = (props.leftWidth as number) || 50;\n const rightWidth = 100 - leftWidth;\n const leftHtml = linkedNodes?.['left-column'] ? renderNode(linkedNodes['left-column']) : '';\n const rightHtml = linkedNodes?.['right-column'] ? renderNode(linkedNodes['right-column']) : '';\n \n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color: ${props.backgroundColor || '#ffffff'}; padding: ${props.padding || 10}px;\">\n <tr>\n <td width=\"${leftWidth}%\" valign=\"top\" style=\"padding-right: ${(props.gap as number) / 2 || 10}px;\">\n ${leftHtml}\n </td>\n <td width=\"${rightWidth}%\" valign=\"top\" style=\"padding-left: ${(props.gap as number) / 2 || 10}px;\">\n ${rightHtml}\n </td>\n </tr>\n </table>`;\n }\n\n case 'EmailHeader':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#1a1a2e'}; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.logoUrl ? `<img src=\"${props.logoUrl}\" alt=\"Logo\" style=\"max-height: 60px; margin-bottom: 12px;\">` : ''}\n <h1 style=\"color: ${props.textColor || '#ffffff'}; font-size: 24px; font-weight: bold; margin: 0; font-family: Arial, sans-serif;\">${props.companyName || 'Your Company'}</h1>\n </td>\n </tr>\n </table>`;\n\n case 'EmailFooter':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#f5f5f5'}; padding: ${props.padding || 24}px; text-align: center; font-family: Arial, sans-serif;\">\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 14px; margin: 0 0 8px 0; font-weight: bold;\">${props.companyName || 'Your Company'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 12px; margin: 0 0 4px 0;\">${props.address || '123 Business St, City, Country'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 12px; margin: 0 0 4px 0;\">Email: ${props.email || 'info@company.com'} | Phone: ${props.phone || '+1 234 567 890'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 11px; margin: 12px 0 0 0; opacity: 0.7;\">© ${new Date().getFullYear()} ${props.companyName || 'Your Company'}. All rights reserved.</p>\n </td>\n </tr>\n </table>`;\n\n case 'EmailButton':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: 10px 0;\">\n <a href=\"${props.href || '#'}\" style=\"display: inline-block; background-color: ${props.backgroundColor || '#0066cc'}; color: ${props.textColor || '#ffffff'}; padding: ${props.paddingY || 12}px ${props.paddingX || 24}px; border-radius: ${props.borderRadius || 6}px; text-decoration: none; font-size: ${props.fontSize || 16}px; font-weight: bold; font-family: Arial, sans-serif;\">${props.text || 'Click Here'}</a>\n </td>\n </tr>\n </table>`;\n\n case 'TextBlock':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 10}px;\">\n <p style=\"font-size: ${props.fontSize || 14}px; font-weight: ${props.fontWeight || 'normal'}; color: ${props.color || '#333333'}; text-align: ${props.align || 'left'}; line-height: ${props.lineHeight || 1.6}; margin: 0; font-family: Arial, sans-serif;\">${props.text || 'Enter your text here...'}</p>\n </td>\n </tr>\n </table>`;\n\n case 'VariableText':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 10}px;\">\n <p style=\"font-size: ${props.fontSize || 14}px; font-weight: ${props.fontWeight || 'normal'}; color: ${props.color || '#333333'}; text-align: ${props.align || 'left'}; line-height: ${props.lineHeight || 1.6}; margin: 0; font-family: Arial, sans-serif;\">${props.text || ''}</p>\n </td>\n </tr>\n </table>`;\n\n case 'ImageBlock':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 10}px;\">\n <img src=\"${props.src || 'https://via.placeholder.com/400x200'}\" alt=\"${props.alt || 'Image'}\" style=\"width: ${props.width || '100%'}; max-width: 100%; border-radius: ${props.borderRadius || 0}px; display: inline-block;\">\n </td>\n </tr>\n </table>`;\n\n case 'VideoPlaceholder':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 10}px;\">\n <a href=\"${props.videoUrl || '#'}\" style=\"display: inline-block; position: relative; text-decoration: none;\">\n <img src=\"${props.thumbnailUrl || 'https://via.placeholder.com/600x338'}\" alt=\"Video thumbnail\" style=\"width: ${props.width || '100%'}; max-width: 100%; border-radius: ${props.borderRadius || 8}px; display: block;\">\n <div style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 64px; height: 64px; background: rgba(0,0,0,0.6); border-radius: 50%; border: 3px solid ${props.playButtonColor || '#ffffff'};\">\n <div style=\"position: absolute; top: 50%; left: 50%; transform: translate(-40%, -50%); width: 0; height: 0; border-top: 12px solid transparent; border-bottom: 12px solid transparent; border-left: 20px solid ${props.playButtonColor || '#ffffff'};\"></div>\n </div>\n </a>\n </td>\n </tr>\n </table>`;\n\n case 'Divider':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.margin || 20}px 0; text-align: center;\">\n <hr style=\"border: none; border-top: ${props.thickness || 1}px solid ${props.color || '#e0e0e0'}; width: ${props.width || '100%'}; margin: 0 auto;\">\n </td>\n </tr>\n </table>`;\n\n case 'Spacer':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"height: ${props.height || 20}px; line-height: ${props.height || 20}px; font-size: 1px;\">&nbsp;</td>\n </tr>\n </table>`;\n\n case 'SocialLinks': {\n const links = (props.links as Array<{ platform: string; url: string }>) || [];\n const iconSize = (props.iconSize as number) || 32;\n const gap = (props.gap as number) || 16;\n \n const socialIcons: Record<string, string> = {\n facebook: 'https://cdn-icons-png.flaticon.com/128/733/733547.png',\n twitter: 'https://cdn-icons-png.flaticon.com/128/733/733579.png',\n instagram: 'https://cdn-icons-png.flaticon.com/128/2111/2111463.png',\n linkedin: 'https://cdn-icons-png.flaticon.com/128/3536/3536505.png',\n youtube: 'https://cdn-icons-png.flaticon.com/128/1384/1384060.png',\n tiktok: 'https://cdn-icons-png.flaticon.com/128/3046/3046121.png',\n };\n\n const iconsHtml = links.map((link) => `\n <a href=\"${link.url}\" style=\"display: inline-block; margin: 0 ${gap / 2}px;\">\n <img src=\"${socialIcons[link.platform] || ''}\" alt=\"${link.platform}\" style=\"width: ${iconSize}px; height: ${iconSize}px;\">\n </a>\n `).join('');\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 16}px; background-color: ${props.backgroundColor || 'transparent'};\">\n ${iconsHtml}\n </td>\n </tr>\n </table>`;\n }\n\n case 'Countdown': {\n const boxStyle = `background: ${props.boxBackground || 'rgba(0,0,0,0.2)'}; padding: 12px 16px; border-radius: 8px; text-align: center; display: inline-block; margin: 0 6px;`;\n const numberStyle = `font-size: 28px; font-weight: bold; color: ${props.numberColor || '#ffffff'}; font-family: Arial, sans-serif;`;\n const labelStyle = `font-size: 11px; color: ${props.labelColor || '#ffffff'}; text-transform: uppercase; letter-spacing: 1px;`;\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#ff6b6b'}; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.title ? `<h3 style=\"color: ${props.titleColor || '#ffffff'}; font-size: 18px; font-weight: bold; margin: 0 0 16px 0; font-family: Arial, sans-serif;\">${props.title}</h3>` : ''}\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n <tr>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.days || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Days</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.hours || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Hours</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.minutes || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Mins</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.seconds || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Secs</div>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n case 'PromoCode':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <div style=\"background-color: ${props.backgroundColor || '#fff8e1'}; border: 2px ${props.borderStyle || 'dashed'} ${props.borderColor || '#ffc107'}; border-radius: 8px; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.title ? `<div style=\"font-size: 18px; font-weight: bold; color: ${props.textColor || '#333333'}; margin-bottom: 12px; font-family: Arial, sans-serif;\">${props.title}</div>` : ''}\n <div style=\"display: inline-block; background-color: ${props.codeBackground || '#ffffff'}; border: 1px solid ${props.borderColor || '#ffc107'}; border-radius: 6px; padding: 12px 24px; margin-bottom: 12px;\">\n <span style=\"font-size: 24px; font-weight: bold; font-family: monospace; letter-spacing: 3px; color: ${props.codeColor || '#e65100'};\">${props.code || 'SAVE20'}</span>\n </div>\n ${props.description ? `<div style=\"font-size: 14px; color: ${props.textColor || '#333333'}; font-family: Arial, sans-serif; opacity: 0.8;\">${props.description}</div>` : ''}\n </div>\n </td>\n </tr>\n </table>`;\n\n case 'Testimonial':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <div style=\"background-color: ${props.backgroundColor || '#f8f9fa'}; padding: ${props.padding || 24}px; border-left: 4px solid ${props.accentColor || '#0066cc'};\">\n ${props.showQuoteIcon !== false ? `<div style=\"font-size: 48px; color: ${props.accentColor || '#0066cc'}; opacity: 0.3; line-height: 1; margin-bottom: -20px; font-family: Georgia, serif;\">\"</div>` : ''}\n <p style=\"font-size: 16px; font-style: italic; color: ${props.quoteColor || '#333333'}; line-height: 1.7; margin: 0 0 16px 0; font-family: Georgia, serif;\">${props.quote || ''}</p>\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n ${props.authorImage ? `<td style=\"vertical-align: middle; padding-right: 12px;\"><img src=\"${props.authorImage}\" alt=\"${props.authorName}\" style=\"width: 48px; height: 48px; border-radius: 50%;\"></td>` : ''}\n <td style=\"vertical-align: middle;\">\n <div style=\"font-size: 14px; font-weight: bold; color: ${props.quoteColor || '#333333'}; font-family: Arial, sans-serif;\">${props.authorName || ''}</div>\n ${props.authorTitle ? `<div style=\"font-size: 12px; color: ${props.authorColor || '#666666'}; font-family: Arial, sans-serif;\">${props.authorTitle}</div>` : ''}\n </td>\n </tr>\n </table>\n </div>\n </td>\n </tr>\n </table>`;\n\n case 'IconList': {\n const items = (props.items as Array<{ icon: string; text: string }>) || [];\n const icons: Record<string, string> = {\n check: '✓', star: '★', arrow: '→', bullet: '•', heart: '❤',\n fire: '🔥', rocket: '🚀', sparkle: '✨', gift: '🎁', clock: '⏰',\n };\n\n const listHtml = items.map((item) => `\n <tr>\n <td style=\"vertical-align: top; padding-right: 10px; color: ${props.iconColor || '#22c55e'}; font-size: ${props.iconSize || 18}px; line-height: 1.5;\">${icons[item.icon] || item.icon}</td>\n <td style=\"vertical-align: top; color: ${props.textColor || '#333333'}; font-size: ${props.fontSize || 14}px; line-height: 1.5; padding-bottom: ${props.gap || 12}px; font-family: Arial, sans-serif;\">${item.text}</td>\n </tr>\n `).join('');\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 16}px; background-color: ${props.backgroundColor || 'transparent'};\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\">\n ${listHtml}\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n case 'InvoiceTable': {\n const items = (props.items as Array<{ description: string; quantity: number; unitPrice: number }>) || [];\n const currency = (props.currency as string) || '$';\n const total = items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0);\n \n const headerStyle = `background-color: ${props.headerBg || '#1a1a2e'}; color: ${props.headerColor || '#ffffff'}; padding: 12px 16px; font-weight: bold; text-align: left; border-bottom: 1px solid ${props.borderColor || '#e0e0e0'};`;\n const cellStyle = `padding: 12px 16px; border-bottom: 1px solid ${props.borderColor || '#e0e0e0'}; font-family: Arial, sans-serif; font-size: 14px;`;\n \n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse: collapse; border: 1px solid ${props.borderColor || '#e0e0e0'};\">\n <tr>\n <th style=\"${headerStyle}\">Description</th>\n <th style=\"${headerStyle} text-align: center; width: 80px;\">Qty</th>\n <th style=\"${headerStyle} text-align: right; width: 100px;\">Unit Price</th>\n <th style=\"${headerStyle} text-align: right; width: 100px;\">Amount</th>\n </tr>\n ${items.map(item => `\n <tr>\n <td style=\"${cellStyle}\">${item.description}</td>\n <td style=\"${cellStyle} text-align: center;\">${item.quantity}</td>\n <td style=\"${cellStyle} text-align: right;\">${currency}${item.unitPrice.toFixed(2)}</td>\n <td style=\"${cellStyle} text-align: right;\">${currency}${(item.quantity * item.unitPrice).toFixed(2)}</td>\n </tr>`).join('')}\n ${props.showTotal !== false ? `\n <tr>\n <td colspan=\"3\" style=\"${cellStyle} text-align: right; font-weight: bold;\">Total:</td>\n <td style=\"${cellStyle} text-align: right; font-weight: bold; background-color: #f5f5f5;\">${currency}${total.toFixed(2)}</td>\n </tr>` : ''}\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n default:\n return childrenHtml;\n }\n };\n\n return renderNode('ROOT');\n};\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import React, { useState, useMemo, useCallback, useEffect } from \"react\";\r\nimport { Editor, Frame, Element, useEditor } from \"@craftjs/core\";\r\nimport { Toolbox } from \"./Toolbox\";\r\nimport { SettingsPanel } from \"./SettingsPanel\";\r\nimport { Paper } from \"./Paper\";\r\nimport { RenderNode } from \"./RenderNode\";\r\nimport { EditorProvider, useEditorConfig } from \"./context\";\r\nimport { DEFAULT_COMPONENTS, buildResolver } from \"./defaultComponents\";\r\nimport { generateEmailHtml } from \"../../lib/htmlExporter\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\r\nimport {\r\n Tabs,\r\n TabsContent,\r\n TabsList,\r\n TabsTrigger,\r\n} from \"../../components/ui/tabs\";\r\nimport {\r\n Code,\r\n Copy,\r\n Check,\r\n Undo2,\r\n Redo2,\r\n Eye,\r\n Palette,\r\n Settings,\r\n Download,\r\n LayoutTemplate,\r\n Layers,\r\n Paintbrush,\r\n Moon,\r\n Sun,\r\n} from \"lucide-react\";\r\n\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"../../components/ui/popover\";\r\nimport { Label } from \"../../components/ui/label\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nimport type {\r\n EmailEditorProps,\r\n ComponentRegistry,\r\n EmailTemplate,\r\n} from \"./types\";\r\n\r\nimport {\r\n Container,\r\n EmailHeader,\r\n EmailFooter,\r\n EmailButton,\r\n TextBlock,\r\n InvoiceTable,\r\n Spacer,\r\n} from \"./components\";\r\n\r\n// ─── Portable Modal (no Tailwind / shadcn dependency) ───────────────────────\r\n\r\ninterface ModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n children: React.ReactNode;\r\n maxWidth?: number;\r\n maxHeight?: string;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n children,\r\n maxWidth = 672,\r\n maxHeight = \"85vh\",\r\n}) => {\r\n const panelRef = React.useRef<HTMLDivElement>(null);\r\n const [closeHovered, setCloseHovered] = React.useState(false);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n document.addEventListener(\"keydown\", handler);\r\n return () => document.removeEventListener(\"keydown\", handler);\r\n }, [open, onClose]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n const prev = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.body.style.overflow = prev;\r\n };\r\n }\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (open && panelRef.current) panelRef.current.focus();\r\n }, [open]);\r\n\r\n if (!open) return null;\r\n\r\n return createPortal(\r\n <div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? \"modal-title\" : undefined}\r\n aria-describedby={description ? \"modal-desc\" : undefined}\r\n onMouseDown={(e) => {\r\n if (e.target === e.currentTarget) onClose();\r\n }}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex: 9999,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"rgba(0,0,0,0.5)\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n <div\r\n ref={panelRef}\r\n tabIndex={-1}\r\n style={{\r\n position: \"relative\",\r\n backgroundColor: \"#ffffff\",\r\n borderRadius: \"12px\",\r\n boxShadow: \"0 20px 60px rgba(0,0,0,0.2), 0 4px 16px rgba(0,0,0,0.12)\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n maxWidth: `${maxWidth}px`,\r\n maxHeight,\r\n overflowY: \"auto\",\r\n outline: \"none\",\r\n }}\r\n >\r\n {/* Close button */}\r\n <button\r\n onClick={onClose}\r\n aria-label=\"Close modal\"\r\n onMouseEnter={() => setCloseHovered(true)}\r\n onMouseLeave={() => setCloseHovered(false)}\r\n style={{\r\n position: \"absolute\",\r\n top: \"14px\",\r\n right: \"14px\",\r\n width: \"32px\",\r\n height: \"32px\",\r\n borderRadius: \"8px\",\r\n border: \"none\",\r\n background: closeHovered ? \"#f3f4f6\" : \"transparent\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: closeHovered ? \"#111827\" : \"#6b7280\",\r\n fontSize: \"18px\",\r\n lineHeight: 1,\r\n padding: 0,\r\n flexShrink: 0,\r\n transition: \"background 0.15s, color 0.15s\",\r\n }}\r\n >\r\n ✕\r\n </button>\r\n\r\n {/* Header */}\r\n {(title || description) && (\r\n <div style={{ padding: \"20px 24px 0 24px\", flexShrink: 0 }}>\r\n {title && (\r\n <h2\r\n id=\"modal-title\"\r\n style={{\r\n margin: 0,\r\n fontSize: \"18px\",\r\n fontWeight: 600,\r\n lineHeight: \"1.4\",\r\n color: \"#111827\",\r\n }}\r\n >\r\n {title}\r\n </h2>\r\n )}\r\n {description && (\r\n <p\r\n id=\"modal-desc\"\r\n style={{\r\n margin: \"6px 0 0 0\",\r\n fontSize: \"14px\",\r\n lineHeight: \"1.5\",\r\n color: \"#6b7280\",\r\n }}\r\n >\r\n {description}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Body */}\r\n <div\r\n style={{ padding: \"16px 24px 24px 24px\", overflowY: \"auto\", flex: 1 }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n};\r\n\r\n// ─── Portable Dropdown (no Tailwind / shadcn dependency) ────────────────────\r\n\r\ninterface DropdownItem {\r\n key: string;\r\n label: React.ReactNode;\r\n onClick: () => void;\r\n danger?: boolean;\r\n separator?: never;\r\n}\r\ninterface DropdownSeparator {\r\n separator: true;\r\n key: string;\r\n label?: never;\r\n onClick?: never;\r\n danger?: never;\r\n}\r\ntype DropdownEntry = DropdownItem | DropdownSeparator;\r\n\r\ninterface DropdownProps {\r\n trigger: React.ReactNode;\r\n label?: string;\r\n items: DropdownEntry[];\r\n align?: \"start\" | \"end\";\r\n}\r\n\r\nconst Dropdown: React.FC<DropdownProps> = ({\r\n trigger,\r\n label,\r\n items,\r\n align = \"start\",\r\n}) => {\r\n const [open, setOpen] = useState(false);\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: MouseEvent) => {\r\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\r\n };\r\n document.addEventListener(\"mousedown\", handler);\r\n return () => document.removeEventListener(\"mousedown\", handler);\r\n }, [open]);\r\n\r\n // Close on Escape\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") setOpen(false);\r\n };\r\n document.addEventListener(\"keydown\", handler);\r\n return () => document.removeEventListener(\"keydown\", handler);\r\n }, [open]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n style={{ position: \"relative\", display: \"inline-block\" }}\r\n >\r\n {/* Trigger */}\r\n <div onClick={() => setOpen((v) => !v)}>{trigger}</div>\r\n\r\n {/* Menu panel */}\r\n {open && (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: \"calc(100% + 6px)\",\r\n ...(align === \"end\" ? { right: 0 } : { left: 0 }),\r\n zIndex: 9998,\r\n minWidth: \"224px\",\r\n backgroundColor: \"#ffffff\",\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"8px\",\r\n boxShadow:\r\n \"0 8px 24px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.08)\",\r\n padding: \"4px\",\r\n outline: \"none\",\r\n }}\r\n >\r\n {/* Section label */}\r\n {label && (\r\n <div\r\n style={{\r\n padding: \"6px 8px 4px 8px\",\r\n fontSize: \"11px\",\r\n fontWeight: 600,\r\n color: \"#9ca3af\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n }}\r\n >\r\n {label}\r\n </div>\r\n )}\r\n\r\n {items.map((entry) => {\r\n if (\"separator\" in entry && entry.separator) {\r\n return (\r\n <div\r\n key={entry.key}\r\n style={{\r\n height: \"1px\",\r\n backgroundColor: \"#f3f4f6\",\r\n margin: \"4px 0\",\r\n }}\r\n />\r\n );\r\n }\r\n const item = entry as DropdownItem;\r\n return (\r\n <DropdownItemRow\r\n key={item.key}\r\n item={item}\r\n onSelect={() => {\r\n item.onClick();\r\n setOpen(false);\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst DropdownItemRow: React.FC<{\r\n item: DropdownItem;\r\n onSelect: () => void;\r\n}> = ({ item, onSelect }) => {\r\n const [hovered, setHovered] = useState(false);\r\n return (\r\n <button\r\n onClick={onSelect}\r\n onMouseEnter={() => setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\",\r\n width: \"100%\",\r\n padding: \"7px 8px\",\r\n fontSize: \"13px\",\r\n fontWeight: 400,\r\n borderRadius: \"6px\",\r\n border: \"none\",\r\n background: hovered ? \"#f9fafb\" : \"transparent\",\r\n cursor: \"pointer\",\r\n color: item.danger ? \"#ef4444\" : \"#111827\",\r\n textAlign: \"left\",\r\n transition: \"background 0.1s\",\r\n }}\r\n >\r\n {item.label}\r\n </button>\r\n );\r\n};\r\n\r\n// ─── Inline styles shared inside TopBar ─────────────────────────────────────\r\n\r\nconst modalActionButtonStyle: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n padding: \"6px 12px\",\r\n fontSize: \"13px\",\r\n fontWeight: 500,\r\n borderRadius: \"6px\",\r\n border: \"1px solid #d1d5db\",\r\n background: \"#ffffff\",\r\n cursor: \"pointer\",\r\n color: \"#374151\",\r\n transition: \"background 0.15s\",\r\n};\r\n\r\nconst codeScrollStyle: React.CSSProperties = {\r\n height: \"400px\",\r\n overflowY: \"auto\",\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"6px\",\r\n};\r\n\r\nconst preStyle: React.CSSProperties = {\r\n padding: \"16px\",\r\n fontSize: \"12px\",\r\n fontFamily:\r\n \"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\",\r\n whiteSpace: \"pre-wrap\",\r\n margin: 0,\r\n color: \"#111827\",\r\n};\r\n\r\n// ─── Color Customizer ───────────────────────────────────────────────────────\r\n\r\nconst COLOR_PRESETS = [\r\n { name: \"Blue\", hsl: \"222.2 47.4% 11.2%\" },\r\n { name: \"Indigo\", hsl: \"243 75% 59%\" },\r\n { name: \"Emerald\", hsl: \"160 84% 39%\" },\r\n { name: \"Rose\", hsl: \"346 77% 50%\" },\r\n { name: \"Amber\", hsl: \"32 95% 44%\" },\r\n { name: \"Violet\", hsl: \"263 70% 50%\" },\r\n { name: \"Cyan\", hsl: \"192 91% 36%\" },\r\n { name: \"Slate\", hsl: \"215 20% 35%\" },\r\n];\r\n\r\ninterface ColorCustomizerProps {\r\n value?: string;\r\n onColorChange: (primaryHsl: string) => void;\r\n}\r\n\r\nconst ColorCustomizer = ({ value, onColorChange }: ColorCustomizerProps) => {\r\n const [customColor, setCustomColor] = useState(\"#1e293b\");\r\n\r\n const applyColor = (hsl: string) => {\r\n onColorChange(hsl);\r\n };\r\n\r\n const hexToHsl = (hex: string): string => {\r\n const r = parseInt(hex.slice(1, 3), 16) / 255;\r\n const g = parseInt(hex.slice(3, 5), 16) / 255;\r\n const b = parseInt(hex.slice(5, 7), 16) / 255;\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n const l = (max + min) / 2;\r\n\r\n if (max !== min) {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\r\n break;\r\n case g:\r\n h = ((b - r) / d + 2) / 6;\r\n break;\r\n case b:\r\n h = ((r - g) / d + 4) / 6;\r\n break;\r\n }\r\n }\r\n\r\n return `${Math.round(h * 360)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;\r\n };\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\" className=\"gap-2 h-8 text-xs\">\r\n <Paintbrush className=\"h-3.5 w-3.5\" />\r\n Primary\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-64\" align=\"end\">\r\n <div className=\"space-y-3\">\r\n <Label className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\r\n Primary Color\r\n </Label>\r\n <div className=\"grid grid-cols-4 gap-2\">\r\n {COLOR_PRESETS.map((preset) => (\r\n <button\r\n key={preset.name}\r\n type=\"button\"\r\n onClick={() => applyColor(preset.hsl)}\r\n className=\"group flex flex-col items-center gap-1\"\r\n title={preset.name}\r\n >\r\n <div\r\n className=\"w-8 h-8 rounded-full border-2 transition-all shadow-sm\"\r\n style={{\r\n backgroundColor: `hsl(${preset.hsl})`,\r\n borderColor:\r\n value === preset.hsl\r\n ? \"hsl(var(--foreground))\"\r\n : \"transparent\",\r\n }}\r\n />\r\n <span className=\"text-[10px] text-muted-foreground\">\r\n {preset.name}\r\n </span>\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"pt-2 border-t border-border\">\r\n <Label className=\"text-xs text-muted-foreground mb-1.5 block\">\r\n Custom Color\r\n </Label>\r\n <div className=\"flex gap-2 items-center\">\r\n <input\r\n type=\"color\"\r\n value={customColor}\r\n onChange={(e) => {\r\n setCustomColor(e.target.value);\r\n applyColor(hexToHsl(e.target.value));\r\n }}\r\n className=\"w-10 h-8 rounded border border-border cursor-pointer bg-background\"\r\n />\r\n <span className=\"text-xs text-muted-foreground font-mono\">\r\n {customColor}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n};\r\n\r\n// ─── TopBar (internal) ──────────────────────────────────────────────────────\r\n\r\ninterface TopBarProps {\r\n isDarkMode: boolean;\r\n onToggleDarkMode: () => void;\r\n primaryColor?: string;\r\n onPrimaryColorChange: (primaryHsl: string) => void;\r\n}\r\n\r\nconst TopBar = ({\r\n isDarkMode,\r\n onToggleDarkMode,\r\n primaryColor,\r\n onPrimaryColorChange,\r\n}: TopBarProps) => {\r\n const { actions, query, canUndo, canRedo } = useEditor((state, queryCtx) => ({\r\n canUndo: state.options.enabled && queryCtx.history.canUndo(),\r\n canRedo: state.options.enabled && queryCtx.history.canRedo(),\r\n }));\r\n\r\n const { title, logo, templates, callbacks, slots, htmlRenderers } =\r\n useEditorConfig();\r\n\r\n const [showCode, setShowCode] = useState(false);\r\n const [showPreview, setShowPreview] = useState(false);\r\n const [copied, setCopied] = useState(false);\r\n const [htmlCode, setHtmlCode] = useState(\"\");\r\n const [previewDevice, setPreviewDevice] = useState<\"desktop\" | \"mobile\">(\r\n \"desktop\",\r\n );\r\n\r\n const getHtml = useCallback(() => {\r\n const json = query.serialize();\r\n const nodes = JSON.parse(json);\r\n return generateEmailHtml(nodes, htmlRenderers);\r\n }, [query, htmlRenderers]);\r\n\r\n const handleExport = () => {\r\n const html = getHtml();\r\n setHtmlCode(html);\r\n setShowCode(true);\r\n callbacks.onExport?.(html);\r\n };\r\n\r\n const handlePreview = () => {\r\n const html = getHtml();\r\n setHtmlCode(html);\r\n setShowPreview(true);\r\n };\r\n\r\n const handleCopy = async () => {\r\n await navigator.clipboard.writeText(htmlCode);\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n };\r\n\r\n const handleDownload = () => {\r\n const blob = new Blob([htmlCode], { type: \"text/html\" });\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = \"email-template.html\";\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n };\r\n\r\n const handleClearCanvas = () => {\r\n actions.clearEvents();\r\n actions.deserialize(`{\r\n \"ROOT\": {\r\n \"type\": {\"resolvedName\": \"Paper\"},\r\n \"isCanvas\": true,\r\n \"props\": {\"background\": \"#ffffff\"},\r\n \"displayName\": \"Paper\",\r\n \"custom\": {},\r\n \"hidden\": false,\r\n \"nodes\": [],\r\n \"linkedNodes\": {}\r\n }\r\n }`);\r\n callbacks.onClear?.();\r\n };\r\n\r\n const handleLoadTemplate = (template: EmailTemplate) => {\r\n try {\r\n actions.deserialize(template.data);\r\n callbacks.onTemplateLoad?.(template.id);\r\n } catch (e) {\r\n console.error(\"Failed to load template:\", e);\r\n }\r\n };\r\n\r\n if (slots.toolbar) {\r\n return React.createElement(slots.toolbar, {\r\n onExport: getHtml,\r\n onPreview: getHtml,\r\n onClear: handleClearCanvas,\r\n title,\r\n logo,\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"flex items-center justify-between px-4 py-2.5 border-b border-border bg-background\">\r\n <div className=\"flex items-center gap-3\">\r\n <div className=\"flex items-center gap-2\">\r\n <h1 className=\"text-sm font-semibold text-foreground\">{title}</h1>\r\n </div>\r\n\r\n <div className=\"h-5 w-px bg-border\" />\r\n\r\n <Dropdown\r\n align=\"start\"\r\n label=\"Quick Start Templates\"\r\n trigger={\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"gap-1.5 h-8 text-xs\"\r\n >\r\n <LayoutTemplate className=\"h-3.5 w-3.5\" />\r\n Templates\r\n </Button>\r\n }\r\n items={[\r\n ...templates.map((template) => ({\r\n key: template.id,\r\n label: (\r\n <React.Fragment>\r\n {template.icon &&\r\n React.createElement(template.icon, {\r\n style: {\r\n width: 14,\r\n height: 14,\r\n color: \"#9ca3af\",\r\n flexShrink: 0,\r\n },\r\n })}\r\n <div>\r\n <div style={{ fontWeight: 500, fontSize: \"13px\" }}>\r\n {template.name}\r\n </div>\r\n {template.description && (\r\n <div\r\n style={{\r\n fontSize: \"11px\",\r\n color: \"#9ca3af\",\r\n marginTop: 1,\r\n }}\r\n >\r\n {template.description}\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n ),\r\n onClick: () => handleLoadTemplate(template),\r\n })),\r\n ...(templates.length > 0\r\n ? [{ key: \"sep-clear\", separator: true as const }]\r\n : []),\r\n {\r\n key: \"clear\",\r\n label: \"Clear Canvas\",\r\n onClick: handleClearCanvas,\r\n danger: true,\r\n },\r\n ]}\r\n />\r\n </div>\r\n\r\n <div className=\"flex items-center gap-1.5\">\r\n <div className=\"flex items-center gap-0.5 bg-muted rounded-md p-0.5\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n disabled={!canUndo}\r\n onClick={() => actions.history.undo()}\r\n className=\"h-7 w-7 p-0\"\r\n title=\"Undo\"\r\n >\r\n <Undo2 className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n disabled={!canRedo}\r\n onClick={() => actions.history.redo()}\r\n className=\"h-7 w-7 p-0\"\r\n title=\"Redo\"\r\n >\r\n <Redo2 className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n </div>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={handlePreview}\r\n className=\"gap-1.5 h-8 text-xs\"\r\n >\r\n <Eye className=\"h-3.5 w-3.5\" /> Preview\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n onClick={handleExport}\r\n className=\"gap-1.5 h-8 text-xs\"\r\n >\r\n <Code className=\"h-3.5 w-3.5\" /> Export\r\n </Button>\r\n </div>\r\n </div>\r\n\r\n {/* Export HTML Modal */}\r\n <Modal\r\n open={showCode}\r\n onClose={() => setShowCode(false)}\r\n title=\"Export HTML\"\r\n description=\"Copy this HTML code to use in your email client or system.\"\r\n maxWidth={896}\r\n maxHeight=\"80vh\"\r\n >\r\n {slots.exportDialog ? (\r\n React.createElement(slots.exportDialog, {\r\n html: htmlCode,\r\n onClose: () => setShowCode(false),\r\n })\r\n ) : (\r\n <>\r\n <div style={{ display: \"flex\", gap: \"8px\", marginBottom: \"12px\" }}>\r\n <button\r\n onClick={handleCopy}\r\n style={modalActionButtonStyle}\r\n onMouseEnter={(e) =>\r\n (e.currentTarget.style.background = \"#f3f4f6\")\r\n }\r\n onMouseLeave={(e) =>\r\n (e.currentTarget.style.background = \"#ffffff\")\r\n }\r\n >\r\n {copied ? (\r\n <Check size={14} style={{ marginRight: 6 }} />\r\n ) : (\r\n <Copy size={14} style={{ marginRight: 6 }} />\r\n )}\r\n {copied ? \"Copied!\" : \"Copy\"}\r\n </button>\r\n <button\r\n onClick={handleDownload}\r\n style={modalActionButtonStyle}\r\n onMouseEnter={(e) =>\r\n (e.currentTarget.style.background = \"#f3f4f6\")\r\n }\r\n onMouseLeave={(e) =>\r\n (e.currentTarget.style.background = \"#ffffff\")\r\n }\r\n >\r\n <Download size={14} style={{ marginRight: 6 }} />\r\n Download\r\n </button>\r\n </div>\r\n <div style={codeScrollStyle}>\r\n <pre style={preStyle}>{htmlCode}</pre>\r\n </div>\r\n </>\r\n )}\r\n </Modal>\r\n\r\n {/* Email Preview Modal */}\r\n <Modal\r\n open={showPreview}\r\n onClose={() => setShowPreview(false)}\r\n title=\"Email Preview\"\r\n description=\"Preview how your email will look in email clients.\"\r\n maxWidth={1024}\r\n maxHeight=\"90vh\"\r\n >\r\n {slots.previewDialog ? (\r\n React.createElement(slots.previewDialog, {\r\n html: htmlCode,\r\n onClose: () => setShowPreview(false),\r\n })\r\n ) : (\r\n <div style={{ overflowY: \"auto\", maxHeight: \"600px\" }}>\r\n <div\r\n style={{\r\n margin: \"0 auto\",\r\n transition: \"max-width 0.3s\",\r\n maxWidth: previewDevice === \"mobile\" ? \"375px\" : \"100%\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"8px\",\r\n background: \"rgba(243,244,246,0.3)\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {previewDevice === \"mobile\" && (\r\n <div\r\n style={{\r\n height: \"24px\",\r\n background: \"#f3f4f6\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: \"64px\",\r\n height: \"4px\",\r\n background: \"rgba(107,114,128,0.3)\",\r\n borderRadius: \"9999px\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n <iframe\r\n srcDoc={htmlCode}\r\n title=\"Email Preview\"\r\n style={{\r\n width: \"100%\",\r\n minHeight: \"500px\",\r\n background: \"#ffffff\",\r\n border: \"none\",\r\n display: \"block\",\r\n height: previewDevice === \"mobile\" ? \"667px\" : \"600px\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\n// ─── Left Sidebar with Tabs ─────────────────────────────────────────────────\r\n//@ts-ignore\r\nconst LeftSidebar = ({ setActiveTab, activeTab }) => {\r\n const { components, slots } = useEditorConfig();\r\n const { selectedNodeId } = useEditor((state) => ({\r\n //@ts-ignore\r\n selectedNodeId: state.events.selected[0],\r\n }));\r\n\r\n useEffect(() => {\r\n if (selectedNodeId) {\r\n setActiveTab(\"properties\");\r\n }\r\n }, [selectedNodeId]);\r\n\r\n const categories = useMemo(() => {\r\n return Object.keys(components).reduce<string[]>((acc, k) => {\r\n const cat = components[k].category || \"Other\";\r\n if (!acc.includes(cat)) acc.push(cat);\r\n return acc;\r\n }, []);\r\n }, [components]);\r\n\r\n return (\r\n <div className=\"h-full flex flex-col bg-background border-r border-border\">\r\n <Tabs\r\n value={activeTab}\r\n onValueChange={(value) =>\r\n setActiveTab(value as \"components\" | \"properties\")\r\n }\r\n className=\"flex-1 flex flex-col\"\r\n >\r\n <div className=\"px-2 pt-2 border-b border-border\">\r\n <TabsList className=\"w-full h-9 bg-muted/50\">\r\n <TabsTrigger\r\n value=\"components\"\r\n className=\"flex-1 gap-1.5 text-xs data-[state=active]:bg-background\"\r\n >\r\n <Layers className=\"h-3.5 w-3.5\" />\r\n Components\r\n </TabsTrigger>\r\n <TabsTrigger\r\n value=\"properties\"\r\n className=\"flex-1 gap-1.5 text-xs data-[state=active]:bg-background\"\r\n >\r\n <Settings className=\"h-3.5 w-3.5\" />\r\n Properties\r\n </TabsTrigger>\r\n </TabsList>\r\n </div>\r\n\r\n <TabsContent value=\"components\" className=\"flex-1 mt-0 \">\r\n <ScrollArea className=\"h-full max-h-[180vh] \">\r\n {slots.toolbox ? (\r\n React.createElement(slots.toolbox, { components, categories })\r\n ) : (\r\n <Toolbox />\r\n )}\r\n </ScrollArea>\r\n </TabsContent>\r\n\r\n <TabsContent value=\"properties\" className=\"flex-1 mt-0 \">\r\n <div className=\"h-full\">\r\n <SettingsPanel />\r\n </div>\r\n </TabsContent>\r\n </Tabs>\r\n </div>\r\n );\r\n};\r\n\r\n// ─── Default content ────────────────────────────────────────────────────────\r\n\r\nconst defaultEmailContent = <Element is={Paper} canvas></Element>;\r\n\r\n// ─── Main EmailEditor Component ─────────────────────────────────────────────\r\n\r\nconst getReadablePrimaryForeground = (primaryHsl: string): string => {\r\n const lightness = Number.parseFloat(\r\n primaryHsl.trim().split(/\\s+/)[2]?.replace(\"%\", \"\") || \"50\",\r\n );\r\n return lightness > 60 ? \"222.2 47.4% 11.2%\" : \"210 40% 98%\";\r\n};\r\n\r\ntype CssVariablesStyle = React.CSSProperties & Record<`--${string}`, string>;\r\n\r\nexport const EmailEditor: React.FC<EmailEditorProps> = ({\r\n components: userComponents,\r\n replaceBuiltins = false,\r\n theme = {},\r\n slots = {},\r\n templates = [],\r\n callbacks = {},\r\n initialState,\r\n defaultContent,\r\n title = \"Email Editor\",\r\n logo,\r\n htmlRenderers = {},\r\n showToolbar = true,\r\n showToolbox = true,\r\n darkMode = true,\r\n className,\r\n style,\r\n}) => {\r\n const mergedComponents = useMemo<ComponentRegistry>(() => {\r\n if (replaceBuiltins) return userComponents || {};\r\n return { ...DEFAULT_COMPONENTS, ...(userComponents || {}) };\r\n }, [userComponents, replaceBuiltins]);\r\n\r\n const [activeTab, setActiveTab] = useState<\"components\" | \"properties\">(\r\n \"components\",\r\n );\r\n\r\n const resolver = useMemo(() => {\r\n const res = buildResolver(mergedComponents);\r\n res.Paper = Paper;\r\n return res;\r\n }, [mergedComponents]);\r\n\r\n const renderNodeFn = (slots.renderNode || RenderNode) as any;\r\n\r\n const [isDarkMode, setIsDarkMode] = useState(!darkMode);\r\n const [primaryColor, setPrimaryColor] = useState<string | undefined>(\r\n theme.colors?.primary,\r\n );\r\n\r\n useEffect(() => {\r\n setPrimaryColor(theme.colors?.primary);\r\n }, [theme.colors?.primary]);\r\n\r\n const primaryForeground = useMemo(() => {\r\n if (theme.colors?.primaryForeground) return theme.colors.primaryForeground;\r\n if (!primaryColor) return undefined;\r\n return getReadablePrimaryForeground(primaryColor);\r\n }, [primaryColor, theme.colors?.primaryForeground]);\r\n\r\n const themeColorVars = useMemo(() => {\r\n const colors = theme.colors || {};\r\n return {\r\n background: colors.background,\r\n foreground: colors.foreground,\r\n border: colors.border,\r\n muted: colors.muted,\r\n \"muted-foreground\": colors.mutedForeground,\r\n destructive: colors.destructive,\r\n \"panel-background\": colors.panelBackground,\r\n \"canvas-background\": colors.canvasBackground,\r\n };\r\n }, [theme.colors]);\r\n\r\n const editorStyle = useMemo(() => {\r\n const cssVars: CssVariablesStyle = { ...(style || {}) };\r\n\r\n Object.entries(themeColorVars).forEach(([token, value]) => {\r\n if (value) cssVars[`--${token}`] = value;\r\n });\r\n\r\n if (primaryColor) cssVars[\"--primary\"] = primaryColor;\r\n if (primaryForeground) cssVars[\"--primary-foreground\"] = primaryForeground;\r\n if (theme.borderRadius) cssVars[\"--radius\"] = `${theme.borderRadius}px`;\r\n if (theme.fontFamily) cssVars.fontFamily = theme.fontFamily;\r\n\r\n return cssVars;\r\n }, [\r\n style,\r\n themeColorVars,\r\n primaryColor,\r\n primaryForeground,\r\n theme.borderRadius,\r\n theme.fontFamily,\r\n ]);\r\n\r\n return (\r\n <EditorProvider\r\n value={{\r\n components: mergedComponents,\r\n theme,\r\n slots,\r\n templates,\r\n callbacks,\r\n htmlRenderers,\r\n title,\r\n logo,\r\n showToolbar,\r\n showToolbox,\r\n showSettingsPanel: false,\r\n }}\r\n >\r\n <div\r\n className={`h-screen flex flex-col ${isDarkMode ? \"dark\" : \"\"} bg-background text-foreground ${className || \"\"}`}\r\n style={editorStyle}\r\n >\r\n <Editor resolver={resolver} onRender={renderNodeFn}>\r\n {showToolbar && (\r\n <TopBar\r\n isDarkMode={isDarkMode}\r\n onToggleDarkMode={() => setIsDarkMode((prev) => !prev)}\r\n primaryColor={primaryColor}\r\n onPrimaryColorChange={(primaryHsl) => {\r\n setPrimaryColor(primaryHsl);\r\n callbacks.onColorChange?.(primaryHsl);\r\n }}\r\n />\r\n )}\r\n <div className=\"flex-1 flex\">\r\n {showToolbox && (\r\n <div className=\"w-auto max-w-96 flex-shrink-0\">\r\n <LeftSidebar\r\n setActiveTab={setActiveTab}\r\n activeTab={activeTab}\r\n />\r\n </div>\r\n )}\r\n\r\n <div\r\n className=\"flex-1 overflow-auto craftjs-renderer\"\r\n style={{\r\n backgroundColor:\r\n theme.colors?.canvasBackground || \"hsl(var(--muted))\",\r\n }}\r\n >\r\n <div\r\n className=\"p-8\"\r\n onClick={() => {\r\n setActiveTab(\"properties\");\r\n }}\r\n >\r\n <Frame data={initialState}>{defaultEmailContent}</Frame>\r\n </div>\r\n </div>\r\n </div>\r\n </Editor>\r\n </div>\r\n </EditorProvider>\r\n );\r\n};\r\n"]}
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/accordion.tsx","../src/components/editor/context.tsx","../src/components/editor/Toolbox.tsx","../src/components/ui/button.tsx","../src/components/ui/scroll-area.tsx","../src/components/editor/SettingsPanel.tsx","../src/components/editor/Paper.tsx","../src/components/editor/RenderNode.tsx","../src/components/editor/components/Container.tsx","../src/components/editor/components/EmailHeader.tsx","../src/components/editor/components/EmailFooter.tsx","../src/components/editor/components/EmailButton.tsx","../src/components/editor/components/TextBlock.tsx","../src/components/editor/components/ImageBlock.tsx","../src/components/editor/components/Divider.tsx","../src/components/editor/components/InvoiceTable.tsx","../src/components/editor/components/Spacer.tsx","../src/components/editor/components/SocialLinks.tsx","../src/components/editor/components/Countdown.tsx","../src/components/editor/components/PromoCode.tsx","../src/components/editor/components/Testimonial.tsx","../src/components/editor/components/VideoPlaceholder.tsx","../src/components/editor/components/VariableText.tsx","../src/components/editor/components/IconList.tsx","../src/components/editor/defaultComponents.tsx","../src/lib/htmlExporter.ts","../src/components/ui/tabs.tsx","../src/lib/htmlImporter.ts","../src/components/editor/EmailEditor.tsx"],"names":["twMerge","clsx","AccordionPrimitive","React","jsx","jsxs","ChevronDown","createContext","useContext","useMemo","useEditor","cva","React4","Slot","React5","ScrollAreaPrimitive","selected","node","Layers","ChevronUp","Copy","Trash2","Settings2","Paintbrush","useNode","query","useEffect","useCallback","dom","_a","Fragment","Move","ArrowUp","PanelTop","PanelBottom","LayoutTemplate","Element","ArrowUpDown","Minus","Type","Image","MousePointer2","PlayCircle","List","Share2","Timer","Tag","Quote","Variable","Table","socialIcons","TabsPrimitive","React8","createPortal","useState","Undo2","Redo2","Eye","Code","Check","Download","Settings","Editor","Frame"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACCA,IAAM,SAAA,GAA+BC,6BAAA,CAAA,IAAA;AAErC,IAAM,aAAA,GAAsBC,6BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,IAClC,GAAG;AAAA;AACN,CACD,CAAA;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAA,GAAyBC,iBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA,CAAoBF,6BAAA,CAAA,MAAA,EAAnB,EAA0B,WAAU,MAAA,EACnC,QAAA,kBAAAG,eAAA;AAAA,EAAoBH,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,8HAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDE,cAAA,CAACE,uBAAA,EAAA,EAAY,SAAA,EAAU,oDAAA,EAAqD;AAAA;AAAA;AAC9E,CAAA,EACF,CACD,CAAA;AACD,gBAAA,CAAiB,cAAiCJ,6BAAA,CAAA,OAAA,CAAQ,WAAA;AAE1D,IAAM,gBAAA,GAAyBC,6BAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,0HAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD,CAAA;AAED,gBAAA,CAAiB,cAAiCA,6BAAA,CAAA,OAAA,CAAQ,WAAA;AC7B1D,IAAM,YAAA,GAA4B;AAAA,EAChC,UAAA,EAAY,GAAA;AAAA,EACZ,cAAA,EAAgB,GAAA;AAAA,EAChB,eAAA,EAAiB;AACnB,CAAA;AAEA,IAAM,gBAAgBK,oBAAA,CAAkC;AAAA,EACtD,YAAY,EAAC;AAAA,EACb,KAAA,EAAO,YAAA;AAAA,EACP,OAAO,EAAC;AAAA,EACR,WAAW,EAAC;AAAA,EACZ,WAAW,EAAC;AAAA,EACZ,eAAe,EAAC;AAAA,EAChB,KAAA,EAAO,EAAA;AAAA,EACP,WAAA,EAAa,IAAA;AAAA,EACb,WAAA,EAAa,IAAA;AAAA,EACb,iBAAA,EAAmB;AACrB,CAAC,CAAA;AAEM,IAAM,eAAA,GAAkB,MAAMC,iBAAA,CAAW,aAAa;AAOtD,IAAM,iBAAgD,CAAC;AAAA,EAC5D,QAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,WAAA,GAAcC,cAAA;AAAA,IAClB,OAAO,EAAE,GAAG,YAAA,EAAc,GAAG,MAAM,KAAA,EAAM,CAAA;AAAA,IACzC,CAAC,MAAM,KAAK;AAAA,GACd;AAEA,EAAA,MAAM,GAAA,GAAMA,cAAA;AAAA,IACV,OAAO,EAAE,GAAG,KAAA,EAAO,OAAO,WAAA,EAAY,CAAA;AAAA,IACtC,CAAC,OAAO,WAAW;AAAA,GACrB;AAEA,EAAA,uBACEL,cAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,KAAM,QAAA,EAAS,CAAA;AAElD;ACnDA,IAAM,WAAA,GAAc,CAAC,EAAE,IAAA,EAAM,QAAO,KAAwB;AAC1D,EAAA,MAAM,EAAE,UAAA,EAAW,GAAIM,cAAA,EAAU;AACjC,EAAA,MAAM,YAAY,MAAA,CAAO,SAAA;AACzB,EAAA,MAAM,OAAA,GAAU,OAAO,aAAA,GAAgB,MAAA,CAAO,eAAc,mBAAIN,eAAC,SAAA,EAAA,EAAU,CAAA;AAC3E,EAAA,MAAM,WAAW,MAAA,CAAO,IAAA;AAExB,EAAA,uBACEC,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAO,UAAA,CAAW,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,MACnD,SAAA,EAAU,0HAAA;AAAA,MACV,OAAO,MAAA,CAAO,WAAA;AAAA,MAEd,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uKAAA,EACZ,QAAA,EAAA,QAAA,oBAAYA,cAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,SAAA,EAAU,CAAA,EAC7C,CAAA;AAAA,wBACAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAA,EACb,iBAAO,KAAA,EACV,CAAA;AAAA,UACC,MAAA,CAAO,+BACNA,cAAAA,CAAC,UAAK,SAAA,EAAU,8CAAA,EACb,iBAAO,WAAA,EACV;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ,CAAA;AAEO,IAAM,UAAU,MAAM;AAC3B,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,eAAA,EAAgB;AAGvC,EAAA,MAAM,OAAA,GAAUD,yBAAAA,CAAM,OAAA,CAAQ,MAAM;AAClC,IAAA,MAAM,MAA8D,EAAC;AACrE,IAAA,KAAA,MAAW,CAAC,IAAA,EAAM,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,EAAG;AACvD,MAAA,MAAM,GAAA,GAAM,OAAO,QAAA,IAAY,OAAA;AAC/B,MAAA,IAAI,CAAC,GAAA,CAAI,GAAG,GAAG,GAAA,CAAI,GAAG,IAAI,EAAC;AAC3B,MAAA,GAAA,CAAI,GAAG,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA,IAC9B;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AAExC,EAAA,uBACEC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACb,0BAAAA,cAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,UAAA,EAAW,cAAc,YAAA,EACtC,QAAA,EAAA,YAAA,CAAa,IAAI,CAAC,QAAA,EAAU,wBAC3BC,eAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MAEC,KAAA,EAAO,QAAA;AAAA,MACP,SAAA,EACE,GAAA,GAAM,YAAA,CAAa,MAAA,GAAS,IAAI,UAAA,GAAa,YAAA;AAAA,MAG/C,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,8FAAA,EACzB,QAAA,EAAA,QAAA,EACH,CAAA;AAAA,wBACAC,eAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,MAAA,EAC1B,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,WAAA,EACZ,kBAAQ,QAAQ,CAAA,CAAE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAA,qBACnCA,cAAAA,CAAC,WAAA,EAAA,EAAuB,MAAY,MAAA,EAAA,EAAlB,IAAkC,CACrD,CAAA,EACH,CAAA;AAAA,UACC,QAAA,KAAa,SAAA,oBACZA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,kBAAAC,eAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA;AAAA,YAAA,oBAAA;AAAA,YACxB,GAAA;AAAA,4BACnBD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CACb,QAAA,EAAA,gBAAA,EACH,CAAA;AAAA,YAAQ,GAAA;AAAA,YAAI;AAAA,WAAA,EAEd,CAAA,EACF;AAAA,SAAA,EAEJ;AAAA;AAAA,KAAA;AAAA,IA1BK;AAAA,GA4BR,GACH,CAAA,EACF,CAAA;AAEJ;AC7FA,IAAM,cAAA,GAAiBO,0BAAA;AAAA,EACrB,0VAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,wDAAA;AAAA,QACT,WAAA,EACE,oEAAA;AAAA,QACF,OAAA,EACE,gFAAA;AAAA,QACF,SAAA,EACE,8DAAA;AAAA,QACF,KAAA,EAAO,8CAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,gBAAA;AAAA,QACT,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AASA,IAAM,MAAA,GAAeC,iBAAA,CAAA,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,IAAA,EAAM,UAAU,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAChE,IAAA,MAAM,IAAA,GAAO,UAAUC,cAAA,GAAO,QAAA;AAC9B,IAAA,uBACET,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,QAC1D,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AChDrB,IAAM,UAAA,GAAmBU,iBAAA,CAAA,UAAA,CAGvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCT,eAAAA;AAAA,EAAqBU,8BAAA,CAAA,IAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,0BAAA,EAA4B,SAAS,CAAA;AAAA,IAClD,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAAX,cAAAA,CAAqBW,8BAAA,CAAA,QAAA,EAApB,EAA6B,SAAA,EAAU,mCACrC,QAAA,EACH,CAAA;AAAA,sBACAX,eAAC,SAAA,EAAA,EAAU,CAAA;AAAA,sBACXA,cAAAA,CAAqBW,8BAAA,CAAA,MAAA,EAApB,EAA2B;AAAA;AAAA;AAC9B,CACD,CAAA;AACD,UAAA,CAAW,cAAkCA,8BAAA,CAAA,IAAA,CAAK,WAAA;AAElD,IAAM,SAAA,GAAkBD,iBAAA,CAAA,UAAA,CAGtB,CAAC,EAAE,SAAA,EAAW,WAAA,GAAc,UAAA,EAAY,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpDV,cAAAA;AAAA,EAAqBW,8BAAA,CAAA,mBAAA;AAAA,EAApB;AAAA,IACC,GAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,+CAAA;AAAA,MACA,gBAAgB,UAAA,IACd,oDAAA;AAAA,MACF,gBAAgB,YAAA,IACd,sDAAA;AAAA,MACF;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAAX,cAAAA,CAAqBW,8BAAA,CAAA,eAAA,EAApB,EAAoC,WAAU,wCAAA,EAAyC;AAAA;AAC1F,CACD,CAAA;AACD,SAAA,CAAU,cAAkCA,8BAAA,CAAA,mBAAA,CAAoB,WAAA;ACtBzD,IAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,eAAA,EAAgB;AAElC,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,OAAM,GAAIL,cAAAA,CAAU,CAAC,KAAA,KAAU;AAxB5D,IAAA,IAAA,EAAA;AAyBI,IAAA,MAAM,CAAC,aAAa,CAAA,GAAI,KAAA,CAAM,MAAA,CAAO,QAAA;AACrC,IAAA,IAAIM,SAAAA;AAEJ,IAAA,IAAI,aAAA,EAAe;AACjB,MAAAA,SAAAA,GAAW;AAAA,QACT,EAAA,EAAI,aAAA;AAAA,QACJ,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,aAAa,EAAE,IAAA,CAAK,IAAA;AAAA,QACtC,WAAA,EACE,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,IAAA,CAAK,WAAA,IAChC,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,IAAA,CAAK,IAAA;AAAA,QAClC,WAAU,EAAA,GAAA,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,YAA3B,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoC,QAAA;AAAA,QAC9C,aAAa,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA,CAAE,KAAK,IAAA,KAAS,OAAA;AAAA,QACtD,MAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,aAAa,EAAE,IAAA,CAAK,MAAA;AAAA,QACxC,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,aAAa,EAAE,IAAA,CAAK;AAAA,OACzC;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,UAAAA,SAAAA,EAAS;AAAA,EACpB,CAAC,CAAA;AAED,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,WAAA,EAAa;AACxC,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,EAAE,EAAE,GAAA,EAAI;AACzC,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AACzB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI;AACF,QAAA,MAAM,iBAAiB,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,EAAE,EAAE,gBAAA,EAAiB;AAChE,QAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,MAAM,EAAE,GAAA,EAAI;AAC1C,QAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAA,IAAS,EAAC;AAC3C,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA;AACjD,QAAA,MAAM,UAAU,KAAA,CACb,mBAAA,CAAoB,cAAc,CAAA,CAClC,MAAA,CAAO,CAACC,KAAAA,KAAS;AAChB,UAAAA,KAAAA,CAAK,KAAK,CAAA,EAAGA,KAAAA,CAAK,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,GAAS,QAAA,CAAS,EAAE,EAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACpF,UAAA,OAAOA,KAAAA;AAAA,QACT,CAAC,CAAA;AACH,QAAA,OAAA,CAAQ,WAAA;AAAA,UACN,EAAE,UAAA,EAAY,OAAA,CAAQ,EAAA,EAAI,KAAA,EAAO,EAAE,CAAC,OAAA,CAAQ,EAAE,GAAG,OAAA,EAAQ,EAAE;AAAA,UAC3D,MAAA;AAAA,UACA,YAAA,GAAe;AAAA,SACjB;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,GAAA,CAAI,oBAAoB,CAAC,CAAA;AAAA,MACnC;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,MAAA,EAAQ;AACnC,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,MAAM,EAAE,GAAA,EAAI;AACnD,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAA,IAAS,EAAC;AAC3C,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA;AACjD,IAAA,IAAI,eAAe,CAAA,EAAG;AACpB,MAAA,OAAA,CAAQ,KAAK,QAAA,CAAS,EAAA,EAAI,QAAA,CAAS,MAAA,EAAQ,eAAe,CAAC,CAAA;AAAA,IAC7D;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,CAAS,MAAA,EAAQ;AACnC,IAAA,MAAM,aAAa,KAAA,CAAM,IAAA,CAAK,QAAA,CAAS,MAAM,EAAE,GAAA,EAAI;AACnD,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,IAAA,CAAK,KAAA,IAAS,EAAC;AAC3C,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,QAAA,CAAS,EAAE,CAAA;AACjD,IAAA,IAAI,YAAA,GAAe,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AACtC,MAAA,OAAA,CAAQ,KAAK,QAAA,CAAS,EAAA,EAAI,QAAA,CAAS,MAAA,EAAQ,eAAe,CAAC,CAAA;AAAA,IAC7D;AAAA,EACF,CAAA;AAGA,EAAA,IAAI,KAAA,CAAM,iBAAiB,QAAA,EAAU;AACnC,IAAA,OAAOd,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,aAAA,EAAe;AAAA,MAC9C,YAAY,QAAA,CAAS,EAAA;AAAA,MACrB,YAAA,EAAc,QAAA,CAAS,WAAA,IAAe,QAAA,CAAS,IAAA;AAAA;AAAA,MAE/C,kBAAkB,QAAA,CAAS,QAAA;AAAA,MAC3B,QAAA,EAAU,SAAS,WAAA,GACf,MAAM,QAAQ,MAAA,CAAO,QAAA,CAAS,EAAE,CAAA,GAChC,MAAA;AAAA,MACJ,WAAA,EAAa,eAAA;AAAA,MACb,QAAA,EAAU,YAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,IAAI,MAAM,kBAAA,EAAoB;AAC5B,MAAA,OAAOA,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,kBAAkB,CAAA;AAAA,IACrD;AAEA,IAAA,uBACEE,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,+EAAA,EACb,0BAAAA,cAAAA,CAACc,kBAAA,EAAA,EAAO,SAAA,EAAU,+BAAA,EAAgC,CAAA,EACpD,CAAA;AAAA,sBACAd,cAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oCAAmC,QAAA,EAAA,qBAAA,EAEjD,CAAA;AAAA,sBACAA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iCAAgC,QAAA,EAAA,2DAAA,EAE7C;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,wCAAA,EACb,0BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,wBACjDA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAU,yBACX,QAAA,EAAA,QAAA,CAAS,WAAA,IAAe,SAAS,IAAA,EACpC;AAAA,OAAA,EACF,CAAA,EACF,CAAA;AAAA,MAEC,SAAS,WAAA,oBACRC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,cAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,YAAA;AAAA,YACT,KAAA,EAAM,SAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACe,qBAAA,EAAA,EAAU,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAC5C;AAAA,wBACAd,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,cAAA;AAAA,YACT,KAAA,EAAM,WAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACE,uBAAAA,EAAA,EAAY,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAC9C;AAAA,wBACAD,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,oBAAA;AAAA,YACV,OAAA,EAAS,eAAA;AAAA,YACT,KAAA,EAAM,WAAA;AAAA,YAEN,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACgB,gBAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SACvC;AAAA,wBACAhB,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,aAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU,aAAA;AAAA,YACV,OAAA,EAAS,MAAM,OAAA,CAAQ,MAAA,CAAO,SAAS,EAAE,CAAA;AAAA,YACzC,KAAA,EAAM,QAAA;AAAA,YAEN,QAAA,kBAAAA,cAAAA,CAACiB,kBAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAClC,OAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEAjB,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,QAAA,EACpB,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACZ,QAAA,EAAA,QAAA,CAAS,QAAA,mBACRA,cAAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAK,UAAA,EAAW,YAAA,EAAc,CAAC,SAAS,CAAA,EACjD,QAAA,kBAAAC,eAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAM,SAAA,EAAU,SAAA,EAAU,UAAA,EACvC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,oBAAiB,SAAA,EAAU,iCAAA,EAC1B,0BAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAACkB,qBAAA,EAAA,EAAU,SAAA,EAAU,+BAAA,EAAgC,CAAA;AAAA,wBACrDlB,cAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,YAAA,EAAU;AAAA,OAAA,EAClB,CAAA,EACF,CAAA;AAAA,sBACAA,cAAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,MAAA,EACzB,UAAAD,yBAAAA,CAAM,aAAA,CAAc,QAAA,CAAS,QAAQ,CAAA,EACxC;AAAA,KAAA,EACF,GACF,CAAA,mBAEAE,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gDAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAACmB,sBAAA,EAAA,EAAW,SAAA,EAAU,iCAAA,EAAkC,CAAA;AAAA,sBACxDnB,cAAAA,CAAC,GAAA,EAAA,EAAE,QAAA,EAAA,wBAAA,EAAsB;AAAA,KAAA,EAC3B,GAEJ,CAAA,EACF,CAAA;AAAA,oBAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DACb,QAAA,kBAAAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,gBAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,QAAA,aAAA;AAAA,QAAY,QAAA,CAAS;AAAA,OAAA,EAAK,CAAA;AAAA,sBAChCD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACb,mBAAS,EAAA,CAAG,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EACzB;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AChNO,IAAM,KAAA,GAAQ,CAAC,EAAE,QAAA,EAAU,YAAW,KAAkB;AAC7D,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,OAAA,EAAQ,KAAMoB,YAAA,EAAQ;AAC5C,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,eAAA,EAAgB;AAElC,EAAA,MAAM,EAAA,GAAK,UAAA,IAAc,KAAA,CAAM,eAAA,IAAmB,SAAA;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,GAAI,CAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,UAAA,IAAc,GAAG,CAAA,EAAA,CAAA;AAAA,QACjC,SAAA,EAAW,CAAA,EAAG,KAAA,CAAM,cAAA,IAAkB,GAAG,CAAA,EAAA,CAAA;AAAA,QACzC,MAAA,EAAQ,QAAA;AAAA,QACR,eAAA,EAAiB,EAAA;AAAA,QACjB,SAAA,EAAW,gCAAA;AAAA,QACX,QAAA,EAAU;AAAA,OACZ;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEA,IAAM,gBAAgB,MAAM;AAC1B,EAAA,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,UAAA,EAAW,GAAIoB,YAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC9D,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC9B,CAAE,CAAA;AAEF,EAAA,uBACEpB,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,kBAAAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,oBAClEA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,OAAO,UAAA,IAAc,SAAA;AAAA,QACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAuB,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,QACnF,SAAA,EAAU;AAAA;AAAA;AACZ,GAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAA;AAEA,KAAA,CAAM,KAAA,GAAQ;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACvDO,IAAM,UAAA,GAAa,CAAC,EAAE,MAAA,EAAO,KAAmC;AACrE,EAAA,MAAM,EAAE,EAAA,EAAG,GAAIoB,YAAAA,EAAQ;AACvB,EAAA,MAAM,EAAE,SAAS,KAAA,EAAO,QAAA,KAAad,cAAAA,CAAU,CAAC,GAAGe,MAAAA,MAAW;AAAA,IAC5D,UAAUA,MAAAA,CAAM,QAAA,CAAS,UAAU,CAAA,CAAE,SAAS,EAAE;AAAA,GAClD,CAAE,CAAA;AAEF,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA,EAAY,EAAE,IAAA,EAAK;AAAA,IACnB;AAAA,GACF,GAAID,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,OAAA,EAAS,KAAK,MAAA,CAAO,OAAA;AAAA,IACrB,KAAK,IAAA,CAAK,GAAA;AAAA,IACV,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,WAAA,IAAe,KAAK,IAAA,CAAK,WAAA;AAAA,IAChD,UAAU,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,WAAA,EAAY;AAAA,IAC1C,WAAW,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,WAAA,EAAY;AAAA,IAC3C,MAAA,EAAQ,KAAK,IAAA,CAAK;AAAA,GACpB,CAAE,CAAA;AAEF,EAAAE,gBAAA,CAAU,MAAM;AACd,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,GAAA,CAAI,SAAA,CAAU,IAAI,oBAAoB,CAAA;AAAA,MACxC,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,SAAA,CAAU,OAAO,oBAAoB,CAAA;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,QAAA,EAAU,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,MAAA,GAASC,kBAAA,CAAY,CAACC,IAAAA,KAA4B;AACtD,IAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAM,MAAA,KAAWA,IAAAA,GAAMA,IAAAA,CAAI,qBAAA,EAAsB,GAAI,EAAE,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA,EAAE;AAC/F,IAAA,OAAO;AAAA,MACL,GAAA,EAAK,CAAA,EAAG,GAAA,GAAM,CAAA,GAAI,MAAM,MAAM,CAAA,EAAA,CAAA;AAAA,MAC9B,IAAA,EAAM,GAAG,IAAI,CAAA,EAAA;AAAA,KACf;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,MAAA,GAASD,mBAAY,MAAM;AAC/B,IAAA,MAAM,UAAA,GAAa,GAAA;AACnB,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,MAAM,EAAE,GAAA,EAAK,IAAA,EAAK,GAAI,OAAO,UAAU,CAAA;AAAA,EAEzC,CAAA,EAAG,CAAC,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhB,EAAAD,gBAAA,CAAU,MAAM;AApDlB,IAAA,IAAA,EAAA;AAqDI,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,aAAA,CAAc,mBAAmB,CAAA,KAA1C,IAAA,GAAA,MAAA,GAAA,EAAA,CAA6C,iBAAiB,QAAA,EAAU,MAAA,CAAA;AACxE,IAAA,OAAO,MAAM;AAtDjB,MAAA,IAAAG,GAAAA;AAuDM,MAAA,CAAAA,GAAAA,GAAA,SAAS,aAAA,CAAc,mBAAmB,MAA1C,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAA6C,oBAAoB,QAAA,EAAU,MAAA,CAAA;AAAA,IAC7E,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACExB,gBAAAyB,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,OAAA,IAAW,2BACVzB,eAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,kHAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,aAAA,EAAe;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA,oBACCD,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,CAAC,GAAA,KAAQ,GAAA,IAAO,KAAK,GAAG,CAAA;AAAA,cAC7B,SAAA,EAAU,aAAA;AAAA,cAEV,QAAA,kBAAAA,cAAAA,CAAC2B,gBAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC5B;AAAA,0BAEF3B,cAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UACX,0BACCA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA;AAAA,cACxC,SAAA,EAAU,mDAAA;AAAA,cAEV,QAAA,kBAAAA,cAAAA,CAAC4B,mBAAA,EAAA,EAAQ,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAC/B;AAAA;AAAA,KAEJ,GACE,IAAA;AAAA,IACH;AAAA,GAAA,EACH,CAAA;AAEJ;ACjFO,IAAM,SAAA,GAAY,CAAC,EAAE,UAAA,GAAa,WAAW,OAAA,GAAU,EAAA,EAAI,UAAS,KAAsB;AAC/F,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMR,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO;AAAA,OACT;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,YAAY,OAAA,EAAQ,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACvE,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,UAAA,IAAc,SAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACvF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACzDO,IAAM,cAAc,CAAC;AAAA,EAC1B,OAAA,GAAU,EAAA;AAAA,EACV,WAAA,GAAc,cAAA;AAAA,EACd,eAAA,GAAkB,SAAA;AAAA,EAClB,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU;AACZ,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,OAAA,oBACCD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,OAAA;AAAA,YACL,GAAA,EAAI,MAAA;AAAA,YACJ,KAAA,EAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,cAAc,MAAA;AAAO;AAAA,SACnD;AAAA,wBAEFA,cAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,SAAA;AAAA,cACP,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,MAAA,EAAQ,CAAA;AAAA,cACR,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,OAAA,EAAS,WAAA,EAAa,eAAA,EAAiB,SAAA,EAAW,OAAA,EAAQ,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC7G,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,OAAA,GAAU,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACtF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa,cAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACjHO,IAAM,cAAc,CAAC;AAAA,EAC1B,WAAA,GAAc,cAAA;AAAA,EACd,OAAA,GAAU,gCAAA;AAAA,EACV,KAAA,GAAQ,kBAAA;AAAA,EACR,KAAA,GAAQ,gBAAA;AAAA,EACR,eAAA,GAAkB,SAAA;AAAA,EAClB,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU;AACZ,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW,QAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACd;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,UAAA,EAAY,MAAA,IAC9E,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,wBACAA,cAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAY,EACjE,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,wBACAC,eAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAY,EAAG,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,UAC7D,KAAA;AAAA,UAAM,YAAA;AAAA,UAAW;AAAA,SAAA,EAC3B,CAAA;AAAA,wBACAA,eAAAA,CAAC,GAAA,EAAA,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,KAAI,EAAG,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UAAA,iBACjF,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UAAE,GAAA;AAAA,UAAE,WAAA;AAAA,UAAY;AAAA,SAAA,EAC5C;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,WAAA,EAAa,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,iBAAiB,SAAA,EAAW,OAAA,EAAQ,GAAImB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC3H,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,OAAA,GAAU,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACtF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,cAAA;AAAA,IACb,OAAA,EAAS,gCAAA;AAAA,IACT,KAAA,EAAO,kBAAA;AAAA,IACP,KAAA,EAAO,gBAAA;AAAA,IACP,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACnIO,IAAM,cAAc,CAAC;AAAA,EAC1B,IAAA,GAAO,YAAA;AAAA,EACP,IAAA,GAAO,GAAA;AAAA,EACP,eAAA,GAAkB,SAAA;AAAA,EAClB,SAAA,GAAY,SAAA;AAAA,EACZ,YAAA,GAAe,CAAA;AAAA,EACf,QAAA,GAAW,EAAA;AAAA,EACX,QAAA,GAAW,EAAA;AAAA,EACX,QAAA,GAAW,EAAA;AAAA,EACX,KAAA,GAAQ;AACV,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACX;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,eAAA;AAAA,YACA,KAAA,EAAO,SAAA;AAAA,YACP,OAAA,EAAS,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,QAAQ,CAAA,EAAA,CAAA;AAAA,YAClC,YAAA,EAAc,GAAG,YAAY,CAAA,EAAA,CAAA;AAAA,YAC7B,cAAA,EAAgB,MAAA;AAAA,YAChB,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,YACrB,UAAA,EAAY,MAAA;AAAA,YACZ,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,MAAM,IAAA,EAAM,eAAA,EAAiB,SAAA,EAAW,YAAA,EAAc,UAAU,QAAA,EAAU,QAAA,EAAU,OAAM,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC7I,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,YAAA;AAAA,IAC9B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACzB,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACnH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,YAAA,IAAgB,CAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACrG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QAAa;AAAA,OAAA,EAAE;AAAA,KAAA,EAClE,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACjG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,IAAA,EAAM,GAAA;AAAA,IACN,eAAA,EAAiB,SAAA;AAAA,IACjB,SAAA,EAAW,SAAA;AAAA,IACX,YAAA,EAAc,CAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACrJO,IAAM,YAAY,CAAC;AAAA,EACxB,IAAA,GAAO,yBAAA;AAAA,EACP,QAAA,GAAW,EAAA;AAAA,EACX,UAAA,GAAa,QAAA;AAAA,EACb,KAAA,GAAQ,SAAA;AAAA,EACR,KAAA,GAAQ,MAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,UAAA,GAAa;AACf,CAAA,KAAsB;AACpB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,YACrB,UAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW,KAAA;AAAA,YACX,UAAA;AAAA,YACA,MAAA,EAAQ,CAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,OAAO,OAAA,EAAS,UAAA,EAAW,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACjH,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC9B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACjF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC/F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,UAAA,IAAc,QAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAA2B,CAAA;AAAA,UAC5G,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA;AAC3B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,SAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAClF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACjH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,GAAA;AAAA,UACN,OAAO,UAAA,IAAc,GAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,UAAA,GAAa,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACnG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,UAAA,EAAW;AAAA,KAAA,EAC9D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,yBAAA;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC/IO,IAAM,aAAa,CAAC;AAAA,EACzB,GAAA,GAAM,qCAAA;AAAA,EACN,GAAA,GAAM,OAAA;AAAA,EACN,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA,GAAQ,QAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,YAAA,GAAe;AACjB,CAAA,KAAuB;AACrB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMoB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,GAAA;AAAA,UACA,KAAA,EAAO;AAAA,YACL,KAAA;AAAA,YACA,QAAA,EAAU,MAAA;AAAA,YACV,YAAA,EAAc,GAAG,YAAY,CAAA,EAAA,CAAA;AAAA,YAC7B,OAAA,EAAS;AAAA;AACX;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAM,qBAAqB,MAAM;AAC/B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,GAAA,EAAK,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,EAAa,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACjG,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAChC,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,GAAA,GAAM,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACjF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,sBAC1DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,GAAA,GAAM,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACjF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA4B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UAClH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA4B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC/F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,YAAA,IAAgB,CAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA4B,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACpG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QAAa;AAAA,OAAA,EAAE;AAAA,KAAA,EAClE;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,UAAA,CAAW,KAAA,GAAQ;AAAA,EACjB,KAAA,EAAO;AAAA,IACL,GAAA,EAAK,qCAAA;AAAA,IACL,GAAA,EAAK,OAAA;AAAA,IACL,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC/HO,IAAM,UAAU,CAAC;AAAA,EACtB,KAAA,GAAQ,SAAA;AAAA,EACR,SAAA,GAAY,CAAA;AAAA,EACZ,MAAA,GAAS,EAAA;AAAA,EACT,KAAA,GAAQ;AACV,CAAA,KAAoB;AAClB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,MAAM,CAAA,IAAA,CAAA;AAAA,QAClB,SAAA,EAAW;AAAA,OACb;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,MAAA,EAAQ,MAAA;AAAA,YACR,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA;AAAA,YACxC,KAAA;AAAA,YACA,MAAA,EAAQ;AAAA;AACV;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAM,kBAAkB,MAAM;AAC5B,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,KAAA,EAAM,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACnF,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,MAAA;AAAA,IACxB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACzB,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,SAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAyB,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAChF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,SAAA,IAAa,CAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAyB,KAAA,CAAM,SAAA,GAAY,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAAU;AAAA,OAAA,EAAE;AAAA,KAAA,EAC/D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,qBAAA,EAAmB,CAAA;AAAA,sBACrEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,MAAA,IAAU,EAAA;AAAA,UACjB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAyB,KAAA,CAAM,MAAA,GAAS,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC3F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,MAAA;AAAA,QAAO;AAAA,OAAA,EAAE;AAAA,KAAA,EAC5D,CAAA;AAAA,oBACAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAyB,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAChF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,OAAA,CAAQ,KAAA,GAAQ;AAAA,EACd,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,SAAA,EAAW,CAAA;AAAA,IACX,MAAA,EAAQ,EAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACvFO,IAAM,eAAe,CAAC;AAAA,EAC3B,KAAA,GAAQ;AAAA,IACN,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,IAC7D,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,EAAA;AAAG,GAC9D;AAAA,EACA,QAAA,GAAW,SAAA;AAAA,EACX,WAAA,GAAc,SAAA;AAAA,EACd,WAAA,GAAc,SAAA;AAAA,EACd,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA,GAAW;AACb,CAAA,KAAyB;AACvB,EAAA,MAAM;AAAA,IACJ,UAAA,EAAY,EAAE,OAAA,EAAS,IAAA;AAAK,MAC1BoB,YAAAA,EAAQ;AAEZ,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AAAA,IAClB,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,WAAW,IAAA,CAAK,SAAA;AAAA,IAC1C;AAAA,GACF;AAEA,EAAA,MAAM,SAAA,GAAiC;AAAA,IACrC,OAAA,EAAS,WAAA;AAAA,IACT,YAAA,EAAc,aAAa,WAAW,CAAA,CAAA;AAAA,IACtC,UAAA,EAAY,mBAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,MAAM,WAAA,GAAmC;AAAA,IACvC,GAAG,SAAA;AAAA,IACH,eAAA,EAAiB,QAAA;AAAA,IACjB,KAAA,EAAO,WAAA;AAAA,IACP,UAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAW;AAAA,GACb;AAEA,EAAA,uBACEpB,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,CAAC,QAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,GAAG,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,IACxD,QAAA,kBAAAC,eAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,MAAA;AAAA,QACP,cAAA,EAAgB,UAAA;AAAA,QAChB,MAAA,EAAQ,aAAa,WAAW,CAAA;AAAA,OAClC;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAC,eAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,WAAA,EAAa,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,0BACnCA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,MAAA,EAAO,EAAG,QAAA,EAAA,KAAA,EAEnE,CAAA;AAAA,0BACAA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,EAAG,QAAA,EAAA,YAAA,EAEnE,CAAA;AAAA,0BACAA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,KAAA,EAAO,OAAA,EAAQ,EAAG,QAAA,EAAA,QAAA,EAEnE;AAAA,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBACAA,cAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBAChBC,eAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,SAAA,EAAY,eAAK,WAAA,EAAY,CAAA;AAAA,0BACxCA,cAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,SAAA,EAAW,QAAA,EAAS,EAC5C,QAAA,EAAA,IAAA,CAAK,QAAA,EACR,CAAA;AAAA,0BACAC,gBAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,SAAA,EAAW,OAAA,EAAQ,EAC3C,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YACA,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,CAAC;AAAA,WAAA,EAC3B,CAAA;AAAA,0BACAA,gBAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,GAAG,SAAA,EAAW,SAAA,EAAW,OAAA,EAAQ,EAC3C,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YAAA,CACC,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAC;AAAA,WAAA,EAC7C;AAAA,SAAA,EAAA,EAZO,KAaT,CACD,CAAA,EACH,CAAA;AAAA,QACC,6BACCD,cAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAC,gBAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,cAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,CAAA;AAAA,cACT,OAAO,EAAE,GAAG,WAAW,SAAA,EAAW,OAAA,EAAS,YAAY,MAAA,EAAO;AAAA,cAC/D,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAC,eAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,GAAG,SAAA;AAAA,gBACH,SAAA,EAAW,OAAA;AAAA,gBACX,UAAA,EAAY,MAAA;AAAA,gBACZ,eAAA,EAAiB;AAAA,eACnB;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,QAAA;AAAA,gBACA,KAAA,CAAM,QAAQ,CAAC;AAAA;AAAA;AAAA;AAClB,SAAA,EACF,CAAA,EACF;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAEA,IAAM,uBAAuB,MAAM;AACjC,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF,GAAImB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC5B,CAAE,CAAA;AAEF,EAAA,MAAM,UAAA,GAAa,CACjB,KAAA,EACA,KAAA,EACA,KAAA,KACG;AACH,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,MAAM,WAAW,CAAC,GAAI,KAAA,CAAM,KAAA,IAAS,EAAG,CAAA;AACxC,MAAA,QAAA,CAAS,KAAK,CAAA,GAAI,EAAE,GAAG,QAAA,CAAS,KAAK,CAAA,EAAG,CAAC,KAAK,GAAG,KAAA,EAAM;AACvD,MAAA,KAAA,CAAM,KAAA,GAAQ,QAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,KAAA,CAAM,KAAA,GAAQ;AAAA,QACZ,GAAI,KAAA,CAAM,KAAA,IAAS,EAAC;AAAA,QACpB,EAAE,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,CAAA,EAAG,WAAW,CAAA;AAAE,OACvD;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,KAAA,CAAM,KAAA,GAAA,CAAS,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,OAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA;AAAA,IAChE,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,MAAA,CAC7D,KAAA,IAAS,EAAC,EAAG,GAAA,CAAI,CAAC,IAAA,EAAW,KAAA,qBAC7BC,eAAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAU,wCAAA,EACzB,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,OAAO,IAAA,CAAK,WAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,OAAO,aAAA,EAAe,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAChE,SAAA,EAAU,8CAAA;AAAA,YACV,WAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBACAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,cAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAO,IAAA,CAAK,QAAA;AAAA,cACZ,QAAA,EAAU,CAAC,CAAA,KACT,UAAA,CAAW,KAAA,EAAO,UAAA,EAAY,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK,CAAC,CAAA;AAAA,cAE7D,SAAA,EAAU,uCAAA;AAAA,cACV,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACAA,cAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAO,IAAA,CAAK,SAAA;AAAA,cACZ,QAAA,EAAU,CAAC,CAAA,KACT,UAAA;AAAA,gBACE,KAAA;AAAA,gBACA,WAAA;AAAA,gBACA,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK;AAAA,eAChC;AAAA,cAEF,SAAA,EAAU,yCAAA;AAAA,cACV,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACAA,cAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,cAC/B,SAAA,EAAU,sEAAA;AAAA,cACX,QAAA,EAAA;AAAA;AAAA;AAED,SAAA,EACF;AAAA,OAAA,EAAA,EArCQ,KAsCV,CACD,CAAA;AAAA,sBACDA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,OAAA;AAAA,UACT,SAAA,EAAU,+FAAA;AAAA,UACX,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,iBAAA,EAElD,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,QAAA,IAAY,GAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KAA8B,KAAA,CAAM,QAAA,GAAW,EAAE,MAAA,CAAO;AAAA,WAC3D;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,mBAAA,EAElD,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,QAAA,IAAY,SAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KAA8B,KAAA,CAAM,QAAA,GAAW,EAAE,MAAA,CAAO;AAAA,WAC3D;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,mBAAA,EAElD,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KACE,KAAA,CAAM,WAAA,GAAc,EAAE,MAAA,CAAO;AAAA,WAClC;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KACE,KAAA,CAAM,WAAA,GAAc,EAAE,MAAA,CAAO;AAAA,WAClC;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBACAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,SAAS,SAAA,IAAA,IAAA,GAAA,SAAA,GAAa,IAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KACT,OAAA;AAAA,YACE,CAAC,KAAA,KACE,KAAA,CAAM,SAAA,GAAY,EAAE,MAAA,CAAO;AAAA,WAChC;AAAA,UAEF,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,uBAAsB,QAAA,EAAA,gBAAA,EAAc;AAAA,KAAA,EACvD;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,YAAA,CAAa,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,MAC7D,EAAE,WAAA,EAAa,gBAAA,EAAkB,QAAA,EAAU,CAAA,EAAG,WAAW,EAAA;AAAG,KAC9D;AAAA,IACA,QAAA,EAAU,SAAA;AAAA,IACV,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACjTO,IAAM,MAAA,GAAS,CAAC,EAAE,MAAA,GAAS,IAAG,KAAmB;AACtD,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMoB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,GAAG,MAAM,CAAA,EAAA,CAAA;AAAA,QACjB,KAAA,EAAO,MAAA;AAAA,QACP,eAAA,EAAiB;AAAA;AACnB;AAAA,GACF;AAEJ;AAEA,IAAM,iBAAiB,MAAM;AAC3B,EAAA,MAAM,EAAE,SAAS,EAAE,OAAA,IAAW,MAAA,EAAO,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IAC1D,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC1B,CAAE,CAAA;AAEF,EAAA,uBACEpB,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,kBAAAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,oBACxDA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,GAAA,EAAK,CAAA;AAAA,QACL,GAAA,EAAK,GAAA;AAAA,QACL,OAAO,MAAA,IAAU,EAAA;AAAA,QACjB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAwB,KAAA,CAAM,MAAA,GAAS,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,QAC1F,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,MAAA,MAAA;AAAA,MAAO;AAAA,KAAA,EAAE;AAAA,GAAA,EAC5D,CAAA,EACF,CAAA;AAEJ,CAAA;AAEA,MAAA,CAAO,KAAA,GAAQ;AAAA,EACb,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AClCA,IAAM,WAAA,GAAsC;AAAA,EAC1C,QAAA,EAAU,uDAAA;AAAA,EACV,OAAA,EAAS,uDAAA;AAAA,EACT,SAAA,EAAW,yDAAA;AAAA,EACX,QAAA,EAAU,yDAAA;AAAA,EACV,OAAA,EAAS,yDAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B,KAAA,GAAQ;AAAA,IACN,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA,EAAI;AAAA,IACjC,EAAE,QAAA,EAAU,SAAA,EAAW,GAAA,EAAK,GAAA,EAAI;AAAA,IAChC,EAAE,QAAA,EAAU,WAAA,EAAa,GAAA,EAAK,GAAA,EAAI;AAAA,IAClC,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA;AAAI,GACnC;AAAA,EACA,QAAA,GAAW,EAAA;AAAA,EACX,SAAA,GAAY,SAAA;AAAA,EACZ,eAAA,GAAkB,aAAA;AAAA,EAClB,KAAA,GAAQ,QAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,GAAA,GAAM;AACR,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEA,0BAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAS,aAAA,EAAe,GAAA,EAAK,CAAA,EAAG,GAAG,MAAK,EACnD,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,0BAChBA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UAEC,MAAM,IAAA,CAAK,GAAA;AAAA,UACX,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,KAAA,EAAO,QAAA;AAAA,YACP,MAAA,EAAQ;AAAA,WACV;AAAA,UAEA,QAAA,kBAAAA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,cAC9B,KAAK,IAAA,CAAK,QAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,MAAA;AAAA,gBACR,SAAA,EAAW;AAAA;AACb;AAAA;AACF,SAAA;AAAA,QAhBK;AAAA,OAkBR,CAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,OAAA,EAAS,GAAA,EAAK,eAAA,EAAgB,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACzG,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACnC,CAAE,CAAA;AAEF,EAAA,MAAM,YAAY,CAAC,UAAA,EAAY,WAAW,WAAA,EAAa,UAAA,EAAY,WAAW,QAAQ,CAAA;AACtF,EAAA,MAAM,YAAA,GAAe,SAAS,EAAC;AAE/B,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAqB;AAC3C,IAAA,MAAM,SAAS,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,KAAkB,CAAA,CAAE,aAAa,QAAQ,CAAA;AAC3E,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAA,CAAQ,CAAC,KAAA,KAA4B;AACnC,QAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAkB,CAAA,CAAE,aAAa,QAAQ,CAAA;AAAA,MAC9E,CAAC,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,CAAC,KAAA,KAA4B;AACnC,QAAA,KAAA,CAAM,KAAA,GAAQ,CAAC,GAAG,YAAA,EAAc,EAAE,QAAA,EAA8C,GAAA,EAAK,KAAK,CAAA;AAAA,MAC5F,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CAAC,QAAA,EAAkB,GAAA,KAAgB;AACnD,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA4B;AACnC,MAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,GAAA;AAAA,QAAI,CAAC,MAC9B,CAAA,CAAE,QAAA,KAAa,WAAW,EAAE,GAAG,CAAA,EAAG,GAAA,EAAI,GAAI;AAAA,OAC5C;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,qBACdC,eAAAA,CAAC,OAAA,EAAA,EAAqB,WAAU,gDAAA,EAC9B,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,UAAA;AAAA,YACL,SAAS,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,KAAkB,CAAA,CAAE,aAAa,QAAQ,CAAA;AAAA,YACrE,QAAA,EAAU,MAAM,cAAA,CAAe,QAAQ,CAAA;AAAA,YACvC,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAc,QAAA,EAAA,QAAA,EAAS;AAAA,OAAA,EAAA,EAP7B,QAQZ,CACD,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,IAEC,aAAa,GAAA,CAAI,CAAC,IAAA,qBACjBC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,QAAA;AAAA,QAAS;AAAA,OAAA,EAAI,CAAA;AAAA,sBAChFD,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,CAAK,GAAA;AAAA,UACZ,QAAA,EAAU,CAAC,CAAA,KAAM,SAAA,CAAU,KAAK,QAAA,EAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UACxD,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EAAA,EARQ,IAAA,CAAK,QASf,CACD,CAAA;AAAA,oBAEDC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACjG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,sBACrDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,GAAA,GAAM,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC5F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAAI;AAAA,OAAA,EAAE;AAAA,KAAA,EACzD,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACnH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA,EAAI;AAAA,MACjC,EAAE,QAAA,EAAU,SAAA,EAAW,GAAA,EAAK,GAAA,EAAI;AAAA,MAChC,EAAE,QAAA,EAAU,WAAA,EAAa,GAAA,EAAK,GAAA,EAAI;AAAA,MAClC,EAAE,QAAA,EAAU,UAAA,EAAY,GAAA,EAAK,GAAA;AAAI,KACnC;AAAA,IACA,QAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAW,SAAA;AAAA,IACX,eAAA,EAAiB,aAAA;AAAA,IACjB,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACnNO,IAAM,YAAY,CAAC;AAAA,EACxB,KAAA,GAAQ,cAAA;AAAA,EACR,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,OAAA,GAAU,EAAA;AAAA,EACV,eAAA,GAAkB,SAAA;AAAA,EAClB,WAAA,GAAc,SAAA;AAAA,EACd,UAAA,GAAa,SAAA;AAAA,EACb,UAAA,GAAa,SAAA;AAAA,EACb,aAAA,GAAgB,iBAAA;AAAA,EAChB,OAAA,GAAU;AACZ,CAAA,KAAsB;AACpB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,MAAM,UAAU,CAAC,EAAE,KAAA,EAAO,KAAA,uBACxBnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,aAAA;AAAA,QACZ,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAc,KAAA;AAAA,QACd,SAAA,EAAW,QAAA;AAAA,QACX,QAAA,EAAU;AAAA,OACZ;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO,WAAA;AAAA,cACP,UAAA,EAAY,mBAAA;AAAA,cACZ,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG;AAAA;AAAA,SAChC;AAAA,wBACAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,UAAA;AAAA,cACP,aAAA,EAAe,WAAA;AAAA,cACf,aAAA,EAAe,KAAA;AAAA,cACf,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAGF,EAAA,uBACEC,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCD,cAAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,UAAA;AAAA,cACP,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,YAAA,EAAc,MAAA;AAAA,cACd,UAAA,EAAY,mBAAA;AAAA,cACZ,MAAA,EAAQ;AAAA,aACV;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEFC,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,aAAA;AAAA,cACT,GAAA,EAAK,MAAA;AAAA,cACL,cAAA,EAAgB;AAAA,aAClB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,OAAM,MAAA,EAAO,CAAA;AAAA,8BACnCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,OAAM,OAAA,EAAQ,CAAA;AAAA,8BACrCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,OAAM,MAAA,EAAO,CAAA;AAAA,8BACtCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,OAAM,MAAA,EAAO;AAAA;AAAA;AAAA;AACxC;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,aAAA;AAAA,IAC/B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAClF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,wBACtDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,OAAO,IAAA,IAAQ,CAAA;AAAA,YACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,IAAA,GAAO,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC3F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,sBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,wBACvDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAO,KAAA,IAAS,CAAA;AAAA,YAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC5F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,sBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,wBACzDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAO,OAAA,IAAW,CAAA;AAAA,YAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA,sBACAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,wBACzDA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,EAAA;AAAA,YACL,OAAO,OAAA,IAAW,CAAA;AAAA,YAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,YAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC5F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,UAAA,IAAc,SAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACvF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,cAAA;AAAA,IACP,IAAA,EAAM,CAAA;AAAA,IACN,KAAA,EAAO,EAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,OAAA,EAAS,EAAA;AAAA,IACT,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,SAAA;AAAA,IACb,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,iBAAA;AAAA,IACf,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC/OO,IAAM,YAAY,CAAC;AAAA,EACxB,KAAA,GAAQ,0BAAA;AAAA,EACR,IAAA,GAAO,QAAA;AAAA,EACP,WAAA,GAAc,qDAAA;AAAA,EACd,eAAA,GAAkB,SAAA;AAAA,EAClB,WAAA,GAAc,SAAA;AAAA,EACd,cAAA,GAAiB,SAAA;AAAA,EACjB,SAAA,GAAY,SAAA;AAAA,EACZ,SAAA,GAAY,SAAA;AAAA,EACZ,OAAA,GAAU,EAAA;AAAA,EACV,WAAA,GAAc;AAChB,CAAA,KAAsB;AACpB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,MAAA,EAAQ,CAAA,IAAA,EAAO,WAAW,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,QACzC,YAAA,EAAc,KAAA;AAAA,QACd,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,SAAA,EAAW,QAAA;AAAA,QACX,MAAA,EAAQ;AAAA,OACV;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,oBACCD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO,SAAA;AAAA,cACP,YAAA,EAAc,MAAA;AAAA,cACd,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAGFA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,cAAA;AAAA,cACT,eAAA,EAAiB,cAAA;AAAA,cACjB,MAAA,EAAQ,aAAa,WAAW,CAAA,CAAA;AAAA,cAChC,YAAA,EAAc,KAAA;AAAA,cACd,OAAA,EAAS,WAAA;AAAA,cACT,YAAA,EAAc;AAAA,aAChB;AAAA,YAEA,QAAA,kBAAAA,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,MAAA;AAAA,kBACZ,UAAA,EAAY,WAAA;AAAA,kBACZ,aAAA,EAAe,KAAA;AAAA,kBACf,KAAA,EAAO;AAAA,iBACT;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,SACF;AAAA,QAEC,+BACCA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,SAAA;AAAA,cACP,UAAA,EAAY,mBAAA;AAAA,cACZ,OAAA,EAAS;AAAA,aACX;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ;AAEA,IAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,cAAA,EAAgB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,cAAA;AAAA,IAChC,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC/B,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAClF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,WAAA,EAAc,CAAA;AAAA,UAC/F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,WAAA,IAAe,QAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAuC,CAAA;AAAA,UACzH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,OAAA,EAAQ,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BAC3BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM;AAAA;AAAA;AAAA;AAC/B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC5F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACxF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA2B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACtF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA2B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,SAAA,CAAU,KAAA,GAAQ;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,0BAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,qDAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,WAAA,EAAa,SAAA;AAAA,IACb,cAAA,EAAgB,SAAA;AAAA,IAChB,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS,EAAA;AAAA,IACT,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACnNO,IAAM,cAAc,CAAC;AAAA,EAC1B,KAAA,GAAQ,+FAAA;AAAA,EACR,UAAA,GAAa,eAAA;AAAA,EACb,WAAA,GAAc,eAAA;AAAA,EACd,WAAA,GAAc,EAAA;AAAA,EACd,eAAA,GAAkB,SAAA;AAAA,EAClB,UAAA,GAAa,SAAA;AAAA,EACb,WAAA,GAAc,SAAA;AAAA,EACd,WAAA,GAAc,SAAA;AAAA,EACd,OAAA,GAAU,EAAA;AAAA,EACV,aAAA,GAAgB;AAClB,CAAA,KAAwB;AACtB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEnB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB,UAAA,EAAY,aAAa,WAAW,CAAA,CAAA;AAAA,QACpC,MAAA,EAAQ;AAAA,OACV;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,aAAA,oBACCD,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,KAAA,EAAO,WAAA;AAAA,cACP,OAAA,EAAS,GAAA;AAAA,cACT,UAAA,EAAY,CAAA;AAAA,cACZ,YAAA,EAAc,OAAA;AAAA,cACd,UAAA,EAAY;AAAA,aACd;AAAA,YACD,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBAGFA,cAAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,MAAA;AAAA,cACV,SAAA,EAAW,QAAA;AAAA,cACX,KAAA,EAAO,UAAA;AAAA,cACP,UAAA,EAAY,GAAA;AAAA,cACZ,MAAA,EAAQ,YAAA;AAAA,cACR,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEAC,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,MAAA,EAAO,EAC9D,QAAA,EAAA;AAAA,UAAA,WAAA,oBACCD,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,GAAA,EAAK,UAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAc,KAAA;AAAA,gBACd,SAAA,EAAW;AAAA;AACb;AAAA,WACF;AAAA,0BAEFC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,MAAA;AAAA,kBACV,UAAA,EAAY,MAAA;AAAA,kBACZ,KAAA,EAAO,UAAA;AAAA,kBACP,UAAA,EAAY;AAAA,iBACd;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YACC,+BACCA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,QAAA,EAAU,MAAA;AAAA,kBACV,KAAA,EAAO,WAAA;AAAA,kBACP,UAAA,EAAY;AAAA,iBACd;AAAA,gBAEC,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EAEJ;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,sBAAsB,MAAM;AAChC,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,WAAA,EAAa,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,WAAA;AAAA,IAC7B,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GACjC,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,EAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,UAAA,IAAc,EAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACzF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,WAAA,IAAe,EAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAA,cAAAA,CAAC,KAAA,EAAA,EACC,0BAAAC,eAAAA,CAAC,OAAA,EAAA,EAAM,WAAU,gDAAA,EACf,QAAA,EAAA;AAAA,sBAAAD,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,UAAA;AAAA,UACL,SAAS,aAAA,KAAkB,KAAA;AAAA,UAC3B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,aAAA,GAAgB,CAAA,CAAE,MAAA,CAAO,OAAQ,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MAAE;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,sBAClEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,WAAA,IAAe,SAAA;AAAA,UACtB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,WAAA,GAAc,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC1F,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,UAAA,IAAc,SAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA6B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACzF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA6B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAChG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,WAAA,CAAY,KAAA,GAAQ;AAAA,EAClB,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,+FAAA;AAAA,IACP,UAAA,EAAY,eAAA;AAAA,IACZ,WAAA,EAAa,eAAA;AAAA,IACb,WAAA,EAAa,EAAA;AAAA,IACb,eAAA,EAAiB,SAAA;AAAA,IACjB,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,SAAA;AAAA,IACb,OAAA,EAAS,EAAA;AAAA,IACT,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC7OO,IAAM,mBAAmB,CAAC;AAAA,EAC/B,YAAA,GAAe,mFAAA;AAAA,EACf,QAAA,GAAW,GAAA;AAAA,EACX,KAAA,GAAQ,MAAA;AAAA,EACR,KAAA,GAAQ,QAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,YAAA,GAAe,CAAA;AAAA,EACf,eAAA,GAAkB,SAAA;AAAA,EAClB,cAAA,GAAiB;AACnB,CAAA,KAA6B;AAC3B,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,KAAA;AAAA,QACX,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,cAAA;AAAA,YACT,QAAA,EAAU,UAAA;AAAA,YACV,KAAA;AAAA,YACA,QAAA,EAAU;AAAA,WACZ;AAAA,UAEA,QAAA,kBAAAC,eAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,UAAA;AAAA,gBACV,YAAA,EAAc,GAAG,YAAY,CAAA,EAAA,CAAA;AAAA,gBAC7B,QAAA,EAAU;AAAA,eACZ;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,GAAA,EAAK,YAAA;AAAA,oBACL,GAAA,EAAI,iBAAA;AAAA,oBACJ,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,MAAA;AAAA,sBACP,OAAA,EAAS;AAAA;AACX;AAAA,iBACF;AAAA,gCAGAA,cAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,QAAA,EAAU,UAAA;AAAA,sBACV,GAAA,EAAK,CAAA;AAAA,sBACL,IAAA,EAAM,CAAA;AAAA,sBACN,KAAA,EAAO,CAAA;AAAA,sBACP,MAAA,EAAQ,CAAA;AAAA,sBACR,eAAA,EAAiB,cAAc,cAAc,CAAA,CAAA,CAAA;AAAA,sBAC7C,OAAA,EAAS,MAAA;AAAA,sBACT,UAAA,EAAY,QAAA;AAAA,sBACZ,cAAA,EAAgB;AAAA,qBAClB;AAAA,oBAGA,QAAA,kBAAAA,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,KAAA,EAAO,MAAA;AAAA,0BACP,MAAA,EAAQ,MAAA;AAAA,0BACR,eAAA,EAAiB,iBAAA;AAAA,0BACjB,YAAA,EAAc,KAAA;AAAA,0BACd,OAAA,EAAS,MAAA;AAAA,0BACT,UAAA,EAAY,QAAA;AAAA,0BACZ,cAAA,EAAgB,QAAA;AAAA,0BAChB,MAAA,EAAQ,aAAa,eAAe,CAAA;AAAA,yBACtC;AAAA,wBAEA,QAAA,kBAAAA,cAAAA;AAAA,0BAAC,KAAA;AAAA,0BAAA;AAAA,4BACC,KAAA,EAAO;AAAA,8BACL,KAAA,EAAO,CAAA;AAAA,8BACP,MAAA,EAAQ,CAAA;AAAA,8BACR,SAAA,EAAW,wBAAA;AAAA,8BACX,YAAA,EAAc,wBAAA;AAAA,8BACd,UAAA,EAAY,cAAc,eAAe,CAAA,CAAA;AAAA,8BACzC,UAAA,EAAY;AAAA;AACd;AAAA;AACF;AAAA;AACF;AAAA;AACF;AAAA;AAAA;AACF;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,IAAM,2BAA2B,MAAM;AACrC,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,YAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,YAAA;AAAA,IAC9B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,YAAA,EAAc,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,YAAA;AAAA,IAC9B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,cAAA,EAAgB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAClC,CAAE,CAAA;AAEF,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,YAAA,IAAgB,EAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,YAAA,GAAe,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAChG,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,QAAA,GAAW,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UAC5F,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,sBACvDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,MAAA;AAAA,UACL,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACzF,SAAA,EAAU,4CAAA;AAAA,UACV,WAAA,EAAY;AAAA;AAAA;AACd,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,QAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACxH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,sBACnEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,eAAA,IAAmB,SAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAAkC,KAAA,CAAM,eAAA,GAAkB,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACnG,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,sBACjEA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,GAAA;AAAA,UACN,OAAO,cAAA,IAAkB,GAAA;AAAA,UACzB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAkC,KAAA,CAAM,cAAA,GAAiB,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9G,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,eAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAkC,QAAA,EAAA,CAAA,cAAA,IAAkB,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,KAAA,EACtF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,eAAA,EAAa,CAAA;AAAA,sBAC/DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,YAAA,IAAgB,CAAA;AAAA,UACvB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAkC,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC1G,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,YAAA;AAAA,QAAa;AAAA,OAAA,EAAE;AAAA,KAAA,EAClE,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAAkC,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACrG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,gBAAA,CAAiB,KAAA,GAAQ;AAAA,EACvB,KAAA,EAAO;AAAA,IACL,YAAA,EAAc,mFAAA;AAAA,IACd,QAAA,EAAU,GAAA;AAAA,IACV,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,YAAA,EAAc,CAAA;AAAA,IACd,eAAA,EAAiB,SAAA;AAAA,IACjB,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACpOA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,EAAE,GAAA,EAAK,gBAAA,EAAkB,KAAA,EAAO,YAAA,EAAc,SAAS,MAAA,EAAO;AAAA,EAC9D,EAAE,GAAA,EAAK,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,SAAS,KAAA,EAAM;AAAA,EAC3D,EAAE,GAAA,EAAK,eAAA,EAAiB,KAAA,EAAO,WAAA,EAAa,SAAS,UAAA,EAAW;AAAA,EAChE,EAAE,GAAA,EAAK,WAAA,EAAa,KAAA,EAAO,OAAA,EAAS,SAAS,kBAAA,EAAmB;AAAA,EAChE,EAAE,GAAA,EAAK,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,SAAS,UAAA,EAAW;AAAA,EAC5D,EAAE,GAAA,EAAK,oBAAA,EAAsB,KAAA,EAAO,WAAA,EAAa,SAAS,SAAA,EAAU;AAAA,EACpE,EAAE,GAAA,EAAK,kBAAA,EAAoB,KAAA,EAAO,cAAA,EAAgB,SAAS,YAAA,EAAa;AAAA,EACxE,EAAE,GAAA,EAAK,cAAA,EAAgB,KAAA,EAAO,UAAA,EAAY,SAAS,YAAA,EAAa;AAAA,EAChE,EAAE,GAAA,EAAK,kBAAA,EAAoB,KAAA,EAAO,cAAA,EAAgB,SAAS,WAAA,EAAY;AAAA,EACvE,EAAE,GAAA,EAAK,kBAAA,EAAoB,KAAA,EAAO,SAAA,EAAW,SAAS,WAAA;AACxD;AAEA,IAAM,mBAAA,GAAsB,CAAC,IAAA,KAAiB;AAC5C,EAAA,IAAI,QAAA,GAAW,IAAA;AACf,EAAA,mBAAA,CAAoB,OAAA,CAAQ,CAAC,EAAE,GAAA,EAAK,SAAQ,KAAM;AAChD,IAAA,QAAA,GAAW,QAAA,CAAS,OAAA;AAAA,MAAQ,IAAI,MAAA,CAAO,GAAA,CAAI,QAAQ,OAAA,EAAS,MAAM,GAAG,GAAG,CAAA;AAAA,MACtE,sJAAsJ,OAAO,CAAA,OAAA;AAAA,KAC/J;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,QAAA;AACT,CAAA;AAEO,IAAM,eAAe,CAAC;AAAA,EAC3B,IAAA,GAAO,kEAAA;AAAA,EACP,QAAA,GAAW,EAAA;AAAA,EACX,UAAA,GAAa,QAAA;AAAA,EACb,KAAA,GAAQ,SAAA;AAAA,EACR,KAAA,GAAQ,MAAA;AAAA,EACR,OAAA,GAAU,EAAA;AAAA,EACV,UAAA,GAAa;AACf,CAAA,KAAyB;AACvB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMmB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,YACrB,UAAA;AAAA,YACA,KAAA;AAAA,YACA,SAAA,EAAW,KAAA;AAAA,YACX,UAAA;AAAA,YACA,MAAA,EAAQ,CAAA;AAAA,YACR,UAAA,EAAY;AAAA,WACd;AAAA,UACA,uBAAA,EAAyB,EAAE,MAAA,EAAQ,mBAAA,CAAoB,IAAI,CAAA;AAAE;AAAA;AAC/D;AAAA,GACF;AAEJ;AAEA,IAAM,uBAAuB,MAAM;AACjC,EAAA,MAAM,EAAE,OAAA,EAAS,EAAE,OAAA,IAAW,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,OAAO,OAAA,EAAS,UAAA,EAAW,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACjH,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,IAAA;AAAA,IACtB,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,UAAA;AAAA,IAC5B,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA,IACzB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC9B,CAAE,CAAA;AAEF,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAqB;AAC3C,IAAA,OAAA,CAAQ,CAAC,KAAA,KAA6B;AACpC,MAAA,KAAA,CAAM,IAAA,GAAA,CAAQ,KAAA,CAAM,IAAA,IAAQ,EAAA,IAAM,QAAA;AAAA,IACpC,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,sBAC9DA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,IAAA,IAAQ,EAAA;AAAA,UACf,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACpF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,iBAAA,EAAe,CAAA;AAAA,sBACjEA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBACZ,QAAA,EAAA,mBAAA,CAAoB,GAAA,CAAI,CAAC,CAAA,qBACxBA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,MAAM,cAAA,CAAe,CAAA,CAAE,GAAG,CAAA;AAAA,UACnC,SAAA,EAAU,qHAAA;AAAA,UAET,QAAA,EAAA,CAAA,CAAE;AAAA,SAAA;AAAA,QAJE,CAAA,CAAE;AAAA,OAMV,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA8B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAClG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,UAAA,IAAc,QAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,UAAA,GAAa,CAAA,CAAE,MAAA,CAAO,KAA2B,CAAA;AAAA,UAC/G,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAA,EAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,QAAO,QAAA,EAAA,MAAA,EAAI;AAAA;AAAA;AAAA;AAC3B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,KAAA,IAAS,SAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACrF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DC,eAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,IAAS,MAAA;AAAA,UAChB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA8B,KAAA,CAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAqC,CAAA;AAAA,UACpH,SAAA,EAAU,4CAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAD,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,4BACzBA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,UAAS,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,4BAC7BA,cAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,SAAQ,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA;AAAA;AAC7B,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA8B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACjG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,sBAC7DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,GAAA;AAAA,UACL,IAAA,EAAM,GAAA;AAAA,UACN,OAAO,UAAA,IAAc,GAAA;AAAA,UACrB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA8B,KAAA,CAAM,UAAA,GAAa,UAAA,CAAW,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACtG,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAiC,QAAA,EAAA,UAAA,EAAW;AAAA,KAAA,EAC9D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,YAAA,CAAa,KAAA,GAAQ;AAAA,EACnB,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,kEAAA;AAAA,IACN,QAAA,EAAU,EAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS,EAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;ACzLA,IAAM,KAAA,GAAQ;AAAA,EACZ,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,WAAA;AAAA,EACN,MAAA,EAAQ,WAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,WAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB,KAAA,GAAQ;AAAA,IACN,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,4BAAA,EAA6B;AAAA,IACpD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,0BAAA,EAA2B;AAAA,IAClD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,uBAAA,EAAwB;AAAA,IAC/C,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,6BAAA;AAA8B,GACvD;AAAA,EACA,SAAA,GAAY,SAAA;AAAA,EACZ,SAAA,GAAY,SAAA;AAAA,EACZ,eAAA,GAAkB,aAAA;AAAA,EAClB,QAAA,GAAW,EAAA;AAAA,EACX,QAAA,GAAW,EAAA;AAAA,EACX,GAAA,GAAM,EAAA;AAAA,EACN,OAAA,GAAU;AACZ,CAAA,KAAqB;AACnB,EAAA,MAAM,EAAE,UAAA,EAAY,EAAE,SAAS,IAAA,EAAK,KAAMoB,YAAAA,EAAQ;AAElD,EAAA,uBACEpB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAC,GAAA,KAAQ,OAAA,CAAQ,IAAA,CAAK,GAAI,CAAC,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QACnB;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,SAAA,EAAW,MAAA;AAAA,YACX,MAAA,EAAQ,CAAA;AAAA,YACR,OAAA,EAAS,CAAA;AAAA,YACT,OAAA,EAAS,MAAA;AAAA,YACT,aAAA,EAAe,QAAA;AAAA,YACf,GAAA,EAAK,GAAG,GAAG,CAAA,EAAA;AAAA,WACb;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChBC,eAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cAEC,KAAA,EAAO;AAAA,gBACL,OAAA,EAAS,MAAA;AAAA,gBACT,UAAA,EAAY,YAAA;AAAA,gBACZ,GAAA,EAAK,MAAA;AAAA,gBACL,UAAA,EAAY;AAAA,eACd;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAD,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,SAAA;AAAA,sBACP,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,sBACrB,UAAA,EAAY,GAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBAEC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,IAA0B,CAAA,IAAK,IAAA,CAAK;AAAA;AAAA,iBAClD;AAAA,gCACAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,SAAA;AAAA,sBACP,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,sBACrB,UAAA,EAAY;AAAA,qBACd;AAAA,oBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA;AACR;AAAA,aAAA;AAAA,YA1BK;AAAA,WA4BR;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;AAEA,IAAM,mBAAmB,MAAM;AAC7B,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,IACnB,KAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACF,GAAIoB,YAAAA,CAAQ,CAAC,IAAA,MAAU;AAAA,IACrB,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAA;AAAA,IACvB,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAA;AAAA,IAC3B,eAAA,EAAiB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,eAAA;AAAA,IACjC,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAA;AAAA,IAC1B,GAAA,EAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,GAAA;AAAA,IACrB,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM;AAAA,GAC3B,CAAE,CAAA;AAEF,EAAA,MAAM,YAAA,GAAe,SAAS,EAAC;AAE/B,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,EAAe,KAAA,EAAwB,KAAA,KAAkB;AAC3E,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAyB;AAChC,MAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,GAAA;AAAA,QAAI,CAAC,IAAA,EAAgB,CAAA,KAC9C,CAAA,KAAM,KAAA,GAAQ,EAAE,GAAG,IAAA,EAAM,CAAC,KAAK,GAAG,KAAA,EAAM,GAAI;AAAA,OAC9C;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAyB;AAChC,MAAA,KAAA,CAAM,KAAA,GAAQ,CAAC,GAAG,YAAA,EAAc,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,UAAA,EAAY,CAAA;AAAA,IACrE,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AACpC,IAAA,OAAA,CAAQ,CAAC,KAAA,KAAyB;AAChC,MAAA,KAAA,CAAM,QAAQ,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,EAAa,CAAA,KAAc,MAAM,KAAK,CAAA;AAAA,IAC3E,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAgB,KAAA,qBACjCC,eAAAA,CAAC,KAAA,EAAA,EAAgB,WAAU,wBAAA,EACzB,QAAA,EAAA;AAAA,wBAAAD,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAO,IAAA,CAAK,IAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,OAAO,MAAA,EAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACzD,SAAA,EAAU,0CAAA;AAAA,YAET,iBAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,IAAI,CAAA,qBACpCA,cAAAA,CAAC,QAAA,EAAA,EAAiB,OAAO,GAAA,EAAM,QAAA,EAAA,IAAA,EAAA,EAAlB,GAAuB,CACrC;AAAA;AAAA,SACH;AAAA,wBACAA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,OAAO,IAAA,CAAK,IAAA;AAAA,YACZ,QAAA,EAAU,CAAC,CAAA,KAAM,UAAA,CAAW,OAAO,MAAA,EAAQ,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACzD,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACAA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,YAC/B,SAAA,EAAU,4DAAA;AAAA,YACX,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EAAA,EArBQ,KAsBV,CACD,CAAA,EACH,CAAA;AAAA,sBACAA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,OAAA;AAAA,UACT,SAAA,EAAU,4FAAA;AAAA,UACX,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA0B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACrF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAC5DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAO,SAAA,IAAa,SAAA;AAAA,UACpB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,UAA0B,KAAA,CAAM,SAAA,GAAY,CAAA,CAAE,MAAA,CAAO,KAAM,CAAA;AAAA,UACrF,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAC,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,sBAC3DA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,QAAA,IAAY,EAAA;AAAA,UACnB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,QAAA,GAAW,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC9F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAS;AAAA,OAAA,EAAE;AAAA,KAAA,EAC9D,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,sBACrDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,GAAA,IAAO,EAAA;AAAA,UACd,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,GAAA,GAAM,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UACzF,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAAI;AAAA,OAAA,EAAE;AAAA,KAAA,EACzD,CAAA;AAAA,oBAEAA,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAD,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,gCAAA,EAAiC,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,sBACzDA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,CAAA;AAAA,UACL,GAAA,EAAK,EAAA;AAAA,UACL,OAAO,OAAA,IAAW,EAAA;AAAA,UAClB,QAAA,EAAU,CAAC,CAAA,KAAM,OAAA,CAAQ,CAAC,KAAA,KAA0B,KAAA,CAAM,OAAA,GAAU,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,UAC7F,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,eAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ;AAAA,OAAA,EAAE;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,QAAA,CAAS,KAAA,GAAQ;AAAA,EACf,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,4BAAA,EAA6B;AAAA,MACpD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,0BAAA,EAA2B;AAAA,MAClD,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,uBAAA,EAAwB;AAAA,MAC/C,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,6BAAA;AAA8B,KACvD;AAAA,IACA,SAAA,EAAW,SAAA;AAAA,IACX,SAAA,EAAW,SAAA;AAAA,IACX,eAAA,EAAiB,aAAA;AAAA,IACjB,QAAA,EAAU,EAAA;AAAA,IACV,QAAA,EAAU,EAAA;AAAA,IACV,GAAA,EAAK,EAAA;AAAA,IACL,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,QAAA,EAAU;AAAA;AAEd,CAAA;AC7OO,IAAM,kBAAA,GAAwC;AAAA,EACnD,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAM4B,oBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,0BAAA;AAAA,IACb,IAAA,EAAMC,uBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa,yBAAA;AAAA,IACb,IAAA,EAAMC,0BAAA;AAAA,IACN,QAAA,EAAU,QAAA;AAAA,IACV,aAAA,EAAe,sBAAM/B,cAAAA,CAACgC,cAAA,EAAQ,EAAA,EAAI,SAAA,EAAW,MAAA,EAAM,IAAA,EAAC;AAAA,GACtD;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,MAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,oBAAA;AAAA,IACb,IAAA,EAAMC,uBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,SAAA,EAAW,OAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,2BAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,sBAAA;AAAA,IACb,IAAA,EAAMC,gBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,SAAA,EAAW,UAAA;AAAA,IACX,KAAA,EAAO,OAAA;AAAA,IACP,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAMC,yBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,SAAA,EAAW,gBAAA;AAAA,IACX,KAAA,EAAO,OAAA;AAAA,IACP,WAAA,EAAa,2BAAA;AAAA,IACb,IAAA,EAAMC,sBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa,iBAAA;AAAA,IACb,IAAA,EAAMC,gBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa,oBAAA;AAAA,IACb,IAAA,EAAMC,kBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,SAAA,EAAW;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa,mBAAA;AAAA,IACb,IAAA,EAAMC,eAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,SAAA,EAAW,WAAA;AAAA,IACX,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,uBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EAAa,sBAAA;AAAA,IACb,IAAA,EAAMC,oBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EAAa,wBAAA;AAAA,IACb,IAAA,EAAMC,iBAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEd;AAGO,IAAM,aAAA,GAAgB,CAC3B,QAAA,KAC6C;AAC7C,EAAA,MAAM,WAAqD,EAAC;AAC5D,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACrD,IAAA,QAAA,CAAS,IAAI,IAAI,MAAA,CAAO,SAAA;AAAA,EAC1B;AACA,EAAA,OAAO,QAAA;AACT;AAGO,IAAM,aAAA,GAAgB,CAAC,QAAA,KAA0C;AACtE,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,KAAA,MAAW,MAAA,IAAU,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,EAAG;AAC5C,IAAA,IAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,GAAA,CAAI,OAAO,QAAQ,CAAA;AAAA,EAC/C;AACA,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;;;ACxKO,IAAM,iBAAA,GAAoB,CAC/B,KAAA,EACA,eAAA,KACW;AACX,EAAA,MAAM,UAAA,GAAa,CAAC,MAAA,KAA2B;AAC7C,IAAA,MAAM,IAAA,GAAO,MAAM,MAAM,CAAA;AACzB,IAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAElB,IAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,UAAA,EAAY,aAAY,GAAI,IAAA;AACxD,IAAA,MAAM,WAAW,IAAA,CAAK,YAAA;AAEtB,IAAA,IAAI,YAAA,GAAe,EAAA;AACnB,IAAA,IAAI,UAAA,IAAc,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AACvC,MAAA,YAAA,GAAe,UAAA,CAAW,IAAI,CAAC,OAAA,KAAoB,WAAW,OAAO,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,IACjF;AACA,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA,CAAE,OAAA,CAAQ,CAAC,QAAA,KAAqB;AACvD,QAAA,YAAA,IAAgB,WAAW,QAAQ,CAAA;AAAA,MACrC,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,mDAAkB,QAAA,CAAA,EAAW;AAC/B,MAAA,MAAM,SAAS,eAAA,CAAgB,QAAQ,EAAE,QAAA,EAAU,KAAA,EAAO,cAAc,WAAW,CAAA;AACnF,MAAA,IAAI,MAAA,KAAW,MAAM,OAAO,MAAA;AAAA,IAC9B;AAEA,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,OAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wGAAA,EAsB2F,KAAA,CAAM,cAAc,SAAS,CAAA;AAAA;AAAA;AAAA,EAGrI,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAA,CAAA;AAAA,MAUR,KAAK,WAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,UAAA,IAAc,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,EAC7G,YAAY;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKR,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,SAAA,GAAa,MAAM,SAAA,IAAwB,EAAA;AACjD,QAAA,MAAM,aAAa,GAAA,GAAM,SAAA;AACzB,QAAA,MAAM,YAAW,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,aAAA,CAAA,IAAiB,WAAW,WAAA,CAAY,aAAa,CAAC,CAAA,GAAI,EAAA;AACzF,QAAA,MAAM,aAAY,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,cAAA,CAAA,IAAkB,WAAW,WAAA,CAAY,cAAc,CAAC,CAAA,GAAI,EAAA;AAE5F,QAAA,OAAO;AAAA,+GAAA,EACkG,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA;AAAA,6BAAA,EAErJ,SAAS,CAAA,sCAAA,EAA0C,KAAA,CAAM,GAAA,GAAiB,KAAK,EAAE,CAAA;AAAA,oBAAA,EAC1F,QAAQ;AAAA;AAAA,6BAAA,EAEC,UAAU,CAAA,qCAAA,EAAyC,KAAA,CAAM,GAAA,GAAiB,KAAK,EAAE,CAAA;AAAA,oBAAA,EAC1F,SAAS;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAIzB;AAAA,MAEA,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,oBAAA,EAC9F,MAAM,OAAA,GAAU,CAAA,UAAA,EAAa,KAAA,CAAM,OAAO,iEAAiE,EAAE;AAAA,sCAAA,EAC3F,MAAM,SAAA,IAAa,SAAS,CAAA,kFAAA,EAAqF,KAAA,CAAM,eAAe,cAAc,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKtL,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,qCAAA,EAC7E,MAAM,SAAA,IAAa,SAAS,CAAA,0DAAA,EAA6D,KAAA,CAAM,eAAe,cAAc,CAAA;AAAA,qCAAA,EAC5H,MAAM,SAAA,IAAa,SAAS,CAAA,uCAAA,EAA0C,KAAA,CAAM,WAAW,gCAAgC,CAAA;AAAA,qCAAA,EACvH,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,8CAAA,EAAiD,KAAA,CAAM,SAAS,kBAAkB,CAAA,UAAA,EAAa,KAAA,CAAM,KAAA,IAAS,gBAAgB,CAAA;AAAA,qCAAA,EAC1J,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,2DAAA,EAAA,iBAA2D,IAAI,IAAA,EAAK,EAAE,WAAA,EAAa,CAAA,CAAA,EAAI,KAAA,CAAM,WAAA,IAAe,cAAc,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKvL,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,KAAA,CAAM,SAAS,QAAQ,CAAA;AAAA,6BAAA,EACnC,KAAA,CAAM,IAAA,IAAQ,GAAG,CAAA,kDAAA,EAAqD,KAAA,CAAM,eAAA,IAAmB,SAAS,CAAA,SAAA,EAAY,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,WAAA,EAAc,MAAM,QAAA,IAAY,EAAE,CAAA,GAAA,EAAM,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,mBAAA,EAAsB,KAAA,CAAM,YAAA,IAAgB,CAAC,CAAA,sCAAA,EAAyC,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,wDAAA,EAA2D,KAAA,CAAM,QAAQ,YAAY,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKpa,KAAK,WAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,yCAAA,EAChB,KAAA,CAAM,YAAY,EAAE,CAAA,iBAAA,EAAoB,MAAM,UAAA,IAAc,QAAQ,CAAA,SAAA,EAAY,KAAA,CAAM,KAAA,IAAS,SAAS,iBAAiB,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,cAAc,GAAG,CAAA,8CAAA,EAAiD,KAAA,CAAM,IAAA,IAAQ,yBAAyB,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAKpT,KAAK,cAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,yCAAA,EAChB,KAAA,CAAM,YAAY,EAAE,CAAA,iBAAA,EAAoB,MAAM,UAAA,IAAc,QAAQ,CAAA,SAAA,EAAY,KAAA,CAAM,KAAA,IAAS,SAAS,iBAAiB,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,cAAc,GAAG,CAAA,8CAAA,EAAiD,KAAA,CAAM,IAAA,IAAQ,EAAE,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK7R,KAAK,YAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,MAAM,KAAA,IAAS,QAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,8BAAA,EACnE,KAAA,CAAM,GAAA,IAAO,qCAAqC,CAAA,OAAA,EAAU,MAAM,GAAA,IAAO,OAAO,CAAA,gBAAA,EAAmB,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,kCAAA,EAAqC,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK9M,KAAK,kBAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,MAAM,KAAA,IAAS,QAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,6BAAA,EACpE,KAAA,CAAM,YAAY,GAAG,CAAA;AAAA,gCAAA,EAClB,KAAA,CAAM,YAAA,IAAgB,qCAAqC,CAAA,sCAAA,EAAyC,KAAA,CAAM,SAAS,MAAM,CAAA,kCAAA,EAAqC,KAAA,CAAM,YAAA,IAAgB,CAAC,CAAA;AAAA,2MAAA,EACV,KAAA,CAAM,mBAAmB,SAAS,CAAA;AAAA,uOAAA,EACN,KAAA,CAAM,mBAAmB,SAAS,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAOrQ,KAAK,SAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,KAAA,CAAM,UAAU,EAAE,CAAA;AAAA,yDAAA,EACC,KAAA,CAAM,SAAA,IAAa,CAAC,CAAA,SAAA,EAAY,KAAA,CAAM,SAAS,SAAS,CAAA,SAAA,EAAY,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK9I,KAAK,QAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA,qCAAA,EAGwB,MAAM,MAAA,IAAU,EAAE,CAAA,iBAAA,EAAoB,KAAA,CAAM,UAAU,EAAE,CAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAIzF,KAAK,aAAA,EAAe;AAClB,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAsD,EAAC;AAC5E,QAAA,MAAM,QAAA,GAAY,MAAM,QAAA,IAAuB,EAAA;AAC/C,QAAA,MAAM,GAAA,GAAO,MAAM,GAAA,IAAkB,EAAA;AAErC,QAAA,MAAMC,YAAAA,GAAsC;AAAA,UAC1C,QAAA,EAAU,uDAAA;AAAA,UACV,OAAA,EAAS,uDAAA;AAAA,UACT,SAAA,EAAW,yDAAA;AAAA,UACX,QAAA,EAAU,yDAAA;AAAA,UACV,OAAA,EAAS,yDAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACV;AAEA,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAAA,mBAAA,EACzB,IAAA,CAAK,GAAG,CAAA,0CAAA,EAA6C,GAAA,GAAM,CAAC,CAAA;AAAA,sBAAA,EACzDA,YAAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,IAAK,EAAE,CAAA,OAAA,EAAU,IAAA,CAAK,QAAQ,CAAA,gBAAA,EAAmB,QAAQ,CAAA,YAAA,EAAe,QAAQ,CAAA;AAAA;AAAA,QAAA,CAExH,CAAA,CAAE,KAAK,EAAE,CAAA;AAEV,QAAA,OAAO;AAAA;AAAA;AAAA,yCAAA,EAG4B,KAAA,CAAM,KAAA,IAAS,QAAQ,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA,sBAAA,EAAyB,KAAA,CAAM,eAAA,IAAmB,aAAa,CAAA;AAAA,oBAAA,EAC5I,SAAS;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAIzB;AAAA,MAEA,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,QAAA,GAAW,CAAA,YAAA,EAAe,KAAA,CAAM,aAAA,IAAiB,iBAAiB,CAAA,mGAAA,CAAA;AACxE,QAAA,MAAM,WAAA,GAAc,CAAA,2CAAA,EAA8C,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,iCAAA,CAAA;AAChG,QAAA,MAAM,UAAA,GAAa,CAAA,wBAAA,EAA2B,KAAA,CAAM,UAAA,IAAc,SAAS,CAAA,iDAAA,CAAA;AAE3E,QAAA,OAAO;AAAA;AAAA;AAAA,+CAAA,EAGkC,MAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,oBAAA,EAC9F,KAAA,CAAM,KAAA,GAAQ,CAAA,kBAAA,EAAqB,KAAA,CAAM,UAAA,IAAc,SAAS,CAAA,2FAAA,EAA8F,KAAA,CAAM,KAAK,CAAA,KAAA,CAAA,GAAU,EAAE;AAAA;AAAA;AAAA,mCAAA,EAGtK,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,IAAA,IAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EACxD,UAAU,CAAA;AAAA;AAAA,mCAAA,EAEb,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,KAAA,IAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EACzD,UAAU,CAAA;AAAA;AAAA,mCAAA,EAEb,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,OAAA,IAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EAC3D,UAAU,CAAA;AAAA;AAAA,mCAAA,EAEb,QAAQ,CAAA;AAAA,sCAAA,EACL,WAAW,CAAA,EAAA,EAAK,MAAA,CAAO,KAAA,CAAM,OAAA,IAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,sCAAA,EAC3D,UAAU,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAO5C;AAAA,MAEA,KAAK,WAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA,kDAAA,EAIqC,KAAA,CAAM,eAAA,IAAmB,SAAS,CAAA,cAAA,EAAiB,MAAM,WAAA,IAAe,QAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,+BAAA,EAAkC,KAAA,CAAM,WAAW,EAAE,CAAA;AAAA,sBAAA,EACnM,KAAA,CAAM,KAAA,GAAQ,CAAA,uDAAA,EAA0D,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,wDAAA,EAA2D,KAAA,CAAM,KAAK,CAAA,MAAA,CAAA,GAAW,EAAE;AAAA,2EAAA,EAClI,MAAM,cAAA,IAAkB,SAAS,CAAA,oBAAA,EAAuB,KAAA,CAAM,eAAe,SAAS,CAAA;AAAA,6HAAA,EACpC,MAAM,SAAA,IAAa,SAAS,CAAA,GAAA,EAAM,KAAA,CAAM,QAAQ,QAAQ,CAAA;AAAA;AAAA,sBAAA,EAE/J,KAAA,CAAM,WAAA,GAAc,CAAA,oCAAA,EAAuC,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,iDAAA,EAAoD,KAAA,CAAM,WAAW,CAAA,MAAA,CAAA,GAAW,EAAE;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAM3L,KAAK,aAAA;AACH,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA,kDAAA,EAIqC,KAAA,CAAM,eAAA,IAAmB,SAAS,CAAA,WAAA,EAAc,KAAA,CAAM,WAAW,EAAE,CAAA,2BAAA,EAA8B,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA;AAAA,sBAAA,EAC3J,KAAA,CAAM,kBAAkB,KAAA,GAAQ,CAAA,oCAAA,EAAuC,MAAM,WAAA,IAAe,SAAS,gGAAgG,EAAE;AAAA,4EAAA,EACjJ,MAAM,UAAA,IAAc,SAAS,CAAA,sEAAA,EAAyE,KAAA,CAAM,SAAS,EAAE,CAAA;AAAA;AAAA;AAAA,0BAAA,EAGzK,KAAA,CAAM,cAAc,CAAA,mEAAA,EAAsE,KAAA,CAAM,WAAW,CAAA,OAAA,EAAU,KAAA,CAAM,UAAU,CAAA,8DAAA,CAAA,GAAmE,EAAE;AAAA;AAAA,mFAAA,EAEjJ,MAAM,UAAA,IAAc,SAAS,CAAA,mCAAA,EAAsC,KAAA,CAAM,cAAc,EAAE,CAAA;AAAA,4BAAA,EAChJ,KAAA,CAAM,WAAA,GAAc,CAAA,oCAAA,EAAuC,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,mCAAA,EAAsC,KAAA,CAAM,WAAW,CAAA,MAAA,CAAA,GAAW,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MASrL,KAAK,UAAA,EAAY;AACf,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAmD,EAAC;AACzE,QAAA,MAAM,KAAA,GAAgC;AAAA,UACpC,KAAA,EAAO,QAAA;AAAA,UAAK,IAAA,EAAM,QAAA;AAAA,UAAK,KAAA,EAAO,QAAA;AAAA,UAAK,MAAA,EAAQ,QAAA;AAAA,UAAK,KAAA,EAAO,QAAA;AAAA,UACvD,IAAA,EAAM,WAAA;AAAA,UAAM,MAAA,EAAQ,WAAA;AAAA,UAAM,OAAA,EAAS,QAAA;AAAA,UAAK,IAAA,EAAM,WAAA;AAAA,UAAM,KAAA,EAAO;AAAA,SAC7D;AAEA,QAAA,MAAM,QAAA,GAAW,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AAAA;AAAA,wEAAA,EAE6B,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,aAAA,EAAgB,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,uBAAA,EAA0B,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,IAAK,KAAK,IAAI,CAAA;AAAA,mDAAA,EAC5I,KAAA,CAAM,SAAA,IAAa,SAAS,CAAA,aAAA,EAAgB,KAAA,CAAM,QAAA,IAAY,EAAE,CAAA,sCAAA,EAAyC,KAAA,CAAM,GAAA,IAAO,EAAE,CAAA,qCAAA,EAAwC,KAAK,IAAI,CAAA;AAAA;AAAA,QAAA,CAErN,CAAA,CAAE,KAAK,EAAE,CAAA;AAEV,QAAA,OAAO;AAAA;AAAA;AAAA,sCAAA,EAGyB,MAAM,OAAA,IAAW,EAAE,CAAA,sBAAA,EAAyB,KAAA,CAAM,mBAAmB,aAAa,CAAA;AAAA;AAAA,sBAAA,EAElG,QAAQ;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK1B;AAAA,MAEA,KAAK,cAAA,EAAgB;AACnB,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAiF,EAAC;AACvG,QAAA,MAAM,QAAA,GAAY,MAAM,QAAA,IAAuB,GAAA;AAC/C,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,EAAW,CAAC,CAAA;AAEjF,QAAA,MAAM,WAAA,GAAc,CAAA,kBAAA,EAAqB,KAAA,CAAM,QAAA,IAAY,SAAS,CAAA,SAAA,EAAY,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,oFAAA,EAAuF,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,CAAA,CAAA;AACnO,QAAA,MAAM,SAAA,GAAY,CAAA,6CAAA,EAAgD,KAAA,CAAM,WAAA,IAAe,SAAS,CAAA,kDAAA,CAAA;AAEhG,QAAA,OAAO;AAAA;AAAA;AAAA;AAAA,gJAAA,EAImI,KAAA,CAAM,eAAe,SAAS,CAAA;AAAA;AAAA,mCAAA,EAE3I,WAAW,CAAA;AAAA,mCAAA,EACX,WAAW,CAAA;AAAA,mCAAA,EACX,WAAW,CAAA;AAAA,mCAAA,EACX,WAAW,CAAA;AAAA;AAAA,sBAAA,EAExB,KAAA,CAAM,IAAI,CAAA,IAAA,KAAQ;AAAA;AAAA,mCAAA,EAEL,SAAS,CAAA,EAAA,EAAK,IAAA,CAAK,WAAW,CAAA;AAAA,mCAAA,EAC9B,SAAS,CAAA,sBAAA,EAAyB,IAAA,CAAK,QAAQ,CAAA;AAAA,mCAAA,EAC/C,SAAS,wBAAwB,QAAQ,CAAA,EAAG,KAAK,SAAA,CAAU,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,mCAAA,EACrE,SAAS,CAAA,qBAAA,EAAwB,QAAQ,CAAA,EAAA,CAAI,IAAA,CAAK,WAAW,IAAA,CAAK,SAAA,EAAW,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,2BAAA,CAChG,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC;AAAA,sBAAA,EACd,KAAA,CAAM,cAAc,KAAA,GAAQ;AAAA;AAAA,+CAAA,EAEH,SAAS,CAAA;AAAA,mCAAA,EACrB,SAAS,CAAA,mEAAA,EAAsE,QAAQ,GAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,2BAAA,CAAA,GAChH,EAAE;AAAA;AAAA;AAAA;AAAA,sBAAA,CAAA;AAAA,MAK3B;AAAA,MAEA;AACE,QAAA,OAAO,YAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,OAAO,WAAW,MAAM,CAAA;AAC1B;AC/WA,IAAM,IAAA,GAAqBC,wBAAA,CAAA,IAAA;AAE3B,IAAM,QAAA,GAAiBC,6BAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhD,cAAAA;AAAA,EAAe+C,wBAAA,CAAA,IAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,QAAA,CAAS,cAA4BA,wBAAA,CAAA,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoBC,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhD,cAAAA;AAAA,EAAe+C,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,qYAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;AAEhD,IAAM,WAAA,GAAoBC,6BAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC1BhD,cAAAA;AAAA,EAAe+C,wBAAA,CAAA,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD,CAAA;AACD,WAAA,CAAY,cAA4BA,wBAAA,CAAA,OAAA,CAAQ,WAAA;;;AC/BhD,IAAI,WAAA,GAAc,CAAA;AAElB,IAAM,iBAAiB,MAAc;AACnC,EAAA,WAAA,EAAA;AACA,EAAA,OAAO,CAAA,SAAA,EAAY,WAAW,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAC1E,CAAA;AAKA,IAAM,WAAA,GAAc,CAAC,OAAA,KAAoD;AACvE,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,KAAK,OAAO,CAAA;AACzB,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAE9B,IAAA,MAAM,EAAE,KAAA,EAAO,GAAG,KAAA,EAAM,GAAI,MAAA;AAC5B,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,CAAA,OAAQ,CAAA,EAAA;AACN,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AAMO,IAAM,iBAAA,GAAoB,CAAC,IAAA,KAAyB;AACzD,EAAA,WAAA,GAAc,CAAA;AAGd,EAAA,MAAM,MAAA,GAAS,IAAI,SAAA,EAAU;AAC7B,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,eAAA,CAAgB,IAAA,EAAM,WAAW,CAAA;AAGpD,EAAA,MAAM,YAAA,GAAe,GAAA,CAAI,gBAAA,CAAiB,kBAAkB,CAAA;AAE5D,EAAA,MAAM,QAAoB,EAAC;AAC3B,EAAA,MAAM,eAAyB,EAAC;AAIhC,EAAA,MAAM,qBAAgC,EAAC;AACvC,EAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,EAAA,KAAO;AAE3B,IAAA,IAAI,SAAS,EAAA,CAAG,aAAA;AAChB,IAAA,IAAI,QAAA,GAAW,KAAA;AACf,IAAA,OAAO,MAAA,EAAQ;AACb,MAAA,IAAI,MAAA,CAAO,YAAA,CAAa,gBAAgB,CAAA,EAAG;AACzC,QAAA,QAAA,GAAW,IAAA;AACX,QAAA;AAAA,MACF;AACA,MAAA,MAAA,GAAS,MAAA,CAAO,aAAA;AAAA,IAClB;AACA,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,kBAAA,CAAmB,KAAK,EAAE,CAAA;AAAA,IAC5B;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,IAAI,kBAAA,CAAmB,WAAW,CAAA,EAAG;AACnC,IAAA,MAAM,YAAY,cAAA,EAAe;AACjC,IAAA,KAAA,CAAM,SAAS,CAAA,GAAI;AAAA,MACjB,IAAA,EAAM,EAAE,YAAA,EAAc,SAAA,EAAU;AAAA,MAChC,QAAA,EAAU,KAAA;AAAA,MACV,KAAA,EAAO,EAAE,IAAA,EAAY,OAAA,EAAS,CAAA,EAAE;AAAA,MAChC,WAAA,EAAa,SAAA;AAAA,MACb,QAAQ,EAAC;AAAA,MACT,MAAA,EAAQ,KAAA;AAAA,MACR,OAAO,EAAC;AAAA,MACR,aAAa,EAAC;AAAA,MACd,MAAA,EAAQ;AAAA,KACV;AACA,IAAA,YAAA,CAAa,KAAK,SAAS,CAAA;AAAA,EAC7B,CAAA,MAAO;AACL,IAAA,KAAA,MAAW,MAAM,kBAAA,EAAoB;AACnC,MAAA,MAAM,QAAA,GAAW,EAAA,CAAG,YAAA,CAAa,gBAAgB,CAAA,IAAK,SAAA;AACtD,MAAA,MAAM,YAAA,GAAe,EAAA,CAAG,YAAA,CAAa,YAAY,CAAA,IAAK,EAAA;AACtD,MAAA,MAAM,KAAA,GAAQ,YAAY,YAAY,CAAA;AAEtC,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,MAAM,SAAS,cAAA,EAAe;AAG9B,MAAA,MAAM,QAAA,GAAW,QAAA,KAAa,WAAA,IAAe,QAAA,KAAa,OAAA;AAG1D,MAAA,MAAM,iBAA2B,EAAC;AAClC,MAAA,MAAM,oBAA4C,EAAC;AAEnD,MAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,QAAA,MAAM,SAAA,GAAY,EAAA,CAAG,gBAAA,CAAiB,0DAA0D,CAAA;AAChG,QAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,QAAA,KAAa;AAE9B,UAAA,IAAI,eAAe,QAAA,CAAS,aAAA;AAC5B,UAAA,IAAI,aAAA,GAAgB,KAAA;AACpB,UAAA,OAAO,YAAA,IAAgB,iBAAiB,EAAA,EAAI;AAC1C,YAAA,IAAI,YAAA,CAAa,YAAA,CAAa,gBAAgB,CAAA,IAAK,iBAAiB,EAAA,EAAI;AACtE,cAAA;AAAA,YACF;AACA,YAAA,IAAI,iBAAiB,EAAA,EAAI;AACvB,cAAA,aAAA,GAAgB,IAAA;AAAA,YAClB;AACA,YAAA,YAAA,GAAe,YAAA,CAAa,aAAA;AAAA,UAC9B;AACA,UAAA,IAAI,YAAA,KAAiB,IAAI,aAAA,GAAgB,IAAA;AAEzC,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,MAAM,UAAA,GAAa,QAAA,CAAS,YAAA,CAAa,gBAAgB,CAAA,IAAK,SAAA;AAC9D,YAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,YAAA,CAAa,YAAY,CAAA,IAAK,EAAA;AAC7D,YAAA,MAAM,WAAA,GAAc,YAAY,aAAa,CAAA;AAC7C,YAAA,IAAI,WAAA,EAAa;AACf,cAAA,MAAM,UAAU,cAAA,EAAe;AAC/B,cAAA,KAAA,CAAM,OAAO,CAAA,GAAI;AAAA,gBACf,IAAA,EAAM,EAAE,YAAA,EAAc,UAAA,EAAW;AAAA,gBACjC,QAAA,EAAU,KAAA;AAAA,gBACV,KAAA,EAAO,WAAA;AAAA,gBACP,WAAA,EAAa,UAAA;AAAA,gBACb,QAAQ,EAAC;AAAA,gBACT,MAAA,EAAQ,KAAA;AAAA,gBACR,OAAO,EAAC;AAAA,gBACR,aAAa,EAAC;AAAA,gBACd,MAAA,EAAQ;AAAA,eACV;AACA,cAAA,cAAA,CAAe,KAAK,OAAO,CAAA;AAAA,YAC7B;AAAA,UACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH;AAGA,MAAA,IAAI,aAAa,WAAA,EAAa;AAC5B,QAAA,MAAM,SAAS,cAAA,EAAe;AAC9B,QAAA,MAAM,UAAU,cAAA,EAAe;AAC/B,QAAA,KAAA,CAAM,MAAM,CAAA,GAAI;AAAA,UACd,IAAA,EAAM,EAAE,YAAA,EAAc,WAAA,EAAY;AAAA,UAClC,QAAA,EAAU,IAAA;AAAA,UACV,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,EAAW,SAAS,EAAA,EAAG;AAAA,UAC5C,WAAA,EAAa,WAAA;AAAA,UACb,QAAQ,EAAC;AAAA,UACT,MAAA,EAAQ,KAAA;AAAA,UACR,OAAO,EAAC;AAAA,UACR,aAAa,EAAC;AAAA,UACd,MAAA,EAAQ;AAAA,SACV;AACA,QAAA,KAAA,CAAM,OAAO,CAAA,GAAI;AAAA,UACf,IAAA,EAAM,EAAE,YAAA,EAAc,WAAA,EAAY;AAAA,UAClC,QAAA,EAAU,IAAA;AAAA,UACV,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,EAAW,SAAS,EAAA,EAAG;AAAA,UAC5C,WAAA,EAAa,WAAA;AAAA,UACb,QAAQ,EAAC;AAAA,UACT,MAAA,EAAQ,KAAA;AAAA,UACR,OAAO,EAAC;AAAA,UACR,aAAa,EAAC;AAAA,UACd,MAAA,EAAQ;AAAA,SACV;AACA,QAAA,iBAAA,CAAkB,aAAa,CAAA,GAAI,MAAA;AACnC,QAAA,iBAAA,CAAkB,cAAc,CAAA,GAAI,OAAA;AAAA,MACtC;AAEA,MAAA,KAAA,CAAM,MAAM,CAAA,GAAI;AAAA,QACd,IAAA,EAAM,EAAE,YAAA,EAAc,QAAA,EAAS;AAAA,QAC/B,QAAA;AAAA,QACA,KAAA;AAAA,QACA,WAAA,EAAa,QAAA;AAAA,QACb,QAAQ,EAAC;AAAA,QACT,MAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAa,iBAAA;AAAA,QACb,MAAA,EAAQ;AAAA,OACV;AACA,MAAA,YAAA,CAAa,KAAK,MAAM,CAAA;AAAA,IAC1B;AAAA,EACF;AAGA,EAAA,KAAA,CAAM,MAAM,CAAA,GAAI;AAAA,IACd,IAAA,EAAM,EAAE,YAAA,EAAc,OAAA,EAAQ;AAAA,IAC9B,QAAA,EAAU,IAAA;AAAA,IACV,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,EAAU;AAAA,IAC/B,WAAA,EAAa,OAAA;AAAA,IACb,QAAQ,EAAC;AAAA,IACT,MAAA,EAAQ,KAAA;AAAA,IACR,KAAA,EAAO,YAAA;AAAA,IACP,aAAa;AAAC,GAChB;AAEA,EAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAC7B,CAAA;ACxIA,IAAM,QAA8B,CAAC;AAAA,EACnC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,GAAA;AAAA,EACX,SAAA,GAAY;AACd,CAAA,KAAM;AACJ,EAAA,MAAM,QAAA,GAAWhD,yBAAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,yBAAAA,CAAM,SAAS,KAAK,CAAA;AAE5D,EAAAuB,iBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAqB;AACpC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,EAAQ;AAAA,IAClC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,IAAA,EAAM,OAAO,CAAC,CAAA;AAElB,EAAAA,iBAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA;AACjC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAC/B,MAAA,OAAO,MAAM;AACX,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,IAAA;AAAA,MACjC,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAA,iBAAU,MAAM;AACd,IAAA,IAAI,IAAA,IAAQ,QAAA,CAAS,OAAA,EAAS,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,EACvD,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,OAAO2B,qBAAA;AAAA,oBACLjD,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACX,iBAAA,EAAiB,QAAQ,aAAA,GAAgB,MAAA;AAAA,QACzC,kBAAA,EAAkB,cAAc,YAAA,GAAe,MAAA;AAAA,QAC/C,WAAA,EAAa,CAAC,CAAA,KAAM;AAClB,UAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,aAAA,EAAe,OAAA,EAAQ;AAAA,QAC5C,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,UACL,QAAA,EAAU,OAAA;AAAA,UACV,KAAA,EAAO,CAAA;AAAA,UACP,MAAA,EAAQ,IAAA;AAAA,UACR,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB,QAAA;AAAA,UAChB,eAAA,EAAiB,iBAAA;AAAA,UACjB,OAAA,EAAS;AAAA,SACX;AAAA,QAEA,QAAA,kBAAAC,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,QAAA,EAAU,EAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,eAAA,EAAiB,SAAA;AAAA,cACjB,YAAA,EAAc,MAAA;AAAA,cACd,SAAA,EAAW,0DAAA;AAAA,cACX,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,cACrB,SAAA;AAAA,cACA,SAAA,EAAW,MAAA;AAAA,cACX,OAAA,EAAS;AAAA,aACX;AAAA,YAGA,QAAA,EAAA;AAAA,8BAAAD,cAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,OAAA;AAAA,kBACT,YAAA,EAAW,aAAA;AAAA,kBACX,YAAA,EAAc,MAAM,eAAA,CAAgB,IAAI,CAAA;AAAA,kBACxC,YAAA,EAAc,MAAM,eAAA,CAAgB,KAAK,CAAA;AAAA,kBACzC,KAAA,EAAO;AAAA,oBACL,QAAA,EAAU,UAAA;AAAA,oBACV,GAAA,EAAK,MAAA;AAAA,oBACL,KAAA,EAAO,MAAA;AAAA,oBACP,KAAA,EAAO,MAAA;AAAA,oBACP,MAAA,EAAQ,MAAA;AAAA,oBACR,YAAA,EAAc,KAAA;AAAA,oBACd,MAAA,EAAQ,MAAA;AAAA,oBACR,UAAA,EAAY,eAAe,SAAA,GAAY,aAAA;AAAA,oBACvC,MAAA,EAAQ,SAAA;AAAA,oBACR,OAAA,EAAS,MAAA;AAAA,oBACT,UAAA,EAAY,QAAA;AAAA,oBACZ,cAAA,EAAgB,QAAA;AAAA,oBAChB,KAAA,EAAO,eAAe,SAAA,GAAY,SAAA;AAAA,oBAClC,QAAA,EAAU,MAAA;AAAA,oBACV,UAAA,EAAY,CAAA;AAAA,oBACZ,OAAA,EAAS,CAAA;AAAA,oBACT,UAAA,EAAY,CAAA;AAAA,oBACZ,UAAA,EAAY;AAAA,mBACd;AAAA,kBACD,QAAA,EAAA;AAAA;AAAA,eAED;AAAA,cAAA,CAGE,KAAA,IAAS,WAAA,qBACTC,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,kBAAA,EAAoB,UAAA,EAAY,CAAA,EAAE,EACtD,QAAA,EAAA;AAAA,gBAAA,KAAA,oBACCD,cAAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAG,aAAA;AAAA,oBACH,KAAA,EAAO;AAAA,sBACL,MAAA,EAAQ,CAAA;AAAA,sBACR,QAAA,EAAU,MAAA;AAAA,sBACV,UAAA,EAAY,GAAA;AAAA,sBACZ,UAAA,EAAY,KAAA;AAAA,sBACZ,KAAA,EAAO;AAAA,qBACT;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA,iBACH;AAAA,gBAED,+BACCA,cAAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,EAAA,EAAG,YAAA;AAAA,oBACH,KAAA,EAAO;AAAA,sBACL,MAAA,EAAQ,WAAA;AAAA,sBACR,QAAA,EAAU,MAAA;AAAA,sBACV,UAAA,EAAY,KAAA;AAAA,sBACZ,KAAA,EAAO;AAAA,qBACT;AAAA,oBAEC,QAAA,EAAA;AAAA;AAAA;AACH,eAAA,EAEJ,CAAA;AAAA,8BAIFA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAO,EAAE,OAAA,EAAS,uBAAuB,SAAA,EAAW,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,kBAEnE;AAAA;AAAA;AACH;AAAA;AAAA;AACF;AAAA,KACF;AAAA,IACA,QAAA,CAAS;AAAA,GACX;AACF,CAAA;AA2BA,IAAM,WAAoC,CAAC;AAAA,EACzC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIkD,gBAAS,KAAK,CAAA;AACtC,EAAA,MAAM,YAAA,GAAenD,yBAAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AAGtD,EAAAuB,iBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AAjQvC,MAAA,IAAA,EAAA;AAkQM,MAAA,IAAI,EAAA,CAAC,kBAAa,OAAA,KAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,SAAS,CAAA,CAAE,MAAA,CAAA,CAAA,UAAyB,KAAK,CAAA;AAAA,IACtE,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC9C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,OAAO,CAAA;AAAA,EAChE,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAGT,EAAAA,iBAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAqB;AACpC,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAA;AAAA,IACvC,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,OAAO,CAAA;AAC5C,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,uBACErB,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,SAAS,cAAA,EAAe;AAAA,MAGvD,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA,EAAI,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAGhD,wBACCC,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,UAAA;AAAA,cACV,GAAA,EAAK,kBAAA;AAAA,cACL,GAAI,UAAU,KAAA,GAAQ,EAAE,OAAO,CAAA,EAAE,GAAI,EAAE,IAAA,EAAM,CAAA,EAAE;AAAA,cAC/C,MAAA,EAAQ,IAAA;AAAA,cACR,QAAA,EAAU,OAAA;AAAA,cACV,eAAA,EAAiB,SAAA;AAAA,cACjB,MAAA,EAAQ,mBAAA;AAAA,cACR,YAAA,EAAc,KAAA;AAAA,cACd,SAAA,EACE,yDAAA;AAAA,cACF,OAAA,EAAS,KAAA;AAAA,cACT,OAAA,EAAS;AAAA,aACX;AAAA,YAGC,QAAA,EAAA;AAAA,cAAA,KAAA,oBACCD,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,OAAA,EAAS,iBAAA;AAAA,oBACT,QAAA,EAAU,MAAA;AAAA,oBACV,UAAA,EAAY,GAAA;AAAA,oBACZ,KAAA,EAAO,SAAA;AAAA,oBACP,aAAA,EAAe,WAAA;AAAA,oBACf,aAAA,EAAe;AAAA,mBACjB;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cAGD,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,KAAU;AACpB,gBAAA,IAAI,WAAA,IAAe,KAAA,IAAS,KAAA,CAAM,SAAA,EAAW;AAC3C,kBAAA,uBACEA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBAEC,KAAA,EAAO;AAAA,wBACL,MAAA,EAAQ,KAAA;AAAA,wBACR,eAAA,EAAiB,SAAA;AAAA,wBACjB,MAAA,EAAQ;AAAA;AACV,qBAAA;AAAA,oBALK,KAAA,CAAM;AAAA,mBAMb;AAAA,gBAEJ;AACA,gBAAA,MAAM,IAAA,GAAO,KAAA;AACb,gBAAA,uBACEA,cAAAA;AAAA,kBAAC,eAAA;AAAA,kBAAA;AAAA,oBAEC,IAAA;AAAA,oBACA,UAAU,MAAM;AACd,sBAAA,IAAA,CAAK,OAAA,EAAQ;AACb,sBAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,oBACf;AAAA,mBAAA;AAAA,kBALK,IAAA,CAAK;AAAA,iBAMZ;AAAA,cAEJ,CAAC;AAAA;AAAA;AAAA;AACH;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAM,eAAA,GAGD,CAAC,EAAE,IAAA,EAAM,UAAS,KAAM;AAC3B,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIkD,gBAAS,KAAK,CAAA;AAC5C,EAAA,uBACElD,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,QAAA;AAAA,MACT,YAAA,EAAc,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,MACnC,YAAA,EAAc,MAAM,UAAA,CAAW,KAAK,CAAA;AAAA,MACpC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,MAAA;AAAA,QACT,UAAA,EAAY,QAAA;AAAA,QACZ,GAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU,MAAA;AAAA,QACV,UAAA,EAAY,GAAA;AAAA,QACZ,YAAA,EAAc,KAAA;AAAA,QACd,MAAA,EAAQ,MAAA;AAAA,QACR,UAAA,EAAY,UAAU,SAAA,GAAY,aAAA;AAAA,QAClC,MAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAO,IAAA,CAAK,MAAA,GAAS,SAAA,GAAY,SAAA;AAAA,QACjC,SAAA,EAAW,MAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACd;AAAA,MAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,GACR;AAEJ,CAAA;AAIA,IAAM,sBAAA,GAA8C;AAAA,EAClD,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,OAAA,EAAS,UAAA;AAAA,EACT,QAAA,EAAU,MAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,YAAA,EAAc,KAAA;AAAA,EACd,MAAA,EAAQ,mBAAA;AAAA,EACR,UAAA,EAAY,SAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,eAAA,GAAuC;AAAA,EAC3C,MAAA,EAAQ,OAAA;AAAA,EACR,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ,mBAAA;AAAA,EACR,YAAA,EAAc;AAChB,CAAA;AAEA,IAAM,QAAA,GAAgC;AAAA,EACpC,OAAA,EAAS,MAAA;AAAA,EACT,QAAA,EAAU,MAAA;AAAA,EACV,UAAA,EACE,kEAAA;AAAA,EACF,UAAA,EAAY,UAAA;AAAA,EACZ,MAAA,EAAQ,CAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAgIA,IAAM,SAAS,CAAC;AAAA,EACd,UAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAmB;AACjB,EAAA,MAAM,EAAE,SAAS,KAAA,EAAO,OAAA,EAAS,SAAQ,GAAIM,cAAAA,CAAU,CAAC,KAAA,EAAO,QAAA,MAAc;AAAA,IAC3E,SAAS,KAAA,CAAM,OAAA,CAAQ,OAAA,IAAW,QAAA,CAAS,QAAQ,OAAA,EAAQ;AAAA,IAC3D,SAAS,KAAA,CAAM,OAAA,CAAQ,OAAA,IAAW,QAAA,CAAS,QAAQ,OAAA;AAAQ,GAC7D,CAAE,CAAA;AAEF,EAAA,MAAM,EAAE,OAAO,IAAA,EAAM,SAAA,EAAW,WAAW,KAAA,EAAO,aAAA,KAChD,eAAA,EAAgB;AAElB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI4C,gBAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,gBAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,gBAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,gBAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAA;AAAA,IACxC;AAAA,GACF;AAEA,EAAA,MAAM,OAAA,GAAU3B,mBAAY,MAAM;AAChC,IAAA,MAAM,IAAA,GAAO,MAAM,SAAA,EAAU;AAC7B,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,IAAA,OAAO,iBAAA,CAAkB,OAAO,aAAa,CAAA;AAAA,EAC/C,CAAA,EAAG,CAAC,KAAA,EAAO,aAAa,CAAC,CAAA;AAEzB,EAAA,MAAM,eAAe,MAAM;AAtjB7B,IAAA,IAAA,EAAA;AAujBI,IAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,aAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,EAAqB,IAAA,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,QAAQ,CAAA;AAC5C,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,QAAQ,CAAA,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AACvD,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,QAAA,GAAW,qBAAA;AACb,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AArlBlC,IAAA,IAAA,EAAA;AAslBI,IAAA,OAAA,CAAQ,WAAA,EAAY;AACpB,IAAA,OAAA,CAAQ,WAAA,CAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,CAWlB,CAAA;AACF,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,OAAA,KAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,QAAA,KAA4B;AAtmB1D,IAAA,IAAA,EAAA;AAumBI,IAAA,IAAI;AACF,MAAA,OAAA,CAAQ,WAAA,CAAY,SAAS,IAAI,CAAA;AACjC,MAAA,CAAA,EAAA,GAAA,SAAA,CAAU,cAAA,KAAV,mCAA2B,QAAA,CAAS,EAAA,CAAA;AAAA,IACtC,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,CAAC,CAAA;AAAA,IAC7C;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,MAAM,OAAA,EAAS;AACjB,IAAA,OAAOxB,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,OAAA,EAAS;AAAA,MACxC,QAAA,EAAU,OAAA;AAAA,MACV,SAAA,EAAW,OAAA;AAAA,MACX,OAAA,EAAS,iBAAA;AAAA,MACT,KAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,uBACEE,eAAAA,CAAAyB,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAzB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oFAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,kBAAAA,eAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,KAAA,EAAM,CAAA,EAC/D,CAAA;AAAA,wBAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EAAqB,CAAA;AAAA,wBAEpCA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,OAAA;AAAA,YACN,KAAA,EAAM,uBAAA;AAAA,YACN,yBACEC,eAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,SAAA;AAAA,gBACR,IAAA,EAAK,IAAA;AAAA,gBACL,SAAA,EAAU,qBAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAAD,cAAAA,CAAC+B,0BAAAA,EAAA,EAAe,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA,aAE5C;AAAA,YAEF,KAAA,EAAO;AAAA,cACL,GAAG,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,MAAc;AAAA,gBAC9B,KAAK,QAAA,CAAS,EAAA;AAAA,gBACd,KAAA,kBACE9B,eAAAA,CAACF,yBAAAA,CAAM,UAAN,EACE,QAAA,EAAA;AAAA,kBAAA,QAAA,CAAS,IAAA,IACRA,yBAAAA,CAAM,aAAA,CAAc,QAAA,CAAS,IAAA,EAAM;AAAA,oBACjC,KAAA,EAAO;AAAA,sBACL,KAAA,EAAO,EAAA;AAAA,sBACP,MAAA,EAAQ,EAAA;AAAA,sBACR,KAAA,EAAO,SAAA;AAAA,sBACP,UAAA,EAAY;AAAA;AACd,mBACD,CAAA;AAAA,kCACHE,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oCAAAD,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,UAAA,EAAY,KAAK,QAAA,EAAU,MAAA,EAAO,EAC7C,QAAA,EAAA,QAAA,CAAS,IAAA,EACZ,CAAA;AAAA,oBACC,QAAA,CAAS,+BACRA,cAAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAA,EAAO;AAAA,0BACL,QAAA,EAAU,MAAA;AAAA,0BACV,KAAA,EAAO,SAAA;AAAA,0BACP,SAAA,EAAW;AAAA,yBACb;AAAA,wBAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA;AACZ,mBAAA,EAEJ;AAAA,iBAAA,EACF,CAAA;AAAA,gBAEF,OAAA,EAAS,MAAM,kBAAA,CAAmB,QAAQ;AAAA,eAC5C,CAAE,CAAA;AAAA,cACF,GAAI,SAAA,CAAU,MAAA,GAAS,CAAA,GACnB,CAAC,EAAE,GAAA,EAAK,WAAA,EAAa,SAAA,EAAW,IAAA,EAAe,CAAA,GAC/C,EAAC;AAAA,cACL;AAAA,gBACE,GAAA,EAAK,OAAA;AAAA,gBACL,KAAA,EAAO,cAAA;AAAA,gBACP,OAAA,EAAS,iBAAA;AAAA,gBACT,MAAA,EAAQ;AAAA;AACV;AACF;AAAA;AACF,OAAA,EACF,CAAA;AAAA,sBAEAC,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,UAAU,CAAC,OAAA;AAAA,cACX,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAK;AAAA,cACpC,SAAA,EAAU,aAAA;AAAA,cACV,KAAA,EAAM,MAAA;AAAA,cAEN,QAAA,kBAAAA,cAAAA,CAACmD,iBAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA,WACjC;AAAA,0BACAnD,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,OAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,UAAU,CAAC,OAAA;AAAA,cACX,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAA,CAAQ,IAAA,EAAK;AAAA,cACpC,SAAA,EAAU,aAAA;AAAA,cACV,KAAA,EAAM,MAAA;AAAA,cAEN,QAAA,kBAAAA,cAAAA,CAACoD,iBAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AACjC,SAAA,EACF,CAAA;AAAA,wBACAnD,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,aAAA;AAAA,YACT,SAAA,EAAU,qBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACqD,eAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SACjC;AAAA,wBACApD,eAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,YAAA;AAAA,YACT,SAAA,EAAU,qBAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAAD,cAAAA,CAACsD,gBAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,cAAE;AAAA;AAAA;AAAA;AAClC,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAtD,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK,CAAA;AAAA,QAChC,KAAA,EAAM,aAAA;AAAA,QACN,WAAA,EAAY,4DAAA;AAAA,QACZ,QAAA,EAAU,GAAA;AAAA,QACV,SAAA,EAAU,MAAA;AAAA,QAET,QAAA,EAAA,KAAA,CAAM,YAAA,GACLD,yBAAAA,CAAM,aAAA,CAAc,MAAM,YAAA,EAAc;AAAA,UACtC,IAAA,EAAM,QAAA;AAAA,UACN,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK;AAAA,SACjC,CAAA,mBAEDE,eAAAA,CAAAyB,qBAAA,EACE,QAAA,EAAA;AAAA,0BAAAzB,eAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,QAAQ,GAAA,EAAK,KAAA,EAAO,YAAA,EAAc,MAAA,EAAO,EAC9D,QAAA,EAAA;AAAA,4BAAAA,eAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,UAAA;AAAA,gBACT,KAAA,EAAO,sBAAA;AAAA,gBACP,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAEtC,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAGrC,QAAA,EAAA;AAAA,kBAAA,MAAA,mBACCD,eAACuD,iBAAA,EAAA,EAAM,IAAA,EAAM,IAAI,KAAA,EAAO,EAAE,aAAa,CAAA,EAAE,EAAG,oBAE5CvD,cAAAA,CAACgB,kBAAA,EAAK,IAAA,EAAM,IAAI,KAAA,EAAO,EAAE,WAAA,EAAa,CAAA,EAAE,EAAG,CAAA;AAAA,kBAE5C,SAAS,SAAA,GAAY;AAAA;AAAA;AAAA,aACxB;AAAA,4BACAf,eAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,cAAA;AAAA,gBACT,KAAA,EAAO,sBAAA;AAAA,gBACP,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAEtC,cAAc,CAAC,CAAA,KACZ,CAAA,CAAE,aAAA,CAAc,MAAM,UAAA,GAAa,SAAA;AAAA,gBAGtC,QAAA,EAAA;AAAA,kCAAAD,cAAAA,CAACwD,wBAAS,IAAA,EAAM,EAAA,EAAI,OAAO,EAAE,WAAA,EAAa,GAAE,EAAG,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA;AAEnD,WAAA,EACF,CAAA;AAAA,0BACAxD,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,eAAA,EACV,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,QAAA,EAAW,QAAA,EAAA,QAAA,EAAS,CAAA,EAClC;AAAA,SAAA,EACF;AAAA;AAAA,KAEJ;AAAA,oBAGAA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,MAAM,cAAA,CAAe,KAAK,CAAA;AAAA,QACnC,KAAA,EAAM,eAAA;AAAA,QACN,WAAA,EAAY,oDAAA;AAAA,QACZ,QAAA,EAAU,IAAA;AAAA,QACV,SAAA,EAAU,MAAA;AAAA,QAET,QAAA,EAAA,KAAA,CAAM,aAAA,GACLD,yBAAAA,CAAM,aAAA,CAAc,MAAM,aAAA,EAAe;AAAA,UACvC,IAAA,EAAM,QAAA;AAAA,UACN,OAAA,EAAS,MAAM,cAAA,CAAe,KAAK;AAAA,SACpC,CAAA,mBAEDC,cAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAQ,EAClD,QAAA,kBAAAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,MAAA,EAAQ,QAAA;AAAA,cACR,UAAA,EAAY,gBAAA;AAAA,cACZ,QAAA,EAAU,aAAA,KAAkB,QAAA,GAAW,OAAA,GAAU;AAAA,aACnD;AAAA,YAEA,QAAA,kBAAAC,eAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,MAAA,EAAQ,mBAAA;AAAA,kBACR,YAAA,EAAc,KAAA;AAAA,kBACd,UAAA,EAAY,uBAAA;AAAA,kBACZ,QAAA,EAAU;AAAA,iBACZ;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,aAAA,KAAkB,4BACjBD,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAA,EAAO;AAAA,wBACL,MAAA,EAAQ,MAAA;AAAA,wBACR,UAAA,EAAY,SAAA;AAAA,wBACZ,OAAA,EAAS,MAAA;AAAA,wBACT,UAAA,EAAY,QAAA;AAAA,wBACZ,cAAA,EAAgB;AAAA,uBAClB;AAAA,sBAEA,QAAA,kBAAAA,cAAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,KAAA,EAAO;AAAA,4BACL,KAAA,EAAO,MAAA;AAAA,4BACP,MAAA,EAAQ,KAAA;AAAA,4BACR,UAAA,EAAY,uBAAA;AAAA,4BACZ,YAAA,EAAc;AAAA;AAChB;AAAA;AACF;AAAA,mBACF;AAAA,kCAEFA,cAAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBACC,MAAA,EAAQ,QAAA;AAAA,sBACR,KAAA,EAAM,eAAA;AAAA,sBACN,KAAA,EAAO;AAAA,wBACL,KAAA,EAAO,MAAA;AAAA,wBACP,SAAA,EAAW,OAAA;AAAA,wBACX,UAAA,EAAY,SAAA;AAAA,wBACZ,MAAA,EAAQ,MAAA;AAAA,wBACR,OAAA,EAAS,OAAA;AAAA,wBACT,MAAA,EAAQ,aAAA,KAAkB,QAAA,GAAW,OAAA,GAAU;AAAA;AACjD;AAAA;AACF;AAAA;AAAA;AACF;AAAA,SACF,EACF;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ,CAAA;AAIA,IAAM,WAAA,GAAc,CAAC,EAAE,YAAA,EAAc,WAAU,KAAM;AACnD,EAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAM,GAAI,eAAA,EAAgB;AAC9C,EAAA,MAAM,EAAE,cAAA,EAAe,GAAIM,cAAAA,CAAU,CAAC,KAAA,MAAW;AAAA;AAAA,IAE/C,cAAA,EAAgB,KAAA,CAAM,MAAA,CAAO,QAAA,CAAS,CAAC;AAAA,GACzC,CAAE,CAAA;AAEF,EAAAgB,iBAAU,MAAM;AACd,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,YAAA,CAAa,YAAY,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,UAAA,GAAajB,eAAQ,MAAM;AAC/B,IAAA,OAAO,OAAO,IAAA,CAAK,UAAU,EAAE,MAAA,CAAiB,CAAC,KAAK,CAAA,KAAM;AAC1D,MAAA,MAAM,GAAA,GAAM,UAAA,CAAW,CAAC,CAAA,CAAE,QAAA,IAAY,OAAA;AACtC,MAAA,IAAI,CAAC,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,EAAG,GAAA,CAAI,KAAK,GAAG,CAAA;AACpC,MAAA,OAAO,GAAA;AAAA,IACT,CAAA,EAAG,EAAE,CAAA;AAAA,EACP,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,uBACEL,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6DACb,QAAA,kBAAAC,eAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,aAAA,EAAe,CAAC,KAAA,KACd,YAAA,CAAa,KAAoC,CAAA;AAAA,MAEnD,SAAA,EAAU,sBAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAD,cAAAA,CAAC,SAAI,SAAA,EAAU,kCAAA,EACb,0BAAAC,eAAAA,CAAC,QAAA,EAAA,EAAS,WAAU,wBAAA,EAClB,QAAA,EAAA;AAAA,0BAAAA,eAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,YAAA;AAAA,cACN,SAAA,EAAU,0DAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,cAAAA,CAACc,kBAAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA,WAEpC;AAAA,0BACAb,eAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,YAAA;AAAA,cACN,SAAA,EAAU,0DAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAAD,cAAAA,CAACyD,oBAAA,EAAA,EAAS,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,gBAAE;AAAA;AAAA;AAAA;AAEtC,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBAEAzD,cAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,YAAA,EAAa,SAAA,EAAU,cAAA,EACxC,QAAA,kBAAAA,cAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,wBAAA,EACnB,QAAA,EAAA,KAAA,CAAM,OAAA,GACLD,yBAAAA,CAAM,aAAA,CAAc,KAAA,CAAM,OAAA,EAAS,EAAE,UAAA,EAAY,UAAA,EAAY,CAAA,mBAE7DC,cAAAA,CAAC,OAAA,EAAA,EAAQ,CAAA,EAEb,CAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,YAAA,EAAa,WAAU,cAAA,EACxC,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,QAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,aAAA,EAAA,EAAc,GACjB,CAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ,CAAA;AAIA,IAAM,mBAAA,mBAAsBA,cAAAA,CAACgC,YAAAA,EAAA,EAAQ,EAAA,EAAI,KAAA,EAAO,QAAM,IAAA,EAAC,CAAA;AAIvD,IAAM,4BAAA,GAA+B,CAAC,UAAA,KAA+B;AAp7BrE,EAAA,IAAA,EAAA;AAq7BE,EAAA,MAAM,YAAY,MAAA,CAAO,UAAA;AAAA,IAAA,CAAA,CACvB,EAAA,GAAA,UAAA,CAAW,IAAA,EAAK,CAAE,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAhC,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmC,OAAA,CAAQ,GAAA,EAAK,EAAA,CAAA,KAAO;AAAA,GACzD;AACA,EAAA,OAAO,SAAA,GAAY,KAAK,mBAAA,GAAsB,aAAA;AAChD,CAAA;AAIO,IAAM,cAA0C,CAAC;AAAA,EACtD,UAAA,EAAY,cAAA;AAAA,EACZ,eAAA,GAAkB,KAAA;AAAA,EAClB,QAAQ,EAAC;AAAA,EACT,QAAQ,EAAC;AAAA,EACT,YAAY,EAAC;AAAA,EACb,YAAY,EAAC;AAAA,EACb,YAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA,GAAQ,cAAA;AAAA,EACR,IAAA;AAAA,EACA,gBAAgB,EAAC;AAAA,EACjB,WAAA,GAAc,IAAA;AAAA,EACd,WAAA,GAAc,IAAA;AAAA,EACd,QAAA,GAAW,IAAA;AAAA,EACX,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAAM;AA/8BN,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAg9BE,EAAA,MAAM,gBAAA,GAAmB3B,eAA2B,MAAM;AACxD,IAAA,IAAI,eAAA,EAAiB,OAAO,cAAA,IAAkB,EAAC;AAC/C,IAAA,OAAO,EAAE,GAAG,kBAAA,EAAoB,GAAI,cAAA,IAAkB,EAAC,EAAG;AAAA,EAC5D,CAAA,EAAG,CAAC,cAAA,EAAgB,eAAe,CAAC,CAAA;AAEpC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI6C,eAAA;AAAA,IAChC;AAAA,GACF;AAEA,EAAA,MAAM,QAAA,GAAW7C,eAAQ,MAAM;AAC7B,IAAA,MAAM,GAAA,GAAM,cAAc,gBAAgB,CAAA;AAC1C,IAAA,GAAA,CAAI,KAAA,GAAQ,KAAA;AACZ,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,MAAM,YAAA,GAAgB,MAAM,UAAA,IAAc,UAAA;AAE1C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI6C,eAAA,CAAS,CAAC,QAAQ,CAAA;AACtD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAA;AAAA,IAAA,CACtC,EAAA,GAAA,KAAA,CAAM,WAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc;AAAA,GAChB;AAEA,EAAA5B,iBAAU,MAAM;AAt+BlB,IAAA,IAAAG,GAAAA;AAu+BI,IAAA,eAAA,CAAA,CAAgBA,GAAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAAA,IAAc,OAAO,CAAA;AAAA,EACvC,GAAG,CAAA,CAAC,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,OAAO,CAAC,CAAA;AAE1B,EAAA,MAAM,iBAAA,GAAoBpB,eAAQ,MAAM;AA1+B1C,IAAA,IAAAoB,GAAAA;AA2+BI,IAAA,IAAA,CAAIA,GAAAA,GAAA,MAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAAA,IAAc,iBAAA,EAAmB,OAAO,MAAM,MAAA,CAAO,iBAAA;AACzD,IAAA,IAAI,CAAC,cAAc,OAAO,MAAA;AAC1B,IAAA,OAAO,6BAA6B,YAAY,CAAA;AAAA,EAClD,GAAG,CAAC,YAAA,EAAA,CAAc,WAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,iBAAiB,CAAC,CAAA;AAElD,EAAA,MAAM,cAAA,GAAiBpB,eAAQ,MAAM;AACnC,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,IAAU,EAAC;AAChC,IAAA,OAAO;AAAA,MACL,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,oBAAoB,MAAA,CAAO,eAAA;AAAA,MAC3B,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,oBAAoB,MAAA,CAAO,eAAA;AAAA,MAC3B,qBAAqB,MAAA,CAAO;AAAA,KAC9B;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,CAAM,MAAM,CAAC,CAAA;AAEjB,EAAA,MAAM,WAAA,GAAcA,eAAQ,MAAM;AAChC,IAAA,MAAM,OAAA,GAA6B,EAAE,GAAI,KAAA,IAAS,EAAC,EAAG;AAEtD,IAAA,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,KAAA,EAAO,KAAK,CAAA,KAAM;AACzD,MAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,CAAA,EAAA,EAAK,KAAK,EAAE,CAAA,GAAI,KAAA;AAAA,IACrC,CAAC,CAAA;AAED,IAAA,IAAI,YAAA,EAAc,OAAA,CAAQ,WAAW,CAAA,GAAI,YAAA;AACzC,IAAA,IAAI,iBAAA,EAAmB,OAAA,CAAQ,sBAAsB,CAAA,GAAI,iBAAA;AACzD,IAAA,IAAI,MAAM,YAAA,EAAc,OAAA,CAAQ,UAAU,CAAA,GAAI,CAAA,EAAG,MAAM,YAAY,CAAA,EAAA,CAAA;AACnE,IAAA,IAAI,KAAA,CAAM,UAAA,EAAY,OAAA,CAAQ,UAAA,GAAa,KAAA,CAAM,UAAA;AAEjD,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,EAAG;AAAA,IACD,KAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,iBAAA;AAAA,IACA,KAAA,CAAM,YAAA;AAAA,IACN,KAAA,CAAM;AAAA,GACP,CAAA;AAED,EAAA,uBACEL,cAAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,gBAAA;AAAA,QACZ,KAAA;AAAA,QACA,KAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,iBAAA,EAAmB;AAAA,OACrB;AAAA,MAEA,QAAA,kBAAAA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,CAAA,uBAAA,EAA0B,UAAA,GAAa,SAAS,EAAE,CAAA,+BAAA,EAAkC,aAAa,EAAE,CAAA,CAAA;AAAA,UAC9G,KAAA,EAAO,WAAA;AAAA,UAEP,QAAA,kBAAAC,eAAAA,CAACyD,WAAA,EAAA,EAAO,QAAA,EAAoB,UAAU,YAAA,EACnC,QAAA,EAAA;AAAA,YAAA,WAAA,oBACC1D,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,UAAA;AAAA,gBACA,kBAAkB,MAAM,aAAA,CAAc,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAAA,gBACrD,YAAA;AAAA,gBACA,oBAAA,EAAsB,CAAC,UAAA,KAAe;AA9iCpD,kBAAA,IAAAyB,GAAAA;AA+iCgB,kBAAA,eAAA,CAAgB,UAAU,CAAA;AAC1B,kBAAA,CAAAA,GAAAA,GAAA,SAAA,CAAU,aAAA,KAAV,IAAA,GAAA,MAAA,GAAAA,IAAA,IAAA,CAAA,SAAA,EAA0B,UAAA,CAAA;AAAA,gBAC5B;AAAA;AAAA,aACF;AAAA,4BAEFxB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,cAAA,WAAA,oBACCD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCACb,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,YAAA;AAAA,kBACA;AAAA;AAAA,eACF,EACF,CAAA;AAAA,8BAGFA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,uCAAA;AAAA,kBACV,KAAA,EAAO;AAAA,oBACL,eAAA,EAAA,CAAA,CACE,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,gBAAA,KAAoB;AAAA,mBACtC;AAAA,kBAEA,QAAA,kBAAAA,cAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,KAAA;AAAA,sBACV,SAAS,MAAM;AACb,wBAAA,YAAA,CAAa,YAAY,CAAA;AAAA,sBAC3B,CAAA;AAAA,sBAEA,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACZ,QAAA,EAAA,YAAA,mBACCA,cAAAA,CAAC2D,UAAA,EAAA,EAAM,IAAA,EAAM,YAAA,EAAe,QAAA,EAAA,mBAAA,EAAoB,CAAA,GAC9C,WAAA,mBACF3D,cAAAA,CAAC2D,UAAA,EAAA,EAAM,IAAA,EAAM,iBAAA,CAAkB,WAAW,CAAA,EACvC,QAAA,EAAA,mBAAA,EACH,CAAA,mBAEA3D,cAAAA,CAAC2D,UAAA,EAAA,EAAO,QAAA,EAAA,cAAA,IAAkB,mBAAA,EAAoB,CAAA,EAElD;AAAA;AAAA;AACF;AAAA;AACF,aAAA,EACF;AAAA,WAAA,EACF;AAAA;AAAA;AACF;AAAA,GACF;AAEJ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\n//@ts-ignore\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import React, { createContext, useContext, useMemo } from \"react\";\r\nimport {\r\n EditorTheme,\r\n EditorSlots,\r\n ComponentRegistry,\r\n EditorCallbacks,\r\n EmailTemplate,\r\n HtmlRenderer,\r\n} from \"./types\";\r\n\r\ninterface EditorContextValue {\r\n components: ComponentRegistry;\r\n theme: EditorTheme;\r\n slots: EditorSlots;\r\n templates: EmailTemplate[];\r\n callbacks: EditorCallbacks;\r\n htmlRenderers: Record<string, HtmlRenderer>;\r\n title: string;\r\n logo?: React.ReactNode;\r\n showToolbar: boolean;\r\n showToolbox: boolean;\r\n showSettingsPanel?: boolean;\r\n}\r\n\r\nconst defaultTheme: EditorTheme = {\r\n paperWidth: 600,\r\n paperMinHeight: 800,\r\n paperBackground: \"#ffffff\",\r\n};\r\n\r\nconst EditorContext = createContext<EditorContextValue>({\r\n components: {},\r\n theme: defaultTheme,\r\n slots: {},\r\n templates: [],\r\n callbacks: {},\r\n htmlRenderers: {},\r\n title: \"\",\r\n showToolbar: true,\r\n showToolbox: true,\r\n showSettingsPanel: true,\r\n});\r\n\r\nexport const useEditorConfig = () => useContext(EditorContext);\r\n\r\ninterface EditorProviderProps {\r\n children: React.ReactNode;\r\n value: Omit<EditorContextValue, \"theme\"> & { theme: EditorTheme };\r\n}\r\n\r\nexport const EditorProvider: React.FC<EditorProviderProps> = ({\r\n children,\r\n value,\r\n}) => {\r\n const mergedTheme = useMemo(\r\n () => ({ ...defaultTheme, ...value.theme }),\r\n [value.theme],\r\n );\r\n\r\n const ctx = useMemo(\r\n () => ({ ...value, theme: mergedTheme }),\r\n [value, mergedTheme],\r\n );\r\n\r\n return (\r\n <EditorContext.Provider value={ctx}>{children}</EditorContext.Provider>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { useEditor, Element } from \"@craftjs/core\";\r\nimport {\r\n Accordion,\r\n AccordionContent,\r\n AccordionItem,\r\n AccordionTrigger,\r\n} from \"../../components/ui/accordion\";\r\nimport { useEditorConfig } from \"./context\";\r\nimport type { EditorComponentConfig } from \"./types\";\r\n\r\ninterface ToolboxItemProps {\r\n name: string;\r\n config: EditorComponentConfig;\r\n}\r\n\r\nconst ToolboxItem = ({ name, config }: ToolboxItemProps) => {\r\n const { connectors } = useEditor();\r\n const Component = config.component;\r\n const element = config.createElement ? config.createElement() : <Component />;\r\n const IconComp = config.icon;\r\n\r\n return (\r\n <div\r\n ref={(ref) => ref && connectors.create(ref, element)}\r\n className=\"flex items-center gap-3 p-2.5 border rounded-lg cursor-grab hover:bg-accent hover:border-primary/50 transition-all group\"\r\n title={config.description}\r\n >\r\n <div className=\"flex-shrink-0 w-9 h-9 rounded-md bg-muted flex items-center justify-center text-muted-foreground group-hover:bg-primary/10 group-hover:text-primary transition-colors\">\r\n {IconComp && <IconComp className=\"h-4 w-4\" />}\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <span className=\"text-sm font-medium text-foreground block truncate\">\r\n {config.label}\r\n </span>\r\n {config.description && (\r\n <span className=\"text-xs text-muted-foreground block truncate\">\r\n {config.description}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const Toolbox = () => {\r\n const { components } = useEditorConfig();\r\n\r\n // Group components by category\r\n const grouped = React.useMemo(() => {\r\n const map: Record<string, Array<[string, EditorComponentConfig]>> = {};\r\n for (const [name, config] of Object.entries(components)) {\r\n const cat = config.category || \"Other\";\r\n if (!map[cat]) map[cat] = [];\r\n map[cat].push([name, config]);\r\n }\r\n return map;\r\n }, [components]);\r\n\r\n const categoryKeys = Object.keys(grouped);\r\n\r\n return (\r\n <div className=\"p-5\">\r\n <Accordion type=\"multiple\" defaultValue={categoryKeys}>\r\n {categoryKeys.map((category, idx) => (\r\n <AccordionItem\r\n key={category}\r\n value={category}\r\n className={\r\n idx < categoryKeys.length - 1 ? \"border-b\" : \"border-b-0\"\r\n }\r\n >\r\n <AccordionTrigger className=\"py-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground hover:no-underline\">\r\n {category}\r\n </AccordionTrigger>\r\n <AccordionContent className=\"pb-3\">\r\n <div className=\"space-y-2\">\r\n {grouped[category].map(([name, config]) => (\r\n <ToolboxItem key={name} name={name} config={config} />\r\n ))}\r\n </div>\r\n {category === \"Dynamic\" && (\r\n <div className=\"mt-3 p-3 bg-muted/50 rounded-lg\">\r\n <p className=\"text-xs text-muted-foreground\">\r\n Use variables like{\" \"}\r\n <code className=\"bg-primary/10 text-primary px-1 rounded\">\r\n {\"{{first_name}}\"}\r\n </code>{\" \"}\r\n for personalized emails\r\n </p>\r\n </div>\r\n )}\r\n </AccordionContent>\r\n </AccordionItem>\r\n ))}\r\n </Accordion>\r\n </div>\r\n );\r\n};\r\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import React from \"react\";\r\nimport { useEditor } from \"@craftjs/core\";\r\nimport {\r\n Trash2,\r\n Copy,\r\n ChevronUp,\r\n ChevronDown,\r\n Layers,\r\n Paintbrush,\r\n Settings2,\r\n} from \"lucide-react\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\r\nimport {\r\n Accordion,\r\n AccordionContent,\r\n AccordionItem,\r\n AccordionTrigger,\r\n} from \"../../components/ui/accordion\";\r\nimport { useEditorConfig } from \"./context\";\r\n\r\nexport const SettingsPanel = () => {\r\n const { slots } = useEditorConfig();\r\n\r\n const { selected, actions, query } = useEditor((state) => {\r\n const [currentNodeId] = state.events.selected;\r\n let selected;\r\n\r\n if (currentNodeId) {\r\n selected = {\r\n id: currentNodeId,\r\n name: state.nodes[currentNodeId].data.name,\r\n displayName:\r\n state.nodes[currentNodeId].data.displayName ||\r\n state.nodes[currentNodeId].data.name,\r\n settings: state.nodes[currentNodeId].related?.settings,\r\n isDeletable: state.nodes[currentNodeId].data.name !== \"Paper\",\r\n parent: state.nodes[currentNodeId].data.parent,\r\n props: state.nodes[currentNodeId].data.props,\r\n };\r\n }\r\n\r\n return { selected };\r\n });\r\n\r\n const handleDuplicate = () => {\r\n if (!selected || !selected.isDeletable) return;\r\n const node = query.node(selected.id).get();\r\n const parent = node.data.parent;\r\n if (parent) {\r\n try {\r\n const serializedNode = query.node(selected.id).toSerializedNode();\r\n const parentNode = query.node(parent).get();\r\n const siblings = parentNode.data.nodes || [];\r\n const currentIndex = siblings.indexOf(selected.id);\r\n const newNode = query\r\n .parseSerializedNode(serializedNode)\r\n .toNode((node) => {\r\n node.id = `${node.data.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\r\n return node;\r\n });\r\n actions.addNodeTree(\r\n { rootNodeId: newNode.id, nodes: { [newNode.id]: newNode } },\r\n parent,\r\n currentIndex + 1,\r\n );\r\n } catch (e) {\r\n console.log(\"Duplicate error:\", e);\r\n }\r\n }\r\n };\r\n\r\n const handleMoveUp = () => {\r\n if (!selected || !selected.parent) return;\r\n const parentNode = query.node(selected.parent).get();\r\n const siblings = parentNode.data.nodes || [];\r\n const currentIndex = siblings.indexOf(selected.id);\r\n if (currentIndex > 0) {\r\n actions.move(selected.id, selected.parent, currentIndex - 1);\r\n }\r\n };\r\n\r\n const handleMoveDown = () => {\r\n if (!selected || !selected.parent) return;\r\n const parentNode = query.node(selected.parent).get();\r\n const siblings = parentNode.data.nodes || [];\r\n const currentIndex = siblings.indexOf(selected.id);\r\n if (currentIndex < siblings.length - 1) {\r\n actions.move(selected.id, selected.parent, currentIndex + 2);\r\n }\r\n };\r\n\r\n // Use custom slot for settings panel\r\n if (slots.settingsPanel && selected) {\r\n return React.createElement(slots.settingsPanel, {\r\n selectedId: selected.id,\r\n selectedName: selected.displayName || selected.name,\r\n //@ts-ignore\r\n selectedSettings: selected.settings,\r\n onDelete: selected.isDeletable\r\n ? () => actions.delete(selected.id)\r\n : undefined,\r\n onDuplicate: handleDuplicate,\r\n onMoveUp: handleMoveUp,\r\n onMoveDown: handleMoveDown,\r\n });\r\n }\r\n\r\n if (!selected) {\r\n if (slots.settingsEmptyState) {\r\n return React.createElement(slots.settingsEmptyState);\r\n }\r\n\r\n return (\r\n <div className=\"p-6 text-center\">\r\n <div className=\"w-16 h-16 mx-auto mb-4 rounded-full bg-muted flex items-center justify-center\">\r\n <Layers className=\"h-8 w-8 text-muted-foreground\" />\r\n </div>\r\n <h3 className=\"font-medium text-foreground mb-2\">\r\n No Element Selected\r\n </h3>\r\n <p className=\"text-sm text-muted-foreground\">\r\n Click on a component in the canvas to edit its properties\r\n </p>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full flex flex-col\">\r\n <div className=\"p-4 border-b bg-muted/30\">\r\n <div className=\"flex items-center justify-between mb-3\">\r\n <div className=\"flex items-center gap-2\">\r\n <div className=\"w-2 h-2 rounded-full bg-primary\" />\r\n <h3 className=\"font-semibold text-sm\">\r\n {selected.displayName || selected.name}\r\n </h3>\r\n </div>\r\n </div>\r\n\r\n {selected.isDeletable && (\r\n <div className=\"flex gap-1.5\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"flex-1 h-8 text-xs\"\r\n onClick={handleMoveUp}\r\n title=\"Move Up\"\r\n >\r\n <ChevronUp className=\"h-3.5 w-3.5 mr-1\" /> Up\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"flex-1 h-8 text-xs\"\r\n onClick={handleMoveDown}\r\n title=\"Move Down\"\r\n >\r\n <ChevronDown className=\"h-3.5 w-3.5 mr-1\" /> Down\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"flex-1 h-8 text-xs\"\r\n onClick={handleDuplicate}\r\n title=\"Duplicate\"\r\n >\r\n <Copy className=\"h-3.5 w-3.5 mr-1\" /> Copy\r\n </Button>\r\n <Button\r\n variant=\"destructive\"\r\n size=\"sm\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => actions.delete(selected.id)}\r\n title=\"Delete\"\r\n >\r\n <Trash2 className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n\r\n <ScrollArea className=\"flex-1\">\r\n <div className=\"p-4\">\r\n {selected.settings ? (\r\n <Accordion type=\"multiple\" defaultValue={[\"content\"]}>\r\n <AccordionItem value=\"content\" className=\"border-b\">\r\n <AccordionTrigger className=\"py-3 text-sm hover:no-underline\">\r\n <div className=\"flex items-center gap-2\">\r\n <Settings2 className=\"h-4 w-4 text-muted-foreground\" />\r\n <span>Properties</span>\r\n </div>\r\n </AccordionTrigger>\r\n <AccordionContent className=\"pb-4\">\r\n {React.createElement(selected.settings)}\r\n </AccordionContent>\r\n </AccordionItem>\r\n </Accordion>\r\n ) : (\r\n <div className=\"text-center text-muted-foreground text-sm py-8\">\r\n <Paintbrush className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\r\n <p>No editable properties</p>\r\n </div>\r\n )}\r\n </div>\r\n </ScrollArea>\r\n\r\n <div className=\"p-3 border-t bg-muted/20 text-xs text-muted-foreground\">\r\n <div className=\"flex justify-between\">\r\n <span>Component: {selected.name}</span>\r\n <span className=\"font-mono text-[10px]\">\r\n {selected.id.slice(0, 8)}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\nimport { useEditorConfig } from './context';\r\n\r\ninterface PaperProps {\r\n children?: React.ReactNode;\r\n background?: string;\r\n}\r\n\r\nexport const Paper = ({ children, background }: PaperProps) => {\r\n const { connectors: { connect } } = useNode();\r\n const { theme } = useEditorConfig();\r\n\r\n const bg = background || theme.paperBackground || '#ffffff';\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(ref!)}\r\n style={{\r\n width: `${theme.paperWidth || 600}px`,\r\n minHeight: `${theme.paperMinHeight || 800}px`,\r\n margin: '0 auto',\r\n backgroundColor: bg,\r\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\r\n position: 'relative',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst PaperSettings = () => {\r\n const { actions: { setProp }, background } = useNode((node) => ({\r\n background: node.data.props.background,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Email Background</label>\r\n <input\r\n type=\"color\"\r\n value={background || '#ffffff'}\r\n onChange={(e) => setProp((props: PaperProps) => (props.background = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nPaper.craft = {\r\n props: {\r\n background: '#ffffff',\r\n },\r\n related: {\r\n settings: PaperSettings,\r\n },\r\n};\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport { useNode, useEditor } from '@craftjs/core';\r\nimport { Move, ArrowUp } from 'lucide-react';\r\n\r\nexport const RenderNode = ({ render }: { render: React.ReactNode }) => {\r\n const { id } = useNode();\r\n const { actions, query, isActive } = useEditor((_, query) => ({\r\n isActive: query.getEvent('selected').contains(id),\r\n }));\r\n\r\n const {\r\n isHover,\r\n dom,\r\n name,\r\n moveable,\r\n deletable,\r\n connectors: { drag },\r\n parent,\r\n } = useNode((node) => ({\r\n isHover: node.events.hovered,\r\n dom: node.dom,\r\n name: node.data.custom.displayName || node.data.displayName,\r\n moveable: query.node(node.id).isDraggable(),\r\n deletable: query.node(node.id).isDeletable(),\r\n parent: node.data.parent,\r\n }));\r\n\r\n useEffect(() => {\r\n if (dom) {\r\n if (isActive || isHover) {\r\n dom.classList.add('component-selected');\r\n } else {\r\n dom.classList.remove('component-selected');\r\n }\r\n }\r\n }, [dom, isActive, isHover]);\r\n\r\n const getPos = useCallback((dom: HTMLElement | null) => {\r\n const { top, left, bottom } = dom ? dom.getBoundingClientRect() : { top: 0, left: 0, bottom: 0 };\r\n return {\r\n top: `${top > 0 ? top : bottom}px`,\r\n left: `${left}px`,\r\n };\r\n }, []);\r\n\r\n const scroll = useCallback(() => {\r\n const currentDOM = dom;\r\n if (!currentDOM) return;\r\n const { top, left } = getPos(currentDOM);\r\n // Update indicator position if needed\r\n }, [dom, getPos]);\r\n\r\n useEffect(() => {\r\n document.querySelector('.craftjs-renderer')?.addEventListener('scroll', scroll);\r\n return () => {\r\n document.querySelector('.craftjs-renderer')?.removeEventListener('scroll', scroll);\r\n };\r\n }, [scroll]);\r\n\r\n return (\r\n <>\r\n {isHover || isActive ? (\r\n <div\r\n className=\"absolute -top-7 left-0 bg-primary text-primary-foreground text-xs px-2 py-1 rounded flex items-center gap-1 z-50\"\r\n style={{\r\n pointerEvents: 'auto',\r\n }}\r\n >\r\n {moveable && (\r\n <span\r\n ref={(ref) => ref && drag(ref)}\r\n className=\"cursor-grab\"\r\n >\r\n <Move className=\"h-3 w-3\" />\r\n </span>\r\n )}\r\n <span>{name}</span>\r\n {parent && (\r\n <button\r\n onClick={() => actions.selectNode(parent)}\r\n className=\"ml-1 hover:bg-primary-foreground/20 rounded p-0.5\"\r\n >\r\n <ArrowUp className=\"h-3 w-3\" />\r\n </button>\r\n )}\r\n </div>\r\n ) : null}\r\n {render}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface ContainerProps {\r\n background?: string;\r\n padding?: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const Container = ({ background = '#ffffff', padding = 20, children }: ContainerProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n background,\r\n padding: `${padding}px`,\r\n minHeight: '50px',\r\n width: '100%',\r\n }}\r\n >\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nconst ContainerSettings = () => {\r\n const { actions: { setProp }, background, padding } = useNode((node) => ({\r\n background: node.data.props.background,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={background || '#ffffff'}\r\n onChange={(e) => setProp((props: ContainerProps) => (props.background = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={60}\r\n value={padding || 20}\r\n onChange={(e) => setProp((props: ContainerProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nContainer.craft = {\r\n props: {\r\n background: '#ffffff',\r\n padding: 20,\r\n },\r\n related: {\r\n settings: ContainerSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface EmailHeaderProps {\r\n logoUrl?: string;\r\n companyName?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n padding?: number;\r\n}\r\n\r\nexport const EmailHeader = ({\r\n logoUrl = '',\r\n companyName = 'Your Company',\r\n backgroundColor = '#1a1a2e',\r\n textColor = '#ffffff',\r\n padding = 24,\r\n}: EmailHeaderProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n }}\r\n >\r\n {logoUrl && (\r\n <img\r\n src={logoUrl}\r\n alt=\"Logo\"\r\n style={{ maxHeight: '60px', marginBottom: '12px' }}\r\n />\r\n )}\r\n <h1\r\n style={{\r\n color: textColor,\r\n fontSize: '24px',\r\n fontWeight: 'bold',\r\n margin: 0,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {companyName}\r\n </h1>\r\n </div>\r\n );\r\n};\r\n\r\nconst EmailHeaderSettings = () => {\r\n const { actions: { setProp }, logoUrl, companyName, backgroundColor, textColor, padding } = useNode((node) => ({\r\n logoUrl: node.data.props.logoUrl,\r\n companyName: node.data.props.companyName,\r\n backgroundColor: node.data.props.backgroundColor,\r\n textColor: node.data.props.textColor,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Company Name</label>\r\n <input\r\n type=\"text\"\r\n value={companyName || ''}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.companyName = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Logo URL</label>\r\n <input\r\n type=\"text\"\r\n value={logoUrl || ''}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.logoUrl = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://example.com/logo.png\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#1a1a2e'}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#ffffff'}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={60}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: EmailHeaderProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmailHeader.craft = {\r\n props: {\r\n logoUrl: '',\r\n companyName: 'Your Company',\r\n backgroundColor: '#1a1a2e',\r\n textColor: '#ffffff',\r\n padding: 24,\r\n },\r\n related: {\r\n settings: EmailHeaderSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface EmailFooterProps {\r\n companyName?: string;\r\n address?: string;\r\n email?: string;\r\n phone?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n padding?: number;\r\n}\r\n\r\nexport const EmailFooter = ({\r\n companyName = 'Your Company',\r\n address = '123 Business St, City, Country',\r\n email = 'info@company.com',\r\n phone = '+1 234 567 890',\r\n backgroundColor = '#f5f5f5',\r\n textColor = '#666666',\r\n padding = 24,\r\n}: EmailFooterProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n <p style={{ color: textColor, fontSize: '14px', margin: '0 0 8px 0', fontWeight: 'bold' }}>\r\n {companyName}\r\n </p>\r\n <p style={{ color: textColor, fontSize: '12px', margin: '0 0 4px 0' }}>\r\n {address}\r\n </p>\r\n <p style={{ color: textColor, fontSize: '12px', margin: '0 0 4px 0' }}>\r\n Email: {email} | Phone: {phone}\r\n </p>\r\n <p style={{ color: textColor, fontSize: '11px', margin: '12px 0 0 0', opacity: 0.7 }}>\r\n © {new Date().getFullYear()} {companyName}. All rights reserved.\r\n </p>\r\n </div>\r\n );\r\n};\r\n\r\nconst EmailFooterSettings = () => {\r\n const { actions: { setProp }, companyName, address, email, phone, backgroundColor, textColor, padding } = useNode((node) => ({\r\n companyName: node.data.props.companyName,\r\n address: node.data.props.address,\r\n email: node.data.props.email,\r\n phone: node.data.props.phone,\r\n backgroundColor: node.data.props.backgroundColor,\r\n textColor: node.data.props.textColor,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Company Name</label>\r\n <input\r\n type=\"text\"\r\n value={companyName || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.companyName = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Address</label>\r\n <input\r\n type=\"text\"\r\n value={address || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.address = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Email</label>\r\n <input\r\n type=\"email\"\r\n value={email || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.email = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Phone</label>\r\n <input\r\n type=\"text\"\r\n value={phone || ''}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.phone = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#f5f5f5'}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#666666'}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={60}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: EmailFooterProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmailFooter.craft = {\r\n props: {\r\n companyName: 'Your Company',\r\n address: '123 Business St, City, Country',\r\n email: 'info@company.com',\r\n phone: '+1 234 567 890',\r\n backgroundColor: '#f5f5f5',\r\n textColor: '#666666',\r\n padding: 24,\r\n },\r\n related: {\r\n settings: EmailFooterSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface EmailButtonProps {\r\n text?: string;\r\n href?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n borderRadius?: number;\r\n paddingX?: number;\r\n paddingY?: number;\r\n fontSize?: number;\r\n align?: 'left' | 'center' | 'right';\r\n}\r\n\r\nexport const EmailButton = ({\r\n text = 'Click Here',\r\n href = '#',\r\n backgroundColor = '#0066cc',\r\n textColor = '#ffffff',\r\n borderRadius = 6,\r\n paddingX = 24,\r\n paddingY = 12,\r\n fontSize = 16,\r\n align = 'center',\r\n}: EmailButtonProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: '10px 0',\r\n }}\r\n >\r\n <a\r\n href={href}\r\n style={{\r\n display: 'inline-block',\r\n backgroundColor,\r\n color: textColor,\r\n padding: `${paddingY}px ${paddingX}px`,\r\n borderRadius: `${borderRadius}px`,\r\n textDecoration: 'none',\r\n fontSize: `${fontSize}px`,\r\n fontWeight: 'bold',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {text}\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nconst EmailButtonSettings = () => {\r\n const { actions: { setProp }, text, href, backgroundColor, textColor, borderRadius, paddingX, paddingY, fontSize, align } = useNode((node) => ({\r\n text: node.data.props.text,\r\n href: node.data.props.href,\r\n backgroundColor: node.data.props.backgroundColor,\r\n textColor: node.data.props.textColor,\r\n borderRadius: node.data.props.borderRadius,\r\n paddingX: node.data.props.paddingX,\r\n paddingY: node.data.props.paddingY,\r\n fontSize: node.data.props.fontSize,\r\n align: node.data.props.align,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Button Text</label>\r\n <input\r\n type=\"text\"\r\n value={text || ''}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.text = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Link URL</label>\r\n <input\r\n type=\"text\"\r\n value={href || ''}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.href = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#0066cc'}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#ffffff'}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={30}\r\n value={borderRadius || 6}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.borderRadius = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={24}\r\n value={fontSize || 16}\r\n onChange={(e) => setProp((props: EmailButtonProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nEmailButton.craft = {\r\n props: {\r\n text: 'Click Here',\r\n href: '#',\r\n backgroundColor: '#0066cc',\r\n textColor: '#ffffff',\r\n borderRadius: 6,\r\n paddingX: 24,\r\n paddingY: 12,\r\n fontSize: 16,\r\n align: 'center',\r\n },\r\n related: {\r\n settings: EmailButtonSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface TextBlockProps {\r\n text?: string;\r\n fontSize?: number;\r\n fontWeight?: 'normal' | 'bold';\r\n color?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n lineHeight?: number;\r\n}\r\n\r\nexport const TextBlock = ({\r\n text = 'Enter your text here...',\r\n fontSize = 14,\r\n fontWeight = 'normal',\r\n color = '#333333',\r\n align = 'left',\r\n padding = 10,\r\n lineHeight = 1.6,\r\n}: TextBlockProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <p\r\n style={{\r\n fontSize: `${fontSize}px`,\r\n fontWeight,\r\n color,\r\n textAlign: align,\r\n lineHeight,\r\n margin: 0,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {text}\r\n </p>\r\n </div>\r\n );\r\n};\r\n\r\nconst TextBlockSettings = () => {\r\n const { actions: { setProp }, text, fontSize, fontWeight, color, align, padding, lineHeight } = useNode((node) => ({\r\n text: node.data.props.text,\r\n fontSize: node.data.props.fontSize,\r\n fontWeight: node.data.props.fontWeight,\r\n color: node.data.props.color,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n lineHeight: node.data.props.lineHeight,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Content</label>\r\n <textarea\r\n value={text || ''}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.text = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px]\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={10}\r\n max={32}\r\n value={fontSize || 14}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Weight</label>\r\n <select\r\n value={fontWeight || 'normal'}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.fontWeight = e.target.value as 'normal' | 'bold'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={color || '#333333'}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.color = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'left'}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Line Height</label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={2.5}\r\n step={0.1}\r\n value={lineHeight || 1.6}\r\n onChange={(e) => setProp((props: TextBlockProps) => (props.lineHeight = parseFloat(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{lineHeight}</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTextBlock.craft = {\r\n props: {\r\n text: 'Enter your text here...',\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n align: 'left',\r\n padding: 10,\r\n lineHeight: 1.6,\r\n },\r\n related: {\r\n settings: TextBlockSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface ImageBlockProps {\r\n src?: string;\r\n alt?: string;\r\n width?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n borderRadius?: number;\r\n}\r\n\r\nexport const ImageBlock = ({\r\n src = 'https://via.placeholder.com/400x200',\r\n alt = 'Image',\r\n width = '100%',\r\n align = 'center',\r\n padding = 10,\r\n borderRadius = 0,\r\n}: ImageBlockProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <img\r\n src={src}\r\n alt={alt}\r\n style={{\r\n width,\r\n maxWidth: '100%',\r\n borderRadius: `${borderRadius}px`,\r\n display: 'inline-block',\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nconst ImageBlockSettings = () => {\r\n const { actions: { setProp }, src, alt, width, align, padding, borderRadius } = useNode((node) => ({\r\n src: node.data.props.src,\r\n alt: node.data.props.alt,\r\n width: node.data.props.width,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n borderRadius: node.data.props.borderRadius,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Image URL</label>\r\n <input\r\n type=\"text\"\r\n value={src || ''}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.src = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://example.com/image.png\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alt Text</label>\r\n <input\r\n type=\"text\"\r\n value={alt || ''}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.alt = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Width</label>\r\n <input\r\n type=\"text\"\r\n value={width || '100%'}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.width = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"100% or 300px\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={30}\r\n value={borderRadius || 0}\r\n onChange={(e) => setProp((props: ImageBlockProps) => (props.borderRadius = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nImageBlock.craft = {\r\n props: {\r\n src: 'https://via.placeholder.com/400x200',\r\n alt: 'Image',\r\n width: '100%',\r\n align: 'center',\r\n padding: 10,\r\n borderRadius: 0,\r\n },\r\n related: {\r\n settings: ImageBlockSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface DividerProps {\r\n color?: string;\r\n thickness?: number;\r\n margin?: number;\r\n width?: string;\r\n}\r\n\r\nexport const Divider = ({\r\n color = '#e0e0e0',\r\n thickness = 1,\r\n margin = 20,\r\n width = '100%',\r\n}: DividerProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${margin}px 0`,\r\n textAlign: 'center',\r\n }}\r\n >\r\n <hr\r\n style={{\r\n border: 'none',\r\n borderTop: `${thickness}px solid ${color}`,\r\n width,\r\n margin: '0 auto',\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nconst DividerSettings = () => {\r\n const { actions: { setProp }, color, thickness, margin, width } = useNode((node) => ({\r\n color: node.data.props.color,\r\n thickness: node.data.props.thickness,\r\n margin: node.data.props.margin,\r\n width: node.data.props.width,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Color</label>\r\n <input\r\n type=\"color\"\r\n value={color || '#e0e0e0'}\r\n onChange={(e) => setProp((props: DividerProps) => (props.color = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Thickness</label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={10}\r\n value={thickness || 1}\r\n onChange={(e) => setProp((props: DividerProps) => (props.thickness = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{thickness}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Margin (Top/Bottom)</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={margin || 20}\r\n onChange={(e) => setProp((props: DividerProps) => (props.margin = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{margin}px</span>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Width</label>\r\n <input\r\n type=\"text\"\r\n value={width || '100%'}\r\n onChange={(e) => setProp((props: DividerProps) => (props.width = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"100% or 80%\"\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nDivider.craft = {\r\n props: {\r\n color: '#e0e0e0',\r\n thickness: 1,\r\n margin: 20,\r\n width: '100%',\r\n },\r\n related: {\r\n settings: DividerSettings,\r\n },\r\n};\r\n","import React from \"react\";\r\nimport { useNode } from \"@craftjs/core\";\r\n\r\ninterface InvoiceItem {\r\n description: string;\r\n quantity: number;\r\n unitPrice: number;\r\n}\r\n\r\ninterface InvoiceTableProps {\r\n items?: InvoiceItem[];\r\n headerBg?: string;\r\n headerColor?: string;\r\n borderColor?: string;\r\n showTotal?: boolean;\r\n currency?: string;\r\n}\r\n\r\nexport const InvoiceTable = ({\r\n items = [\r\n { description: \"Service Item 1\", quantity: 1, unitPrice: 100 },\r\n { description: \"Service Item 2\", quantity: 2, unitPrice: 50 },\r\n ],\r\n headerBg = \"#1a1a2e\",\r\n headerColor = \"#ffffff\",\r\n borderColor = \"#e0e0e0\",\r\n showTotal = true,\r\n currency = \"$\",\r\n}: InvoiceTableProps) => {\r\n const {\r\n connectors: { connect, drag },\r\n } = useNode();\r\n\r\n const total = items.reduce(\r\n (sum, item) => sum + item.quantity * item.unitPrice,\r\n 0,\r\n );\r\n\r\n const cellStyle: React.CSSProperties = {\r\n padding: \"12px 16px\",\r\n borderBottom: `1px solid ${borderColor}`,\r\n fontFamily: \"Arial, sans-serif\",\r\n fontSize: \"14px\",\r\n };\r\n\r\n const headerStyle: React.CSSProperties = {\r\n ...cellStyle,\r\n backgroundColor: headerBg,\r\n color: headerColor,\r\n fontWeight: \"bold\",\r\n textAlign: \"left\",\r\n };\r\n\r\n return (\r\n <div ref={(ref) => connect(drag(ref!))} style={{ padding: \"10px\" }}>\r\n <table\r\n style={{\r\n width: \"100%\",\r\n borderCollapse: \"collapse\",\r\n border: `1px solid ${borderColor}`,\r\n }}\r\n >\r\n <thead>\r\n <tr>\r\n <th style={headerStyle}>Description</th>\r\n <th style={{ ...headerStyle, textAlign: \"center\", width: \"80px\" }}>\r\n Qty\r\n </th>\r\n <th style={{ ...headerStyle, textAlign: \"right\", width: \"100px\" }}>\r\n Unit Price\r\n </th>\r\n <th style={{ ...headerStyle, textAlign: \"right\", width: \"100px\" }}>\r\n Amount\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {items.map((item, index) => (\r\n <tr key={index}>\r\n <td style={cellStyle}>{item.description}</td>\r\n <td style={{ ...cellStyle, textAlign: \"center\" }}>\r\n {item.quantity}\r\n </td>\r\n <td style={{ ...cellStyle, textAlign: \"right\" }}>\r\n {currency}\r\n {item.unitPrice.toFixed(2)}\r\n </td>\r\n <td style={{ ...cellStyle, textAlign: \"right\" }}>\r\n {currency}\r\n {(item.quantity * item.unitPrice).toFixed(2)}\r\n </td>\r\n </tr>\r\n ))}\r\n </tbody>\r\n {showTotal && (\r\n <tfoot>\r\n <tr>\r\n <td\r\n colSpan={3}\r\n style={{ ...cellStyle, textAlign: \"right\", fontWeight: \"bold\" }}\r\n >\r\n Total:\r\n </td>\r\n <td\r\n style={{\r\n ...cellStyle,\r\n textAlign: \"right\",\r\n fontWeight: \"bold\",\r\n backgroundColor: \"#f5f5f5\",\r\n }}\r\n >\r\n {currency}\r\n {total.toFixed(2)}\r\n </td>\r\n </tr>\r\n </tfoot>\r\n )}\r\n </table>\r\n </div>\r\n );\r\n};\r\n\r\nconst InvoiceTableSettings = () => {\r\n const {\r\n actions: { setProp },\r\n items,\r\n headerBg,\r\n headerColor,\r\n borderColor,\r\n showTotal,\r\n currency,\r\n } = useNode((node) => ({\r\n items: node.data.props.items,\r\n headerBg: node.data.props.headerBg,\r\n headerColor: node.data.props.headerColor,\r\n borderColor: node.data.props.borderColor,\r\n showTotal: node.data.props.showTotal,\r\n currency: node.data.props.currency,\r\n }));\r\n\r\n const updateItem = (\r\n index: number,\r\n field: keyof InvoiceItem,\r\n value: string | number,\r\n ) => {\r\n setProp((props: InvoiceTableProps) => {\r\n const newItems = [...(props.items || [])];\r\n newItems[index] = { ...newItems[index], [field]: value };\r\n props.items = newItems;\r\n });\r\n };\r\n\r\n const addItem = () => {\r\n setProp((props: InvoiceTableProps) => {\r\n props.items = [\r\n ...(props.items || []),\r\n { description: \"New Item\", quantity: 1, unitPrice: 0 },\r\n ];\r\n });\r\n };\r\n\r\n const removeItem = (index: number) => {\r\n setProp((props: InvoiceTableProps) => {\r\n props.items = (props.items || []).filter((_, i) => i !== index);\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">Invoice Items</label>\r\n {(items || []).map((item: any, index: any) => (\r\n <div key={index} className=\"mb-3 p-3 border rounded-md bg-muted/30\">\r\n <input\r\n type=\"text\"\r\n value={item.description}\r\n onChange={(e) => updateItem(index, \"description\", e.target.value)}\r\n className=\"w-full px-2 py-1 border rounded text-sm mb-2\"\r\n placeholder=\"Description\"\r\n />\r\n <div className=\"flex gap-2\">\r\n <input\r\n type=\"number\"\r\n value={item.quantity}\r\n onChange={(e) =>\r\n updateItem(index, \"quantity\", parseInt(e.target.value) || 0)\r\n }\r\n className=\"w-20 px-2 py-1 border rounded text-sm\"\r\n placeholder=\"Qty\"\r\n />\r\n <input\r\n type=\"number\"\r\n value={item.unitPrice}\r\n onChange={(e) =>\r\n updateItem(\r\n index,\r\n \"unitPrice\",\r\n parseFloat(e.target.value) || 0,\r\n )\r\n }\r\n className=\"flex-1 px-2 py-1 border rounded text-sm\"\r\n placeholder=\"Price\"\r\n />\r\n <button\r\n onClick={() => removeItem(index)}\r\n className=\"px-2 py-1 bg-destructive text-destructive-foreground rounded text-sm\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n </div>\r\n ))}\r\n <button\r\n onClick={addItem}\r\n className=\"w-full py-2 border-2 border-dashed rounded-md text-sm text-muted-foreground hover:bg-muted/50\"\r\n >\r\n + Add Item\r\n </button>\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">\r\n Currency Symbol\r\n </label>\r\n <input\r\n type=\"text\"\r\n value={currency || \"$\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) => (props.currency = e.target.value),\r\n )\r\n }\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">\r\n Header Background\r\n </label>\r\n <input\r\n type=\"color\"\r\n value={headerBg || \"#1a1a2e\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) => (props.headerBg = e.target.value),\r\n )\r\n }\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">\r\n Header Text Color\r\n </label>\r\n <input\r\n type=\"color\"\r\n value={headerColor || \"#ffffff\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) =>\r\n (props.headerColor = e.target.value),\r\n )\r\n }\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Color</label>\r\n <input\r\n type=\"color\"\r\n value={borderColor || \"#e0e0e0\"}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) =>\r\n (props.borderColor = e.target.value),\r\n )\r\n }\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n <div className=\"flex items-center gap-2\">\r\n <input\r\n type=\"checkbox\"\r\n checked={showTotal ?? true}\r\n onChange={(e) =>\r\n setProp(\r\n (props: InvoiceTableProps) =>\r\n (props.showTotal = e.target.checked),\r\n )\r\n }\r\n className=\"rounded\"\r\n />\r\n <label className=\"text-sm font-medium\">Show Total Row</label>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nInvoiceTable.craft = {\r\n props: {\r\n items: [\r\n { description: \"Service Item 1\", quantity: 1, unitPrice: 100 },\r\n { description: \"Service Item 2\", quantity: 2, unitPrice: 50 },\r\n ],\r\n headerBg: \"#1a1a2e\",\r\n headerColor: \"#ffffff\",\r\n borderColor: \"#e0e0e0\",\r\n showTotal: true,\r\n currency: \"$\",\r\n },\r\n related: {\r\n settings: InvoiceTableSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface SpacerProps {\r\n height?: number;\r\n}\r\n\r\nexport const Spacer = ({ height = 20 }: SpacerProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n height: `${height}px`,\r\n width: '100%',\r\n backgroundColor: 'transparent',\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst SpacerSettings = () => {\r\n const { actions: { setProp }, height } = useNode((node) => ({\r\n height: node.data.props.height,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Height</label>\r\n <input\r\n type=\"range\"\r\n min={5}\r\n max={100}\r\n value={height || 20}\r\n onChange={(e) => setProp((props: SpacerProps) => (props.height = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{height}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nSpacer.craft = {\r\n props: {\r\n height: 20,\r\n },\r\n related: {\r\n settings: SpacerSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface SocialLink {\r\n platform: 'facebook' | 'twitter' | 'instagram' | 'linkedin' | 'youtube' | 'tiktok';\r\n url: string;\r\n}\r\n\r\ninterface SocialLinksProps {\r\n links?: SocialLink[];\r\n iconSize?: number;\r\n iconColor?: string;\r\n backgroundColor?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n gap?: number;\r\n}\r\n\r\nconst socialIcons: Record<string, string> = {\r\n facebook: 'https://cdn-icons-png.flaticon.com/128/733/733547.png',\r\n twitter: 'https://cdn-icons-png.flaticon.com/128/733/733579.png',\r\n instagram: 'https://cdn-icons-png.flaticon.com/128/2111/2111463.png',\r\n linkedin: 'https://cdn-icons-png.flaticon.com/128/3536/3536505.png',\r\n youtube: 'https://cdn-icons-png.flaticon.com/128/1384/1384060.png',\r\n tiktok: 'https://cdn-icons-png.flaticon.com/128/3046/3046121.png',\r\n};\r\n\r\nexport const SocialLinks = ({\r\n links = [\r\n { platform: 'facebook', url: '#' },\r\n { platform: 'twitter', url: '#' },\r\n { platform: 'instagram', url: '#' },\r\n { platform: 'linkedin', url: '#' },\r\n ],\r\n iconSize = 32,\r\n iconColor = '#333333',\r\n backgroundColor = 'transparent',\r\n align = 'center',\r\n padding = 16,\r\n gap = 16,\r\n}: SocialLinksProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: `${padding}px`,\r\n backgroundColor,\r\n }}\r\n >\r\n <div style={{ display: 'inline-flex', gap: `${gap}px` }}>\r\n {links.map((link, index) => (\r\n <a\r\n key={index}\r\n href={link.url}\r\n style={{\r\n display: 'inline-block',\r\n width: iconSize,\r\n height: iconSize,\r\n }}\r\n >\r\n <img\r\n src={socialIcons[link.platform]}\r\n alt={link.platform}\r\n style={{\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'contain',\r\n }}\r\n />\r\n </a>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst SocialLinksSettings = () => {\r\n const { actions: { setProp }, links, iconSize, align, padding, gap, backgroundColor } = useNode((node) => ({\r\n links: node.data.props.links,\r\n iconSize: node.data.props.iconSize,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n gap: node.data.props.gap,\r\n backgroundColor: node.data.props.backgroundColor,\r\n }));\r\n\r\n const platforms = ['facebook', 'twitter', 'instagram', 'linkedin', 'youtube', 'tiktok'];\r\n const currentLinks = links || [];\r\n\r\n const togglePlatform = (platform: string) => {\r\n const exists = currentLinks.find((l: SocialLink) => l.platform === platform);\r\n if (exists) {\r\n setProp((props: SocialLinksProps) => {\r\n props.links = currentLinks.filter((l: SocialLink) => l.platform !== platform);\r\n });\r\n } else {\r\n setProp((props: SocialLinksProps) => {\r\n props.links = [...currentLinks, { platform: platform as SocialLink['platform'], url: '#' }];\r\n });\r\n }\r\n };\r\n\r\n const updateUrl = (platform: string, url: string) => {\r\n setProp((props: SocialLinksProps) => {\r\n props.links = currentLinks.map((l: SocialLink) =>\r\n l.platform === platform ? { ...l, url } : l\r\n );\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">Platforms</label>\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n {platforms.map((platform) => (\r\n <label key={platform} className=\"flex items-center gap-2 text-sm cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={currentLinks.some((l: SocialLink) => l.platform === platform)}\r\n onChange={() => togglePlatform(platform)}\r\n className=\"rounded\"\r\n />\r\n <span className=\"capitalize\">{platform}</span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {currentLinks.map((link: SocialLink) => (\r\n <div key={link.platform}>\r\n <label className=\"block text-sm font-medium mb-1 capitalize\">{link.platform} URL</label>\r\n <input\r\n type=\"text\"\r\n value={link.url}\r\n onChange={(e) => updateUrl(link.platform, e.target.value)}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://...\"\r\n />\r\n </div>\r\n ))}\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Icon Size</label>\r\n <input\r\n type=\"range\"\r\n min={20}\r\n max={48}\r\n value={iconSize || 32}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.iconSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{iconSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\r\n <input\r\n type=\"range\"\r\n min={8}\r\n max={32}\r\n value={gap || 16}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.gap = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#ffffff'}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 16}\r\n onChange={(e) => setProp((props: SocialLinksProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nSocialLinks.craft = {\r\n props: {\r\n links: [\r\n { platform: 'facebook', url: '#' },\r\n { platform: 'twitter', url: '#' },\r\n { platform: 'instagram', url: '#' },\r\n { platform: 'linkedin', url: '#' },\r\n ],\r\n iconSize: 32,\r\n iconColor: '#333333',\r\n backgroundColor: 'transparent',\r\n align: 'center',\r\n padding: 16,\r\n gap: 16,\r\n },\r\n related: {\r\n settings: SocialLinksSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface CountdownProps {\r\n title?: string;\r\n days?: number;\r\n hours?: number;\r\n minutes?: number;\r\n seconds?: number;\r\n backgroundColor?: string;\r\n numberColor?: string;\r\n labelColor?: string;\r\n titleColor?: string;\r\n boxBackground?: string;\r\n padding?: number;\r\n}\r\n\r\nexport const Countdown = ({\r\n title = 'Sale Ends In',\r\n days = 3,\r\n hours = 12,\r\n minutes = 45,\r\n seconds = 30,\r\n backgroundColor = '#ff6b6b',\r\n numberColor = '#ffffff',\r\n labelColor = '#ffffff',\r\n titleColor = '#ffffff',\r\n boxBackground = 'rgba(0,0,0,0.2)',\r\n padding = 24,\r\n}: CountdownProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n const TimeBox = ({ value, label }: { value: number; label: string }) => (\r\n <div\r\n style={{\r\n background: boxBackground,\r\n padding: '12px 16px',\r\n borderRadius: '8px',\r\n textAlign: 'center',\r\n minWidth: '60px',\r\n }}\r\n >\r\n <div\r\n style={{\r\n fontSize: '28px',\r\n fontWeight: 'bold',\r\n color: numberColor,\r\n fontFamily: 'Arial, sans-serif',\r\n lineHeight: 1.2,\r\n }}\r\n >\r\n {String(value).padStart(2, '0')}\r\n </div>\r\n <div\r\n style={{\r\n fontSize: '11px',\r\n color: labelColor,\r\n textTransform: 'uppercase',\r\n letterSpacing: '1px',\r\n marginTop: '4px',\r\n }}\r\n >\r\n {label}\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n }}\r\n >\r\n {title && (\r\n <h3\r\n style={{\r\n color: titleColor,\r\n fontSize: '18px',\r\n fontWeight: 'bold',\r\n marginBottom: '16px',\r\n fontFamily: 'Arial, sans-serif',\r\n margin: '0 0 16px 0',\r\n }}\r\n >\r\n {title}\r\n </h3>\r\n )}\r\n <div\r\n style={{\r\n display: 'inline-flex',\r\n gap: '12px',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <TimeBox value={days} label=\"Days\" />\r\n <TimeBox value={hours} label=\"Hours\" />\r\n <TimeBox value={minutes} label=\"Mins\" />\r\n <TimeBox value={seconds} label=\"Secs\" />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst CountdownSettings = () => {\r\n const {\r\n actions: { setProp },\r\n title,\r\n days,\r\n hours,\r\n minutes,\r\n seconds,\r\n backgroundColor,\r\n numberColor,\r\n labelColor,\r\n titleColor,\r\n boxBackground,\r\n padding,\r\n } = useNode((node) => ({\r\n title: node.data.props.title,\r\n days: node.data.props.days,\r\n hours: node.data.props.hours,\r\n minutes: node.data.props.minutes,\r\n seconds: node.data.props.seconds,\r\n backgroundColor: node.data.props.backgroundColor,\r\n numberColor: node.data.props.numberColor,\r\n labelColor: node.data.props.labelColor,\r\n titleColor: node.data.props.titleColor,\r\n boxBackground: node.data.props.boxBackground,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Title</label>\r\n <input\r\n type=\"text\"\r\n value={title || ''}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.title = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Days</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n value={days || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.days = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Hours</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n max={23}\r\n value={hours || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.hours = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Minutes</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n max={59}\r\n value={minutes || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.minutes = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Seconds</label>\r\n <input\r\n type=\"number\"\r\n min={0}\r\n max={59}\r\n value={seconds || 0}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.seconds = parseInt(e.target.value)))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#ff6b6b'}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Title Color</label>\r\n <input\r\n type=\"color\"\r\n value={titleColor || '#ffffff'}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.titleColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Number Color</label>\r\n <input\r\n type=\"color\"\r\n value={numberColor || '#ffffff'}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.numberColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={8}\r\n max={48}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: CountdownProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nCountdown.craft = {\r\n props: {\r\n title: 'Sale Ends In',\r\n days: 3,\r\n hours: 12,\r\n minutes: 45,\r\n seconds: 30,\r\n backgroundColor: '#ff6b6b',\r\n numberColor: '#ffffff',\r\n labelColor: '#ffffff',\r\n titleColor: '#ffffff',\r\n boxBackground: 'rgba(0,0,0,0.2)',\r\n padding: 24,\r\n },\r\n related: {\r\n settings: CountdownSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface PromoCodeProps {\r\n title?: string;\r\n code?: string;\r\n description?: string;\r\n backgroundColor?: string;\r\n borderColor?: string;\r\n codeBackground?: string;\r\n textColor?: string;\r\n codeColor?: string;\r\n padding?: number;\r\n borderStyle?: 'solid' | 'dashed' | 'dotted';\r\n}\r\n\r\nexport const PromoCode = ({\r\n title = '🎉 Special Offer!',\r\n code = 'SAVE20',\r\n description = 'Use this code at checkout to get 20% off your order',\r\n backgroundColor = '#fff8e1',\r\n borderColor = '#ffc107',\r\n codeBackground = '#ffffff',\r\n textColor = '#333333',\r\n codeColor = '#e65100',\r\n padding = 24,\r\n borderStyle = 'dashed',\r\n}: PromoCodeProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n border: `2px ${borderStyle} ${borderColor}`,\r\n borderRadius: '8px',\r\n padding: `${padding}px`,\r\n textAlign: 'center',\r\n margin: '10px',\r\n }}\r\n >\r\n {title && (\r\n <div\r\n style={{\r\n fontSize: '18px',\r\n fontWeight: 'bold',\r\n color: textColor,\r\n marginBottom: '12px',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {title}\r\n </div>\r\n )}\r\n \r\n <div\r\n style={{\r\n display: 'inline-block',\r\n backgroundColor: codeBackground,\r\n border: `1px solid ${borderColor}`,\r\n borderRadius: '6px',\r\n padding: '12px 24px',\r\n marginBottom: '12px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n fontSize: '24px',\r\n fontWeight: 'bold',\r\n fontFamily: 'monospace',\r\n letterSpacing: '3px',\r\n color: codeColor,\r\n }}\r\n >\r\n {code}\r\n </span>\r\n </div>\r\n\r\n {description && (\r\n <div\r\n style={{\r\n fontSize: '14px',\r\n color: textColor,\r\n fontFamily: 'Arial, sans-serif',\r\n opacity: 0.8,\r\n }}\r\n >\r\n {description}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst PromoCodeSettings = () => {\r\n const {\r\n actions: { setProp },\r\n title,\r\n code,\r\n description,\r\n backgroundColor,\r\n borderColor,\r\n codeBackground,\r\n textColor,\r\n codeColor,\r\n padding,\r\n borderStyle,\r\n } = useNode((node) => ({\r\n title: node.data.props.title,\r\n code: node.data.props.code,\r\n description: node.data.props.description,\r\n backgroundColor: node.data.props.backgroundColor,\r\n borderColor: node.data.props.borderColor,\r\n codeBackground: node.data.props.codeBackground,\r\n textColor: node.data.props.textColor,\r\n codeColor: node.data.props.codeColor,\r\n padding: node.data.props.padding,\r\n borderStyle: node.data.props.borderStyle,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Title</label>\r\n <input\r\n type=\"text\"\r\n value={title || ''}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.title = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Promo Code</label>\r\n <input\r\n type=\"text\"\r\n value={code || ''}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.code = e.target.value.toUpperCase()))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm font-mono\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Description</label>\r\n <textarea\r\n value={description || ''}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.description = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[60px]\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Style</label>\r\n <select\r\n value={borderStyle || 'dashed'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.borderStyle = e.target.value as 'solid' | 'dashed' | 'dotted'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"solid\">Solid</option>\r\n <option value=\"dashed\">Dashed</option>\r\n <option value=\"dotted\">Dotted</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#fff8e1'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Color</label>\r\n <input\r\n type=\"color\"\r\n value={borderColor || '#ffc107'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.borderColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Code Color</label>\r\n <input\r\n type=\"color\"\r\n value={codeColor || '#e65100'}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.codeColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={48}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: PromoCodeProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nPromoCode.craft = {\r\n props: {\r\n title: '🎉 Special Offer!',\r\n code: 'SAVE20',\r\n description: 'Use this code at checkout to get 20% off your order',\r\n backgroundColor: '#fff8e1',\r\n borderColor: '#ffc107',\r\n codeBackground: '#ffffff',\r\n textColor: '#333333',\r\n codeColor: '#e65100',\r\n padding: 24,\r\n borderStyle: 'dashed',\r\n },\r\n related: {\r\n settings: PromoCodeSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface TestimonialProps {\r\n quote?: string;\r\n authorName?: string;\r\n authorTitle?: string;\r\n authorImage?: string;\r\n backgroundColor?: string;\r\n quoteColor?: string;\r\n authorColor?: string;\r\n accentColor?: string;\r\n padding?: number;\r\n showQuoteIcon?: boolean;\r\n}\r\n\r\nexport const Testimonial = ({\r\n quote = \"This product has completely transformed how we do business. The results have been incredible!\",\r\n authorName = 'Sarah Johnson',\r\n authorTitle = 'CEO, TechCorp',\r\n authorImage = '',\r\n backgroundColor = '#f8f9fa',\r\n quoteColor = '#333333',\r\n authorColor = '#666666',\r\n accentColor = '#0066cc',\r\n padding = 24,\r\n showQuoteIcon = true,\r\n}: TestimonialProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n backgroundColor,\r\n padding: `${padding}px`,\r\n borderLeft: `4px solid ${accentColor}`,\r\n margin: '10px',\r\n }}\r\n >\r\n {showQuoteIcon && (\r\n <div\r\n style={{\r\n fontSize: '48px',\r\n color: accentColor,\r\n opacity: 0.3,\r\n lineHeight: 1,\r\n marginBottom: '-20px',\r\n fontFamily: 'Georgia, serif',\r\n }}\r\n >\r\n \"\r\n </div>\r\n )}\r\n \r\n <p\r\n style={{\r\n fontSize: '16px',\r\n fontStyle: 'italic',\r\n color: quoteColor,\r\n lineHeight: 1.7,\r\n margin: '0 0 16px 0',\r\n fontFamily: 'Georgia, serif',\r\n }}\r\n >\r\n {quote}\r\n </p>\r\n\r\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\r\n {authorImage && (\r\n <img\r\n src={authorImage}\r\n alt={authorName}\r\n style={{\r\n width: '48px',\r\n height: '48px',\r\n borderRadius: '50%',\r\n objectFit: 'cover',\r\n }}\r\n />\r\n )}\r\n <div>\r\n <div\r\n style={{\r\n fontSize: '14px',\r\n fontWeight: 'bold',\r\n color: quoteColor,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {authorName}\r\n </div>\r\n {authorTitle && (\r\n <div\r\n style={{\r\n fontSize: '12px',\r\n color: authorColor,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n {authorTitle}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nconst TestimonialSettings = () => {\r\n const {\r\n actions: { setProp },\r\n quote,\r\n authorName,\r\n authorTitle,\r\n authorImage,\r\n backgroundColor,\r\n quoteColor,\r\n authorColor,\r\n accentColor,\r\n padding,\r\n showQuoteIcon,\r\n } = useNode((node) => ({\r\n quote: node.data.props.quote,\r\n authorName: node.data.props.authorName,\r\n authorTitle: node.data.props.authorTitle,\r\n authorImage: node.data.props.authorImage,\r\n backgroundColor: node.data.props.backgroundColor,\r\n quoteColor: node.data.props.quoteColor,\r\n authorColor: node.data.props.authorColor,\r\n accentColor: node.data.props.accentColor,\r\n padding: node.data.props.padding,\r\n showQuoteIcon: node.data.props.showQuoteIcon,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Quote</label>\r\n <textarea\r\n value={quote || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.quote = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px]\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Author Name</label>\r\n <input\r\n type=\"text\"\r\n value={authorName || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorName = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Author Title</label>\r\n <input\r\n type=\"text\"\r\n value={authorTitle || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorTitle = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Author Image URL</label>\r\n <input\r\n type=\"text\"\r\n value={authorImage || ''}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.authorImage = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://...\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"flex items-center gap-2 text-sm cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={showQuoteIcon !== false}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.showQuoteIcon = e.target.checked))}\r\n className=\"rounded\"\r\n />\r\n Show Quote Icon\r\n </label>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Background Color</label>\r\n <input\r\n type=\"color\"\r\n value={backgroundColor || '#f8f9fa'}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.backgroundColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Accent Color</label>\r\n <input\r\n type=\"color\"\r\n value={accentColor || '#0066cc'}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.accentColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Quote Color</label>\r\n <input\r\n type=\"color\"\r\n value={quoteColor || '#333333'}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.quoteColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={48}\r\n value={padding || 24}\r\n onChange={(e) => setProp((props: TestimonialProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nTestimonial.craft = {\r\n props: {\r\n quote: \"This product has completely transformed how we do business. The results have been incredible!\",\r\n authorName: 'Sarah Johnson',\r\n authorTitle: 'CEO, TechCorp',\r\n authorImage: '',\r\n backgroundColor: '#f8f9fa',\r\n quoteColor: '#333333',\r\n authorColor: '#666666',\r\n accentColor: '#0066cc',\r\n padding: 24,\r\n showQuoteIcon: true,\r\n },\r\n related: {\r\n settings: TestimonialSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface VideoPlaceholderProps {\r\n thumbnailUrl?: string;\r\n videoUrl?: string;\r\n width?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n borderRadius?: number;\r\n playButtonColor?: string;\r\n overlayOpacity?: number;\r\n}\r\n\r\nexport const VideoPlaceholder = ({\r\n thumbnailUrl = 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=338&fit=crop',\r\n videoUrl = '#',\r\n width = '100%',\r\n align = 'center',\r\n padding = 10,\r\n borderRadius = 8,\r\n playButtonColor = '#ffffff',\r\n overlayOpacity = 0.3,\r\n}: VideoPlaceholderProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n textAlign: align,\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <a\r\n href={videoUrl}\r\n style={{\r\n display: 'inline-block',\r\n position: 'relative',\r\n width,\r\n maxWidth: '100%',\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n borderRadius: `${borderRadius}px`,\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <img\r\n src={thumbnailUrl}\r\n alt=\"Video thumbnail\"\r\n style={{\r\n width: '100%',\r\n display: 'block',\r\n }}\r\n />\r\n \r\n {/* Overlay */}\r\n <div\r\n style={{\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: `rgba(0,0,0,${overlayOpacity})`,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n {/* Play Button */}\r\n <div\r\n style={{\r\n width: '64px',\r\n height: '64px',\r\n backgroundColor: 'rgba(0,0,0,0.6)',\r\n borderRadius: '50%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n border: `3px solid ${playButtonColor}`,\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: 0,\r\n height: 0,\r\n borderTop: '12px solid transparent',\r\n borderBottom: '12px solid transparent',\r\n borderLeft: `20px solid ${playButtonColor}`,\r\n marginLeft: '4px',\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nconst VideoPlaceholderSettings = () => {\r\n const {\r\n actions: { setProp },\r\n thumbnailUrl,\r\n videoUrl,\r\n width,\r\n align,\r\n padding,\r\n borderRadius,\r\n playButtonColor,\r\n overlayOpacity,\r\n } = useNode((node) => ({\r\n thumbnailUrl: node.data.props.thumbnailUrl,\r\n videoUrl: node.data.props.videoUrl,\r\n width: node.data.props.width,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n borderRadius: node.data.props.borderRadius,\r\n playButtonColor: node.data.props.playButtonColor,\r\n overlayOpacity: node.data.props.overlayOpacity,\r\n }));\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Thumbnail URL</label>\r\n <input\r\n type=\"text\"\r\n value={thumbnailUrl || ''}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.thumbnailUrl = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://...\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Video URL</label>\r\n <input\r\n type=\"text\"\r\n value={videoUrl || ''}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.videoUrl = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"https://youtube.com/watch?v=...\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Width</label>\r\n <input\r\n type=\"text\"\r\n value={width || '100%'}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.width = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n placeholder=\"100% or 400px\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'center'}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Play Button Color</label>\r\n <input\r\n type=\"color\"\r\n value={playButtonColor || '#ffffff'}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.playButtonColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Overlay Opacity</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={0.8}\r\n step={0.1}\r\n value={overlayOpacity || 0.3}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.overlayOpacity = parseFloat(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{(overlayOpacity || 0.3).toFixed(1)}</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Border Radius</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={24}\r\n value={borderRadius || 8}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.borderRadius = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: VideoPlaceholderProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nVideoPlaceholder.craft = {\r\n props: {\r\n thumbnailUrl: 'https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=600&h=338&fit=crop',\r\n videoUrl: '#',\r\n width: '100%',\r\n align: 'center',\r\n padding: 10,\r\n borderRadius: 8,\r\n playButtonColor: '#ffffff',\r\n overlayOpacity: 0.3,\r\n },\r\n related: {\r\n settings: VideoPlaceholderSettings,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface VariableTextProps {\r\n text?: string;\r\n fontSize?: number;\r\n fontWeight?: 'normal' | 'bold';\r\n color?: string;\r\n align?: 'left' | 'center' | 'right';\r\n padding?: number;\r\n lineHeight?: number;\r\n}\r\n\r\nconst AVAILABLE_VARIABLES = [\r\n { key: '{{first_name}}', label: 'First Name', preview: 'John' },\r\n { key: '{{last_name}}', label: 'Last Name', preview: 'Doe' },\r\n { key: '{{full_name}}', label: 'Full Name', preview: 'John Doe' },\r\n { key: '{{email}}', label: 'Email', preview: 'john@example.com' },\r\n { key: '{{company}}', label: 'Company', preview: 'Acme Inc' },\r\n { key: '{{invoice_number}}', label: 'Invoice #', preview: 'INV-001' },\r\n { key: '{{invoice_date}}', label: 'Invoice Date', preview: '2024-01-15' },\r\n { key: '{{due_date}}', label: 'Due Date', preview: '2024-01-30' },\r\n { key: '{{total_amount}}', label: 'Total Amount', preview: '$1,500.00' },\r\n { key: '{{order_number}}', label: 'Order #', preview: 'ORD-12345' },\r\n];\r\n\r\nconst renderWithVariables = (text: string) => {\r\n let rendered = text;\r\n AVAILABLE_VARIABLES.forEach(({ key, preview }) => {\r\n rendered = rendered.replace(new RegExp(key.replace(/[{}]/g, '\\\\$&'), 'g'), \r\n `<span style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;\">${preview}</span>`\r\n );\r\n });\r\n return rendered;\r\n};\r\n\r\nexport const VariableText = ({\r\n text = 'Hello {{first_name}}, thank you for your order {{order_number}}!',\r\n fontSize = 14,\r\n fontWeight = 'normal',\r\n color = '#333333',\r\n align = 'left',\r\n padding = 10,\r\n lineHeight = 1.6,\r\n}: VariableTextProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${padding}px`,\r\n }}\r\n >\r\n <p\r\n style={{\r\n fontSize: `${fontSize}px`,\r\n fontWeight,\r\n color,\r\n textAlign: align,\r\n lineHeight,\r\n margin: 0,\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n dangerouslySetInnerHTML={{ __html: renderWithVariables(text) }}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nconst VariableTextSettings = () => {\r\n const { actions: { setProp }, text, fontSize, fontWeight, color, align, padding, lineHeight } = useNode((node) => ({\r\n text: node.data.props.text,\r\n fontSize: node.data.props.fontSize,\r\n fontWeight: node.data.props.fontWeight,\r\n color: node.data.props.color,\r\n align: node.data.props.align,\r\n padding: node.data.props.padding,\r\n lineHeight: node.data.props.lineHeight,\r\n }));\r\n\r\n const insertVariable = (variable: string) => {\r\n setProp((props: VariableTextProps) => {\r\n props.text = (props.text || '') + variable;\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Content</label>\r\n <textarea\r\n value={text || ''}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.text = e.target.value))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm min-h-[80px] font-mono\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">Insert Variable</label>\r\n <div className=\"flex flex-wrap gap-1\">\r\n {AVAILABLE_VARIABLES.map((v) => (\r\n <button\r\n key={v.key}\r\n onClick={() => insertVariable(v.key)}\r\n className=\"px-2 py-1 text-xs bg-primary/10 hover:bg-primary/20 text-primary rounded border border-primary/20 transition-colors\"\r\n >\r\n {v.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={10}\r\n max={32}\r\n value={fontSize || 14}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Weight</label>\r\n <select\r\n value={fontWeight || 'normal'}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.fontWeight = e.target.value as 'normal' | 'bold'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={color || '#333333'}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.color = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Alignment</label>\r\n <select\r\n value={align || 'left'}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.align = e.target.value as 'left' | 'center' | 'right'))}\r\n className=\"w-full px-3 py-2 border rounded-md text-sm\"\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 10}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Line Height</label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={2.5}\r\n step={0.1}\r\n value={lineHeight || 1.6}\r\n onChange={(e) => setProp((props: VariableTextProps) => (props.lineHeight = parseFloat(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{lineHeight}</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nVariableText.craft = {\r\n props: {\r\n text: 'Hello {{first_name}}, thank you for your order {{order_number}}!',\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n color: '#333333',\r\n align: 'left',\r\n padding: 10,\r\n lineHeight: 1.6,\r\n },\r\n related: {\r\n settings: VariableTextSettings,\r\n },\r\n};\r\n\r\nexport { AVAILABLE_VARIABLES };\r\n","import React from 'react';\r\nimport { useNode } from '@craftjs/core';\r\n\r\ninterface ListItem {\r\n icon: string;\r\n text: string;\r\n}\r\n\r\ninterface IconListProps {\r\n items?: ListItem[];\r\n iconColor?: string;\r\n textColor?: string;\r\n backgroundColor?: string;\r\n fontSize?: number;\r\n iconSize?: number;\r\n gap?: number;\r\n padding?: number;\r\n}\r\n\r\nconst ICONS = {\r\n check: '✓',\r\n star: '★',\r\n arrow: '→',\r\n bullet: '•',\r\n heart: '❤',\r\n fire: '🔥',\r\n rocket: '🚀',\r\n sparkle: '✨',\r\n gift: '🎁',\r\n clock: '⏰',\r\n};\r\n\r\nexport const IconList = ({\r\n items = [\r\n { icon: 'check', text: 'Fast and reliable delivery' },\r\n { icon: 'check', text: 'Premium quality products' },\r\n { icon: 'check', text: '24/7 customer support' },\r\n { icon: 'check', text: '30-day money back guarantee' },\r\n ],\r\n iconColor = '#22c55e',\r\n textColor = '#333333',\r\n backgroundColor = 'transparent',\r\n fontSize = 14,\r\n iconSize = 18,\r\n gap = 12,\r\n padding = 16,\r\n}: IconListProps) => {\r\n const { connectors: { connect, drag } } = useNode();\r\n\r\n return (\r\n <div\r\n ref={(ref) => connect(drag(ref!))}\r\n style={{\r\n padding: `${padding}px`,\r\n backgroundColor,\r\n }}\r\n >\r\n <ul\r\n style={{\r\n listStyle: 'none',\r\n margin: 0,\r\n padding: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: `${gap}px`,\r\n }}\r\n >\r\n {items.map((item, index) => (\r\n <li\r\n key={index}\r\n style={{\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: '10px',\r\n fontFamily: 'Arial, sans-serif',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: iconColor,\r\n fontSize: `${iconSize}px`,\r\n lineHeight: 1.4,\r\n flexShrink: 0,\r\n }}\r\n >\r\n {ICONS[item.icon as keyof typeof ICONS] || item.icon}\r\n </span>\r\n <span\r\n style={{\r\n color: textColor,\r\n fontSize: `${fontSize}px`,\r\n lineHeight: 1.5,\r\n }}\r\n >\r\n {item.text}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nconst IconListSettings = () => {\r\n const {\r\n actions: { setProp },\r\n items,\r\n iconColor,\r\n textColor,\r\n backgroundColor,\r\n fontSize,\r\n iconSize,\r\n gap,\r\n padding,\r\n } = useNode((node) => ({\r\n items: node.data.props.items,\r\n iconColor: node.data.props.iconColor,\r\n textColor: node.data.props.textColor,\r\n backgroundColor: node.data.props.backgroundColor,\r\n fontSize: node.data.props.fontSize,\r\n iconSize: node.data.props.iconSize,\r\n gap: node.data.props.gap,\r\n padding: node.data.props.padding,\r\n }));\r\n\r\n const currentItems = items || [];\r\n\r\n const updateItem = (index: number, field: 'icon' | 'text', value: string) => {\r\n setProp((props: IconListProps) => {\r\n props.items = currentItems.map((item: ListItem, i: number) =>\r\n i === index ? { ...item, [field]: value } : item\r\n );\r\n });\r\n };\r\n\r\n const addItem = () => {\r\n setProp((props: IconListProps) => {\r\n props.items = [...currentItems, { icon: 'check', text: 'New item' }];\r\n });\r\n };\r\n\r\n const removeItem = (index: number) => {\r\n setProp((props: IconListProps) => {\r\n props.items = currentItems.filter((_: ListItem, i: number) => i !== index);\r\n });\r\n };\r\n\r\n return (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium mb-2\">List Items</label>\r\n <div className=\"space-y-3\">\r\n {currentItems.map((item: ListItem, index: number) => (\r\n <div key={index} className=\"flex gap-2 items-start\">\r\n <select\r\n value={item.icon}\r\n onChange={(e) => updateItem(index, 'icon', e.target.value)}\r\n className=\"w-16 px-2 py-2 border rounded-md text-sm\"\r\n >\r\n {Object.entries(ICONS).map(([key, icon]) => (\r\n <option key={key} value={key}>{icon}</option>\r\n ))}\r\n </select>\r\n <input\r\n type=\"text\"\r\n value={item.text}\r\n onChange={(e) => updateItem(index, 'text', e.target.value)}\r\n className=\"flex-1 px-3 py-2 border rounded-md text-sm\"\r\n />\r\n <button\r\n onClick={() => removeItem(index)}\r\n className=\"px-2 py-2 text-destructive hover:bg-destructive/10 rounded\"\r\n >\r\n ×\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n <button\r\n onClick={addItem}\r\n className=\"mt-2 w-full py-2 text-sm border border-dashed rounded-md hover:bg-accent transition-colors\"\r\n >\r\n + Add Item\r\n </button>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Icon Color</label>\r\n <input\r\n type=\"color\"\r\n value={iconColor || '#22c55e'}\r\n onChange={(e) => setProp((props: IconListProps) => (props.iconColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={textColor || '#333333'}\r\n onChange={(e) => setProp((props: IconListProps) => (props.textColor = e.target.value))}\r\n className=\"w-full h-10 rounded border cursor-pointer\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Font Size</label>\r\n <input\r\n type=\"range\"\r\n min={12}\r\n max={20}\r\n value={fontSize || 14}\r\n onChange={(e) => setProp((props: IconListProps) => (props.fontSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{fontSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Icon Size</label>\r\n <input\r\n type=\"range\"\r\n min={14}\r\n max={28}\r\n value={iconSize || 18}\r\n onChange={(e) => setProp((props: IconListProps) => (props.iconSize = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{iconSize}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Gap</label>\r\n <input\r\n type=\"range\"\r\n min={4}\r\n max={24}\r\n value={gap || 12}\r\n onChange={(e) => setProp((props: IconListProps) => (props.gap = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{gap}px</span>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium mb-1\">Padding</label>\r\n <input\r\n type=\"range\"\r\n min={0}\r\n max={40}\r\n value={padding || 16}\r\n onChange={(e) => setProp((props: IconListProps) => (props.padding = parseInt(e.target.value)))}\r\n className=\"w-full\"\r\n />\r\n <span className=\"text-sm text-muted-foreground\">{padding}px</span>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nIconList.craft = {\r\n props: {\r\n items: [\r\n { icon: 'check', text: 'Fast and reliable delivery' },\r\n { icon: 'check', text: 'Premium quality products' },\r\n { icon: 'check', text: '24/7 customer support' },\r\n { icon: 'check', text: '30-day money back guarantee' },\r\n ],\r\n iconColor: '#22c55e',\r\n textColor: '#333333',\r\n backgroundColor: 'transparent',\r\n fontSize: 14,\r\n iconSize: 18,\r\n gap: 12,\r\n padding: 16,\r\n },\r\n related: {\r\n settings: IconListSettings,\r\n },\r\n};\r\n","import React from \"react\";\r\nimport { Element } from \"@craftjs/core\";\r\nimport {\r\n PanelTop,\r\n PanelBottom,\r\n LayoutTemplate,\r\n Columns,\r\n ArrowUpDown,\r\n Minus,\r\n Type,\r\n Image,\r\n MousePointer2,\r\n PlayCircle,\r\n List,\r\n Share2,\r\n Timer,\r\n Tag,\r\n Quote,\r\n Variable,\r\n Table,\r\n} from \"lucide-react\";\r\n\r\nimport { Container } from \"./components/Container\";\r\nimport { EmailHeader } from \"./components/EmailHeader\";\r\nimport { EmailFooter } from \"./components/EmailFooter\";\r\nimport { EmailButton } from \"./components/EmailButton\";\r\nimport { TextBlock } from \"./components/TextBlock\";\r\nimport { ImageBlock } from \"./components/ImageBlock\";\r\nimport { Divider } from \"./components/Divider\";\r\nimport { InvoiceTable } from \"./components/InvoiceTable\";\r\nimport { Spacer } from \"./components/Spacer\";\r\nimport { SocialLinks } from \"./components/SocialLinks\";\r\n// import { TwoColumn } from './components/TwoColumn';\r\nimport { RawHtml } from \"./components/RawHtml\";\r\nimport { Countdown } from \"./components/Countdown\";\r\nimport { PromoCode } from \"./components/PromoCode\";\r\nimport { Testimonial } from \"./components/Testimonial\";\r\nimport { VideoPlaceholder } from \"./components/VideoPlaceholder\";\r\nimport { VariableText } from \"./components/VariableText\";\r\nimport { IconList } from \"./components/IconList\";\r\n\r\nimport type { ComponentRegistry } from \"./types\";\r\n\r\nexport const DEFAULT_COMPONENTS: ComponentRegistry = {\r\n EmailHeader: {\r\n component: EmailHeader,\r\n label: \"Header\",\r\n description: \"Email header with logo\",\r\n icon: PanelTop,\r\n category: \"Layout\",\r\n },\r\n EmailFooter: {\r\n component: EmailFooter,\r\n label: \"Footer\",\r\n description: \"Contact info & copyright\",\r\n icon: PanelBottom,\r\n category: \"Layout\",\r\n },\r\n Container: {\r\n component: Container,\r\n label: \"Container\",\r\n description: \"Group elements together\",\r\n icon: LayoutTemplate,\r\n category: \"Layout\",\r\n createElement: () => <Element is={Container} canvas />,\r\n },\r\n\r\n Spacer: {\r\n component: Spacer,\r\n label: \"Spacer\",\r\n description: \"Add vertical space\",\r\n icon: ArrowUpDown,\r\n category: \"Layout\",\r\n },\r\n Divider: {\r\n component: Divider,\r\n label: \"Divider\",\r\n description: \"Horizontal line separator\",\r\n icon: Minus,\r\n category: \"Layout\",\r\n },\r\n TextBlock: {\r\n component: TextBlock,\r\n label: \"Text Block\",\r\n description: \"Paragraph or heading\",\r\n icon: Type,\r\n category: \"Content\",\r\n },\r\n ImageBlock: {\r\n component: ImageBlock,\r\n label: \"Image\",\r\n description: \"Add photos or graphics\",\r\n icon: Image,\r\n category: \"Content\",\r\n },\r\n EmailButton: {\r\n component: EmailButton,\r\n label: \"Button\",\r\n description: \"Call-to-action button\",\r\n icon: MousePointer2,\r\n category: \"Content\",\r\n },\r\n VideoPlaceholder: {\r\n component: VideoPlaceholder,\r\n label: \"Video\",\r\n description: \"Video thumbnail with play\",\r\n icon: PlayCircle,\r\n category: \"Content\",\r\n },\r\n IconList: {\r\n component: IconList,\r\n label: \"Icon List\",\r\n description: \"List with icons\",\r\n icon: List,\r\n category: \"Content\",\r\n },\r\n SocialLinks: {\r\n component: SocialLinks,\r\n label: \"Social Links\",\r\n description: \"Social media icons\",\r\n icon: Share2,\r\n category: \"Content\",\r\n },\r\n Countdown: {\r\n component: Countdown,\r\n label: \"Countdown\",\r\n description: \"Urgency timer display\",\r\n icon: Timer,\r\n category: \"Marketing\",\r\n },\r\n PromoCode: {\r\n component: PromoCode,\r\n label: \"Promo Code\",\r\n description: \"Discount code box\",\r\n icon: Tag,\r\n category: \"Marketing\",\r\n },\r\n Testimonial: {\r\n component: Testimonial,\r\n label: \"Testimonial\",\r\n description: \"Customer review quote\",\r\n icon: Quote,\r\n category: \"Marketing\",\r\n },\r\n VariableText: {\r\n component: VariableText,\r\n label: \"Variable Text\",\r\n description: \"Personalized content\",\r\n icon: Variable,\r\n category: \"Dynamic\",\r\n },\r\n InvoiceTable: {\r\n component: InvoiceTable,\r\n label: \"Invoice Table\",\r\n description: \"Itemized billing table\",\r\n icon: Table,\r\n category: \"Invoice\",\r\n },\r\n};\r\n\r\n/** Helper to get the Craft.js resolver map from a ComponentRegistry */\r\nexport const buildResolver = (\r\n registry: ComponentRegistry,\r\n): Record<string, React.ComponentType<any>> => {\r\n const resolver: Record<string, React.ComponentType<any>> = {};\r\n for (const [name, config] of Object.entries(registry)) {\r\n resolver[name] = config.component;\r\n }\r\n return resolver;\r\n};\r\n\r\n/** Helper to get unique sorted categories from a ComponentRegistry */\r\nexport const getCategories = (registry: ComponentRegistry): string[] => {\r\n const cats = new Set<string>();\r\n for (const config of Object.values(registry)) {\r\n if (config.category) cats.add(config.category);\r\n }\r\n return Array.from(cats);\r\n};\r\n","import { SerializedNodes } from '@craftjs/core';\nimport type { HtmlRenderer } from '../components/editor';\n\ninterface NodeData {\n type: { resolvedName: string };\n props: Record<string, unknown>;\n nodes: string[];\n linkedNodes?: Record<string, string>;\n}\n\nexport const generateEmailHtml = (\n nodes: SerializedNodes,\n customRenderers?: Record<string, HtmlRenderer>\n): string => {\n const renderNode = (nodeId: string): string => {\n const node = nodes[nodeId] as unknown as NodeData;\n if (!node) return '';\n\n const { type, props, nodes: childNodes, linkedNodes } = node;\n const typeName = type.resolvedName;\n\n let childrenHtml = '';\n if (childNodes && childNodes.length > 0) {\n childrenHtml = childNodes.map((childId: string) => renderNode(childId)).join('');\n }\n if (linkedNodes) {\n Object.values(linkedNodes).forEach((linkedId: string) => {\n childrenHtml += renderNode(linkedId);\n });\n }\n\n // Check custom renderers first\n if (customRenderers?.[typeName]) {\n const result = customRenderers[typeName](typeName, props, childrenHtml, linkedNodes);\n if (result !== null) return result;\n }\n\n switch (typeName) {\n case 'Paper':\n return `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <title>Email Template</title>\n <!--[if mso]>\n <noscript>\n <xml>\n <o:OfficeDocumentSettings>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n </xml>\n </noscript>\n <![endif]-->\n</head>\n<body style=\"margin: 0; padding: 0; background-color: #f4f4f4; font-family: Arial, sans-serif;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color: #f4f4f4;\">\n <tr>\n <td align=\"center\" style=\"padding: 20px 0;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"background-color: ${props.background || '#ffffff'}; max-width: 600px;\">\n <tr>\n <td>\n${childrenHtml}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>`;\n\n case 'Container':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.background || '#ffffff'}; padding: ${props.padding || 20}px;\">\n${childrenHtml}\n </td>\n </tr>\n </table>`;\n\n case 'TwoColumn': {\n const leftWidth = (props.leftWidth as number) || 50;\n const rightWidth = 100 - leftWidth;\n const leftHtml = linkedNodes?.['left-column'] ? renderNode(linkedNodes['left-column']) : '';\n const rightHtml = linkedNodes?.['right-column'] ? renderNode(linkedNodes['right-column']) : '';\n \n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"background-color: ${props.backgroundColor || '#ffffff'}; padding: ${props.padding || 10}px;\">\n <tr>\n <td width=\"${leftWidth}%\" valign=\"top\" style=\"padding-right: ${(props.gap as number) / 2 || 10}px;\">\n ${leftHtml}\n </td>\n <td width=\"${rightWidth}%\" valign=\"top\" style=\"padding-left: ${(props.gap as number) / 2 || 10}px;\">\n ${rightHtml}\n </td>\n </tr>\n </table>`;\n }\n\n case 'EmailHeader':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#1a1a2e'}; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.logoUrl ? `<img src=\"${props.logoUrl}\" alt=\"Logo\" style=\"max-height: 60px; margin-bottom: 12px;\">` : ''}\n <h1 style=\"color: ${props.textColor || '#ffffff'}; font-size: 24px; font-weight: bold; margin: 0; font-family: Arial, sans-serif;\">${props.companyName || 'Your Company'}</h1>\n </td>\n </tr>\n </table>`;\n\n case 'EmailFooter':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#f5f5f5'}; padding: ${props.padding || 24}px; text-align: center; font-family: Arial, sans-serif;\">\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 14px; margin: 0 0 8px 0; font-weight: bold;\">${props.companyName || 'Your Company'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 12px; margin: 0 0 4px 0;\">${props.address || '123 Business St, City, Country'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 12px; margin: 0 0 4px 0;\">Email: ${props.email || 'info@company.com'} | Phone: ${props.phone || '+1 234 567 890'}</p>\n <p style=\"color: ${props.textColor || '#666666'}; font-size: 11px; margin: 12px 0 0 0; opacity: 0.7;\">© ${new Date().getFullYear()} ${props.companyName || 'Your Company'}. All rights reserved.</p>\n </td>\n </tr>\n </table>`;\n\n case 'EmailButton':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: 10px 0;\">\n <a href=\"${props.href || '#'}\" style=\"display: inline-block; background-color: ${props.backgroundColor || '#0066cc'}; color: ${props.textColor || '#ffffff'}; padding: ${props.paddingY || 12}px ${props.paddingX || 24}px; border-radius: ${props.borderRadius || 6}px; text-decoration: none; font-size: ${props.fontSize || 16}px; font-weight: bold; font-family: Arial, sans-serif;\">${props.text || 'Click Here'}</a>\n </td>\n </tr>\n </table>`;\n\n case 'TextBlock':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 10}px;\">\n <p style=\"font-size: ${props.fontSize || 14}px; font-weight: ${props.fontWeight || 'normal'}; color: ${props.color || '#333333'}; text-align: ${props.align || 'left'}; line-height: ${props.lineHeight || 1.6}; margin: 0; font-family: Arial, sans-serif;\">${props.text || 'Enter your text here...'}</p>\n </td>\n </tr>\n </table>`;\n\n case 'VariableText':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 10}px;\">\n <p style=\"font-size: ${props.fontSize || 14}px; font-weight: ${props.fontWeight || 'normal'}; color: ${props.color || '#333333'}; text-align: ${props.align || 'left'}; line-height: ${props.lineHeight || 1.6}; margin: 0; font-family: Arial, sans-serif;\">${props.text || ''}</p>\n </td>\n </tr>\n </table>`;\n\n case 'ImageBlock':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 10}px;\">\n <img src=\"${props.src || 'https://via.placeholder.com/400x200'}\" alt=\"${props.alt || 'Image'}\" style=\"width: ${props.width || '100%'}; max-width: 100%; border-radius: ${props.borderRadius || 0}px; display: inline-block;\">\n </td>\n </tr>\n </table>`;\n\n case 'VideoPlaceholder':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 10}px;\">\n <a href=\"${props.videoUrl || '#'}\" style=\"display: inline-block; position: relative; text-decoration: none;\">\n <img src=\"${props.thumbnailUrl || 'https://via.placeholder.com/600x338'}\" alt=\"Video thumbnail\" style=\"width: ${props.width || '100%'}; max-width: 100%; border-radius: ${props.borderRadius || 8}px; display: block;\">\n <div style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 64px; height: 64px; background: rgba(0,0,0,0.6); border-radius: 50%; border: 3px solid ${props.playButtonColor || '#ffffff'};\">\n <div style=\"position: absolute; top: 50%; left: 50%; transform: translate(-40%, -50%); width: 0; height: 0; border-top: 12px solid transparent; border-bottom: 12px solid transparent; border-left: 20px solid ${props.playButtonColor || '#ffffff'};\"></div>\n </div>\n </a>\n </td>\n </tr>\n </table>`;\n\n case 'Divider':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.margin || 20}px 0; text-align: center;\">\n <hr style=\"border: none; border-top: ${props.thickness || 1}px solid ${props.color || '#e0e0e0'}; width: ${props.width || '100%'}; margin: 0 auto;\">\n </td>\n </tr>\n </table>`;\n\n case 'Spacer':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"height: ${props.height || 20}px; line-height: ${props.height || 20}px; font-size: 1px;\">&nbsp;</td>\n </tr>\n </table>`;\n\n case 'SocialLinks': {\n const links = (props.links as Array<{ platform: string; url: string }>) || [];\n const iconSize = (props.iconSize as number) || 32;\n const gap = (props.gap as number) || 16;\n \n const socialIcons: Record<string, string> = {\n facebook: 'https://cdn-icons-png.flaticon.com/128/733/733547.png',\n twitter: 'https://cdn-icons-png.flaticon.com/128/733/733579.png',\n instagram: 'https://cdn-icons-png.flaticon.com/128/2111/2111463.png',\n linkedin: 'https://cdn-icons-png.flaticon.com/128/3536/3536505.png',\n youtube: 'https://cdn-icons-png.flaticon.com/128/1384/1384060.png',\n tiktok: 'https://cdn-icons-png.flaticon.com/128/3046/3046121.png',\n };\n\n const iconsHtml = links.map((link) => `\n <a href=\"${link.url}\" style=\"display: inline-block; margin: 0 ${gap / 2}px;\">\n <img src=\"${socialIcons[link.platform] || ''}\" alt=\"${link.platform}\" style=\"width: ${iconSize}px; height: ${iconSize}px;\">\n </a>\n `).join('');\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"text-align: ${props.align || 'center'}; padding: ${props.padding || 16}px; background-color: ${props.backgroundColor || 'transparent'};\">\n ${iconsHtml}\n </td>\n </tr>\n </table>`;\n }\n\n case 'Countdown': {\n const boxStyle = `background: ${props.boxBackground || 'rgba(0,0,0,0.2)'}; padding: 12px 16px; border-radius: 8px; text-align: center; display: inline-block; margin: 0 6px;`;\n const numberStyle = `font-size: 28px; font-weight: bold; color: ${props.numberColor || '#ffffff'}; font-family: Arial, sans-serif;`;\n const labelStyle = `font-size: 11px; color: ${props.labelColor || '#ffffff'}; text-transform: uppercase; letter-spacing: 1px;`;\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"background-color: ${props.backgroundColor || '#ff6b6b'}; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.title ? `<h3 style=\"color: ${props.titleColor || '#ffffff'}; font-size: 18px; font-weight: bold; margin: 0 0 16px 0; font-family: Arial, sans-serif;\">${props.title}</h3>` : ''}\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n <tr>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.days || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Days</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.hours || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Hours</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.minutes || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Mins</div>\n </td>\n <td style=\"${boxStyle}\">\n <div style=\"${numberStyle}\">${String(props.seconds || 0).padStart(2, '0')}</div>\n <div style=\"${labelStyle}\">Secs</div>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n case 'PromoCode':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <div style=\"background-color: ${props.backgroundColor || '#fff8e1'}; border: 2px ${props.borderStyle || 'dashed'} ${props.borderColor || '#ffc107'}; border-radius: 8px; padding: ${props.padding || 24}px; text-align: center;\">\n ${props.title ? `<div style=\"font-size: 18px; font-weight: bold; color: ${props.textColor || '#333333'}; margin-bottom: 12px; font-family: Arial, sans-serif;\">${props.title}</div>` : ''}\n <div style=\"display: inline-block; background-color: ${props.codeBackground || '#ffffff'}; border: 1px solid ${props.borderColor || '#ffc107'}; border-radius: 6px; padding: 12px 24px; margin-bottom: 12px;\">\n <span style=\"font-size: 24px; font-weight: bold; font-family: monospace; letter-spacing: 3px; color: ${props.codeColor || '#e65100'};\">${props.code || 'SAVE20'}</span>\n </div>\n ${props.description ? `<div style=\"font-size: 14px; color: ${props.textColor || '#333333'}; font-family: Arial, sans-serif; opacity: 0.8;\">${props.description}</div>` : ''}\n </div>\n </td>\n </tr>\n </table>`;\n\n case 'Testimonial':\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <div style=\"background-color: ${props.backgroundColor || '#f8f9fa'}; padding: ${props.padding || 24}px; border-left: 4px solid ${props.accentColor || '#0066cc'};\">\n ${props.showQuoteIcon !== false ? `<div style=\"font-size: 48px; color: ${props.accentColor || '#0066cc'}; opacity: 0.3; line-height: 1; margin-bottom: -20px; font-family: Georgia, serif;\">\"</div>` : ''}\n <p style=\"font-size: 16px; font-style: italic; color: ${props.quoteColor || '#333333'}; line-height: 1.7; margin: 0 0 16px 0; font-family: Georgia, serif;\">${props.quote || ''}</p>\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n ${props.authorImage ? `<td style=\"vertical-align: middle; padding-right: 12px;\"><img src=\"${props.authorImage}\" alt=\"${props.authorName}\" style=\"width: 48px; height: 48px; border-radius: 50%;\"></td>` : ''}\n <td style=\"vertical-align: middle;\">\n <div style=\"font-size: 14px; font-weight: bold; color: ${props.quoteColor || '#333333'}; font-family: Arial, sans-serif;\">${props.authorName || ''}</div>\n ${props.authorTitle ? `<div style=\"font-size: 12px; color: ${props.authorColor || '#666666'}; font-family: Arial, sans-serif;\">${props.authorTitle}</div>` : ''}\n </td>\n </tr>\n </table>\n </div>\n </td>\n </tr>\n </table>`;\n\n case 'IconList': {\n const items = (props.items as Array<{ icon: string; text: string }>) || [];\n const icons: Record<string, string> = {\n check: '✓', star: '★', arrow: '→', bullet: '•', heart: '❤',\n fire: '🔥', rocket: '🚀', sparkle: '✨', gift: '🎁', clock: '⏰',\n };\n\n const listHtml = items.map((item) => `\n <tr>\n <td style=\"vertical-align: top; padding-right: 10px; color: ${props.iconColor || '#22c55e'}; font-size: ${props.iconSize || 18}px; line-height: 1.5;\">${icons[item.icon] || item.icon}</td>\n <td style=\"vertical-align: top; color: ${props.textColor || '#333333'}; font-size: ${props.fontSize || 14}px; line-height: 1.5; padding-bottom: ${props.gap || 12}px; font-family: Arial, sans-serif;\">${item.text}</td>\n </tr>\n `).join('');\n\n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: ${props.padding || 16}px; background-color: ${props.backgroundColor || 'transparent'};\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\">\n ${listHtml}\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n case 'InvoiceTable': {\n const items = (props.items as Array<{ description: string; quantity: number; unitPrice: number }>) || [];\n const currency = (props.currency as string) || '$';\n const total = items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0);\n \n const headerStyle = `background-color: ${props.headerBg || '#1a1a2e'}; color: ${props.headerColor || '#ffffff'}; padding: 12px 16px; font-weight: bold; text-align: left; border-bottom: 1px solid ${props.borderColor || '#e0e0e0'};`;\n const cellStyle = `padding: 12px 16px; border-bottom: 1px solid ${props.borderColor || '#e0e0e0'}; font-family: Arial, sans-serif; font-size: 14px;`;\n \n return `\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n <tr>\n <td style=\"padding: 10px;\">\n <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse: collapse; border: 1px solid ${props.borderColor || '#e0e0e0'};\">\n <tr>\n <th style=\"${headerStyle}\">Description</th>\n <th style=\"${headerStyle} text-align: center; width: 80px;\">Qty</th>\n <th style=\"${headerStyle} text-align: right; width: 100px;\">Unit Price</th>\n <th style=\"${headerStyle} text-align: right; width: 100px;\">Amount</th>\n </tr>\n ${items.map(item => `\n <tr>\n <td style=\"${cellStyle}\">${item.description}</td>\n <td style=\"${cellStyle} text-align: center;\">${item.quantity}</td>\n <td style=\"${cellStyle} text-align: right;\">${currency}${item.unitPrice.toFixed(2)}</td>\n <td style=\"${cellStyle} text-align: right;\">${currency}${(item.quantity * item.unitPrice).toFixed(2)}</td>\n </tr>`).join('')}\n ${props.showTotal !== false ? `\n <tr>\n <td colspan=\"3\" style=\"${cellStyle} text-align: right; font-weight: bold;\">Total:</td>\n <td style=\"${cellStyle} text-align: right; font-weight: bold; background-color: #f5f5f5;\">${currency}${total.toFixed(2)}</td>\n </tr>` : ''}\n </table>\n </td>\n </tr>\n </table>`;\n }\n\n default:\n return childrenHtml;\n }\n };\n\n return renderNode('ROOT');\n};\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","/**\r\n * HTML Importer — parses exported HTML (with embedded data-component attributes)\r\n * and reconstructs a Craft.js serialized JSON state for the editor.\r\n */\r\n\r\ninterface CraftNode {\r\n type: { resolvedName: string };\r\n isCanvas: boolean;\r\n props: Record<string, unknown>;\r\n displayName: string;\r\n custom: Record<string, unknown>;\r\n hidden: boolean;\r\n nodes: string[];\r\n linkedNodes: Record<string, string>;\r\n parent?: string;\r\n}\r\n\r\ntype CraftNodes = Record<string, CraftNode>;\r\n\r\nlet nodeCounter = 0;\r\n\r\nconst generateNodeId = (): string => {\r\n nodeCounter++;\r\n return `imported_${nodeCounter}_${Math.random().toString(36).slice(2, 8)}`;\r\n};\r\n\r\n/**\r\n * Decode props from a base64 data-props attribute.\r\n */\r\nconst decodeProps = (encoded: string): Record<string, unknown> | null => {\r\n try {\r\n const json = atob(encoded);\r\n const parsed = JSON.parse(json);\r\n // Remove the internal _type marker\r\n const { _type, ...props } = parsed;\r\n return props;\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Parse HTML string and extract component markers.\r\n * Returns a Craft.js serialized state string ready for `actions.deserialize()`.\r\n */\r\nexport const importHtmlToState = (html: string): string => {\r\n nodeCounter = 0;\r\n\r\n\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(html, 'text/html');\r\n\r\n // Find all elements with data-component attribute\r\n const componentEls = doc.querySelectorAll('[data-component]');\r\n\r\n const nodes: CraftNodes = {};\r\n const childNodeIds: string[] = [];\r\n\r\n // Process each top-level component marker\r\n // We need to find only top-level ones (not nested inside other data-component elements)\r\n const topLevelComponents: Element[] = [];\r\n componentEls.forEach((el) => {\r\n // Check if this element is nested inside another data-component element\r\n let parent = el.parentElement;\r\n let isNested = false;\r\n while (parent) {\r\n if (parent.hasAttribute('data-component')) {\r\n isNested = true;\r\n break;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n if (!isNested) {\r\n topLevelComponents.push(el);\r\n }\r\n });\r\n\r\n // If no component markers found, wrap the entire HTML in a RawHtml block\r\n if (topLevelComponents.length === 0) {\r\n const rawNodeId = generateNodeId();\r\n nodes[rawNodeId] = {\r\n type: { resolvedName: 'RawHtml' },\r\n isCanvas: false,\r\n props: { html: html, padding: 0 },\r\n displayName: 'RawHtml',\r\n custom: {},\r\n hidden: false,\r\n nodes: [],\r\n linkedNodes: {},\r\n parent: 'ROOT',\r\n };\r\n childNodeIds.push(rawNodeId);\r\n } else {\r\n for (const el of topLevelComponents) {\r\n const typeName = el.getAttribute('data-component') || 'RawHtml';\r\n const encodedProps = el.getAttribute('data-props') || '';\r\n const props = decodeProps(encodedProps);\r\n\r\n if (!props) continue;\r\n\r\n const nodeId = generateNodeId();\r\n\r\n // Handle Container type — it's a canvas node that may have nested children\r\n const isCanvas = typeName === 'Container' || typeName === 'Paper';\r\n\r\n // For Container nodes, recursively process nested components\r\n const nestedChildren: string[] = [];\r\n const nestedLinkedNodes: Record<string, string> = {};\r\n\r\n if (typeName === 'Container') {\r\n const nestedEls = el.querySelectorAll(':scope > div > [data-component], :scope [data-component]');\r\n nestedEls.forEach((nestedEl) => {\r\n // Only direct children of this container\r\n let nestedParent = nestedEl.parentElement;\r\n let belongsToThis = false;\r\n while (nestedParent && nestedParent !== el) {\r\n if (nestedParent.hasAttribute('data-component') && nestedParent !== el) {\r\n break;\r\n }\r\n if (nestedParent === el) {\r\n belongsToThis = true;\r\n }\r\n nestedParent = nestedParent.parentElement;\r\n }\r\n if (nestedParent === el) belongsToThis = true;\r\n\r\n if (belongsToThis) {\r\n const nestedType = nestedEl.getAttribute('data-component') || 'RawHtml';\r\n const nestedEncoded = nestedEl.getAttribute('data-props') || '';\r\n const nestedProps = decodeProps(nestedEncoded);\r\n if (nestedProps) {\r\n const childId = generateNodeId();\r\n nodes[childId] = {\r\n type: { resolvedName: nestedType },\r\n isCanvas: false,\r\n props: nestedProps,\r\n displayName: nestedType,\r\n custom: {},\r\n hidden: false,\r\n nodes: [],\r\n linkedNodes: {},\r\n parent: nodeId,\r\n };\r\n nestedChildren.push(childId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Handle TwoColumn — reconstruct linked nodes\r\n if (typeName === 'TwoColumn') {\r\n const leftId = generateNodeId();\r\n const rightId = generateNodeId();\r\n nodes[leftId] = {\r\n type: { resolvedName: 'Container' },\r\n isCanvas: true,\r\n props: { background: '#f9f9f9', padding: 10 },\r\n displayName: 'Container',\r\n custom: {},\r\n hidden: false,\r\n nodes: [],\r\n linkedNodes: {},\r\n parent: nodeId,\r\n };\r\n nodes[rightId] = {\r\n type: { resolvedName: 'Container' },\r\n isCanvas: true,\r\n props: { background: '#f9f9f9', padding: 10 },\r\n displayName: 'Container',\r\n custom: {},\r\n hidden: false,\r\n nodes: [],\r\n linkedNodes: {},\r\n parent: nodeId,\r\n };\r\n nestedLinkedNodes['left-column'] = leftId;\r\n nestedLinkedNodes['right-column'] = rightId;\r\n }\r\n\r\n nodes[nodeId] = {\r\n type: { resolvedName: typeName },\r\n isCanvas: isCanvas,\r\n props: props,\r\n displayName: typeName,\r\n custom: {},\r\n hidden: false,\r\n nodes: nestedChildren,\r\n linkedNodes: nestedLinkedNodes,\r\n parent: 'ROOT',\r\n };\r\n childNodeIds.push(nodeId);\r\n }\r\n }\r\n\r\n // Create ROOT Paper node\r\n nodes['ROOT'] = {\r\n type: { resolvedName: 'Paper' },\r\n isCanvas: true,\r\n props: { background: '#ffffff' },\r\n displayName: 'Paper',\r\n custom: {},\r\n hidden: false,\r\n nodes: childNodeIds,\r\n linkedNodes: {},\r\n };\r\n\r\n return JSON.stringify(nodes);\r\n};\r\n","import React, { useState, useMemo, useCallback, useEffect } from \"react\";\r\nimport { Editor, Frame, Element, useEditor } from \"@craftjs/core\";\r\nimport { Toolbox } from \"./Toolbox\";\r\nimport { SettingsPanel } from \"./SettingsPanel\";\r\nimport { Paper } from \"./Paper\";\r\nimport { RenderNode } from \"./RenderNode\";\r\nimport { EditorProvider, useEditorConfig } from \"./context\";\r\nimport { DEFAULT_COMPONENTS, buildResolver } from \"./defaultComponents\";\r\nimport { generateEmailHtml } from \"../../lib/htmlExporter\";\r\nimport { Button } from \"../../components/ui/button\";\r\nimport { ScrollArea } from \"../../components/ui/scroll-area\";\r\nimport {\r\n Tabs,\r\n TabsContent,\r\n TabsList,\r\n TabsTrigger,\r\n} from \"../../components/ui/tabs\";\r\nimport {\r\n Code,\r\n Copy,\r\n Check,\r\n Undo2,\r\n Redo2,\r\n Eye,\r\n Palette,\r\n Settings,\r\n Download,\r\n LayoutTemplate,\r\n Layers,\r\n Paintbrush,\r\n Moon,\r\n Sun,\r\n} from \"lucide-react\";\r\n\r\nimport {\r\n Popover,\r\n PopoverContent,\r\n PopoverTrigger,\r\n} from \"../../components/ui/popover\";\r\nimport { Label } from \"../../components/ui/label\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nimport type {\r\n EmailEditorProps,\r\n ComponentRegistry,\r\n EmailTemplate,\r\n} from \"./types\";\r\n\r\nimport {\r\n Container,\r\n EmailHeader,\r\n EmailFooter,\r\n EmailButton,\r\n TextBlock,\r\n InvoiceTable,\r\n Spacer,\r\n} from \"./components\";\r\nimport { importHtmlToState } from \"../../lib/htmlImporter\";\r\n\r\n// ─── Portable Modal (no Tailwind / shadcn dependency) ───────────────────────\r\n\r\ninterface ModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n children: React.ReactNode;\r\n maxWidth?: number;\r\n maxHeight?: string;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n children,\r\n maxWidth = 672,\r\n maxHeight = \"85vh\",\r\n}) => {\r\n const panelRef = React.useRef<HTMLDivElement>(null);\r\n const [closeHovered, setCloseHovered] = React.useState(false);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n document.addEventListener(\"keydown\", handler);\r\n return () => document.removeEventListener(\"keydown\", handler);\r\n }, [open, onClose]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n const prev = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.body.style.overflow = prev;\r\n };\r\n }\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (open && panelRef.current) panelRef.current.focus();\r\n }, [open]);\r\n\r\n if (!open) return null;\r\n\r\n return createPortal(\r\n <div\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? \"modal-title\" : undefined}\r\n aria-describedby={description ? \"modal-desc\" : undefined}\r\n onMouseDown={(e) => {\r\n if (e.target === e.currentTarget) onClose();\r\n }}\r\n style={{\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex: 9999,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"rgba(0,0,0,0.5)\",\r\n padding: \"16px\",\r\n }}\r\n >\r\n <div\r\n ref={panelRef}\r\n tabIndex={-1}\r\n style={{\r\n position: \"relative\",\r\n backgroundColor: \"#ffffff\",\r\n borderRadius: \"12px\",\r\n boxShadow: \"0 20px 60px rgba(0,0,0,0.2), 0 4px 16px rgba(0,0,0,0.12)\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n width: \"100%\",\r\n maxWidth: `${maxWidth}px`,\r\n maxHeight,\r\n overflowY: \"auto\",\r\n outline: \"none\",\r\n }}\r\n >\r\n {/* Close button */}\r\n <button\r\n onClick={onClose}\r\n aria-label=\"Close modal\"\r\n onMouseEnter={() => setCloseHovered(true)}\r\n onMouseLeave={() => setCloseHovered(false)}\r\n style={{\r\n position: \"absolute\",\r\n top: \"14px\",\r\n right: \"14px\",\r\n width: \"32px\",\r\n height: \"32px\",\r\n borderRadius: \"8px\",\r\n border: \"none\",\r\n background: closeHovered ? \"#f3f4f6\" : \"transparent\",\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n color: closeHovered ? \"#111827\" : \"#6b7280\",\r\n fontSize: \"18px\",\r\n lineHeight: 1,\r\n padding: 0,\r\n flexShrink: 0,\r\n transition: \"background 0.15s, color 0.15s\",\r\n }}\r\n >\r\n ✕\r\n </button>\r\n\r\n {/* Header */}\r\n {(title || description) && (\r\n <div style={{ padding: \"20px 24px 0 24px\", flexShrink: 0 }}>\r\n {title && (\r\n <h2\r\n id=\"modal-title\"\r\n style={{\r\n margin: 0,\r\n fontSize: \"18px\",\r\n fontWeight: 600,\r\n lineHeight: \"1.4\",\r\n color: \"#111827\",\r\n }}\r\n >\r\n {title}\r\n </h2>\r\n )}\r\n {description && (\r\n <p\r\n id=\"modal-desc\"\r\n style={{\r\n margin: \"6px 0 0 0\",\r\n fontSize: \"14px\",\r\n lineHeight: \"1.5\",\r\n color: \"#6b7280\",\r\n }}\r\n >\r\n {description}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Body */}\r\n <div\r\n style={{ padding: \"16px 24px 24px 24px\", overflowY: \"auto\", flex: 1 }}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n};\r\n\r\n// ─── Portable Dropdown (no Tailwind / shadcn dependency) ────────────────────\r\n\r\ninterface DropdownItem {\r\n key: string;\r\n label: React.ReactNode;\r\n onClick: () => void;\r\n danger?: boolean;\r\n separator?: never;\r\n}\r\ninterface DropdownSeparator {\r\n separator: true;\r\n key: string;\r\n label?: never;\r\n onClick?: never;\r\n danger?: never;\r\n}\r\ntype DropdownEntry = DropdownItem | DropdownSeparator;\r\n\r\ninterface DropdownProps {\r\n trigger: React.ReactNode;\r\n label?: string;\r\n items: DropdownEntry[];\r\n align?: \"start\" | \"end\";\r\n}\r\n\r\nconst Dropdown: React.FC<DropdownProps> = ({\r\n trigger,\r\n label,\r\n items,\r\n align = \"start\",\r\n}) => {\r\n const [open, setOpen] = useState(false);\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: MouseEvent) => {\r\n if (!containerRef.current?.contains(e.target as Node)) setOpen(false);\r\n };\r\n document.addEventListener(\"mousedown\", handler);\r\n return () => document.removeEventListener(\"mousedown\", handler);\r\n }, [open]);\r\n\r\n // Close on Escape\r\n useEffect(() => {\r\n if (!open) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") setOpen(false);\r\n };\r\n document.addEventListener(\"keydown\", handler);\r\n return () => document.removeEventListener(\"keydown\", handler);\r\n }, [open]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n style={{ position: \"relative\", display: \"inline-block\" }}\r\n >\r\n {/* Trigger */}\r\n <div onClick={() => setOpen((v) => !v)}>{trigger}</div>\r\n\r\n {/* Menu panel */}\r\n {open && (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: \"calc(100% + 6px)\",\r\n ...(align === \"end\" ? { right: 0 } : { left: 0 }),\r\n zIndex: 9998,\r\n minWidth: \"224px\",\r\n backgroundColor: \"#ffffff\",\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"8px\",\r\n boxShadow:\r\n \"0 8px 24px rgba(0,0,0,0.12), 0 2px 8px rgba(0,0,0,0.08)\",\r\n padding: \"4px\",\r\n outline: \"none\",\r\n }}\r\n >\r\n {/* Section label */}\r\n {label && (\r\n <div\r\n style={{\r\n padding: \"6px 8px 4px 8px\",\r\n fontSize: \"11px\",\r\n fontWeight: 600,\r\n color: \"#9ca3af\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n }}\r\n >\r\n {label}\r\n </div>\r\n )}\r\n\r\n {items.map((entry) => {\r\n if (\"separator\" in entry && entry.separator) {\r\n return (\r\n <div\r\n key={entry.key}\r\n style={{\r\n height: \"1px\",\r\n backgroundColor: \"#f3f4f6\",\r\n margin: \"4px 0\",\r\n }}\r\n />\r\n );\r\n }\r\n const item = entry as DropdownItem;\r\n return (\r\n <DropdownItemRow\r\n key={item.key}\r\n item={item}\r\n onSelect={() => {\r\n item.onClick();\r\n setOpen(false);\r\n }}\r\n />\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nconst DropdownItemRow: React.FC<{\r\n item: DropdownItem;\r\n onSelect: () => void;\r\n}> = ({ item, onSelect }) => {\r\n const [hovered, setHovered] = useState(false);\r\n return (\r\n <button\r\n onClick={onSelect}\r\n onMouseEnter={() => setHovered(true)}\r\n onMouseLeave={() => setHovered(false)}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\",\r\n width: \"100%\",\r\n padding: \"7px 8px\",\r\n fontSize: \"13px\",\r\n fontWeight: 400,\r\n borderRadius: \"6px\",\r\n border: \"none\",\r\n background: hovered ? \"#f9fafb\" : \"transparent\",\r\n cursor: \"pointer\",\r\n color: item.danger ? \"#ef4444\" : \"#111827\",\r\n textAlign: \"left\",\r\n transition: \"background 0.1s\",\r\n }}\r\n >\r\n {item.label}\r\n </button>\r\n );\r\n};\r\n\r\n// ─── Inline styles shared inside TopBar ─────────────────────────────────────\r\n\r\nconst modalActionButtonStyle: React.CSSProperties = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n padding: \"6px 12px\",\r\n fontSize: \"13px\",\r\n fontWeight: 500,\r\n borderRadius: \"6px\",\r\n border: \"1px solid #d1d5db\",\r\n background: \"#ffffff\",\r\n cursor: \"pointer\",\r\n color: \"#374151\",\r\n transition: \"background 0.15s\",\r\n};\r\n\r\nconst codeScrollStyle: React.CSSProperties = {\r\n height: \"400px\",\r\n overflowY: \"auto\",\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"6px\",\r\n};\r\n\r\nconst preStyle: React.CSSProperties = {\r\n padding: \"16px\",\r\n fontSize: \"12px\",\r\n fontFamily:\r\n \"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\",\r\n whiteSpace: \"pre-wrap\",\r\n margin: 0,\r\n color: \"#111827\",\r\n};\r\n\r\n// ─── Color Customizer ───────────────────────────────────────────────────────\r\n\r\nconst COLOR_PRESETS = [\r\n { name: \"Blue\", hsl: \"222.2 47.4% 11.2%\" },\r\n { name: \"Indigo\", hsl: \"243 75% 59%\" },\r\n { name: \"Emerald\", hsl: \"160 84% 39%\" },\r\n { name: \"Rose\", hsl: \"346 77% 50%\" },\r\n { name: \"Amber\", hsl: \"32 95% 44%\" },\r\n { name: \"Violet\", hsl: \"263 70% 50%\" },\r\n { name: \"Cyan\", hsl: \"192 91% 36%\" },\r\n { name: \"Slate\", hsl: \"215 20% 35%\" },\r\n];\r\n\r\ninterface ColorCustomizerProps {\r\n value?: string;\r\n onColorChange: (primaryHsl: string) => void;\r\n}\r\n\r\nconst ColorCustomizer = ({ value, onColorChange }: ColorCustomizerProps) => {\r\n const [customColor, setCustomColor] = useState(\"#1e293b\");\r\n\r\n const applyColor = (hsl: string) => {\r\n onColorChange(hsl);\r\n };\r\n\r\n const hexToHsl = (hex: string): string => {\r\n const r = parseInt(hex.slice(1, 3), 16) / 255;\r\n const g = parseInt(hex.slice(3, 5), 16) / 255;\r\n const b = parseInt(hex.slice(5, 7), 16) / 255;\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n const l = (max + min) / 2;\r\n\r\n if (max !== min) {\r\n const d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\r\n break;\r\n case g:\r\n h = ((b - r) / d + 2) / 6;\r\n break;\r\n case b:\r\n h = ((r - g) / d + 4) / 6;\r\n break;\r\n }\r\n }\r\n\r\n return `${Math.round(h * 360)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;\r\n };\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\" className=\"gap-2 h-8 text-xs\">\r\n <Paintbrush className=\"h-3.5 w-3.5\" />\r\n Primary\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-64\" align=\"end\">\r\n <div className=\"space-y-3\">\r\n <Label className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\r\n Primary Color\r\n </Label>\r\n <div className=\"grid grid-cols-4 gap-2\">\r\n {COLOR_PRESETS.map((preset) => (\r\n <button\r\n key={preset.name}\r\n type=\"button\"\r\n onClick={() => applyColor(preset.hsl)}\r\n className=\"group flex flex-col items-center gap-1\"\r\n title={preset.name}\r\n >\r\n <div\r\n className=\"w-8 h-8 rounded-full border-2 transition-all shadow-sm\"\r\n style={{\r\n backgroundColor: `hsl(${preset.hsl})`,\r\n borderColor:\r\n value === preset.hsl\r\n ? \"hsl(var(--foreground))\"\r\n : \"transparent\",\r\n }}\r\n />\r\n <span className=\"text-[10px] text-muted-foreground\">\r\n {preset.name}\r\n </span>\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"pt-2 border-t border-border\">\r\n <Label className=\"text-xs text-muted-foreground mb-1.5 block\">\r\n Custom Color\r\n </Label>\r\n <div className=\"flex gap-2 items-center\">\r\n <input\r\n type=\"color\"\r\n value={customColor}\r\n onChange={(e) => {\r\n setCustomColor(e.target.value);\r\n applyColor(hexToHsl(e.target.value));\r\n }}\r\n className=\"w-10 h-8 rounded border border-border cursor-pointer bg-background\"\r\n />\r\n <span className=\"text-xs text-muted-foreground font-mono\">\r\n {customColor}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </PopoverContent>\r\n </Popover>\r\n );\r\n};\r\n\r\n// ─── TopBar (internal) ──────────────────────────────────────────────────────\r\n\r\ninterface TopBarProps {\r\n isDarkMode: boolean;\r\n onToggleDarkMode: () => void;\r\n primaryColor?: string;\r\n onPrimaryColorChange: (primaryHsl: string) => void;\r\n}\r\n\r\nconst TopBar = ({\r\n isDarkMode,\r\n onToggleDarkMode,\r\n primaryColor,\r\n onPrimaryColorChange,\r\n}: TopBarProps) => {\r\n const { actions, query, canUndo, canRedo } = useEditor((state, queryCtx) => ({\r\n canUndo: state.options.enabled && queryCtx.history.canUndo(),\r\n canRedo: state.options.enabled && queryCtx.history.canRedo(),\r\n }));\r\n\r\n const { title, logo, templates, callbacks, slots, htmlRenderers } =\r\n useEditorConfig();\r\n\r\n const [showCode, setShowCode] = useState(false);\r\n const [showPreview, setShowPreview] = useState(false);\r\n const [copied, setCopied] = useState(false);\r\n const [htmlCode, setHtmlCode] = useState(\"\");\r\n const [previewDevice, setPreviewDevice] = useState<\"desktop\" | \"mobile\">(\r\n \"desktop\",\r\n );\r\n\r\n const getHtml = useCallback(() => {\r\n const json = query.serialize();\r\n const nodes = JSON.parse(json);\r\n return generateEmailHtml(nodes, htmlRenderers);\r\n }, [query, htmlRenderers]);\r\n\r\n const handleExport = () => {\r\n const html = getHtml();\r\n setHtmlCode(html);\r\n setShowCode(true);\r\n callbacks.onExport?.(html);\r\n };\r\n\r\n const handlePreview = () => {\r\n const html = getHtml();\r\n setHtmlCode(html);\r\n setShowPreview(true);\r\n };\r\n\r\n const handleCopy = async () => {\r\n await navigator.clipboard.writeText(htmlCode);\r\n setCopied(true);\r\n setTimeout(() => setCopied(false), 2000);\r\n };\r\n\r\n const handleDownload = () => {\r\n const blob = new Blob([htmlCode], { type: \"text/html\" });\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = \"email-template.html\";\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n URL.revokeObjectURL(url);\r\n };\r\n\r\n const handleClearCanvas = () => {\r\n actions.clearEvents();\r\n actions.deserialize(`{\r\n \"ROOT\": {\r\n \"type\": {\"resolvedName\": \"Paper\"},\r\n \"isCanvas\": true,\r\n \"props\": {\"background\": \"#ffffff\"},\r\n \"displayName\": \"Paper\",\r\n \"custom\": {},\r\n \"hidden\": false,\r\n \"nodes\": [],\r\n \"linkedNodes\": {}\r\n }\r\n }`);\r\n callbacks.onClear?.();\r\n };\r\n\r\n const handleLoadTemplate = (template: EmailTemplate) => {\r\n try {\r\n actions.deserialize(template.data);\r\n callbacks.onTemplateLoad?.(template.id);\r\n } catch (e) {\r\n console.error(\"Failed to load template:\", e);\r\n }\r\n };\r\n\r\n if (slots.toolbar) {\r\n return React.createElement(slots.toolbar, {\r\n onExport: getHtml,\r\n onPreview: getHtml,\r\n onClear: handleClearCanvas,\r\n title,\r\n logo,\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"flex items-center justify-between px-4 py-2.5 border-b border-border bg-background\">\r\n <div className=\"flex items-center gap-3\">\r\n <div className=\"flex items-center gap-2\">\r\n <h1 className=\"text-sm font-semibold text-foreground\">{title}</h1>\r\n </div>\r\n\r\n <div className=\"h-5 w-px bg-border\" />\r\n\r\n <Dropdown\r\n align=\"start\"\r\n label=\"Quick Start Templates\"\r\n trigger={\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n className=\"gap-1.5 h-8 text-xs\"\r\n >\r\n <LayoutTemplate className=\"h-3.5 w-3.5\" />\r\n Templates\r\n </Button>\r\n }\r\n items={[\r\n ...templates.map((template) => ({\r\n key: template.id,\r\n label: (\r\n <React.Fragment>\r\n {template.icon &&\r\n React.createElement(template.icon, {\r\n style: {\r\n width: 14,\r\n height: 14,\r\n color: \"#9ca3af\",\r\n flexShrink: 0,\r\n },\r\n })}\r\n <div>\r\n <div style={{ fontWeight: 500, fontSize: \"13px\" }}>\r\n {template.name}\r\n </div>\r\n {template.description && (\r\n <div\r\n style={{\r\n fontSize: \"11px\",\r\n color: \"#9ca3af\",\r\n marginTop: 1,\r\n }}\r\n >\r\n {template.description}\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n ),\r\n onClick: () => handleLoadTemplate(template),\r\n })),\r\n ...(templates.length > 0\r\n ? [{ key: \"sep-clear\", separator: true as const }]\r\n : []),\r\n {\r\n key: \"clear\",\r\n label: \"Clear Canvas\",\r\n onClick: handleClearCanvas,\r\n danger: true,\r\n },\r\n ]}\r\n />\r\n </div>\r\n\r\n <div className=\"flex items-center gap-1.5\">\r\n <div className=\"flex items-center gap-0.5 bg-muted rounded-md p-0.5\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n disabled={!canUndo}\r\n onClick={() => actions.history.undo()}\r\n className=\"h-7 w-7 p-0\"\r\n title=\"Undo\"\r\n >\r\n <Undo2 className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n disabled={!canRedo}\r\n onClick={() => actions.history.redo()}\r\n className=\"h-7 w-7 p-0\"\r\n title=\"Redo\"\r\n >\r\n <Redo2 className=\"h-3.5 w-3.5\" />\r\n </Button>\r\n </div>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={handlePreview}\r\n className=\"gap-1.5 h-8 text-xs\"\r\n >\r\n <Eye className=\"h-3.5 w-3.5\" /> Preview\r\n </Button>\r\n <Button\r\n size=\"sm\"\r\n onClick={handleExport}\r\n className=\"gap-1.5 h-8 text-xs\"\r\n >\r\n <Code className=\"h-3.5 w-3.5\" /> Export\r\n </Button>\r\n </div>\r\n </div>\r\n\r\n {/* Export HTML Modal */}\r\n <Modal\r\n open={showCode}\r\n onClose={() => setShowCode(false)}\r\n title=\"Export HTML\"\r\n description=\"Copy this HTML code to use in your email client or system.\"\r\n maxWidth={896}\r\n maxHeight=\"80vh\"\r\n >\r\n {slots.exportDialog ? (\r\n React.createElement(slots.exportDialog, {\r\n html: htmlCode,\r\n onClose: () => setShowCode(false),\r\n })\r\n ) : (\r\n <>\r\n <div style={{ display: \"flex\", gap: \"8px\", marginBottom: \"12px\" }}>\r\n <button\r\n onClick={handleCopy}\r\n style={modalActionButtonStyle}\r\n onMouseEnter={(e) =>\r\n (e.currentTarget.style.background = \"#f3f4f6\")\r\n }\r\n onMouseLeave={(e) =>\r\n (e.currentTarget.style.background = \"#ffffff\")\r\n }\r\n >\r\n {copied ? (\r\n <Check size={14} style={{ marginRight: 6 }} />\r\n ) : (\r\n <Copy size={14} style={{ marginRight: 6 }} />\r\n )}\r\n {copied ? \"Copied!\" : \"Copy\"}\r\n </button>\r\n <button\r\n onClick={handleDownload}\r\n style={modalActionButtonStyle}\r\n onMouseEnter={(e) =>\r\n (e.currentTarget.style.background = \"#f3f4f6\")\r\n }\r\n onMouseLeave={(e) =>\r\n (e.currentTarget.style.background = \"#ffffff\")\r\n }\r\n >\r\n <Download size={14} style={{ marginRight: 6 }} />\r\n Download\r\n </button>\r\n </div>\r\n <div style={codeScrollStyle}>\r\n <pre style={preStyle}>{htmlCode}</pre>\r\n </div>\r\n </>\r\n )}\r\n </Modal>\r\n\r\n {/* Email Preview Modal */}\r\n <Modal\r\n open={showPreview}\r\n onClose={() => setShowPreview(false)}\r\n title=\"Email Preview\"\r\n description=\"Preview how your email will look in email clients.\"\r\n maxWidth={1024}\r\n maxHeight=\"90vh\"\r\n >\r\n {slots.previewDialog ? (\r\n React.createElement(slots.previewDialog, {\r\n html: htmlCode,\r\n onClose: () => setShowPreview(false),\r\n })\r\n ) : (\r\n <div style={{ overflowY: \"auto\", maxHeight: \"600px\" }}>\r\n <div\r\n style={{\r\n margin: \"0 auto\",\r\n transition: \"max-width 0.3s\",\r\n maxWidth: previewDevice === \"mobile\" ? \"375px\" : \"100%\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n border: \"1px solid #e5e7eb\",\r\n borderRadius: \"8px\",\r\n background: \"rgba(243,244,246,0.3)\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {previewDevice === \"mobile\" && (\r\n <div\r\n style={{\r\n height: \"24px\",\r\n background: \"#f3f4f6\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <div\r\n style={{\r\n width: \"64px\",\r\n height: \"4px\",\r\n background: \"rgba(107,114,128,0.3)\",\r\n borderRadius: \"9999px\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n <iframe\r\n srcDoc={htmlCode}\r\n title=\"Email Preview\"\r\n style={{\r\n width: \"100%\",\r\n minHeight: \"500px\",\r\n background: \"#ffffff\",\r\n border: \"none\",\r\n display: \"block\",\r\n height: previewDevice === \"mobile\" ? \"667px\" : \"600px\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </Modal>\r\n </>\r\n );\r\n};\r\n\r\n// ─── Left Sidebar with Tabs ─────────────────────────────────────────────────\r\n//@ts-ignore\r\nconst LeftSidebar = ({ setActiveTab, activeTab }) => {\r\n const { components, slots } = useEditorConfig();\r\n const { selectedNodeId } = useEditor((state) => ({\r\n //@ts-ignore\r\n selectedNodeId: state.events.selected[0],\r\n }));\r\n\r\n useEffect(() => {\r\n if (selectedNodeId) {\r\n setActiveTab(\"properties\");\r\n }\r\n }, [selectedNodeId]);\r\n\r\n const categories = useMemo(() => {\r\n return Object.keys(components).reduce<string[]>((acc, k) => {\r\n const cat = components[k].category || \"Other\";\r\n if (!acc.includes(cat)) acc.push(cat);\r\n return acc;\r\n }, []);\r\n }, [components]);\r\n\r\n return (\r\n <div className=\"h-full flex flex-col bg-background border-r border-border\">\r\n <Tabs\r\n value={activeTab}\r\n onValueChange={(value) =>\r\n setActiveTab(value as \"components\" | \"properties\")\r\n }\r\n className=\"flex-1 flex flex-col\"\r\n >\r\n <div className=\"px-2 pt-2 border-b border-border\">\r\n <TabsList className=\"w-full h-9 bg-muted/50\">\r\n <TabsTrigger\r\n value=\"components\"\r\n className=\"flex-1 gap-1.5 text-xs data-[state=active]:bg-background\"\r\n >\r\n <Layers className=\"h-3.5 w-3.5\" />\r\n Components\r\n </TabsTrigger>\r\n <TabsTrigger\r\n value=\"properties\"\r\n className=\"flex-1 gap-1.5 text-xs data-[state=active]:bg-background\"\r\n >\r\n <Settings className=\"h-3.5 w-3.5\" />\r\n Properties\r\n </TabsTrigger>\r\n </TabsList>\r\n </div>\r\n\r\n <TabsContent value=\"components\" className=\"flex-1 mt-0 \">\r\n <ScrollArea className=\"h-full max-h-[180vh] \">\r\n {slots.toolbox ? (\r\n React.createElement(slots.toolbox, { components, categories })\r\n ) : (\r\n <Toolbox />\r\n )}\r\n </ScrollArea>\r\n </TabsContent>\r\n\r\n <TabsContent value=\"properties\" className=\"flex-1 mt-0 \">\r\n <div className=\"h-full\">\r\n <SettingsPanel />\r\n </div>\r\n </TabsContent>\r\n </Tabs>\r\n </div>\r\n );\r\n};\r\n\r\n// ─── Default content ────────────────────────────────────────────────────────\r\n\r\nconst defaultEmailContent = <Element is={Paper} canvas></Element>;\r\n\r\n// ─── Main EmailEditor Component ─────────────────────────────────────────────\r\n\r\nconst getReadablePrimaryForeground = (primaryHsl: string): string => {\r\n const lightness = Number.parseFloat(\r\n primaryHsl.trim().split(/\\s+/)[2]?.replace(\"%\", \"\") || \"50\",\r\n );\r\n return lightness > 60 ? \"222.2 47.4% 11.2%\" : \"210 40% 98%\";\r\n};\r\n\r\ntype CssVariablesStyle = React.CSSProperties & Record<`--${string}`, string>;\r\n\r\nexport const EmailEditor: React.FC<EmailEditorProps> = ({\r\n components: userComponents,\r\n replaceBuiltins = false,\r\n theme = {},\r\n slots = {},\r\n templates = [],\r\n callbacks = {},\r\n initialState,\r\n defaultContent,\r\n title = \"Email Editor\",\r\n logo,\r\n htmlRenderers = {},\r\n showToolbar = true,\r\n showToolbox = true,\r\n darkMode = true,\r\n className,\r\n style,\r\n initialHtml,\r\n}) => {\r\n const mergedComponents = useMemo<ComponentRegistry>(() => {\r\n if (replaceBuiltins) return userComponents || {};\r\n return { ...DEFAULT_COMPONENTS, ...(userComponents || {}) };\r\n }, [userComponents, replaceBuiltins]);\r\n\r\n const [activeTab, setActiveTab] = useState<\"components\" | \"properties\">(\r\n \"components\",\r\n );\r\n\r\n const resolver = useMemo(() => {\r\n const res = buildResolver(mergedComponents);\r\n res.Paper = Paper;\r\n return res;\r\n }, [mergedComponents]);\r\n\r\n const renderNodeFn = (slots.renderNode || RenderNode) as any;\r\n\r\n const [isDarkMode, setIsDarkMode] = useState(!darkMode);\r\n const [primaryColor, setPrimaryColor] = useState<string | undefined>(\r\n theme.colors?.primary,\r\n );\r\n\r\n useEffect(() => {\r\n setPrimaryColor(theme.colors?.primary);\r\n }, [theme.colors?.primary]);\r\n\r\n const primaryForeground = useMemo(() => {\r\n if (theme.colors?.primaryForeground) return theme.colors.primaryForeground;\r\n if (!primaryColor) return undefined;\r\n return getReadablePrimaryForeground(primaryColor);\r\n }, [primaryColor, theme.colors?.primaryForeground]);\r\n\r\n const themeColorVars = useMemo(() => {\r\n const colors = theme.colors || {};\r\n return {\r\n background: colors.background,\r\n foreground: colors.foreground,\r\n border: colors.border,\r\n muted: colors.muted,\r\n \"muted-foreground\": colors.mutedForeground,\r\n destructive: colors.destructive,\r\n \"panel-background\": colors.panelBackground,\r\n \"canvas-background\": colors.canvasBackground,\r\n };\r\n }, [theme.colors]);\r\n\r\n const editorStyle = useMemo(() => {\r\n const cssVars: CssVariablesStyle = { ...(style || {}) };\r\n\r\n Object.entries(themeColorVars).forEach(([token, value]) => {\r\n if (value) cssVars[`--${token}`] = value;\r\n });\r\n\r\n if (primaryColor) cssVars[\"--primary\"] = primaryColor;\r\n if (primaryForeground) cssVars[\"--primary-foreground\"] = primaryForeground;\r\n if (theme.borderRadius) cssVars[\"--radius\"] = `${theme.borderRadius}px`;\r\n if (theme.fontFamily) cssVars.fontFamily = theme.fontFamily;\r\n\r\n return cssVars;\r\n }, [\r\n style,\r\n themeColorVars,\r\n primaryColor,\r\n primaryForeground,\r\n theme.borderRadius,\r\n theme.fontFamily,\r\n ]);\r\n\r\n return (\r\n <EditorProvider\r\n value={{\r\n components: mergedComponents,\r\n theme,\r\n slots,\r\n templates,\r\n callbacks,\r\n htmlRenderers,\r\n title,\r\n logo,\r\n showToolbar,\r\n showToolbox,\r\n showSettingsPanel: false,\r\n }}\r\n >\r\n <div\r\n className={`h-screen flex flex-col ${isDarkMode ? \"dark\" : \"\"} bg-background text-foreground ${className || \"\"}`}\r\n style={editorStyle}\r\n >\r\n <Editor resolver={resolver} onRender={renderNodeFn}>\r\n {showToolbar && (\r\n <TopBar\r\n isDarkMode={isDarkMode}\r\n onToggleDarkMode={() => setIsDarkMode((prev) => !prev)}\r\n primaryColor={primaryColor}\r\n onPrimaryColorChange={(primaryHsl) => {\r\n setPrimaryColor(primaryHsl);\r\n callbacks.onColorChange?.(primaryHsl);\r\n }}\r\n />\r\n )}\r\n <div className=\"flex-1 flex\">\r\n {showToolbox && (\r\n <div className=\"w-auto max-w-96 flex-shrink-0\">\r\n <LeftSidebar\r\n setActiveTab={setActiveTab}\r\n activeTab={activeTab}\r\n />\r\n </div>\r\n )}\r\n\r\n <div\r\n className=\"flex-1 overflow-auto craftjs-renderer\"\r\n style={{\r\n backgroundColor:\r\n theme.colors?.canvasBackground || \"hsl(var(--muted))\",\r\n }}\r\n >\r\n <div\r\n className=\"p-8\"\r\n onClick={() => {\r\n setActiveTab(\"properties\");\r\n }}\r\n >\r\n <div className=\"p-8\">\r\n {initialState ? (\r\n <Frame data={initialState}>{defaultEmailContent}</Frame>\r\n ) : initialHtml ? (\r\n <Frame data={importHtmlToState(initialHtml)}>\r\n {defaultEmailContent}\r\n </Frame>\r\n ) : (\r\n <Frame>{defaultContent || defaultEmailContent}</Frame>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </Editor>\r\n </div>\r\n </EditorProvider>\r\n );\r\n};\r\n"]}