@vinaverse/react-native 0.0.0-stage → 0.1.0-alpha.10
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/LICENSE +202 -0
- package/README.md +302 -2
- package/dist/ask.cjs +62 -0
- package/dist/ask.cjs.map +1 -0
- package/dist/ask.d.cts +38 -0
- package/dist/ask.d.ts +38 -0
- package/dist/ask.js +5 -0
- package/dist/ask.js.map +1 -0
- package/dist/chat.cjs +273 -0
- package/dist/chat.cjs.map +1 -0
- package/dist/chat.d.cts +490 -0
- package/dist/chat.d.ts +490 -0
- package/dist/chat.js +4 -0
- package/dist/chat.js.map +1 -0
- package/dist/chunk-43I4ZAEK.js +2607 -0
- package/dist/chunk-43I4ZAEK.js.map +1 -0
- package/dist/chunk-6QYDPGRS.cjs +97 -0
- package/dist/chunk-6QYDPGRS.cjs.map +1 -0
- package/dist/chunk-7KPCO443.js +74 -0
- package/dist/chunk-7KPCO443.js.map +1 -0
- package/dist/chunk-EFEXTVIT.js +88 -0
- package/dist/chunk-EFEXTVIT.js.map +1 -0
- package/dist/chunk-MG32E4JI.cjs +268 -0
- package/dist/chunk-MG32E4JI.cjs.map +1 -0
- package/dist/chunk-NMKJ7LIJ.cjs +76 -0
- package/dist/chunk-NMKJ7LIJ.cjs.map +1 -0
- package/dist/chunk-NRYNK7E4.cjs +2699 -0
- package/dist/chunk-NRYNK7E4.cjs.map +1 -0
- package/dist/chunk-POJP52GE.js +261 -0
- package/dist/chunk-POJP52GE.js.map +1 -0
- package/dist/index.cjs +303 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/launcher.cjs +86 -0
- package/dist/launcher.cjs.map +1 -0
- package/dist/launcher.d.cts +122 -0
- package/dist/launcher.d.ts +122 -0
- package/dist/launcher.js +5 -0
- package/dist/launcher.js.map +1 -0
- package/dist/theme-BhiEGv64.d.cts +35 -0
- package/dist/theme-BhiEGv64.d.ts +35 -0
- package/package.json +242 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/context.tsx","../src/components/Button.tsx","../src/cards/CardFrame.tsx","../src/cards/InfoCard.tsx","../src/cards/LinksCard.tsx","../src/cards/ListingCard.tsx","../src/cards/NextStepCard.tsx","../src/cards/ProposalCard.tsx","../src/cards/QuestionCard.tsx","../src/cards/TimeSlotsCard.tsx","../src/cards/CardView.tsx","../src/cards/CardCarousel.tsx","../src/components/ActivityLine.tsx","../src/components/Avatar.tsx","../src/components/ChatHeader.tsx","../src/components/Composer.tsx","../src/components/DisclosureBar.tsx","../src/components/ChatSkeleton.tsx","../src/components/MessageBubble.tsx","../src/components/Failure.tsx","../src/components/SystemRow.tsx","../src/components/Welcome.tsx","../src/components/MessageList.tsx","../src/components/StatusBanner.tsx","../src/components/VinaverseChat.tsx","../src/components/AgentChat.tsx"],"names":["createContext","jsx","useContext","memo","Button","size","useTheme","jsxs","Pressable","ActivityIndicator","Text","View","useCopy","Image","formatMoney","formatTimeRange","Linking","useState","formatDayTime","Fragment","useConversationSelector","answerProblem","useMemo","TextInput","codePoints","formatDate","CardView","readCard","useWindowDimensions","FlashList","ActivityLine","Avatar","ChatHeader","MAX_TEXT","Composer","useCallback","DisclosureBar","contrastRatio","defaults","ChatSkeleton","MessageBubble","StreamingBubble","useStreamingText","SystemRow","Welcome","keyOf","Row","MessageList","useReducedMotion","useRef","useEffect","announce","motion","StatusBanner","useNativeLifecycle","themeProblems","bannedWordsIn","CopyProvider","ThemeProvider","Platform","KeyboardAvoidingView","useAgentRuntime","useAgentSweep","useAgentConversation","useAgentName"],"mappings":";;;;;;;;;;;;;AAqJA,IAAM,WAAA,mBAA8BA,mBAAA;AAAA,EAClC;AACF,CAAA;AAEO,SAAS,oBAAoB,KAAA,EAGtB;AACZ,EAAA,uBACEC,cAAA,CAAC,YAAY,QAAA,EAAZ,EAAqB,OAAO,KAAA,CAAM,KAAA,EAChC,gBAAM,QAAA,EACT,CAAA;AAEJ;AAGO,SAAS,OAAA,GAA4B;AAC1C,EAAA,MAAM,KAAA,GAAQC,iBAAW,WAAW,CAAA;AACpC,EAAA,IAAI,CAAC,KAAA;AACH,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AACF,EAAA,OAAO,KAAA;AACT;ACzJO,IAAM,MAAA,mBAAyBC,UAAA,CAAK,SAASC,OAAAA,CAAO,KAAA,EAAoB;AAC7E,EAAA,MAAM,EAAE,QAAQ,MAAA,EAAQ,KAAA,EAAO,MAAAC,KAAAA,EAAM,IAAA,KAASC,0BAAA,EAAS;AACvD,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,WAAA;AACjC,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,KAAa,IAAA,IAAQ,MAAM,IAAA,KAAS,IAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,OAAA,KAAY,SAAA,IAAa,KAAA,CAAM,QAAA,KAAa,IAAA;AAC3D,EAAA,MAAM,aAAa,MAAA,GACf,MAAA,CAAO,UACP,OAAA,KAAY,WAAA,GACV,OAAO,OAAA,GACP,aAAA;AACN,EAAA,MAAM,UAAA,GAAa,MAAA,GAAS,MAAA,CAAO,SAAA,GAAY,MAAA,CAAO,OAAA;AACtD,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,MAAM,IAAA,KAAS,UAAA;AAC3D,EAAA,uBACEC,eAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAmB,MAAM,IAAA,IAAQ,QAAA;AAAA,MACjC,oBAAoB,KAAA,CAAM,KAAA;AAAA,MACzB,GAAI,MAAM,IAAA,GAAO,EAAE,mBAAmB,KAAA,CAAM,IAAA,KAAS,EAAC;AAAA,MACvD,kBAAA,EAAoB;AAAA,QAClB,QAAA,EAAU,QAAA;AAAA,QACV,IAAA,EAAM,MAAM,IAAA,KAAS,IAAA;AAAA,QACrB,GAAI,SAAA,GACA,KAAA,CAAM,IAAA,KAAS,OAAA,GACb,EAAE,QAAA,EAAU,KAAA,CAAM,QAAA,KAAa,IAAA,KAC/B,EAAE,OAAA,EAAS,MAAM,QAAA,KAAa,IAAA,KAChC;AAAC,OACP;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV,SAAS,KAAA,CAAM,OAAA;AAAA,MACd,GAAI,MAAM,MAAA,GAAS,EAAE,QAAQ,KAAA,CAAM,MAAA,KAAW,EAAC;AAAA,MAChD,KAAA,EAAO,CAAC,EAAE,OAAA,EAAQ,MAAO;AAAA,QACvB,WAAWH,KAAAA,CAAK,WAAA;AAAA,QAChB,UAAUA,KAAAA,CAAK,WAAA;AAAA,QACf,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,QACvB,cAAc,MAAA,CAAO,EAAA;AAAA,QACrB,WAAA,EAAa,OAAA,KAAY,MAAA,GAAS,CAAA,GAAI,CAAA;AAAA,QACtC,WAAA,EAAa,MAAA,GAAS,MAAA,CAAO,OAAA,GAAU,MAAA,CAAO,MAAA;AAAA,QAC9C,eAAA,EAAiB,UAAA;AAAA,QACjB,OAAA,EAAS,QAAA,GAAW,IAAA,GAAO,OAAA,GAAU,GAAA,GAAM,CAAA;AAAA,QAC3C,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,aAAA,EAAe,KAAA;AAAA,QACf,KAAK,KAAA,CAAM;AAAA,OACb,CAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,uBAAOJ,cAAAA,CAACQ,6BAAA,EAAA,EAAkB,KAAA,EAAO,YAAY,CAAA,GAAK,IAAA;AAAA,QACxD,KAAA,CAAM,4BACLR,cAAAA;AAAA,UAACS,gBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EAAO,UAAA;AAAA,cACP,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,UAAA,EAAY,KAAA;AAAA,cACZ,GAAI,KAAK,MAAA,GAAS,EAAE,YAAY,IAAA,CAAK,MAAA,KAAW;AAAC,aACnD;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT;AAAA;AAAA,GAEJ;AAEJ,CAAC;ACvEM,SAAS,OAAO,IAAA,EAAsB;AAC3C,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,SAAS,UAAU,KAAA,EAKvB;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,KAAUJ,0BAAA,EAAS;AAC3C,EAAA,uBACEL,cAAAA;AAAA,IAACU,gBAAA;AAAA,IAAA;AAAA,MACC,oBAAoB,KAAA,CAAM,KAAA;AAAA,MACzB,GAAI,MAAM,QAAA,GACP;AAAA,QACE,aAAA,EAAe,MAAA;AAAA,QACf,kBAAA,EAAoB,EAAE,QAAA,EAAU,IAAA;AAAK,UAEvC,EAAC;AAAA,MACJ,GAAI,MAAM,MAAA,GAAS,EAAE,QAAQ,KAAA,CAAM,MAAA,KAAW,EAAC;AAAA,MAChD,KAAA,EAAO;AAAA,QACL,gBAAA,EAAkB,EAAA;AAAA,QAClB,WAAW,KAAA,CAAM,EAAA;AAAA,QACjB,SAAS,KAAA,CAAM,EAAA;AAAA,QACf,KAAK,KAAA,CAAM,EAAA;AAAA,QACX,cAAc,MAAA,CAAO,EAAA;AAAA,QACrB,WAAA,EAAa,CAAA;AAAA,QACb,aAAa,MAAA,CAAO,OAAA;AAAA,QACpB,iBAAiB,MAAA,CAAO,UAAA;AAAA,QACxB,OAAA,EAAS,KAAA,CAAM,QAAA,GAAW,GAAA,GAAM,CAAA;AAAA,QAChC,QAAA,EAAU,GAAA;AAAA,QACV,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAEO,SAAS,MAAM,KAAA,EAGnB;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAIL,0BAAA,EAAS;AAClC,EAAA,uBACEL,cAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,QAAA;AAAA,MAClB,eAAe,KAAA,CAAM,aAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,OAAO,MAAA,CAAO,IAAA;AAAA,QACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,QACpB,UAAA,EAAY,KAAA;AAAA,QACZ,GAAI,KAAK,MAAA,GAAS,EAAE,YAAY,IAAA,CAAK,MAAA,KAAW;AAAC,OACnD;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAEO,SAAS,KAAK,KAAA,EAIlB;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAIJ,0BAAA,EAAS;AAClC,EAAA,uBACEL,cAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,MAAM,MAAA,GACT,MAAA,CAAO,SACP,KAAA,CAAM,KAAA,GACJ,MAAA,CAAO,SAAA,GACP,MAAA,CAAO,IAAA;AAAA,QACb,UAAU,KAAA,CAAM,KAAA,GAAQ,KAAK,IAAA,CAAK,EAAA,GAAK,KAAK,IAAA,CAAK,EAAA;AAAA,QACjD,UAAA,EAAA,CACG,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAK,EAAA,GAAK,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,IAAA,CAAK,UAAA;AAAA,QACrD,GAAI,KAAK,MAAA,GAAS,EAAE,YAAY,IAAA,CAAK,MAAA,KAAW;AAAC,OACnD;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAGO,SAAS,OAAA,CACd,MACA,IAAA,EACqB;AACrB,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,OAAA,EAAQ;AACpC,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,MAAM,SAAA,CAAU,IAAI,GAAG,OAAO,IAAA;AAC5C,EAAA,OAAO,MAAM,QAAA,CAAS,OAAA,EAAS,UAAA,GAAa,MAAM,IAAI,CAAA;AACxD;AAGO,SAAS,UAAA,CACd,UACA,MAAA,EACQ;AACR,EAAA,MAAM,QAAQ,QAAA,GAAW,GAAA;AACzB,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,MACnC,qBAAA,EAAuB,CAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,KACxB,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAAA,EACjB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,EACxB;AACF;AAGO,SAAS,YAAA,CACd,KACA,KAAA,EACe;AACf,EAAA,MAAM,IAAA,GAAO,UAAU,GAAG,CAAA;AAC1B,EAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,CAAC,KAAA,EAAO,OAAO,IAAA;AACpC,EAAA,MAAM,OAAO,wBAAA,CAAyB,IAAA,CAAK,IAAI,CAAA,GAAI,CAAC,GAAG,WAAA,EAAY;AACnE,EAAA,OAAO,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,EAAE,WAAA,EAAY,KAAM,IAAI,CAAA,GAAI,IAAA,GAAO,IAAA;AACtE;AAGO,SAAS,UAAU,GAAA,EAAwC;AAChE,EAAA,OAAO,GAAA,IAAO,cAAA,CAAe,IAAA,CAAK,GAAG,IAAI,GAAA,GAAM,IAAA;AACjD;AClHO,SAAS,SAAS,KAAA,EAAmC;AAC1D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,EAAE,MAAA,EAAQ,CAAA,EAAE,GAAIE,eAAA,EAAQ;AAC9B,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,KAAa,OAAA,EAAQ;AAC9C,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACjD,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA;AACtC,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,IAASO,iBAAA;AAC3B,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,UAAA;AACjC,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,GAAS,UAAA,CAAW,KAAK,MAAA,CAAO,SAAA,EAAW,MAAM,CAAA,GAAI,IAAA;AACzE,EAAA,MAAM,MAAA,GAAS,QACXC,mBAAA,CAAY,KAAA,CAAM,QAAQ,KAAA,CAAM,QAAA,EAAU,MAAM,CAAA,GAChD,IAAA;AACJ,EAAA,MAAM,KAAA,GACJ,MAAA,IAAU,CAAC,IAAA,CAAK,KAAA,GAAQ,CAAA,CAAE,WAAA,EAAa,EAAE,KAAA,EAAO,MAAA,EAAQ,CAAA,GAAI,MAAA;AAC9D,EAAA,MAAM,IAAA,GAAO,KAAK,SAAA,GACdC,uBAAA,CAAgB,KAAK,SAAA,EAAW,MAAA,EAAW,MAAA,EAAQ,QAAQ,CAAA,GAC3D,IAAA;AACJ,EAAA,MAAM,MAAA,GACJ,OAAO,IAAA,CAAK,MAAA,KAAW,YAAY,IAAA,CAAK,MAAA,GAAS,KAAK,MAAA,GAAS,IAAA;AACjE,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,EAAA,MAAM,YAAA,GAAe,SAAS,OAAA,EAAS,YAAA;AACvC,EAAA,MAAM,OACJ,GAAA,IAAO,YAAA,IAAgB,CAAC,KAAA,CAAM,QAAA,GAC1B,MAAM,YAAA,CAAa,EAAE,IAAA,EAAM,GAAA,CAAI,MAAM,EAAA,EAAI,GAAA,CAAI,IAAG,EAAG,KAAA,CAAM,IAAI,CAAA,GAC7D,IAAA;AACN,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,IAAA,CAAK,KAAA;AAAA,IACL,IAAA,CAAK,QAAA;AAAA,IACL,MAAA;AAAA,IACA,MAAA,IAAU,UAAK,MAAM,CAAA,CAAA;AAAA,IACrB,KAAA;AAAA,IACA;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,IAAI,CAAA;AACZ,EAAA,MAAM,GAAA,mBACJR,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAChD,QAAA,EAAA;AAAA,IAAA,KAAA,mBACCV,cAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,EAAE,GAAA,EAAK,KAAA,EAAM;AAAA,QACrB,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,EAAA;AAAA,UACP,MAAA,EAAQ,EAAA;AAAA,UACR,cAAc,MAAA,CAAO,EAAA;AAAA,UACrB,iBAAiB,MAAA,CAAO;AAAA,SAC1B;AAAA,QACA,UAAA,EAAY;AAAA;AAAA,KACd,GACE,IAAA;AAAA,oBACJM,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI,EACrC,QAAA,EAAA;AAAA,sBAAAV,cAAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAe,CAAA,EAAI,eAAK,KAAA,EAAM,CAAA;AAAA,MACpC,IAAA,CAAK,2BAAWA,cAAAA,CAAC,QAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,IAAA,CAAK,QAAA,EAAS,CAAA,GAAU,IAAA;AAAA,sBACtDA,cAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,IAAG,EAC5D,QAAA,EAAA;AAAA,QACC,MAAA,IACE,CAAA,OAAA,EAAK,MAAM,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,CAAA,EAAA,EAAK,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAA,CAAA,GAAM,EAAE,CAAA,CAAA;AAAA,QAC5D,KAAA;AAAA,QACA;AAAA,QAEC,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,QAAK,CAAA,EACf;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEF,EAAA,uBACEH,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAEhC,QAAA,EAAA;AAAA,QAAA,IAAA,mBACCN,cAAAA;AAAA,UAACO,qBAAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAkB,MAAA;AAAA,YAClB,oBAAoB,IAAA,CAAK,KAAA;AAAA,YACzB,OAAA,EAAS,IAAA;AAAA,YACT,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,YAEhC,QAAA,EAAA;AAAA;AAAA,SACH,GAEA,GAAA;AAAA,QAED,KAAK,IAAA,mBAAOP,eAAC,IAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,MAAK,CAAA,GAAU,IAAA;AAAA,wBACxCA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,MAAA,EAAQ,MAAA,GAAS,CAAC,MAAA,EAAQ,GAAI,KAAK,MAAA,IAAU,EAAG,CAAA,GAAI,IAAA,CAAK;AAAA;AAAA,SAC3D;AAAA,QACC,MAAM,QAAA,GAAW,IAAA,mBAAOA,cAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO;AAAA;AAAA;AAAA,GACnD;AAEJ;AAGO,SAAS,OAAO,KAAA,EAEpB;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASK,0BAAA,EAAS;AACjD,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,EAAQ,MAAA,EAAQ,OAAO,IAAA;AAClC,EAAA,uBACEL,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,eAAe,KAAA,EAAO,QAAA,EAAU,QAAQ,GAAA,EAAK,KAAA,CAAM,IAAG,EAClE,QAAA,EAAA,KAAA,CAAM,OAAO,GAAA,CAAI,CAAC,sBACjBV,cAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MAEC,KAAA,EAAO;AAAA,QACL,OAAO,MAAA,CAAO,IAAA;AAAA,QACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,QACxB,cAAc,MAAA,CAAO,IAAA;AAAA,QACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM,GAAA;AAAA,QACvB,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA,OACtB;AAAA,MAEC,QAAA,EAAA;AAAA,KAAA;AAAA,IAVI;AAAA,GAYR,CAAA,EACH,CAAA;AAEJ;AAGO,SAAS,YAAY,KAAA,EAAmC;AAC7D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIJ,0BAAA,EAAS;AAC3B,EAAA,IAAI,CAAC,IAAA,CAAK,OAAA,EAAS,MAAA,EAAQ,OAAO,IAAA;AAClC,EAAA,uBACEL,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,eAAe,KAAA,EAAO,QAAA,EAAU,QAAQ,GAAA,EAAK,KAAA,CAAM,IAAG,EAClE,QAAA,EAAA,IAAA,CAAK,QAAQ,GAAA,CAAI,CAAC,sBACjBV,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAEC,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,QAAQ,CAAA,CAAE,MAAA;AAAA,MACV,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,MAAM,CAAA,CAAE;AAAA,KAAA;AAAA,IAJH,CAAA,EAAG,CAAA,CAAE,MAAM,CAAA,CAAA,EAAI,EAAE,KAAK,CAAA;AAAA,GAM9B,CAAA,EACH,CAAA;AAEJ;AAEA,SAAS,OAAO,KAAA,EAKb;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,OAAA,EAAQ;AACpC,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAC3C,EAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,CAAC,IAAA,EAAM,OAAO,IAAA;AAChC,EAAA,uBACEA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,IAAA,EAAM,OAAO,MAAA,GAAS,QAAA;AAAA,MACtB,SAAS,MAAM;AACb,QAAA,IAAI,IAAA,SAAa,IAAA,EAAK;AACtB,QAAA,KAAA,CAAM,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,EAAA,EAAI,MAAM,MAAM,CAAA;AAC5C,QAAA,QAAA,CAAS,OAAA,EAAS,YAAA,GAAe,KAAA,CAAM,IAAA,EAAM,MAAM,MAAM,CAAA;AAAA,MAC3D;AAAA;AAAA,GACF;AAEJ;AC1KO,SAAS,UAAU,KAAA,EAAmC;AAC3D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,OAAA,EAAQ;AACpC,EAAA,MAAM,KAAA,GAAA,CAAS,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,MAAA;AAAA,IAC/B,CAAC,CAAA,KAAM,cAAA,CAAe,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,IAAK,KAAA,CAAM,SAAA,CAAU,CAAA,CAAE,GAAG;AAAA,GAC5D;AACA,EAAA,uBACEM,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,IAAA,CAAK,KAAA,EAAO,GAAG,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,MAC3D,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAEjC,QAAA,EAAA;AAAA,wBAAAN,cAAAA,CAAC,KAAA,EAAA,EAAO,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,QAClB,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,OAAO,CAAA,CAAE,KAAA;AAAA,YACT,IAAA,EAAK,MAAA;AAAA,YACL,OAAA,EAAQ,WAAA;AAAA,YACR,UAAU,KAAA,CAAM,QAAA;AAAA,YAChB,SAAS,MAAM;AACb,cAAA,MAAM,IAAA,GAAO,SAAS,OAAA,EAAS,UAAA;AAC/B,cAAA,IAAI,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,GAAA,EAAK,MAAM,IAAI,CAAA;AAAA,mBAC3B,KAAKe,mBAAA,CAAQ,OAAA,CAAQ,CAAA,CAAE,GAAG,CAAA;AAAA,YACjC;AAAA,WAAA;AAAA,UATK,CAAA,CAAE;AAAA,SAWV;AAAA;AAAA;AAAA,GACH;AAEJ;ACnBO,SAAS,YAAY,KAAA,EAAmC;AAC7D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,EAAE,MAAA,EAAQ,CAAA,EAAE,GAAIJ,eAAAA,EAAQ;AAC9B,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,WAAA,KAAgB,OAAA,EAAQ;AAC3D,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AAEjD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIW,eAAwB,IAAI,CAAA;AACxD,EAAA,MAAM,QAAA,GAAW,YAAA;AAAA,IACf,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,OAAO,IAAA,CAAK,SAAA;AAAA,IAC9B,WAAA,EAAa;AAAA,GACf;AACA,EAAA,MAAM,IAAA,GAAO,QAAA,KAAa,MAAA,GAAS,IAAA,GAAO,QAAA;AAC1C,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,IAASJ,iBAAAA;AAE3B,EAAA,MAAM,SAAS,IAAA,CAAK,MAAA,GAChB,CAAA,OAAA,EAAK,UAAA,CAAW,KAAK,MAAA,CAAO,SAAA,EAAW,MAAM,CAAC,KAAK,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAA,CAAA,GACpE,CAAA,CAAE,YAAY,CAAA,IAAK,IAAA;AACvB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,UAAA,GACf,CAAA,CAAE,WAAA,EAAa;AAAA,IACb,KAAA,EAAOC,mBAAAA;AAAA,MACL,KAAK,UAAA,CAAW,MAAA;AAAA,MAChB,KAAK,UAAA,CAAW,QAAA;AAAA,MAChB;AAAA;AACF,GACD,CAAA,GACD,IAAA;AACJ,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,cAAA,GACd,CAAA,CAAE,eAAA,EAAiB;AAAA;AAAA,IAEjB,IAAA,EAAMI,qBAAA;AAAA,MACJ,IAAA,CAAK,cAAA;AAAA,MACL,EAAE,OAAO,CAAA,CAAE,OAAO,GAAG,QAAA,EAAU,CAAA,CAAE,UAAU,CAAA,EAAE;AAAA,MAC7C,MAAA;AAAA,MACA;AAAA;AACF,GACD,CAAA,GACD,IAAA;AAEJ,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA;AACjB,EAAA,MAAM,YAAA,GAAe,SAAS,OAAA,EAAS,YAAA;AACvC,EAAA,MAAM,OACJ,GAAA,IAAO,YAAA,IAAgB,CAAC,KAAA,CAAM,QAAA,GAC1B,MAAM,YAAA,CAAa,EAAE,IAAA,EAAM,GAAA,CAAI,MAAM,EAAA,EAAI,GAAA,CAAI,IAAG,EAAG,KAAA,CAAM,IAAI,CAAA,GAC7D,IAAA;AAGN,EAAA,MAAM,QAAQ,WAAA,EAAa,WAAA;AAC3B,EAAA,MAAMb,KAAAA,GAAO,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AAC5B,EAAA,MAAM,QAAQ,WAAA,EAAa,aAAA,IAAiB,EAAE,GAAA,EAAK,CAAA,EAAG,KAAK,CAAA,EAAE;AAC7D,EAAA,MAAM,GAAA,GACJ,UAAU,SAAA,IAAa,CAAC,MAAM,OAAA,IAAWA,KAAAA,EAAM,KAAA,IAASA,KAAAA,CAAK,MAAA,GACzD,IAAA,CAAK,IAAI,KAAA,CAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,GAAA,EAAKA,MAAK,KAAA,GAAQA,KAAAA,CAAK,MAAM,CAAC,CAAA,GACjE,IAAA;AACN,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,WAAA,EAAa,GAAA,KAAQ,OAAO,KAAA,KAAU,WAAW,KAAA,GAAQ,GAAA,CAAA;AAAA,IACzD,cAAc,MAAA,CAAO;AAAA,GACvB;AACA,EAAA,MAAM,GAAA,mBACJE,eAAAA,CAAAY,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,mBACClB,cAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,EAAE,GAAA,EAAK,IAAA,EAAK;AAAA,QACpB,OAAA,EAAS,MAAM,SAAA,CAAU,IAAI,CAAA;AAAA,QAC7B,OAAO,EAAE,GAAG,KAAA,EAAO,eAAA,EAAiB,OAAO,OAAA,EAAQ;AAAA,QACnD,UAAA,EAAY,KAAA;AAAA,QACZ,MAAA,EAAQ,CAAA,gBAAA,EAAmB,IAAA,CAAK,EAAE,CAAA;AAAA;AAAA,KACpC,GACE,WAAA,EAAa,WAAA,mBACfA,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAA,sBAAA,EAAyB,IAAA,CAAK,EAAE,CAAA,CAAA,EAC1D,QAAA,kBAAAV,cAAAA,CAAC,WAAA,CAAY,WAAA,EAAZ,EAAwB,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,CAAA,EAC/D,CAAA,mBAEAA,cAAAA;AAAA,MAACU,gBAAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY,KAAA;AAAA,QACZ,yBAAA,EAA0B,qBAAA;AAAA,QAC1B,MAAA,EAAQ,CAAA,mBAAA,EAAsB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,QACrC,KAAA,EAAO;AAAA,UACL,GAAG,KAAA;AAAA,UACH,iBAAiB,MAAA,CAAO,OAAA;AAAA,UACxB,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB;AAAA,SAClB;AAAA,QAEA,QAAA,kBAAAV,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAO,MAAA,CAAO,SAAA;AAAA,cACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS,KAAK,KAAK;AAAA;AAAA;AACtB;AAAA,KACF;AAAA,oBAEFH,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI,EAC5B,QAAA,EAAA;AAAA,sBAAAV,cAAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAe,CAAA,EAAI,eAAK,KAAA,EAAM,CAAA;AAAA,MACpC,IAAA,CAAK,2BAAWA,cAAAA,CAAC,QAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,IAAA,CAAK,QAAA,EAAS,CAAA,GAAU,IAAA;AAAA,MACrD,UAAU,KAAA,mBACTA,cAAAA,CAAC,IAAA,EAAA,EAAK,OAAK,IAAA,EAAE,QAAA,EAAA,CAAC,MAAA,EAAQ,KAAK,EAAE,MAAA,CAAO,OAAO,EAAE,IAAA,CAAK,QAAK,GAAE,CAAA,GACvD;AAAA,KAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEF,EAAA,uBACEM,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,IAAA,CAAK,KAAA,EAAO,KAAK,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,IAAI,CAAA,CACnD,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,IAAI,CAAA;AAAA,MACZ,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAEhC,QAAA,EAAA;AAAA,QAAA,IAAA,mBACCN,cAAAA;AAAA,UAACO,qBAAAA;AAAA,UAAA;AAAA,YACC,iBAAA,EAAkB,MAAA;AAAA,YAClB,oBAAoB,IAAA,CAAK,KAAA;AAAA,YACzB,OAAA,EAAS,IAAA;AAAA,YACT,KAAA,EAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG;AAAA,YACvB,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,YAEhC,QAAA,EAAA;AAAA;AAAA,SACH,GAEA,GAAA;AAAA,QAED,KAAK,IAAA,mBAAOP,eAAC,IAAA,EAAA,EAAM,QAAA,EAAA,IAAA,CAAK,MAAK,CAAA,GAAU,IAAA;AAAA,wBACxCA,cAAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAQ,OAAO,CAAC,IAAA,EAAM,GAAI,IAAA,CAAK,MAAA,IAAU,EAAG,CAAA,GAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,QACpE,MAAM,QAAA,GAAW,IAAA,mBAAOA,cAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO;AAAA;AAAA;AAAA,GACnD;AAEJ;AAGO,SAAS,SAAS,KAAA,EAAuB;AAC9C,EAAA,OAAO,KAAA,CACJ,KAAA,CAAM,KAAK,CAAA,CACX,MAAA,CAAO,OAAO,CAAA,CACd,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CACV,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG,WAAA,EAAY,IAAK,EAAE,CAAA,CACzC,IAAA,CAAK,EAAE,CAAA;AACZ;ACzJO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,GAAU,CAAC,CAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,MAAA,EAAQ,SAAA,EAAW,MAAM,IAAI,CAAA;AAClD,EAAA,uBACEM,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MACxD,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAEjC,QAAA,EAAA;AAAA,wBAAAN,cAAAA,CAAC,KAAA,EAAA,EAAO,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,QAClB,IAAA,CAAK,uBAAOA,cAAAA,CAAC,QAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA,GAAU,IAAA;AAAA,QAC7C,MAAA,IAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,2BACxBA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,OAAA,EAAS;AAAA;AAAA,SACX,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;ACFO,SAAS,SAAA,CACd,IAAA,EACA,KAAA,EACA,MAAA,EACA,QAAA,EACQ;AACR,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,EAAA;AAClD,EAAA,MAAM,CAAA,GAAI,KAAA;AACV,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,MAAA;AACH,MAAA,OAAO,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,MAAM,IAAA,CAAK,IAAI,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AAAA,IAC/D,KAAK,YAAA;AACH,MAAA,OAAOc,uBAAAA;AAAA,QACL,MAAA,CAAO,CAAA,CAAE,KAAA,IAAS,EAAE,CAAA;AAAA,QACpB,OAAO,CAAA,CAAE,GAAA,KAAQ,QAAA,GAAW,EAAE,GAAA,GAAM,MAAA;AAAA,QACpC,MAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,KAAK,aAAA;AACH,MAAA,OAAOD,mBAAAA;AAAA,QACL,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAC,CAAA;AAAA,QACpB,MAAA,CAAO,CAAA,CAAE,QAAA,IAAY,KAAK,CAAA;AAAA,QAC1B;AAAA,OACF;AAAA,IACF,KAAK,SAAA;AACH,MAAA,OAAO,CAAC,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,eAAe,SAAS,CAAA,CACjE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAC,CAAA,CACf,MAAA,CAAO,CAAC,CAAA,KAAM,OAAO,MAAM,QAAA,IAAY,CAAC,CAAA,CACxC,IAAA,CAAK,IAAI,CAAA;AAAA,IACd,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,CAAA,CAAE,OAAO,CAAA,GAClC,CAAA,CAAE,UACH,EAAC;AACL,MAAA,OAAO,QACJ,GAAA,CAAI,CAAC,MAAM,CAAA,EAAG,OAAA,CAAQ,EAAE,GAAA,EAAK,MAAM,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,KAAK,CAAA,MAAA,EAAI,CAAA,CAAE,GAAG,CAAA,CAAE,CAAA,CAC1D,KAAK,IAAI,CAAA;AAAA,IACd;AAAA,IACA;AACE,MAAA,OAAO,OAAO,UAAU,QAAA,GAAW,IAAA,CAAK,UAAU,KAAK,CAAA,GAAI,OAAO,KAAK,CAAA;AAAA;AAE7E;AAEA,IAAM,IAAA,GAAO,CAAC,KAAA,EAAO,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAG7D,SAAS,OAAA,CAAQ,KAAa,MAAA,EAAoC;AAChE,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC1B,EAAA,IAAI,CAAA,GAAI,GAAG,OAAO,GAAA;AAClB,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ;AAAA,MACrC,OAAA,EAAS,OAAA;AAAA,MACT,QAAA,EAAU;AAAA,KACX,CAAA,CAAE,MAAA,CAAO,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,CAAA,EAAG,CAAA,GAAI,CAAC,CAAC,CAAC,CAAA;AAAA,EAC9C,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,GAAA;AAAA,EACT;AACF;AAEA,SAAS,WAAA,CACP,CAAA,EACA,OAAA,EACA,MAAA,EACe;AACf,EAAA,IAAI,OAAA,KAAY,WAAA,EAAa,OAAO,CAAA,CAAE,mBAAmB,CAAA;AACzD,EAAA,IAAI,OAAA,KAAY,UAAA,EAAY,OAAO,CAAA,CAAE,kBAAkB,CAAA;AACvD,EAAA,IAAI,OAAA,KAAY,QAAA,EAAU,OAAO,CAAA,CAAE,gBAAgB,CAAA;AACnD,EAAA,IAAI,OAAA,KAAY,SAAA,EAAW,OAAO,CAAA,CAAE,iBAAiB,CAAA;AACrD,EAAA,IAAI,MAAA,KAAW,WAAA,EAAa,OAAO,CAAA,CAAE,mBAAmB,CAAA;AACxD,EAAA,IAAI,MAAA,KAAW,UAAA,EAAY,OAAO,CAAA,CAAE,kBAAkB,CAAA;AACtD,EAAA,IAAI,MAAA,KAAW,SAAA,EAAW,OAAO,CAAA,CAAE,iBAAiB,CAAA;AACpD,EAAA,IAAI,MAAA,KAAW,SAAA,EAAW,OAAO,CAAA,CAAE,iBAAiB,CAAA;AACpD,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAO,GAAIF,eAAAA,EAAQ;AAC9B,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,KAAa,OAAA,EAAQ;AAC9C,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACzC,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,QAAA,EAAU,cAAA,EAAgB,MAAM,IAAI,CAAA;AACzD,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,MAAM,UAAU,WAAA,CAAY,CAAA,EAAG,MAAM,IAAA,CAAK,OAAA,EAAS,SAAS,MAAM,CAAA;AAClE,EAAA,MAAM,UAAA,GAAa,OAAA,KAAY,IAAA,IAAQ,CAAC,KAAA,CAAM,QAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,CAAC,QAAA,KAA+B;AAC7C,IAAA,MAAM,UAAA,GAAa,SAAS,OAAA,EAAS,UAAA;AACrC,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,KAAA,CACG,cAAA;AAAA,MACC,MAAM,IAAA,CAAK,EAAA;AAAA,MACX,MAAgC,UAAA,CAAW,KAAA,CAAM,IAAA,EAAM,QAAQ;AAAA,KACjE,CACC,KAAA;AAAA,MAAM,CAAC,UACN,QAAA,CAAS,OAAA,EAAS,YAAY,CAAA,oBAAA,EAAuB,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA,EAAI;AAAA,QACpE,IAAA,EAAM;AAAA,OACP;AAAA,KACH;AAAA,EACJ,CAAA;AACA,EAAA,MAAM,MAAA,GAAU,QAAA,CAAS,MAAA,CAA4B,GAAA,CAAI,CAAC,CAAA,KAAM;AAC9D,IAAA,MAAM,QAAQ,SAAA,CAAU,CAAA,CAAE,MAAM,CAAA,CAAE,KAAA,EAAO,QAAQ,QAAQ,CAAA;AACzD,IAAA,MAAM,MAAA,GACJ,CAAA,CAAE,MAAA,KAAW,MAAA,IAAa,EAAE,MAAA,KAAW,IAAA,GACnC,IAAA,GACA,SAAA,CAAU,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAClD,IAAA,OAAO;AAAA,MACL,KAAK,CAAA,CAAE,GAAA;AAAA,MACP,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,KAAA,EACE,WAAW,IAAA,IAAQ,MAAA,KAAW,QAAQ,CAAA,EAAG,MAAM,CAAA,QAAA,EAAM,KAAK,CAAA,CAAA,GAAK;AAAA,KACnE;AAAA,EACF,CAAC,CAAA;AACD,EAAA,uBACEC,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,QAAA,CAAS,KAAA;AAAA,QACT,QAAA,CAAS,OAAA;AAAA,QACT,GAAG,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,CAAE,KAAK,CAAA,EAAA,EAAK,CAAA,CAAE,KAAK,CAAA,CAAE,CAAA;AAAA,QAC7C;AAAA,OACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,IAAI,CAAA;AAAA,MACZ,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,mBAAA,EAAsB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAErC,QAAA,EAAA;AAAA,wBAAAN,cAAAA,CAAC,KAAA,EAAA,EAAO,QAAA,EAAA,QAAA,CAAS,KAAA,EAAM,CAAA;AAAA,wBACvBA,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAK,IAAA,EAAE,mBAAS,OAAA,EAAQ,CAAA;AAAA,wBAC9BA,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC1B,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXJ,eAAAA,CAACI,gBAAAA,EAAA,EAAiB,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC7D,QAAA,EAAA;AAAA,0BAAAV,cAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO;AAAA,gBACL,OAAO,MAAA,CAAO,SAAA;AAAA,gBACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,gBACpB,QAAA,EAAU;AAAA,eACZ;AAAA,cAEC,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA,WACL;AAAA,0BACAT,cAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,IAAA,EAAM,UAAU,IAAA,CAAK,IAAA,CAAK,EAAA,EAAI,IAAA,EAAM,CAAA,EAAE;AAAA,cAE5D,QAAA,EAAA,CAAA,CAAE;AAAA;AAAA;AACL,SAAA,EAAA,EAdS,CAAA,CAAE,GAeb,CACD,CAAA,EACH,CAAA;AAAA,QACC,0BACCT,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,KAAA,EACE,KAAA,CAAM,IAAA,CAAK,OAAA,KAAY,WAAA,IACvB,SAAS,MAAA,KAAW,WAAA,GAChB,MAAA,CAAO,OAAA,GACP,MAAA,CAAO,SAAA;AAAA,cACb,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,UAAA,EAAY;AAAA,aACd;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH,GACE,IAAA;AAAA,QACH,UAAA,mBACCH,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,KAAA,CAAM,IAAG,EACnE,QAAA,EAAA;AAAA,0BAAAV,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,iBAAiB,CAAA;AAAA,cAC1B,OAAA,EAAQ,SAAA;AAAA,cACR,MAAM,KAAA,CAAM,IAAA;AAAA,cACZ,UAAU,KAAA,CAAM,IAAA;AAAA,cAChB,OAAA,EAAS,MAAM,MAAA,CAAO,SAAS,CAAA;AAAA,cAC/B,MAAA,EAAO;AAAA;AAAA,WACT;AAAA,0BACAA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,iBAAiB,CAAA;AAAA,cAC1B,UAAU,KAAA,CAAM,IAAA;AAAA,cAChB,OAAA,EAAS,MAAM,MAAA,CAAO,SAAS,CAAA;AAAA,cAC/B,MAAA,EAAO;AAAA;AAAA,WACT;AAAA,UACC,uBACCA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,cACzB,OAAA,EAAQ,MAAA;AAAA,cACR,IAAA,EAAK,MAAA;AAAA,cACL,OAAA,EAAS;AAAA;AAAA,WACX,GACE;AAAA,SAAA,EACN,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;ACpMA,IAAM,KAAA,uBAAY,GAAA,CAAI;AAAA,EACpB,eAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,OAAA,uBAAc,GAAA,CAAI,CAAC,iBAAiB,QAAA,EAAU,aAAA,EAAe,OAAO,CAAC,CAAA;AAIpE,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,EAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,OAAA,EAAQ;AACpC,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAO,GAAIW,eAAAA,EAAQ;AAC9B,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAM,KAAA,KAAUN,0BAAA,EAAS;AACzC,EAAA,MAAM,WAAA,GAAcc,+BAAA;AAAA,IAClB,KAAA;AAAA,IACA,CAAC,MAAM,CAAA,CAAE;AAAA,GACX;AACA,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,MAAM,IAAA,GAAa,CAAC,MAAA,EAAQ,UAAA,GAAa,SAAS,WAAA,KAAgB;AAChE,IAAA,IAAI;AACF,MAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,EAAA,EAAI,UAAA,EAAY,MAAM,CAAA;AAAA,IAC1C,SAAS,KAAA,EAAO;AACd,MAAA,QAAA,CAAS,SAAS,SAAA,GAAY,CAAA,kBAAA,EAAqB,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA,EAAI;AAAA,QAClE,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AACA,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,SAAS,WAAW,CAAA;AACxD,EAAA,MAAM,QAAQ,QAAA,CAAS,KAAA;AACvB,EAAA,MAAM,OAAO,KAAA,KAAU,MAAA,IAAU,CAAC,MAAA,IAAU,CAAC,KAAA,CAAM,QAAA;AACnD,EAAA,MAAM,OAAA,GACJ,UAAU,UAAA,GACN,UAAA,CAAW,UAAU,MAAA,EAAQ,CAAA,CAAE,eAAe,CAAC,CAAA,GAC/C,IAAA;AACN,EAAA,uBACEb,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,QAAA,CAAS,MAAA,EAAQ,OAAO,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MAC3D,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,mBAAA,EAAsB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAEpC,QAAA,EAAA;AAAA,QAAA,QAAA,CAAS,2BACRN,cAAAA,CAACS,gBAAAA,EAAA,EAAK,OAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,UAAU,IAAA,CAAK,IAAA,CAAK,EAAA,EAAG,EAC5D,YAAE,cAAA,EAAgB;AAAA,UACjB,IAAA,EAAM,SAAS,QAAA,CAAS,IAAA;AAAA,UACxB,KAAA,EAAO,SAAS,QAAA,CAAS;AAAA,SAC1B,GACH,CAAA,GACE,IAAA;AAAA,wBACJT,cAAAA,CAAC,KAAA,EAAA,EAAO,QAAA,EAAA,QAAA,CAAS,MAAA,EAAO,CAAA;AAAA,QACvB,QAAA,CAAS,uBAAOA,cAAAA,CAAC,QAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,QAAA,CAAS,IAAA,EAAK,CAAA,GAAU,IAAA;AAAA,QACrD,KAAA,KAAU,UAAA,mBACTM,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI,EAC5B,QAAA,EAAA;AAAA,0BAAAV,eAAC,IAAA,EAAA,EAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA;AAAA,UAClC,OAAA,mBAAUA,cAAAA,CAAC,IAAA,EAAA,EAAM,mBAAQ,CAAA,GAAU;AAAA,SAAA,EACtC,CAAA,GACE,KAAA,KAAU,YAAA,mBACZA,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA,GACjC,CAAC,KAAA,CAAM,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,IAAK,WAAA,mBAC/BA,cAAAA,CAAC,QAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EAAE,CAAA,GAChC,QAAA,CAAS,IAAA,KAAS,8BACpBA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,OAAA,EAAS,CAAC,KAAA,CAAM,QAAA;AAAA,YAChB;AAAA;AAAA,4BAGFA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,QAAA;AAAA,YACA,OAAA,EAAS,IAAA;AAAA,YACT,IAAA;AAAA,YACA;AAAA,WAAA;AAAA,UAJK,QAAA,CAAS;AAAA;AAKhB;AAAA;AAAA,GAEJ;AAEJ;AAEA,SAAS,OAAO,KAAA,EAKb;AACD,EAAA,MAAM,EAAE,QAAA,EAAU,IAAA,EAAM,OAAA,EAAQ,GAAI,KAAA;AACpC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIN,0BAAA,EAAS;AAC3B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,OAAA,EAAQ;AAC7B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIW,cAAAA,CAAkC,EAAE,CAAA;AAC9D,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,EAAA,MAAM,SAAS,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,IAAK,CAAC,QAAA,CAAS,YAAA;AAC9C,EAAA,MAAM,OAAA,GAAUI,0BAAA,CAAc,QAAA,EAAU,KAAoB,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,GAAS,KAAA,KAAU;AACjC,IAAA,IAAIA,0BAAA,CAAc,QAAA,EAAU,MAAqB,CAAA,KAAM,IAAA;AACrD,MAAA,IAAA,CAAK,MAAqB,CAAA;AAAA,EAC9B,CAAA;AACA,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,YAAA;AAAA,MACL,KAAK,WAAA;AACH,QAAA,uBACEpB,cAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA,EAAQ,MAAM,IAAA,IAAmB,EAAA;AAAA,YACjC,UAAU,CAAC,IAAA,KAAS,QAAA,CAAS,EAAE,MAAM;AAAA;AAAA,SACvC;AAAA,MAEJ,KAAK,QAAA;AACH,QAAA,uBACEA,cAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAO,KAAA,CAAM,MAAA;AAAA,YACb,UAAU,CAAC,CAAA,KAAM,SAAS,EAAE,MAAA,EAAQ,GAAG;AAAA;AAAA,SACzC;AAAA,MAEJ,KAAK,OAAA;AACH,QAAA,uBACEA,cAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,OAAA;AAAA,YACA,QAAQ,CAAC,CAAA,KAAM,OAAO,EAAE,MAAA,EAAQ,GAAG;AAAA;AAAA,SACrC;AAAA,MAEJ,KAAK,MAAA;AACH,QAAA,uBACEA,cAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAO,KAAA,CAAM,IAAA;AAAA,YACb,UAAU,CAAC,IAAA,KAAS,QAAA,CAAS,EAAE,MAAM;AAAA;AAAA,SACvC;AAAA,MAEJ,KAAK,OAAA;AACH,QAAA,uBACEA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,YAC3B,QAAA,EAAU,CAAC,OAAA,IAAW,CAAC,SAAS,OAAA,EAAS,WAAA;AAAA,YACzC,SAAS,MAAM;AACb,cAAA,QAAA,CAAS,OAAA,EACL,cAAc,QAAA,EAAU,KAAA,CAAM,IAAI,CAAA,CACnC,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,gBAAA,IAAI,QAAQ,IAAA,CAAK,EAAE,UAAA,EAAY,MAAA,CAAO,YAAY,CAAA;AAAA,cACpD,CAAC,CAAA,CACA,KAAA;AAAA,gBAAM,CAAC,KAAA,KACN,QAAA,CAAS,OAAA,EAAS,SAAA;AAAA,kBAChB,CAAA,iBAAA,EAAoB,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AAAA,kBACjC,EAAE,MAAM,cAAA;AAAe;AACzB,eACF;AAAA,YACJ;AAAA;AAAA,SACF;AAAA,MAEJ;AACE,QAAA,uBACEA,cAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,QAAA;AAAA,YACA,OAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA,EAAU,CAAC,IAAA,KAAU,MAAA,GAAS,OAAO,IAAI,CAAA,GAAI,SAAS,IAAI;AAAA;AAAA,SAC5D;AAAA;AAEN,EACF,CAAA,GAAG;AACH,EAAA,MAAM,WAAA,GAAc,MAAA,IAAU,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,OAAA;AAC3D,EAAA,uBACEM,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC1B,QAAA,EAAA;AAAA,IAAA,KAAA;AAAA,oBACDJ,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,KAAA,CAAM,IAAG,EAClE,QAAA,EAAA;AAAA,MAAA,WAAA,GAAc,uBACbV,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,UACzB,OAAA,EAAQ,SAAA;AAAA,UACR,QAAA,EAAU,CAAC,OAAA,IAAW,OAAA,KAAY,IAAA;AAAA,UAClC,OAAA,EAAS,MAAM,MAAA,EAAO;AAAA,UACtB,MAAA,EAAO;AAAA;AAAA,OACT;AAAA,MAED,QAAA,CAAS,QAAA,GAAW,IAAA,mBACnBA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,UACvB,OAAA,EAAQ,MAAA;AAAA,UACR,UAAU,CAAC,OAAA;AAAA,UACX,SAAS,MAAM,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM;AAAA;AAAA;AACvC,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,aAAa,KAAA,EAKnB;AACD,EAAA,MAAM,EAAE,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,SAAQ,GAAI,KAAA;AAC/C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACjD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIW,eAAS,EAAE,CAAA;AACvC,EAAA,MAAM,KAAA,GACJ,QAAA,CAAS,IAAA,KAAS,cAAA,IAAkB,SAAS,IAAA,KAAS,cAAA;AACxD,EAAA,MAAM,MAAA,GAAU,KAAA,CAAM,MAAA,IAAmC,EAAC;AAC1D,EAAA,MAAM,QAAQ,KAAA,CAAM,UAAA;AACpB,EAAA,MAAM,OAAO,QAAA,CAAS,iBAAA;AACtB,EAAA,MAAM,IAAA,GAAO,SAAS,IAAA,KAAS,aAAA;AAC/B,EAAA,MAAM,OAAA,GAAUK,cAAQ,MAAM;AAC5B,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,OAAA,IAAW,EAAC;AACjC,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,EAAK,CAAE,WAAA,EAAY;AACpC,IAAA,OAAO,IAAA,IAAQ,CAAA,GACX,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,CAAM,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA,GACnD,GAAA;AAAA,EACN,GAAG,CAAC,QAAA,CAAS,OAAA,EAAS,MAAA,EAAQ,IAAI,CAAC,CAAA;AACnC,EAAA,MAAM,QAAQ,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,OAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,CAAC,KAAA,KAAkB;AAC9B,IAAA,IAAI,IAAA,IAAQ,KAAA,KAAU,IAAA,CAAK,KAAA,EAAO,OAAO,QAAA,CAAS,EAAE,MAAA,EAAQ,CAAC,KAAK,CAAA,EAAG,CAAA;AACrE,IAAA,MAAM,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,MAAM,KAAK,CAAA;AACnD,IAAA,MAAM,OAAO,KAAA,GACT,IAAA,CAAK,SAAS,KAAK,CAAA,GACjB,KAAK,MAAA,CAAO,CAAC,MAAM,CAAA,KAAM,KAAK,IAC9B,CAAC,GAAG,MAAM,KAAK,CAAA,GACjB,CAAC,KAAK,CAAA;AACV,IAAA,MAAM,SAAA,GACJ,KAAA,KAAU,MAAA,KAAc,KAAA,IAAS,SAAS,IAAA,KAAS,eAAA,CAAA;AACrD,IAAA,QAAA,CAAS;AAAA,MACP,GAAI,IAAA,CAAK,MAAA,GAAS,EAAE,MAAA,EAAQ,IAAA,KAAS,EAAC;AAAA,MACtC,GAAI,SAAA,GAAY,EAAE,UAAA,EAAY,KAAA,KAAU;AAAC,KAC1C,CAAA;AAAA,EACH,CAAA;AACA,EAAA,MAAM,GAAA,GAAM,MAAM,KAAA,IAAST,iBAAAA;AAC3B,EAAA,uBACEN,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC1B,QAAA,EAAA;AAAA,IAAA,IAAA,mBACCV,cAAAA;AAAA,MAACsB,qBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,MAAA;AAAA,QACP,YAAA,EAAc,SAAA;AAAA,QACd,WAAA,EAAa,EAAE,gBAAgB,CAAA;AAAA,QAC/B,sBAAsB,MAAA,CAAO,SAAA;AAAA,QAC7B,kBAAA,EAAoB,EAAE,gBAAgB,CAAA;AAAA,QACtC,QAAA,EAAU,OAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,WAAA,EAAa,CAAA;AAAA,UACb,aAAa,MAAA,CAAO,MAAA;AAAA,UACpB,cAAc,MAAA,CAAO,EAAA;AAAA,UACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,UACzB,SAAA,EAAW,EAAA;AAAA,UACX,OAAO,MAAA,CAAO,IAAA;AAAA,UACd,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA;AACtB;AAAA,KACF,GACE,IAAA;AAAA,IACH,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM;AAChB,MAAA,MAAM,QACJ,QAAA,CAAS,IAAA,KAAS,iBAAiB,SAAA,CAAU,CAAA,CAAE,SAAS,CAAA,GAAI,IAAA;AAC9D,MAAA,uBACEtB,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,OAAO,CAAA,CAAE,KAAA;AAAA,UACT,IAAA,EAAM,QAAQ,UAAA,GAAa,OAAA;AAAA,UAC3B,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA;AAAA,UACjC,UAAU,CAAC,OAAA;AAAA,UACV,GAAI,EAAE,WAAA,GAAc,EAAE,MAAM,CAAA,CAAE,WAAA,KAAgB,EAAC;AAAA,UAChD,OAAA,EAAS,MAAM,IAAA,CAAK,CAAA,CAAE,KAAK,CAAA;AAAA,UAE1B,QAAA,EAAA,KAAA,mBACCM,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EACjD,QAAA,EAAA;AAAA,4BAAAV,cAAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,MAAA,EAAQ,EAAE,GAAA,EAAK,KAAA,EAAM;AAAA,gBACrB,KAAA,EAAO,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,EAAA,EAAI,YAAA,EAAc,OAAO,EAAA,EAAG;AAAA,gBACxD,UAAA,EAAY;AAAA;AAAA,aACd;AAAA,4BACAA,cAAAA;AAAA,cAAC,WAAA;AAAA,cAAA;AAAA,gBACC,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA;AAAA,gBACjC,MAAM,CAAA,CAAE;AAAA;AAAA;AACV,WAAA,EACF,CAAA,mBAEAA,cAAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,KAAK,CAAA,EAAG,IAAA,EAAM,CAAA,CAAE,KAAA,EAAO;AAAA,SAAA;AAAA,QArB7D,CAAA,CAAE;AAAA,OAuBT;AAAA,IAEJ,CAAC,CAAA;AAAA,IACA,uBACCA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,IAAA,EAAM,QAAQ,UAAA,GAAa,OAAA;AAAA,QAC3B,QAAA,EAAU,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,QACpC,UAAU,CAAC,OAAA;AAAA,QACX,OAAA,EAAS,MAAM,IAAA,CAAK,IAAA,CAAK,KAAK;AAAA;AAAA,KAChC,GACE,IAAA;AAAA,IACH,QAAA,CAAS,+BACRA,cAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAS,gBAAA,IAAoB,GAAA;AAAA,QAClC,OAAA;AAAA,QACA,KAAA,EAAO,KAAA;AAAA,QACP,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,UAAA,MAAM,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,MAAM,KAAK,CAAA;AACnD,UAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,KAAS,eAAA,IAAmB,KAAA;AACxD,UAAA,QAAA,CAAS;AAAA,YACP,GAAI,UAAA,IAAc,IAAA,CAAK,MAAA,GACnB,EAAE,MAAA,EAAQ,QAAA,CAAS,IAAA,KAAS,eAAA,GAAkB,EAAC,GAAI,IAAA,KACnD,EAAC;AAAA,YACL,GAAI,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,YAAY,IAAA;AAAK,WAClD,CAAA;AAAA,QACH;AAAA;AAAA,KACF,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,YAAY,KAAA,EAGlB;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAIK,0BAAA,EAAS;AAClC,EAAA,uBACEL,cAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,KAAA,CAAM,QAAA,GAAW,MAAA,CAAO,YAAY,MAAA,CAAO,IAAA;AAAA,QAClD,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,QACpB,SAAA,EAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAEA,SAAS,UAAU,KAAA,EAKhB;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIE,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACjD,EAAA,MAAM,EAAA,GAAK,MAAM,KAAA,KAAU,MAAA;AAC3B,EAAA,uBACEC,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC3B,QAAA,EAAA;AAAA,oBAAAV,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,QACxB,IAAA,EAAK,UAAA;AAAA,QACL,QAAA,EAAU,EAAA;AAAA,QACV,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA;AAAA,QACjB,SAAS,MAAM,KAAA,CAAM,QAAA,CAAS,EAAA,GAAK,SAAY,EAAE;AAAA;AAAA,KACnD;AAAA,IACC,EAAA,mBACCM,eAAAA,CAAAY,mBAAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAlB,cAAAA;AAAA,QAACsB,qBAAA;AAAA,QAAA;AAAA,UACC,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,YAAA,EAAc,CAAC,IAAA,KAAS,KAAA,CAAM,SAAS,IAAI,CAAA;AAAA,UAC3C,kBAAA,EAAoB,EAAE,eAAe,CAAA;AAAA,UACrC,MAAA,EAAO,0BAAA;AAAA,UACP,UAAU,KAAA,CAAM,OAAA;AAAA,UAChB,KAAA,EAAO;AAAA,YACL,WAAA,EAAa,CAAA;AAAA,YACb,aAAa,MAAA,CAAO,MAAA;AAAA,YACpB,cAAc,MAAA,CAAO,EAAA;AAAA,YACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,YACzB,SAAA,EAAW,EAAA;AAAA,YACX,OAAO,MAAA,CAAO,IAAA;AAAA,YACd,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA;AACtB;AAAA,OACF;AAAA,sBACAtB,eAAC,cAAA,EAAA,EAAe,GAAA,EAAK,MAAM,GAAA,EAAK,IAAA,EAAM,KAAA,CAAM,KAAA,IAAS,EAAA,EAAI;AAAA,KAAA,EAC3D,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,eAAe,KAAA,EAGrB;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAK,GAAIN,0BAAA,EAAS;AAClC,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,GAAA,GAAMkB,uBAAA,CAAW,MAAM,IAAI,CAAA;AAC9C,EAAA,uBACEvB,cAAAA;AAAA,IAACS,gBAAAA;AAAA,IAAA;AAAA,MACC,uBAAA,EAAyB,IAAA,GAAO,EAAA,GAAK,QAAA,GAAW,MAAA;AAAA,MAChD,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,IAAA,GAAO,CAAA,GAAI,MAAA,CAAO,SAAS,MAAA,CAAO,SAAA;AAAA,QACzC,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA,OACtB;AAAA,MAEC,QAAA,EAAA,CAAA,CAAE,wBAAA,EAA0B,EAAE,KAAA,EAAO,MAAM;AAAA;AAAA,GAC9C;AAEJ;AAEA,SAAS,WAAW,KAAA,EAKjB;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASJ,0BAAA,EAAS;AACjD,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,IAAA,KAAS,WAAA;AACrC,EAAA,MAAM,MAAM,KAAA,CAAM,QAAA,CAAS,IAAA,EAAM,UAAA,KAAe,OAAO,GAAA,GAAO,GAAA,CAAA;AAC9D,EAAA,uBACEC,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC3B,QAAA,EAAA;AAAA,oBAAAV,cAAAA;AAAA,MAACsB,qBAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAA,CAAM,KAAA;AAAA,QACb,cAAc,KAAA,CAAM,QAAA;AAAA,QACpB,kBAAA,EAAoB,MAAM,QAAA,CAAS,MAAA;AAAA,QACnC,UAAU,KAAA,CAAM,OAAA;AAAA,QAChB,SAAA,EAAW,IAAA;AAAA,QACX,MAAA,EAAO,yBAAA;AAAA,QACP,KAAA,EAAO;AAAA,UACL,WAAA,EAAa,CAAA;AAAA,UACb,aAAa,MAAA,CAAO,MAAA;AAAA,UACpB,cAAc,MAAA,CAAO,EAAA;AAAA,UACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,UACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,UACvB,SAAA,EAAW,OAAO,EAAA,GAAK,EAAA;AAAA,UACvB,OAAO,MAAA,CAAO,IAAA;AAAA,UACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,UACpB,iBAAA,EAAmB,OAAO,KAAA,GAAQ;AAAA;AACpC;AAAA,KACF;AAAA,oBACAtB,cAAAA,CAAC,cAAA,EAAA,EAAe,GAAA,EAAU,IAAA,EAAM,MAAM,KAAA,EAAO;AAAA,GAAA,EAC/C,CAAA;AAEJ;AAEA,SAAS,aAAa,KAAA,EAKnB;AACD,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,QAAA,CAAS,MAAA,IAAU,EAAE,KAAK,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,CAAA,EAAE;AACnE,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASK,0BAAA,EAAS;AACzC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,GAAA;AACnC,EAAA,MAAM,QAAQ,CAAC,CAAA,KACb,IAAA,CAAK,GAAA,CAAI,MAAM,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,KAAK,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,KAAK,CAAA,EAAG,MAAM,QAAA,CAAS,MAAA,EAAQ,IAAA,GAAO,CAAA,CAAA,EAAI,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,IAAI,KAAK,EAAE,CAAA,CAAA;AAC5F,EAAA,uBACEC,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,YAAA;AAAA,MAClB,kBAAA,EAAoB,MAAM,QAAA,CAAS,MAAA;AAAA,MACnC,kBAAA,EAAoB;AAAA,QAClB,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,KAAK,KAAA,CAAM,GAAA;AAAA,QACX,GAAA,EAAK,KAAA;AAAA,QACL,IAAA,EAAM;AAAA,OACR;AAAA,MACA,oBAAA,EAAsB,CAAC,EAAE,IAAA,EAAM,aAAY,EAAG,EAAE,IAAA,EAAM,WAAA,EAAa,CAAA;AAAA,MACnE,MAAA,EAAO,2BAAA;AAAA,MACP,qBAAA,EAAuB,CAAC,CAAA,KACtB,KAAA,CAAM,QAAA;AAAA,QACJ,KAAA;AAAA,UACE,KAAA,IACG,EAAE,WAAA,CAAY,UAAA,KAAe,cAC1B,KAAA,CAAM,IAAA,GACN,CAAC,KAAA,CAAM,IAAA;AAAA;AACf,OACF;AAAA,MAEF,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,YAAY,QAAA,EAAU,GAAA,EAAK,MAAM,EAAA,EAAG;AAAA,MAEnE,QAAA,EAAA;AAAA,wBAAAV,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,QAAA;AAAA,YACN,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA,IAAW,SAAS,KAAA,CAAM,GAAA;AAAA,YAC3C,OAAA,EAAS,MAAM,KAAA,CAAM,QAAA,CAAS,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAI,CAAC;AAAA;AAAA,SACzD;AAAA,wBACAA,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAO,MAAA,CAAO,IAAA;AAAA,cACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,QAAA,EAAU,EAAA;AAAA,cACV,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBACAT,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,GAAA;AAAA,YACN,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA,IAAW,SAAS,KAAA,CAAM,GAAA;AAAA,YAC3C,OAAA,EAAS,MAAM,KAAA,CAAM,QAAA,CAAS,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAI,CAAC;AAAA;AAAA;AACzD;AAAA;AAAA,GACF;AAEJ;AAEA,SAAS,YAAY,KAAA,EAIlB;AACD,EAAA,MAAM,KAAA,GAAQ,MAAM,QAAA,CAAS,KAAA;AAC7B,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASK,0BAAA,EAAS;AACzC,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,CAAA,GAAI,KAAA,CAAM,GAAA,EAAK,CAAA,IAAK,KAAA,CAAM,OAAO,MAAA,CAAO,MAAA,GAAS,EAAA,EAAI,CAAA,IAAK,KAAA,CAAM,IAAA;AACvE,IAAA,MAAA,CAAO,KAAK,CAAC,CAAA;AACf,EAAA,uBACEC,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC3B,QAAA,EAAA;AAAA,oBAAAV,eAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,eAAe,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,MAAM,EAAA,EAAG,EAClE,iBAAO,GAAA,CAAI,CAAC,sBACXV,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,QACf,IAAA,EAAK,OAAA;AAAA,QACL,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA;AAAA,QACjB,OAAA,EAAS,MAAM,KAAA,CAAM,MAAA,CAAO,CAAC;AAAA,OAAA;AAAA,MAJxB;AAAA,KAMR,CAAA,EACH,CAAA;AAAA,oBACAM,eAAAA,CAACI,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,cAAA,EAAgB,eAAA,EAAgB,EACnE,QAAA,EAAA;AAAA,sBAAAV,cAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,EAAA,EAAG,EAC5D,gBAAM,SAAA,EACT,CAAA;AAAA,sBACAT,cAAAA,CAACS,gBAAAA,EAAA,EAAK,OAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,UAAU,IAAA,CAAK,IAAA,CAAK,EAAA,EAAG,EAC5D,gBAAM,SAAA,EACT;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAM,GAAA,GAAM,CAAC,CAAA,EAAW,CAAA,EAAW,CAAA,KACjC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAG/F,SAAS,WAAW,KAAA,EAKjB;AACD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIE,eAAAA,EAAQ;AAC3B,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACzC,EAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,IAAA;AAC9B,EAAA,MAAM,KAAA,GACJ,KAAA,CAAM,KAAA,IAAS,MAAA,EAAQ,GAAA,IAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY,CAAE,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIW,eAAS,OAAO;AAAA,IACxC,GAAG,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,IAC3B,GAAG,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG,CAAC,CAAC,CAAA,GAAI;AAAA,GACjC,CAAE,CAAA;AACF,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAC,EAAE,UAAA,EAAW;AACpE,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,IAAI;AACF,MAAA,OAAO,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ;AAAA,QACrC,KAAA,EAAO,MAAA;AAAA,QACP,IAAA,EAAM,SAAA;AAAA,QACN,QAAA,EAAU;AAAA,OACX,CAAA,CAAE,MAAA,CAAO,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAAA,IACnD,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,GAAG,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,IAAI,CAAC,CAAA,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,GAAG;AACH,EAAA,MAAM,IAAA,GAAO,CAAC,EAAA,KAAe;AAC3B,IAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,CAAA,GAAI,EAAA,EAAI,CAAC,CAAC,CAAA;AACrD,IAAA,QAAA,CAAS,EAAE,GAAG,CAAA,CAAE,cAAA,IAAkB,CAAA,EAAG,CAAA,CAAE,WAAA,EAAY,EAAG,CAAA;AAAA,EACxD,CAAA;AACA,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,KACd,MAAA,EAAQ,GAAA,KAAQ,MAAA,IAAa,IAAA,GAAO,MAAA,CAAO,GAAA,IAC3C,MAAA,EAAQ,GAAA,KAAQ,MAAA,IAAa,OAAO,MAAA,CAAO,GAAA;AAC9C,EAAA,uBACEV,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAC3B,QAAA,EAAA;AAAA,oBAAAJ,eAAAA;AAAA,MAACI,gBAAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB;AAAA,SAClB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAV,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,QAAA;AAAA,cACN,OAAA,EAAQ,MAAA;AAAA,cACR,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA;AAAA,cACjB,OAAA,EAAS,MAAM,IAAA,CAAK,EAAE;AAAA;AAAA,WACxB;AAAA,0BACAA,cAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cACC,iBAAA,EAAkB,QAAA;AAAA,cAClB,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,MAAM,QAAA,EAAU,IAAA,CAAK,KAAK,EAAA,EAAG;AAAA,cAEnD,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,0BACAT,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,QAAA;AAAA,cACN,OAAA,EAAQ,MAAA;AAAA,cACR,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA;AAAA,cACjB,OAAA,EAAS,MAAM,IAAA,CAAK,CAAC;AAAA;AAAA;AACvB;AAAA;AAAA,KACF;AAAA,oBACAA,eAACU,gBAAAA,EAAA,EAAK,OAAO,EAAE,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,MAAM,GAAA,EAAI,EACnE,gBAAM,IAAA,CAAK,EAAE,QAAQ,IAAA,EAAK,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM;AACtC,MAAA,MAAM,OAAO,GAAA,CAAI,KAAA,CAAM,GAAG,KAAA,CAAM,CAAA,EAAG,IAAI,CAAC,CAAA;AACxC,MAAA,uBACEV,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAAA,UACnB,IAAA,EAAMwB,kBAAA,CAAW,IAAA,EAAM,MAAM,CAAA;AAAA,UAC7B,IAAA,EAAK,OAAA;AAAA,UACL,QAAA,EAAU,MAAM,KAAA,KAAU,IAAA;AAAA,UAC1B,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA,IAAW,QAAQ,IAAI,CAAA;AAAA,UACxC,OAAA,EAAS,MAAM,KAAA,CAAM,QAAA,CAAS,IAAI;AAAA,SAAA;AAAA,QAN7B;AAAA,OAOP;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IACC,KAAA,CAAM,KAAA,mBACLxB,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAK,IAAA,EAAE,QAAA,EAAAwB,kBAAA,CAAW,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA,EAAE,CAAA,GAC3C;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,SAAS,KAAA,EAKf;AACD,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIb,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACzC,EAAA,MAAM,WAAW,IAAI,GAAA;AAAA,IAAA,CAClB,SAAS,WAAA,IAAe,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAM;AAAA,MACtC,CAAA,CAAE,WAAA;AAAA,MAAA,CACA,CAAA,CAAE,MAAA,CAAiC,MAAA,IAAU,IAAI,CAAC;AAAA,KACrD;AAAA,GACH;AACA,EAAA,MAAM,IAAA,GAAA,CAAQ,QAAA,CAAS,IAAA,IAAQ,EAAC,EAAG,MAAA;AAAA,IACjC,CAAC,CAAA,KAAM,CAAC,MAAM,MAAA,CAAO,QAAA,CAAS,EAAE,WAAW;AAAA,GAC7C;AACA,EAAA,uBACEC,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EACzB,QAAA,EAAA;AAAA,IAAA,CAAA,QAAA,CAAS,IAAA,IAAQ,EAAC,EAAG,GAAA,CAAI,CAAC,GAAA,KAAQ;AAClC,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,MAAA,CAAO,QAAA,CAAS,IAAI,WAAW,CAAA;AAClD,MAAA,uBACEJ,eAAAA;AAAA,QAACI,gBAAAA;AAAA,QAAA;AAAA,UAEC,oBAAoB,GAAA,CAAI,KAAA;AAAA,UACxB,KAAA,EAAO,EAAE,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG;AAAA,UAEvB,QAAA,EAAA;AAAA,4BAAAV,cAAAA,CAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,IAAA,EAAM,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,EAAA,EAAG,EACvD,cAAI,KAAA,EACP,CAAA;AAAA,4BACAT,cAAAA;AAAA,cAACU,gBAAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,UAAU,MAAA,EAAQ,GAAA,EAAK,MAAM,EAAA,EAAG;AAAA,gBAE7D,oBAAS,OAAA,IAAW,IAAI,GAAA,CAAI,CAAC,sBAC7BV,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBAEC,OAAO,CAAA,CAAE,KAAA;AAAA,oBACT,IAAA,EAAK,OAAA;AAAA,oBACL,UAAU,QAAA,CAAS,GAAA,CAAI,GAAA,CAAI,WAAW,MAAM,CAAA,CAAE,KAAA;AAAA,oBAC9C,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA,IAAW,IAAA;AAAA,oBAC5B,OAAA,EAAS,MACP,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,KAAK,CAAA,EAAE,EAAG,GAAA,CAAI,WAAW;AAAA,mBAAA;AAAA,kBAN9C,CAAA,CAAE;AAAA,iBASV;AAAA;AAAA;AACH;AAAA,SAAA;AAAA,QAtBK,GAAA,CAAI;AAAA,OAuBX;AAAA,IAEJ,CAAC,CAAA;AAAA,IACA,SAAS,QAAA,IAAY,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,uBACxCA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,QACvB,OAAA,EAAQ,MAAA;AAAA,QACR,QAAA,EAAU,CAAC,KAAA,CAAM,OAAA;AAAA,QACjB,SAAS,MAAM;AACb,UAAA,KAAA,MAAW,GAAA,IAAO,IAAA;AAChB,YAAA,KAAA,CAAM,KAAK,EAAE,OAAA,EAAS,IAAA,EAAK,EAAG,IAAI,WAAW,CAAA;AAAA,QACjD;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;AAGO,SAAS,UAAA,CACd,QAAA,EACA,MAAA,EACA,UAAA,EACe;AACf,EAAA,MAAM,SAAS,QAAA,CAAS,MAAA;AAWxB,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,OAAA,EAAS,OAAO,IAAA;AACtC,EAAA,MAAM,SAAS,IAAI,GAAA;AAAA,IAAA,CAChB,QAAA,CAAS,OAAA,IAAW,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,KAAK,CAAC;AAAA,GACxD;AACA,EAAA,IAAI,QAAA,CAAS,iBAAA;AACX,IAAA,MAAA,CAAO,GAAA;AAAA,MACL,SAAS,iBAAA,CAAkB,KAAA;AAAA,MAC3B,SAAS,iBAAA,CAAkB;AAAA,KAC7B;AACF,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAA,CAAI,MAAA,CAAO,MAAA,IAAU,EAAC,EAAG,GAAA,CAAI,CAAC,CAAA,KAAM,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,IAAK,CAAC,CAAA;AAAA,IACtD,GAAI,MAAA,CAAO,UAAA,GAAa,CAAC,CAAA,EAAG,UAAU,CAAA,EAAA,EAAK,MAAA,CAAO,UAAU,CAAA,CAAE,CAAA,GAAI,EAAC;AAAA,IACnE,GAAI,MAAA,CAAO,IAAA,GAAO,CAAC,MAAA,CAAO,IAAI,IAAI,EAAC;AAAA,IACnC,GAAI,MAAA,CAAO,MAAA,KAAW,MAAA,GAAY,CAAC,OAAO,MAAA,CAAO,MAAM,CAAC,CAAA,GAAI,EAAC;AAAA,IAC7D,GAAI,MAAA,CAAO,IAAA,GAAO,CAACwB,kBAAA,CAAW,OAAO,IAAA,EAAM,MAAM,CAAC,CAAA,GAAI,EAAC;AAAA,IACvD,GAAI,MAAA,CAAO,UAAA,GAAa,CAAC,WAAI,IAAI;AAAC,GACpC;AACA,EAAA,OAAO,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,GAAI,IAAA;AAC3C;ACruBO,SAAS,cAAc,KAAA,EAAmC;AAC/D,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC9B,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIb,eAAAA,EAAQ;AAC3B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,OAAA,EAAQ;AAC7B,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACjD,EAAA,MAAM,KAAA,GAAA,CAAS,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA;AAAA,IAAI,CAAC,MACpCS,uBAAAA,CAAgB,CAAA,CAAE,OAAO,CAAA,CAAE,GAAA,EAAK,QAAQ,QAAQ;AAAA,GAClD;AACA,EAAA,uBACER,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAC,IAAA,CAAK,KAAA,EAAO,GAAG,KAAK,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,MACvC,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAA,EAAQ,CAAA,eAAA,EAAkB,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,MAEjC,QAAA,EAAA;AAAA,wBAAAN,cAAAA,CAAC,KAAA,EAAA,EAAO,QAAA,EAAA,IAAA,CAAK,KAAA,EAAM,CAAA;AAAA,wBACnBA,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,eAAe,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,MAAM,EAAA,EAAG,EAClE,gBAAM,GAAA,CAAI,CAAC,sBACVV,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,OAAO,MAAA,CAAO,IAAA;AAAA,cACd,WAAA,EAAa,CAAA;AAAA,cACb,aAAa,MAAA,CAAO,MAAA;AAAA,cACpB,cAAc,MAAA,CAAO,IAAA;AAAA,cACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,cACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,cACvB,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA,aACtB;AAAA,YAEC,QAAA,EAAA;AAAA,WAAA;AAAA,UAXI;AAAA,SAaR,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AC3BA,IAAM,QAAA,GAEF;AAAA,EACF,QAAA,EAAU,YAAA;AAAA,EACV,QAAA,EAAU,YAAA;AAAA,EACV,SAAA,EAAW,YAAA;AAAA,EACX,UAAA,EAAY,aAAA;AAAA,EACZ,YAAA,EAAc,WAAA;AAAA,EACd,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO;AACT,CAAA;AAGO,SAAS,YACd,IAAA,EAC2C;AAC3C,EAAA,OAAO,QAAA,CAAS,IAAI,CAAA,IAAK,QAAA;AAC3B;AAEO,IAAM,QAAA,mBAA2BP,UAAAA,CAAK,SAASuB,UAAS,KAAA,EAI5D;AACD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,KAAA,CAAM,IAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA;AACrC,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,KAAA,GAAQ,IAAA,CAAK,IAAI,CAAA;AACtC,EAAA,MAAM,IAAA,GAAOJ,cAAQ,MAAMK,gBAAA,CAAS,KAAK,IAAI,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AACtD,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA,EAAU,KAAA,CAAM,IAAA,CAAK,QAAA,KAAa,IAAA;AAAA,IAClC,OAAA,EAAS,MAAM,OAAA,KAAY;AAAA,GAC7B;AACA,EAAA,OAAO,MAAA,mBAAS1B,cAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,GAAA,EAAK,OAAA,EAAkB,CAAA,mBAAKA,cAAAA,CAAC,OAAA,EAAA,EAAS,GAAG,GAAA,EAAK,CAAA;AAC5E,CAAC;AC1CD,IAAM,KAAA,GAAQ,CAAC,IAAA,KAAmB,IAAA,CAAK,GAAA;AACvC,IAAM,MAAA,GAAS,CAAC,IAAA,KAAmB,IAAA,CAAK,IAAA,CAAK,IAAA;AAGtC,SAAS,aAAa,KAAA,EAAuB;AAClD,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI2B,+BAAA,EAAoB;AACtC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIhB,eAAAA,EAAQ;AACtB,EAAA,MAAMP,KAAAA,GAAO,KAAK,GAAA,CAAI,IAAA,CAAK,MAAM,KAAA,GAAQ,GAAG,GAAG,GAAG,CAAA;AAClD,EAAA,uBACEJ,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,EAAE,YAAA,EAAc;AAAA,QAClC,KAAA,EAAO,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,MAAM;AAAA,OACjC,CAAA;AAAA,MAED,QAAA,kBAAAV,cAAAA;AAAA,QAAC4B,mBAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAU,IAAA;AAAA,UACV,MAAM,KAAA,CAAM,KAAA;AAAA,UACZ,YAAA,EAAc,KAAA;AAAA,UACd,WAAA,EAAa,MAAA;AAAA,UACb,UAAA,EAAY,CAAC,EAAE,IAAA,uBACb5B,cAAAA,CAACU,kBAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAON,KAAAA,IACpB,QAAA,kBAAAJ,cAAAA,CAAC,YAAS,IAAA,EAAY,OAAA,EAAO,MAAC,CAAA,EAChC,CAAA;AAAA,UAEF,cAAA,EAAgBI,KAAAA;AAAA,UAChB,gBAAA,EAAiB,MAAA;AAAA,UACjB,8BAAA,EAAgC;AAAA;AAAA;AAClC;AAAA,GACF;AAEJ;ACnCO,IAAM,YAAA,mBAA+BF,UAAAA,CAAK,SAAS2B,aAAAA,GAAe;AACvE,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIlB,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACzC,EAAA,MAAM,WAAWc,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AACjE,EAAA,MAAM,OAAA,GAAUA,+BAAAA;AAAA,IACd,KAAA;AAAA,IACA,CAAC,CAAA,KACC,CAAA,CAAE,UAAA,IACF,CAAA,CAAE,MAAM,EAAA,CAAG,EAAE,CAAA,EAAG,IAAA,KAAS,aACxB,CAAA,CAAE,KAAA,CAAM,EAAA,CAAG,EAAE,EAAuB,IAAA,KAAS;AAAA,GAClD;AACA,EAAA,MAAM,OAAOA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,IAAI,CAAA;AAC/D,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,KAAA,KAAU,SAAS,CAAA,CAAE,EAAA,CAAG,EAAE,CAAA;AACnE,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,EAAS,OAAO,IAAA;AACjC,EAAA,MAAM,IAAA,GACJ,OAAA,EAAS,KAAA,IAAS,CAAA,CAAE,SAAA,EAAW,EAAE,KAAA,EAAO,IAAA,IAAQ,CAAA,CAAE,mBAAmB,CAAA,EAAG,CAAA;AAC1E,EAAA,uBACEnB,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,uBAAA,EAAwB,QAAA;AAAA,MACxB,OAAO,EAAE,iBAAA,EAAmB,MAAM,EAAA,EAAI,eAAA,EAAiB,MAAM,EAAA,EAAG;AAAA,MAEhE,QAAA,kBAAAV,cAAAA,CAACS,gBAAAA,EAAA,EAAK,OAAO,EAAE,KAAA,EAAO,MAAA,CAAO,SAAA,EAAW,QAAA,EAAU,IAAA,CAAK,IAAA,CAAK,EAAA,IACzD,QAAA,EAAA,IAAA,EACH;AAAA;AAAA,GACF;AAEJ,CAAC;AC5BM,IAAM,MAAA,mBAAyBP,UAAAA,CAAK,SAAS4B,QAAO,KAAA,EAIxD;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAA,EAAA1B,KAAAA,EAAM,IAAA,KAASC,0BAAA,EAAS;AACxC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,OAAOD,KAAAA,CAAK,MAAA;AAAA,IACZ,QAAQA,KAAAA,CAAK,MAAA;AAAA,IACb,YAAA,EAAcA,MAAK,MAAA,GAAS;AAAA,GAC9B;AACA,EAAA,IAAI,KAAA,CAAM,GAAA,IAAO,CAAC,KAAA,CAAM,MAAA,EAAQ;AAC9B,IAAA,MAAM,GAAA,GAAM,MAAM,KAAA,IAASQ,iBAAAA;AAC3B,IAAA,uBACEZ,cAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,EAAE,GAAA,EAAK,KAAA,CAAM,GAAA,EAAI;AAAA,QACzB,KAAA,EAAO,GAAA;AAAA,QACP,gCAAA,EAAgC,IAAA;AAAA,QAChC,UAAA,EAAY,KAAA;AAAA,QACZ,yBAAA,EAA0B;AAAA;AAAA,KAC5B;AAAA,EAEJ;AACA,EAAA,uBACEA,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAY,KAAA;AAAA,MACZ,yBAAA,EAA0B,qBAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,QACL,GAAG,GAAA;AAAA,QACH,eAAA,EAAiB,KAAA,CAAM,MAAA,GAAS,MAAA,CAAO,cAAc,MAAA,CAAO,OAAA;AAAA,QAC5D,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB;AAAA,OAClB;AAAA,MAEA,QAAA,kBAAAV,cAAAA;AAAA,QAACS,gBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,KAAA,CAAM,MAAA,GAAS,MAAA,CAAO,YAAY,MAAA,CAAO,SAAA;AAAA,YAChD,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,YACpB,UAAA,EAAY;AAAA,WACd;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM,MAAA,GAAS,QAAA,GAAA,CAAO,KAAA,CAAM,IAAA,CAAK,MAAK,CAAE,CAAC,CAAA,IAAK,GAAA,EAAK,WAAA;AAAY;AAAA;AAClE;AAAA,GACF;AAEJ,CAAC;AC1CM,SAAS,cAAc,KAAA,EAAqC;AACjE,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASJ,0BAAA,EAAS;AACzC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIM,eAAAA,EAAQ;AACtB,EAAA,MAAM,MAAA,GAAS,MAAM,UAAA,KAAe,IAAA;AACpC,EAAA,MAAM,QAAA,GAAW,MAAA,GACb,CAAA,CAAE,YAAA,EAAc,EAAE,EAAA,EAAI,KAAA,CAAM,UAAA,IAAc,CAAA,CAAE,mBAAmB,CAAA,EAAG,CAAA,GAClE,EAAE,YAAY,CAAA;AAClB,EAAA,uBACEL,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,QAAA;AAAA,MAClB,UAAA,EAAU,IAAA;AAAA,MACV,kBAAA,EAAoB,CAAA,EAAG,KAAA,CAAM,IAAI,KAAK,QAAQ,CAAA,CAAA;AAAA,MAC9C,KAAA,EAAO;AAAA,QACL,aAAA,EAAe,KAAA;AAAA,QACf,UAAA,EAAY,QAAA;AAAA,QACZ,KAAK,KAAA,CAAM,EAAA;AAAA,QACX,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,QACvB,iBAAiB,MAAA,CAAO,UAAA;AAAA,QACxB,iBAAA,EAAmB,CAAA;AAAA,QACnB,mBAAmB,MAAA,CAAO;AAAA,OAC5B;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAV,cAAAA,CAAC,UAAO,IAAA,EAAM,KAAA,CAAM,MAAM,GAAA,EAAK,KAAA,CAAM,WAAW,MAAA,EAAgB,CAAA;AAAA,wBAChEM,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,UAAA,EAAY,GAAE,EAC3B,QAAA,EAAA;AAAA,0BAAAV,cAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAe,CAAA;AAAA,cACf,KAAA,EAAO;AAAA,gBACL,OAAO,MAAA,CAAO,IAAA;AAAA,gBACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,gBACpB,UAAA,EAAY,KAAA;AAAA,gBACZ,GAAI,KAAK,MAAA,GAAS,EAAE,YAAY,IAAA,CAAK,MAAA,KAAW;AAAC,eACnD;AAAA,cAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,0BACAT,cAAAA;AAAA,YAACS,gBAAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAe,CAAA;AAAA,cACf,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,MAAA,GAAS,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,SAAA;AAAA,gBAC5C,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA,eACtB;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEO,IAAM,UAAA,mBAA6BP,UAAAA,CAAK,SAAS6B,WAAAA,GAAa;AACnE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,WAAA,KAAgB,OAAA,EAAQ;AAC9C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIpB,eAAAA,EAAQ;AACtB,EAAA,MAAM,QAAQQ,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC3D,EAAA,MAAM,WAAWA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AACjE,EAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,IAAA,EAAM,KAAA,CAAM,IAAA,IAAQ,CAAA,CAAE,mBAAmB,CAAA;AAAA,IACzC,SAAA,EAAW,eAAe,KAAA,CAAM,SAAA;AAAA,IAChC,UAAA,EAAY,QAAA,GAAY,QAAA,CAAS,EAAA,IAAM,EAAA,GAAM;AAAA,GAC/C;AACA,EAAA,OAAO,MAAA,mBACLnB,cAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,KAAA,EAAO,OAAA,EAAS,aAAA,EAAe,CAAA,mBAE3CA,cAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,KAAA,EAAO,CAAA;AAE9B,CAAC;AChEM,SAAS,gBAAgB,KAAA,EAAuC;AACrE,EAAA,MAAM,EAAE,CAAA,EAAG,SAAA,EAAU,GAAIW,eAAAA,EAAQ;AACjC,EAAA,MAAM,EAAE,QAAQ,MAAA,EAAQ,KAAA,EAAO,MAAM,IAAA,EAAAP,KAAAA,KAASC,0BAAA,EAAS;AACvD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIW,eAAS,EAAE,CAAA;AACnC,EAAA,MAAM,MAAA,GAASO,wBAAW,IAAI,CAAA;AAC9B,EAAA,MAAM,UAAU,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,KAAK,MAAA,IAAUS,qBAAA;AACpD,EAAA,MAAM,OAAO,MAAM;AACjB,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AACjB,IAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,EACZ,CAAA;AACA,EAAA,uBACE1B,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,aAAA,EAAe,KAAA;AAAA,QACf,UAAA,EAAY,UAAA;AAAA,QACZ,KAAK,KAAA,CAAM,EAAA;AAAA,QACX,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,QACvB,cAAA,EAAgB,CAAA;AAAA,QAChB,gBAAgB,MAAA,CAAO,OAAA;AAAA,QACvB,iBAAiB,MAAA,CAAO;AAAA,OAC1B;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAV,cAAAA;AAAA,UAACsB,qBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,IAAA;AAAA,YACP,YAAA,EAAc,OAAA;AAAA,YACd,aAAa,KAAA,CAAM,WAAA;AAAA,YACnB,sBAAsB,MAAA,CAAO,SAAA;AAAA,YAC7B,oBAAoB,KAAA,CAAM,WAAA;AAAA,YAC1B,SAAA,EAAS,IAAA;AAAA,YACT,WAAWU,qBAAA,GAAW,CAAA;AAAA,YACtB,MAAA,EAAO,0BAAA;AAAA,YACP,KAAA,EAAO;AAAA,cACL,IAAA,EAAM,CAAA;AAAA,cACN,WAAW5B,KAAAA,CAAK,WAAA;AAAA,cAChB,SAAA,EAAW,GAAA;AAAA,cACX,mBAAmB,KAAA,CAAM,EAAA;AAAA,cACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,cACvB,cAAc,MAAA,CAAO,EAAA;AAAA,cACrB,WAAA,EAAa,CAAA;AAAA,cACb,aAAa,MAAA,CAAO,MAAA;AAAA,cACpB,OAAO,MAAA,CAAO,IAAA;AAAA,cACd,iBAAiB,MAAA,CAAO,OAAA;AAAA,cACxB,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,SAAA,EAAW,SAAA,KAAc,KAAA,GAAQ,OAAA,GAAU,MAAA;AAAA,cAC3C,gBAAA,EAAkB,SAAA;AAAA,cAClB,GAAI,KAAK,MAAA,GAAS,EAAE,YAAY,IAAA,CAAK,MAAA,KAAW;AAAC;AACnD;AAAA,SACF;AAAA,QACC,KAAA,CAAM,UAAA,IAAc,CAAC,IAAA,mBACpBJ,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,MAAM,CAAA;AAAA,YACf,SAAS,KAAA,CAAM,MAAA;AAAA,YACf,MAAA,EAAO;AAAA;AAAA,4BAGTA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,MAAM,CAAA;AAAA,YACf,OAAA,EAAQ,SAAA;AAAA,YACR,UAAU,CAAC,OAAA;AAAA,YACX,OAAA,EAAS,IAAA;AAAA,YACT,MAAA,EAAO;AAAA;AAAA;AACT;AAAA;AAAA,GAEJ;AAEJ;AAEO,IAAM,QAAA,mBAA2BE,UAAAA,CAAK,SAAS+B,UAAS,KAAA,EAE5D;AACD,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,OAAA,EAAQ;AACjC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAItB,eAAAA,EAAQ;AACtB,EAAA,MAAM,WAAWQ,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,QAAQ,CAAA;AACjE,EAAA,MAAM,OAAOA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,IAAI,CAAA;AAC/D,EAAA,MAAM,aAAaA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA;AACrE,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,MAAA,GAASe,iBAAA;AAAA,IACb,CAAC,IAAA,KAAiB;AAChB,MAAA,IAAI;AACF,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,MACjB,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,OAAO,OAAO;AAAA,GACjB;AACA,EAAA,MAAM,MAAA,GAASA,kBAAY,MAAM,KAAA,CAAM,QAAO,EAAG,CAAC,KAAK,CAAC,CAAA;AACxD,EAAA,MAAM,WAAA,GAAc,QAAA,GAChB,CAAA,CAAE,6BAAA,EAA+B;AAAA,IAC/B,EAAA,EAAI,QAAA,CAAS,EAAA,IAAM,CAAA,CAAE,mBAAmB;AAAA,GACzC,CAAA,GACD,CAAA,CAAE,qBAAA,EAAuB,EAAE,OAAO,IAAA,IAAQ,CAAA,CAAE,mBAAmB,CAAA,EAAG,CAAA;AACtE,EAAA,MAAM,OAAO,KAAA,CAAM,QAAA;AACnB,EAAA,MAAM,GAAA,GAAM,EAAE,WAAA,EAAa,UAAA,EAAY,QAAQ,MAAA,EAAO;AACtD,EAAA,OAAO,IAAA,mBACLlC,cAAAA,CAAC,IAAA,EAAA,EAAM,GAAG,GAAA,EAAK,OAAA,EAAS,eAAA,EAAiB,CAAA,mBAEzCA,cAAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,GAAA,EAAK,CAAA;AAE9B,CAAC;ACvGM,IAAM,aAAA,mBAAgCE,UAAAA,CAAK,SAASiC,cAAAA,GAAgB;AACzE,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIxB,eAAAA,EAAQ;AACtB,EAAA,MAAM,QAAQN,0BAAA,EAAS;AACvB,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA;AACxB,EAAA,MAAM,aAAac,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA;AACrE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIH,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GACJoB,oBAAA;AAAA,IACE,MAAM,MAAA,CAAO,cAAA;AAAA,IACb,MAAM,MAAA,CAAO;AAAA,GACf,IAAK,GAAA;AACP,EAAA,MAAM,OAAO,OAAA,GAAU,KAAA,CAAM,MAAA,GAASC,aAAA,CAAS,MAAM,MAAM,CAAA;AAC3D,EAAA,MAAM,IAAA,GAAO,UAAA,IAAc,CAAA,CAAE,oBAAoB,CAAA;AACjD,EAAA,uBACErC,cAAAA;AAAA,IAACO,qBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,MAAA;AAAA,MAClB,kBAAA,EAAoB,IAAA;AAAA,MACpB,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,MAChC,MAAA,EAAO,sBAAA;AAAA,MACP,KAAA,EAAO;AAAA,QACL,iBAAiB,IAAA,CAAK,oBAAA;AAAA,QACtB,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM;AAAA,OACzB;AAAA,MAEA,QAAA,kBAAAP,cAAAA;AAAA,QAACS,gBAAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,OAAO,MAAA,GAAY,CAAA;AAAA,UAClC,KAAA,EAAO;AAAA,YACL,OAAO,IAAA,CAAK,cAAA;AAAA;AAAA,YAEZ,UAAU,IAAA,CAAK,GAAA,CAAI,KAAK,IAAA,CAAK,EAAA,EAAIL,YAAK,iBAAiB,CAAA;AAAA,YACvD,UAAA,EACE,KAAK,GAAA,CAAI,IAAA,CAAK,KAAK,EAAA,EAAIA,WAAA,CAAK,iBAAiB,CAAA,GAAI,IAAA,CAAK;AAAA,WAC1D;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAC;AC7CM,IAAM,YAAA,mBAA+BF,UAAAA,CAAK,SAASoC,aAAAA,GAAe;AACvE,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,KAAUjC,0BAAA,EAAS;AAC3C,EAAA,MAAM,GAAA,GAAM,CAAC,KAAA,EAAqB,GAAA,qBAChCL,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,MAAM,UAAA,GAAa,YAAA;AAAA,QAC9B,KAAA;AAAA,QACA,MAAA,EAAQ,EAAA;AAAA,QACR,cAAc,MAAA,CAAO,EAAA;AAAA,QACrB,iBAAiB,MAAA,CAAO,OAAA;AAAA,QACxB,kBAAkB,KAAA,CAAM,EAAA;AAAA,QACxB,WAAW,KAAA,CAAM;AAAA;AACnB;AAAA,GACF;AAEF,EAAA,uBACEJ,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,iBAAA,EAAkB,aAAA;AAAA,MAClB,kBAAA,EAAoB,EAAE,IAAA,EAAM,IAAA,EAAK;AAAA,MACjC,MAAA,EAAO,oBAAA;AAAA,MAEN,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,OAAO,KAAK,CAAA;AAAA,QAChB,GAAA,CAAI,OAAO,IAAI,CAAA;AAAA,QACf,GAAA,CAAI,OAAO,KAAK;AAAA;AAAA;AAAA,GACnB;AAEJ,CAAC;ACpBM,SAAS,cAAc,KAAA,EAA4C;AACxE,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASL,0BAAA,EAAS;AACjD,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,IAAA;AACxB,EAAA,MAAM,CAAC,UAAA,EAAY,UAAU,CAAA,GAC3B,IAAA,KAAS,WACL,CAAC,MAAA,CAAO,YAAA,EAAc,MAAA,CAAO,UAAU,CAAA,GACvC,SAAS,OAAA,GACP,CAAC,MAAA,CAAO,WAAA,EAAa,MAAA,CAAO,SAAS,IACrC,CAAC,MAAA,CAAO,WAAA,EAAa,MAAA,CAAO,SAAS,CAAA;AAC7C,EAAA,uBACEL,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB,UAAA;AAAA,QACjB,cAAc,MAAA,CAAO,EAAA;AAAA,QACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM;AAAA,OACzB;AAAA,MAEA,QAAA,kBAAAV,cAAAA;AAAA,QAACS,gBAAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAU,IAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,UAAA;AAAA,YACP,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,YACpB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,EAAA,GAAK,IAAA,CAAK,UAAA;AAAA,YAChC,GAAI,KAAK,MAAA,GAAS,EAAE,YAAY,IAAA,CAAK,MAAA,KAAW;AAAC,WACnD;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT;AAAA,GACF;AAEJ;AAGO,SAAS,UAAU,IAAA,EAA2B;AACnD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIE,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,OAAO,KAAA,CAAM,WAAA,GAAc,KAAA,CAAM,IAAA,IAAQ,EAAE,mBAAmB,CAAA;AACpE,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,WAAA,EAAY,CAAE,QAAA,EAAU,EAAA;AACzC,EAAA,IAAI,IAAA,CAAK,IAAA,KAAS,QAAA,EAAU,OAAO,EAAE,KAAK,CAAA;AAC1C,EAAA,IAAI,KAAK,IAAA,KAAS,OAAA;AAChB,IAAA,OAAO,CAAA,CAAE,cAAc,EAAE,EAAA,EAAI,MAAM,CAAA,CAAE,mBAAmB,GAAG,CAAA;AAC7D,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,MAAA,EAAM,CAAA,CAAE,YAAY,CAAC,CAAA,CAAA;AACrC;AAEO,IAAM,gCAAgCT,UAAAA;AAAA,EAC3C,SAASqC,eAAc,KAAA,EAIpB;AACD,IAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AACjB,IAAA,uBAAOvC,eAAC,KAAA,EAAA,EAAM,IAAA,EAAY,MAAM,IAAA,CAAK,IAAA,EAAM,UAAA,EAAY,KAAA,CAAM,UAAA,EAAY,CAAA;AAAA,EAC3E;AACF;AAGO,IAAM,kCAAkCE,UAAAA;AAAA,EAC7C,SAASsC,iBAAgB,KAAA,EAGtB;AACD,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,IAAA,MAAM,OAAOC,wBAAA,CAAiB,KAAA,EAAO,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,IAAK,EAAA;AACxD,IAAA,uBACEzC,eAAC,KAAA,EAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAY,UAAA,EAAY,KAAA,CAAM,UAAA,EAAY,CAAA;AAAA,EAEvE;AACF;AAEA,SAAS,MAAM,KAAA,EAIZ;AACD,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAK,GAAI,KAAA;AACvB,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,OAAA,EAAQ;AACjC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACzC,EAAA,MAAM,MAAA,GAAS,UAAU,IAAI,CAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,KAAK,IAAA,KAAS,QAAA;AAC3B,EAAA,MAAM,MAAA,GACJ,IAAA,CAAK,KAAA,KAAU,SAAA,GACX,EAAE,gBAAgB,CAAA,GAClB,IAAA,CAAK,KAAA,KAAU,MAAA,GACb,CAAA,CAAE,aAAa,CAAA,GACf,KAAK,KAAA,KAAU,UAAA,GACb,IAAA,CAAK,SAAA,EAAW,OAAA,IAAW,CAAA,CAAE,gBAAgB,CAAA,GAC7C,KAAK,KAAA,KAAU,WAAA,GACb,CAAA,CAAE,kBAAkB,CAAA,GACpB,IAAA,CAAK,OAAA,GACH,CAAA,CAAE,eAAe,CAAA,GACjB,IAAA;AACd,EAAA,MAAM,SAAS,KAAA,CAAM,aAAA;AACrB,EAAA,MAAM,MAAA,GAAS,MAAA,mBACbL,cAAAA,CAAC,UAAO,IAAA,EAAY,IAAA,EAAY,OAAA,EAAS,aAAA,EAAe,CAAA,mBAExDA,cAAAA,CAAC,aAAA,EAAA,EAAc,MAAY,IAAA,EAAY,CAAA;AAEzC,EAAA,uBACEM,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,kBAAA,EAAoB,CAAC,MAAA,EAAQ,IAAA,EAAM,MAAM,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,MACpE,KAAA,EAAO;AAAA,QACL,SAAA,EAAW,OAAO,UAAA,GAAa,YAAA;AAAA,QAC/B,QAAA,EAAU,KAAA;AAAA,QACV,kBAAkB,KAAA,CAAM,EAAA;AAAA,QACxB,SAAA,EAAW,KAAA,CAAM,UAAA,GAAa,KAAA,CAAM,KAAK,KAAA,CAAM,EAAA;AAAA,QAC/C,SAAS,IAAA,CAAK,KAAA,KAAU,aAAa,IAAA,CAAK,KAAA,KAAU,SAAS,IAAA,GAAO;AAAA,OACtE;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,UAAA,IAAc,CAAC,IAAA,mBACpBV,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OACE,IAAA,CAAK,IAAA,KAAS,OAAA,GAAU,MAAA,CAAO,cAAc,MAAA,CAAO,SAAA;AAAA,cACtD,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,cAAc,KAAA,CAAM;AAAA,aACtB;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH,GACE,IAAA;AAAA,QACH,MAAA;AAAA,QACA,yBACCH,eAAAA;AAAA,UAACI,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,aAAA,EAAe,KAAA;AAAA,cACf,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,OAAO,UAAA,GAAa,YAAA;AAAA,cACpC,KAAK,KAAA,CAAM,EAAA;AAAA,cACX,WAAW,KAAA,CAAM;AAAA,aACnB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAV,cAAAA;AAAA,gBAACS,gBAAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO;AAAA,oBACL,OACE,IAAA,CAAK,KAAA,KAAU,UAAA,GAAa,MAAA,CAAO,SAAS,MAAA,CAAO,SAAA;AAAA,oBACrD,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA,mBACtB;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cACC,IAAA,CAAK,KAAA,KAAU,UAAA,mBACdT,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAE,UAAU,CAAA;AAAA,kBACnB,OAAA,EAAQ,MAAA;AAAA,kBACR,SAAS,MAAM;AACb,oBAAA,KAAA,CAAM,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,kBACtB;AAAA;AAAA,eACF,GACE;AAAA;AAAA;AAAA,SACN,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AC9JO,SAAS,oBAAoB,KAAA,EAEtB;AACZ,EAAA,MAAM,EAAE,QAAA,EAAU,aAAA,EAAc,GAAI,OAAA,EAAQ;AAC5C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,IAAI,CAAC,eAAe,OAAO,IAAA;AAC3B,EAAA,uBACEX,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,aAAA,CAAc,KAAA,IAAS,CAAA,CAAE,cAAc,CAAA;AAAA,MAC9C,OAAA,EAAQ,MAAA;AAAA,MACR,SAAS,MAAM,QAAA,CAAS,QAAQ,aAAA,EAAe,OAAA,CAAQ,MAAM,KAAK;AAAA;AAAA,GACpE;AAEJ;AAGO,SAAS,YAAY,KAAA,EAId;AACZ,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,SAAQ,GAAI,KAAA;AACvC,EAAA,OAAO,IAAA,mBACLA,cAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAc,SAAkB,CAAA,mBAEtCA,cAAAA,CAAC,OAAA,EAAA,EAAQ,KAAA,EAAc,CAAA;AAE3B;AC1BO,IAAM,SAAA,mBAA4BE,UAAAA,CAAK,SAASwC,WAAU,KAAA,EAE9D;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI/B,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,OAAA,EAAQ;AAEjC,EAAA,MAAM,cAAA,GAAiBQ,+BAAAA;AAAA,IACrB,KAAA;AAAA,IACA,CAAC,MAAM,CAAA,CAAE;AAAA,GACX;AACA,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA,CAAM,IAAA;AAC9B,EAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,IAAA,MAAM,GAAA,GAAM,MAAM,IAAA,CAAK,GAAA;AACvB,IAAA,MAAM,KAAA,GAAsB;AAAA,MAC1B,IAAA,EAAM,aAAA;AAAA,MACN,QAAQ,OAAO,IAAA,CAAK,IAAA,KAAS,QAAA,GAAW,KAAK,IAAA,GAAO,IAAA;AAAA,MACpD,KAAA,EAAO,KAAK,KAAA,KAAU,IAAA,GAAO,MAAM,KAAK,KAAA,CAAM,SAAA,CAAU,GAAG,CAAA,GAAI,MAAA;AAAA,MAC/D;AAAA,KACF;AACA,IAAA,uBACEnB,cAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,MAAM,KAAA,CAAM,KAAA;AAAA,QACZ,KAAA;AAAA,QACA,OAAA,EAAS;AAAA;AAAA,KACX;AAAA,EAEJ;AACA,EAAA,MAAM,QAAQ,KAAA,CAAM,WAAA,GAAc,KAAA,CAAM,IAAA,IAAQ,EAAE,mBAAmB,CAAA;AACrE,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,kBAAA;AACH,QAAA,OAAO,EAAE,iBAAA,EAAmB;AAAA,UAC1B,EAAA,EAAK,IAAA,CAAK,EAAA,IAAwB,CAAA,CAAE,mBAAmB;AAAA,SACxD,CAAA;AAAA,MACH,KAAK,gBAAA;AACH,QAAA,OAAO,CAAA,CAAE,eAAA,EAAiB,EAAE,KAAA,EAAO,CAAA;AAAA,MACrC,KAAK,iBAAA;AACH,QAAA,OAAO,IAAA,CAAK,iBAAA,GACR,CAAA,CAAE,gBAAA,EAAkB,EAAE,QAAA,EAAU,IAAA,CAAK,iBAAA,EAA6B,CAAA,GAClE,CAAA,CAAE,sBAAsB,CAAA;AAAA,MAC9B,KAAK,gBAAA;AACH,QAAA,OAAO,IAAA,CAAK,MAAA,KAAW,IAAA,GACnB,CAAA,CAAE,UAAU,CAAA,GACZ,IAAA,CAAK,MAAA,KAAW,QAAA,GACd,CAAA,CAAE,aAAa,CAAA,GACf,IAAA;AAAA,MACR;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA,GAAG;AACH,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,uBAAOA,cAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAY,CAAA;AAC3B,CAAC;AAGM,SAAS,kBAAkB,KAAA,EAEpB;AACZ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,aAAA,EAAc,GAAI,OAAA,EAAQ;AAClC,EAAA,MAAM,IAAA,GAAO,EAAE,YAAY,CAAA;AAC3B,EAAA,IAAI,CAAC,eAAe,uBAAOX,eAAC,IAAA,EAAA,EAAK,IAAA,EAAY,QAAM,IAAA,EAAC,CAAA;AACpD,EAAA,uBACEM,gBAACI,gBAAAA,EAAA,EAAK,OAAO,EAAE,UAAA,EAAY,UAAS,EAClC,QAAA,EAAA;AAAA,oBAAAV,cAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAY,MAAA,EAAM,IAAA,EAAC,CAAA;AAAA,oBACzBA,cAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAO,MAAM,KAAA,EAAO;AAAA,GAAA,EAC3C,CAAA;AAEJ;AAEA,SAAS,KAAK,KAAA,EAA6D;AACzE,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASK,0BAAA,EAAS;AACzC,EAAA,uBACEL,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAU,IAAA;AAAA,MACV,oBAAoB,KAAA,CAAM,IAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,QACL,UAAA,EAAY,QAAA;AAAA,QACZ,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM;AAAA,OACzB;AAAA,MAEA,QAAA,kBAAAV,cAAAA;AAAA,QAACS,gBAAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,KAAA,CAAM,MAAA,GAAS,MAAA,CAAO,SAAS,MAAA,CAAO,SAAA;AAAA,YAC7C,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,YACpB,SAAA,EAAW;AAAA,WACb;AAAA,UAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA;AACT;AAAA,GACF;AAEJ;AChGO,IAAM,OAAA,mBAA0BP,UAAAA,CAAK,SAASyC,SAAQ,KAAA,EAG1D;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,IAAA,KAAStC,0BAAA,EAAS;AACjD,EAAA,uBACEC,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,OAAA,EAAS,MAAM,EAAA,EAAI,GAAA,EAAK,MAAM,EAAA,EAAG;AAAA,MAC1C,MAAA,EAAO,mBAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAV,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,SAAA,EAAW,YAAA;AAAA,cACX,QAAA,EAAU,KAAA;AAAA,cACV,OAAO,MAAA,CAAO,SAAA;AAAA,cACd,iBAAiB,MAAA,CAAO,WAAA;AAAA,cACxB,cAAc,MAAA,CAAO,EAAA;AAAA,cACrB,mBAAmB,KAAA,CAAM,EAAA;AAAA,cACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,cACvB,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,EAAA,GAAK,IAAA,CAAK;AAAA,aAClC;AAAA,YAEC,gBAAM,OAAA,CAAQ;AAAA;AAAA,SACjB;AAAA,QACC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,MAAA,mBACnBT,eAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAO,UAAU,MAAA,EAAQ,GAAA,EAAK,KAAA,CAAM,EAAA,EAAG,EAClE,QAAA,EAAA,KAAA,CAAM,QAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACxBV,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,OAAA,EAAS,MAAM,KAAA,CAAM,MAAA,CAAO,KAAK,OAAO;AAAA,WAAA;AAAA,UAFnC,IAAA,CAAK;AAAA,SAIb,GACH,CAAA,GACE;AAAA;AAAA;AAAA,GACN;AAEJ,CAAC;ACzBD,IAAM4C,MAAAA,GAAQ,CAAC,IAAA,KAAuB,IAAA,CAAK,GAAA;AAGpC,SAAS,SAAS,IAAA,EAA4B;AACnD,EAAA,IAAI,KAAK,IAAA,KAAS,MAAA,SAAe,CAAA,KAAA,EAAQ,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;AACvD,EAAA,IAAI,KAAK,IAAA,KAAS,SAAA;AAChB,IAAA,OAAO,KAAK,KAAA,KAAU,WAAA,GAAc,WAAA,GAAc,CAAA,QAAA,EAAW,KAAK,IAAI,CAAA,CAAA;AACxE,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,SAAS,IAAA,EAA+C;AAC/D,EAAA,OAAO,IAAA,EAAM,IAAA,KAAS,SAAA,GAAY,IAAA,CAAK,IAAA,GAAO,IAAA;AAChD;AAQO,SAAS,SAAA,CACd,OACA,QAAA,EAIA;AACA,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAwB;AAC3C,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,KAAA,GACJ,IAAA,CAAK,IAAA,CAAK,IAAA,CACV,KAAA;AACF,IAAA,IAAI,OAAO,MAAA,KAAW,UAAA,IAAc,OAAO,KAAA,CAAM,OAAO,QAAA,EAAU;AAClE,IAAA,MAAM,EAAA,GAAK,GAAG,IAAA,CAAK,IAAA,CAAK,UAAU,EAAE,CAAA,EAAA,EAAS,MAAM,EAAE,CAAA,CAAA;AACrD,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAC7B,IAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AAAA,SACzB,MAAA,CAAO,GAAA,CAAI,EAAA,EAAI,CAAC,IAAI,CAAC,CAAA;AAAA,EAC5B;AACA,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAiC;AAClD,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAY;AAC/B,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,MAAA,EAAO,EAAG;AACjC,IAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AACpB,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA;AACpB,IAAA,MAAM,MAAA,GAAS,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAA,CAAK,GAAA;AAAA,MACH,GAAA;AAAA,MACA,MAAA,IACE,MAAA,CAAO,MAAA,KAAW,GAAA,CAAI,UACtB,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,EAAG,MAAM,CAAA,KAAM,GAAA,CAAI,CAAC,CAAC,IACjC,MAAA,GACA;AAAA,KACN;AACA,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAI,KAAA,CAAM,CAAC,GAAG,MAAA,CAAO,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,EACtD;AACA,EAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AACxB;AAEO,IAAM,GAAA,mBAAsB1C,UAAAA,CAAK,SAAS2C,KAAI,KAAA,EAOlD;AACD,EAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AACjB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,OAAA,EAAQ;AAC1B,EAAA,MAAM,QAAQ,KAAA,CAAM,SAAA;AACpB,EAAA,IAAI,KAAA,CAAM,QAAQ,OAAO,IAAA;AACzB,EAAA,IAAI,KAAA,CAAM,OAAO,KAAA,EAAO,uBAAO7C,cAAAA,CAAC,KAAA,EAAA,EAAM,KAAA,EAAO,KAAA,CAAM,GAAA,EAAK,CAAA;AACxD,EAAA,IAAI,KAAK,IAAA,KAAS,MAAA,yBAAeA,cAAAA,CAAC,YAAS,IAAA,EAAY,CAAA;AACvD,EAAA,IAAI,KAAK,IAAA,KAAS,QAAA,yBAAiBA,cAAAA,CAAC,aAAU,IAAA,EAAY,CAAA;AAC1D,EAAA,OAAO,KAAK,KAAA,KAAU,WAAA,mBACpBA,cAAAA,CAAC,mBAAgB,IAAA,EAAY,UAAA,EAAY,KAAA,CAAM,UAAA,EAAY,oBAE3DA,cAAAA,CAAC,iBAAc,IAAA,EAAY,UAAA,EAAY,MAAM,UAAA,EAAY,CAAA;AAE7D,CAAC;AAEM,IAAM,WAAA,mBAA8BE,UAAAA,CAAK,SAAS4C,YAAAA,GAAc;AACrE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAO,UAAU,QAAA,EAAU,WAAA,KAAgB,OAAA,EAAQ;AAClE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAInC,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIN,0BAAA,EAAS;AAC3B,EAAA,MAAM,gBAAgB0C,kCAAA,EAAiB;AACvC,EAAA,MAAM,QAAQ5B,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAC3D,EAAA,iBAAA,CAAkB,KAAA,EAAO,QAAA,CAAS,OAAA,EAAS,aAAA,EAAe,aAAa,KAAK,CAAA;AAC5E,EAAA,MAAM,OAAA,GAAUA,+BAAAA;AAAA,IACd,KAAA;AAAA,IACA,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,UAAA,IAAc,EAAE,MAAA,KAAW;AAAA,GACjD;AACA,EAAA,MAAM,YAAYA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,IAAI,CAAA;AACpE,EAAA,MAAM,SAASA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,OAAO,CAAA;AAE9D,EAAA,MAAM,OAAA,GAAUE,aAAAA;AAAA,IACd,MACE,MAAA,KACC,QAAA,EAAU,MAAA,GACP;AAAA,MACE,IAAA,EAAM,EAAE,iBAAA,EAAmB;AAAA,QACzB,KAAA,EAAO,SAAA,IAAa,CAAA,CAAE,mBAAmB;AAAA,OAC1C,CAAA;AAAA,MACD,KAAA,EAAO,CAAC,GAAG,QAAQ;AAAA,KACrB,GACA,IAAA,CAAA;AAAA,IACN,CAAC,MAAA,EAAQ,QAAA,EAAU,CAAA,EAAG,SAAS;AAAA,GACjC;AACA,EAAA,kBAAA,CAAmB,KAAK,CAAA;AAGxB,EAAA,MAAM,QAAQ,KAAA,CAAM,SAAA;AACpB,EAAA,MAAM,OAAA,GAAU2B,YAAA,iBAAiD,IAAI,GAAA,EAAK,CAAA;AAC1E,EAAA,MAAM,QAAA,GAAW3B,aAAAA;AAAA,IACf,MAAO,KAAA,GAAQ,SAAA,CAAU,KAAA,EAAO,OAAA,CAAQ,OAAO,CAAA,GAAI,IAAA;AAAA,IACnD,CAAC,OAAO,KAAK;AAAA,GACf;AACA,EAAA,OAAA,CAAQ,OAAA,GAAU,QAAA,EAAU,IAAA,oBAAQ,IAAI,GAAA,EAAI;AAC5C,EAAA,MAAM,QAAA,GAAW2B,aAAO,KAAK,CAAA;AAC7B,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,EAAA,MAAM,WAAA,GAAcA,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AACtB,EAAA,MAAM,UAAA,GAAad,iBAAAA;AAAA,IACjB,CAAC,EAAE,IAAA,EAAM,KAAA,uBACPlC,cAAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,UAAA,EAAY,SAAS,IAAI,CAAA,KAAM,SAAS,QAAA,CAAS,OAAA,CAAQ,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,QACnE,KAAK,WAAA,CAAY,OAAA,EAAS,IAAA,CAAK,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,QAC3C,QAAQ,WAAA,CAAY,OAAA,EAAS,OAAO,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,KAAM;AAAA;AAAA,KACxD;AAAA,IAEF;AAAC,GACH;AAEA,EAAA,MAAM,MAAA,GAASkC,iBAAAA;AAAA,IACb,CAAC,OAAA,KAAoB;AACnB,MAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAClB,MAAA,MAAM,IAAA,GAAO,SAAS,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,YAAY,OAAO,CAAA;AAC7D,MAAA,IAAI,IAAA,EAAM,QAAA,CAAS,OAAA,EAAS,MAAA,GAAS,IAAI,CAAA;AAAA,IAC3C,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,OAAA,EAAS,QAAQ;AAAA,GAC3B;AACA,EAAA,MAAM,QAAQ,KAAA,CAAM,UAAA;AACpB,EAAA,MAAM,QAAQ,OAAA,mBACZlC,eAAC,YAAA,EAAA,EAAa,CAAA,GACZ,wBACFA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,SAAA,IAAa,CAAA,CAAE,mBAAmB,CAAA;AAAA,MAC7C,OAAA;AAAA,MACA;AAAA;AAAA,MAEA,OAAA,mBACFA,eAAC,OAAA,EAAA,EAAQ,OAAA,EAAkB,QAAgB,CAAA,GACzC,IAAA;AACJ,EAAA,MAAM,KAAA,GAAmBqB,aAAAA;AAAA,IACvB,OAAO;AAAA,MACL,IAAA,EAAM,KAAA;AAAA,MACN,UAAA;AAAA,MACA,YAAA,EAAcuB,MAAAA;AAAA,MACd,WAAA,EAAa,QAAA;AAAA,MACb,8BAAA,EAAgC;AAAA,QAC9B,wBAAA,EAA0B,IAAA;AAAA,QAC1B,2BAAA,EAA6B,GAAA;AAAA,QAC7B,2BAA2B,CAAC;AAAA,OAC9B;AAAA,MACA,mBAAA,kBAAqB5C,cAAAA,CAAC,YAAA,EAAA,EAAa,CAAA;AAAA,MACnC,kBAAA,EAAoB,KAAA;AAAA,MACpB,yBAAA,EAA2B,SAAA;AAAA,MAC3B,qBAAA,EAAuB,EAAE,eAAA,EAAiB,KAAA,CAAM,EAAA;AAAG,KACrD,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,UAAA,EAAY,aAAA,EAAe,KAAA,EAAO,MAAM,EAAE;AAAA,GACpD;AACA,EAAA,MAAM,OAAO,KAAA,CAAM,aAAA;AACnB,EAAA,OAAO,IAAA,mBAAOA,cAAAA,CAAC,IAAA,EAAA,EAAM,GAAG,KAAA,EAAO,CAAA,mBAAKA,cAAAA,CAAC4B,mBAAAA,EAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC5D,CAAC;AAGD,SAAS,iBAAA,CACP,KAAA,EACA,QAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,IAAA,GAAOoB,YAAA,iBAAO,IAAI,GAAA,EAAa,CAAA;AACrC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AAC1B,MAAA,MAAM,IAAA,GAAO,KAAK,IAAA,CAAK,IAAA;AAIvB,MAAA,MAAM,GAAA,GAAM,aAAa,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,GAAA,IAAO,IAAA,CAAK,SAAA,EAAW,KAAK,CAAA;AACvE,MAAA,IAAI,OAAO,CAAC,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA,EAAG;AACjC,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,GAAG,CAAA;AACpB,QAAA,QAAA,CAAS,GAAG,CAAA;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,QAAA,EAAU,KAAK,CAAC,CAAA;AAC7B;AAGA,SAAS,mBAAmB,KAAA,EAAsC;AAChE,EAAA,MAAM,IAAA,GAAOD,aAA2B,MAAS,CAAA;AACjD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIrC,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,OAAA,EAAQ;AACpC,EAAAsC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACxB,IAAA,IAAI,IAAA,CAAK,YAAY,MAAA,EAAW;AAC9B,MAAA,IAAA,CAAK,OAAA,GAAU,MAAM,GAAA,IAAO,EAAA;AAC5B,MAAA;AAAA,IACF;AACA,IAAA,IAAI,IAAA,EAAM,IAAA,KAAS,SAAA,IAAa,IAAA,CAAK,SAAS,QAAA,EAAU;AACxD,IAAA,IAAI,KAAK,KAAA,KAAU,MAAA,IAAU,IAAA,CAAK,GAAA,KAAQ,KAAK,OAAA,EAAS;AACxD,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,GAAA;AACpB,IAAA,MAAM,MAAA,GACJ,IAAA,CAAK,IAAA,KAAS,OAAA,GACV,EAAE,YAAA,EAAc;AAAA,MACd,IAAI,KAAA,CAAM,WAAA,GAAc,QAAA,EAAU,EAAA,IAAM,EAAE,mBAAmB;AAAA,KAC9D,IACA,KAAA,CAAM,WAAA,GAAc,KAAA,CAAM,IAAA,IAAQ,EAAE,mBAAmB,CAAA;AAC9D,IAAA,CAAC,QAAA,CAAS,SAAS,QAAA,IAAYC,0BAAA,EAAU,GAAG,MAAM,CAAA,EAAA,EAAK,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAAA,EACpE,GAAG,CAAC,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,QAAQ,CAAC,CAAA;AAChC;ACpOO,IAAM,mBAAmBC,aAAA,CAAO,WAAA;AAEhC,IAAM,YAAA,mBAA+BjD,UAAAA,CAAK,SAASkD,aAAAA,GAAe;AACvE,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,OAAA,EAAQ;AACjC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIzC,eAAAA,EAAQ;AACtB,EAAA,MAAM,SAASQ,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAC7D,EAAA,MAAM,SAASA,+BAAAA,CAAwB,KAAA,EAAO,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAC7D,EAAA,MAAM,cAAA,GAAiBA,+BAAAA;AAAA,IACrB,KAAA;AAAA,IACA,CAAC,MAAM,CAAA,CAAE;AAAA,GACX;AACA,EAAA,MAAM,WAAA,GAAcE,aAAAA;AAAA,IAClB,OAAO;AAAA,MACL,IAAA,EAAM,aAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,KAAA,EAAO,MAAM,KAAA,CAAM,KAAA,EAAM;AAAA,MACzB;AAAA,KACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,MAAA,EAAQ,cAAc;AAAA,GAChC;AACA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIL,eAAS,KAAK,CAAA;AACtC,EAAAiC,gBAAU,MAAM;AACd,IAAA,OAAA,CAAQ,KAAK,CAAA;AACb,IAAA,IAAI,WAAW,YAAA,EAAc;AAC7B,IAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,gBAAgB,CAAA;AAC9D,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACX,EAAA,IAAI,WAAW,IAAA,IAAS,MAAA,KAAW,YAAA,IAAgB,CAAC,MAAO,OAAO,IAAA;AAClE,EAAA,IAAI,MAAA,KAAW,aAAA;AACb,IAAA,uBACEjD,cAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,MAAM,KAAA,CAAM,WAAA;AAAA,QACZ,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS;AAAA;AAAA,KACX;AAEJ,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,UAAA,EAAY,EAAE,kBAAkB,CAAA;AAAA,IAChC,YAAA,EAAc,EAAE,oBAAoB,CAAA;AAAA,IACpC,OAAA,EAAS,EAAE,eAAe,CAAA;AAAA,IAC1B,mBAAA,EAAqB,EAAE,0BAA0B;AAAA,IACjD,MAAM,CAAA;AACR,EAAA,MAAM,MAAA,GACJ,MAAA,KAAW,qBAAA,mBACTA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,cAAc,CAAA;AAAA,MACvB,OAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,MAAM,KAAK,KAAA,CAAM,YAAA;AAAa;AAAA,GACzC,GACE,MAAA,KAAW,SAAA,mBACbA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,UAAU,CAAA;AAAA,MACnB,OAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,MAAM,KAAA,CAAM,KAAA;AAAM;AAAA,GAC7B,GACE,IAAA;AACN,EAAA,uBAAOA,cAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAa,QAAA,EAAA,MAAA,EAAO,CAAA;AACrC,CAAC;AAGM,SAAS,mBAAmB,KAAA,EAErB;AACZ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,KAAA,CAAM,KAAA;AACxB,EAAA,uBACEL,eAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,CAAA,CAAE,mBAAmB,CAAA,EAChC,QAAA,EAAA;AAAA,IAAA,KAAA,mBACCN,cAAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAO,CAAA,CAAE,UAAU,CAAA,EAAG,OAAA,EAAQ,MAAA,EAAO,OAAA,EAAS,KAAA,EAAO,CAAA,GAC3D,IAAA;AAAA,oBACJA,cAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAO,MAAM,KAAA,EAAO;AAAA,GAAA,EAC3C,CAAA;AAEJ;AAEA,SAAS,OAAO,KAAA,EAGF;AACZ,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASK,0BAAA,EAAS;AACzC,EAAA,uBACEC,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,uBAAA,EAAwB,QAAA;AAAA,MACxB,iBAAA,EAAkB,OAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,aAAA,EAAe,KAAA;AAAA,QACf,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,eAAA;AAAA,QAChB,KAAK,KAAA,CAAM,EAAA;AAAA,QACX,mBAAmB,KAAA,CAAM,EAAA;AAAA,QACzB,iBAAiB,KAAA,CAAM,EAAA;AAAA,QACvB,iBAAiB,MAAA,CAAO,OAAA;AAAA,QACxB,iBAAA,EAAmB,CAAA;AAAA,QACnB,mBAAmB,MAAA,CAAO;AAAA,OAC5B;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAV,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,CAAO,IAAA,EAAM,UAAU,IAAA,CAAK,IAAA,CAAK,EAAA,EAAI,UAAA,EAAY,CAAA,EAAE;AAAA,YAElE,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACT;AAAA,QACC,KAAA,CAAM;AAAA;AAAA;AAAA,GACT;AAEJ;ACtCO,SAAS,sBACd,KAAA,EAYW;AACX,EAAA,MAAM;AAAA,IACJ,YAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,QAAA,GAAWuC,aAAqB,KAAK,CAAA;AAC3C,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,eAAe,UAAU,CAAA;AACvC,EAAA,MAAM,SAAA,GAAY,MAAM,aAAA,KAAkB,MAAA;AAC1C,EAAA,MAAM,WAAA,GAAc,MAAM,aAAA,EAAe,KAAA;AACzC,EAAA,MAAM,aAAA,GAAgB3B,aAAAA;AAAA,IACpB,MAAO,SAAA,GAAY,EAAE,KAAA,EAAO,aAAY,GAAI,IAAA;AAAA,IAC5C,CAAC,WAAW,WAAW;AAAA,GACzB;AACA,EAAA,MAAM,KAAA,GAAQA,aAAAA;AAAA,IACZ,OAAO;AAAA,MACL,KAAA,EAAO,YAAA;AAAA,MACP,QAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,YAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA;AACF,GACF;AACA,EAAAgC,oCAAA,CAAmB,YAAY,CAAA;AAC/B,EAAAJ,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,KAAA,EAAM;AAAA,EACrB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAA,MAAM,EAAE,SAAA,EAAW,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA;AACnC,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AAChB,IAAA,KAAA,MAAW,OAAA,IAAWK,gCAAc,KAAK,CAAA;AACvC,MAAA,SAAA,CAAU,oBAAoB,OAAO,CAAA,CAAA,EAAI,EAAE,IAAA,EAAM,SAAS,CAAA;AAC5D,IAAA,KAAA,MAAW,GAAA,IAAOC,qBAAA,CAAc,IAAA,IAAQ,EAAE,CAAA;AACxC,MAAA,SAAA;AAAA,QACE,oBAAoB,GAAG,CAAA,mDAAA,CAAA;AAAA,QACvB,EAAE,MAAM,MAAA;AAAO,OACjB;AAAA,EACJ,CAAA,EAAG,CAAC,SAAA,EAAW,KAAA,EAAO,IAAI,CAAC,CAAA;AAC3B,EAAA,uBACEvD,cAAAA,CAACwD,oBAAA,EAAA,EAAa,MAAA,EAAQ,KAAA,CAAM,QAAQ,IAAA,EAAM,KAAA,CAAM,IAAA,EAC9C,QAAA,kBAAAxD,cAAAA,CAACyD,+BAAA,EAAA,EAAc,OAAO,KAAA,CAAM,KAAA,EAAO,WAAA,EAAa,KAAA,CAAM,WAAA,EACpD,QAAA,kBAAAzD,cAAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAClB,QAAA,EAAA,KAAA,CAAM,QAAA,EACT,CAAA,EACF,CAAA,EACF,CAAA;AAEJ;AAEO,SAAS,cAAc,KAAA,EAAsC;AAClE,EAAA,uBACEA,cAAAA,CAAC,qBAAA,EAAA,EAAuB,GAAG,OACzB,QAAA,kBAAAA,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,UAAA,EAAY,MAAM,UAAA,KAAe,IAAA;AAAA,MACjC,sBAAA,EAAwB,MAAM,sBAAA,IAA0B,CAAA;AAAA,MACxD,kBACE,KAAA,CAAM,gBAAA,KAAqB0D,oBAAA,CAAS,EAAA,KAAO,QAAQ,SAAA,GAAY,MAAA,CAAA;AAAA,MAEjE,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,SAAS,KAAA,CAAM,SAAA;AAAA,MACf,UAAA,EAAY,MAAM,UAAA,IAAc,IAAA;AAAA,MAChC,gBAAA,EAAkB,MAAM,gBAAA,IAAoB,sBAAA;AAAA,MAC5C,QAAQ,KAAA,CAAM;AAAA;AAAA,GAChB,EACF,CAAA;AAEJ;AAEA,SAAS,OAAO,KAAA,EAWb;AACD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAIrD,0BAAA,EAAS;AAC5B,EAAA,MAAM,EAAE,SAAA,EAAU,GAAIM,eAAAA,EAAQ;AAC9B,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AACpB,EAAA,MAAM,WAAA,GAAcU,aAAAA;AAAA,IAClB,MACE,OAAA,GACI,CAAC,CAAA,KAAe,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,EAAG,EAAE,IAAA,EAAM,aAAA,EAAe,CAAA,GAC1D,MAAA;AAAA,IACN,CAAC,OAAO;AAAA,GACV;AACA,EAAA,uBACEf,eAAAA;AAAA,IAACqD,gCAAA;AAAA,IAAA;AAAA,MACE,GAAI,KAAA,CAAM,gBAAA,KAAqB,MAAA,GAC5B,EAAE,OAAA,EAAS,KAAA,EAAM,GACjB,EAAE,QAAA,EAAU,KAAA,CAAM,gBAAA,EAAiB;AAAA,MACvC,wBAAwB,KAAA,CAAM,sBAAA;AAAA,MAC9B,KAAA,EAAO;AAAA,QACL,EAAE,IAAA,EAAM,CAAA,EAAG,eAAA,EAAiB,MAAA,CAAO,YAAY,SAAA,EAAU;AAAA,QACzD,KAAA,CAAM;AAAA,OACR;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,UAAA,GAAa,IAAA,mBAAO3D,cAAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,wBACvCA,eAAC,aAAA,EAAA,EAAc,CAAA;AAAA,wBACfA,eAAC,YAAA,EAAA,EAAa,CAAA;AAAA,wBACdA,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,CAAA,EAAE,EACrB,QAAA,kBAAAV,cAAAA,CAAC,WAAA,EAAA,EAAY,CAAA,EACf,CAAA;AAAA,QACC,KAAA,CAAM,UAAA,mBACLA,cAAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,KAAA,CAAM,UAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,gBAAA,EAAkB,CAAA,GAClE,IAAA;AAAA,wBACJA,cAAAA,CAAC,QAAA,EAAA,EAAU,GAAI,WAAA,GAAc,EAAE,OAAA,EAAS,WAAA,EAAY,GAAI,EAAC,EAAI,CAAA;AAAA,QAC5D,KAAA,CAAM;AAAA;AAAA;AAAA,GACT;AAEJ;AAGA,SAAS,WAAW,KAAA,EAAyD;AAC3E,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,OAAA,EAAQ;AACpC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAIK,0BAAA,EAAS;AAC3B,EAAA,uBACEL,cAAAA,CAACU,gBAAAA,EAAA,EAAK,KAAA,EAAO,EAAE,iBAAA,EAAmB,KAAA,CAAM,EAAA,EAAI,UAAA,EAAY,YAAA,EAAa,EACnE,QAAA,kBAAAV,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,MAAM,IAAA,CAAK,KAAA;AAAA,MAClB,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,SAAS,MAAM;AACb,QAAA,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC7B,QAAA,QAAA,CAAS,OAAA,EAAS,MAAA,GAAS,KAAA,CAAM,IAAI,CAAA;AAAA,MACvC;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAGA,SAAS,eAAe,KAAA,EAAyC;AAC/D,EAAA,MAAM,IAAA,GAAOgD,YAAAA,CAAkB,EAAE,CAAA;AACjC,EAAA,MAAM,IAAA,GAAO,SAAS,EAAC;AACvB,EAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,SAAS,IAAI,CAAA,OAAQ,OAAA,GAAU,IAAA;AACnD,EAAA,OAAO,IAAA,CAAK,OAAA;AACd;AAEA,SAAS,SAAA,CAAU,GAAc,CAAA,EAAuB;AACtD,EAAA,MAAM,IAAA,mBAAO,IAAI,GAAA,CAAI,CAAC,GAAG,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,EAAG,GAAG,MAAA,CAAO,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA;AAG3D,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,MAAA,MAAM,EAAA,GAAK,CAAA,CAAE,KAAA,IAAS,EAAC;AACvB,MAAA,MAAM,EAAA,GAAK,CAAA,CAAE,KAAA,IAAS,EAAC;AACvB,MAAA,MAAM,KAAA,mBAAQ,IAAI,GAAA,CAAI,CAAC,GAAG,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA,EAAG,GAAG,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAC,CAAA;AAC9D,MAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,IAAI,EAAA,CAAG,IAAI,CAAA,KAAM,EAAA,CAAG,IAAI,CAAA,EAAG,OAAO,KAAA;AAAA,IAC9D,WAAW,CAAA,CAAE,GAAG,MAAM,CAAA,CAAE,GAAG,GAAG,OAAO,KAAA;AAAA,EACvC;AACA,EAAA,OAAO,IAAA;AACT;ACzJO,SAAS,UAAU,KAAA,EAAkC;AAC1D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AACJ,EAAA,MAAM,UAAUY,qBAAA,EAAgB;AAChC,EAAAC,+BAAA,CAAc,OAAO,CAAA;AACrB,EAAA,MAAM,EAAE,YAAA,EAAc,KAAA,EAAO,QAAA,EAAS,GAAIC,2BAAqB,QAAA,EAAU;AAAA,IACvE,OAAO,KAAA,IAAS,IAAA;AAAA,IAChB,YAAY,UAAA,IAAc;AAAA,GAC3B,CAAA;AACD,EAAA,MAAM,QAAQ,YAAA,CAAa,KAAA;AAC3B,EAAA,MAAM,KAAA,GAAQ3C,+BAAAA;AAAA,IAAwB,KAAA;AAAA,IAAO,CAAC,CAAA,KAC5C,CAAA,CAAE,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,IAAA,KAAS,QAAQ;AAAA,GACjE;AACA,EAAA,MAAM,EAAE,OAAO,WAAA,EAAa,iBAAA,EAAmB,QAAQ,GAAG,KAAA,EAAM,GAC9D,UAAA,IAAc,EAAC;AACjB,EAAA,MAAM,IAAA,GAAOE,aAAAA;AAAA,IACX,MACE,YAAY,EAAE,GAAG,MAAM,IAAA,EAAM,iBAAA,EAAmB,SAAA,EAAU,GAAI,KAAA,CAAM,IAAA;AAAA,IACtE,CAAC,SAAA,EAAW,KAAA,CAAM,IAAI;AAAA,GACxB;AACA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,YAAA,EAAc,IAAA,CAAK,YAAA,GACf,CACE,QACA,IAAA,KACG;AACH,MAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,QACX,IAAA,EAAM,eAAA;AAAA,QACN,KAAK,YAAA,CAAa,GAAA;AAAA,QAClB,QAAQ,IAAA,CAAK,EAAA;AAAA,QACb,MAAM,MAAA,CAAO;AAAA,OACd,CAAA;AACD,MAAA,IAAA,CAAK,YAAA,GAAe,QAAQ,IAAI,CAAA;AAAA,IAClC,CAAA,GACA,MAAA;AAAA,IACJ,UAAA,EAAY,IAAA,CAAK,UAAA,GACb,CACE,MACA,IAAA,KACG;AACH,MAAA,OAAA,CAAQ,IAAA,CAAK;AAAA,QACX,IAAA,EAAM,aAAA;AAAA,QACN,KAAK,YAAA,CAAa,GAAA;AAAA,QAClB,QAAQ,IAAA,CAAK,EAAA;AAAA,QACb,MAAM,IAAA,CAAK;AAAA,OACZ,CAAA;AACD,MAAA,IAAA,CAAK,UAAA,GAAa,MAAM,IAAI,CAAA;AAAA,IAC9B,CAAA,GACA,MAAA;AAAA,IACJ,MAAA,EAAQ,CAAC,IAAA,KAAyD;AAChE,MAAA,OAAA,CAAQ,KAAK,EAAE,IAAA,EAAM,eAAe,GAAA,EAAK,YAAA,CAAa,KAAK,CAAA;AAC3D,MAAA,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,IACpB;AAAA,GACF;AACA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,GAAG,IAAA;AAAA,IACH,GAAI,OAAO,YAAA,GAAe,EAAE,cAAc,MAAA,CAAO,YAAA,KAAiB,EAAC;AAAA,IACnE,GAAI,OAAO,UAAA,GAAa,EAAE,YAAY,MAAA,CAAO,UAAA,KAAe,EAAC;AAAA,IAC7D,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,GAAI,IAAA,GAAO,EAAE,IAAA,KAAS,EAAC;AAAA,IACvB,GAAI,SAAA,IAAa,CAAC,IAAA,CAAK,gBACnB,EAAE,aAAA,EAAe,EAAE,OAAA,EAAS,MAAM,SAAA,EAAU,EAAE,KAC9C,EAAC;AAAA,IACL,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AACA,EAAA,IAAI,KAAA,CAAM,YAAY,OAAA,EAAS;AAC7B,IAAA,MAAM,GAAA,GAAuB;AAAA,MAC3B,UAAA,EAAY,QAAA;AAAA,MACZ,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ;AAAA,KACF;AACA,IAAA,uBACErB,eAAC,qBAAA,EAAA,EAAuB,GAAG,QACzB,QAAA,kBAAAA,cAAAA,CAAC,QAAA,EAAA,EACE,QAAA,EAAA,KAAA,mBACCA,cAAAA,CAAC,SAAO,GAAG,GAAA,EAAK,OAAA,EAAS,YAAA,EAAc,CAAA,mBAEvCA,eAAC,YAAA,EAAA,EAAc,GAAG,GAAA,EAAK,CAAA,EAE3B,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,CAAM,YAAY,aAAA,EAAe;AACnC,IAAA,MAAM,GAAA,GAA6B;AAAA,MACjC,SAAS,YAAA,CAAa,KAAA;AAAA,MACtB,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd;AAAA,KACF;AACA,IAAA,uBACEA,eAAC,qBAAA,EAAA,EAAuB,GAAG,QACzB,QAAA,kBAAAA,cAAAA,CAAC,QAAA,EAAA,EACE,QAAA,EAAA,WAAA,mBACCA,cAAAA,CAAC,eAAa,GAAG,GAAA,EAAK,OAAA,EAAS,kBAAA,EAAoB,CAAA,mBAEnDA,eAAC,kBAAA,EAAA,EAAoB,GAAG,GAAA,EAAK,CAAA,EAEjC,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,CAAM,YAAY,aAAA,EAAe;AACnC,IAAA,MAAM,GAAA,GAAmC;AAAA,MACvC,QAAQ,KAAA,CAAM,MAAA;AAAA,MACd,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,SAAA;AAAA,MACA,SAAS,YAAA,CAAa;AAAA,KACxB;AACA,IAAA,uBACEA,eAAC,qBAAA,EAAA,EAAuB,GAAG,QACzB,QAAA,kBAAAA,cAAAA,CAAC,QAAA,EAAA,EACE,QAAA,EAAA,iBAAA,mBACCA,cAAAA,CAAC,qBAAmB,GAAG,GAAA,EAAK,OAAA,EAAS,wBAAA,EAA0B,CAAA,mBAE/DA,eAAC,wBAAA,EAAA,EAA0B,GAAG,GAAA,EAAK,CAAA,EAEvC,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,MAAM,OAAA,GAAU,MAAA,IAAU,CAAC,KAAA,GAAQ,MAAA,GAAS,IAAA;AAC5C,EAAA,uBACEA,cAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAA;AAAA,MACJ,UAAA,EACE,OAAA,KACC,KAAA,CAAM,KAAA,IAAS,QAAA,GACZ,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,QAAA,EAAS,GACrC,IAAA,CAAA;AAAA,MAEL,GAAI,OAAA,GACD,EAAE,kBAAkB,YAAA,IAAgB,kBAAA,KACpC,EAAC;AAAA,MACL,MAAA,EACE,MAAA,KAAW,IAAA,GAAO,IAAA,mBAChBA,cAAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAM,YAAA,CAAa,IAAA;AAAA,UACnB,SAAS,YAAA,CAAa,OAAA;AAAA,UACtB,MAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GAGN;AAEJ;AAEA,SAAS,UAAU,KAAA,EAOhB;AACD,EAAA,MAAM,MAAA,GAASmB,+BAAAA,CAAwB,KAAA,CAAM,KAAA,EAAO,gBAAgB,CAAA;AAEpE,EAAA,MAAM,SAAS,MAAA,IAAU,KAAA,CAAM,OAAA,CAAQ,MAAM,IAAI,MAAA,GAAS,IAAA;AAC1D,EAAA,MAAM,GAAA,GAAwB;AAAA,IAC5B,MAAA;AAAA,IACA,QAAQ,MAAA,GAAS,KAAA,CAAM,MAAM,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,GAAI,MAAA;AAAA,IACnD,MAAA,EAAQ,CAAC,MAAA,KAAW;AAClB,MAAA,IAAI,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ,MAAM,CAAA;AAAA,IACvC,CAAA;AAAA,IACA,eAAe,KAAA,CAAM;AAAA,GACvB;AACA,EAAA,MAAM,EAAE,QAAO,GAAI,KAAA;AACnB,EAAA,OAAO,MAAA,mBACLnB,cAAAA,CAAC,MAAA,EAAA,EAAQ,GAAG,GAAA,EAAK,OAAA,EAAS,WAAA,EAAa,CAAA,mBAEvCA,cAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,GAAA,EAAK,CAAA;AAE1B;AAGO,SAAS,iBAAiB,IAAA,EAEf;AAChB,EAAA,KAAA,IAAS,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC/C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AACzB,IAAA,IAAI,IAAA,EAAM,IAAA,KAAS,SAAA,IAAa,IAAA,CAAK,SAAS,OAAA,EAAS;AACvD,IAAA,MAAM,KAAA,GACJ,IAAA,CAAK,KAAA,KAAU,MAAA,IACf,CAAC,IAAA,CAAK,OAAA,IACN,CAAC,IAAA,CAAK,OAAA,IACN,IAAA,CAAK,GAAA,CAAI,WAAW,IAAI,CAAA;AAC1B,IAAA,OAAO,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA;AAAA,EACrC;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,SAAS,KAAA,EAAyC;AACzD,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAM,GAAIK,0BAAA,EAAS;AACnC,EAAA,uBACEL,cAAAA;AAAA,IAACU,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,CAAA;AAAA,QACN,UAAA,EAAY,QAAA;AAAA,QACZ,cAAA,EAAgB,QAAA;AAAA,QAChB,SAAS,KAAA,CAAM,EAAA;AAAA,QACf,iBAAiB,MAAA,CAAO;AAAA,OAC1B;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,GACT;AAEJ;AAEA,SAAS,OAAO,KAAA,EAKb;AACD,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASL,0BAAA,EAAS;AACzC,EAAA,uBACEC,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,iBAAA,EAAkB,OAAA;AAAA,MAClB,OAAO,EAAE,UAAA,EAAY,QAAA,EAAU,GAAA,EAAK,MAAM,EAAA,EAAG;AAAA,MAE7C,QAAA,EAAA;AAAA,wBAAAV,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAO,MAAA,CAAO,IAAA;AAAA,cACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,UAAA,EAAY,KAAA;AAAA,cACZ,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACT;AAAA,wBACAT,cAAAA;AAAA,UAACS,gBAAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAO,MAAA,CAAO,SAAA;AAAA,cACd,QAAA,EAAU,KAAK,IAAA,CAAK,EAAA;AAAA,cACpB,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACT;AAAA,QACC,KAAA,CAAM,MAAA,IAAU,KAAA,CAAM,OAAA,mBACrBT,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAO,KAAA,CAAM,MAAA;AAAA,YACb,OAAA,EAAQ,SAAA;AAAA,YACR,SAAS,KAAA,CAAM;AAAA;AAAA,SACjB,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAGO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,uBACEX,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,MACrB,IAAA,EAAM,EAAE,gBAAgB,CAAA;AAAA,MACxB,MAAA,EAAQ,EAAE,gBAAgB,CAAA;AAAA,MAC1B,SAAS,KAAA,CAAM;AAAA;AAAA,GACjB;AAEJ;AAGO,SAAS,yBACd,KAAA,EACW;AACX,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,IAAA,GAAOoD,kBAAA,CAAa,CAAA,CAAE,mBAAmB,CAAC,CAAA;AAChD,EAAA,MAAM,QAAQ,CAAA,CAAE,UAAA,EAAY,EAAE,KAAA,EAAO,MAAM,CAAA;AAC3C,EAAA,uBACE/D,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,MAAM,MAAA,CAAO,CAAC,EAAE,WAAA,EAAY,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AAAA,MACpD,IAAA,EAAM,EAAE,cAAc,CAAA;AAAA,MACrB,GAAI,KAAA,CAAM,SAAA,GACP,EAAE,MAAA,EAAQ,CAAA,CAAE,cAAc,CAAA,EAAG,OAAA,EAAS,KAAA,CAAM,SAAA,EAAU,GACtD;AAAC;AAAA,GACP;AAEJ;AAGO,SAAS,mBAAmB,KAAA,EAAyC;AAC1E,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,IAAA,GAAOoD,kBAAA,CAAa,CAAA,CAAE,mBAAmB,CAAC,CAAA;AAChD,EAAA,uBACE/D,cAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAO,CAAA,CAAE,kBAAA,EAAoB,EAAE,KAAA,EAAO,MAAM,CAAA;AAAA,MAC5C,IAAA,EAAM,EAAE,sBAAsB,CAAA;AAAA,MAC9B,MAAA,EAAQ,EAAE,UAAU,CAAA;AAAA,MACpB,SAAS,KAAA,CAAM;AAAA;AAAA,GACjB;AAEJ;AAGO,SAAS,YAAY,KAAA,EAAoC;AAC9D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAIW,eAAAA,EAAQ;AACtB,EAAA,MAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,KAASN,0BAAA,EAAS;AACzC,EAAA,MAAM,KAAA,GAAQ,EAAE,KAAA,EAAO,MAAA,CAAO,WAAW,QAAA,EAAU,IAAA,CAAK,KAAK,EAAA,EAAG;AAChE,EAAA,uBACEC,eAAAA;AAAA,IAACI,gBAAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO;AAAA,QACL,aAAA,EAAe,KAAA;AAAA,QACf,QAAA,EAAU,MAAA;AAAA,QACV,UAAA,EAAY,QAAA;AAAA,QACZ,KAAK,KAAA,CAAM,EAAA;AAAA,QACX,mBAAmB,KAAA,CAAM;AAAA,OAC3B;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,WAAW,IAAA,GAAO,IAAA,GAAO,MAAM,MAAA,mBACpCV,eAACS,gBAAAA,EAAA,EAAK,KAAA,EAAO,KAAA,EAAQ,YAAE,eAAe,CAAA,EAAE,oBAExCH,eAAAA,CAAAY,qBAAA,EACE,QAAA,EAAA;AAAA,0BAAAlB,eAACS,gBAAAA,EAAA,EAAK,OAAO,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,SAAS,CAAA,EAAE,CAAA;AAAA,0BAClCT,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,cACrB,OAAA,EAAQ,MAAA;AAAA,cACR,OAAA,EAAS,MAAM,KAAA,CAAM,MAAA,CAAO,IAAI;AAAA;AAAA,WAClC;AAAA,0BACAA,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,WAAW,CAAA;AAAA,cACpB,OAAA,EAAQ,MAAA;AAAA,cACR,OAAA,EAAS,MAAM,KAAA,CAAM,MAAA,CAAO,MAAM;AAAA;AAAA;AACpC,SAAA,EACF,CAAA;AAAA,QAED,KAAA,CAAM,gCACLA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,SAAS,CAAA;AAAA,YAClB,OAAA,EAAQ,MAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,SAAS,KAAA,CAAM;AAAA;AAAA,SACjB,GACE;AAAA;AAAA;AAAA,GACN;AAEJ","file":"chunk-NRYNK7E4.cjs","sourcesContent":["// What every part reads: the conversation store, the tenant's handlers and slots. The value stays the same object\n// across renders (handlers are read through a ref, slots compared key by key), so memoized rows never re-render\n// because the screen did.\nimport type { AgentCardTarget } from '@vinaverse/client/agent';\nimport type {\n ConversationStore,\n HeldCard,\n ProposalOutcome,\n Question,\n Welcome,\n} from '@vinaverse/client/conversation';\nimport {\n type ComponentType,\n createContext,\n type ReactNode,\n type RefObject,\n useContext,\n} from 'react';\nimport type { ImageProps } from 'react-native';\nimport type { CardProps } from './cards/types.js';\nimport type {\n CardGroupProps,\n ComposerProps,\n EmptyStateProps,\n FailureAction,\n FailureProps,\n HeaderProps,\n ListProps,\n MessageBubbleProps,\n} from './components/types.js';\n\nexport type ProposalDecision = 'confirm' | 'decline';\n\n/** What the kit asks of the tenant's app. Only `onProposal` and `onOpenLink` are needed for the cards that use them. */\n/** What a chat warning is about. */\nexport interface ChatWarning {\n readonly code:\n | 'theme'\n | 'copy'\n | 'send_failed'\n | 'answer_failed'\n | 'proposal_failed'\n | 'photo_failed';\n}\n\nexport interface ChatHandlers {\n /**\n * The person confirmed or declined a proposal: call your backend with the person's own token, then say what\n * happened (`confirmed`, `declined`, `failed`, or `expired` when it had expired). The kit reports it to the session.\n */\n readonly onProposal?: (\n card: HeldCard,\n decision: ProposalDecision,\n ) => Promise<ProposalOutcome>;\n /**\n * Open a card's link in your app: a deep link that already passed the deep-link rule (route by the page it names),\n * or a `links` card's https page (your in-app browser; without this handler the system opens it).\n */\n readonly onOpenLink?: (link: string, card: HeldCard) => void;\n /** A card action without a link (`show_times`, …): sent to the session; this tells your app too. */\n readonly onCardAction?: (card: HeldCard, action: string) => void;\n /** A photo question: let the person pick one, upload it to your backend, and give back its `upload_ref`. */\n readonly onPickPhoto?: (\n question: Question,\n card: HeldCard,\n ) => Promise<{ readonly upload_ref: string } | null>;\n /**\n * A way out on a failed turn and on \"couldn't connect\": a button with your label (default \"Talk to a person\"),\n * drawn by the kit's own parts when no `components.Error` or `components.Unavailable` replaces them.\n */\n readonly failureAction?: FailureAction;\n /**\n * Warnings for the app's logger: a theme that is hard to read, copy that says \"assistant\", a send, an answer, a\n * proposal or a photo pick that failed. `warning.code` says which, so a logger counts them without the text.\n */\n readonly onWarning?: (message: string, warning: ChatWarning) => void;\n /**\n * The person tapped a card about something of yours (its `ref`: a professional, a space, a booking): open its page\n * with your router. Without it, only the card's own actions open anything.\n */\n readonly onOpenTarget?: (target: AgentCardTarget, card: HeldCard) => void;\n /** Card photos arrive: fetch them ahead with your image library (`Image.prefetch`), so the cards draw at once. */\n readonly prefetchImage?: (url: string) => void;\n /** Reads a line to a screen reader (a finished reply, the launcher's greeting). Default: the platform's. */\n readonly announce?: (text: string) => void;\n /** A chip was tapped (a welcome chip, a starter, the suggestion); its message is sent as the person's own. */\n readonly onChip?: (chip: Chip) => void;\n}\n\n/** Which card photos are drawn, in what frame, and what stands in for one that is not. */\nexport interface ImagePolicy {\n /** Hosts a photo may come from (exact names); default any https host. */\n readonly hosts?: readonly string[];\n /**\n * Width / height of a listing's photo frame. Default 1.6 (16:10). `natural`: a card on its own takes its photo's\n * own shape (its `width` and `height`), held within `naturalAspect`; a card in a carousel keeps 1.6, so the row\n * stays even, and a photo without its size too.\n */\n readonly aspectRatio?: number | 'natural';\n /** The shapes a `natural` photo is held within. Default square to 2:1 (`{ min: 1, max: 2 }`). */\n readonly naturalAspect?: { readonly min: number; readonly max: number };\n /**\n * What stands in for a missing, refused or failed photo, by the card's `kind` (a person's tile, a space's tile).\n * Default the name's monogram.\n */\n readonly Placeholder?: ComponentType<{\n readonly title: string;\n readonly kind: string;\n }>;\n}\n\n/** Parts a tenant can replace. Each gets the default's props and the default itself (`Default`), to wrap it. */\nexport interface ChatSlots {\n readonly Header?: ComponentType<HeaderProps>;\n readonly MessageBubble?: ComponentType<MessageBubbleProps>;\n readonly Composer?: ComponentType<ComposerProps>;\n readonly EmptyState?: ComponentType<EmptyStateProps>;\n readonly Image?: ComponentType<ImageProps>;\n /** A list with FlashList's props (LegendList works). Default: FlashList. */\n readonly ListComponent?: ComponentType<ListProps>;\n /** A turn that failed before any reply: replaces the \"Something went wrong.\" row. */\n readonly Error?: ComponentType<FailureProps>;\n /** No session to talk to: replaces the \"Couldn't connect.\" banner. */\n readonly Unavailable?: ComponentType<FailureProps>;\n /**\n * Draws a turn's cards that ask for a carousel (`group.layout: carousel`) in one row: the kit's `CardCarousel`, or\n * yours. Without it they draw one under another. Opt-in, so an app that never draws a carousel does not ship one.\n */\n readonly CardGroup?: ComponentType<CardGroupProps>;\n /** Card renderers by kind (`professional`, `proposal`, …). */\n readonly cards?: Readonly<Partial<Record<string, ComponentType<CardProps>>>>;\n}\n\nexport interface ChatContextValue {\n readonly store: ConversationStore;\n readonly handlers: RefObject<ChatHandlers>;\n readonly slots: ChatSlots;\n readonly agentAvatar: string | undefined;\n readonly timeZone: string | undefined;\n /** The failure action's label when there is one (`label` undefined: the copy's); `onPress` is read from `handlers`. */\n readonly failureAction: { readonly label: string | undefined } | null;\n /** Chips for an empty conversation when the session brings no welcome. */\n readonly starters: readonly Chip[] | undefined;\n readonly imagePolicy: ImagePolicy | undefined;\n}\n\n/** A tap target that sends `message` as the person's own text (a welcome chip, a starter, a suggestion). */\nexport type Chip = Welcome['chips'][number];\n\nconst ChatContext = /* @__PURE__ */ createContext<ChatContextValue | null>(\n null,\n);\n\nexport function ChatContextProvider(props: {\n readonly value: ChatContextValue;\n readonly children?: ReactNode;\n}): ReactNode {\n return (\n <ChatContext.Provider value={props.value}>\n {props.children}\n </ChatContext.Provider>\n );\n}\n\n/** The conversation, handlers and slots; only inside `VinaverseChat` (or `VinaverseChatProvider`). */\nexport function useChat(): ChatContextValue {\n const value = useContext(ChatContext);\n if (!value)\n throw new Error(\n 'Vinaverse parts render inside <VinaverseChat> or <VinaverseChatProvider>.',\n );\n return value;\n}\n","// A pressable with a 44 pt target, a role, and its busy and disabled states told to screen readers.\nimport { memo, type ReactNode } from 'react';\nimport { ActivityIndicator, Pressable, Text } from 'react-native';\nimport { useTheme } from '../theme.js';\n\nexport interface ButtonProps {\n readonly label: string;\n readonly onPress: () => void;\n readonly variant?: 'primary' | 'secondary' | 'text';\n readonly disabled?: boolean;\n readonly busy?: boolean;\n /** A role other than a button: `radio` and `checkbox` for choices. */\n readonly role?: 'button' | 'radio' | 'checkbox' | 'link';\n readonly selected?: boolean;\n readonly hint?: string;\n readonly children?: ReactNode;\n readonly testID?: string;\n}\n\nexport const Button = /* @__PURE__ */ memo(function Button(props: ButtonProps) {\n const { colors, radius, space, size, font } = useTheme();\n const variant = props.variant ?? 'secondary';\n const inactive = props.disabled === true || props.busy === true;\n const filled = variant === 'primary' || props.selected === true;\n const background = filled\n ? colors.primary\n : variant === 'secondary'\n ? colors.surface\n : 'transparent';\n const foreground = filled ? colors.onPrimary : colors.primary;\n const checkable = props.role === 'radio' || props.role === 'checkbox';\n return (\n <Pressable\n accessibilityRole={props.role ?? 'button'}\n accessibilityLabel={props.label}\n {...(props.hint ? { accessibilityHint: props.hint } : {})}\n accessibilityState={{\n disabled: inactive,\n busy: props.busy === true,\n ...(checkable\n ? props.role === 'radio'\n ? { selected: props.selected === true }\n : { checked: props.selected === true }\n : {}),\n }}\n disabled={inactive}\n onPress={props.onPress}\n {...(props.testID ? { testID: props.testID } : {})}\n style={({ pressed }) => ({\n minHeight: size.touchTarget,\n minWidth: size.touchTarget,\n paddingHorizontal: space.md,\n paddingVertical: space.sm,\n borderRadius: radius.md,\n borderWidth: variant === 'text' ? 0 : 1,\n borderColor: filled ? colors.primary : colors.border,\n backgroundColor: background,\n opacity: inactive ? 0.55 : pressed ? 0.8 : 1,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'row',\n gap: space.xs,\n })}\n >\n {props.busy ? <ActivityIndicator color={foreground} /> : null}\n {props.children ?? (\n <Text\n style={{\n color: foreground,\n fontSize: font.size.md,\n fontWeight: '500',\n ...(font.family ? { fontFamily: font.family } : {}),\n }}\n >\n {props.label}\n </Text>\n )}\n </Pressable>\n );\n});\n","// The box every card sits in, and the helpers they share.\nimport type { Card, HeldCard } from '@vinaverse/client/conversation';\nimport type { ReactNode } from 'react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\n\n/** The card as the contract types it. */\nexport function cardOf(held: HeldCard): Card {\n return held.card as unknown as Card;\n}\n\nexport function CardFrame(props: {\n readonly label: string;\n readonly restored?: boolean;\n readonly children?: ReactNode;\n readonly testID?: string;\n}) {\n const { colors, radius, space } = useTheme();\n return (\n <View\n accessibilityLabel={props.label}\n {...(props.restored\n ? {\n pointerEvents: 'none' as const,\n accessibilityState: { disabled: true },\n }\n : {})}\n {...(props.testID ? { testID: props.testID } : {})}\n style={{\n marginHorizontal: 16,\n marginTop: space.sm,\n padding: space.md,\n gap: space.sm,\n borderRadius: radius.lg,\n borderWidth: 1,\n borderColor: colors.divider,\n backgroundColor: colors.background,\n opacity: props.restored ? 0.7 : 1,\n maxWidth: 520,\n alignSelf: 'stretch',\n }}\n >\n {props.children}\n </View>\n );\n}\n\nexport function Title(props: {\n readonly children: ReactNode;\n readonly numberOfLines?: number;\n}) {\n const { colors, font } = useTheme();\n return (\n <Text\n accessibilityRole=\"header\"\n numberOfLines={props.numberOfLines}\n style={{\n color: colors.text,\n fontSize: font.size.md,\n fontWeight: '600',\n ...(font.family ? { fontFamily: font.family } : {}),\n }}\n >\n {props.children}\n </Text>\n );\n}\n\nexport function Body(props: {\n readonly children: ReactNode;\n readonly muted?: boolean;\n readonly danger?: boolean;\n}) {\n const { colors, font } = useTheme();\n return (\n <Text\n style={{\n color: props.danger\n ? colors.danger\n : props.muted\n ? colors.textMuted\n : colors.text,\n fontSize: props.muted ? font.size.sm : font.size.md,\n lineHeight:\n (props.muted ? font.size.sm : font.size.md) * font.lineHeight,\n ...(font.family ? { fontFamily: font.family } : {}),\n }}\n >\n {props.children}\n </Text>\n );\n}\n\n/** Opens a card's link through the tenant, only when it passes the deep-link rule. Null when it does not. */\nexport function useLink(\n link: string | undefined,\n held: HeldCard,\n): (() => void) | null {\n const { store, handlers } = useChat();\n if (!link || !store.checkLink(link)) return null;\n return () => handlers.current?.onOpenLink?.(link, held);\n}\n\n/** A rating in millionths as the locale writes it, one decimal: 4.8, or 4,8 in Spanish and Portuguese. */\nexport function ratingText(\n valuePpm: number,\n locale: string | undefined,\n): string {\n const value = valuePpm / 1_000_000;\n try {\n return new Intl.NumberFormat(locale, {\n minimumFractionDigits: 1,\n maximumFractionDigits: 1,\n }).format(value);\n } catch {\n return value.toFixed(1);\n }\n}\n\n/** A photo the image policy allows: https, and from one of its hosts when it names them. */\nexport function allowedImage(\n url: string | undefined,\n hosts: readonly string[] | undefined,\n): string | null {\n const safe = safeImage(url);\n if (safe === null || !hosts) return safe;\n const host = /^https:\\/\\/([^/:?#]+)/i.exec(safe)?.[1]?.toLowerCase();\n return host && hosts.some((h) => h.toLowerCase() === host) ? safe : null;\n}\n\n/** Only `https:` images are drawn. */\nexport function safeImage(url: string | undefined): string | null {\n return url && /^https:\\/\\//i.test(url) ? url : null;\n}\n","// The customer agent's other cards (service, booking, quote, policy, handoff) and any other known kind a tenant gave\n// no renderer (professionals and spaces are `ListingCard`): picture, title, subtitle, rating, price, time, text, its\n// status (a booking's \"Confirmed\") first among the badges, and actions; a tap opens what it is about (its `ref`)\n// through the app's router, when the app gives one.\nimport { formatMoney, formatTimeRange, useCopy } from '@vinaverse/react';\nimport { Image, Pressable, Text, View } from 'react-native';\nimport { Button } from '../components/Button.js';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport {\n Body,\n CardFrame,\n cardOf,\n ratingText,\n safeImage,\n Title,\n useLink,\n} from './CardFrame.js';\nimport type { CardProps } from './types.js';\n\nexport function InfoCard(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const { locale, t } = useCopy();\n const { slots, timeZone, handlers } = useChat();\n const { colors, radius, space, font } = useTheme();\n const image = safeImage(card.image_url);\n const Img = slots.Image ?? Image;\n const money = card.price ?? card.price_from;\n const rating = card.rating ? ratingText(card.rating.value_ppm, locale) : null;\n const amount = money\n ? formatMoney(money.amount, money.currency, locale)\n : null;\n const price =\n amount && !card.price ? t('priceFrom', { price: amount }) : amount;\n const when = card.starts_at\n ? formatTimeRange(card.starts_at, undefined, locale, timeZone)\n : null;\n const status =\n typeof card.status === 'string' && card.status ? card.status : null;\n const ref = card.ref;\n const onOpenTarget = handlers.current?.onOpenTarget;\n const open =\n ref && onOpenTarget && !props.restored\n ? () => onOpenTarget({ type: ref.type, id: ref.id }, props.card)\n : null;\n const label = [\n card.title,\n card.subtitle,\n status,\n rating && `★ ${rating}`,\n price,\n when,\n ]\n .filter(Boolean)\n .join(', ');\n const top = (\n <View style={{ flexDirection: 'row', gap: space.md }}>\n {image ? (\n <Img\n source={{ uri: image }}\n style={{\n width: 64,\n height: 64,\n borderRadius: radius.md,\n backgroundColor: colors.surface,\n }}\n accessible={false}\n />\n ) : null}\n <View style={{ flex: 1, gap: space.xxs }}>\n <Title numberOfLines={2}>{card.title}</Title>\n {card.subtitle ? <Body muted>{card.subtitle}</Body> : null}\n <Text style={{ color: colors.textMuted, fontSize: font.size.sm }}>\n {[\n rating &&\n `★ ${rating}${card.rating ? ` (${card.rating.count})` : ''}`,\n price,\n when,\n ]\n .filter(Boolean)\n .join(' · ')}\n </Text>\n </View>\n </View>\n );\n return (\n <CardFrame\n label={label}\n restored={props.restored}\n testID={`vinaverse-card-${card.id}`}\n >\n {open ? (\n <Pressable\n accessibilityRole=\"link\"\n accessibilityLabel={card.title}\n onPress={open}\n testID={`vinaverse-open-${card.id}`}\n >\n {top}\n </Pressable>\n ) : (\n top\n )}\n {card.body ? <Body>{card.body}</Body> : null}\n <Badges\n badges={status ? [status, ...(card.badges ?? [])] : card.badges}\n />\n {props.restored ? null : <CardActions {...props} />}\n </CardFrame>\n );\n}\n\n/** A card's badges (\"Top rated\", …), as the tenant's tool gave them. */\nexport function Badges(props: {\n readonly badges: readonly string[] | undefined;\n}) {\n const { colors, radius, space, font } = useTheme();\n if (!props.badges?.length) return null;\n return (\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.xs }}>\n {props.badges.map((b) => (\n <Text\n key={b}\n style={{\n color: colors.text,\n backgroundColor: colors.surface,\n borderRadius: radius.pill,\n paddingHorizontal: space.sm,\n paddingVertical: space.xxs,\n fontSize: font.size.xs,\n }}\n >\n {b}\n </Text>\n ))}\n </View>\n );\n}\n\n/** A card's actions: a link that passes the deep-link rule opens the tenant's page, any other goes to the session. */\nexport function CardActions(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const { space } = useTheme();\n if (!card.actions?.length) return null;\n return (\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.sm }}>\n {card.actions.map((a) => (\n <Action\n key={`${a.action}:${a.label}`}\n held={props.card}\n action={a.action}\n label={a.label}\n link={a.deep_link}\n />\n ))}\n </View>\n );\n}\n\nfunction Action(props: {\n readonly held: CardProps['card'];\n readonly action: string;\n readonly label: string;\n readonly link: string | undefined;\n}) {\n const { store, handlers } = useChat();\n const open = useLink(props.link, props.held);\n if (props.link && !open) return null; // a link that fails the rule is not drawn\n return (\n <Button\n label={props.label}\n role={open ? 'link' : 'button'}\n onPress={() => {\n if (open) return open();\n store.cardAction(props.held.id, props.action);\n handlers.current?.onCardAction?.(props.held, props.action);\n }}\n />\n );\n}\n","// The tenant's own pages when its scope keeps the agent from answering (`links`): help, support, policy, contact or\n// feedback, one row each. A deep link opens only when it passes the deep-link rule; an https page opens through the\n// tenant's `onOpenLink` (its in-app browser), else the system's. Why the scope applied (`provenance`) is never shown.\nimport { Linking } from 'react-native';\nimport { Button } from '../components/Button.js';\nimport { useChat } from '../context.js';\nimport { CardFrame, cardOf, Title } from './CardFrame.js';\nimport type { CardProps } from './types.js';\n\nexport function LinksCard(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const { store, handlers } = useChat();\n const links = (card.links ?? []).filter(\n (l) => /^https:\\/\\//i.test(l.url) || store.checkLink(l.url),\n );\n return (\n <CardFrame\n label={[card.title, ...links.map((l) => l.label)].join(', ')}\n restored={props.restored}\n testID={`vinaverse-card-${card.id}`}\n >\n <Title>{card.title}</Title>\n {links.map((l) => (\n <Button\n key={l.url}\n label={l.label}\n role=\"link\"\n variant=\"secondary\"\n disabled={props.restored}\n onPress={() => {\n const open = handlers.current?.onOpenLink;\n if (open) open(l.url, props.card);\n else void Linking.openURL(l.url);\n }}\n />\n ))}\n </CardFrame>\n );\n}\n","// A professional or a space (`professional`, `workspace`): a 16:10 photo, the name's monogram when there is none or it\n// fails to load (the card stays), the name, what and where, the rating with its count, the price it starts from, and\n// the earliest open time as a hint. Photos go through the `Image` slot, so the app's image cache applies.\nimport { formatDayTime, formatMoney, useCopy } from '@vinaverse/react';\nimport { useState } from 'react';\nimport { Image, Pressable, Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport {\n allowedImage,\n Body,\n CardFrame,\n cardOf,\n ratingText,\n Title,\n} from './CardFrame.js';\nimport { Badges, CardActions } from './InfoCard.js';\nimport type { CardProps } from './types.js';\n\nexport function ListingCard(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const { locale, t } = useCopy();\n const { slots, timeZone, handlers, imagePolicy } = useChat();\n const { colors, radius, space, font } = useTheme();\n // The photo that failed, by its URL: FlashList recycles this row for the next card, which must try its own photo.\n const [failed, setFailed] = useState<string | null>(null);\n const photoUrl = allowedImage(\n card.images?.[0]?.url ?? card.image_url,\n imagePolicy?.hosts,\n );\n const hero = photoUrl === failed ? null : photoUrl;\n const Img = slots.Image ?? Image;\n // No rating yet: the tenant's word for it (`ratingNone`, \"New\"), or nothing.\n const rating = card.rating\n ? `★ ${ratingText(card.rating.value_ppm, locale)} (${card.rating.count})`\n : t('ratingNone') || null;\n const price = card.price_from\n ? t('priceFrom', {\n price: formatMoney(\n card.price_from.amount,\n card.price_from.currency,\n locale,\n ),\n })\n : null;\n const next = card.next_available\n ? t('nextAvailable', {\n // \"today, 10:00 AM\", \"tomorrow, 10:00 AM\", else the date (the copy's `today` and `tomorrow`).\n time: formatDayTime(\n card.next_available,\n { today: t('today'), tomorrow: t('tomorrow') },\n locale,\n timeZone,\n ),\n })\n : null;\n // A tap on the card opens what it is about (its ref) through the app's router, when the app gives one.\n const ref = card.ref;\n const onOpenTarget = handlers.current?.onOpenTarget;\n const open =\n ref && onOpenTarget && !props.restored\n ? () => onOpenTarget({ type: ref.type, id: ref.id }, props.card)\n : null;\n // `natural`: a card on its own takes its photo's own shape, held within `naturalAspect`; one in a carousel, or a\n // photo without its size, keeps the fixed frame.\n const asked = imagePolicy?.aspectRatio;\n const size = card.images?.[0];\n const range = imagePolicy?.naturalAspect ?? { min: 1, max: 2 };\n const own =\n asked === 'natural' && !props.grouped && size?.width && size.height\n ? Math.min(range.max, Math.max(range.min, size.width / size.height))\n : null;\n const photo = {\n width: '100%' as const,\n aspectRatio: own ?? (typeof asked === 'number' ? asked : 1.6),\n borderRadius: radius.md,\n };\n const top = (\n <>\n {hero ? (\n <Img\n source={{ uri: hero }}\n onError={() => setFailed(hero)}\n style={{ ...photo, backgroundColor: colors.surface }}\n accessible={false}\n testID={`vinaverse-photo-${card.id}`}\n />\n ) : imagePolicy?.Placeholder ? (\n <View style={photo} testID={`vinaverse-placeholder-${card.id}`}>\n <imagePolicy.Placeholder title={card.title} kind={card.kind} />\n </View>\n ) : (\n <View\n accessible={false}\n importantForAccessibility=\"no-hide-descendants\"\n testID={`vinaverse-monogram-${card.id}`}\n style={{\n ...photo,\n backgroundColor: colors.surface,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Text\n style={{\n color: colors.textMuted,\n fontSize: font.size.xl,\n fontWeight: '600',\n }}\n >\n {monogram(card.title)}\n </Text>\n </View>\n )}\n <View style={{ gap: space.xxs }}>\n <Title numberOfLines={2}>{card.title}</Title>\n {card.subtitle ? <Body muted>{card.subtitle}</Body> : null}\n {rating || price ? (\n <Body muted>{[rating, price].filter(Boolean).join(' · ')}</Body>\n ) : null}\n </View>\n </>\n );\n return (\n <CardFrame\n label={[card.title, card.subtitle, rating, price, next]\n .filter(Boolean)\n .join(', ')}\n restored={props.restored}\n testID={`vinaverse-card-${card.id}`}\n >\n {open ? (\n <Pressable\n accessibilityRole=\"link\"\n accessibilityLabel={card.title}\n onPress={open}\n style={{ gap: space.sm }}\n testID={`vinaverse-open-${card.id}`}\n >\n {top}\n </Pressable>\n ) : (\n top\n )}\n {card.body ? <Body>{card.body}</Body> : null}\n <Badges badges={next ? [next, ...(card.badges ?? [])] : card.badges} />\n {props.restored ? null : <CardActions {...props} />}\n </CardFrame>\n );\n}\n\n/** The first letters of the first two words: \"Bell's Barber Lounge\" is \"BB\". */\nexport function monogram(title: string): string {\n return title\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => [...w][0]?.toUpperCase() ?? '')\n .join('');\n}\n","// A step the person finishes on the tenant's own screen: its title, why, and one button that opens the tenant's page.\n// Nothing is sent to the session; a link that fails the deep-link rule is not drawn.\nimport { Button } from '../components/Button.js';\nimport { Body, CardFrame, cardOf, Title, useLink } from './CardFrame.js';\nimport type { CardProps } from './types.js';\n\nexport function NextStepCard(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const action = card.actions?.[0];\n const open = useLink(action?.deep_link, props.card);\n return (\n <CardFrame\n label={[card.title, card.body].filter(Boolean).join('. ')}\n restored={props.restored}\n testID={`vinaverse-card-${card.id}`}\n >\n <Title>{card.title}</Title>\n {card.body ? <Body muted>{card.body}</Body> : null}\n {action && open && !props.restored ? (\n <Button\n label={action.label}\n variant=\"primary\"\n role=\"link\"\n onPress={open}\n />\n ) : null}\n </CardFrame>\n );\n}\n","// A change the agent proposed (a booking, a reschedule, new opening hours). Nothing has changed yet: the person\n// confirms or declines it here, the tenant's own backend applies it (`onProposal`, with the person's token), and the\n// kit reports the outcome to the session. Never drawn as done before that outcome.\nimport type { ProposalOutcome } from '@vinaverse/client/conversation';\nimport {\n formatMoney,\n formatTimeRange,\n type Translate,\n useCopy,\n} from '@vinaverse/react';\nimport { Text, View } from 'react-native';\nimport { Button } from '../components/Button.js';\nimport { type ProposalDecision, useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { Body, CardFrame, cardOf, Title, useLink } from './CardFrame.js';\nimport type { CardProps } from './types.js';\n\ninterface Field {\n readonly key: string;\n readonly label: string;\n readonly type: string;\n readonly before?: unknown;\n readonly after: unknown;\n}\n\n/** A field's value as text, by its type (`text`, `list`, `time_range`, `address`, `money_cents`). */\nexport function fieldText(\n type: string,\n value: unknown,\n locale: string | undefined,\n timeZone: string | undefined,\n): string {\n if (value === null || value === undefined) return '';\n const v = value as Record<string, unknown>;\n switch (type) {\n case 'list':\n return Array.isArray(value) ? value.join(', ') : String(value);\n case 'time_range':\n return formatTimeRange(\n String(v.start ?? ''),\n typeof v.end === 'string' ? v.end : undefined,\n locale,\n timeZone,\n );\n case 'money_cents':\n return formatMoney(\n Number(v.amount ?? 0),\n String(v.currency ?? 'USD'),\n locale,\n );\n case 'address':\n return ['line1', 'line2', 'city', 'region', 'postal_code', 'country']\n .map((k) => v[k])\n .filter((p) => typeof p === 'string' && p)\n .join(', ');\n case 'weekly_hours': {\n const entries = Array.isArray(v.entries)\n ? (v.entries as { day: string; start: string; end: string }[])\n : [];\n return entries\n .map((e) => `${weekday(e.day, locale)} ${e.start}–${e.end}`)\n .join(', ');\n }\n default:\n return typeof value === 'object' ? JSON.stringify(value) : String(value);\n }\n}\n\nconst DAYS = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];\n\n/** `mon` as the locale says it (\"Mon\", \"lun\", \"seg\"); 2024-01-01 was a Monday. */\nfunction weekday(day: string, locale: string | undefined): string {\n const i = DAYS.indexOf(day);\n if (i < 0) return day;\n try {\n return new Intl.DateTimeFormat(locale, {\n weekday: 'short',\n timeZone: 'UTC',\n }).format(new Date(Date.UTC(2024, 0, 1 + i)));\n } catch {\n return day;\n }\n}\n\nfunction outcomeText(\n t: Translate,\n outcome: string | null | undefined,\n status: string,\n): string | null {\n if (outcome === 'confirmed') return t('proposalConfirmed');\n if (outcome === 'declined') return t('proposalDeclined');\n if (outcome === 'failed') return t('proposalFailed');\n if (outcome === 'expired') return t('proposalExpired');\n if (status === 'confirmed') return t('proposalConfirmed');\n if (status === 'declined') return t('proposalDeclined');\n if (status === 'expired') return t('proposalExpired');\n if (status !== 'pending') return t('proposalSettled');\n return null;\n}\n\nexport function ProposalCard(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const proposal = card.proposal;\n const { t, locale } = useCopy();\n const { store, handlers, timeZone } = useChat();\n const { colors, space, font } = useTheme();\n const edit = useLink(proposal?.edit_deep_link, props.card);\n if (!proposal) return null;\n const settled = outcomeText(t, props.card.outcome, proposal.status);\n const actionable = settled === null && !props.restored;\n const decide = (decision: ProposalDecision) => {\n const onProposal = handlers.current?.onProposal;\n if (!onProposal) return;\n store\n .decideProposal(\n props.card.id,\n (): Promise<ProposalOutcome> => onProposal(props.card, decision),\n )\n .catch((error: unknown) =>\n handlers.current?.onWarning?.(`Vinaverse proposal: ${String(error)}`, {\n code: 'proposal_failed',\n }),\n );\n };\n const fields = (proposal.fields as readonly Field[]).map((f) => {\n const after = fieldText(f.type, f.after, locale, timeZone);\n const before =\n f.before === undefined || f.before === null\n ? null\n : fieldText(f.type, f.before, locale, timeZone);\n return {\n key: f.key,\n label: f.label,\n value:\n before !== null && before !== after ? `${before} → ${after}` : after,\n };\n });\n return (\n <CardFrame\n label={[\n proposal.title,\n proposal.summary,\n ...fields.map((f) => `${f.label}: ${f.value}`),\n settled,\n ]\n .filter(Boolean)\n .join('. ')}\n restored={props.restored}\n testID={`vinaverse-proposal-${card.id}`}\n >\n <Title>{proposal.title}</Title>\n <Body muted>{proposal.summary}</Body>\n <View style={{ gap: space.xs }}>\n {fields.map((f) => (\n <View key={f.key} style={{ flexDirection: 'row', gap: space.sm }}>\n <Text\n style={{\n color: colors.textMuted,\n fontSize: font.size.sm,\n minWidth: 72,\n }}\n >\n {f.label}\n </Text>\n <Text\n style={{ color: colors.text, fontSize: font.size.sm, flex: 1 }}\n >\n {f.value}\n </Text>\n </View>\n ))}\n </View>\n {settled ? (\n <Text\n style={{\n color:\n props.card.outcome === 'confirmed' ||\n proposal.status === 'confirmed'\n ? colors.success\n : colors.textMuted,\n fontSize: font.size.sm,\n fontWeight: '600',\n }}\n >\n {settled}\n </Text>\n ) : null}\n {actionable ? (\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.sm }}>\n <Button\n label={t('proposalConfirm')}\n variant=\"primary\"\n busy={props.busy}\n disabled={props.busy}\n onPress={() => decide('confirm')}\n testID=\"vinaverse-proposal-confirm\"\n />\n <Button\n label={t('proposalDecline')}\n disabled={props.busy}\n onPress={() => decide('decline')}\n testID=\"vinaverse-proposal-decline\"\n />\n {edit ? (\n <Button\n label={t('proposalChange')}\n variant=\"text\"\n role=\"link\"\n onPress={edit}\n />\n ) : null}\n </View>\n ) : null}\n </CardFrame>\n );\n}\n","// A guided flow's question, answered natively: every kind of the contract (choices, images, long lists, a scale, a\n// number, a date, text, a photo, a row-by-row rating). The card's own rules decide Send (`answerProblem`); the server\n// still decides, and a rejected answer unlocks the question. An answered question shows its answer; a replaced one\n// says so; a kind this kit does not know shows the question and points to the composer (§5).\nimport {\n type AnswerInput,\n answerProblem,\n codePoints,\n type Question,\n} from '@vinaverse/client/conversation';\nimport { formatDate, useConversationSelector, useCopy } from '@vinaverse/react';\nimport { useMemo, useState } from 'react';\nimport { Image, Text, TextInput, View } from 'react-native';\nimport { Button } from '../components/Button.js';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { Body, CardFrame, safeImage, Title } from './CardFrame.js';\nimport type { CardProps } from './types.js';\n\nconst KNOWN = new Set([\n 'single_choice',\n 'multi_choice',\n 'image_choice',\n 'yes_no',\n 'list_choice',\n 'rate_each',\n 'short_text',\n 'long_text',\n 'date',\n 'number',\n 'scale',\n 'photo',\n]);\n/** Kinds answered by one tap, when they offer no \"Other\". */\nconst ONE_TAP = new Set(['single_choice', 'yes_no', 'list_choice', 'scale']);\n\ntype Send = (answer: AnswerInput, questionId?: string) => void;\n\nexport function QuestionCard(props: Omit<CardProps, 'Default'>) {\n const held = props.card;\n const question = held.question as unknown as Question | undefined;\n const { store, handlers } = useChat();\n const { t, locale } = useCopy();\n const { colors, font, space } = useTheme();\n const needsSocket = useConversationSelector(\n store,\n (v) => v.answersNeedWebSocket,\n );\n if (!question) return null;\n const send: Send = (answer, questionId = question.question_id) => {\n try {\n store.answer(held.id, questionId, answer);\n } catch (error) {\n handlers.current?.onWarning?.(`Vinaverse answer: ${String(error)}`, {\n code: 'answer_failed',\n });\n }\n };\n const locked = held.locked.includes(question.question_id);\n const state = question.state;\n const open = state === 'open' && !locked && !props.restored;\n const summary =\n state === 'answered'\n ? answerText(question, locale, t('questionOther'))\n : null;\n return (\n <CardFrame\n label={[question.prompt, summary].filter(Boolean).join('. ')}\n restored={props.restored}\n testID={`vinaverse-question-${held.id}`}\n >\n {question.progress ? (\n <Text style={{ color: colors.textMuted, fontSize: font.size.xs }}>\n {t('questionStep', {\n step: question.progress.step,\n total: question.progress.total,\n })}\n </Text>\n ) : null}\n <Title>{question.prompt}</Title>\n {question.help ? <Body muted>{question.help}</Body> : null}\n {state === 'answered' ? (\n <View style={{ gap: space.xxs }}>\n <Body muted>{t('questionAnswered')}</Body>\n {summary ? <Body>{summary}</Body> : null}\n </View>\n ) : state === 'superseded' ? (\n <Body muted>{t('questionReplaced')}</Body>\n ) : !KNOWN.has(question.kind) || needsSocket ? (\n <Body muted>{t('typeAnswerBelow')}</Body>\n ) : question.kind === 'rate_each' ? (\n <RateEach\n question={question}\n locked={held.locked}\n enabled={!props.restored}\n send={send}\n />\n ) : (\n <Answer\n key={question.question_id}\n question={question}\n enabled={open}\n send={send}\n held={held}\n />\n )}\n </CardFrame>\n );\n}\n\nfunction Answer(props: {\n readonly question: Question;\n readonly enabled: boolean;\n readonly send: Send;\n readonly held: CardProps['card'];\n}) {\n const { question, send, enabled } = props;\n const { t } = useCopy();\n const { space } = useTheme();\n const { handlers } = useChat();\n const [draft, setDraft] = useState<Record<string, unknown>>({});\n const kind = question.kind as string;\n const oneTap = ONE_TAP.has(kind) && !question.allows_other;\n const problem = answerProblem(question, draft as AnswerInput);\n const submit = (answer = draft) => {\n if (answerProblem(question, answer as AnswerInput) === null)\n send(answer as AnswerInput);\n };\n const input = (() => {\n switch (kind) {\n case 'short_text':\n case 'long_text':\n return (\n <TextAnswer\n question={question}\n enabled={enabled}\n value={(draft.text as string) ?? ''}\n onChange={(text) => setDraft({ text })}\n />\n );\n case 'number':\n return (\n <NumberAnswer\n question={question}\n enabled={enabled}\n value={draft.number as number | undefined}\n onChange={(n) => setDraft({ number: n })}\n />\n );\n case 'scale':\n return (\n <ScaleAnswer\n question={question}\n enabled={enabled}\n onPick={(n) => submit({ number: n })}\n />\n );\n case 'date':\n return (\n <DateAnswer\n question={question}\n enabled={enabled}\n value={draft.date as string | undefined}\n onChange={(date) => setDraft({ date })}\n />\n );\n case 'photo':\n return (\n <Button\n label={t('questionAddPhoto')}\n disabled={!enabled || !handlers.current?.onPickPhoto}\n onPress={() => {\n handlers.current\n ?.onPickPhoto?.(question, props.held)\n .then((picked) => {\n if (picked) send({ upload_ref: picked.upload_ref });\n })\n .catch((error: unknown) =>\n handlers.current?.onWarning?.(\n `Vinaverse photo: ${String(error)}`,\n { code: 'photo_failed' },\n ),\n );\n }}\n />\n );\n default:\n return (\n <ChoiceAnswer\n question={question}\n enabled={enabled}\n draft={draft}\n onChange={(next) => (oneTap ? submit(next) : setDraft(next))}\n />\n );\n }\n })();\n const tapToAnswer = oneTap || kind === 'scale' || kind === 'photo';\n return (\n <View style={{ gap: space.sm }}>\n {input}\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.sm }}>\n {tapToAnswer ? null : (\n <Button\n label={t('questionSubmit')}\n variant=\"primary\"\n disabled={!enabled || problem !== null}\n onPress={() => submit()}\n testID=\"vinaverse-question-submit\"\n />\n )}\n {question.required ? null : (\n <Button\n label={t('questionSkip')}\n variant=\"text\"\n disabled={!enabled}\n onPress={() => send({ skipped: true })}\n />\n )}\n </View>\n </View>\n );\n}\n\nfunction ChoiceAnswer(props: {\n readonly question: Question;\n readonly enabled: boolean;\n readonly draft: Record<string, unknown>;\n readonly onChange: (draft: Record<string, unknown>) => void;\n}) {\n const { question, draft, onChange, enabled } = props;\n const { t } = useCopy();\n const { slots } = useChat();\n const { colors, radius, space, font } = useTheme();\n const [search, setSearch] = useState('');\n const multi =\n question.kind === 'multi_choice' || question.kind === 'image_choice';\n const values = (draft.values as string[] | undefined) ?? [];\n const other = draft.other_text as string | undefined;\n const none = question.none_of_the_above;\n const list = question.kind === 'list_choice';\n const options = useMemo(() => {\n const all = question.options ?? [];\n const q = search.trim().toLowerCase();\n return list && q\n ? all.filter((o) => o.label.toLowerCase().includes(q))\n : all;\n }, [question.options, search, list]);\n const shown = list ? options.slice(0, 50) : options;\n const pick = (value: string) => {\n if (none && value === none.value) return onChange({ values: [value] });\n const rest = values.filter((v) => v !== none?.value);\n const next = multi\n ? rest.includes(value)\n ? rest.filter((v) => v !== value)\n : [...rest, value]\n : [value];\n const keepOther =\n other !== undefined && (multi || question.kind === 'single_choice');\n onChange({\n ...(next.length ? { values: next } : {}),\n ...(keepOther ? { other_text: other } : {}),\n });\n };\n const Img = slots.Image ?? Image;\n return (\n <View style={{ gap: space.xs }}>\n {list ? (\n <TextInput\n value={search}\n onChangeText={setSearch}\n placeholder={t('questionSearch')}\n placeholderTextColor={colors.textMuted}\n accessibilityLabel={t('questionSearch')}\n editable={enabled}\n style={{\n borderWidth: 1,\n borderColor: colors.border,\n borderRadius: radius.md,\n paddingHorizontal: space.md,\n minHeight: 44,\n color: colors.text,\n fontSize: font.size.md,\n }}\n />\n ) : null}\n {shown.map((o) => {\n const image =\n question.kind === 'image_choice' ? safeImage(o.image_url) : null;\n return (\n <Button\n key={o.value}\n label={o.label}\n role={multi ? 'checkbox' : 'radio'}\n selected={values.includes(o.value)}\n disabled={!enabled}\n {...(o.description ? { hint: o.description } : {})}\n onPress={() => pick(o.value)}\n >\n {image ? (\n <View style={{ alignItems: 'center', gap: space.xs }}>\n <Img\n source={{ uri: image }}\n style={{ width: 96, height: 96, borderRadius: radius.md }}\n accessible={false}\n />\n <ChoiceLabel\n selected={values.includes(o.value)}\n text={o.label}\n />\n </View>\n ) : (\n <ChoiceLabel selected={values.includes(o.value)} text={o.label} />\n )}\n </Button>\n );\n })}\n {none ? (\n <Button\n label={none.label}\n role={multi ? 'checkbox' : 'radio'}\n selected={values.includes(none.value)}\n disabled={!enabled}\n onPress={() => pick(none.value)}\n />\n ) : null}\n {question.allows_other ? (\n <OtherText\n max={question.other_max_length ?? 500}\n enabled={enabled}\n value={other}\n onChange={(text) => {\n const kept = values.filter((v) => v !== none?.value);\n const withValues = question.kind === 'single_choice' || multi;\n onChange({\n ...(withValues && kept.length\n ? { values: question.kind === 'single_choice' ? [] : kept }\n : {}),\n ...(text === undefined ? {} : { other_text: text }),\n });\n }}\n />\n ) : null}\n </View>\n );\n}\n\nfunction ChoiceLabel(props: {\n readonly selected: boolean;\n readonly text: string;\n}) {\n const { colors, font } = useTheme();\n return (\n <Text\n style={{\n color: props.selected ? colors.onPrimary : colors.text,\n fontSize: font.size.md,\n textAlign: 'center',\n }}\n >\n {props.text}\n </Text>\n );\n}\n\nfunction OtherText(props: {\n readonly max: number;\n readonly enabled: boolean;\n readonly value: string | undefined;\n readonly onChange: (text: string | undefined) => void;\n}) {\n const { t } = useCopy();\n const { colors, radius, space, font } = useTheme();\n const on = props.value !== undefined;\n return (\n <View style={{ gap: space.xs }}>\n <Button\n label={t('questionOther')}\n role=\"checkbox\"\n selected={on}\n disabled={!props.enabled}\n onPress={() => props.onChange(on ? undefined : '')}\n />\n {on ? (\n <>\n <TextInput\n value={props.value}\n onChangeText={(text) => props.onChange(text)}\n accessibilityLabel={t('questionOther')}\n testID=\"vinaverse-question-other\"\n editable={props.enabled}\n style={{\n borderWidth: 1,\n borderColor: colors.border,\n borderRadius: radius.md,\n paddingHorizontal: space.md,\n minHeight: 44,\n color: colors.text,\n fontSize: font.size.md,\n }}\n />\n <CharactersLeft max={props.max} text={props.value ?? ''} />\n </>\n ) : null}\n </View>\n );\n}\n\nfunction CharactersLeft(props: {\n readonly max: number;\n readonly text: string;\n}) {\n const { t } = useCopy();\n const { colors, font } = useTheme();\n const left = props.max - codePoints(props.text);\n return (\n <Text\n accessibilityLiveRegion={left < 20 ? 'polite' : 'none'}\n style={{\n color: left < 0 ? colors.danger : colors.textMuted,\n fontSize: font.size.xs,\n }}\n >\n {t('questionCharactersLeft', { count: left })}\n </Text>\n );\n}\n\nfunction TextAnswer(props: {\n readonly question: Question;\n readonly enabled: boolean;\n readonly value: string;\n readonly onChange: (text: string) => void;\n}) {\n const { colors, radius, space, font } = useTheme();\n const long = props.question.kind === 'long_text';\n const max = props.question.text?.max_length ?? (long ? 2000 : 200);\n return (\n <View style={{ gap: space.xs }}>\n <TextInput\n value={props.value}\n onChangeText={props.onChange}\n accessibilityLabel={props.question.prompt}\n editable={props.enabled}\n multiline={long}\n testID=\"vinaverse-question-text\"\n style={{\n borderWidth: 1,\n borderColor: colors.border,\n borderRadius: radius.md,\n paddingHorizontal: space.md,\n paddingVertical: space.sm,\n minHeight: long ? 96 : 44,\n color: colors.text,\n fontSize: font.size.md,\n textAlignVertical: long ? 'top' : 'center',\n }}\n />\n <CharactersLeft max={max} text={props.value} />\n </View>\n );\n}\n\nfunction NumberAnswer(props: {\n readonly question: Question;\n readonly enabled: boolean;\n readonly value: number | undefined;\n readonly onChange: (n: number) => void;\n}) {\n const range = props.question.number ?? { min: 0, max: 100, step: 1 };\n const { colors, space, font } = useTheme();\n const value = props.value ?? range.min;\n const clamp = (n: number) =>\n Math.min(range.max, Math.max(range.min, Number(n.toFixed(6))));\n const shown = `${value}${props.question.number?.unit ? ` ${props.question.number.unit}` : ''}`;\n return (\n <View\n accessible\n accessibilityRole=\"adjustable\"\n accessibilityLabel={props.question.prompt}\n accessibilityValue={{\n min: range.min,\n max: range.max,\n now: value,\n text: shown,\n }}\n accessibilityActions={[{ name: 'increment' }, { name: 'decrement' }]}\n testID=\"vinaverse-question-number\"\n onAccessibilityAction={(e) =>\n props.onChange(\n clamp(\n value +\n (e.nativeEvent.actionName === 'increment'\n ? range.step\n : -range.step),\n ),\n )\n }\n style={{ flexDirection: 'row', alignItems: 'center', gap: space.md }}\n >\n <Button\n label=\"−\"\n disabled={!props.enabled || value <= range.min}\n onPress={() => props.onChange(clamp(value - range.step))}\n />\n <Text\n style={{\n color: colors.text,\n fontSize: font.size.lg,\n minWidth: 64,\n textAlign: 'center',\n }}\n >\n {shown}\n </Text>\n <Button\n label=\"+\"\n disabled={!props.enabled || value >= range.max}\n onPress={() => props.onChange(clamp(value + range.step))}\n />\n </View>\n );\n}\n\nfunction ScaleAnswer(props: {\n readonly question: Question;\n readonly enabled: boolean;\n readonly onPick: (n: number) => void;\n}) {\n const scale = props.question.scale;\n const { colors, space, font } = useTheme();\n if (!scale) return null;\n const points: number[] = [];\n for (let n = scale.min; n <= scale.max && points.length < 21; n += scale.step)\n points.push(n);\n return (\n <View style={{ gap: space.xs }}>\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.xs }}>\n {points.map((n) => (\n <Button\n key={n}\n label={String(n)}\n role=\"radio\"\n disabled={!props.enabled}\n onPress={() => props.onPick(n)}\n />\n ))}\n </View>\n <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Text style={{ color: colors.textMuted, fontSize: font.size.xs }}>\n {scale.min_label}\n </Text>\n <Text style={{ color: colors.textMuted, fontSize: font.size.xs }}>\n {scale.max_label}\n </Text>\n </View>\n </View>\n );\n}\n\nconst iso = (y: number, m: number, d: number) =>\n `${String(y).padStart(4, '0')}-${String(m + 1).padStart(2, '0')}-${String(d).padStart(2, '0')}`;\n\n/** A month grid, no native picker: days outside the card's bounds are disabled. */\nfunction DateAnswer(props: {\n readonly question: Question;\n readonly enabled: boolean;\n readonly value: string | undefined;\n readonly onChange: (date: string) => void;\n}) {\n const { locale } = useCopy();\n const { colors, space, font } = useTheme();\n const bounds = props.question.date;\n const start =\n props.value ?? bounds?.min ?? new Date().toISOString().slice(0, 10);\n const [month, setMonth] = useState(() => ({\n y: Number(start.slice(0, 4)),\n m: Number(start.slice(5, 7)) - 1,\n }));\n const days = new Date(Date.UTC(month.y, month.m + 1, 0)).getUTCDate();\n const title = (() => {\n try {\n return new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC',\n }).format(new Date(Date.UTC(month.y, month.m, 1)));\n } catch {\n return `${month.y}-${month.m + 1}`;\n }\n })();\n const move = (by: number) => {\n const d = new Date(Date.UTC(month.y, month.m + by, 1));\n setMonth({ y: d.getUTCFullYear(), m: d.getUTCMonth() });\n };\n const outside = (date: string) =>\n (bounds?.min !== undefined && date < bounds.min) ||\n (bounds?.max !== undefined && date > bounds.max);\n return (\n <View style={{ gap: space.xs }}>\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Button\n label=\"‹\"\n variant=\"text\"\n disabled={!props.enabled}\n onPress={() => move(-1)}\n />\n <Text\n accessibilityRole=\"header\"\n style={{ color: colors.text, fontSize: font.size.md }}\n >\n {title}\n </Text>\n <Button\n label=\"›\"\n variant=\"text\"\n disabled={!props.enabled}\n onPress={() => move(1)}\n />\n </View>\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.xxs }}>\n {Array.from({ length: days }, (_, i) => {\n const date = iso(month.y, month.m, i + 1);\n return (\n <Button\n key={date}\n label={String(i + 1)}\n hint={formatDate(date, locale)}\n role=\"radio\"\n selected={props.value === date}\n disabled={!props.enabled || outside(date)}\n onPress={() => props.onChange(date)}\n />\n );\n })}\n </View>\n {props.value ? (\n <Body muted>{formatDate(props.value, locale)}</Body>\n ) : null}\n </View>\n );\n}\n\nfunction RateEach(props: {\n readonly question: Question;\n readonly locked: readonly string[];\n readonly enabled: boolean;\n readonly send: Send;\n}) {\n const { question } = props;\n const { t } = useCopy();\n const { colors, space, font } = useTheme();\n const answered = new Map(\n (question.row_answers ?? []).map((r) => [\n r.question_id,\n ((r.answer as { values?: string[] }).values ?? [])[0],\n ]),\n );\n const open = (question.rows ?? []).filter(\n (r) => !props.locked.includes(r.question_id),\n );\n return (\n <View style={{ gap: space.md }}>\n {(question.rows ?? []).map((row) => {\n const done = props.locked.includes(row.question_id);\n return (\n <View\n key={row.question_id}\n accessibilityLabel={row.label}\n style={{ gap: space.xs }}\n >\n <Text style={{ color: colors.text, fontSize: font.size.sm }}>\n {row.label}\n </Text>\n <View\n style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.xs }}\n >\n {(question.options ?? []).map((o) => (\n <Button\n key={o.value}\n label={o.label}\n role=\"radio\"\n selected={answered.get(row.question_id) === o.value}\n disabled={!props.enabled || done}\n onPress={() =>\n props.send({ values: [o.value] }, row.question_id)\n }\n />\n ))}\n </View>\n </View>\n );\n })}\n {question.required || open.length === 0 ? null : (\n <Button\n label={t('questionSkip')}\n variant=\"text\"\n disabled={!props.enabled}\n onPress={() => {\n for (const row of open)\n props.send({ skipped: true }, row.question_id);\n }}\n />\n )}\n </View>\n );\n}\n\n/** A recorded answer, in words. */\nexport function answerText(\n question: Question,\n locale: string | undefined,\n otherLabel: string,\n): string | null {\n const answer = question.answer as\n | {\n values?: string[];\n other_text?: string;\n text?: string;\n number?: number;\n date?: string;\n upload_ref?: string;\n skipped?: boolean;\n }\n | undefined;\n if (!answer || answer.skipped) return null;\n const labels = new Map(\n (question.options ?? []).map((o) => [o.value, o.label]),\n );\n if (question.none_of_the_above)\n labels.set(\n question.none_of_the_above.value,\n question.none_of_the_above.label,\n );\n const parts = [\n ...(answer.values ?? []).map((v) => labels.get(v) ?? v),\n ...(answer.other_text ? [`${otherLabel}: ${answer.other_text}`] : []),\n ...(answer.text ? [answer.text] : []),\n ...(answer.number !== undefined ? [String(answer.number)] : []),\n ...(answer.date ? [formatDate(answer.date, locale)] : []),\n ...(answer.upload_ref ? ['📷'] : []),\n ];\n return parts.length ? parts.join(', ') : null;\n}\n","// Open times, in the person's locale and time zone. Read-only until the contract lets a tap choose one.\nimport { formatTimeRange, useCopy } from '@vinaverse/react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { CardFrame, cardOf, Title } from './CardFrame.js';\nimport type { CardProps } from './types.js';\n\nexport function TimeSlotsCard(props: Omit<CardProps, 'Default'>) {\n const card = cardOf(props.card);\n const { locale } = useCopy();\n const { timeZone } = useChat();\n const { colors, radius, space, font } = useTheme();\n const slots = (card.slots ?? []).map((s) =>\n formatTimeRange(s.start, s.end, locale, timeZone),\n );\n return (\n <CardFrame\n label={[card.title, ...slots].join(', ')}\n restored={props.restored}\n testID={`vinaverse-card-${card.id}`}\n >\n <Title>{card.title}</Title>\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.xs }}>\n {slots.map((s) => (\n <Text\n key={s}\n style={{\n color: colors.text,\n borderWidth: 1,\n borderColor: colors.border,\n borderRadius: radius.pill,\n paddingHorizontal: space.md,\n paddingVertical: space.xs,\n fontSize: font.size.sm,\n }}\n >\n {s}\n </Text>\n ))}\n </View>\n </CardFrame>\n );\n}\n","// A card by its kind: the tenant's renderer when it gave one (with the kit's as `Default`), the kit's otherwise.\n// Unknown kinds never reach here: the store skips them (§5).\n\nimport { readCard } from '@vinaverse/client/agent';\nimport type { CardItem } from '@vinaverse/client/conversation';\nimport { type ComponentType, memo, useMemo } from 'react';\nimport { useChat } from '../context.js';\nimport { InfoCard } from './InfoCard.js';\nimport { LinksCard } from './LinksCard.js';\nimport { ListingCard } from './ListingCard.js';\nimport { NextStepCard } from './NextStepCard.js';\nimport { ProposalCard } from './ProposalCard.js';\nimport { QuestionCard } from './QuestionCard.js';\nimport { TimeSlotsCard } from './TimeSlotsCard.js';\nimport type { CardProps } from './types.js';\n\nconst DEFAULTS: Readonly<\n Record<string, ComponentType<Omit<CardProps, 'Default'>>>\n> = {\n proposal: ProposalCard,\n question: QuestionCard,\n next_step: NextStepCard,\n time_slots: TimeSlotsCard,\n professional: ListingCard,\n workspace: ListingCard,\n links: LinksCard,\n};\n\n/** The kit's own renderer for a kind. */\nexport function defaultCard(\n kind: string,\n): ComponentType<Omit<CardProps, 'Default'>> {\n return DEFAULTS[kind] ?? InfoCard;\n}\n\nexport const CardView = /* @__PURE__ */ memo(function CardView(props: {\n readonly item: CardItem;\n /** Inside a carousel (`CardCarousel`). */\n readonly grouped?: boolean;\n}) {\n const { slots } = useChat();\n const { card, busy } = props.item;\n const Default = defaultCard(card.kind);\n const Custom = slots.cards?.[card.kind];\n const read = useMemo(() => readCard(card.card), [card]);\n const own = {\n card,\n read,\n busy,\n restored: props.item.restored === true,\n grouped: props.grouped === true,\n };\n return Custom ? <Custom {...own} Default={Default} /> : <Default {...own} />;\n});\n","// A turn's cards that ask for a carousel (`group.layout: carousel`) in one horizontal row: each card most of the\n// screen's width, snapping one at a time, read by screen readers as one list (\"3 results, swipe for more\") with each\n// card its own element. Opt-in (`components={{ CardGroup: CardCarousel }}`), so an app that draws none ships none;\n// without it the cards draw one under another, as the contract asks of a client without carousels.\nimport { FlashList } from '@shopify/flash-list';\nimport type { CardItem } from '@vinaverse/client/conversation';\nimport { useCopy } from '@vinaverse/react';\nimport { useWindowDimensions, View } from 'react-native';\nimport type { CardGroupProps } from '../components/types.js';\nimport { CardView } from './CardView.js';\n\nconst keyOf = (item: CardItem) => item.key;\nconst kindOf = (item: CardItem) => item.card.kind;\n\n// A plain function, not memo(): a top-level call would keep it in every bundle. The row that draws it is memoized.\nexport function CardCarousel(props: CardGroupProps) {\n const { width } = useWindowDimensions();\n const { t } = useCopy();\n const size = Math.min(Math.round(width * 0.8), 360);\n return (\n <View\n accessibilityRole=\"list\"\n accessibilityLabel={t('cardsInRow', {\n count: String(props.items.length),\n })}\n >\n <FlashList\n horizontal\n data={props.items}\n keyExtractor={keyOf}\n getItemType={kindOf}\n renderItem={({ item }) => (\n <View style={{ width: size }}>\n <CardView item={item} grouped />\n </View>\n )}\n snapToInterval={size}\n decelerationRate=\"fast\"\n showsHorizontalScrollIndicator={false}\n />\n </View>\n );\n}\n","// While the agent works and nothing has streamed yet: its tool line (\"Searching professionals…\") or that it is on it.\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { memo } from 'react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\n\nexport const ActivityLine = /* @__PURE__ */ memo(function ActivityLine() {\n const { store } = useChat();\n const { t } = useCopy();\n const { colors, space, font } = useTheme();\n const activity = useConversationSelector(store, (v) => v.activity);\n const waiting = useConversationSelector(\n store,\n (v) =>\n v.responding &&\n v.items.at(-1)?.type === 'message' &&\n (v.items.at(-1) as { role: string }).role === 'person',\n );\n const name = useConversationSelector(store, (v) => v.agent.name);\n const running = activity.filter((a) => a.state === 'running').at(-1);\n if (!running && !waiting) return null;\n const text =\n running?.label ?? t('working', { agent: name ?? t('agentFallbackName') });\n return (\n <View\n accessibilityLiveRegion=\"polite\"\n style={{ paddingHorizontal: space.lg, paddingVertical: space.sm }}\n >\n <Text style={{ color: colors.textMuted, fontSize: font.size.sm }}>\n {text}\n </Text>\n </View>\n );\n});\n","// The agent's picture, or the first letter of its name on the brand color. Decorative: the name beside it is read.\nimport { memo } from 'react';\nimport { Image, Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\n\nexport const Avatar = /* @__PURE__ */ memo(function Avatar(props: {\n readonly name: string;\n readonly uri: string | null;\n readonly person?: boolean;\n}) {\n const { colors, size, font } = useTheme();\n const { slots } = useChat();\n const box = {\n width: size.avatar,\n height: size.avatar,\n borderRadius: size.avatar / 2,\n };\n if (props.uri && !props.person) {\n const Img = slots.Image ?? Image;\n return (\n <Img\n source={{ uri: props.uri }}\n style={box}\n accessibilityIgnoresInvertColors\n accessible={false}\n importantForAccessibility=\"no\"\n />\n );\n }\n return (\n <View\n accessible={false}\n importantForAccessibility=\"no-hide-descendants\"\n style={{\n ...box,\n backgroundColor: props.person ? colors.staffBubble : colors.primary,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Text\n style={{\n color: props.person ? colors.staffText : colors.onPrimary,\n fontSize: font.size.sm,\n fontWeight: '600',\n }}\n >\n {props.person ? '◉' : (props.name.trim()[0] ?? '?').toUpperCase()}\n </Text>\n </View>\n );\n});\n","// The header: the agent's picture and name, and what it is (an AI agent), or, while a person from the business\n// replies, that person's role. Replaceable through the `Header` slot; the disclosure bar under it is not.\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { memo } from 'react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { Avatar } from './Avatar.js';\nimport type { HeaderProps } from './types.js';\n\nexport function DefaultHeader(props: Omit<HeaderProps, 'Default'>) {\n const { colors, space, font } = useTheme();\n const { t } = useCopy();\n const person = props.takeoverBy !== null;\n const subtitle = person\n ? t('staffLabel', { by: props.takeoverBy || t('staffFallbackRole') })\n : t('agentLabel');\n return (\n <View\n accessibilityRole=\"header\"\n accessible\n accessibilityLabel={`${props.name}, ${subtitle}`}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n gap: space.sm,\n paddingHorizontal: space.lg,\n paddingVertical: space.sm,\n backgroundColor: colors.background,\n borderBottomWidth: 1,\n borderBottomColor: colors.divider,\n }}\n >\n <Avatar name={props.name} uri={props.avatarUrl} person={person} />\n <View style={{ flexShrink: 1 }}>\n <Text\n numberOfLines={1}\n style={{\n color: colors.text,\n fontSize: font.size.md,\n fontWeight: '600',\n ...(font.family ? { fontFamily: font.family } : {}),\n }}\n >\n {props.name}\n </Text>\n <Text\n numberOfLines={1}\n style={{\n color: person ? colors.staffAccent : colors.textMuted,\n fontSize: font.size.xs,\n }}\n >\n {subtitle}\n </Text>\n </View>\n </View>\n );\n}\n\nexport const ChatHeader = /* @__PURE__ */ memo(function ChatHeader() {\n const { store, slots, agentAvatar } = useChat();\n const { t } = useCopy();\n const agent = useConversationSelector(store, (v) => v.agent);\n const takeover = useConversationSelector(store, (v) => v.takeover);\n const Header = slots.Header;\n const props = {\n name: agent.name ?? t('agentFallbackName'),\n avatarUrl: agentAvatar ?? agent.avatarUrl,\n takeoverBy: takeover ? (takeover.by ?? '') : null,\n };\n return Header ? (\n <Header {...props} Default={DefaultHeader} />\n ) : (\n <DefaultHeader {...props} />\n );\n});\n","// Where the person types. Its text is its own state, so typing renders nothing else. Enabled from the first frame:\n// a message typed before the session is ready is held and sent once it is. Stop replaces Send while the agent\n// replies and nothing is typed.\nimport { codePoints, MAX_TEXT } from '@vinaverse/client/conversation';\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { memo, useCallback, useState } from 'react';\nimport { TextInput, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { Button } from './Button.js';\nimport type { ComposerProps } from './types.js';\n\nexport function DefaultComposer(props: Omit<ComposerProps, 'Default'>) {\n const { t, direction } = useCopy();\n const { colors, radius, space, font, size } = useTheme();\n const [text, setText] = useState('');\n const length = codePoints(text);\n const canSend = text.trim().length > 0 && length <= MAX_TEXT;\n const send = () => {\n if (!canSend) return;\n props.onSend(text);\n setText('');\n };\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'flex-end',\n gap: space.sm,\n paddingHorizontal: space.lg,\n paddingVertical: space.sm,\n borderTopWidth: 1,\n borderTopColor: colors.divider,\n backgroundColor: colors.background,\n }}\n >\n <TextInput\n value={text}\n onChangeText={setText}\n placeholder={props.placeholder}\n placeholderTextColor={colors.textMuted}\n accessibilityLabel={props.placeholder}\n multiline\n maxLength={MAX_TEXT * 2}\n testID=\"vinaverse-composer-input\"\n style={{\n flex: 1,\n minHeight: size.touchTarget,\n maxHeight: 140,\n paddingHorizontal: space.md,\n paddingVertical: space.sm,\n borderRadius: radius.lg,\n borderWidth: 1,\n borderColor: colors.border,\n color: colors.text,\n backgroundColor: colors.surface,\n fontSize: font.size.md,\n textAlign: direction === 'rtl' ? 'right' : 'left',\n writingDirection: direction,\n ...(font.family ? { fontFamily: font.family } : {}),\n }}\n />\n {props.responding && !text ? (\n <Button\n label={t('stop')}\n onPress={props.onStop}\n testID=\"vinaverse-stop\"\n />\n ) : (\n <Button\n label={t('send')}\n variant=\"primary\"\n disabled={!canSend}\n onPress={send}\n testID=\"vinaverse-send\"\n />\n )}\n </View>\n );\n}\n\nexport const Composer = /* @__PURE__ */ memo(function Composer(props: {\n readonly onError?: (error: unknown) => void;\n}) {\n const { store, slots } = useChat();\n const { t } = useCopy();\n const takeover = useConversationSelector(store, (v) => v.takeover);\n const name = useConversationSelector(store, (v) => v.agent.name);\n const responding = useConversationSelector(store, (v) => v.responding);\n const { onError } = props;\n const onSend = useCallback(\n (text: string) => {\n try {\n store.send(text);\n } catch (error) {\n onError?.(error);\n }\n },\n [store, onError],\n );\n const onStop = useCallback(() => store.cancel(), [store]);\n const placeholder = takeover\n ? t('composerPlaceholderTakeover', {\n by: takeover.by || t('staffFallbackRole'),\n })\n : t('composerPlaceholder', { agent: name ?? t('agentFallbackName') });\n const Slot = slots.Composer;\n const own = { placeholder, responding, onSend, onStop };\n return Slot ? (\n <Slot {...own} Default={DefaultComposer} />\n ) : (\n <DefaultComposer {...own} />\n );\n});\n","// The AI disclosure: always shown, under the header, never scrolled away, never a slot. The server's text once it\n// arrives, the built-in line until then, so no frame is without it. Its colors fall back to the Vinaverse pair when a\n// tenant's theme would make it hard to read.\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { contrastRatio, colors as defaults, size } from '@vinaverse/tokens';\nimport { memo, useState } from 'react';\nimport { Pressable, Text } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\n\nexport const DisclosureBar = /* @__PURE__ */ memo(function DisclosureBar() {\n const { store } = useChat();\n const { t } = useCopy();\n const theme = useTheme();\n const { space, font } = theme;\n const disclosure = useConversationSelector(store, (v) => v.disclosure);\n const [open, setOpen] = useState(false);\n const legible =\n contrastRatio(\n theme.colors.disclosureText,\n theme.colors.disclosureBackground,\n ) >= 4.5;\n const pair = legible ? theme.colors : defaults(theme.scheme);\n const text = disclosure ?? t('disclosureFallback');\n return (\n <Pressable\n accessibilityRole=\"text\"\n accessibilityLabel={text}\n onPress={() => setOpen((o) => !o)}\n testID=\"vinaverse-disclosure\"\n style={{\n backgroundColor: pair.disclosureBackground,\n paddingHorizontal: space.lg,\n paddingVertical: space.xs,\n }}\n >\n <Text\n numberOfLines={open ? undefined : 2}\n style={{\n color: pair.disclosureText,\n // never below the disclosure's minimum, whatever the tenant's type scale\n fontSize: Math.max(font.size.xs, size.disclosureFontMin),\n lineHeight:\n Math.max(font.size.xs, size.disclosureFontMin) * font.lineHeight,\n }}\n >\n {text}\n </Text>\n </Pressable>\n );\n});\n","// The first paint while a conversation is being opened and nothing is drawn yet: three quiet rows, no animation.\nimport { memo } from 'react';\nimport { View } from 'react-native';\nimport { useTheme } from '../theme.js';\n\nexport const ChatSkeleton = /* @__PURE__ */ memo(function ChatSkeleton() {\n const { colors, radius, space } = useTheme();\n const row = (width: `${number}%`, end: boolean) => (\n <View\n style={{\n alignSelf: end ? 'flex-end' : 'flex-start',\n width,\n height: 40,\n borderRadius: radius.lg,\n backgroundColor: colors.surface,\n marginHorizontal: space.lg,\n marginTop: space.md,\n }}\n />\n );\n return (\n <View\n accessible\n accessibilityRole=\"progressbar\"\n accessibilityState={{ busy: true }}\n testID=\"vinaverse-skeleton\"\n >\n {row('62%', false)}\n {row('45%', true)}\n {row('70%', false)}\n </View>\n );\n});\n","// A message: the bubble (replaceable through the `MessageBubble` slot) inside the kit's own frame, which says who\n// wrote it (the agent as an AI agent, a person from the business as a person, by role) and what became of it (sending,\n// held for the next session, not sent with a retry, delivered, cut off). A slot cannot drop that frame.\nimport type { MessageItem } from '@vinaverse/client/conversation';\nimport { useCopy, useStreamingText } from '@vinaverse/react';\nimport { memo } from 'react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { Button } from './Button.js';\nimport type { MessageBubbleProps } from './types.js';\n\nexport function DefaultBubble(props: Omit<MessageBubbleProps, 'Default'>) {\n const { colors, radius, space, font } = useTheme();\n const role = props.item.role;\n const [background, foreground] =\n role === 'person'\n ? [colors.personBubble, colors.personText]\n : role === 'staff'\n ? [colors.staffBubble, colors.staffText]\n : [colors.agentBubble, colors.agentText];\n return (\n <View\n style={{\n backgroundColor: background,\n borderRadius: radius.lg,\n paddingHorizontal: space.md,\n paddingVertical: space.sm,\n }}\n >\n <Text\n selectable\n style={{\n color: foreground,\n fontSize: font.size.md,\n lineHeight: font.size.md * font.lineHeight,\n ...(font.family ? { fontFamily: font.family } : {}),\n }}\n >\n {props.text}\n </Text>\n </View>\n );\n}\n\n/** Who wrote a message, as the frame says it and a screen reader reads it. */\nexport function useAuthor(item: MessageItem): string {\n const { t } = useCopy();\n const { store } = useChat();\n const name = store.getSnapshot().agent.name ?? t('agentFallbackName');\n const by = store.getSnapshot().takeover?.by;\n if (item.role === 'person') return t('you');\n if (item.role === 'staff')\n return t('staffLabel', { by: by || t('staffFallbackRole') });\n return `${name} · ${t('agentLabel')}`;\n}\n\nexport const MessageBubble = /* @__PURE__ */ memo(\n function MessageBubble(props: {\n readonly item: MessageItem;\n /** The first of a run from the same author: its label is shown. */\n readonly showAuthor: boolean;\n }) {\n const { item } = props;\n return <Frame item={item} text={item.text} showAuthor={props.showAuthor} />;\n },\n);\n\n/** The reply streaming now: the only cell that re-renders as the text arrives. */\nexport const StreamingBubble = /* @__PURE__ */ memo(\n function StreamingBubble(props: {\n readonly item: MessageItem;\n readonly showAuthor: boolean;\n }) {\n const { store } = useChat();\n const text = useStreamingText(store, props.item.key) ?? '';\n return (\n <Frame item={props.item} text={text} showAuthor={props.showAuthor} />\n );\n },\n);\n\nfunction Frame(props: {\n readonly item: MessageItem;\n readonly text: string;\n readonly showAuthor: boolean;\n}) {\n const { item, text } = props;\n const { store, slots } = useChat();\n const { t } = useCopy();\n const { colors, space, font } = useTheme();\n const author = useAuthor(item);\n const mine = item.role === 'person';\n const status =\n item.state === 'sending'\n ? t('messageSending')\n : item.state === 'held'\n ? t('messageHeld')\n : item.state === 'not_sent'\n ? item.rejection?.message || t('messageNotSent')\n : item.state === 'delivered'\n ? t('messageDelivered')\n : item.partial\n ? t('messageCutOff')\n : null;\n const Bubble = slots.MessageBubble;\n const bubble = Bubble ? (\n <Bubble item={item} text={text} Default={DefaultBubble} />\n ) : (\n <DefaultBubble item={item} text={text} />\n );\n return (\n <View\n accessible\n accessibilityLabel={[author, text, status].filter(Boolean).join('. ')}\n style={{\n alignSelf: mine ? 'flex-end' : 'flex-start',\n maxWidth: '85%',\n marginHorizontal: space.lg,\n marginTop: props.showAuthor ? space.md : space.xs,\n opacity: item.state === 'sending' || item.state === 'held' ? 0.75 : 1,\n }}\n >\n {props.showAuthor && !mine ? (\n <Text\n style={{\n color:\n item.role === 'staff' ? colors.staffAccent : colors.textMuted,\n fontSize: font.size.xs,\n marginBottom: space.xxs,\n }}\n >\n {author}\n </Text>\n ) : null}\n {bubble}\n {status ? (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: mine ? 'flex-end' : 'flex-start',\n gap: space.xs,\n marginTop: space.xxs,\n }}\n >\n <Text\n style={{\n color:\n item.state === 'not_sent' ? colors.danger : colors.textMuted,\n fontSize: font.size.xs,\n }}\n >\n {status}\n </Text>\n {item.state === 'not_sent' ? (\n <Button\n label={t('tryAgain')}\n variant=\"text\"\n onPress={() => {\n store.retry(item.key);\n }}\n />\n ) : null}\n </View>\n ) : null}\n </View>\n );\n}\n","// The two failures a person needs a way out of: a turn that failed before any reply, and no session to talk to. A\n// tenant replaces either part (`components.Error`, `components.Unavailable`) or adds one action to the kit's own\n// (`failureAction`, \"Talk to a person\" by default), since a person is always the way out when the agent fails.\nimport { useCopy } from '@vinaverse/react';\nimport type { ComponentType, ReactNode } from 'react';\nimport { useChat } from '../context.js';\nimport { Button } from './Button.js';\nimport type { FailureProps, FailureState } from './types.js';\n\n/** The tenant's failure action as a button, or nothing when there is none. */\nexport function FailureActionButton(props: {\n readonly state: FailureState;\n}): ReactNode {\n const { handlers, failureAction } = useChat();\n const { t } = useCopy();\n if (!failureAction) return null;\n return (\n <Button\n label={failureAction.label ?? t('talkToPerson')}\n variant=\"text\"\n onPress={() => handlers.current.failureAction?.onPress(props.state)}\n />\n );\n}\n\n/** The tenant's slot for this failure, given the kit's own part as `Default`; the kit's own part when there is none. */\nexport function FailureSlot(props: {\n readonly slot: ComponentType<FailureProps> | undefined;\n readonly state: FailureState;\n readonly Default: FailureProps['Default'];\n}): ReactNode {\n const { slot: Slot, state, Default } = props;\n return Slot ? (\n <Slot state={state} Default={Default} />\n ) : (\n <Default state={state} />\n );\n}\n","// A line about the conversation, not in it: a person from the business took over or handed back, the request went to\n// the team, the answers were sent, a turn failed before any reply (with the tenant's way out, `Failure.tsx`).\nimport type { SystemItem } from '@vinaverse/client/conversation';\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { memo, type ReactNode } from 'react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { FailureActionButton, FailureSlot } from './Failure.js';\nimport type { FailureState } from './types.js';\n\nexport const SystemRow = /* @__PURE__ */ memo(function SystemRow(props: {\n readonly item: SystemItem;\n}) {\n const { t } = useCopy();\n const { store, slots } = useChat();\n // Selected, not read once: a row drawn before a session named the conversation gets its id when one does.\n const conversationId = useConversationSelector(\n store,\n (v) => v.conversationId,\n );\n const { event, data } = props.item;\n if (event === 'turn_failed') {\n const key = props.item.key;\n const state: FailureState = {\n kind: 'turn_failed',\n reason: typeof data.code === 'string' ? data.code : null,\n retry: data.retry === true ? () => void store.retryTurn(key) : undefined,\n conversationId,\n };\n return (\n <FailureSlot\n slot={slots.Error}\n state={state}\n Default={DefaultTurnFailed}\n />\n );\n }\n const agent = store.getSnapshot().agent.name ?? t('agentFallbackName');\n const text = (() => {\n switch (event) {\n case 'takeover_started':\n return t('takeoverStarted', {\n by: (data.by as string | null) || t('staffFallbackRole'),\n });\n case 'takeover_ended':\n return t('takeoverEnded', { agent });\n case 'handoff_created':\n return data.expected_response\n ? t('handoffCreated', { expected: data.expected_response as string })\n : t('handoffCreatedNoTime');\n case 'flow_completed':\n return data.result === 'ok'\n ? t('flowSent')\n : data.result === 'failed'\n ? t('flowNotSent')\n : null;\n default:\n return null;\n }\n })();\n if (!text) return null;\n return <Line text={text} />;\n});\n\n/** The kit's own failed-turn row: \"Something went wrong.\", and the tenant's failure action when there is one. */\nexport function DefaultTurnFailed(props: {\n readonly state: FailureState;\n}): ReactNode {\n const { t } = useCopy();\n const { failureAction } = useChat();\n const text = t('turnFailed');\n if (!failureAction) return <Line text={text} danger />;\n return (\n <View style={{ alignItems: 'center' }}>\n <Line text={text} danger />\n <FailureActionButton state={props.state} />\n </View>\n );\n}\n\nfunction Line(props: { readonly text: string; readonly danger?: boolean }) {\n const { colors, space, font } = useTheme();\n return (\n <View\n accessible\n accessibilityLabel={props.text}\n style={{\n alignItems: 'center',\n paddingHorizontal: space.xl,\n paddingVertical: space.sm,\n }}\n >\n <Text\n style={{\n color: props.danger ? colors.danger : colors.textMuted,\n fontSize: font.size.sm,\n textAlign: 'center',\n }}\n >\n {props.text}\n </Text>\n </View>\n );\n}\n","// The tenant's greeting for the session's mode and its chips (`Session.welcome`), on an empty conversation: shown the\n// moment the session is ready, with no model call. A chip sends its message as the person's own text.\nimport type { Welcome as WelcomeData } from '@vinaverse/client/conversation';\nimport { memo } from 'react';\nimport { Text, View } from 'react-native';\nimport { useTheme } from '../theme.js';\nimport { Button } from './Button.js';\n\nexport const Welcome = /* @__PURE__ */ memo(function Welcome(props: {\n readonly welcome: WelcomeData;\n readonly onChip: (message: string) => void;\n}) {\n const { colors, radius, space, font } = useTheme();\n return (\n <View\n style={{ padding: space.lg, gap: space.md }}\n testID=\"vinaverse-welcome\"\n >\n <Text\n style={{\n alignSelf: 'flex-start',\n maxWidth: '85%',\n color: colors.agentText,\n backgroundColor: colors.agentBubble,\n borderRadius: radius.lg,\n paddingHorizontal: space.md,\n paddingVertical: space.sm,\n fontSize: font.size.md,\n lineHeight: font.size.md * font.lineHeight,\n }}\n >\n {props.welcome.text}\n </Text>\n {props.welcome.chips.length ? (\n <View style={{ flexDirection: 'row', flexWrap: 'wrap', gap: space.sm }}>\n {props.welcome.chips.map((chip) => (\n <Button\n key={chip.label}\n label={chip.label}\n onPress={() => props.onChip(chip.message)}\n />\n ))}\n </View>\n ) : null}\n </View>\n );\n});\n","// The conversation: a virtualized list (FlashList v2, or the tenant's through the `ListComponent` slot), anchored at\n// the bottom without being inverted, so screen readers read it oldest first. Rows are memoized on their item, which\n// the store keeps as the same object while it does not change: a new message renders one row, a streamed reply only\n// its bubble.\n\nimport { FlashList } from '@shopify/flash-list';\nimport type { CardItem, TimelineItem } from '@vinaverse/client/conversation';\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { allowedImage } from '../cards/CardFrame.js';\nimport { CardView } from '../cards/CardView.js';\nimport { useChat } from '../context.js';\nimport { announce, useReducedMotion } from '../platform.js';\nimport { useTheme } from '../theme.js';\nimport { ActivityLine } from './ActivityLine.js';\nimport { ChatSkeleton } from './ChatSkeleton.js';\nimport { MessageBubble, StreamingBubble } from './MessageBubble.js';\nimport { SystemRow } from './SystemRow.js';\nimport type { ListProps } from './types.js';\nimport { Welcome } from './Welcome.js';\n\nconst keyOf = (item: TimelineItem) => item.key;\n\n/** Rows of one kind recycle together. */\nexport function itemType(item: TimelineItem): string {\n if (item.type === 'card') return `card:${item.card.kind}`;\n if (item.type === 'message')\n return item.state === 'streaming' ? 'streaming' : `message:${item.role}`;\n return 'system';\n}\n\nfunction authorOf(item: TimelineItem | undefined): string | null {\n return item?.type === 'message' ? item.role : null;\n}\n\n/**\n * Carousel groups of two or more cards (`group.layout: carousel`, the same `group.id` in the same turn), wherever in\n * the turn they arrive, another card or a message between them included: drawn as one row where the group's first\n * card is, by that card's key, with the keys of the cards the row draws after it. A row equal to the previous one is\n * the same array, so it does not render again.\n */\nexport function carousels(\n items: readonly TimelineItem[],\n previous: ReadonlyMap<string, readonly CardItem[]>,\n): {\n runs: Map<string, readonly CardItem[]>;\n inside: Set<string>;\n} {\n const groups = new Map<string, CardItem[]>();\n for (const item of items) {\n if (item.type !== 'card') continue;\n const group = (\n item.card.card as { group?: { id?: unknown; layout?: unknown } }\n ).group;\n if (group?.layout !== 'carousel' || typeof group.id !== 'string') continue;\n const id = `${item.card.turnId ?? ''}\\u0000${group.id}`;\n const members = groups.get(id);\n if (members) members.push(item);\n else groups.set(id, [item]);\n }\n const runs = new Map<string, readonly CardItem[]>();\n const inside = new Set<string>();\n for (const run of groups.values()) {\n if (run.length < 2) continue;\n const key = run[0]?.key as string;\n const before = previous.get(key);\n runs.set(\n key,\n before &&\n before.length === run.length &&\n before.every((c, n) => c === run[n])\n ? before\n : run,\n );\n for (const card of run.slice(1)) inside.add(card.key);\n }\n return { runs, inside };\n}\n\nexport const Row = /* @__PURE__ */ memo(function Row(props: {\n readonly item: TimelineItem;\n readonly showAuthor: boolean;\n /** The carousel this card starts (`components.CardGroup`). */\n readonly run?: readonly CardItem[] | undefined;\n /** A card a carousel earlier in the list draws. */\n readonly inside?: boolean;\n}) {\n const { item } = props;\n const { slots } = useChat();\n const Group = slots.CardGroup;\n if (props.inside) return null;\n if (props.run && Group) return <Group items={props.run} />;\n if (item.type === 'card') return <CardView item={item} />;\n if (item.type === 'system') return <SystemRow item={item} />;\n return item.state === 'streaming' ? (\n <StreamingBubble item={item} showAuthor={props.showAuthor} />\n ) : (\n <MessageBubble item={item} showAuthor={props.showAuthor} />\n );\n});\n\nexport const MessageList = /* @__PURE__ */ memo(function MessageList() {\n const { store, slots, starters, handlers, imagePolicy } = useChat();\n const { t } = useCopy();\n const { space } = useTheme();\n const reducedMotion = useReducedMotion();\n const items = useConversationSelector(store, (v) => v.items);\n usePrefetchPhotos(items, handlers.current?.prefetchImage, imagePolicy?.hosts);\n const opening = useConversationSelector(\n store,\n (v) => v.status === 'starting' || v.status === 'connecting',\n );\n const agentName = useConversationSelector(store, (v) => v.agent.name);\n const served = useConversationSelector(store, (v) => v.welcome);\n // The session's welcome first; else the app's starters, under the kit's greeting.\n const welcome = useMemo(\n () =>\n served ??\n (starters?.length\n ? {\n text: t('welcomeFallback', {\n agent: agentName ?? t('agentFallbackName'),\n }),\n chips: [...starters],\n }\n : null),\n [served, starters, t, agentName],\n );\n useAnnounceReplies(items);\n\n // Carousels only when the app draws them (`components.CardGroup`): otherwise nothing is grouped.\n const Group = slots.CardGroup;\n const runsRef = useRef<ReadonlyMap<string, readonly CardItem[]>>(new Map());\n const grouping = useMemo(\n () => (Group ? carousels(items, runsRef.current) : null),\n [items, Group],\n );\n runsRef.current = grouping?.runs ?? new Map();\n const itemsRef = useRef(items);\n itemsRef.current = items;\n const groupingRef = useRef(grouping);\n groupingRef.current = grouping;\n const renderItem = useCallback(\n ({ item, index }: { item: TimelineItem; index: number }) => (\n <Row\n item={item}\n showAuthor={authorOf(item) !== authorOf(itemsRef.current[index - 1])}\n run={groupingRef.current?.runs.get(item.key)}\n inside={groupingRef.current?.inside.has(item.key) === true}\n />\n ),\n [],\n );\n\n const onChip = useCallback(\n (message: string) => {\n store.send(message);\n const chip = welcome?.chips.find((c) => c.message === message);\n if (chip) handlers.current?.onChip?.(chip);\n },\n [store, welcome, handlers],\n );\n const Empty = slots.EmptyState;\n const empty = opening ? (\n <ChatSkeleton />\n ) : Empty ? (\n <Empty\n agentName={agentName ?? t('agentFallbackName')}\n welcome={welcome}\n onChip={onChip}\n />\n ) : welcome ? (\n <Welcome welcome={welcome} onChip={onChip} />\n ) : null;\n const props: ListProps = useMemo(\n () => ({\n data: items,\n renderItem,\n keyExtractor: keyOf,\n getItemType: itemType,\n maintainVisibleContentPosition: {\n startRenderingFromBottom: true,\n autoscrollToBottomThreshold: 0.2,\n animateAutoScrollToBottom: !reducedMotion,\n },\n ListFooterComponent: <ActivityLine />,\n ListEmptyComponent: empty,\n keyboardShouldPersistTaps: 'handled',\n contentContainerStyle: { paddingVertical: space.sm },\n }),\n [items, renderItem, reducedMotion, empty, space.sm],\n );\n const List = slots.ListComponent;\n return List ? <List {...props} /> : <FlashList {...props} />;\n});\n\n/** Each card photo once, ahead, through the app's image library, so the cards draw at once. */\nfunction usePrefetchPhotos(\n items: readonly TimelineItem[],\n prefetch: ((url: string) => void) | undefined,\n hosts: readonly string[] | undefined,\n): void {\n const done = useRef(new Set<string>());\n useEffect(() => {\n if (!prefetch) return;\n for (const item of items) {\n if (item.type !== 'card') continue;\n const card = item.card.card as {\n images?: readonly { url?: string }[];\n image_url?: string;\n };\n const url = allowedImage(card.images?.[0]?.url ?? card.image_url, hosts);\n if (url && !done.current.has(url)) {\n done.current.add(url);\n prefetch(url);\n }\n }\n }, [items, prefetch, hosts]);\n}\n\n/** A finished reply from the agent or the business is read out once, without moving focus. */\nfunction useAnnounceReplies(items: readonly TimelineItem[]): void {\n const seen = useRef<string | undefined>(undefined);\n const { t } = useCopy();\n const { store, handlers } = useChat();\n useEffect(() => {\n const last = items.at(-1);\n if (seen.current === undefined) {\n seen.current = last?.key ?? ''; // what is drawn on opening is not read out\n return;\n }\n if (last?.type !== 'message' || last.role === 'person') return;\n if (last.state !== 'sent' || last.key === seen.current) return;\n seen.current = last.key;\n const author =\n last.role === 'staff'\n ? t('staffLabel', {\n by: store.getSnapshot().takeover?.by || t('staffFallbackRole'),\n })\n : (store.getSnapshot().agent.name ?? t('agentFallbackName'));\n (handlers.current?.announce ?? announce)(`${author}: ${last.text}`);\n }, [items, t, store, handlers]);\n}\n","// What the connection means for the person, in words, with the one action that helps: continue here, or try again;\n// on \"couldn't connect\", also the tenant's way out (`Failure.tsx`), or the tenant's own part in its place.\n// \"Connecting…\" waits 600 ms, so a quick connection never flashes a banner.\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport { motion } from '@vinaverse/tokens';\nimport { memo, type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { Text, View } from 'react-native';\nimport { useChat } from '../context.js';\nimport { useTheme } from '../theme.js';\nimport { Button } from './Button.js';\nimport { FailureActionButton, FailureSlot } from './Failure.js';\nimport type { FailureState } from './types.js';\n\n/** How long \"Connecting…\" waits, shared with the Angular kit (`motion.bannerDelay`). */\nexport const CONNECTING_DELAY = motion.bannerDelay;\n\nexport const StatusBanner = /* @__PURE__ */ memo(function StatusBanner() {\n const { store, slots } = useChat();\n const { t } = useCopy();\n const banner = useConversationSelector(store, (v) => v.banner);\n const status = useConversationSelector(store, (v) => v.status);\n const conversationId = useConversationSelector(\n store,\n (v) => v.conversationId,\n );\n const unavailable = useMemo<FailureState>(\n () => ({\n kind: 'unavailable',\n reason: status,\n retry: () => store.start(),\n conversationId,\n }),\n [store, status, conversationId],\n );\n const [late, setLate] = useState(false);\n useEffect(() => {\n setLate(false);\n if (banner !== 'connecting') return;\n const timer = setTimeout(() => setLate(true), CONNECTING_DELAY);\n return () => clearTimeout(timer);\n }, [banner]);\n if (banner === null || (banner === 'connecting' && !late)) return null;\n if (banner === 'unavailable')\n return (\n <FailureSlot\n slot={slots.Unavailable}\n state={unavailable}\n Default={DefaultUnavailable}\n />\n );\n const text = {\n connecting: t('bannerConnecting'),\n reconnecting: t('bannerReconnecting'),\n offline: t('bannerOffline'),\n continued_elsewhere: t('bannerContinuedElsewhere'),\n }[banner];\n const action =\n banner === 'continued_elsewhere' ? (\n <Button\n label={t('continueHere')}\n variant=\"text\"\n onPress={() => void store.continueHere()}\n />\n ) : banner === 'offline' ? (\n <Button\n label={t('tryAgain')}\n variant=\"text\"\n onPress={() => store.start()}\n />\n ) : null;\n return <Banner text={text}>{action}</Banner>;\n});\n\n/** The kit's own \"Couldn't connect.\" banner: try again, and the tenant's failure action when there is one. */\nexport function DefaultUnavailable(props: {\n readonly state: FailureState;\n}): ReactNode {\n const { t } = useCopy();\n const { retry } = props.state;\n return (\n <Banner text={t('bannerUnavailable')}>\n {retry ? (\n <Button label={t('tryAgain')} variant=\"text\" onPress={retry} />\n ) : null}\n <FailureActionButton state={props.state} />\n </Banner>\n );\n}\n\nfunction Banner(props: {\n readonly text: string;\n readonly children?: ReactNode;\n}): ReactNode {\n const { colors, space, font } = useTheme();\n return (\n <View\n accessibilityLiveRegion=\"polite\"\n accessibilityRole=\"alert\"\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: space.sm,\n paddingHorizontal: space.lg,\n paddingVertical: space.xs,\n backgroundColor: colors.surface,\n borderBottomWidth: 1,\n borderBottomColor: colors.divider,\n }}\n >\n <Text\n style={{ color: colors.text, fontSize: font.size.sm, flexShrink: 1 }}\n >\n {props.text}\n </Text>\n {props.children}\n </View>\n );\n}\n","// The whole conversation, ready to drop into a screen: header, the AI disclosure, the connection's banner, the\n// messages and cards, the composer. Everything visual is replaceable through `theme`, `copy` and `components`; the\n// disclosure, who-wrote-what and the proposal wiring are the kit's and stay.\nimport type { ConversationStore } from '@vinaverse/client/conversation';\nimport {\n bannedWordsIn,\n type CopyOverrides,\n CopyProvider,\n useCopy,\n} from '@vinaverse/react';\nimport { type ReactNode, useEffect, useMemo, useRef } from 'react';\nimport {\n KeyboardAvoidingView,\n Platform,\n type StyleProp,\n View,\n type ViewStyle,\n} from 'react-native';\nimport {\n ChatContextProvider,\n type ChatHandlers,\n type ChatSlots,\n type ChatWarning,\n type Chip,\n type ImagePolicy,\n useChat,\n} from '../context.js';\nimport { useNativeLifecycle } from '../platform.js';\nimport {\n type ColorSchemeSetting,\n type ThemeOverrides,\n ThemeProvider,\n themeProblems,\n useTheme,\n} from '../theme.js';\nimport { Button } from './Button.js';\nimport { ChatHeader } from './ChatHeader.js';\nimport { Composer } from './Composer.js';\nimport { DisclosureBar } from './DisclosureBar.js';\nimport { MessageList } from './MessageList.js';\nimport { StatusBanner } from './StatusBanner.js';\n\nexport interface VinaverseChatProps extends ChatHandlers {\n /** The conversation (`createConversation`), created where it can outlive the screen. */\n readonly conversation: ConversationStore;\n /** The person's locale: the copy, dates, money and text direction (pass the same one to `getSession`). */\n readonly locale?: string;\n /** For dates and times on cards; default: the device's. */\n readonly timeZone?: string;\n readonly copy?: CopyOverrides;\n readonly theme?: ThemeOverrides;\n readonly colorScheme?: ColorSchemeSetting;\n /** Parts to replace. Keep the object stable (module level, or memoized). */\n readonly components?: ChatSlots;\n /** The agent's picture, until the session carries one. */\n readonly agentAvatar?: string;\n /** Hide the header (a screen that draws its own); the disclosure stays. */\n readonly hideHeader?: boolean;\n /** iOS: the height above the keyboard that is not this view's (a navigation header). */\n readonly keyboardVerticalOffset?: number;\n /**\n * How the composer stays above the keyboard. Default: `padding` on iOS, none on Android (the window resizes). An\n * edge-to-edge Android app whose window does not resize passes `padding`; one that manages the keyboard itself\n * (react-native-keyboard-controller) passes `none`.\n */\n readonly keyboardBehavior?: 'padding' | 'height' | 'position' | 'none';\n readonly style?: StyleProp<ViewStyle>;\n /** Chips for an empty conversation when the session brings no welcome (`Session.welcome` comes first). Keep stable. */\n readonly starters?: readonly Chip[];\n /** Which card photos are drawn, their frame, and what stands in for one that is not. Keep stable. */\n readonly imagePolicy?: ImagePolicy;\n /** One chip above the composer: a question about where the person now is (`AgentChat` offers it when they moved). */\n readonly suggestion?: Chip | null;\n /** The suggestion chip's test id. Default `vinaverse-suggestion`. */\n readonly suggestionTestID?: string;\n /** Drawn under the composer, inside the kit's providers (`AgentChat`'s thumbs and footer). */\n readonly footer?: ReactNode;\n}\n\n/** The providers alone, for a tenant composing its own layout from the exported parts. */\nexport function VinaverseChatProvider(\n props: Omit<\n VinaverseChatProps,\n | 'hideHeader'\n | 'keyboardVerticalOffset'\n | 'keyboardBehavior'\n | 'style'\n | 'suggestion'\n | 'suggestionTestID'\n | 'footer'\n > & {\n readonly children?: ReactNode;\n },\n): ReactNode {\n const {\n conversation,\n components,\n agentAvatar,\n timeZone,\n starters,\n imagePolicy,\n } = props;\n const handlers = useRef<ChatHandlers>(props);\n handlers.current = props;\n const slots = useStableSlots(components);\n const hasAction = props.failureAction !== undefined;\n const actionLabel = props.failureAction?.label;\n const failureAction = useMemo(\n () => (hasAction ? { label: actionLabel } : null),\n [hasAction, actionLabel],\n );\n const value = useMemo(\n () => ({\n store: conversation,\n handlers,\n slots,\n agentAvatar,\n timeZone,\n failureAction,\n starters,\n imagePolicy,\n }),\n [\n conversation,\n slots,\n agentAvatar,\n timeZone,\n failureAction,\n starters,\n imagePolicy,\n ],\n );\n useNativeLifecycle(conversation);\n useEffect(() => {\n conversation.start(); // early: a client secret opens its first connection within two minutes\n }, [conversation]);\n const { onWarning, theme, copy } = props;\n useEffect(() => {\n if (!onWarning) return;\n for (const problem of themeProblems(theme))\n onWarning(`Vinaverse theme: ${problem}`, { code: 'theme' });\n for (const key of bannedWordsIn(copy ?? {}))\n onWarning(\n `Vinaverse copy: \"${key}\" says assistant, bot or crew; the copy says agent.`,\n { code: 'copy' },\n );\n }, [onWarning, theme, copy]);\n return (\n <CopyProvider locale={props.locale} copy={props.copy}>\n <ThemeProvider theme={props.theme} colorScheme={props.colorScheme}>\n <ChatContextProvider value={value}>\n {props.children}\n </ChatContextProvider>\n </ThemeProvider>\n </CopyProvider>\n );\n}\n\nexport function VinaverseChat(props: VinaverseChatProps): ReactNode {\n return (\n <VinaverseChatProvider {...props}>\n <Layout\n hideHeader={props.hideHeader === true}\n keyboardVerticalOffset={props.keyboardVerticalOffset ?? 0}\n keyboardBehavior={\n props.keyboardBehavior ?? (Platform.OS === 'ios' ? 'padding' : 'none')\n }\n style={props.style}\n onError={props.onWarning}\n suggestion={props.suggestion ?? null}\n suggestionTestID={props.suggestionTestID ?? 'vinaverse-suggestion'}\n footer={props.footer}\n />\n </VinaverseChatProvider>\n );\n}\n\nfunction Layout(props: {\n readonly hideHeader: boolean;\n readonly keyboardVerticalOffset: number;\n readonly keyboardBehavior: 'padding' | 'height' | 'position' | 'none';\n readonly style: StyleProp<ViewStyle> | undefined;\n readonly onError:\n | ((message: string, warning: ChatWarning) => void)\n | undefined;\n readonly suggestion: Chip | null;\n readonly suggestionTestID: string;\n readonly footer: ReactNode;\n}) {\n const { colors } = useTheme();\n const { direction } = useCopy();\n const { onError } = props;\n const reportError = useMemo(\n () =>\n onError\n ? (e: unknown) => onError(String(e), { code: 'send_failed' })\n : undefined,\n [onError],\n );\n return (\n <KeyboardAvoidingView\n {...(props.keyboardBehavior === 'none'\n ? { enabled: false }\n : { behavior: props.keyboardBehavior })}\n keyboardVerticalOffset={props.keyboardVerticalOffset}\n style={[\n { flex: 1, backgroundColor: colors.background, direction },\n props.style,\n ]}\n >\n {props.hideHeader ? null : <ChatHeader />}\n <DisclosureBar />\n <StatusBanner />\n <View style={{ flex: 1 }}>\n <MessageList />\n </View>\n {props.suggestion ? (\n <Suggestion chip={props.suggestion} testID={props.suggestionTestID} />\n ) : null}\n <Composer {...(reportError ? { onError: reportError } : {})} />\n {props.footer}\n </KeyboardAvoidingView>\n );\n}\n\n/** One chip above the composer; a tap sends its message as the person's own text. */\nfunction Suggestion(props: { readonly chip: Chip; readonly testID: string }) {\n const { store, handlers } = useChat();\n const { space } = useTheme();\n return (\n <View style={{ paddingHorizontal: space.lg, alignItems: 'flex-start' }}>\n <Button\n label={props.chip.label}\n testID={props.testID}\n onPress={() => {\n store.send(props.chip.message);\n handlers.current?.onChip?.(props.chip);\n }}\n />\n </View>\n );\n}\n\n/** The slots object, kept the same while its parts are the same, so an inline `components={{…}}` re-renders nothing. */\nfunction useStableSlots(slots: ChatSlots | undefined): ChatSlots {\n const held = useRef<ChatSlots>({});\n const next = slots ?? {};\n if (!sameSlots(held.current, next)) held.current = next;\n return held.current;\n}\n\nfunction sameSlots(a: ChatSlots, b: ChatSlots): boolean {\n const keys = new Set([...Object.keys(a), ...Object.keys(b)]) as Set<\n keyof ChatSlots\n >;\n for (const key of keys) {\n if (key === 'cards') {\n const ca = a.cards ?? {};\n const cb = b.cards ?? {};\n const kinds = new Set([...Object.keys(ca), ...Object.keys(cb)]);\n for (const kind of kinds) if (ca[kind] !== cb[kind]) return false;\n } else if (a[key] !== b[key]) return false;\n }\n return true;\n}\n","// The agent's conversation for a key, on the runtime: the chat itself (`VinaverseChat`), and around it what an app used\n// to build by hand: a conversation that ended (start a new one), the backend out of reach (try again), a person when\n// there is no agent, the session's welcome or the app's starters, a question about where the person now is, thumbs on\n// the newest whole reply, and a footer. Built only on the public hooks; every part is a slot.\nimport type {\n AgentEntryPoint,\n AgentFailureReason,\n AgentKey,\n AgentPlace,\n AgentRating,\n} from '@vinaverse/client/agent';\nimport { useConversationSelector, useCopy } from '@vinaverse/react';\nimport {\n useAgentConversation,\n useAgentName,\n useAgentRuntime,\n} from '@vinaverse/react/agent';\nimport { type ComponentType, type ReactNode, useMemo } from 'react';\nimport { Text, View } from 'react-native';\nimport type { ChatSlots, Chip } from '../context.js';\nimport { useAgentSweep } from '../platform.js';\nimport { useTheme } from '../theme.js';\nimport { Button } from './Button.js';\nimport {\n VinaverseChat,\n type VinaverseChatProps,\n VinaverseChatProvider,\n} from './VinaverseChat.js';\n\n/**\n * The full-screen states (`Ended`, `Unreachable`, `UnavailableScreen`) are slots: each gets everything its screen\n * needs (why, the actions, a person to contact) and the kit's own part as `Default`, so an app replaces the layout and\n * the words entirely, or only the words through `copy`.\n */\nexport interface AgentEndedProps {\n readonly onStartNew: () => void;\n /** Why: `ended`, `not_found`, `expired`, `mismatch`, `completed`. */\n readonly reason: AgentFailureReason | null;\n /** The API's code (`conversation_not_found`, `conversation_expired`), when it gave one. */\n readonly code: string | null;\n /** A person instead (the chat's `onContact`); absent when the app gave none. */\n readonly onContact: (() => void) | undefined;\n}\n/** No agent here: switched off for this tenant, mode or person, or the backend refused the session. */\nexport interface AgentUnavailableScreenProps {\n /** Why: `off`, `auth`, `invalid_session`, … */\n readonly reason: AgentFailureReason | null;\n readonly code: string | null;\n /** A person instead (the chat's `onContact`); absent when the app gave none. */\n readonly onContact: (() => void) | undefined;\n /** Ask again (after a sign-in, or the agent switched back on). */\n readonly onRetry: () => void;\n}\nexport interface AgentUnreachableProps {\n readonly onRetry: () => void;\n /** Why: `network`, `server`, `rate_limited`, … */\n readonly reason: AgentFailureReason | null;\n /** A person instead (the chat's `onContact`); absent when the app gave none. */\n readonly onContact: (() => void) | undefined;\n}\n\n/** A slot gets the kit's own part as `Default`, to wrap rather than rewrite. */\ntype Slot<P> = ComponentType<P & { readonly Default: ComponentType<P> }>;\nexport interface AgentFooterProps {\n /** The newest whole reply's turn, to rate; null when there is none or it was restored from before. */\n readonly turnId: string | null;\n readonly rating: AgentRating | undefined;\n readonly onRate: (rating: AgentRating) => void;\n readonly onOpenPrivacy: (() => void) | undefined;\n}\n\nexport interface AgentChatSlots extends ChatSlots {\n readonly Ended?: Slot<AgentEndedProps>;\n readonly Unreachable?: Slot<AgentUnreachableProps>;\n /**\n * The whole screen when there is no agent (off, or the session refused). Not `Unavailable`: that is the chat's own\n * \"couldn't connect\" banner, still drawn for a session that drops.\n */\n readonly UnavailableScreen?: Slot<AgentUnavailableScreenProps>;\n /** Under the composer; null hides it. Default: thumbs on the newest whole reply, and the privacy link. */\n readonly Footer?: Slot<AgentFooterProps> | null;\n}\n\nexport interface AgentChatProps\n extends Omit<\n VinaverseChatProps,\n 'conversation' | 'components' | 'suggestion' | 'suggestionTestID' | 'footer'\n > {\n /** Whose conversation: one per person, mode, business and thread. */\n readonly agentKey: AgentKey;\n /** Where the person asks from, told to the agent as a session opens. */\n readonly place?: AgentPlace | null;\n /** How the person came in: `launcher` and `ask` from the kit's parts, `deep_link`, or the app's own words. */\n readonly entryPoint?: AgentEntryPoint | null;\n /** The question about this place, offered when the session was told another one (`moved`). */\n readonly askAbout?: string | null;\n /** A person: offered on a failed turn, \"couldn't connect\" and no agent. */\n readonly onContact?: () => void;\n readonly onOpenPrivacy?: () => void;\n /** The agent's name until the session or the status gives one. */\n readonly agentName?: string;\n /**\n * A first question for a flow that asks for itself (setting a business up): a chip the person taps, offered until they\n * say anything. Never sent in their name: what the transcript shows as theirs, they typed or tapped.\n */\n readonly opener?: Chip | null;\n /** The opener chip's test id. Default `vinaverse-opener`. */\n readonly openerTestID?: string;\n readonly components?: AgentChatSlots;\n}\n\nexport function AgentChat(props: AgentChatProps): ReactNode {\n const {\n agentKey,\n place,\n entryPoint,\n askAbout,\n onContact,\n onOpenPrivacy,\n components,\n agentName,\n opener,\n openerTestID,\n ...chat\n } = props;\n const runtime = useAgentRuntime();\n useAgentSweep(runtime);\n const { conversation, state, startNew } = useAgentConversation(agentKey, {\n place: place ?? null,\n entryPoint: entryPoint ?? null,\n });\n const store = conversation.store;\n const spoke = useConversationSelector(store, (v) =>\n v.items.some((i) => i.type === 'message' && i.role === 'person'),\n );\n const { Ended, Unreachable, UnavailableScreen, Footer, ...slots } =\n components ?? {};\n const copy = useMemo(\n () =>\n agentName ? { ...props.copy, agentFallbackName: agentName } : props.copy,\n [agentName, props.copy],\n );\n const events = {\n onOpenTarget: chat.onOpenTarget\n ? (\n target: Parameters<NonNullable<typeof chat.onOpenTarget>>[0],\n card: Parameters<NonNullable<typeof chat.onOpenTarget>>[1],\n ) => {\n runtime.emit({\n type: 'target_opened',\n key: conversation.key,\n cardId: card.id,\n kind: target.type,\n });\n chat.onOpenTarget?.(target, card);\n }\n : undefined,\n onOpenLink: chat.onOpenLink\n ? (\n link: string,\n card: Parameters<NonNullable<typeof chat.onOpenLink>>[1],\n ) => {\n runtime.emit({\n type: 'link_opened',\n key: conversation.key,\n cardId: card.id,\n kind: card.kind,\n });\n chat.onOpenLink?.(link, card);\n }\n : undefined,\n onChip: (chip: Parameters<NonNullable<typeof chat.onChip>>[0]) => {\n runtime.emit({ type: 'chip_tapped', key: conversation.key });\n chat.onChip?.(chip);\n },\n };\n const shared = {\n ...chat,\n ...(events.onOpenTarget ? { onOpenTarget: events.onOpenTarget } : {}),\n ...(events.onOpenLink ? { onOpenLink: events.onOpenLink } : {}),\n onChip: events.onChip,\n ...(copy ? { copy } : {}),\n ...(onContact && !chat.failureAction\n ? { failureAction: { onPress: () => onContact() } }\n : {}),\n conversation: store,\n components: slots,\n };\n if (state.failure === 'ended') {\n const own: AgentEndedProps = {\n onStartNew: startNew,\n reason: state.reason,\n code: state.code,\n onContact,\n };\n return (\n <VinaverseChatProvider {...shared}>\n <Centered>\n {Ended ? (\n <Ended {...own} Default={DefaultEnded} />\n ) : (\n <DefaultEnded {...own} />\n )}\n </Centered>\n </VinaverseChatProvider>\n );\n }\n if (state.failure === 'unreachable') {\n const own: AgentUnreachableProps = {\n onRetry: conversation.retry,\n reason: state.reason,\n onContact,\n };\n return (\n <VinaverseChatProvider {...shared}>\n <Centered>\n {Unreachable ? (\n <Unreachable {...own} Default={DefaultUnreachable} />\n ) : (\n <DefaultUnreachable {...own} />\n )}\n </Centered>\n </VinaverseChatProvider>\n );\n }\n if (state.failure === 'unavailable') {\n const own: AgentUnavailableScreenProps = {\n reason: state.reason,\n code: state.code,\n onContact,\n onRetry: conversation.retry,\n };\n return (\n <VinaverseChatProvider {...shared}>\n <Centered>\n {UnavailableScreen ? (\n <UnavailableScreen {...own} Default={DefaultUnavailableScreen} />\n ) : (\n <DefaultUnavailableScreen {...own} />\n )}\n </Centered>\n </VinaverseChatProvider>\n );\n }\n const offered = opener && !spoke ? opener : null;\n return (\n <VinaverseChat\n {...shared}\n suggestion={\n offered ??\n (state.moved && askAbout\n ? { label: askAbout, message: askAbout }\n : null)\n }\n {...(offered\n ? { suggestionTestID: openerTestID ?? 'vinaverse-opener' }\n : {})}\n footer={\n Footer === null ? null : (\n <FooterFor\n store={store}\n state={state}\n rate={conversation.rate}\n canRate={conversation.canRate}\n Footer={Footer}\n onOpenPrivacy={onOpenPrivacy}\n />\n )\n }\n />\n );\n}\n\nfunction FooterFor(props: {\n readonly store: Parameters<typeof useConversationSelector>[0];\n readonly state: { readonly ratings: ReadonlyMap<string, AgentRating> };\n readonly rate: (turnId: string, rating: AgentRating) => void;\n readonly canRate: (turnId: string) => boolean;\n readonly Footer: Slot<AgentFooterProps> | undefined;\n readonly onOpenPrivacy: (() => void) | undefined;\n}) {\n const newest = useConversationSelector(props.store, newestWholeReply);\n // A reply restored from before has no thumbs: it cannot be rated against the session it was given in.\n const turnId = newest && props.canRate(newest) ? newest : null;\n const own: AgentFooterProps = {\n turnId,\n rating: turnId ? props.state.ratings.get(turnId) : undefined,\n onRate: (rating) => {\n if (turnId) props.rate(turnId, rating);\n },\n onOpenPrivacy: props.onOpenPrivacy,\n };\n const { Footer } = props;\n return Footer ? (\n <Footer {...own} Default={AgentFooter} />\n ) : (\n <AgentFooter {...own} />\n );\n}\n\n/** The newest reply when it came whole (not cut off, not a refusal): the one to rate. */\nexport function newestWholeReply(view: {\n readonly items: readonly import('@vinaverse/client/conversation').TimelineItem[];\n}): string | null {\n for (let i = view.items.length - 1; i >= 0; i--) {\n const item = view.items[i];\n if (item?.type !== 'message' || item.role !== 'agent') continue;\n const whole =\n item.state === 'sent' &&\n !item.partial &&\n !item.refusal &&\n item.key.startsWith('a:');\n return whole ? item.key.slice(2) : null;\n }\n return null;\n}\n\nfunction Centered(props: { readonly children: ReactNode }) {\n const { colors, space } = useTheme();\n return (\n <View\n style={{\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n padding: space.xl,\n backgroundColor: colors.background,\n }}\n >\n {props.children}\n </View>\n );\n}\n\nfunction Notice(props: {\n readonly title: string;\n readonly body: string;\n readonly action?: string;\n readonly onPress?: () => void;\n}) {\n const { colors, space, font } = useTheme();\n return (\n <View\n accessibilityRole=\"alert\"\n style={{ alignItems: 'center', gap: space.md }}\n >\n <Text\n style={{\n color: colors.text,\n fontSize: font.size.lg,\n fontWeight: '600',\n textAlign: 'center',\n }}\n >\n {props.title}\n </Text>\n <Text\n style={{\n color: colors.textMuted,\n fontSize: font.size.md,\n textAlign: 'center',\n }}\n >\n {props.body}\n </Text>\n {props.action && props.onPress ? (\n <Button\n label={props.action}\n variant=\"primary\"\n onPress={props.onPress}\n />\n ) : null}\n </View>\n );\n}\n\n/** The conversation is over: a new one starts only when the person asks. */\nexport function DefaultEnded(props: AgentEndedProps): ReactNode {\n const { t } = useCopy();\n return (\n <Notice\n title={t('agentEnded')}\n body={t('agentEndedBody')}\n action={t('agentStartOver')}\n onPress={props.onStartNew}\n />\n );\n}\n\n/** No agent here: says so, and offers a person when the app has one. */\nexport function DefaultUnavailableScreen(\n props: AgentUnavailableScreenProps,\n): ReactNode {\n const { t } = useCopy();\n const name = useAgentName(t('agentFallbackName'));\n const title = t('agentOff', { agent: name });\n return (\n <Notice\n title={title.charAt(0).toUpperCase() + title.slice(1)}\n body={t('agentOffBody')}\n {...(props.onContact\n ? { action: t('talkToPerson'), onPress: props.onContact }\n : {})}\n />\n );\n}\n\n/** The app's backend could not be reached, after its tries: try again. */\nexport function DefaultUnreachable(props: AgentUnreachableProps): ReactNode {\n const { t } = useCopy();\n const name = useAgentName(t('agentFallbackName'));\n return (\n <Notice\n title={t('agentUnreachable', { agent: name })}\n body={t('agentUnreachableBody')}\n action={t('tryAgain')}\n onPress={props.onRetry}\n />\n );\n}\n\n/** Thumbs on the newest whole reply (thanks once given), and the privacy link. */\nexport function AgentFooter(props: AgentFooterProps): ReactNode {\n const { t } = useCopy();\n const { colors, space, font } = useTheme();\n const muted = { color: colors.textMuted, fontSize: font.size.sm };\n return (\n <View\n style={{\n flexDirection: 'row',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: space.xs,\n paddingHorizontal: space.lg,\n }}\n >\n {props.turnId === null ? null : props.rating ? (\n <Text style={muted}>{t('helpfulThanks')}</Text>\n ) : (\n <>\n <Text style={muted}>{t('helpful')}</Text>\n <Button\n label={t('helpfulYes')}\n variant=\"text\"\n onPress={() => props.onRate('up')}\n />\n <Button\n label={t('helpfulNo')}\n variant=\"text\"\n onPress={() => props.onRate('down')}\n />\n </>\n )}\n {props.onOpenPrivacy ? (\n <Button\n label={t('privacy')}\n variant=\"text\"\n role=\"link\"\n onPress={props.onOpenPrivacy}\n />\n ) : null}\n </View>\n );\n}\n"]}
|