@xopcai/xopc 0.0.66 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js → agents-CmhOU0fB.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js.map → agents-CmhOU0fB.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js → apps-page-CzS9A_6L.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js.map → apps-page-CzS9A_6L.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js → channels-settings-Bn0YSztA.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js.map → channels-settings-Bn0YSztA.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js → cron-dreaming-jobs-bAYsiHdF.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js.map → cron-dreaming-jobs-bAYsiHdF.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js → cron-page-CKqDtScu.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js.map → cron-page-CKqDtScu.js.map} +1 -1
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js → dist-CUMhnSuX.js} +2 -2
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js.map → dist-CUMhnSuX.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js → extension-debug-page-BDls5xp3.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js.map → extension-debug-page-BDls5xp3.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js → extension-page-BSfv53OO.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js.map → extension-page-BSfv53OO.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js → extension-settings-page-B0nkVsLi.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js.map → extension-settings-page-B0nkVsLi.js.map} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js → heartbeat-config-api-P5zdbIBw.js} +2 -2
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js.map → heartbeat-config-api-P5zdbIBw.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js → index-DAglRwh4.js} +5 -5
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js.map → index-DAglRwh4.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-DHj3Cf9B.css +1 -0
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js → logs-page-CfGDv4k7.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js.map → logs-page-CfGDv4k7.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js → sessions-page-DoGE8N-O.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js.map → sessions-page-DoGE8N-O.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js +3 -0
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js.map +1 -0
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js → skills-page-ADUi69Fa.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js.map → skills-page-ADUi69Fa.js.map} +1 -1
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js → use-image-provider-credentials-C4x4dNv2.js} +2 -2
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js.map → use-image-provider-credentials-C4x4dNv2.js.map} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/cli/commands/tunnel.js +69 -8
- package/dist/src/cli/commands/tunnel.js.map +1 -1
- package/dist/src/config/schema.d.ts +2 -0
- package/dist/src/config/schema.js +2 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +2 -5
- package/dist/src/gateway/hono/lib/config-payload.js +3 -5
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/tunnel.js +12 -10
- package/dist/src/gateway/hono/routes/tunnel.js.map +1 -1
- package/dist/src/tunnel/acme-client.d.ts +11 -0
- package/dist/src/tunnel/acme-client.js +54 -10
- package/dist/src/tunnel/acme-client.js.map +1 -1
- package/dist/src/tunnel/env.d.ts +14 -3
- package/dist/src/tunnel/env.js +34 -5
- package/dist/src/tunnel/env.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.d.ts +6 -1
- package/dist/src/tunnel/frpc-binary.js +66 -40
- package/dist/src/tunnel/frpc-binary.js.map +1 -1
- package/dist/src/tunnel/frpc-extract.d.ts +10 -0
- package/dist/src/tunnel/frpc-extract.js +129 -0
- package/dist/src/tunnel/frpc-extract.js.map +1 -0
- package/dist/src/tunnel/gateway-lifecycle.d.ts +3 -1
- package/dist/src/tunnel/gateway-lifecycle.js +6 -4
- package/dist/src/tunnel/gateway-lifecycle.js.map +1 -1
- package/dist/src/tunnel/index.d.ts +3 -1
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/tunnel/tls-server.js +5 -0
- package/dist/src/tunnel/tls-server.js.map +1 -1
- package/dist/src/tunnel/tunnel-config.js +11 -1
- package/dist/src/tunnel/tunnel-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-e2e-config.d.ts +4 -1
- package/dist/src/tunnel/tunnel-e2e-config.js +10 -3
- package/dist/src/tunnel/tunnel-e2e-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-service.d.ts +4 -0
- package/dist/src/tunnel/tunnel-service.js +66 -5
- package/dist/src/tunnel/tunnel-service.js.map +1 -1
- package/dist/src/tunnel/tunnel-types.d.ts +16 -0
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/index-B5gp15_q.css +0 -1
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js +0 -3
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels-settings-DXxfgG4N.js","names":["DropdownMenu","MoreHorizontal","Pencil","Trash2","ReactNode","Button","ChannelsSettingsMessages","cn","SETTINGS_SHELL_POPOVER_Z","ChannelImHubCardProps","icon","title","subtitle","configured","enabled","onToggle","next","Promise","toggleDisabled","onConfigure","onEdit","onRemove","ch","ChannelImHubCard","t0","$","_c","t1","t2","t3","hubConnectedBadge","t4","t5","t6","t7","t8","enableChannelAria","hubConfigureButton","menuEditConfig","menuMoreAria","menuRemoveConfig","t9","Dialog","Button","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","ChannelsRemoveChannelDialog","t0","$","_c","open","onOpenChange","ch","removeTarget","onCancel","saving","onConfirmRemove","t1","Symbol","for","t2","t3","removeChannelTitle","t4","feishuTitle","removeChannelConfirm","telegramTitle","weixinTitle","replace","t5","t6","modalCancel","t7","removeChannelAction","t8","t9","t10","_temp","t11","e","preventDefault","BindingRuleWire","ChannelAgentRoutesState","normAcc","s","trim","toLowerCase","isSimpleAccountOnlyRule","r","m","match","channel","accountId","peerId","peerKind","guildId","teamId","memberRoleIds","length","telegramRoutingAccountIds","tg","accounts","Record","Object","keys","sort","weixinRoutingAccountIds","wx","feishuRoutingAccountIds","fs","appId","appSecret","extractChannelAgentRoutes","bindings","telegramAccountIds","weixinAccountIds","feishuAccountIds","defaultAgentId","telegram","weixin","feishu","id","rule","find","agentId","mergeChannelAgentBindings","previous","routes","tgAcc","Set","map","wxAcc","fsAcc","filtered","filter","startsWith","ch","acc","has","added","push","priority","enabled","ChannelsSettingsState","cn","nativeSelectMaxWidthClass","selectControlBaseClass","settingsInputFocusClass","channelsInputClassName","channelsSelectClassName","parseIdList","raw","split","map","s","trim","filter","Boolean","test","Number","joinAllowFrom","ids","String","join","telegramDefaultBotToken","tg","t","accounts","default","botToken","isTelegramConfigured","Object","values","some","a","length","isWeixinConfigured","wx","keys","allowFrom","isFeishuConfigured","fs","appId","appSecret","ReactNode","channelsSelectClassName","FieldLabel","t0","$","_c","children","t1","FieldHint","SelectFieldProps","label","value","T","onChange","v","options","SelectField","t2","Symbol","for","t3","e","target","t4","map","_temp","t5","t6","o","agentListDisplayName","nativeSelectMaxWidthClass","cn","messages","ChannelsSettingsMessages","useLocaleStore","FieldHint","FieldLabel","channelsInputClassName","ChannelAgentRoutingBlock","t0","$","_c","accountIds","routes","defaultAgentId","agentItems","disabled","onChange","ch","language","_temp","t1","t2","t3","t4","t5","Symbol","for","bb0","agentsMessages","agentsSettings","length","opts","id","t6","agentRoutingTitle","t7","agentRoutingHint","map","acc","agentRoutingAccountLabel","agentRoutingAgentLabel","toLowerCase","e","target","value","ag","s","Check","ChevronDown","Copy","Eye","EyeOff","Button","ChatAgentsPayload","feishuRoutingAccountIds","ChannelsSettingsState","DmPolicy","GroupPolicy","ChannelsSettingsMessages","cn","ChannelAgentRoutingBlock","FieldHint","FieldLabel","channelsInputClassName","joinAllowFrom","parseIdList","FeishuMoreSettingsSection","t0","$","_c","ch","form","baseline","showFeishuSecret","setShowFeishuSecret","showFeishuWebhookSecrets","setShowFeishuWebhookSecrets","feishuCopied","feishuWebhookCopied","copyFeishuSecret","copyFeishuWebhookConfig","updateFeishu","updateChannelAgentRoute","feishuAccountsDraft","setFeishuAccountsDraft","feishuAccountsError","onFeishuAccountsBlur","dmOpts","groupOpts","chatAgents","saving","dirty","save","discard","fs","feishu","feishuBaselineSecret","appSecret","t1","Boolean","String","trim","feishuSecretDisplayLocked","t2","Symbol","for","t3","advancedShow","t4","feishuAdvancedHint","t5","e","enabled","target","checked","t6","t7","enableFeishuAria","t8","t9","t10","feishuAppId","t11","t12","e_0","appId","value","t13","t14","feishuAppIdDesc","t15","t16","t17","feishuAppSecret","t18","t19","t20","repeat","Math","max","length","t21","e_1","t22","t23","copied","copy","t24","_temp","t25","t26","hide","show","t27","t28","t29","feishuAppSecretDesc","t30","t31","feishuDomain","t32","t33","domain","t34","e_2","t35","t36","t37","t38","t39","connectionMode","t40","t41","e_3","t42","t43","t44","t45","connectionModeDesc","t46","t47","t48","encryptKey","encryptKeyDesc","verificationToken","verificationTokenDesc","webhookHost","webhookPath","webhookPathDesc","webhookPort","webhookTitle","_temp2","e_4","e_5","e_6","e_7","Number","e_8","t49","renderMode","t50","t51","e_9","t52","t53","t54","t55","t56","t57","reactionNotifications","t58","t59","e_10","t60","t61","t62","t63","t64","t65","t66","e_11","streaming","t67","t68","enableStreaming","t69","dmPolicy","t70","t71","t72","e_12","t73","map","_temp3","t74","t75","t76","groupPolicy","t77","t78","t79","e_13","t80","_temp4","t81","t82","t83","t84","e_14","requireMention","t85","t86","t87","allowFromDm","t88","t89","allowFrom","t90","e_15","t91","t92","allowFromDmDesc","t93","t94","allowFromGroups","t95","t96","groupAllowFrom","t97","e_16","t98","t99","allowFromGroupsDesc","t100","t101","historyLimit","t102","t103","t104","e_17","t105","t106","t107","textChunkLimit","t108","t109","t110","e_18","t111","t112","t113","t114","feishuToolsTitle","t115","feishuToolDoc","t116","feishuToolWiki","t117","feishuToolDrive","t118","feishuToolPerm","t119","feishuToolBitable","t120","feishuToolScopes","t121","t122","const","t123","tools","t124","key","label","e_19","feishuToolsDesc","t125","t126","feishuActionsTitle","t127","actions","reactions","t128","e_20","t129","t130","feishuActionReactions","t131","t132","t133","items","t134","acc","aid","t135","channelAgentRoutes","defaultAgentId","t136","multiAccountJson","t137","t138","e_21","t139","t140","multiAccountJsonDesc","t141","t142","t143","t144","t145","t146","t147","t148","t149","t150","t151","opt_0","opt","s_0","s","revalidateGatewayConfig","fetchJson","apiUrl","extractChannelAgentRoutes","mergeChannelAgentBindings","feishuRoutingAccountIds","telegramRoutingAccountIds","weixinRoutingAccountIds","BindingRuleWire","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","TelegramAccount","WeixinAccount","TelegramConfig","WeixinConfig","emptyTelegramAccount","accountId","name","enabled","botToken","allowFrom","dmPolicy","groupPolicy","replyToMode","apiRoot","proxy","historyLimit","textChunkLimit","streamMode","defaultChannelsState","bindingsFull","channelAgentRoutes","telegram","weixin","feishu","defaultAgentId","debug","groupAllowFrom","accounts","default","routeTag","defaultAccount","appId","appSecret","domain","connectionMode","verificationToken","encryptKey","webhookHost","webhookPort","webhookPath","requireMention","renderMode","streaming","reactionNotifications","tools","doc","wiki","drive","scopes","bitable","perm","actions","reactions","normalizeChannelsFromConfig","config","cfg","channels","undefined","ch","Record","tg","wx","fs","telegramAccounts","Array","isArray","legacyTopToken","trim","defaultTok","weixinAccounts","wxAcc","bindingsRaw","cfgObj","b","bindings","agents","a","defaultId","toLowerCase","base","Boolean","String","tgIds","wxIds","fsIds","map","r","fetchChannelsSettings","Promise","res","ok","payload","c","WeixinGatewayQrLoginStatusPayload","phase","qrcodeUrl","qrStatus","message","fetchWeixinGatewayQrLoginStart","body","account","timeoutMs","sessionKey","method","JSON","stringify","fetchWeixinGatewayQrLoginStatus","status","encodeURIComponent","patchChannelsSettings","state","mergedBindings","weixinRouteTag","raw","test","Number","length","FeishuSetupStatusPayload","openId","fetchFeishuSetupStart","qrUrl","fetchFeishuSetupStatus","Dialog","ExternalLink","X","QRCode","useCallback","useEffect","useState","ReactNode","Button","fetchFeishuSetupStart","fetchFeishuSetupStatus","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","FeishuDomain","FeishuQrSetupDialog","open","onOpenChange","ch","onSetupSuccess","moreSettings","result","appId","domain","openId","busy","setBusy","setDomain","sessionKey","setSessionKey","qrUrl","setQrUrl","error","setError","qrDataUrl","setQrDataUrl","qrGenFailed","setQrGenFailed","startScan","d","e","Error","message","cancelled","intervalId","poll","status","phase","undefined","window","clearInterval","ok","setInterval","toDataURL","width","margin","errorCorrectionLevel","color","dark","light","then","url","catch","showQr","Boolean","showRegionSwitch","qrFrameLoading","preventDefault","feishuQrCloseAria","feishuQrModalTitle","feishuQrModalSubtitle","feishuQrStarting","feishuQrScanHint","feishuQrEncoding","feishuQrImageError","feishuQrOpenLink","feishuRegionSwitchAria","feishuRegionChina","feishuRegionInternational","feishuQrRegenerate","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","cn","ChannelsSettingsMessages","FieldHint","FieldLabel","SelectField","channelsInputClassName","joinAllowFrom","parseIdList","TelegramAdvanced","t0","$","_c","tg","updateTelegram","ch","dmOpts","groupOpts","replyOpts","streamOpts","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","onTgAccountsBlur","t1","apiRoot","t2","Symbol","for","t3","e","target","value","t4","t5","t6","proxy","t7","t8","e_0","t9","t10","t11","v","dmPolicy","t12","t13","v_0","groupPolicy","t14","t15","v_1","replyToMode","t16","t17","v_2","streamMode","t18","t19","allowFromGroups","t20","t21","groupAllowFrom","t22","e_1","t23","t24","t25","historyLimit","t26","t27","e_2","parseInt","t28","t29","t30","textChunkLimit","t31","t32","e_3","t33","t34","t35","t36","e_4","debug","checked","t37","t38","telegramDebug","t39","multiAccountJson","t40","t41","e_5","t42","t43","multiAccountJsonDesc","t44","t45","Dialog","Check","ChevronDown","Copy","Eye","EyeOff","X","Button","ChatAgentsPayload","telegramRoutingAccountIds","emptyTelegramAccount","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","ChannelAgentRoutingBlock","FieldHint","FieldLabel","TelegramAdvanced","channelsInputClassName","joinAllowFrom","parseIdList","telegramDefaultBotToken","TelegramChannelSettingsDialog","t0","$","_c","open","onOpenChange","ch","form","baseline","tgAdvanced","setTgAdvanced","showToken","setShowToken","copied","copyToken","updateTelegram","updateChannelAgentRoute","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","onTgAccountsBlur","dmOpts","groupOpts","replyOpts","streamOpts","chatAgents","saving","dirty","save","discard","tg","telegram","t1","tgBaselineToken","t2","tgToken","t3","Boolean","String","trim","telegramTokenDisplayLocked","t4","Symbol","for","t5","t6","telegramTitle","t7","telegramSubtitle","t8","t9","t10","modalCancel","t11","t12","e_0","enabled","e","target","checked","t13","t14","enableTelegramAria","t15","t16","t17","telegramToken","t18","t19","t20","repeat","Math","max","length","t21","accounts","e_1","prev","default","accountId","botToken","value","t22","t23","copy","t24","_temp2","t25","t26","hide","show","t27","t28","t29","telegramTokenDesc","t30","t31","allowFromDm","t32","t33","allowFrom","t34","e_2","t35","t36","allowFromDmDesc","t37","t38","t39","items","t40","acc","aid","t41","channelAgentRoutes","defaultAgentId","t42","_temp3","t43","t44","t45","t46","advancedHide","advancedShow","t47","t48","t49","t50","t51","t52","t53","t54","t55","ok","t56","t57","t58","t59","_temp","t60","a","s","preventDefault","useCallback","useEffect","useMemo","useState","useSWR","fetchChatAgents","useGatewayConfigSwr","defaultChannelsState","normalizeChannelsFromConfig","patchChannelsSettings","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","messages","useGatewayStore","useLocaleStore","telegramDefaultBotToken","useChannelsSettingsPanel","language","s","m","ch","channelsSettings","token","st","hasToken","Boolean","form","setForm","baseline","setBaseline","saving","setSaving","error","setError","saveOk","setSaveOk","weixinModalOpen","setWeixinModalOpen","telegramModalOpen","setTelegramModalOpen","feishuModalOpen","setFeishuModalOpen","removeTarget","setRemoveTarget","weixinSuccessBanner","setWeixinSuccessBanner","feishuSetupSuccessBanner","setFeishuSetupSuccessBanner","tgAdvanced","setTgAdvanced","showToken","setShowToken","showFeishuSecret","setShowFeishuSecret","showFeishuWebhookSecrets","setShowFeishuWebhookSecrets","copied","setCopied","feishuCopied","setFeishuCopied","feishuWebhookCopied","setFeishuWebhookCopied","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","setTgAccountsError","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","setWxAccountsError","feishuAccountsDraft","setFeishuAccountsDraft","feishuAccountsError","setFeishuAccountsError","data","chatAgents","revalidateOnFocus","cfgData","swrError","isLoading","mutate","parsed","payload","config","undefined","dirty","JSON","stringify","structuredClone","telegram","accounts","weixin","feishu","loading","fetchError","Error","message","String","updateChannelAgentRoute","channel","accountId","agentId","f","k","channelAgentRoutes","trim","toLowerCase","updateTelegram","patch","Partial","updateWeixin","updateFeishu","save","Promise","next","baselineClone","window","setTimeout","e","saveError","discard","b","toggleChannelEnabled","which","enabled","prev","synced","removeChannel","defaults","copyToken","t","navigator","clipboard","writeText","catch","handleFeishuQrSetupSuccess","result","appId","domain","openId","feishuQrSetupSuccess","copyFeishuSecret","appSecret","copyFeishuWebhookConfig","fs","connectionMode","verificationToken","encryptKey","webhookHost","webhookPort","webhookPath","onTgAccountsBlur","raw","parsedJson","parse","Array","isArray","jsonObjectAccounts","err","jsonInvalid","onWxAccountsBlur","onFeishuAccountsBlur","dmOpts","map","value","label","policy","dm","groupOpts","group","replyOpts","reply","streamOpts","stream","Dialog","ExternalLink","X","QRCode","useCallback","useEffect","useState","ReactNode","Button","fetchWeixinGatewayQrLoginStart","fetchWeixinGatewayQrLoginStatus","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","WeixinQrLoginDialog","open","onOpenChange","ch","onLoginSuccess","moreSettings","Promise","busy","setBusy","sessionKey","setSessionKey","qrcodeUrl","setQrcodeUrl","error","setError","hint","setHint","qrDataUrl","setQrDataUrl","qrGenFailed","setQrGenFailed","start","r","e","Error","message","cancelled","intervalId","poll","st","phase","qrStatus","weixinQrLoginScanned","undefined","window","clearInterval","ok","setInterval","weixinQrLoginSuccess","toDataURL","width","margin","errorCorrectionLevel","color","dark","light","then","url","catch","showQr","Boolean","qrFrameLoading","preventDefault","weixinQrModalCloseAria","weixinQrModalTitle","weixinQrModalSubtitle","weixinQrLoginBusy","weixinQrEncoding","weixinQrImageError","weixinQrOpenLink","weixinQrRegenerate","ChannelsSettingsState","DmPolicy","StreamMode","weixinRoutingAccountIds","cn","ChannelsSettingsMessages","ChannelAgentRoutingBlock","FieldHint","FieldLabel","SelectField","channelsInputClassName","WeixinAdvanced","t0","$","_c","wx","updateWeixin","ch","dmOpts","streamOpts","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","onWxAccountsBlur","channelAgentRoutesWx","defaultAgentId","agentItems","onAgentRouteChange","routingDisabled","t1","weixinAllowFrom","t2","Symbol","for","t3","allowFrom","join","t4","e","target","value","split","map","_temp","filter","Boolean","t5","t6","weixinAllowFromDesc","t7","t8","v","dmPolicy","t9","t10","v_0","streamMode","t11","t12","historyLimit","t13","t14","e_0","parseInt","t15","t16","t17","textChunkLimit","t18","t19","e_1","t20","t21","t22","t23","weixinRouteTag","t24","t25","e_2","routeTag","t26","routeTagPlaceholder","t27","weixinRouteTagDesc","t28","t29","e_3","debug","checked","t30","t31","weixinDebug","t32","weixinDebugDesc","t33","weixinAccountsJson","t34","t35","e_4","t36","t37","weixinAccountsJsonDesc","t38","t39","t40","t41","s","trim","ChevronDown","Button","ChatAgentsPayload","ChannelsSettingsState","DmPolicy","StreamMode","ChannelsSettingsMessages","WeixinAdvanced","WeixinMoreSettingsSection","t0","$","_c","ch","wx","updateWeixin","dmOpts","streamOpts","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","onWxAccountsBlur","form","chatAgents","onAgentRouteChange","saving","dirty","save","discard","t1","Symbol","for","t2","advancedShow","t3","weixinAdvancedHint","t4","e","enabled","target","checked","t5","t6","enableWeixinAria","t7","t8","items","t9","channelAgentRoutes","weixin","defaultAgentId","t10","t11","t12","t13","t14","t15","t16","t17","t18","ExternalLink","MessageSquare","Send","Button","docsGuidePageUrl","ChannelImHubCard","ChannelsRemoveChannelDialog","FeishuMoreSettingsSection","FeishuQrSetupDialog","TelegramChannelSettingsDialog","useChannelsSettingsPanel","WeixinQrLoginDialog","WeixinMoreSettingsSection","isFeishuConfigured","isTelegramConfigured","isWeixinConfigured","ChannelsSettingsPanel","$","_c","ctx","language","m","ch","hasToken","loading","fetchError","mutate","form","baseline","dirty","saving","error","saveOk","weixinModalOpen","setWeixinModalOpen","telegramModalOpen","setTelegramModalOpen","feishuModalOpen","setFeishuModalOpen","removeTarget","setRemoveTarget","weixinSuccessBanner","setWeixinSuccessBanner","feishuSetupSuccessBanner","tgAdvanced","setTgAdvanced","showToken","setShowToken","showFeishuSecret","setShowFeishuSecret","showFeishuWebhookSecrets","setShowFeishuWebhookSecrets","copied","feishuCopied","feishuWebhookCopied","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","feishuAccountsDraft","setFeishuAccountsDraft","feishuAccountsError","chatAgents","updateChannelAgentRoute","updateTelegram","updateWeixin","updateFeishu","save","discard","toggleChannelEnabled","removeChannel","copyToken","handleFeishuQrSetupSuccess","copyFeishuSecret","copyFeishuWebhookConfig","onTgAccountsBlur","onWxAccountsBlur","onFeishuAccountsBlur","dmOpts","groupOpts","replyOpts","streamOpts","t0","settingsSections","channels","t1","needToken","t2","Symbol","for","loadError","t3","retry","t4","wx","weixin","tg","telegram","fs","feishu","weixinConfigured","telegramConfigured","feishuConfigured","feishuMoreSettings","acc","aid","t5","weixinMoreSettings","t6","t7","subtitle","t8","t9","t10","docsLink","t11","t12","unsavedHint","t13","saved","t14","t15","t16","t17","t18","next","t19","t20","t21","t22","enabled","weixinTitle","weixinSubtitle","t23","t24","next_0","t25","t26","t27","t28","telegramTitle","telegramSubtitle","t29","t30","next_1","t31","t32","t33","t34","feishuTitle","feishuSubtitle","t35","t36","weixinQrLoginSuccess","window","setTimeout","t37","t38","t39","t40","t41","o","t42","t43","t44","t45"],"sources":["../../../../../web/src/features/settings/channels/channel-im-hub-card.tsx","../../../../../web/src/features/settings/channels/channels-remove-channel-dialog.tsx","../../../../../web/src/features/settings/channel-bindings-merge.ts","../../../../../web/src/features/settings/channels/utils.ts","../../../../../web/src/features/settings/channels/field-primitives.tsx","../../../../../web/src/features/settings/channels/channel-agent-routing-block.tsx","../../../../../web/src/features/settings/channels/feishu-more-settings-section.tsx","../../../../../web/src/features/settings/channels-config-api.ts","../../../../../web/src/features/settings/channels/feishu-qr-setup-dialog.tsx","../../../../../web/src/features/settings/channels/telegram-advanced.tsx","../../../../../web/src/features/settings/channels/telegram-channel-settings-dialog.tsx","../../../../../web/src/features/settings/channels/use-channels-settings-panel.ts","../../../../../web/src/features/settings/channels/weixin-qr-login-dialog.tsx","../../../../../web/src/features/settings/channels/weixin-advanced.tsx","../../../../../web/src/features/settings/channels/weixin-more-settings-section.tsx","../../../../../web/src/features/settings/channels/channels-settings-panel.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { MoreHorizontal, Pencil, Trash2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_POPOVER_Z } from '@/lib/settings-shell-dialog-layer';\n\nexport type ChannelImHubCardProps = {\n icon: ReactNode;\n title: string;\n subtitle: string;\n configured: boolean;\n enabled: boolean;\n onToggle: (next: boolean) => void | Promise<void>;\n toggleDisabled: boolean;\n onConfigure: () => void;\n onEdit: () => void;\n onRemove: () => void;\n ch: ChannelsSettingsMessages;\n};\n\nexport function ChannelImHubCard({\n icon,\n title,\n subtitle,\n configured,\n enabled,\n onToggle,\n toggleDisabled,\n onConfigure,\n onEdit,\n onRemove,\n ch,\n}: ChannelImHubCardProps) {\n return (\n <div className=\"flex flex-col gap-3 rounded-2xl border border-edge bg-surface-base p-4 dark:border-edge sm:flex-row sm:items-center sm:gap-4\">\n <div className=\"flex min-w-0 flex-1 items-start gap-4\">\n <div className=\"flex size-12 shrink-0 items-center justify-center rounded-xl bg-surface-hover\" aria-hidden>\n {icon}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h2 className=\"text-sm font-semibold text-fg\">{title}</h2>\n {configured ? (\n <span className=\"inline-flex items-center rounded-full bg-success-soft px-2 py-0.5 text-xs font-medium text-success\">\n {ch.hubConnectedBadge}\n </span>\n ) : null}\n </div>\n <p className=\"mt-1 text-xs text-fg-muted\">{subtitle}</p>\n </div>\n </div>\n\n {!configured ? (\n <div className=\"flex shrink-0 justify-end sm:justify-end\">\n <Button type=\"button\" variant=\"primary\" className=\"shrink-0\" onClick={onConfigure}>\n {ch.hubConfigureButton}\n </Button>\n </div>\n ) : (\n <div className=\"flex shrink-0 flex-wrap items-center justify-end gap-2 sm:gap-3\">\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={ch.menuMoreAria}>\n <MoreHorizontal className=\"size-5 text-fg-muted\" strokeWidth={1.75} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className={cn(\n 'min-w-[11rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge',\n SETTINGS_SHELL_POPOVER_Z,\n )}\n sideOffset={6}\n align=\"end\"\n >\n <DropdownMenu.Item\n className=\"cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none hover:bg-surface-hover data-[highlighted]:bg-surface-hover\"\n onSelect={() => onEdit()}\n >\n <span className=\"flex items-center gap-2\">\n <Pencil className=\"size-4 shrink-0 text-fg-muted\" strokeWidth={1.75} />\n {ch.menuEditConfig}\n </span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"cursor-pointer rounded-lg px-3 py-2 text-sm text-danger outline-none hover:bg-surface-hover data-[highlighted]:bg-surface-hover\"\n onSelect={() => onRemove()}\n >\n <span className=\"flex items-center gap-2\">\n <Trash2 className=\"size-4 shrink-0\" strokeWidth={1.75} />\n {ch.menuRemoveConfig}\n </span>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={enabled}\n aria-label={`${title} — ${ch.enableChannelAria}`}\n disabled={toggleDisabled}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n enabled ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n toggleDisabled && 'cursor-not-allowed opacity-50',\n )}\n onClick={() => void onToggle(!enabled)}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\nexport function ChannelsRemoveChannelDialog({\n open,\n onOpenChange,\n ch,\n removeTarget,\n onCancel,\n saving,\n onConfirmRemove,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n removeTarget: 'weixin' | 'telegram' | 'feishu' | null;\n onCancel: () => void;\n saving: boolean;\n onConfirmRemove: () => void;\n}) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 w-[min(100%-2rem,28rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Title className=\"text-base font-semibold text-fg\">{ch.removeChannelTitle}</Dialog.Title>\n <Dialog.Description className=\"mt-2 text-sm text-fg-muted\">\n {removeTarget\n ? ch.removeChannelConfirm.replace(\n '{{name}}',\n removeTarget === 'weixin'\n ? ch.weixinTitle\n : removeTarget === 'telegram'\n ? ch.telegramTitle\n : ch.feishuTitle,\n )\n : '\\u00a0'}\n </Dialog.Description>\n <div className=\"mt-6 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"secondary\" onClick={onCancel}>\n {ch.modalCancel}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"border-danger/40 bg-danger text-white hover:bg-danger/90 dark:border-danger/40\"\n disabled={saving}\n onClick={onConfirmRemove}\n >\n {saving ? ch.saving : ch.removeChannelAction}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","/**\n * Merge UI channel account → agent routes into `config.bindings`.\n * Managed rules use ids `ui:route:account:<channel>:<accountId>`.\n */\n\nimport type { BindingRuleWire, ChannelAgentRoutesState } from './types/channel-bindings';\n\nexport type { BindingRuleWire, ChannelAgentRoutesState } from './types/channel-bindings';\n\nfunction normAcc(s: string | undefined): string {\n return (s ?? '').trim().toLowerCase();\n}\n\nexport function isSimpleAccountOnlyRule(r: BindingRuleWire): boolean {\n const m = r.match;\n if (!m?.channel || !m.accountId) return false;\n if (m.peerId || m.peerKind || m.guildId || m.teamId) return false;\n if (m.memberRoleIds && m.memberRoleIds.length > 0) return false;\n return true;\n}\n\n/** Telegram: `accounts` keys (token lives per account, typically `default`). */\nexport function telegramRoutingAccountIds(tg: { accounts?: Record<string, unknown> }): string[] {\n return Object.keys(tg.accounts ?? {}).sort();\n}\n\nexport function weixinRoutingAccountIds(wx: { accounts?: Record<string, unknown> }): string[] {\n return Object.keys(wx.accounts ?? {}).sort();\n}\n\nexport function feishuRoutingAccountIds(fs: { appId?: string; appSecret?: string; accounts?: Record<string, unknown> }): string[] {\n const keys = Object.keys(fs.accounts ?? {});\n if (keys.length > 0) return [...keys].sort();\n if (typeof fs.appId === 'string' && fs.appId.trim() && typeof fs.appSecret === 'string' && fs.appSecret.trim()) {\n return ['default'];\n }\n return [];\n}\n\nexport function extractChannelAgentRoutes(\n bindings: BindingRuleWire[],\n telegramAccountIds: string[],\n weixinAccountIds: string[],\n feishuAccountIds: string[],\n defaultAgentId: string,\n): ChannelAgentRoutesState {\n const telegram: Record<string, string> = {};\n const weixin: Record<string, string> = {};\n const feishu: Record<string, string> = {};\n\n for (const id of telegramAccountIds) {\n const rule = bindings.find(\n (r) =>\n normAcc(r.match?.channel) === 'telegram' &&\n normAcc(r.match?.accountId) === normAcc(id) &&\n isSimpleAccountOnlyRule(r),\n );\n telegram[id] = (rule?.agentId ?? defaultAgentId).trim().toLowerCase();\n }\n for (const id of weixinAccountIds) {\n const rule = bindings.find(\n (r) =>\n normAcc(r.match?.channel) === 'weixin' &&\n normAcc(r.match?.accountId) === normAcc(id) &&\n isSimpleAccountOnlyRule(r),\n );\n weixin[id] = (rule?.agentId ?? defaultAgentId).trim().toLowerCase();\n }\n\n for (const id of feishuAccountIds) {\n const rule = bindings.find(\n (r) =>\n normAcc(r.match?.channel) === 'feishu' &&\n normAcc(r.match?.accountId) === normAcc(id) &&\n isSimpleAccountOnlyRule(r),\n );\n feishu[id] = (rule?.agentId ?? defaultAgentId).trim().toLowerCase();\n }\n\n return { telegram, weixin, feishu };\n}\n\nexport function mergeChannelAgentBindings(\n previous: BindingRuleWire[],\n routes: ChannelAgentRoutesState,\n telegramAccountIds: string[],\n weixinAccountIds: string[],\n feishuAccountIds: string[],\n defaultAgentId: string,\n): BindingRuleWire[] {\n const tgAcc = new Set(telegramAccountIds.map(normAcc));\n const wxAcc = new Set(weixinAccountIds.map(normAcc));\n const fsAcc = new Set(feishuAccountIds.map(normAcc));\n\n const filtered = previous.filter((r) => {\n if (r.id?.startsWith('ui:route:account:')) return false;\n if (!isSimpleAccountOnlyRule(r)) return true;\n const ch = normAcc(r.match.channel);\n const acc = normAcc(r.match.accountId);\n if (!acc || acc === '*') return true;\n if (ch === 'telegram' && tgAcc.has(acc)) return false;\n if (ch === 'weixin' && wxAcc.has(acc)) return false;\n if (ch === 'feishu' && fsAcc.has(acc)) return false;\n return true;\n });\n\n const added: BindingRuleWire[] = [];\n\n for (const acc of telegramAccountIds) {\n const agentId = (routes.telegram[acc] ?? routes.telegram[normAcc(acc)] ?? defaultAgentId).trim().toLowerCase();\n added.push({\n id: `ui:route:account:telegram:${acc}`,\n agentId,\n priority: 45,\n enabled: true,\n match: { channel: 'telegram', accountId: acc },\n });\n }\n\n for (const acc of weixinAccountIds) {\n const agentId = (routes.weixin[acc] ?? routes.weixin[normAcc(acc)] ?? defaultAgentId).trim().toLowerCase();\n added.push({\n id: `ui:route:account:weixin:${acc}`,\n agentId,\n priority: 45,\n enabled: true,\n match: { channel: 'weixin', accountId: acc },\n });\n }\n\n for (const acc of feishuAccountIds) {\n const agentId = (routes.feishu[acc] ?? routes.feishu[normAcc(acc)] ?? defaultAgentId).trim().toLowerCase();\n added.push({\n id: `ui:route:account:feishu:${acc}`,\n agentId,\n priority: 45,\n enabled: true,\n match: { channel: 'feishu', accountId: acc },\n });\n }\n\n return [...filtered, ...added];\n}\n","import type { ChannelsSettingsState } from '@/features/settings/channels-config-api';\nimport { cn } from '@/lib/cn';\nimport { nativeSelectMaxWidthClass, selectControlBaseClass, settingsInputFocusClass } from '@/lib/form-field-width';\n\nexport function channelsInputClassName(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n 'placeholder:text-fg-subtle',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nexport function channelsSelectClassName(): string {\n return cn(selectControlBaseClass, nativeSelectMaxWidthClass);\n}\n\nexport function parseIdList(raw: string): (string | number)[] {\n return raw\n .split(/[,\\n]/)\n .map((s) => s.trim())\n .filter(Boolean)\n .map((s) => (/^-?\\d+$/.test(s) ? Number(s) : s));\n}\n\nexport function joinAllowFrom(ids: (string | number)[]): string {\n return ids.map(String).join(', ');\n}\n\nexport function telegramDefaultBotToken(tg: ChannelsSettingsState['telegram']): string {\n const t = tg.accounts?.default?.botToken;\n return typeof t === 'string' ? t : '';\n}\n\nexport function isTelegramConfigured(tg: ChannelsSettingsState['telegram']): boolean {\n return Object.values(tg.accounts ?? {}).some(\n (a) => typeof a.botToken === 'string' && a.botToken.trim().length > 0,\n );\n}\n\nexport function isWeixinConfigured(wx: ChannelsSettingsState['weixin']): boolean {\n return Object.keys(wx.accounts ?? {}).length > 0 || wx.allowFrom.length > 0;\n}\n\nexport function isFeishuConfigured(fs: ChannelsSettingsState['feishu']): boolean {\n return Boolean(fs.appId?.trim() && fs.appSecret?.trim()) || Object.keys(fs.accounts ?? {}).length > 0;\n}\n","import type { ReactNode } from 'react';\n\nimport { channelsSelectClassName } from './utils';\n\nexport function FieldLabel({ children }: { children: ReactNode }) {\n return <div className=\"text-sm font-medium text-fg\">{children}</div>;\n}\n\nexport function FieldHint({ children }: { children: ReactNode }) {\n return <p className=\"text-xs leading-relaxed text-fg-subtle\">{children}</p>;\n}\n\ntype SelectFieldProps<T extends string> = {\n label: string;\n value: T;\n onChange: (v: T) => void;\n options: { value: T; label: string }[];\n};\n\nexport function SelectField<T extends string>({ label, value, onChange, options }: SelectFieldProps<T>) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{label}</FieldLabel>\n <select className={channelsSelectClassName()} value={value} onChange={(e) => onChange(e.target.value as T)}>\n {options.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n","import { agentListDisplayName } from '@/features/settings/agents/agent-display-names';\nimport { nativeSelectMaxWidthClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\nimport { messages, type ChannelsSettingsMessages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { FieldHint, FieldLabel } from './field-primitives';\nimport { channelsInputClassName } from './utils';\n\nexport function ChannelAgentRoutingBlock({\n accountIds,\n routes,\n defaultAgentId,\n agentItems,\n disabled,\n onChange,\n ch,\n}: {\n accountIds: string[];\n routes: Record<string, string>;\n defaultAgentId: string;\n agentItems: { id: string; name?: string }[];\n disabled?: boolean;\n onChange: (accountId: string, agentId: string) => void;\n ch: ChannelsSettingsMessages;\n}) {\n const language = useLocaleStore((s) => s.language);\n const agentsMessages = messages(language).agentsSettings;\n if (accountIds.length === 0) return null;\n const opts = agentItems.length > 0 ? agentItems : [{ id: defaultAgentId }];\n return (\n <div className=\"space-y-3 border-t border-edge-subtle pt-4 dark:border-edge\">\n <div>\n <FieldLabel>{ch.agentRoutingTitle}</FieldLabel>\n <FieldHint>{ch.agentRoutingHint}</FieldHint>\n </div>\n <div className=\"space-y-2\">\n {accountIds.map((acc) => (\n <div\n key={acc}\n className=\"grid grid-cols-1 items-start gap-2 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2.5 sm:grid-cols-2 sm:items-center dark:border-edge\"\n >\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium text-fg-muted\">{ch.agentRoutingAccountLabel}</p>\n <p className=\"mt-0.5 truncate font-mono text-sm text-fg\" title={acc}>\n {acc}\n </p>\n </div>\n <div className=\"min-w-0\">\n <label className=\"sr-only\" htmlFor={`agent-route-${acc}`}>\n {ch.agentRoutingAgentLabel}\n </label>\n <select\n id={`agent-route-${acc}`}\n className={cn(channelsInputClassName(), nativeSelectMaxWidthClass)}\n disabled={disabled}\n value={(routes[acc] ?? defaultAgentId).toLowerCase()}\n onChange={(e) => onChange(acc, e.target.value)}\n >\n {opts.map((ag) => (\n <option key={ag.id} value={ag.id}>\n {`${agentListDisplayName(ag, agentsMessages)} (${ag.id})`}\n </option>\n ))}\n </select>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { Check, ChevronDown, Copy, Eye, EyeOff } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentsPayload } from '@/features/chat/chat-agents-api';\nimport { feishuRoutingAccountIds } from '@/features/settings/channel-bindings-merge';\nimport type { ChannelsSettingsState, DmPolicy, GroupPolicy } from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nimport { ChannelAgentRoutingBlock } from './channel-agent-routing-block';\nimport { FieldHint, FieldLabel } from './field-primitives';\nimport { channelsInputClassName, joinAllowFrom, parseIdList } from './utils';\n\nexport function FeishuMoreSettingsSection({\n ch,\n form,\n baseline,\n showFeishuSecret,\n setShowFeishuSecret,\n showFeishuWebhookSecrets,\n setShowFeishuWebhookSecrets,\n feishuCopied,\n feishuWebhookCopied,\n copyFeishuSecret,\n copyFeishuWebhookConfig,\n updateFeishu,\n updateChannelAgentRoute,\n feishuAccountsDraft,\n setFeishuAccountsDraft,\n feishuAccountsError,\n onFeishuAccountsBlur,\n dmOpts,\n groupOpts,\n chatAgents,\n saving,\n dirty,\n save,\n discard,\n}: {\n ch: ChannelsSettingsMessages;\n form: ChannelsSettingsState;\n baseline: ChannelsSettingsState | null;\n showFeishuSecret: boolean;\n setShowFeishuSecret: (v: boolean | ((b: boolean) => boolean)) => void;\n showFeishuWebhookSecrets: boolean;\n setShowFeishuWebhookSecrets: (v: boolean | ((b: boolean) => boolean)) => void;\n feishuCopied: boolean;\n feishuWebhookCopied: boolean;\n copyFeishuSecret: () => Promise<void>;\n copyFeishuWebhookConfig: () => Promise<void>;\n updateFeishu: (patch: Partial<ChannelsSettingsState['feishu']>) => void;\n updateChannelAgentRoute: (\n channel: 'telegram' | 'weixin' | 'feishu',\n accountId: string,\n agentId: string,\n ) => void;\n feishuAccountsDraft: string;\n setFeishuAccountsDraft: (v: string) => void;\n feishuAccountsError: string;\n onFeishuAccountsBlur: () => void;\n dmOpts: { value: DmPolicy; label: string }[];\n groupOpts: { value: GroupPolicy; label: string }[];\n chatAgents: ChatAgentsPayload | undefined;\n saving: boolean;\n dirty: boolean;\n save: () => Promise<boolean>;\n discard: () => void;\n}) {\n const inputClassName = channelsInputClassName;\n const fs = form.feishu;\n const feishuBaselineSecret = baseline?.feishu?.appSecret ?? '';\n const feishuSecretDisplayLocked =\n !showFeishuSecret &&\n Boolean(String(feishuBaselineSecret).trim()) &&\n fs.appSecret === feishuBaselineSecret;\n\n return (\n <details className=\"group rounded-xl border border-edge-subtle bg-surface-base open:pb-3 dark:border-edge\">\n <summary className=\"cursor-pointer list-none rounded-xl px-3 py-2.5 text-sm font-medium text-fg transition-colors hover:bg-surface-hover group-open:rounded-b-none [&::-webkit-details-marker]:hidden\">\n <span className=\"inline-flex items-center gap-2\">\n <ChevronDown className=\"size-4 shrink-0 text-fg-muted transition-transform group-open:rotate-180\" />\n {ch.advancedShow}\n </span>\n </summary>\n <div className=\"space-y-4 border-t border-edge-subtle px-3 pb-3 pt-3 dark:border-edge-subtle\">\n <p className=\"text-xs leading-relaxed text-fg-muted\">{ch.feishuAdvancedHint}</p>\n <label className=\"flex cursor-pointer items-start gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox mt-0.5\"\n checked={fs.enabled}\n onChange={(e) => updateFeishu({ enabled: e.target.checked })}\n />\n <span>{ch.enableFeishuAria}</span>\n </label>\n\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>\n {ch.feishuAppId}\n <span className=\"text-red-600 dark:text-red-400\"> *</span>\n </FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n value={fs.appId}\n onChange={(e) => updateFeishu({ appId: e.target.value })}\n placeholder=\"cli_xxx\"\n />\n <FieldHint>{ch.feishuAppIdDesc}</FieldHint>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>\n {ch.feishuAppSecret}\n <span className=\"text-red-600 dark:text-red-400\"> *</span>\n </FieldLabel>\n <div className=\"flex flex-wrap gap-2\">\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showFeishuSecret ? 'text' : 'password'}\n autoComplete=\"off\"\n readOnly={feishuSecretDisplayLocked}\n value={\n feishuSecretDisplayLocked\n ? '*'.repeat(Math.max(1, fs.appSecret.length))\n : fs.appSecret\n }\n onChange={(e) => {\n if (feishuSecretDisplayLocked) return;\n updateFeishu({ appSecret: e.target.value });\n }}\n placeholder=\"••••••••\"\n />\n {fs.appSecret ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => void copyFeishuSecret()}\n >\n {feishuCopied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {feishuCopied ? ch.copied : ch.copy}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => setShowFeishuSecret((s) => !s)}\n >\n {showFeishuSecret ? <EyeOff className=\"size-3.5\" /> : <Eye className=\"size-3.5\" />}\n {showFeishuSecret ? ch.hide : ch.show}\n </Button>\n </div>\n <FieldHint>{ch.feishuAppSecretDesc}</FieldHint>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.feishuDomain}</FieldLabel>\n <select\n className={inputClassName()}\n value={String(fs.domain || 'feishu')}\n onChange={(e) => updateFeishu({ domain: e.target.value })}\n >\n <option value=\"feishu\">feishu</option>\n <option value=\"lark\">lark</option>\n </select>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.connectionMode}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.connectionMode}\n onChange={(e) =>\n updateFeishu({ connectionMode: e.target.value as ChannelsSettingsState['feishu']['connectionMode'] })\n }\n >\n <option value=\"websocket\">websocket</option>\n <option value=\"webhook\">webhook</option>\n </select>\n <FieldHint>{ch.connectionModeDesc}</FieldHint>\n </div>\n </div>\n\n {fs.connectionMode === 'webhook' ? (\n <div className=\"rounded-xl border border-edge-subtle bg-surface px-4 py-3 dark:border-edge-subtle\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-medium text-fg\">{ch.webhookTitle}</div>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => setShowFeishuWebhookSecrets((s) => !s)}\n >\n {showFeishuWebhookSecrets ? <EyeOff className=\"size-3.5\" /> : <Eye className=\"size-3.5\" />}\n {showFeishuWebhookSecrets ? ch.hide : ch.show}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => void copyFeishuWebhookConfig()}\n >\n {feishuWebhookCopied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {feishuWebhookCopied ? ch.copied : ch.copy}\n </Button>\n </div>\n </div>\n\n <div className=\"mt-3 grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.verificationToken}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showFeishuWebhookSecrets ? 'text' : 'password'}\n autoComplete=\"off\"\n value={fs.verificationToken ?? ''}\n onChange={(e) => updateFeishu({ verificationToken: e.target.value })}\n />\n <FieldHint>{ch.verificationTokenDesc}</FieldHint>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.encryptKey}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showFeishuWebhookSecrets ? 'text' : 'password'}\n autoComplete=\"off\"\n value={fs.encryptKey ?? ''}\n onChange={(e) => updateFeishu({ encryptKey: e.target.value })}\n />\n <FieldHint>{ch.encryptKeyDesc}</FieldHint>\n </div>\n </div>\n\n <div className=\"mt-3 grid gap-3 sm:grid-cols-3\">\n <div className=\"flex flex-col gap-1.5 sm:col-span-2\">\n <FieldLabel>{ch.webhookHost}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n value={fs.webhookHost ?? ''}\n onChange={(e) => updateFeishu({ webhookHost: e.target.value })}\n placeholder=\"127.0.0.1\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.webhookPort}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type=\"number\"\n inputMode=\"numeric\"\n value={String(fs.webhookPort ?? '')}\n onChange={(e) =>\n updateFeishu({ webhookPort: Number(e.target.value || '0') || 0 })\n }\n placeholder=\"3000\"\n />\n </div>\n </div>\n\n <div className=\"mt-3 flex flex-col gap-1.5\">\n <FieldLabel>{ch.webhookPath}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n value={fs.webhookPath ?? ''}\n onChange={(e) => updateFeishu({ webhookPath: e.target.value })}\n placeholder=\"/feishu/events\"\n />\n <FieldHint>{ch.webhookPathDesc}</FieldHint>\n </div>\n </div>\n ) : null}\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.renderMode}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.renderMode}\n onChange={(e) =>\n updateFeishu({ renderMode: e.target.value as ChannelsSettingsState['feishu']['renderMode'] })\n }\n >\n <option value=\"auto\">auto</option>\n <option value=\"raw\">raw</option>\n <option value=\"card\">card</option>\n </select>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.reactionNotifications}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.reactionNotifications}\n onChange={(e) =>\n updateFeishu({\n reactionNotifications: e.target\n .value as ChannelsSettingsState['feishu']['reactionNotifications'],\n })\n }\n >\n <option value=\"off\">off</option>\n <option value=\"own\">own</option>\n <option value=\"all\">all</option>\n </select>\n </div>\n </div>\n\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={fs.streaming}\n onChange={(e) => updateFeishu({ streaming: e.target.checked })}\n />\n {ch.enableStreaming}\n </label>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.dmPolicy}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.dmPolicy}\n onChange={(e) =>\n updateFeishu({ dmPolicy: e.target.value as ChannelsSettingsState['feishu']['dmPolicy'] })\n }\n >\n {dmOpts.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.groupPolicy}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.groupPolicy}\n onChange={(e) =>\n updateFeishu({ groupPolicy: e.target.value as ChannelsSettingsState['feishu']['groupPolicy'] })\n }\n >\n {groupOpts.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={fs.requireMention}\n onChange={(e) => updateFeishu({ requireMention: e.target.checked })}\n />\n {ch.requireMention}\n </label>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromDm}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"ou_xxx, on_xxx\"\n value={joinAllowFrom(fs.allowFrom)}\n onChange={(e) => updateFeishu({ allowFrom: parseIdList(e.target.value) })}\n />\n <FieldHint>{ch.allowFromDmDesc}</FieldHint>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromGroups}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"oc_xxx, oc_yyy\"\n value={joinAllowFrom(fs.groupAllowFrom)}\n onChange={(e) => updateFeishu({ groupAllowFrom: parseIdList(e.target.value) })}\n />\n <FieldHint>{ch.allowFromGroupsDesc}</FieldHint>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.historyLimit}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type=\"number\"\n inputMode=\"numeric\"\n value={String(fs.historyLimit)}\n onChange={(e) => updateFeishu({ historyLimit: Number(e.target.value || '0') || 0 })}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.textChunkLimit}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type=\"number\"\n inputMode=\"numeric\"\n value={String(fs.textChunkLimit)}\n onChange={(e) => updateFeishu({ textChunkLimit: Number(e.target.value || '0') || 0 })}\n />\n </div>\n </div>\n\n <div className=\"rounded-xl border border-edge-subtle bg-surface px-4 py-3 dark:border-edge-subtle\">\n <div className=\"text-sm font-medium text-fg\">{ch.feishuToolsTitle}</div>\n <div className=\"mt-2 grid gap-2 sm:grid-cols-2\">\n {(\n [\n ['doc', ch.feishuToolDoc],\n ['wiki', ch.feishuToolWiki],\n ['drive', ch.feishuToolDrive],\n ['perm', ch.feishuToolPerm],\n ['bitable', ch.feishuToolBitable],\n ['scopes', ch.feishuToolScopes],\n ] as const\n ).map(([key, label]) => (\n <label key={key} className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={Boolean(fs.tools?.[key])}\n onChange={(e) =>\n updateFeishu({\n tools: { ...fs.tools, [key]: e.target.checked },\n })\n }\n />\n {label}\n </label>\n ))}\n </div>\n <div className=\"mt-2\">\n <FieldHint>{ch.feishuToolsDesc}</FieldHint>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-edge-subtle bg-surface px-4 py-3 dark:border-edge-subtle\">\n <div className=\"text-sm font-medium text-fg\">{ch.feishuActionsTitle}</div>\n <label className=\"mt-2 flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={Boolean(fs.actions?.reactions)}\n onChange={(e) =>\n updateFeishu({\n actions: { ...fs.actions, reactions: e.target.checked },\n })\n }\n />\n {ch.feishuActionReactions}\n </label>\n </div>\n\n <ChannelAgentRoutingBlock\n accountIds={feishuRoutingAccountIds(fs)}\n routes={form.channelAgentRoutes.feishu}\n defaultAgentId={form.defaultAgentId}\n agentItems={chatAgents?.items ?? []}\n disabled={saving}\n onChange={(acc, aid) => updateChannelAgentRoute('feishu', acc, aid)}\n ch={ch}\n />\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.multiAccountJson}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n spellCheck={false}\n value={feishuAccountsDraft}\n onChange={(e) => setFeishuAccountsDraft(e.target.value)}\n onBlur={onFeishuAccountsBlur}\n placeholder='{ \"default\": { \"appId\": \"...\", \"appSecret\": \"...\", \"enabled\": true } }'\n />\n {feishuAccountsError ? (\n <p className=\"text-xs text-red-600 dark:text-red-400\">{feishuAccountsError}</p>\n ) : (\n <FieldHint>{ch.multiAccountJsonDesc}</FieldHint>\n )}\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:justify-end\">\n <Button type=\"button\" variant=\"secondary\" className=\"w-full sm:w-auto\" disabled={!dirty || saving} onClick={discard}>\n {ch.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"w-full sm:w-auto\"\n disabled={!dirty || saving}\n onClick={async () => {\n await save();\n }}\n >\n {saving ? ch.saving : ch.save}\n </Button>\n </div>\n </div>\n </details>\n );\n}\n","import { revalidateGatewayConfig } from '@/features/gateway/gateway-config-swr';\nimport { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport {\n extractChannelAgentRoutes,\n mergeChannelAgentBindings,\n feishuRoutingAccountIds,\n telegramRoutingAccountIds,\n weixinRoutingAccountIds,\n type BindingRuleWire,\n} from './channel-bindings-merge';\nimport type {\n ChannelsSettingsState,\n DmPolicy,\n GroupPolicy,\n ReplyToMode,\n StreamMode,\n TelegramAccount,\n WeixinAccount,\n} from './channels-settings.types';\n\nexport type {\n ChannelsSettingsState,\n TelegramConfig,\n WeixinConfig,\n} from './channels-settings.types';\n\nexport type { DmPolicy, GroupPolicy, ReplyToMode, StreamMode };\n\nexport function emptyTelegramAccount(accountId: string): TelegramAccount {\n return {\n accountId,\n name: '',\n enabled: true,\n botToken: '',\n allowFrom: [],\n dmPolicy: 'pairing',\n groupPolicy: 'open',\n replyToMode: 'off',\n apiRoot: '',\n proxy: '',\n historyLimit: 50,\n textChunkLimit: 4000,\n streamMode: 'partial',\n };\n}\n\nexport function defaultChannelsState(): ChannelsSettingsState {\n return {\n bindingsFull: [],\n channelAgentRoutes: { telegram: {}, weixin: {}, feishu: {} },\n defaultAgentId: 'main',\n telegram: {\n enabled: false,\n apiRoot: '',\n debug: false,\n allowFrom: [],\n groupAllowFrom: [],\n dmPolicy: 'pairing',\n groupPolicy: 'open',\n replyToMode: 'off',\n streamMode: 'partial',\n historyLimit: 50,\n textChunkLimit: 4000,\n proxy: '',\n accounts: { default: emptyTelegramAccount('default') },\n },\n weixin: {\n enabled: false,\n dmPolicy: 'open',\n allowFrom: [],\n debug: false,\n streamMode: 'partial',\n historyLimit: 50,\n textChunkLimit: 4000,\n routeTag: '',\n accounts: {},\n },\n feishu: {\n enabled: false,\n defaultAccount: '',\n appId: '',\n appSecret: '',\n domain: 'feishu',\n connectionMode: 'websocket',\n verificationToken: '',\n encryptKey: '',\n webhookHost: '127.0.0.1',\n webhookPort: 3000,\n webhookPath: '/feishu/events',\n dmPolicy: 'open',\n groupPolicy: 'allowlist',\n allowFrom: [],\n groupAllowFrom: [],\n requireMention: true,\n historyLimit: 50,\n textChunkLimit: 4000,\n renderMode: 'auto',\n streaming: false,\n reactionNotifications: 'own',\n tools: { doc: true, wiki: true, drive: true, scopes: true, bitable: true, perm: false },\n actions: { reactions: true },\n accounts: {},\n },\n };\n}\n\nexport function normalizeChannelsFromConfig(config: unknown): ChannelsSettingsState {\n const cfg = config && typeof config === 'object' ? (config as { channels?: unknown }).channels : undefined;\n const ch = cfg && typeof cfg === 'object' ? (cfg as Record<string, unknown>) : {};\n const tg = ch.telegram as Record<string, unknown> | undefined;\n const wx = ch.weixin as Record<string, unknown> | undefined;\n const fs = ch.feishu as Record<string, unknown> | undefined;\n\n const telegramAccounts = tg?.accounts;\n let accounts: Record<string, TelegramAccount> =\n telegramAccounts && typeof telegramAccounts === 'object' && !Array.isArray(telegramAccounts)\n ? { ...(telegramAccounts as Record<string, TelegramAccount>) }\n : {};\n\n const legacyTopToken = typeof tg?.botToken === 'string' ? tg.botToken.trim() : '';\n const defaultTok = accounts.default?.botToken?.trim() ?? '';\n if (legacyTopToken && !defaultTok) {\n accounts = {\n ...accounts,\n default: {\n ...(accounts.default ?? emptyTelegramAccount('default')),\n accountId: 'default',\n botToken: legacyTopToken,\n },\n };\n }\n if (!accounts.default) {\n accounts = { ...accounts, default: emptyTelegramAccount('default') };\n }\n\n const weixinAccounts = wx?.accounts;\n const wxAcc: Record<string, WeixinAccount> =\n weixinAccounts && typeof weixinAccounts === 'object' && !Array.isArray(weixinAccounts)\n ? (weixinAccounts as Record<string, WeixinAccount>)\n : {};\n\n const bindingsRaw = (() => {\n const cfgObj = config && typeof config === 'object' ? (config as Record<string, unknown>) : {};\n const b = cfgObj.bindings;\n return Array.isArray(b) ? (b as BindingRuleWire[]) : [];\n })();\n\n const agents = (() => {\n const cfgObj = config && typeof config === 'object' ? (config as Record<string, unknown>) : {};\n const a = cfgObj.agents;\n return a && typeof a === 'object' ? (a as Record<string, unknown>) : {};\n })();\n const defaultAgentId =\n typeof agents.defaultId === 'string' && agents.defaultId.trim()\n ? agents.defaultId.trim().toLowerCase()\n : 'main';\n\n const base = {\n telegram: {\n enabled: Boolean(tg?.enabled),\n apiRoot: typeof tg?.apiRoot === 'string' ? tg.apiRoot : '',\n debug: Boolean(tg?.debug),\n allowFrom: Array.isArray(tg?.allowFrom) ? [...(tg.allowFrom as (string | number)[])] : [],\n groupAllowFrom: Array.isArray(tg?.groupAllowFrom) ? [...(tg.groupAllowFrom as (string | number)[])] : [],\n dmPolicy: (tg?.dmPolicy as DmPolicy) || 'pairing',\n groupPolicy: (tg?.groupPolicy as GroupPolicy) || 'open',\n replyToMode: (tg?.replyToMode as ReplyToMode) || 'off',\n streamMode: (tg?.streamMode as StreamMode) ?? 'partial',\n historyLimit: typeof tg?.historyLimit === 'number' ? tg.historyLimit : 50,\n textChunkLimit: typeof tg?.textChunkLimit === 'number' ? tg.textChunkLimit : 4000,\n proxy: typeof tg?.proxy === 'string' ? tg.proxy : '',\n accounts: { ...accounts },\n },\n weixin: {\n enabled: Boolean(wx?.enabled),\n dmPolicy: (wx?.dmPolicy as DmPolicy) || 'open',\n allowFrom: Array.isArray(wx?.allowFrom) ? [...(wx.allowFrom as string[])] : [],\n debug: Boolean(wx?.debug),\n streamMode: (wx?.streamMode as StreamMode) ?? 'partial',\n historyLimit: typeof wx?.historyLimit === 'number' ? wx.historyLimit : 50,\n textChunkLimit: typeof wx?.textChunkLimit === 'number' ? wx.textChunkLimit : 4000,\n routeTag: wx?.routeTag != null ? String(wx.routeTag) : '',\n accounts: { ...wxAcc },\n },\n feishu: {\n enabled: Boolean(fs?.enabled),\n defaultAccount: typeof fs?.defaultAccount === 'string' ? fs.defaultAccount : '',\n appId: typeof fs?.appId === 'string' ? fs.appId : '',\n appSecret: typeof fs?.appSecret === 'string' ? fs.appSecret : '',\n domain: (typeof fs?.domain === 'string' && fs.domain) || 'feishu',\n connectionMode: (fs?.connectionMode as any) || 'websocket',\n verificationToken: typeof fs?.verificationToken === 'string' ? fs.verificationToken : '',\n encryptKey: typeof fs?.encryptKey === 'string' ? fs.encryptKey : '',\n webhookHost: typeof fs?.webhookHost === 'string' ? fs.webhookHost : '127.0.0.1',\n webhookPort: typeof fs?.webhookPort === 'number' ? fs.webhookPort : 3000,\n webhookPath: typeof fs?.webhookPath === 'string' ? fs.webhookPath : '/feishu/events',\n dmPolicy: (fs?.dmPolicy as DmPolicy) || 'open',\n groupPolicy: (fs?.groupPolicy as GroupPolicy) || 'allowlist',\n allowFrom: Array.isArray(fs?.allowFrom) ? [...(fs.allowFrom as (string | number)[])] : [],\n groupAllowFrom: Array.isArray(fs?.groupAllowFrom) ? [...(fs.groupAllowFrom as (string | number)[])] : [],\n requireMention: fs?.requireMention === undefined ? true : Boolean(fs.requireMention),\n historyLimit: typeof fs?.historyLimit === 'number' ? fs.historyLimit : 50,\n textChunkLimit: typeof fs?.textChunkLimit === 'number' ? fs.textChunkLimit : 4000,\n renderMode: (fs?.renderMode as any) || 'auto',\n streaming: fs?.streaming === undefined ? false : Boolean(fs.streaming),\n reactionNotifications: (fs?.reactionNotifications as any) || 'own',\n tools:\n fs?.tools && typeof fs.tools === 'object' && !Array.isArray(fs.tools)\n ? ({ ...(fs.tools as Record<string, boolean>) } as any)\n : undefined,\n actions:\n fs?.actions && typeof fs.actions === 'object' && !Array.isArray(fs.actions)\n ? ({ ...(fs.actions as Record<string, boolean>) } as any)\n : undefined,\n accounts:\n fs?.accounts && typeof fs.accounts === 'object' && !Array.isArray(fs.accounts)\n ? ({ ...(fs.accounts as Record<string, any>) } as any)\n : {},\n },\n };\n\n const tgIds = telegramRoutingAccountIds(base.telegram);\n const wxIds = weixinRoutingAccountIds(base.weixin);\n const fsIds = feishuRoutingAccountIds(base.feishu);\n const channelAgentRoutes = extractChannelAgentRoutes(bindingsRaw, tgIds, wxIds, fsIds, defaultAgentId);\n\n return {\n ...base,\n bindingsFull: bindingsRaw.map((r) => ({ ...r })),\n channelAgentRoutes,\n defaultAgentId,\n };\n}\n\nexport async function fetchChannelsSettings(): Promise<ChannelsSettingsState> {\n const res = await fetchJson<{ ok?: boolean; payload?: { config?: unknown } }>(apiUrl('/api/config'));\n const c = res.payload?.config;\n return normalizeChannelsFromConfig(c ?? {});\n}\n\nexport type WeixinGatewayQrLoginStatusPayload =\n | { phase: 'polling'; qrcodeUrl: string; qrStatus?: string }\n | { phase: 'done'; ok: true; accountId: string }\n | { phase: 'done'; ok: false; message: string }\n | { phase: 'unknown'; message: string };\n\nexport async function fetchWeixinGatewayQrLoginStart(body?: {\n account?: string;\n timeoutMs?: number;\n}): Promise<{ sessionKey: string; qrcodeUrl: string }> {\n const res = await fetchJson<{ ok: boolean; payload: { sessionKey: string; qrcodeUrl: string } }>(\n apiUrl('/api/channels/weixin/login/start'),\n { method: 'POST', body: JSON.stringify(body ?? {}) },\n );\n return res.payload;\n}\n\nexport async function fetchWeixinGatewayQrLoginStatus(\n sessionKey: string,\n): Promise<WeixinGatewayQrLoginStatusPayload> {\n const res = await fetchJson<{ ok: boolean; payload: { status: WeixinGatewayQrLoginStatusPayload } }>(\n apiUrl(`/api/channels/weixin/login/${encodeURIComponent(sessionKey)}`),\n );\n return res.payload.status;\n}\n\nexport async function patchChannelsSettings(state: ChannelsSettingsState): Promise<ChannelsSettingsState> {\n const tg = state.telegram;\n const wx = state.weixin;\n const fs = state.feishu;\n const mergedBindings = mergeChannelAgentBindings(\n state.bindingsFull,\n state.channelAgentRoutes,\n telegramRoutingAccountIds(tg),\n weixinRoutingAccountIds(wx),\n feishuRoutingAccountIds(fs),\n state.defaultAgentId,\n );\n const weixinRouteTag: string | number | null = (() => {\n const raw = wx.routeTag.trim();\n if (!raw) return null;\n return /^\\d+$/.test(raw) ? Number(raw) : raw;\n })();\n\n const res = await fetchJson<{ ok?: boolean; payload?: { config?: unknown } }>(apiUrl('/api/config'), {\n method: 'PATCH',\n body: JSON.stringify({\n bindings: mergedBindings,\n channels: {\n telegram: {\n enabled: tg.enabled,\n apiRoot: tg.apiRoot || undefined,\n debug: tg.debug,\n allowFrom: tg.allowFrom,\n groupAllowFrom: tg.groupAllowFrom.length ? tg.groupAllowFrom : undefined,\n dmPolicy: tg.dmPolicy,\n groupPolicy: tg.groupPolicy,\n replyToMode: tg.replyToMode,\n streamMode: tg.streamMode,\n historyLimit: tg.historyLimit,\n textChunkLimit: tg.textChunkLimit,\n proxy: tg.proxy || undefined,\n // Always send `accounts` (including `{}`) so PATCH clears stale entries instead of omitting the field.\n accounts: tg.accounts,\n },\n weixin: {\n enabled: wx.enabled,\n dmPolicy: wx.dmPolicy,\n allowFrom: wx.allowFrom,\n debug: wx.debug,\n streamMode: wx.streamMode,\n historyLimit: wx.historyLimit,\n textChunkLimit: wx.textChunkLimit,\n routeTag: weixinRouteTag,\n accounts: wx.accounts,\n },\n feishu: {\n enabled: fs.enabled,\n defaultAccount: fs.defaultAccount || undefined,\n appId: fs.appId,\n appSecret: fs.appSecret || undefined,\n domain: fs.domain || undefined,\n connectionMode: fs.connectionMode,\n verificationToken: (fs as any).verificationToken?.trim() ? (fs as any).verificationToken : undefined,\n encryptKey: (fs as any).encryptKey?.trim() ? (fs as any).encryptKey : undefined,\n webhookHost: (fs as any).webhookHost?.trim() ? (fs as any).webhookHost : undefined,\n webhookPort: typeof (fs as any).webhookPort === 'number' ? (fs as any).webhookPort : undefined,\n webhookPath: (fs as any).webhookPath?.trim() ? (fs as any).webhookPath : undefined,\n dmPolicy: fs.dmPolicy,\n groupPolicy: fs.groupPolicy,\n allowFrom: fs.allowFrom,\n groupAllowFrom: fs.groupAllowFrom.length ? fs.groupAllowFrom : undefined,\n requireMention: fs.requireMention,\n historyLimit: fs.historyLimit,\n textChunkLimit: fs.textChunkLimit,\n renderMode: fs.renderMode,\n streaming: fs.streaming,\n reactionNotifications: fs.reactionNotifications,\n tools: (fs as any).tools,\n actions: (fs as any).actions,\n accounts: fs.accounts,\n },\n },\n }),\n });\n const c = res.payload?.config;\n void revalidateGatewayConfig();\n if (c) return normalizeChannelsFromConfig(c);\n return {\n ...state,\n bindingsFull: mergedBindings,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Feishu QR scan-to-create\n// ---------------------------------------------------------------------------\n\nexport type FeishuSetupStatusPayload =\n | { phase: 'polling' }\n | { phase: 'done'; ok: true; appId: string; domain: string; openId?: string }\n | { phase: 'done'; ok: false; message: string }\n | { phase: 'unknown'; message: string };\n\nexport async function fetchFeishuSetupStart(body?: {\n domain?: 'feishu' | 'lark';\n}): Promise<{ sessionKey: string; qrUrl: string }> {\n const res = await fetchJson<{\n ok: boolean;\n payload: { sessionKey: string; qrUrl: string };\n }>(apiUrl('/api/channels/feishu/setup/start'), {\n method: 'POST',\n body: JSON.stringify(body ?? {}),\n });\n return res.payload;\n}\n\nexport async function fetchFeishuSetupStatus(sessionKey: string): Promise<FeishuSetupStatusPayload> {\n const res = await fetchJson<{\n ok: boolean;\n payload: { status: FeishuSetupStatusPayload };\n }>(apiUrl(`/api/channels/feishu/setup/${encodeURIComponent(sessionKey)}`));\n return res.payload.status;\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { ExternalLink, X } from 'lucide-react';\nimport QRCode from 'qrcode';\nimport { useCallback, useEffect, useState, type ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n fetchFeishuSetupStart,\n fetchFeishuSetupStatus,\n} from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\ntype FeishuDomain = 'feishu' | 'lark';\n\nexport function FeishuQrSetupDialog({\n open,\n onOpenChange,\n ch,\n onSetupSuccess,\n moreSettings,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n onSetupSuccess: (result: { appId: string; domain: string; openId?: string }) => void;\n moreSettings?: ReactNode;\n}) {\n const [busy, setBusy] = useState(false);\n const [domain, setDomain] = useState<FeishuDomain>('feishu');\n const [sessionKey, setSessionKey] = useState<string | null>(null);\n const [qrUrl, setQrUrl] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [qrDataUrl, setQrDataUrl] = useState<string | null>(null);\n const [qrGenFailed, setQrGenFailed] = useState(false);\n\n const startScan = useCallback(async (d: FeishuDomain) => {\n setDomain(d);\n setError(null);\n setSessionKey(null);\n setQrUrl(null);\n setBusy(true);\n try {\n const result = await fetchFeishuSetupStart({ domain: d });\n setQrUrl(result.qrUrl);\n setSessionKey(result.sessionKey);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'Start failed');\n } finally {\n setBusy(false);\n }\n }, []);\n\n useEffect(() => {\n if (!open) {\n setSessionKey(null);\n setQrUrl(null);\n setError(null);\n setQrDataUrl(null);\n setQrGenFailed(false);\n setDomain('feishu');\n setBusy(false);\n return;\n }\n void startScan('feishu');\n }, [open, startScan]);\n\n useEffect(() => {\n if (!sessionKey) return;\n let cancelled = false;\n let intervalId: number | undefined;\n\n const poll = async () => {\n try {\n const status = await fetchFeishuSetupStatus(sessionKey);\n if (cancelled) return;\n\n if (status.phase === 'polling') return;\n\n if (status.phase === 'done') {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n intervalId = undefined;\n }\n setSessionKey(null);\n if (status.ok) {\n setQrUrl(null);\n onOpenChange(false);\n onSetupSuccess({\n appId: status.appId,\n domain: status.domain,\n openId: status.openId,\n });\n } else {\n setError(status.message);\n setQrUrl(null);\n }\n return;\n }\n\n if (status.phase === 'unknown') {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n setError(status.message);\n setSessionKey(null);\n setQrUrl(null);\n }\n } catch (e) {\n if (!cancelled) {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n setError(e instanceof Error ? e.message : 'Request failed');\n setSessionKey(null);\n setQrUrl(null);\n }\n }\n };\n\n intervalId = window.setInterval(() => void poll(), 3000);\n void poll();\n return () => {\n cancelled = true;\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n };\n }, [sessionKey, onOpenChange, onSetupSuccess]);\n\n useEffect(() => {\n if (!qrUrl) {\n setQrDataUrl(null);\n setQrGenFailed(false);\n return;\n }\n let cancelled = false;\n setQrGenFailed(false);\n void QRCode.toDataURL(qrUrl, {\n width: 208,\n margin: 2,\n errorCorrectionLevel: 'M',\n color: { dark: '#000000ff', light: '#ffffffff' },\n })\n .then((url) => {\n if (!cancelled) setQrDataUrl(url);\n })\n .catch(() => {\n if (!cancelled) {\n setQrGenFailed(true);\n setQrDataUrl(null);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [qrUrl]);\n\n const showQr = Boolean(qrUrl && sessionKey);\n /** Keep pill visible for the whole open session so region toggles do not collapse the modal. */\n const showRegionSwitch = open;\n /** True until the first QR session is ready (covers first paint before useEffect + region switches). */\n const qrFrameLoading = open && !error && !showQr;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 max-h-[min(90vh,52rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 z-20 rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n aria-label={ch.feishuQrCloseAria}\n >\n <X className=\"size-4\" />\n </button>\n </Dialog.Close>\n\n <Dialog.Title className=\"sr-only\">{ch.feishuQrModalTitle}</Dialog.Title>\n <Dialog.Description className=\"sr-only\">{ch.feishuQrModalSubtitle}</Dialog.Description>\n\n <div className=\"text-center\">\n <p className=\"text-lg font-semibold tracking-tight text-fg\">{ch.feishuQrModalTitle}</p>\n <p className=\"mt-1.5 text-sm text-fg-muted\">{ch.feishuQrModalSubtitle}</p>\n </div>\n\n <div className=\"mt-6 flex min-h-[17.5rem] flex-col items-center justify-center gap-3\">\n {error ? (\n <p className=\"text-center text-sm text-red-600 dark:text-red-400\">{error}</p>\n ) : null}\n\n {!error && (showQr || qrFrameLoading) ? (\n <div className=\"flex w-full flex-col items-center gap-3\">\n <p className=\"text-sm text-fg-muted\">\n {qrFrameLoading ? ch.feishuQrStarting : ch.feishuQrScanHint}\n </p>\n <div\n className={cn(\n 'relative flex size-52 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-edge-subtle bg-white p-3 dark:border-edge',\n qrFrameLoading && 'bg-surface-muted/40 dark:bg-surface-base',\n )}\n >\n {qrFrameLoading ? (\n <div\n className=\"absolute inset-3 animate-pulse rounded-md bg-surface-muted dark:bg-surface-hover\"\n aria-hidden\n />\n ) : null}\n {showQr && qrUrl && !error && qrDataUrl && !qrGenFailed ? (\n <img src={qrDataUrl} alt=\"\" className=\"relative z-[1] size-full object-contain\" />\n ) : null}\n {showQr && qrUrl && !error && !qrDataUrl && !qrGenFailed && !qrFrameLoading ? (\n <p className=\"relative z-[1] px-2 text-center text-sm text-fg-muted\">{ch.feishuQrEncoding}</p>\n ) : null}\n {showQr && qrUrl && !error && qrGenFailed ? (\n <div className=\"relative z-[1] flex size-full flex-col items-center justify-center gap-2 px-1\">\n <p className=\"text-center text-xs text-fg-muted\">{ch.feishuQrImageError}</p>\n <a\n href={qrUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 text-xs text-accent underline-offset-2 hover:underline\"\n >\n <ExternalLink className=\"size-3 shrink-0\" />\n {ch.feishuQrOpenLink}\n </a>\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n\n {showRegionSwitch ? (\n <div\n className=\"mx-auto mt-4 flex w-full max-w-[20rem] justify-center px-1\"\n role=\"group\"\n aria-label={ch.feishuRegionSwitchAria}\n >\n <div className=\"inline-flex w-full rounded-full border border-edge bg-surface-muted/60 p-1 dark:border-edge dark:bg-surface-base\">\n <button\n type=\"button\"\n disabled={busy}\n className={cn(\n 'min-w-0 flex-1 rounded-full px-3 py-2 text-center text-sm font-medium transition-colors',\n domain === 'feishu'\n ? 'bg-surface-panel text-fg shadow-sm dark:bg-surface-panel'\n : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => void startScan('feishu')}\n >\n {ch.feishuRegionChina}\n </button>\n <button\n type=\"button\"\n disabled={busy}\n className={cn(\n 'min-w-0 flex-1 rounded-full px-3 py-2 text-center text-sm font-medium transition-colors',\n domain === 'lark'\n ? 'bg-surface-panel text-fg shadow-sm dark:bg-surface-panel'\n : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => void startScan('lark')}\n >\n {ch.feishuRegionInternational}\n </button>\n </div>\n </div>\n ) : null}\n\n <div className=\"mt-6\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-11 w-full rounded-full border-0 bg-fg text-surface-panel hover:opacity-90 dark:bg-fg dark:text-surface-panel\"\n disabled={busy}\n onClick={() => void startScan(domain)}\n >\n {busy ? ch.feishuQrStarting : ch.feishuQrRegenerate}\n </Button>\n </div>\n\n {moreSettings ? (\n <div className=\"mt-6 border-t border-edge-subtle pt-4 dark:border-edge-subtle\">{moreSettings}</div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type {\n ChannelsSettingsState,\n DmPolicy,\n GroupPolicy,\n ReplyToMode,\n StreamMode,\n} from '@/features/settings/channels-config-api';\nimport { cn } from '@/lib/cn';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\n\nimport { FieldHint, FieldLabel, SelectField } from './field-primitives';\nimport { channelsInputClassName, joinAllowFrom, parseIdList } from './utils';\n\nexport function TelegramAdvanced({\n tg,\n updateTelegram,\n ch,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n onTgAccountsBlur,\n}: {\n tg: ChannelsSettingsState['telegram'];\n updateTelegram: (p: Partial<ChannelsSettingsState['telegram']>) => void;\n ch: ChannelsSettingsMessages;\n dmOpts: { value: DmPolicy; label: string }[];\n groupOpts: { value: GroupPolicy; label: string }[];\n replyOpts: { value: ReplyToMode; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n tgAccountsDraft: string;\n setTgAccountsDraft: (s: string) => void;\n tgAccountsError: string;\n onTgAccountsBlur: () => void;\n}) {\n const inputClassName = channelsInputClassName;\n return (\n <div className=\"space-y-4 border-t border-edge-subtle pt-4 dark:border-edge\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.apiRoot}</FieldLabel>\n <input\n className={inputClassName()}\n value={tg.apiRoot}\n onChange={(e) => updateTelegram({ apiRoot: e.target.value })}\n placeholder=\"https://api.telegram.org\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.proxy}</FieldLabel>\n <input\n className={inputClassName()}\n value={tg.proxy}\n onChange={(e) => updateTelegram({ proxy: e.target.value })}\n placeholder=\"http://proxy.example.com:8080\"\n />\n </div>\n <SelectField label={ch.dmPolicy} value={tg.dmPolicy} onChange={(v) => updateTelegram({ dmPolicy: v })} options={dmOpts} />\n <SelectField\n label={ch.groupPolicy}\n value={tg.groupPolicy}\n onChange={(v) => updateTelegram({ groupPolicy: v })}\n options={groupOpts}\n />\n <SelectField\n label={ch.replyToMode}\n value={tg.replyToMode}\n onChange={(v) => updateTelegram({ replyToMode: v })}\n options={replyOpts}\n />\n <SelectField\n label={ch.streamMode}\n value={tg.streamMode}\n onChange={(v) => updateTelegram({ streamMode: v })}\n options={streamOpts}\n />\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromGroups}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"-1001234567890\"\n value={joinAllowFrom(tg.groupAllowFrom)}\n onChange={(e) => updateTelegram({ groupAllowFrom: parseIdList(e.target.value) })}\n />\n </div>\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.historyLimit}</FieldLabel>\n <input\n type=\"number\"\n min={10}\n max={200}\n className={inputClassName()}\n value={tg.historyLimit}\n onChange={(e) => updateTelegram({ historyLimit: parseInt(e.target.value, 10) || 50 })}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.textChunkLimit}</FieldLabel>\n <input\n type=\"number\"\n min={1000}\n max={10000}\n step={100}\n className={inputClassName()}\n value={tg.textChunkLimit}\n onChange={(e) => updateTelegram({ textChunkLimit: parseInt(e.target.value, 10) || 4000 })}\n />\n </div>\n </div>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={tg.debug}\n onChange={(e) => updateTelegram({ debug: e.target.checked })}\n />\n {ch.telegramDebug}\n </label>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.multiAccountJson}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n spellCheck={false}\n value={tgAccountsDraft}\n onChange={(e) => setTgAccountsDraft(e.target.value)}\n onBlur={onTgAccountsBlur}\n placeholder='{ \"personal\": { \"accountId\": \"personal\", \"botToken\": \"...\", ... } }'\n />\n {tgAccountsError ? (\n <p className=\"text-xs text-red-600 dark:text-red-400\">{tgAccountsError}</p>\n ) : (\n <FieldHint>{ch.multiAccountJsonDesc}</FieldHint>\n )}\n </div>\n </div>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { Check, ChevronDown, Copy, Eye, EyeOff, X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentsPayload } from '@/features/chat/chat-agents-api';\nimport { telegramRoutingAccountIds } from '@/features/settings/channel-bindings-merge';\nimport {\n emptyTelegramAccount,\n type ChannelsSettingsState,\n type DmPolicy,\n type GroupPolicy,\n type ReplyToMode,\n type StreamMode,\n} from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\nimport { ChannelAgentRoutingBlock } from './channel-agent-routing-block';\nimport { FieldHint, FieldLabel } from './field-primitives';\nimport { TelegramAdvanced } from './telegram-advanced';\nimport { channelsInputClassName, joinAllowFrom, parseIdList, telegramDefaultBotToken } from './utils';\n\nexport function TelegramChannelSettingsDialog({\n open,\n onOpenChange,\n ch,\n form,\n baseline,\n tgAdvanced,\n setTgAdvanced,\n showToken,\n setShowToken,\n copied,\n copyToken,\n updateTelegram,\n updateChannelAgentRoute,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n onTgAccountsBlur,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n chatAgents,\n saving,\n dirty,\n save,\n discard,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n form: ChannelsSettingsState;\n baseline: ChannelsSettingsState | null;\n tgAdvanced: boolean;\n setTgAdvanced: (v: boolean | ((b: boolean) => boolean)) => void;\n showToken: boolean;\n setShowToken: (v: boolean | ((b: boolean) => boolean)) => void;\n copied: boolean;\n copyToken: () => Promise<void>;\n updateTelegram: (patch: Partial<ChannelsSettingsState['telegram']>) => void;\n updateChannelAgentRoute: (channel: 'telegram', accountId: string, agentId: string) => void;\n tgAccountsDraft: string;\n setTgAccountsDraft: (s: string) => void;\n tgAccountsError: string;\n onTgAccountsBlur: () => void;\n dmOpts: { value: DmPolicy; label: string }[];\n groupOpts: { value: GroupPolicy; label: string }[];\n replyOpts: { value: ReplyToMode; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n chatAgents: ChatAgentsPayload | undefined;\n saving: boolean;\n dirty: boolean;\n save: () => Promise<boolean>;\n discard: () => void;\n}) {\n const inputClassName = channelsInputClassName;\n const tg = form.telegram;\n const tgBaselineToken = baseline ? telegramDefaultBotToken(baseline.telegram) : '';\n const tgToken = telegramDefaultBotToken(tg);\n const telegramTokenDisplayLocked =\n !showToken && Boolean(String(tgBaselineToken).trim()) && tgToken === tgBaselineToken;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 max-h-[min(90vh,48rem)] w-[min(100%-2rem,36rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <Dialog.Title className=\"text-lg font-semibold tracking-tight text-fg\">{ch.telegramTitle}</Dialog.Title>\n <Dialog.Description className=\"mt-1 text-sm text-fg-muted\">{ch.telegramSubtitle}</Dialog.Description>\n </div>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className=\"rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n aria-label={ch.modalCancel}\n >\n <X className=\"size-4\" />\n </button>\n </Dialog.Close>\n </div>\n\n <label className=\"mt-6 flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={tg.enabled}\n onChange={(e) => updateTelegram({ enabled: e.target.checked })}\n />\n <span>{ch.enableTelegramAria}</span>\n </label>\n\n <div className=\"mt-6 space-y-4\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>\n {ch.telegramToken}\n <span className=\"text-red-600 dark:text-red-400\"> *</span>\n </FieldLabel>\n <div className=\"flex flex-wrap gap-2\">\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showToken ? 'text' : 'password'}\n autoComplete=\"off\"\n readOnly={telegramTokenDisplayLocked}\n value={\n telegramTokenDisplayLocked\n ? '*'.repeat(Math.max(1, tgBaselineToken.length))\n : tgToken\n }\n onChange={(e) => {\n if (telegramTokenDisplayLocked) return;\n const prev = tg.accounts?.default ?? emptyTelegramAccount('default');\n updateTelegram({\n accounts: {\n ...tg.accounts,\n default: { ...prev, accountId: 'default', botToken: e.target.value },\n },\n });\n }}\n placeholder=\"123456789:ABCdefGHIjklMNOpqrsTUVwxyz\"\n />\n {tgToken ? (\n <Button type=\"button\" variant=\"secondary\" className=\"px-2 py-1 text-xs\" onClick={() => void copyToken()}>\n {copied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {copied ? ch.copied : ch.copy}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => setShowToken((s) => !s)}\n >\n {showToken ? <EyeOff className=\"size-3.5\" /> : <Eye className=\"size-3.5\" />}\n {showToken ? ch.hide : ch.show}\n </Button>\n </div>\n <FieldHint>{ch.telegramTokenDesc}</FieldHint>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromDm}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"123456789, 987654321\"\n value={joinAllowFrom(tg.allowFrom)}\n onChange={(e) => updateTelegram({ allowFrom: parseIdList(e.target.value) })}\n />\n <FieldHint>{ch.allowFromDmDesc}</FieldHint>\n </div>\n\n <ChannelAgentRoutingBlock\n accountIds={telegramRoutingAccountIds(tg)}\n routes={form.channelAgentRoutes.telegram}\n defaultAgentId={form.defaultAgentId}\n agentItems={chatAgents?.items ?? []}\n disabled={saving}\n onChange={(acc, aid) => updateChannelAgentRoute('telegram', acc, aid)}\n ch={ch}\n />\n\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"-ml-2 h-auto justify-start px-2 py-1 text-sm text-fg-muted hover:text-fg\"\n onClick={() => setTgAdvanced((a) => !a)}\n >\n <ChevronDown className={cn('mr-1 size-4 transition-transform', tgAdvanced && 'rotate-180')} />\n {tgAdvanced ? ch.advancedHide : ch.advancedShow}\n </Button>\n\n {tgAdvanced ? (\n <TelegramAdvanced\n tg={tg}\n updateTelegram={updateTelegram}\n ch={ch}\n dmOpts={dmOpts}\n groupOpts={groupOpts}\n replyOpts={replyOpts}\n streamOpts={streamOpts}\n tgAccountsDraft={tgAccountsDraft}\n setTgAccountsDraft={setTgAccountsDraft}\n tgAccountsError={tgAccountsError}\n onTgAccountsBlur={onTgAccountsBlur}\n />\n ) : null}\n </div>\n\n <div className=\"mt-8 flex flex-wrap justify-end gap-2 border-t border-edge-subtle pt-4 dark:border-edge-subtle\">\n <Button type=\"button\" variant=\"secondary\" onClick={() => onOpenChange(false)}>\n {ch.modalCancel}\n </Button>\n <Button type=\"button\" variant=\"secondary\" disabled={!dirty || saving} onClick={discard}>\n {ch.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n disabled={!dirty || saving}\n onClick={async () => {\n const ok = await save();\n if (ok) onOpenChange(false);\n }}\n >\n {saving ? ch.saving : ch.save}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR from 'swr';\n\nimport { fetchChatAgents } from '@/features/chat/chat-agents-api';\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n defaultChannelsState,\n normalizeChannelsFromConfig,\n patchChannelsSettings,\n type ChannelsSettingsState,\n type DmPolicy,\n type GroupPolicy,\n type ReplyToMode,\n type StreamMode,\n} from '@/features/settings/channels-config-api';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { telegramDefaultBotToken } from './utils';\n\nexport function useChannelsSettingsPanel() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const ch = m.channelsSettings;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n\n const [form, setForm] = useState<ChannelsSettingsState | null>(null);\n const [baseline, setBaseline] = useState<ChannelsSettingsState | null>(null);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [saveOk, setSaveOk] = useState(false);\n\n const [weixinModalOpen, setWeixinModalOpen] = useState(false);\n const [telegramModalOpen, setTelegramModalOpen] = useState(false);\n const [feishuModalOpen, setFeishuModalOpen] = useState(false);\n const [removeTarget, setRemoveTarget] = useState<'weixin' | 'telegram' | 'feishu' | null>(null);\n const [weixinSuccessBanner, setWeixinSuccessBanner] = useState<string | null>(null);\n const [feishuSetupSuccessBanner, setFeishuSetupSuccessBanner] = useState<string | null>(null);\n const [tgAdvanced, setTgAdvanced] = useState(false);\n const [showToken, setShowToken] = useState(false);\n const [showFeishuSecret, setShowFeishuSecret] = useState(false);\n const [showFeishuWebhookSecrets, setShowFeishuWebhookSecrets] = useState(false);\n const [copied, setCopied] = useState(false);\n const [feishuCopied, setFeishuCopied] = useState(false);\n const [feishuWebhookCopied, setFeishuWebhookCopied] = useState(false);\n\n const [tgAccountsDraft, setTgAccountsDraft] = useState('');\n const [tgAccountsError, setTgAccountsError] = useState('');\n const [wxAccountsDraft, setWxAccountsDraft] = useState('');\n const [wxAccountsError, setWxAccountsError] = useState('');\n const [feishuAccountsDraft, setFeishuAccountsDraft] = useState('');\n const [feishuAccountsError, setFeishuAccountsError] = useState('');\n\n const { data: chatAgents } = useSWR(hasToken ? 'gateway-chat-agents-ch' : null, fetchChatAgents, {\n revalidateOnFocus: false,\n });\n\n const { data: cfgData, error: swrError, isLoading, mutate } = useGatewayConfigSwr(hasToken);\n\n const parsed = useMemo(\n () =>\n cfgData?.payload?.config !== undefined\n ? normalizeChannelsFromConfig(cfgData.payload.config)\n : null,\n [cfgData],\n );\n\n const dirty = useMemo(() => {\n if (!form || !baseline) return false;\n return JSON.stringify(form) !== JSON.stringify(baseline);\n }, [form, baseline]);\n\n useEffect(() => {\n if (!hasToken) {\n setForm(null);\n setBaseline(null);\n return;\n }\n if (parsed === null) return;\n if (!dirty) {\n setForm(parsed);\n setBaseline(structuredClone(parsed));\n setTgAccountsDraft(JSON.stringify(parsed.telegram.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsDraft(JSON.stringify(parsed.weixin.accounts ?? {}, null, 2));\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(parsed.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setSaveOk(false);\n }\n }, [hasToken, parsed, dirty]);\n\n const loading = Boolean(hasToken && isLoading && cfgData === undefined && !swrError);\n const fetchError =\n swrError instanceof Error ? swrError.message : swrError ? String(swrError) : null;\n\n const updateChannelAgentRoute = useCallback(\n (channel: 'telegram' | 'weixin' | 'feishu', accountId: string, agentId: string) => {\n setForm((f) => {\n if (!f) return null;\n const k = channel === 'telegram' ? 'telegram' : channel === 'weixin' ? 'weixin' : 'feishu';\n return {\n ...f,\n channelAgentRoutes: {\n ...f.channelAgentRoutes,\n [k]: { ...f.channelAgentRoutes[k], [accountId]: agentId.trim().toLowerCase() },\n },\n };\n });\n },\n [],\n );\n\n const updateTelegram = useCallback((patch: Partial<ChannelsSettingsState['telegram']>) => {\n setForm((f) => (f ? { ...f, telegram: { ...f.telegram, ...patch } } : null));\n }, []);\n\n const updateWeixin = useCallback((patch: Partial<ChannelsSettingsState['weixin']>) => {\n setForm((f) => (f ? { ...f, weixin: { ...f.weixin, ...patch } } : null));\n }, []);\n\n const updateFeishu = useCallback((patch: Partial<ChannelsSettingsState['feishu']>) => {\n setForm((f) => (f ? { ...f, feishu: { ...f.feishu, ...patch } } : null));\n }, []);\n\n const save = useCallback(async (): Promise<boolean> => {\n if (!form || saving) return false;\n setSaving(true);\n setError(null);\n setSaveOk(false);\n try {\n const next = await patchChannelsSettings(form);\n setForm(next);\n const baselineClone = structuredClone(next);\n setBaseline(baselineClone);\n setTgAccountsDraft(JSON.stringify(baselineClone.telegram.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsDraft(JSON.stringify(baselineClone.weixin.accounts ?? {}, null, 2));\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(baselineClone.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setSaveOk(true);\n window.setTimeout(() => setSaveOk(false), 2500);\n return true;\n } catch (e) {\n setError(e instanceof Error ? e.message : ch.saveError);\n return false;\n } finally {\n setSaving(false);\n }\n }, [form, saving, ch.saveError]);\n\n const discard = useCallback(() => {\n if (!baseline) return;\n const b = structuredClone(baseline);\n setForm(b);\n setTgAccountsDraft(JSON.stringify(b.telegram.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsDraft(JSON.stringify(b.weixin.accounts ?? {}, null, 2));\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(b.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setError(null);\n setSaveOk(false);\n }, [baseline]);\n\n const toggleChannelEnabled = useCallback(\n async (which: 'weixin' | 'telegram' | 'feishu', enabled: boolean) => {\n if (!form || saving) return;\n const prev = form;\n const next: ChannelsSettingsState =\n which === 'weixin'\n ? { ...form, weixin: { ...form.weixin, enabled } }\n : which === 'telegram'\n ? { ...form, telegram: { ...form.telegram, enabled } }\n : { ...form, feishu: { ...form.feishu, enabled } };\n setForm(next);\n setSaving(true);\n setError(null);\n try {\n const synced = await patchChannelsSettings(next);\n setForm(synced);\n const baselineClone = structuredClone(synced);\n setBaseline(baselineClone);\n setTgAccountsDraft(JSON.stringify(baselineClone.telegram.accounts ?? {}, null, 2));\n setWxAccountsDraft(JSON.stringify(baselineClone.weixin.accounts ?? {}, null, 2));\n setFeishuAccountsDraft(JSON.stringify(baselineClone.feishu?.accounts ?? {}, null, 2));\n } catch (e) {\n setError(e instanceof Error ? e.message : ch.saveError);\n setForm(prev);\n } finally {\n setSaving(false);\n }\n },\n [form, saving, ch.saveError],\n );\n\n const removeChannel = useCallback(async () => {\n if (!form || !removeTarget || saving) return;\n const defaults = defaultChannelsState();\n const next: ChannelsSettingsState =\n removeTarget === 'weixin'\n ? { ...form, weixin: defaults.weixin }\n : removeTarget === 'telegram'\n ? { ...form, telegram: defaults.telegram }\n : { ...form, feishu: defaults.feishu };\n setSaving(true);\n setError(null);\n try {\n const synced = await patchChannelsSettings(next);\n setForm(synced);\n const baselineClone = structuredClone(synced);\n setBaseline(baselineClone);\n setTgAccountsDraft(JSON.stringify(baselineClone.telegram.accounts ?? {}, null, 2));\n setWxAccountsDraft(JSON.stringify(baselineClone.weixin.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(baselineClone.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setRemoveTarget(null);\n setSaveOk(true);\n window.setTimeout(() => setSaveOk(false), 2500);\n } catch (e) {\n setError(e instanceof Error ? e.message : ch.saveError);\n } finally {\n setSaving(false);\n }\n }, [form, removeTarget, saving, ch.saveError]);\n\n const copyToken = useCallback(async () => {\n const t = form ? telegramDefaultBotToken(form.telegram) : '';\n if (!t) return;\n await navigator.clipboard.writeText(t).catch(() => {});\n setCopied(true);\n window.setTimeout(() => setCopied(false), 2000);\n }, [form]);\n\n const handleFeishuQrSetupSuccess = useCallback(\n (result: { appId: string; domain: string; openId?: string }) => {\n updateFeishu({\n appId: result.appId,\n domain: result.domain,\n enabled: true,\n });\n void mutate();\n setFeishuSetupSuccessBanner(ch.feishuQrSetupSuccess);\n window.setTimeout(() => setFeishuSetupSuccessBanner(null), 4000);\n },\n [updateFeishu, mutate, ch.feishuQrSetupSuccess],\n );\n\n const copyFeishuSecret = useCallback(async () => {\n const t = form?.feishu?.appSecret;\n if (!t) return;\n await navigator.clipboard.writeText(t).catch(() => {});\n setFeishuCopied(true);\n window.setTimeout(() => setFeishuCopied(false), 2000);\n }, [form]);\n\n const copyFeishuWebhookConfig = useCallback(async () => {\n const fs = form?.feishu;\n if (!fs) return;\n const payload = {\n connectionMode: fs.connectionMode,\n verificationToken: fs.verificationToken || '',\n encryptKey: fs.encryptKey || '',\n webhookHost: fs.webhookHost || '',\n webhookPort: fs.webhookPort || 0,\n webhookPath: fs.webhookPath || '',\n };\n await navigator.clipboard.writeText(JSON.stringify(payload, null, 2)).catch(() => {});\n setFeishuWebhookCopied(true);\n window.setTimeout(() => setFeishuWebhookCopied(false), 2000);\n }, [form]);\n\n const onTgAccountsBlur = useCallback(() => {\n if (!form) return;\n const raw = tgAccountsDraft.trim();\n if (!raw) {\n updateTelegram({ accounts: {} });\n setTgAccountsError('');\n return;\n }\n try {\n const parsedJson = JSON.parse(raw) as unknown;\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) {\n throw new Error(ch.jsonObjectAccounts);\n }\n updateTelegram({ accounts: parsedJson as ChannelsSettingsState['telegram']['accounts'] });\n setTgAccountsError('');\n } catch (err) {\n setTgAccountsError(err instanceof Error ? err.message : ch.jsonInvalid);\n }\n }, [form, tgAccountsDraft, updateTelegram, ch.jsonObjectAccounts, ch.jsonInvalid]);\n\n const onWxAccountsBlur = useCallback(() => {\n if (!form) return;\n const raw = wxAccountsDraft.trim();\n if (!raw) {\n updateWeixin({ accounts: {} });\n setWxAccountsError('');\n return;\n }\n try {\n const parsedJson = JSON.parse(raw) as unknown;\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) {\n throw new Error(ch.jsonObjectAccounts);\n }\n updateWeixin({ accounts: parsedJson as ChannelsSettingsState['weixin']['accounts'] });\n setWxAccountsError('');\n } catch (err) {\n setWxAccountsError(err instanceof Error ? err.message : ch.jsonInvalid);\n }\n }, [form, wxAccountsDraft, updateWeixin, ch.jsonObjectAccounts, ch.jsonInvalid]);\n\n const onFeishuAccountsBlur = useCallback(() => {\n if (!form) return;\n const raw = feishuAccountsDraft.trim();\n if (!raw) {\n updateFeishu({ accounts: {} });\n setFeishuAccountsError('');\n return;\n }\n try {\n const parsedJson = JSON.parse(raw) as unknown;\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) {\n throw new Error(ch.jsonObjectAccounts);\n }\n updateFeishu({ accounts: parsedJson as ChannelsSettingsState['feishu']['accounts'] });\n setFeishuAccountsError('');\n } catch (err) {\n setFeishuAccountsError(err instanceof Error ? err.message : ch.jsonInvalid);\n }\n }, [form, feishuAccountsDraft, updateFeishu, ch.jsonObjectAccounts, ch.jsonInvalid]);\n\n const dmOpts = useMemo(\n () =>\n (['pairing', 'allowlist', 'open', 'disabled'] as DmPolicy[]).map((value) => ({\n value,\n label: ch.policy.dm[value],\n })),\n [ch.policy.dm],\n );\n\n const groupOpts = useMemo(\n () =>\n (['open', 'disabled', 'allowlist'] as GroupPolicy[]).map((value) => ({\n value,\n label: ch.policy.group[value],\n })),\n [ch.policy.group],\n );\n\n const replyOpts = useMemo(\n () =>\n (['off', 'first', 'all'] as ReplyToMode[]).map((value) => ({\n value,\n label: ch.policy.reply[value],\n })),\n [ch.policy.reply],\n );\n\n const streamOpts = useMemo(\n () =>\n (['off', 'partial', 'block'] as StreamMode[]).map((value) => ({\n value,\n label: ch.policy.stream[value],\n })),\n [ch.policy.stream],\n );\n\n return {\n language,\n m,\n ch,\n hasToken,\n loading,\n fetchError,\n mutate,\n form,\n baseline,\n dirty,\n saving,\n error,\n saveOk,\n weixinModalOpen,\n setWeixinModalOpen,\n telegramModalOpen,\n setTelegramModalOpen,\n feishuModalOpen,\n setFeishuModalOpen,\n removeTarget,\n setRemoveTarget,\n weixinSuccessBanner,\n setWeixinSuccessBanner,\n feishuSetupSuccessBanner,\n tgAdvanced,\n setTgAdvanced,\n showToken,\n setShowToken,\n showFeishuSecret,\n setShowFeishuSecret,\n showFeishuWebhookSecrets,\n setShowFeishuWebhookSecrets,\n copied,\n feishuCopied,\n feishuWebhookCopied,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n feishuAccountsDraft,\n setFeishuAccountsDraft,\n feishuAccountsError,\n chatAgents,\n updateChannelAgentRoute,\n updateTelegram,\n updateWeixin,\n updateFeishu,\n save,\n discard,\n toggleChannelEnabled,\n removeChannel,\n copyToken,\n handleFeishuQrSetupSuccess,\n copyFeishuSecret,\n copyFeishuWebhookConfig,\n onTgAccountsBlur,\n onWxAccountsBlur,\n onFeishuAccountsBlur,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n };\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { ExternalLink, X } from 'lucide-react';\nimport QRCode from 'qrcode';\nimport { useCallback, useEffect, useState, type ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n fetchWeixinGatewayQrLoginStart,\n fetchWeixinGatewayQrLoginStatus,\n} from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\nexport function WeixinQrLoginDialog({\n open,\n onOpenChange,\n ch,\n onLoginSuccess,\n moreSettings,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n onLoginSuccess: () => void | Promise<void>;\n moreSettings?: ReactNode;\n}) {\n const [busy, setBusy] = useState(false);\n const [sessionKey, setSessionKey] = useState<string | null>(null);\n const [qrcodeUrl, setQrcodeUrl] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [hint, setHint] = useState<string | null>(null);\n const [qrDataUrl, setQrDataUrl] = useState<string | null>(null);\n const [qrGenFailed, setQrGenFailed] = useState(false);\n\n const start = useCallback(async () => {\n setError(null);\n setHint(null);\n setSessionKey(null);\n setBusy(true);\n try {\n const r = await fetchWeixinGatewayQrLoginStart();\n setQrcodeUrl(r.qrcodeUrl);\n setSessionKey(r.sessionKey);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'Start failed');\n } finally {\n setBusy(false);\n }\n }, []);\n\n useEffect(() => {\n if (!open) {\n setSessionKey(null);\n setQrcodeUrl(null);\n setError(null);\n setQrDataUrl(null);\n setQrGenFailed(false);\n setHint(null);\n return;\n }\n void start();\n }, [open, start]);\n\n useEffect(() => {\n if (!sessionKey) return;\n let cancelled = false;\n let intervalId: number | undefined;\n\n const poll = async () => {\n try {\n const st = await fetchWeixinGatewayQrLoginStatus(sessionKey);\n if (cancelled) return;\n if (st.phase === 'polling') {\n setQrcodeUrl(st.qrcodeUrl);\n if (st.qrStatus === 'scaned') {\n setHint(ch.weixinQrLoginScanned);\n } else {\n setHint(null);\n }\n return;\n }\n if (st.phase === 'done') {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n intervalId = undefined;\n }\n setSessionKey(null);\n if (st.ok) {\n setQrcodeUrl(null);\n onOpenChange(false);\n await onLoginSuccess();\n } else {\n setError(st.message);\n setQrcodeUrl(null);\n }\n return;\n }\n if (st.phase === 'unknown') {\n setHint(null);\n }\n } catch (e) {\n if (!cancelled) {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n setError(e instanceof Error ? e.message : 'Request failed');\n setSessionKey(null);\n setQrcodeUrl(null);\n }\n }\n };\n\n intervalId = window.setInterval(() => void poll(), 2000);\n void poll();\n return () => {\n cancelled = true;\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n };\n }, [sessionKey, ch.weixinQrLoginScanned, ch.weixinQrLoginSuccess, onLoginSuccess, onOpenChange]);\n\n useEffect(() => {\n if (!qrcodeUrl) {\n setQrDataUrl(null);\n setQrGenFailed(false);\n return;\n }\n let cancelled = false;\n setQrGenFailed(false);\n void QRCode.toDataURL(qrcodeUrl, {\n width: 208,\n margin: 2,\n errorCorrectionLevel: 'M',\n color: { dark: '#000000ff', light: '#ffffffff' },\n })\n .then((url) => {\n if (!cancelled) setQrDataUrl(url);\n })\n .catch(() => {\n if (!cancelled) {\n setQrGenFailed(true);\n setQrDataUrl(null);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [qrcodeUrl]);\n\n const showQr = Boolean(qrcodeUrl && sessionKey);\n /** True while waiting for a new login session (first open, regenerate). Keeps modal height stable. */\n const qrFrameLoading = open && !error && !showQr;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 max-h-[min(90vh,52rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 z-20 rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n aria-label={ch.weixinQrModalCloseAria}\n >\n <X className=\"size-4\" />\n </button>\n </Dialog.Close>\n\n <Dialog.Title className=\"sr-only\">{ch.weixinQrModalTitle}</Dialog.Title>\n <Dialog.Description className=\"sr-only\">{ch.weixinQrModalSubtitle}</Dialog.Description>\n\n <div className=\"text-center\">\n <p className=\"text-lg font-semibold tracking-tight text-fg\">{ch.weixinQrModalTitle}</p>\n <p className=\"mt-1.5 text-sm text-fg-muted\">{ch.weixinQrModalSubtitle}</p>\n </div>\n\n <div className=\"mt-6 flex min-h-[17.5rem] flex-col items-center justify-center gap-3\">\n {error ? <p className=\"text-center text-sm text-red-600 dark:text-red-400\">{error}</p> : null}\n\n {!error && (showQr || qrFrameLoading) ? (\n <div className=\"flex w-full flex-col items-center gap-3\">\n <p\n className={cn(\n 'min-h-[1.25rem] text-center text-sm',\n hint && !qrFrameLoading ? 'text-accent' : 'text-fg-muted',\n )}\n >\n {qrFrameLoading ? ch.weixinQrLoginBusy : hint ?? '\\u00a0'}\n </p>\n <div\n className={cn(\n 'relative flex size-52 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-edge-subtle bg-white p-3 dark:border-edge',\n qrFrameLoading && 'bg-surface-muted/40 dark:bg-surface-base',\n )}\n >\n {qrFrameLoading ? (\n <div\n className=\"absolute inset-3 animate-pulse rounded-md bg-surface-muted dark:bg-surface-hover\"\n aria-hidden\n />\n ) : null}\n {showQr && qrcodeUrl && !error && qrDataUrl && !qrGenFailed ? (\n <img src={qrDataUrl} alt=\"\" className=\"relative z-[1] size-full object-contain\" />\n ) : null}\n {showQr && qrcodeUrl && !error && !qrDataUrl && !qrGenFailed && !qrFrameLoading ? (\n <p className=\"relative z-[1] px-2 text-center text-sm text-fg-muted\">{ch.weixinQrEncoding}</p>\n ) : null}\n {showQr && qrcodeUrl && !error && qrGenFailed ? (\n <div className=\"relative z-[1] flex size-full flex-col items-center justify-center gap-2 px-1\">\n <p className=\"text-center text-xs text-fg-muted\">{ch.weixinQrImageError}</p>\n <a\n href={qrcodeUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 text-xs text-accent underline-offset-2 hover:underline\"\n >\n <ExternalLink className=\"size-3 shrink-0\" />\n {ch.weixinQrOpenLink}\n </a>\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n\n <div className=\"mt-6\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-11 w-full rounded-full border-0 bg-fg text-surface-panel hover:opacity-90 dark:bg-fg dark:text-surface-panel\"\n disabled={busy}\n onClick={() => void start()}\n >\n {busy ? ch.weixinQrLoginBusy : ch.weixinQrRegenerate}\n </Button>\n </div>\n\n {moreSettings ? (\n <div className=\"mt-6 border-t border-edge-subtle pt-4 dark:border-edge-subtle\">{moreSettings}</div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type { ChannelsSettingsState, DmPolicy, StreamMode } from '@/features/settings/channels-config-api';\nimport { weixinRoutingAccountIds } from '@/features/settings/channel-bindings-merge';\nimport { cn } from '@/lib/cn';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\n\nimport { ChannelAgentRoutingBlock } from './channel-agent-routing-block';\nimport { FieldHint, FieldLabel, SelectField } from './field-primitives';\nimport { channelsInputClassName } from './utils';\n\nexport function WeixinAdvanced({\n wx,\n updateWeixin,\n ch,\n dmOpts,\n streamOpts,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n onWxAccountsBlur,\n channelAgentRoutesWx,\n defaultAgentId,\n agentItems,\n onAgentRouteChange,\n routingDisabled,\n}: {\n wx: ChannelsSettingsState['weixin'];\n updateWeixin: (p: Partial<ChannelsSettingsState['weixin']>) => void;\n ch: ChannelsSettingsMessages;\n dmOpts: { value: DmPolicy; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n wxAccountsDraft: string;\n setWxAccountsDraft: (s: string) => void;\n wxAccountsError: string;\n onWxAccountsBlur: () => void;\n channelAgentRoutesWx: Record<string, string>;\n defaultAgentId: string;\n agentItems: { id: string; name?: string }[];\n onAgentRouteChange: (accountId: string, agentId: string) => void;\n routingDisabled: boolean;\n}) {\n const inputClassName = channelsInputClassName;\n return (\n <div className=\"space-y-4 border-t border-edge-subtle pt-4 dark:border-edge\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.weixinAllowFrom}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"wxid_..., openid_...\"\n value={wx.allowFrom.join(', ')}\n onChange={(e) =>\n updateWeixin({\n allowFrom: e.target.value\n .split(/[,\\n]/)\n .map((s) => s.trim())\n .filter(Boolean),\n })\n }\n />\n <FieldHint>{ch.weixinAllowFromDesc}</FieldHint>\n </div>\n <SelectField label={ch.dmPolicy} value={wx.dmPolicy} onChange={(v) => updateWeixin({ dmPolicy: v })} options={dmOpts} />\n <SelectField\n label={ch.streamMode}\n value={wx.streamMode}\n onChange={(v) => updateWeixin({ streamMode: v })}\n options={streamOpts}\n />\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.historyLimit}</FieldLabel>\n <input\n type=\"number\"\n min={10}\n max={200}\n className={inputClassName()}\n value={wx.historyLimit}\n onChange={(e) => updateWeixin({ historyLimit: parseInt(e.target.value, 10) || 50 })}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.textChunkLimit}</FieldLabel>\n <input\n type=\"number\"\n min={1000}\n max={10000}\n step={100}\n className={inputClassName()}\n value={wx.textChunkLimit}\n onChange={(e) => updateWeixin({ textChunkLimit: parseInt(e.target.value, 10) || 4000 })}\n />\n </div>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.weixinRouteTag}</FieldLabel>\n <input\n className={inputClassName()}\n value={wx.routeTag}\n onChange={(e) => updateWeixin({ routeTag: e.target.value })}\n placeholder={ch.routeTagPlaceholder}\n />\n <FieldHint>{ch.weixinRouteTagDesc}</FieldHint>\n </div>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={wx.debug}\n onChange={(e) => updateWeixin({ debug: e.target.checked })}\n />\n {ch.weixinDebug}\n </label>\n <FieldHint>{ch.weixinDebugDesc}</FieldHint>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.weixinAccountsJson}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n spellCheck={false}\n value={wxAccountsDraft}\n onChange={(e) => setWxAccountsDraft(e.target.value)}\n onBlur={onWxAccountsBlur}\n placeholder='{ \"personal\": { \"name\": \"...\", \"cdnBaseUrl\": \"...\", \"enabled\": true } }'\n />\n {wxAccountsError ? (\n <p className=\"text-xs text-red-600 dark:text-red-400\">{wxAccountsError}</p>\n ) : (\n <FieldHint>{ch.weixinAccountsJsonDesc}</FieldHint>\n )}\n </div>\n\n <ChannelAgentRoutingBlock\n accountIds={weixinRoutingAccountIds(wx)}\n routes={channelAgentRoutesWx}\n defaultAgentId={defaultAgentId}\n agentItems={agentItems}\n disabled={routingDisabled}\n onChange={onAgentRouteChange}\n ch={ch}\n />\n </div>\n );\n}\n","import { ChevronDown } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentsPayload } from '@/features/chat/chat-agents-api';\nimport type { ChannelsSettingsState, DmPolicy, StreamMode } from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\n\nimport { WeixinAdvanced } from './weixin-advanced';\n\nexport function WeixinMoreSettingsSection({\n ch,\n wx,\n updateWeixin,\n dmOpts,\n streamOpts,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n onWxAccountsBlur,\n form,\n chatAgents,\n onAgentRouteChange,\n saving,\n dirty,\n save,\n discard,\n}: {\n ch: ChannelsSettingsMessages;\n wx: ChannelsSettingsState['weixin'];\n updateWeixin: (patch: Partial<ChannelsSettingsState['weixin']>) => void;\n dmOpts: { value: DmPolicy; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n wxAccountsDraft: string;\n setWxAccountsDraft: (v: string) => void;\n wxAccountsError: string;\n onWxAccountsBlur: () => void;\n form: ChannelsSettingsState;\n chatAgents: ChatAgentsPayload | undefined;\n onAgentRouteChange: (accountId: string, agentId: string) => void;\n saving: boolean;\n dirty: boolean;\n save: () => Promise<boolean>;\n discard: () => void;\n}) {\n return (\n <details className=\"group rounded-xl border border-edge-subtle bg-surface-base open:pb-3 dark:border-edge\">\n <summary className=\"cursor-pointer list-none rounded-xl px-3 py-2.5 text-sm font-medium text-fg transition-colors hover:bg-surface-hover group-open:rounded-b-none [&::-webkit-details-marker]:hidden\">\n <span className=\"inline-flex items-center gap-2\">\n <ChevronDown className=\"size-4 shrink-0 text-fg-muted transition-transform group-open:rotate-180\" />\n {ch.advancedShow}\n </span>\n </summary>\n <div className=\"space-y-4 border-t border-edge-subtle px-3 pb-3 pt-3 dark:border-edge-subtle\">\n <p className=\"text-xs leading-relaxed text-fg-muted\">{ch.weixinAdvancedHint}</p>\n <label className=\"flex cursor-pointer items-start gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox mt-0.5\"\n checked={wx.enabled}\n onChange={(e) => updateWeixin({ enabled: e.target.checked })}\n />\n <span>{ch.enableWeixinAria}</span>\n </label>\n <div className=\"[&>div]:border-0 [&>div]:pt-0\">\n <WeixinAdvanced\n wx={wx}\n updateWeixin={updateWeixin}\n ch={ch}\n dmOpts={dmOpts}\n streamOpts={streamOpts}\n wxAccountsDraft={wxAccountsDraft}\n setWxAccountsDraft={setWxAccountsDraft}\n wxAccountsError={wxAccountsError}\n onWxAccountsBlur={onWxAccountsBlur}\n channelAgentRoutesWx={form.channelAgentRoutes.weixin}\n defaultAgentId={form.defaultAgentId}\n agentItems={chatAgents?.items ?? []}\n onAgentRouteChange={onAgentRouteChange}\n routingDisabled={saving}\n />\n </div>\n <div className=\"flex flex-col gap-2 sm:flex-row sm:justify-end\">\n <Button type=\"button\" variant=\"secondary\" className=\"w-full sm:w-auto\" disabled={!dirty || saving} onClick={discard}>\n {ch.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"w-full sm:w-auto\"\n disabled={!dirty || saving}\n onClick={async () => {\n await save();\n }}\n >\n {saving ? ch.saving : ch.save}\n </Button>\n </div>\n </div>\n </details>\n );\n}\n","import { ExternalLink, MessageSquare, Send } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { docsGuidePageUrl } from '@/navigation';\n\nimport { ChannelImHubCard } from './channel-im-hub-card';\nimport { ChannelsRemoveChannelDialog } from './channels-remove-channel-dialog';\nimport { FeishuMoreSettingsSection } from './feishu-more-settings-section';\nimport { FeishuQrSetupDialog } from './feishu-qr-setup-dialog';\nimport { TelegramChannelSettingsDialog } from './telegram-channel-settings-dialog';\nimport { useChannelsSettingsPanel } from './use-channels-settings-panel';\nimport { WeixinQrLoginDialog } from './weixin-qr-login-dialog';\nimport { WeixinMoreSettingsSection } from './weixin-more-settings-section';\nimport { isFeishuConfigured, isTelegramConfigured, isWeixinConfigured } from './utils';\n\nexport function ChannelsSettingsPanel() {\n const ctx = useChannelsSettingsPanel();\n const {\n language,\n m,\n ch,\n hasToken,\n loading,\n fetchError,\n mutate,\n form,\n baseline,\n dirty,\n saving,\n error,\n saveOk,\n weixinModalOpen,\n setWeixinModalOpen,\n telegramModalOpen,\n setTelegramModalOpen,\n feishuModalOpen,\n setFeishuModalOpen,\n removeTarget,\n setRemoveTarget,\n weixinSuccessBanner,\n setWeixinSuccessBanner,\n feishuSetupSuccessBanner,\n tgAdvanced,\n setTgAdvanced,\n showToken,\n setShowToken,\n showFeishuSecret,\n setShowFeishuSecret,\n showFeishuWebhookSecrets,\n setShowFeishuWebhookSecrets,\n copied,\n feishuCopied,\n feishuWebhookCopied,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n feishuAccountsDraft,\n setFeishuAccountsDraft,\n feishuAccountsError,\n chatAgents,\n updateChannelAgentRoute,\n updateTelegram,\n updateWeixin,\n updateFeishu,\n save,\n discard,\n toggleChannelEnabled,\n removeChannel,\n copyToken,\n handleFeishuQrSetupSuccess,\n copyFeishuSecret,\n copyFeishuWebhookConfig,\n onTgAccountsBlur,\n onWxAccountsBlur,\n onFeishuAccountsBlur,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n } = ctx;\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{m.settingsSections.channels}</h1>\n <p className=\"text-sm text-fg-muted\">{ch.needToken}</p>\n </div>\n );\n }\n\n if (loading) {\n return (\n <div className=\"mx-auto w-full max-w-app-main px-4 py-8\">\n <div className=\"h-8 w-48 animate-pulse rounded bg-surface-hover\" />\n <div className=\"mt-6 h-32 animate-pulse rounded-xl bg-surface-hover\" />\n <p className=\"mt-4 text-sm text-fg-muted\">{ch.loading}</p>\n </div>\n );\n }\n\n if (!form) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <p className=\"text-sm text-fg-muted\">{error ?? fetchError ?? ch.loadError}</p>\n <Button type=\"button\" variant=\"secondary\" onClick={() => void mutate()}>\n {ch.retry}\n </Button>\n </div>\n );\n }\n\n const wx = form.weixin;\n const tg = form.telegram;\n const fs = form.feishu;\n const weixinConfigured = isWeixinConfigured(wx);\n const telegramConfigured = isTelegramConfigured(tg);\n const feishuConfigured = isFeishuConfigured(fs);\n\n const feishuMoreSettings = (\n <FeishuMoreSettingsSection\n ch={ch}\n form={form}\n baseline={baseline}\n showFeishuSecret={showFeishuSecret}\n setShowFeishuSecret={setShowFeishuSecret}\n showFeishuWebhookSecrets={showFeishuWebhookSecrets}\n setShowFeishuWebhookSecrets={setShowFeishuWebhookSecrets}\n feishuCopied={feishuCopied}\n feishuWebhookCopied={feishuWebhookCopied}\n copyFeishuSecret={copyFeishuSecret}\n copyFeishuWebhookConfig={copyFeishuWebhookConfig}\n updateFeishu={updateFeishu}\n updateChannelAgentRoute={updateChannelAgentRoute}\n feishuAccountsDraft={feishuAccountsDraft}\n setFeishuAccountsDraft={setFeishuAccountsDraft}\n feishuAccountsError={feishuAccountsError}\n onFeishuAccountsBlur={onFeishuAccountsBlur}\n dmOpts={dmOpts}\n groupOpts={groupOpts}\n chatAgents={chatAgents}\n saving={saving}\n dirty={dirty}\n save={save}\n discard={discard}\n />\n );\n\n const weixinMoreSettings = (\n <WeixinMoreSettingsSection\n ch={ch}\n wx={wx}\n updateWeixin={updateWeixin}\n dmOpts={dmOpts}\n streamOpts={streamOpts}\n wxAccountsDraft={wxAccountsDraft}\n setWxAccountsDraft={setWxAccountsDraft}\n wxAccountsError={wxAccountsError}\n onWxAccountsBlur={onWxAccountsBlur}\n form={form}\n chatAgents={chatAgents}\n onAgentRouteChange={(acc, aid) => updateChannelAgentRoute('weixin', acc, aid)}\n saving={saving}\n dirty={dirty}\n save={save}\n discard={discard}\n />\n );\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6\">\n <header className=\"flex flex-col gap-1\">\n <h1 className=\"text-lg font-semibold tracking-tight text-fg\">{m.settingsSections.channels}</h1>\n <p className=\"mt-1 text-sm text-fg-muted\">{ch.subtitle}</p>\n <a\n href={docsGuidePageUrl(language, 'channels')}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"mt-1 inline-flex items-center gap-1 text-sm text-accent hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n >\n {ch.docsLink}\n <ExternalLink className=\"size-3.5\" />\n </a>\n </header>\n\n {dirty ? <p className=\"text-xs text-amber-800 dark:text-amber-200\">{ch.unsavedHint}</p> : null}\n {saveOk ? <p className=\"text-xs text-fg-muted\">{ch.saved}</p> : null}\n {error ? <p className=\"text-sm text-red-600 dark:text-red-400\">{error}</p> : null}\n {weixinSuccessBanner ? <p className=\"text-xs text-accent\">{weixinSuccessBanner}</p> : null}\n {feishuSetupSuccessBanner ? (\n <div className=\"rounded-xl border border-success/30 bg-success-soft px-4 py-3 text-sm text-success\">\n {feishuSetupSuccessBanner}\n </div>\n ) : null}\n\n <div className=\"flex flex-col gap-3\">\n <ChannelImHubCard\n icon={<MessageSquare className=\"size-6 text-accent\" strokeWidth={1.75} />}\n title={ch.weixinTitle}\n subtitle={ch.weixinSubtitle}\n configured={weixinConfigured}\n enabled={wx.enabled}\n toggleDisabled={saving}\n onToggle={(next) => void toggleChannelEnabled('weixin', next)}\n onConfigure={() => setWeixinModalOpen(true)}\n onEdit={() => setWeixinModalOpen(true)}\n onRemove={() => setRemoveTarget('weixin')}\n ch={ch}\n />\n <ChannelImHubCard\n icon={<Send className=\"size-6 text-accent\" strokeWidth={1.75} />}\n title={ch.telegramTitle}\n subtitle={ch.telegramSubtitle}\n configured={telegramConfigured}\n enabled={tg.enabled}\n toggleDisabled={saving}\n onToggle={(next) => void toggleChannelEnabled('telegram', next)}\n onConfigure={() => setTelegramModalOpen(true)}\n onEdit={() => setTelegramModalOpen(true)}\n onRemove={() => setRemoveTarget('telegram')}\n ch={ch}\n />\n <ChannelImHubCard\n icon={<MessageSquare className=\"size-6 text-accent\" strokeWidth={1.75} />}\n title={ch.feishuTitle}\n subtitle={ch.feishuSubtitle}\n configured={feishuConfigured}\n enabled={fs.enabled}\n toggleDisabled={saving}\n onToggle={(next) => void toggleChannelEnabled('feishu', next)}\n onConfigure={() => setFeishuModalOpen(true)}\n onEdit={() => setFeishuModalOpen(true)}\n onRemove={() => setRemoveTarget('feishu')}\n ch={ch}\n />\n </div>\n\n <WeixinQrLoginDialog\n open={weixinModalOpen}\n onOpenChange={setWeixinModalOpen}\n ch={ch}\n onLoginSuccess={async () => {\n await mutate();\n setWeixinSuccessBanner(ch.weixinQrLoginSuccess);\n window.setTimeout(() => setWeixinSuccessBanner(null), 4000);\n }}\n moreSettings={weixinMoreSettings}\n />\n\n <TelegramChannelSettingsDialog\n open={telegramModalOpen}\n onOpenChange={setTelegramModalOpen}\n ch={ch}\n form={form}\n baseline={baseline}\n tgAdvanced={tgAdvanced}\n setTgAdvanced={setTgAdvanced}\n showToken={showToken}\n setShowToken={setShowToken}\n copied={copied}\n copyToken={copyToken}\n updateTelegram={updateTelegram}\n updateChannelAgentRoute={updateChannelAgentRoute}\n tgAccountsDraft={tgAccountsDraft}\n setTgAccountsDraft={setTgAccountsDraft}\n tgAccountsError={tgAccountsError}\n onTgAccountsBlur={onTgAccountsBlur}\n dmOpts={dmOpts}\n groupOpts={groupOpts}\n replyOpts={replyOpts}\n streamOpts={streamOpts}\n chatAgents={chatAgents}\n saving={saving}\n dirty={dirty}\n save={save}\n discard={discard}\n />\n\n <FeishuQrSetupDialog\n open={feishuModalOpen}\n onOpenChange={setFeishuModalOpen}\n ch={ch}\n onSetupSuccess={handleFeishuQrSetupSuccess}\n moreSettings={feishuMoreSettings}\n />\n\n <ChannelsRemoveChannelDialog\n open={removeTarget !== null}\n onOpenChange={(o) => {\n if (!o) setRemoveTarget(null);\n }}\n ch={ch}\n removeTarget={removeTarget}\n onCancel={() => setRemoveTarget(null)}\n saving={saving}\n onConfirmRemove={() => void removeChannel()}\n />\n </div>\n );\n}\n"],"mappings":"6lBAuBA,SAAOuB,EAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,GAAA,CAA0B,CAAAf,OAAAC,QAAAC,WAAAC,aAAAC,UAAAC,WAAAG,iBAAAC,cAAAC,SAAAC,WAAAC,MAAAE,EAYTG,EAAAF,EAAA,KAAAf,EAMViB,EAAAF,EAAA,IAFNE,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,gFAAgF,cAAA,YAC5FjB,EACG,CAAA,CAAAe,EAAA,GAAAf,EAAAe,EAAA,GAAAE,GAAA,IAAAC,EAAAH,EAAA,KAAAd,EAGwDiB,EAAAH,EAAA,IAA1DG,GAAA,EAAA,EAAA,KAAA,KAAA,CAAc,UAAA,yCAAiCjB,EAAW,CAAA,CAAAc,EAAA,GAAAd,EAAAc,EAAA,GAAAG,GAAA,IAAAC,EAAAJ,EAAA,KAAAH,EAAAQ,mBAAAL,EAAA,KAAAZ,GACzDgB,EAAAhB,GACC,EAAA,EAAA,KAAA,OAAA,CAAgB,UAAA,8GACbS,EAAEQ,kBAEC,CAAA,CAJP,KAIOL,EAAA,GAAAH,EAAAQ,kBAAAL,EAAA,GAAAZ,EAAAY,EAAA,GAAAI,GAAAA,EAAAJ,EAAA,GAAA,IAAAM,EAAAN,EAAA,KAAAG,GAAAH,EAAA,KAAAI,GANVE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,6CAAf,CACEH,EACCC,EAKG,GAAAJ,EAAA,GAAAG,EAAAH,EAAA,GAAAI,EAAAJ,EAAA,GAAAM,GAAAA,EAAAN,EAAA,GAAA,IAAAO,EAAAP,EAAA,MAAAb,EACkDoB,EAAAP,EAAA,KAAxDO,GAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,sCAA8BpB,EAAa,CAAA,CAAAa,EAAA,IAAAb,EAAAa,EAAA,IAAAO,GAAA,IAAAC,EAAAR,EAAA,MAAAM,GAAAN,EAAA,MAAAO,GAT1DC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,0BAAf,CACEF,EAQAC,EACI,GAAAP,EAAA,IAAAM,EAAAN,EAAA,IAAAO,EAAAP,EAAA,IAAAQ,GAAAA,EAAAR,EAAA,IAAA,IAAAS,EAAAT,EAAA,MAAAE,GAAAF,EAAA,MAAAQ,GAdRC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iDAAf,CACEP,EAGAM,EAWI,GAAAR,EAAA,IAAAE,EAAAF,EAAA,IAAAQ,EAAAR,EAAA,IAAAS,GAAAA,EAAAT,EAAA,IAAA,IAAAU,EAAAV,EAAA,MAAAH,EAAAc,mBAAAX,EAAA,MAAAH,EAAAe,oBAAAZ,EAAA,MAAAH,EAAAgB,gBAAAb,EAAA,MAAAH,EAAAiB,cAAAd,EAAA,MAAAH,EAAAkB,kBAAAf,EAAA,MAAAZ,GAAAY,EAAA,MAAAX,GAAAW,EAAA,MAAAN,GAAAM,EAAA,MAAAL,GAAAK,EAAA,MAAAJ,GAAAI,EAAA,MAAAV,GAAAU,EAAA,MAAAd,GAAAc,EAAA,MAAAP,GAELiB,EAACtB,GAOA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,2EAAf,EACE,EAAA,EAAA,MAAA,GAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,GAAA,CAAsB,QAAA,aACpB,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,QAAkB,UAAA,sBAAkC,aAAAS,EAAEiB,uBAClF,EAAA,EAAA,KAAC,GAAD,CAA0B,UAAA,uBAAoC,YAAA,KAChE,CAAA,CACF,CAAA,CACA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,UACE,EAAA,EAAA,MAAA,GAAA,CACa,UAAAhC,EACT,mGACAC,EACF,CACY,WAAA,EACN,MAAA,eANR,EAQE,EAAA,EAAA,KAAA,GAAA,CACY,UAAA,8HACA,aAAMY,GAAO,WAEvB,EAAA,EAAA,MAAA,OAAA,CAAgB,UAAA,mCAAhB,EACE,EAAA,EAAA,KAAC,EAAD,CAAkB,UAAA,gCAA6C,YAAA,KAC9D,CAAA,CAAAE,EAAEgB,eAEP,GACA,CAAA,EAAA,EAAA,EAAA,KAAA,GAAA,CACY,UAAA,kIACA,aAAMjB,GAAS,WAEzB,EAAA,EAAA,MAAA,OAAA,CAAgB,UAAA,mCAAhB,EACE,EAAA,EAAA,KAAC,EAAD,CAAkB,UAAA,kBAA+B,YAAA,KAChD,CAAA,CAAAC,EAAEkB,iBAEP,GACF,CAAA,CACF,GACF,CAAA,CACA,CAAA,CAAA,EAAA,EAAA,EAAA,KAAA,SAAA,CACO,KAAA,SACA,KAAA,SACS1B,eAAAA,EACF,aAAA,GAAGH,EAAK,KAAMW,EAAEc,oBAClBlB,SAAAA,EACC,UAAAX,EACT,qGACAO,EAAA,wBAAA,iCACAI,GAAA,gCACF,CACS,YAAM,KAAKH,EAAS,CAACD,EAAO,WAErC,EAAA,EAAA,KAAA,OAAA,CAAgB,UAAA,4FAClB,CAAA,CACF,CAAA,CACD,IA3DC,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,qDACb,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,UAAoB,UAAA,WAAoBK,QAAAA,WACnEG,EAAEe,mBAEP,CAAA,CAuDD,CAAA,CAAAZ,EAAA,IAAAH,EAAAc,kBAAAX,EAAA,IAAAH,EAAAe,mBAAAZ,EAAA,IAAAH,EAAAgB,eAAAb,EAAA,IAAAH,EAAAiB,aAAAd,EAAA,IAAAH,EAAAkB,iBAAAf,EAAA,IAAAZ,EAAAY,EAAA,IAAAX,EAAAW,EAAA,IAAAN,EAAAM,EAAA,IAAAL,EAAAK,EAAA,IAAAJ,EAAAI,EAAA,IAAAV,EAAAU,EAAA,IAAAd,EAAAc,EAAA,IAAAP,EAAAO,EAAA,IAAAU,GAAAA,EAAAV,EAAA,IAAA,IAAAgB,EACG,OADHhB,EAAA,MAAAS,GAAAT,EAAA,MAAAU,GA9EHM,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,wIAAf,CACEP,EAiBCC,EA6DG,GAAAV,EAAA,IAAAS,EAAAT,EAAA,IAAAU,EAAAV,EAAA,IAAAgB,GAAAA,EAAAhB,EAAA,IA/ENgB,EC9BJ,SAAOO,EAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,GAAA,CAAqC,CAAAE,OAAAC,eAAAC,KAAAC,eAAAC,WAAAC,SAAAC,mBAAAT,EAgB3CU,EAAAT,EAAA,KAAAU,OAAAC,IAAA,4BAAA,EAIOF,GAAA,EAAA,EAAA,KAAA,EAAA,CACa,UAAAd,EACT,iEACAE,EACF,CACA,CAAA,CAAAG,EAAA,GAAAS,GAAAA,EAAAT,EAAA,GAAA,IAAAY,EAAAZ,EAAA,KAAAU,OAAAC,IAAA,4BAAA,EAEWC,EAAAjB,EACT,oFACAC,EACA,mGACD,CAAAI,EAAA,GAAAY,GAAAA,EAAAZ,EAAA,GAAA,IAAAa,EAAAb,EAAA,KAAAI,EAAAU,mBAG+FD,EAAAb,EAAA,IAAhGa,GAAA,EAAA,EAAA,KAAA,EAAA,CAAwB,UAAA,2CAAmCT,EAAEU,mBAAmC,CAAA,CAAAd,EAAA,GAAAI,EAAAU,mBAAAd,EAAA,GAAAa,GAAA,IAAAE,EAAAf,EAAA,KAAAI,EAAAY,aAAAhB,EAAA,KAAAI,EAAAa,sBAAAjB,EAAA,KAAAI,EAAAc,eAAAlB,EAAA,KAAAI,EAAAe,aAAAnB,EAAA,KAAAK,GAE7FU,EAAAV,EACGD,EAAEa,qBAAqBG,QACrB,WACAf,IAAiB,SACbD,EAAEe,YACFd,IAAiB,WACfD,EAAEc,cACFd,EAAEY,YAEF,CATX,OASWhB,EAAA,GAAAI,EAAAY,YAAAhB,EAAA,GAAAI,EAAAa,qBAAAjB,EAAA,GAAAI,EAAAc,cAAAlB,EAAA,GAAAI,EAAAe,YAAAnB,EAAA,GAAAK,EAAAL,EAAA,GAAAe,GAAAA,EAAAf,EAAA,GAAA,IAAAqB,EAAArB,EAAA,MAAAe,EACOM,EAAArB,EAAA,KAXrBqB,GAAA,EAAA,EAAA,KAAA,EAAA,CAA8B,UAAA,sCAC3BN,EAUkB,CAAA,CAAAf,EAAA,IAAAe,EAAAf,EAAA,IAAAqB,GAAA,IAAAC,EAAAtB,EAAA,MAAAI,EAAAmB,aAAAvB,EAAA,MAAAM,GAEnBgB,GAAA,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAqBhB,QAAAA,WAChDF,EAAEmB,YACI,CAAA,CAAAvB,EAAA,IAAAI,EAAAmB,YAAAvB,EAAA,IAAAM,EAAAN,EAAA,IAAAsB,GAAAA,EAAAtB,EAAA,IAQN,IAAAwB,EAAAjB,EAASH,EAAEG,OAAUH,EAAEqB,oBAAoBC,EAAA1B,EAAA,MAAAQ,GAAAR,EAAA,MAAAO,GAAAP,EAAA,MAAAwB,GAP9CE,GAAA,EAAA,EAAA,KAAC,EAAD,CACO,KAAA,SACG,QAAA,YACE,UAAA,iFACAnB,SAAAA,EACDC,QAAAA,WAERgB,EACM,CAAA,CAAAxB,EAAA,IAAAQ,EAAAR,EAAA,IAAAO,EAAAP,EAAA,IAAAwB,EAAAxB,EAAA,IAAA0B,GAAAA,EAAA1B,EAAA,IAAA,IAAA2B,EAAA3B,EAAA,MAAAsB,GAAAtB,EAAA,MAAA0B,GAZXC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,uCAAf,CACEL,EAGAI,EASI,GAAA1B,EAAA,IAAAsB,EAAAtB,EAAA,IAAA0B,EAAA1B,EAAA,IAAA2B,GAAAA,EAAA3B,EAAA,IAAA,IAAA4B,EAAA5B,EAAA,MAAAa,GAAAb,EAAA,MAAAqB,GAAArB,EAAA,MAAA2B,GAzCVC,GAAA,EAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CACEnB,GAMA,EAAA,EAAA,MAAA,EAAA,CACa,UAAAG,EAKM,gBAAAiB,YANnB,CAQEhB,EACAQ,EAYAM,EAeJ,GAAgB,CAAA,CAAA,CAAA3B,EAAA,IAAAa,EAAAb,EAAA,IAAAqB,EAAArB,EAAA,IAAA2B,EAAA3B,EAAA,IAAA4B,GAAAA,EAAA5B,EAAA,IAAA,IAAA8B,EACJ,OADI9B,EAAA,MAAAG,GAAAH,EAAA,MAAAE,GAAAF,EAAA,MAAA4B,GA5ClBE,GAAA,EAAA,EAAA,KAAA,EAAA,CAAmB5B,OAAoBC,wBACrCyB,EA4CY,CAAA,CAAA5B,EAAA,IAAAG,EAAAH,EAAA,IAAAE,EAAAF,EAAA,IAAA4B,EAAA5B,EAAA,IAAA8B,GAAAA,EAAA9B,EAAA,IA7Cd8B,EAlBG,SAAAD,GAAAE,EAAA,CAAA,OAgC2BA,EAACC,gBAAiB,CC9BpD,SAASG,EAAQC,EAA+B,CAC9C,OAAQA,GAAK,IAAIC,MAAM,CAACC,aAAa,CAGvC,SAAgBC,EAAwBC,EAA6B,CACnE,IAAMC,EAAID,EAAEE,MAIZ,MADA,EAFI,CAACD,GAAGE,SAAW,CAACF,EAAEG,WAClBH,EAAEI,QAAUJ,EAAEK,UAAYL,EAAEM,SAAWN,EAAEO,QACzCP,EAAEQ,eAAiBR,EAAEQ,cAAcC,OAAS,GAKlD,SAAgBC,EAA0BC,EAAsD,CAC9F,OAAOG,OAAOC,KAAKJ,EAAGC,UAAY,EAAE,CAAC,CAACI,MAAM,CAG9C,SAAgBC,GAAwBC,EAAsD,CAC5F,OAAOJ,OAAOC,KAAKG,EAAGN,UAAY,EAAE,CAAC,CAACI,MAAM,CAG9C,SAAgBG,EAAwBC,EAA0F,CAChI,IAAML,EAAOD,OAAOC,KAAKK,EAAGR,UAAY,EAAE,CAAC,CAK3C,OAJIG,EAAKN,OAAS,EAAU,CAAC,GAAGM,EAAK,CAACC,MAAM,CACxC,OAAOI,EAAGC,OAAU,UAAYD,EAAGC,MAAMzB,MAAM,EAAI,OAAOwB,EAAGE,WAAc,UAAYF,EAAGE,UAAU1B,MAAM,CACrG,CAAC,UAAU,CAEb,EAAE,CAGX,SAAgB2B,EACdC,EACAC,EACAC,EACAC,EACAC,EACyB,CACzB,IAAMC,EAAmC,EAAE,CACrCC,EAAiC,EAAE,CACnCC,EAAiC,EAAE,CAEzC,IAAK,IAAMC,KAAMP,EAOfI,EAASG,IANIR,EAASU,KACnBnC,GACCL,EAAQK,EAAEE,OAAOC,QAAQ,GAAK,YAC9BR,EAAQK,EAAEE,OAAOE,UAAU,GAAKT,EAAQsC,EAAG,EAC3ClC,EAAwBC,EAC5B,CACgBkC,EAAME,SAAWP,GAAgBhC,MAAM,CAACC,aAAa,CAEvE,IAAK,IAAMmC,KAAMN,EAOfI,EAAOE,IANMR,EAASU,KACnBnC,GACCL,EAAQK,EAAEE,OAAOC,QAAQ,GAAK,UAC9BR,EAAQK,EAAEE,OAAOE,UAAU,GAAKT,EAAQsC,EAAG,EAC3ClC,EAAwBC,EAC5B,CACckC,EAAME,SAAWP,GAAgBhC,MAAM,CAACC,aAAa,CAGrE,IAAK,IAAMmC,KAAML,EAOfI,EAAOC,IANMR,EAASU,KACnBnC,GACCL,EAAQK,EAAEE,OAAOC,QAAQ,GAAK,UAC9BR,EAAQK,EAAEE,OAAOE,UAAU,GAAKT,EAAQsC,EAAG,EAC3ClC,EAAwBC,EAC5B,CACckC,EAAME,SAAWP,GAAgBhC,MAAM,CAACC,aAAa,CAGrE,MAAO,CAAEgC,WAAUC,SAAQC,SAAQ,CAGrC,SAAgBK,EACdC,EACAC,EACAb,EACAC,EACAC,EACAC,EACmB,CACnB,IAAMW,EAAQ,IAAIC,IAAIf,EAAmBgB,IAAI/C,EAAQ,CAAC,CAChDgD,EAAQ,IAAIF,IAAId,EAAiBe,IAAI/C,EAAQ,CAAC,CAC9CiD,EAAQ,IAAIH,IAAIb,EAAiBc,IAAI/C,EAAQ,CAAC,CAE9CkD,EAAWP,EAASQ,OAAQ9C,GAAM,CACtC,GAAIA,EAAEiC,IAAIc,WAAW,oBAAoB,CAAE,MAAO,GAClD,GAAI,CAAChD,EAAwBC,EAAE,CAAE,MAAO,GACxC,IAAMgD,EAAKrD,EAAQK,EAAEE,MAAMC,QAAQ,CAC7B8C,EAAMtD,EAAQK,EAAEE,MAAME,UAAU,CAKtC,MAJI,CAAC6C,GAAOA,IAAQ,IAAY,GAGhC,EAFID,IAAO,YAAcR,EAAMU,IAAID,EAAI,EACnCD,IAAO,UAAYL,EAAMO,IAAID,EAAI,EACjCD,IAAO,UAAYJ,EAAMM,IAAID,EAAI,GAErC,CAEIE,EAA2B,EAAE,CAEnC,IAAK,IAAMF,KAAOvB,EAAoB,CACpC,IAAMU,GAAWG,EAAOT,SAASmB,IAAQV,EAAOT,SAASnC,EAAQsD,EAAI,GAAKpB,GAAgBhC,MAAM,CAACC,aAAa,CAC9GqD,EAAMC,KAAK,CACTnB,GAAI,6BAA6BgB,IACjCb,UACAiB,SAAU,GACVC,QAAS,GACTpD,MAAO,CAAEC,QAAS,WAAYC,UAAW6C,EAAI,CAC9C,CAAC,CAGJ,IAAK,IAAMA,KAAOtB,EAAkB,CAClC,IAAMS,GAAWG,EAAOR,OAAOkB,IAAQV,EAAOR,OAAOpC,EAAQsD,EAAI,GAAKpB,GAAgBhC,MAAM,CAACC,aAAa,CAC1GqD,EAAMC,KAAK,CACTnB,GAAI,2BAA2BgB,IAC/Bb,UACAiB,SAAU,GACVC,QAAS,GACTpD,MAAO,CAAEC,QAAS,SAAUC,UAAW6C,EAAI,CAC5C,CAAC,CAGJ,IAAK,IAAMA,KAAOrB,EAAkB,CAClC,IAAMQ,GAAWG,EAAOP,OAAOiB,IAAQV,EAAOP,OAAOrC,EAAQsD,EAAI,GAAKpB,GAAgBhC,MAAM,CAACC,aAAa,CAC1GqD,EAAMC,KAAK,CACTnB,GAAI,2BAA2BgB,IAC/Bb,UACAiB,SAAU,GACVC,QAAS,GACTpD,MAAO,CAAEC,QAAS,SAAUC,UAAW6C,EAAI,CAC5C,CAAC,CAGJ,MAAO,CAAC,GAAGJ,EAAU,GAAGM,EAAM,CCzIhC,SAAgBS,GAAiC,CAC/C,OAAOJ,EACL,kFACA,6BACAG,EACA,mBACD,CAGH,SAAgBE,GAAkC,CAChD,OAAOL,EAAGE,EAAwBD,EAA0B,CAG9D,SAAgBK,GAAYC,EAAkC,CAC5D,OAAOA,EACJC,MAAM,QAAQ,CACdC,IAAKC,GAAMA,EAAEC,MAAM,CAAC,CACpBC,OAAOC,QAAQ,CACfJ,IAAKC,GAAO,UAAUI,KAAKJ,EAAE,CAAGK,OAAOL,EAAE,CAAGA,EAAG,CAGpD,SAAgBM,GAAcC,EAAkC,CAC9D,OAAOA,EAAIR,IAAIS,OAAO,CAACC,KAAK,KAAK,CAGnC,SAAgBC,GAAwBC,EAA+C,CACrF,IAAMC,EAAID,EAAGE,UAAUC,SAASC,SAChC,OAAO,OAAOH,GAAM,SAAWA,EAAI,GAGrC,SAAgBI,GAAqBL,EAAgD,CACnF,OAAOM,OAAOC,OAAOP,EAAGE,UAAY,EAAE,CAAC,CAACM,KACrCC,GAAM,OAAOA,EAAEL,UAAa,UAAYK,EAAEL,SAASd,MAAM,CAACoB,OAAS,EACrE,CAGH,SAAgBC,GAAmBC,EAA8C,CAC/E,OAAON,OAAOO,KAAKD,EAAGV,UAAY,EAAE,CAAC,CAACQ,OAAS,GAAKE,EAAGE,UAAUJ,OAAS,EAG5E,SAAgBK,GAAmBC,EAA8C,CAC/E,MAAOxB,GAAQwB,EAAGC,OAAO3B,MAAM,EAAI0B,EAAGE,WAAW5B,MAAM,GAAKgB,OAAOO,KAAKG,EAAGd,UAAY,EAAE,CAAC,CAACQ,OAAS,ECzCtG,SAAOW,EAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,EAAA,CAAoB,CAAAE,YAAAH,EAAqCI,EACM,OADNH,EAAA,KAAAE,EACMC,EAAAH,EAAA,IAA7DG,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,8BAA+BD,WAAe,CAAA,CAAAF,EAAA,GAAAE,EAAAF,EAAA,GAAAG,GAA7DA,EAGT,SAAOC,GAAAL,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,EAAA,CAAmB,CAAAE,YAAAH,EAAqCI,EACc,OADdH,EAAA,KAAAE,EACcC,EAAAH,EAAA,IAApEG,GAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,yCAA0CD,WAAa,CAAA,CAAAF,EAAA,GAAAE,EAAAF,EAAA,GAAAG,GAApEA,EAUT,SAAOS,GAAAb,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,GAAA,CAAuC,CAAAM,QAAAC,QAAAE,WAAAE,WAAAZ,EAAwDI,EAAAH,EAAA,KAAAM,EAGhEH,EAAAH,EAAA,IAAhCG,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAaG,EAAmB,CAAA,CAAAN,EAAA,GAAAM,EAAAN,EAAA,GAAAG,GAAA,IAAAU,EAAAb,EAAA,KAAAc,OAAAC,IAAA,4BAAA,EACbF,EAAAhB,GAAyB,CAAAG,EAAA,GAAAa,GAAAA,EAAAb,EAAA,GAAA,IAAAgB,EAAAhB,EAAA,KAAAS,EAA8DO,EAAAhB,EAAA,IAApCgB,EAAAC,GAAOR,EAASQ,EAACC,OAAOX,MAAY,CAAAP,EAAA,GAAAS,EAAAT,EAAA,GAAAgB,GAAA,IAAAG,EAAAnB,EAAA,KAAAW,EAKtGQ,EAAAnB,EAAA,IAJDmB,EAAAR,EAAOS,IAAKC,GAIX,CAAArB,EAAA,GAAAW,EAAAX,EAAA,GAAAmB,GAAA,IAAAG,EAAAtB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAmB,GAAAnB,EAAA,KAAAO,GALJe,GAAA,EAAA,EAAA,KAAA,SAAA,CAAmB,UAAAT,EAAkCN,QAAiB,SAAAS,WACnEG,EAKM,CAAA,CAAAnB,EAAA,GAAAgB,EAAAhB,EAAA,GAAAmB,EAAAnB,EAAA,GAAAO,EAAAP,EAAA,IAAAsB,GAAAA,EAAAtB,EAAA,IAAA,IAAAuB,EACL,OADKvB,EAAA,MAAAG,GAAAH,EAAA,MAAAsB,GARXC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEpB,EACAmB,EAOI,GAAAtB,EAAA,IAAAG,EAAAH,EAAA,IAAAsB,EAAAtB,EAAA,IAAAuB,GAAAA,EAAAvB,EAAA,IATNuB,EAFG,SAAAF,GAAAG,EAAA,CAAA,OAMG,EAAA,EAAA,KAAA,SAAA,CAA6B,MAAAA,EAACjB,eAC3BiB,EAAClB,MACK,CAFIkB,EAACjB,MAEL,CClBnB,SAAO2B,GAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,GAAA,CAAkC,CAAAE,aAAAC,SAAAC,iBAAAC,aAAAC,WAAAC,WAAAC,MAAAT,EAiBvCU,EAAiBf,EAAegB,GAAkB,CAACC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,GAAAf,EAAA,KAAAE,GAAAF,EAAA,KAAAK,GAAAL,EAAA,KAAAQ,GAAAR,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,GAAAN,EAAA,KAAAS,GAAAT,EAAA,KAAAO,GAAAP,EAAA,KAAAG,EAAA,CAEfY,EAAAC,OAAIC,IAAJ,8BAAI,CAAAC,IAAA,CADxC,IAAAC,EAAuB3B,EAASiB,EAAS,CAAAW,eACzC,GAAIlB,EAAUmB,SAAY,EAAC,CAASN,EAAA,KAAA,MAAAG,IACpC,IAAAI,EAAajB,EAAUgB,OAAU,EAApBhB,EAAA,CAAsC,CAAAkB,GAAMnB,EAAgB,CAAC,CAEzDS,EAAA,8DAA6D,IAAAW,EAAAxB,EAAA,MAAAQ,EAAAiB,kBAEzBD,EAAAxB,EAAA,KAA/CwB,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAahB,EAAEiB,kBAAgC,CAAA,CAAAzB,EAAA,IAAAQ,EAAAiB,kBAAAzB,EAAA,IAAAwB,GAAA,IAAAE,EAAA1B,EAAA,MAAAQ,EAAAmB,iBACHD,EAAA1B,EAAA,KAA5C0B,GAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYlB,EAAEmB,iBAA8B,CAAA,CAAA3B,EAAA,IAAAQ,EAAAmB,iBAAA3B,EAAA,IAAA0B,GAAA1B,EAAA,MAAAwB,GAAAxB,EAAA,MAAA0B,GAF9CZ,GAAA,EAAA,EAAA,MAAA,MAAA,CAAA,SAAA,CACEU,EACAE,EACI,CAAA,CAAA,CAAA1B,EAAA,IAAAwB,EAAAxB,EAAA,IAAA0B,EAAA1B,EAAA,IAAAc,GAAAA,EAAAd,EAAA,IACSW,EAAA,YACZC,EAAAV,EAAU0B,IAAKC,IACd,EAAA,EAAA,MAAA,MAAA,CAEY,UAAA,+JAFZ,EAIE,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,mBAAf,EACE,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,6CAAqCrB,EAAEsB,yBACpD,CAAA,EAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,4CAAmDD,MAAAA,WAC7DA,EAEL,CAAA,CACA,cAAA,MAAA,CAAe,UAAA,mBAAf,EACE,EAAA,EAAA,KAAA,QAAA,CAAiB,UAAA,UAAmB,QAAA,eAAeA,aAChDrB,EAAEuB,uBAEL,CAAA,EAAA,EAAA,EAAA,KAAA,SAAA,CACM,GAAA,eAAeF,IACR,UAAAtC,EAAGM,GAAwB,CAAEP,EAAyB,CACvDgB,WACH,OAACH,EAAO0B,IAAPzB,GAA6B4B,aAAc,CACzC,SAAAC,GAAO1B,EAASsB,EAAKI,EAACC,OAAOC,MAAM,UAE5Cb,EAAIM,IAAKQ,IACR,EAAA,EAAA,KAAA,SAAA,CAA2B,MAAAA,EAAEb,YAC1B,GAAGlC,EAAqB+C,EAAIjB,EAAe,CAAA,IAAKiB,EAAEb,GAAG,GAEzD,CAHca,EAAEb,GAGhB,CAAA,CAEL,CAAA,CACF,GACD,EA5BQM,EA4BR,CAAC,CAAA7B,EAAA,GAAAE,EAAAF,EAAA,GAAAK,EAAAL,EAAA,GAAAQ,EAAAR,EAAA,GAAAI,EAAAJ,EAAA,GAAAM,EAAAN,EAAA,GAAAS,EAAAT,EAAA,GAAAO,EAAAP,EAAA,GAAAG,EAAAH,EAAA,GAAAW,EAAAX,EAAA,GAAAY,EAAAZ,EAAA,IAAAa,EAAAb,EAAA,IAAAc,EAAAd,EAAA,IAAAe,OAAAJ,EAAAX,EAAA,GAAAY,EAAAZ,EAAA,GAAAa,EAAAb,EAAA,IAAAc,EAAAd,EAAA,IAAAe,EAAAf,EAAA,IAAA,GAAAe,IAAAC,OAAAC,IAAA,8BAAA,CAAA,OAAAF,EAAA,IAAAS,EAAAxB,EAAA,MAAAW,GAAAX,EAAA,MAAAY,GA/BJY,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAAb,WACZC,EA+BG,CAAA,CAAAZ,EAAA,IAAAW,EAAAX,EAAA,IAAAY,EAAAZ,EAAA,IAAAwB,GAAAA,EAAAxB,EAAA,IAAA,IAAA0B,EACF,OADE1B,EAAA,MAAAa,GAAAb,EAAA,MAAAc,GAAAd,EAAA,MAAAwB,GArCRE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAAb,WAAf,CACEC,EAIAU,EAiCI,GAAAxB,EAAA,IAAAa,EAAAb,EAAA,IAAAc,EAAAd,EAAA,IAAAwB,EAAAxB,EAAA,IAAA0B,GAAAA,EAAA1B,EAAA,IAtCN0B,EAtBG,SAAAhB,GAAA2B,EAAA,CAAA,OAiBkCA,EAAC5B,SCb1C,SAAOgD,GAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,IAAA,CAAmC,CAAAE,KAAAC,OAAAC,WAAAC,mBAAAC,sBAAAC,2BAAAC,8BAAAC,eAAAC,sBAAAC,mBAAAC,0BAAAC,eAAAC,0BAAAC,sBAAAC,yBAAAC,sBAAAC,uBAAAC,SAAAC,YAAAC,aAAAC,SAAAC,QAAAC,OAAAC,WAAA1B,EAwDxC2B,EAAWvB,EAAIwB,OACfC,GAA6BxB,GAAQuB,QAAmBE,WAA3B,GAAkCC,EAAA9B,EAAA,KAAA4B,IAAA5B,EAAA,KAAA0B,EAAAG,WAAA7B,EAAA,KAAAK,GAE7DyB,EAAA,CAACzB,GACD0B,EAAQC,OAAOJ,GAAqB,CAAAK,MAAO,EAC3CP,EAAEG,YAAeD,GAAoB5B,EAAA,GAAA4B,GAAA5B,EAAA,GAAA0B,EAAAG,UAAA7B,EAAA,GAAAK,EAAAL,EAAA,GAAA8B,GAAAA,EAAA9B,EAAA,GAHvC,IAAAkC,EACEJ,EAEsCK,EAAAnC,EAAA,KAAAoC,OAAAC,IAAA,4BAAA,EAMhCF,GAAA,EAAA,EAAA,KAAC,EAAD,CAAuB,UAAA,2EAA6E,CAAA,CAAAnC,EAAA,GAAAmC,GAAAA,EAAAnC,EAAA,GAAA,IAAAsC,GAAAtC,EAAA,KAAAE,EAAAqC,aAG9FD,GAAAtC,EAAA,IALVsC,IAAA,EAAA,EAAA,KAAA,UAAA,CAAmB,UAAA,8LACjB,EAAA,EAAA,MAAA,OAAA,CAAgB,UAAA,0CAAhB,CACEH,EACCjC,EAAEqC,aAEP,GAAU,CAAA,CAAAvC,EAAA,GAAAE,EAAAqC,aAAAvC,EAAA,GAAAsC,IAAA,IAAAE,EAAAxC,EAAA,KAAAE,EAAAuC,mBAEwED,EAAAxC,EAAA,IAAhFwC,GAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,iDAAyCtC,EAAEuC,mBAAwB,CAAA,CAAAzC,EAAA,GAAAE,EAAAuC,mBAAAzC,EAAA,GAAAwC,GAAA,IAAAE,EAAA1C,EAAA,KAAAa,EAMhB6B,EAAA1C,EAAA,KAAlD0C,EAAAC,GAAO9B,EAAa,CAAA+B,QAAWD,EAACE,OAAOC,QAAU,CAAC,CAAA9C,EAAA,GAAAa,EAAAb,EAAA,IAAA0C,GAAA,IAAAK,EAAA/C,EAAA,MAAA0B,EAAAkB,SAAA5C,EAAA,MAAA0C,GAJ9DK,GAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,qBACD,QAAArB,EAAEkB,QACD,SAAAF,EACV,CAAA,CAAA1C,EAAA,IAAA0B,EAAAkB,QAAA5C,EAAA,IAAA0C,EAAA1C,EAAA,IAAA+C,GAAAA,EAAA/C,EAAA,IAAA,IAAAgD,GAAAhD,EAAA,MAAAE,EAAA+C,iBACgCD,GAAAhD,EAAA,KAAlCgD,IAAA,EAAA,EAAA,KAAA,OAAA,CAAA,SAAO9C,EAAE+C,iBAAyB,CAAA,CAAAjD,EAAA,IAAAE,EAAA+C,iBAAAjD,EAAA,IAAAgD,IAAA,IAAAE,GAAAlD,EAAA,MAAA+C,GAAA/C,EAAA,MAAAgD,IAPpCE,IAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,iEAAjB,CACEH,EAMAC,GACM,GAAAhD,EAAA,IAAA+C,EAAA/C,EAAA,IAAAgD,GAAAhD,EAAA,IAAAkD,IAAAA,GAAAlD,EAAA,IAAA,IAAAmD,GAAAnD,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAMFc,IAAA,EAAA,EAAA,KAAA,OAAA,CAAgB,UAAA,0CAAiC,KAAS,CAAA,CAAAnD,EAAA,IAAAmD,IAAAA,GAAAnD,EAAA,IAAA,IAAAoD,EAAApD,EAAA,MAAAE,EAAAmD,YAC/CD,EAAApD,EAAA,KAHboD,GAAA,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CACGlD,EAAEmD,YACHF,GACW,CAAA,CAAA,CAAAnD,EAAA,IAAAE,EAAAmD,YAAArD,EAAA,IAAAoD,GAAA,IAAAE,GAAAtD,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAEAiB,GAAA/D,EAnCAI,GAmCmB,CAAE,mCAAmC,CAAAK,EAAA,IAAAsD,IAAAA,GAAAtD,EAAA,IAAA,IAAAuD,EAAAvD,EAAA,MAAAa,EAEX0C,EAAAvD,EAAA,KAA9CuD,EAAAC,GAAO3C,EAAa,CAAA4C,MAASd,EAACE,OAAOa,MAAQ,CAAC,CAAA1D,EAAA,IAAAa,EAAAb,EAAA,IAAAuD,GAAA,IAAAI,EAAA3D,EAAA,MAAA0B,EAAA+B,OAAAzD,EAAA,MAAAuD,GAH1DI,GAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAL,GACJ,MAAA5B,EAAE+B,MACC,SAAAF,EACE,YAAA,UACZ,CAAA,CAAAvD,EAAA,IAAA0B,EAAA+B,MAAAzD,EAAA,IAAAuD,EAAAvD,EAAA,IAAA2D,GAAAA,EAAA3D,EAAA,IAAA,IAAA4D,EAAA5D,EAAA,MAAAE,EAAA2D,gBACyCD,EAAA5D,EAAA,KAA3C4D,GAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAY1D,EAAE2D,gBAA6B,CAAA,CAAA7D,EAAA,IAAAE,EAAA2D,gBAAA7D,EAAA,IAAA4D,GAAA,IAAAE,GAAA9D,EAAA,MAAAoD,GAAApD,EAAA,MAAA2D,GAAA3D,EAAA,MAAA4D,GAX7CE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,EAIAO,EAMAC,EACI,GAAA5D,EAAA,IAAAoD,EAAApD,EAAA,IAAA2D,EAAA3D,EAAA,IAAA4D,EAAA5D,EAAA,IAAA8D,IAAAA,GAAA9D,EAAA,IAAA,IAAA+D,EAAA/D,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAKF0B,GAAA,EAAA,EAAA,KAAA,OAAA,CAAgB,UAAA,0CAAiC,KAAS,CAAA,CAAA/D,EAAA,IAAA+D,GAAAA,EAAA/D,EAAA,IAAA,IAAAgE,EAAAhE,EAAA,MAAAE,EAAA+D,gBAC/CD,EAAAhE,EAAA,KAHbgE,GAAA,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CACG9D,EAAE+D,gBACHF,EACW,CAAA,CAAA,CAAA/D,EAAA,IAAAE,EAAA+D,gBAAAjE,EAAA,IAAAgE,GAAA,IAAAE,EAAAlE,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAGE6B,EAAA3E,EAlDFI,GAkDqB,CAAE,mCAAmC,CAAAK,EAAA,IAAAkE,GAAAA,EAAAlE,EAAA,IAC7D,IAAAmE,GAAA9D,EAAA,OAAA,WAAsC+D,EAAApE,EAAA,MAAAkC,GAAAlC,EAAA,MAAA0B,EAAAG,WAI1CuC,EAAAlC,EACI,IAAGmC,OAAQC,KAAIC,IAAK,EAAG7C,EAAEG,UAAU2C,OACxB,CAAC,CAAZ9C,EAAEG,UAAU7B,EAAA,IAAAkC,EAAAlC,EAAA,IAAA0B,EAAAG,UAAA7B,EAAA,IAAAoE,GAAAA,EAAApE,EAAA,IAAA,IAAAyE,EAAAzE,EAAA,MAAAkC,GAAAlC,EAAA,MAAAa,GAER4D,EAAAC,GAAA,CACJxC,GACJrB,EAAa,CAAAgB,UAAac,EAACE,OAAOa,MAAQ,CAAC,EAC5C1D,EAAA,IAAAkC,EAAAlC,EAAA,IAAAa,EAAAb,EAAA,IAAAyE,GAAAA,EAAAzE,EAAA,IAAA,IAAA2E,EAAA3E,EAAA,MAAAkC,GAAAlC,EAAA,MAAAmE,IAAAnE,EAAA,MAAAoE,GAAApE,EAAA,MAAAyE,GAbHE,GAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAT,EACL,KAAAC,GACO,aAAA,MACHjC,SAAAA,EAER,MAAAkC,EAIQ,SAAAK,EAIE,YAAA,WACZ,CAAA,CAAAzE,EAAA,IAAAkC,EAAAlC,EAAA,IAAAmE,GAAAnE,EAAA,IAAAoE,EAAApE,EAAA,IAAAyE,EAAAzE,EAAA,IAAA2E,GAAAA,EAAA3E,EAAA,IAAA,IAAA4E,GAAA5E,EAAA,MAAAE,EAAA2E,QAAA7E,EAAA,MAAAE,EAAA4E,MAAA9E,EAAA,MAAAW,GAAAX,EAAA,MAAAS,GAAAT,EAAA,MAAA0B,EAAAG,WACD+C,GAAAlD,EAAEG,WACD,EAAA,EAAA,MAAC,EAAD,CACO,KAAA,SACG,QAAA,YACE,UAAA,oBACD,YAAM,KAAKlB,GAAiB,UAJvC,CAMGF,GAAe,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,WAA6C,CAAA,EAA7B,EAAA,EAAA,KAAC,EAAD,CAAgB,UAAA,WAAY,CAAA,CAC5EA,EAAeP,EAAE2E,OAAU3E,EAAE4E,KAE1B,GAVP,KAUO9E,EAAA,IAAAE,EAAA2E,OAAA7E,EAAA,IAAAE,EAAA4E,KAAA9E,EAAA,IAAAW,EAAAX,EAAA,IAAAS,EAAAT,EAAA,IAAA0B,EAAAG,UAAA7B,EAAA,IAAA4E,IAAAA,GAAA5E,EAAA,IAAA,IAAA+E,GAAA/E,EAAA,MAAAM,EAKuCyE,GAAA/E,EAAA,KAApC+E,OAAMzE,EAAoB0E,GAAU,CAAAhF,EAAA,IAAAM,EAAAN,EAAA,IAAA+E,IAAA,IAAAE,GAAAjF,EAAA,MAAAK,EAEqC4E,GAAAjF,EAAA,KAAjFiF,GAAA5E,GAAmB,EAAA,EAAA,KAAC,EAAD,CAAkB,UAAA,WAA4C,CAAA,EAA5B,EAAA,EAAA,KAAC,GAAD,CAAe,UAAA,WAAa,CAAA,CAAAL,EAAA,IAAAK,EAAAL,EAAA,IAAAiF,IACjF,IAAAC,GAAA7E,EAAmBH,EAAEiF,KAAQjF,EAAEkF,KAAKC,GAAArF,EAAA,MAAA+E,IAAA/E,EAAA,MAAAiF,IAAAjF,EAAA,MAAAkF,IAPvCG,IAAA,EAAA,EAAA,MAAC,EAAD,CACO,KAAA,SACG,QAAA,YACE,UAAA,oBACD,QAAAN,YAJX,CAMGE,GACAC,GACM,GAAAlF,EAAA,IAAA+E,GAAA/E,EAAA,IAAAiF,GAAAjF,EAAA,IAAAkF,GAAAlF,EAAA,IAAAqF,IAAAA,GAAArF,EAAA,IAAA,IAAAsF,GAAAtF,EAAA,MAAA2E,GAAA3E,EAAA,MAAA4E,IAAA5E,EAAA,MAAAqF,IApCXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,gCAAf,CACEX,EAgBCC,GAWDS,GASI,GAAArF,EAAA,IAAA2E,EAAA3E,EAAA,IAAA4E,GAAA5E,EAAA,IAAAqF,GAAArF,EAAA,IAAAsF,IAAAA,GAAAtF,EAAA,IAAA,IAAAuF,GAAAvF,EAAA,MAAAE,EAAAsF,oBACyCD,GAAAvF,EAAA,KAA/CuF,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYrF,EAAEsF,oBAAiC,CAAA,CAAAxF,EAAA,IAAAE,EAAAsF,oBAAAxF,EAAA,IAAAuF,IAAA,IAAAE,GAAAzF,EAAA,MAAAgE,GAAAhE,EAAA,MAAAsF,IAAAtF,EAAA,MAAAuF,IA3CjDE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEzB,EAIAsB,GAsCAC,GACI,GAAAvF,EAAA,IAAAgE,EAAAhE,EAAA,IAAAsF,GAAAtF,EAAA,IAAAuF,GAAAvF,EAAA,IAAAyF,IAAAA,GAAAzF,EAAA,IAAA,IAAA0F,EAAA1F,EAAA,MAAAE,EAAAyF,aAIwCD,EAAA1F,EAAA,KAA1C0F,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAaxF,EAAEyF,aAA2B,CAAA,CAAA3F,EAAA,IAAAE,EAAAyF,aAAA3F,EAAA,IAAA0F,GAAA,IAAAE,GAAA5F,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAE7BuD,GA7FFjG,GA6FkB,CAAAK,EAAA,IAAA4F,IAAAA,GAAA5F,EAAA,IACpB,IAAA6F,GAAA7D,OAAON,EAAEoE,QAAF,SAAsB,CAAAC,GAAA/F,EAAA,MAAAa,EACqBkF,GAAA/F,EAAA,KAA/C+F,GAAAC,GAAOnF,EAAa,CAAAiF,OAAUnD,EAACE,OAAOa,MAAQ,CAAC,CAAA1D,EAAA,IAAAa,EAAAb,EAAA,IAAA+F,IAAA,IAAAE,GAAAC,GAAAlG,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAEzD4D,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,kBAAS,SAAe,CAAA,CACtCC,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,gBAAO,OAAa,CAAA,CAAAlG,EAAA,IAAAiG,GAAAjG,EAAA,IAAAkG,KAAAD,GAAAjG,EAAA,IAAAkG,GAAAlG,EAAA,KAAA,IAAAmG,GAAAnG,EAAA,MAAA6F,IAAA7F,EAAA,MAAA+F,IANpCI,IAAA,EAAA,EAAA,MAAA,SAAA,CACa,UAAAP,GACJ,MAAAC,GACG,SAAAE,YAHZ,CAKEE,GACAC,GACO,GAAAlG,EAAA,IAAA6F,GAAA7F,EAAA,IAAA+F,GAAA/F,EAAA,IAAAmG,IAAAA,GAAAnG,EAAA,IAAA,IAAAoG,GAAApG,EAAA,MAAA0F,GAAA1F,EAAA,MAAAmG,IATXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,EACAS,GAQI,GAAAnG,EAAA,IAAA0F,EAAA1F,EAAA,IAAAmG,GAAAnG,EAAA,IAAAoG,IAAAA,GAAApG,EAAA,IAAA,IAAAqG,GAAArG,EAAA,MAAAE,EAAAoG,eAEwCD,GAAArG,EAAA,KAA5CqG,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAanG,EAAEoG,eAA6B,CAAA,CAAAtG,EAAA,IAAAE,EAAAoG,eAAAtG,EAAA,IAAAqG,IAAA,IAAAE,GAAAvG,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAE/BkE,GAxGF5G,GAwGkB,CAAAK,EAAA,IAAAuG,IAAAA,GAAAvG,EAAA,IAAA,IAAAwG,GAAAxG,EAAA,MAAAa,EAG4E2F,GAAAxG,EAAA,KAD7FwG,GAAAC,GACR5F,EAAa,CAAAyF,eAAkB3D,EAACE,OAAOa,MAA6D,CAAC,CAAA1D,EAAA,IAAAa,EAAAb,EAAA,IAAAwG,IAAA,IAAAE,GAAAC,GAAA3G,EAAA,MAAAoC,OAAAC,IAAA,4BAAA,EAGvGqE,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,qBAAY,YAAkB,CAAA,CAC5CC,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,mBAAU,UAAgB,CAAA,CAAA3G,EAAA,IAAA0G,GAAA1G,EAAA,IAAA2G,KAAAD,GAAA1G,EAAA,IAAA2G,GAAA3G,EAAA,KAAA,IAAA4G,GAAA5G,EAAA,MAAA0B,EAAA4E,gBAAAtG,EAAA,MAAAwG,IAR1CI,IAAA,EAAA,EAAA,MAAA,SAAA,CACa,UAAAL,GACJ,MAAA7E,EAAE4E,eACC,SAAAE,YAHZ,CAOEE,GACAC,GACO,GAAA3G,EAAA,IAAA0B,EAAA4E,eAAAtG,EAAA,IAAAwG,GAAAxG,EAAA,IAAA4G,IAAAA,GAAA5G,EAAA,IAAA,IAAA6G,GAAA7G,EAAA,MAAAE,EAAA4G,mBACqCD,GAAA7G,EAAA,KAA9C6G,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAY3G,EAAE4G,mBAAgC,CAAA,CAAA9G,EAAA,IAAAE,EAAA4G,mBAAA9G,EAAA,IAAA6G,IAAA,IAAAE,GAAA/G,EAAA,MAAAqG,IAAArG,EAAA,MAAA4G,IAAA5G,EAAA,OAAA6G,IAZhDE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,GACAO,GAUAC,GACI,GAAA7G,EAAA,IAAAqG,GAAArG,EAAA,IAAA4G,GAAA5G,EAAA,KAAA6G,GAAA7G,EAAA,KAAA+G,IAAAA,GAAA/G,EAAA,KAAA,IAAAgH,GAAAhH,EAAA,OAAAoG,IAAApG,EAAA,OAAA+G,IAzBRC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qCAAf,CACEZ,GAWAW,GAcI,GAAA/G,EAAA,KAAAoG,GAAApG,EAAA,KAAA+G,GAAA/G,EAAA,KAAAgH,IAAAA,GAAAhH,EAAA,KAAA,IAAAiH,GAAAjH,EAAA,OAAAE,EAAA2E,QAAA7E,EAAA,OAAAE,EAAA4E,MAAA9E,EAAA,OAAAE,EAAAgH,YAAAlH,EAAA,OAAAE,EAAAiH,gBAAAnH,EAAA,OAAAE,EAAAiF,MAAAnF,EAAA,OAAAE,EAAAkF,MAAApF,EAAA,OAAAE,EAAAkH,mBAAApH,EAAA,OAAAE,EAAAmH,uBAAArH,EAAA,OAAAE,EAAAoH,aAAAtH,EAAA,OAAAE,EAAAqH,aAAAvH,EAAA,OAAAE,EAAAsH,iBAAAxH,EAAA,OAAAE,EAAAuH,aAAAzH,EAAA,OAAAE,EAAAwH,cAAA1H,EAAA,OAAAY,GAAAZ,EAAA,OAAAU,GAAAV,EAAA,OAAA0B,EAAA4E,gBAAAtG,EAAA,OAAA0B,EAAAwF,YAAAlH,EAAA,OAAA0B,EAAA0F,mBAAApH,EAAA,OAAA0B,EAAA4F,aAAAtH,EAAA,OAAA0B,EAAA6F,aAAAvH,EAAA,OAAA0B,EAAA+F,aAAAzH,EAAA,OAAAQ,GAAAR,EAAA,OAAAO,GAAAP,EAAA,OAAAa,GAELoG,GAAAvF,EAAE4E,iBAAoB,WACrB,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,6FAAf,EACE,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,mDAAf,EACE,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,uCAA+BpG,EAAEwH,aAChD,CAAA,EAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,sBAAf,EACE,EAAA,EAAA,MAAC,EAAD,CACO,KAAA,SACG,QAAA,YACE,UAAA,oBACD,YAAMlH,EAA4BmH,GAAS,UAJtD,CAMGpH,GAA2B,EAAA,EAAA,KAAC,EAAD,CAAkB,UAAA,WAA4C,CAAA,EAA5B,EAAA,EAAA,KAAC,GAAD,CAAe,UAAA,WAAY,CAAA,CACxFA,EAA2BL,EAAEiF,KAAQjF,EAAEkF,KAE1C,cAAC,EAAD,CACO,KAAA,SACG,QAAA,YACE,UAAA,oBACD,YAAM,KAAKxE,GAAwB,UAJ9C,CAMGF,GAAsB,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,WAA6C,CAAA,EAA7B,EAAA,EAAA,KAAC,EAAD,CAAgB,UAAA,WAAY,CAAA,CACnFA,EAAsBR,EAAE2E,OAAU3E,EAAE4E,KAEzC,GACF,GAEA,cAAA,MAAA,CAAe,UAAA,0CAAf,EACE,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa5E,EAAEkH,kBACf,CAAA,WAAA,QAAA,CACa,UAAA7H,EAnJNI,GAmJyB,CAAE,mCAAkC,CAC5D,KAAAY,EAAA,OAAA,WACO,aAAA,MACN,MAAAmB,EAAE0F,mBAAF,GACG,SAAAQ,GAAO/G,EAAa,CAAAuG,kBAAqBzE,EAACE,OAAOa,MAAQ,CAAA,CAErE,CAAA,WAAC,GAAD,CAAA,SAAYxD,EAAEmH,sBAChB,CAAA,CACA,cAAA,MAAA,CAAe,UAAA,iCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAA,SAAanH,EAAEgH,WACf,CAAA,WAAA,QAAA,CACa,UAAA3H,EA9JNI,GA8JyB,CAAE,mCAAkC,CAC5D,KAAAY,EAAA,OAAA,WACO,aAAA,MACN,MAAAmB,EAAEwF,YAAF,GACG,SAAAW,GAAOhH,EAAa,CAAAqG,WAAcvE,EAACE,OAAOa,MAAQ,CAAA,CAE9D,CAAA,WAAC,GAAD,CAAA,SAAYxD,EAAEiH,eAChB,CAAA,CACF,GAEA,cAAA,MAAA,CAAe,UAAA,0CAAf,EACE,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,+CAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAA,SAAajH,EAAEoH,YACf,CAAA,EAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAA/H,EA5KNI,GA4KyB,CAAE,mCAAkC,CAC3D,MAAA+B,EAAE4F,aAAF,GACG,SAAAQ,GAAOjH,EAAa,CAAAyG,YAAe3E,EAACE,OAAOa,MAAQ,CAAA,CACjD,YAAA,YAEhB,CAAA,CACA,cAAA,MAAA,CAAe,UAAA,iCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAA,SAAaxD,EAAEuH,YACf,CAAA,EAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAlI,EArLNI,GAqLyB,CAAE,mCAAkC,CAC7D,KAAA,SACK,UAAA,UACH,MAAAqC,OAAON,EAAE+F,aAAF,GAAoB,CACxB,SAAAM,GACRlH,EAAa,CAAA4G,YAAeO,OAAOrF,EAACE,OAAOa,OAAR,IAA2B,EAAlC,EAAoC,CAAA,CAEtD,YAAA,OAEhB,CAAA,CACF,GAEA,cAAA,MAAA,CAAe,UAAA,sCAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAAA,SAAaxD,EAAEqH,YACf,CAAA,WAAA,QAAA,CACa,UAAAhI,EApMJI,GAoMuB,CAAE,mCAAkC,CAC3D,MAAA+B,EAAE6F,aAAF,GACG,SAAAU,GAAOpH,EAAa,CAAA0G,YAAe5E,EAACE,OAAOa,MAAQ,CAAA,CACjD,YAAA,iBAEd,CAAA,WAAC,GAAD,CAAA,SAAYxD,EAAEsH,gBAChB,CAAA,CACF,GACM,GAvFP,KAuFOxH,EAAA,KAAAE,EAAA2E,OAAA7E,EAAA,KAAAE,EAAA4E,KAAA9E,EAAA,KAAAE,EAAAgH,WAAAlH,EAAA,KAAAE,EAAAiH,eAAAnH,EAAA,KAAAE,EAAAiF,KAAAnF,EAAA,KAAAE,EAAAkF,KAAApF,EAAA,KAAAE,EAAAkH,kBAAApH,EAAA,KAAAE,EAAAmH,sBAAArH,EAAA,KAAAE,EAAAoH,YAAAtH,EAAA,KAAAE,EAAAqH,YAAAvH,EAAA,KAAAE,EAAAsH,gBAAAxH,EAAA,KAAAE,EAAAuH,YAAAzH,EAAA,KAAAE,EAAAwH,aAAA1H,EAAA,KAAAY,EAAAZ,EAAA,KAAAU,EAAAV,EAAA,KAAA0B,EAAA4E,eAAAtG,EAAA,KAAA0B,EAAAwF,WAAAlH,EAAA,KAAA0B,EAAA0F,kBAAApH,EAAA,KAAA0B,EAAA4F,YAAAtH,EAAA,KAAA0B,EAAA6F,YAAAvH,EAAA,KAAA0B,EAAA+F,YAAAzH,EAAA,KAAAQ,EAAAR,EAAA,KAAAO,EAAAP,EAAA,KAAAa,EAAAb,EAAA,KAAAiH,IAAAA,GAAAjH,EAAA,KAAA,IAAAkI,GAAAlI,EAAA,OAAAE,EAAAiI,WAIoCD,GAAAlI,EAAA,MAAxCkI,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAahI,EAAEiI,WAAyB,CAAA,CAAAnI,EAAA,KAAAE,EAAAiI,WAAAnI,EAAA,KAAAkI,IAAA,IAAAE,GAAApI,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAE3B+F,GAlNFzI,GAkNkB,CAAAK,EAAA,KAAAoI,IAAAA,GAAApI,EAAA,KAAA,IAAAqI,GAAArI,EAAA,OAAAa,EAGoEwH,GAAArI,EAAA,MADrFqI,GAAAC,GACRzH,EAAa,CAAAsH,WAAcxF,EAACE,OAAOa,MAAyD,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAAqI,IAAA,IAAAE,GAAAC,GAAAC,GAAAzI,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAG/FkG,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,gBAAO,OAAa,CAAA,CAClCC,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,eAAM,MAAY,CAAA,CAChCC,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,gBAAO,OAAa,CAAA,CAAAzI,EAAA,KAAAuI,GAAAvI,EAAA,KAAAwI,GAAAxI,EAAA,KAAAyI,KAAAF,GAAAvI,EAAA,KAAAwI,GAAAxI,EAAA,KAAAyI,GAAAzI,EAAA,MAAA,IAAA0I,GAAA1I,EAAA,OAAA0B,EAAAyG,YAAAnI,EAAA,OAAAqI,IATpCK,IAAA,EAAA,EAAA,MAAA,SAAA,CACa,UAAAN,GACJ,MAAA1G,EAAEyG,WACC,SAAAE,YAHZ,CAOEE,GACAC,GACAC,GACO,GAAAzI,EAAA,KAAA0B,EAAAyG,WAAAnI,EAAA,KAAAqI,GAAArI,EAAA,KAAA0I,IAAAA,GAAA1I,EAAA,KAAA,IAAA2I,GAAA3I,EAAA,OAAAkI,IAAAlI,EAAA,OAAA0I,IAZXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACET,GACAQ,GAWI,GAAA1I,EAAA,KAAAkI,GAAAlI,EAAA,KAAA0I,GAAA1I,EAAA,KAAA2I,IAAAA,GAAA3I,EAAA,KAAA,IAAA4I,GAAA5I,EAAA,OAAAE,EAAA2I,sBAE+CD,GAAA5I,EAAA,MAAnD4I,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa1I,EAAE2I,sBAAoC,CAAA,CAAA7I,EAAA,KAAAE,EAAA2I,sBAAA7I,EAAA,KAAA4I,IAAA,IAAAE,GAAA9I,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAEtCyG,GAhOFnJ,GAgOkB,CAAAK,EAAA,KAAA8I,IAAAA,GAAA9I,EAAA,KAAA,IAAA+I,GAAA/I,EAAA,OAAAa,EAMvBkI,GAAA/I,EAAA,MAJM+I,GAAAC,GACRnI,EAAa,CAAAgI,sBACYlG,EAACE,OAAOa,MAEhC,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAA+I,IAAA,IAAAE,GAAAC,GAAAC,GAAAnJ,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAGJ4G,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,eAAM,MAAY,CAAA,CAChCC,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,eAAM,MAAY,CAAA,CAChCC,IAAA,EAAA,EAAA,KAAA,SAAA,CAAc,MAAA,eAAM,MAAY,CAAA,CAAAnJ,EAAA,KAAAiJ,GAAAjJ,EAAA,KAAAkJ,GAAAlJ,EAAA,KAAAmJ,KAAAF,GAAAjJ,EAAA,KAAAkJ,GAAAlJ,EAAA,KAAAmJ,GAAAnJ,EAAA,MAAA,IAAAoJ,GAAApJ,EAAA,OAAA0B,EAAAmH,uBAAA7I,EAAA,OAAA+I,IAZlCK,IAAA,EAAA,EAAA,MAAA,SAAA,CACa,UAAAN,GACJ,MAAApH,EAAEmH,sBACC,SAAAE,YAHZ,CAUEE,GACAC,GACAC,GACO,GAAAnJ,EAAA,KAAA0B,EAAAmH,sBAAA7I,EAAA,KAAA+I,GAAA/I,EAAA,KAAAoJ,IAAAA,GAAApJ,EAAA,KAAA,IAAAqJ,GAAArJ,EAAA,OAAA4I,IAAA5I,EAAA,OAAAoJ,IAfXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACET,GACAQ,GAcI,GAAApJ,EAAA,KAAA4I,GAAA5I,EAAA,KAAAoJ,GAAApJ,EAAA,KAAAqJ,IAAAA,GAAArJ,EAAA,KAAA,IAAAsJ,GAAAtJ,EAAA,OAAA2I,IAAA3I,EAAA,OAAAqJ,IA/BRC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qCAAf,CACEX,GAcAU,GAiBI,GAAArJ,EAAA,KAAA2I,GAAA3I,EAAA,KAAAqJ,GAAArJ,EAAA,KAAAsJ,IAAAA,GAAAtJ,EAAA,KAAA,IAAAuJ,GAAAvJ,EAAA,OAAAa,EAO4D0I,GAAAvJ,EAAA,MAApDuJ,GAAAC,GAAO3I,EAAa,CAAA4I,UAAa9G,EAACE,OAAOC,QAAU,CAAC,CAAA9C,EAAA,KAAAa,EAAAb,EAAA,KAAAuJ,IAAA,IAAAG,GAAA1J,EAAA,OAAA0B,EAAA+H,WAAAzJ,EAAA,OAAAuJ,IAJhEG,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAAhI,EAAE+H,UACD,SAAAF,GACV,CAAA,CAAAvJ,EAAA,KAAA0B,EAAA+H,UAAAzJ,EAAA,KAAAuJ,GAAAvJ,EAAA,KAAA0J,IAAAA,GAAA1J,EAAA,KAAA,IAAA2J,GAAA3J,EAAA,OAAAE,EAAA0J,iBAAA5J,EAAA,OAAA0J,IANJC,IAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,kEAAjB,CACED,GAMCxJ,EAAE0J,gBACG,GAAA5J,EAAA,KAAAE,EAAA0J,gBAAA5J,EAAA,KAAA0J,GAAA1J,EAAA,KAAA2J,IAAAA,GAAA3J,EAAA,KAAA,IAAA6J,GAAA7J,EAAA,OAAAE,EAAA4J,SAIkCD,GAAA7J,EAAA,MAAtC6J,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa3J,EAAE4J,SAAuB,CAAA,CAAA9J,EAAA,KAAAE,EAAA4J,SAAA9J,EAAA,KAAA6J,IAAA,IAAAE,GAAA/J,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAEzB0H,GA9PFpK,GA8PkB,CAAAK,EAAA,KAAA+J,IAAAA,GAAA/J,EAAA,KACpB,IAAAgK,GAAAtI,EAAEoI,SAASG,GAAAjK,EAAA,OAAAa,EAEyEoJ,GAAAjK,EAAA,MADjFiK,GAAAC,GACRrJ,EAAa,CAAAiJ,SAAYnH,EAACE,OAAOa,MAAuD,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAAiK,IAAA,IAAAE,GAAAnK,EAAA,OAAAmB,EAOzFgJ,GAAAnK,EAAA,MAJDmK,GAAAhJ,EAAMiJ,IAAKC,GAIV,CAAArK,EAAA,KAAAmB,EAAAnB,EAAA,KAAAmK,IAAA,IAAAG,GAAAtK,EAAA,OAAA0B,EAAAoI,UAAA9J,EAAA,OAAAiK,IAAAjK,EAAA,OAAAmK,IAXJG,IAAA,EAAA,EAAA,KAAA,SAAA,CACa,UAAAP,GACJ,MAAAC,GACG,SAAAC,YAITE,GAKM,CAAA,CAAAnK,EAAA,KAAA0B,EAAAoI,SAAA9J,EAAA,KAAAiK,GAAAjK,EAAA,KAAAmK,GAAAnK,EAAA,KAAAsK,IAAAA,GAAAtK,EAAA,KAAA,IAAAuK,GAAAvK,EAAA,OAAA6J,IAAA7J,EAAA,OAAAsK,IAdXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,GACAS,GAaI,GAAAtK,EAAA,KAAA6J,GAAA7J,EAAA,KAAAsK,GAAAtK,EAAA,KAAAuK,IAAAA,GAAAvK,EAAA,KAAA,IAAAwK,GAAAxK,EAAA,OAAAE,EAAAuK,YAEqCD,GAAAxK,EAAA,MAAzCwK,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAatK,EAAEuK,YAA0B,CAAA,CAAAzK,EAAA,KAAAE,EAAAuK,YAAAzK,EAAA,KAAAwK,IAAA,IAAAE,GAAA1K,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAE5BqI,GA9QF/K,GA8QkB,CAAAK,EAAA,KAAA0K,IAAAA,GAAA1K,EAAA,KACpB,IAAA2K,GAAAjJ,EAAE+I,YAAYG,GAAA5K,EAAA,OAAAa,EAE4E+J,GAAA5K,EAAA,MADvF4K,GAAAC,GACRhK,EAAa,CAAA4J,YAAe9H,EAACE,OAAOa,MAA0D,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAA4K,IAAA,IAAAE,GAAA9K,EAAA,OAAAoB,EAO/F0J,GAAA9K,EAAA,MAJD8K,GAAA1J,EAASgJ,IAAKW,GAIb,CAAA/K,EAAA,KAAAoB,EAAApB,EAAA,KAAA8K,IAAA,IAAAE,GAAAhL,EAAA,OAAA0B,EAAA+I,aAAAzK,EAAA,OAAA4K,IAAA5K,EAAA,OAAA8K,IAXJE,IAAA,EAAA,EAAA,KAAA,SAAA,CACa,UAAAN,GACJ,MAAAC,GACG,SAAAC,YAITE,GAKM,CAAA,CAAA9K,EAAA,KAAA0B,EAAA+I,YAAAzK,EAAA,KAAA4K,GAAA5K,EAAA,KAAA8K,GAAA9K,EAAA,KAAAgL,IAAAA,GAAAhL,EAAA,KAAA,IAAAiL,GAAAjL,EAAA,OAAAwK,IAAAxK,EAAA,OAAAgL,IAdXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACET,GACAQ,GAaI,GAAAhL,EAAA,KAAAwK,GAAAxK,EAAA,KAAAgL,GAAAhL,EAAA,KAAAiL,IAAAA,GAAAjL,EAAA,KAAA,IAAAkL,GAAAlL,EAAA,OAAAuK,IAAAvK,EAAA,OAAAiL,IAhCRC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qCAAf,CACEX,GAgBAU,GAgBI,GAAAjL,EAAA,KAAAuK,GAAAvK,EAAA,KAAAiL,GAAAjL,EAAA,KAAAkL,IAAAA,GAAAlL,EAAA,KAAA,IAAAmL,GAAAnL,EAAA,OAAAa,EAOiEsK,GAAAnL,EAAA,MAAzDmL,GAAAC,GAAOvK,EAAa,CAAAwK,eAAkB1I,EAACE,OAAOC,QAAU,CAAC,CAAA9C,EAAA,KAAAa,EAAAb,EAAA,KAAAmL,IAAA,IAAAG,GAAAtL,EAAA,OAAA0B,EAAA2J,gBAAArL,EAAA,OAAAmL,IAJrEG,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAA5J,EAAE2J,eACD,SAAAF,GACV,CAAA,CAAAnL,EAAA,KAAA0B,EAAA2J,eAAArL,EAAA,KAAAmL,GAAAnL,EAAA,KAAAsL,IAAAA,GAAAtL,EAAA,KAAA,IAAAuL,GAAAvL,EAAA,OAAAE,EAAAmL,gBAAArL,EAAA,OAAAsL,IANJC,IAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,kEAAjB,CACED,GAMCpL,EAAEmL,eACG,GAAArL,EAAA,KAAAE,EAAAmL,eAAArL,EAAA,KAAAsL,GAAAtL,EAAA,KAAAuL,IAAAA,GAAAvL,EAAA,KAAA,IAAAwL,GAAAxL,EAAA,OAAAE,EAAAuL,YAGmCD,GAAAxL,EAAA,MAAzCwL,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAatL,EAAEuL,YAA0B,CAAA,CAAAzL,EAAA,KAAAE,EAAAuL,YAAAzL,EAAA,KAAAwL,IAAA,IAAAE,GAAA1L,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAE5BqJ,GAAAnM,EA1SAI,GA0SmB,CAAE,6CAA6C,CAAAK,EAAA,KAAA0L,IAAAA,GAAA1L,EAAA,KAAA,IAAA2L,GAAA3L,EAAA,OAAA0B,EAAAkK,UAG3CD,GAAA3L,EAAA,MAA3B2L,GAAA/L,GAAc8B,EAAEkK,UAAW,CAAA5L,EAAA,KAAA0B,EAAAkK,UAAA5L,EAAA,KAAA2L,IAAA,IAAAE,GAAA7L,EAAA,OAAAa,EACuCgL,GAAA7L,EAAA,MAA/D6L,GAAAC,GAAOjL,EAAa,CAAA+K,UAAa/L,GAAY8C,EAACE,OAAOa,MAAM,CAAG,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAA6L,IAAA,IAAAE,GAAA/L,EAAA,OAAA2L,IAAA3L,EAAA,OAAA6L,IAL3EE,IAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAL,GACL,KAAA,EACM,YAAA,iBACL,MAAAC,GACG,SAAAE,GACV,CAAA,CAAA7L,EAAA,KAAA2L,GAAA3L,EAAA,KAAA6L,GAAA7L,EAAA,KAAA+L,IAAAA,GAAA/L,EAAA,KAAA,IAAAgM,GAAAhM,EAAA,OAAAE,EAAA+L,gBACyCD,GAAAhM,EAAA,MAA3CgM,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAY9L,EAAE+L,gBAA6B,CAAA,CAAAjM,EAAA,KAAAE,EAAA+L,gBAAAjM,EAAA,KAAAgM,IAAA,IAAAE,GAAAlM,EAAA,OAAAwL,IAAAxL,EAAA,OAAA+L,IAAA/L,EAAA,OAAAgM,IAT7CE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,GACAO,GAOAC,GACI,GAAAhM,EAAA,KAAAwL,GAAAxL,EAAA,KAAA+L,GAAA/L,EAAA,KAAAgM,GAAAhM,EAAA,KAAAkM,IAAAA,GAAAlM,EAAA,KAAA,IAAAmM,GAAAnM,EAAA,OAAAE,EAAAkM,gBAGyCD,GAAAnM,EAAA,MAA7CmM,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAajM,EAAEkM,gBAA8B,CAAA,CAAApM,EAAA,KAAAE,EAAAkM,gBAAApM,EAAA,KAAAmM,IAAA,IAAAE,GAAArM,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAEhCgK,GAAA9M,EAtTAI,GAsTmB,CAAE,6CAA6C,CAAAK,EAAA,KAAAqM,IAAAA,GAAArM,EAAA,KAAA,IAAAsM,GAAAtM,EAAA,OAAA0B,EAAA6K,eAGtCD,GAAAtM,EAAA,MAAhCsM,GAAA1M,GAAc8B,EAAE6K,eAAgB,CAAAvM,EAAA,KAAA0B,EAAA6K,eAAAvM,EAAA,KAAAsM,IAAA,IAAAE,GAAAxM,EAAA,OAAAa,EACuC2L,GAAAxM,EAAA,MAApEwM,GAAAC,GAAO5L,EAAa,CAAA0L,eAAkB1M,GAAY8C,EAACE,OAAOa,MAAM,CAAG,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAAwM,IAAA,IAAAE,GAAA1M,EAAA,OAAAsM,IAAAtM,EAAA,OAAAwM,IALhFE,IAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAL,GACL,KAAA,EACM,YAAA,iBACL,MAAAC,GACG,SAAAE,GACV,CAAA,CAAAxM,EAAA,KAAAsM,GAAAtM,EAAA,KAAAwM,GAAAxM,EAAA,KAAA0M,IAAAA,GAAA1M,EAAA,KAAA,IAAA2M,GAAA3M,EAAA,OAAAE,EAAA0M,oBAC6CD,GAAA3M,EAAA,MAA/C2M,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYzM,EAAE0M,oBAAiC,CAAA,CAAA5M,EAAA,KAAAE,EAAA0M,oBAAA5M,EAAA,KAAA2M,IAAA,IAAAE,GAAA7M,EAAA,OAAAmM,IAAAnM,EAAA,OAAA0M,IAAA1M,EAAA,OAAA2M,IATjDE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,GACAO,GAOAC,GACI,GAAA3M,EAAA,KAAAmM,GAAAnM,EAAA,KAAA0M,GAAA1M,EAAA,KAAA2M,GAAA3M,EAAA,KAAA6M,IAAAA,GAAA7M,EAAA,KAAA,IAAA8M,GAAA9M,EAAA,OAAAE,EAAA6M,aAIwCD,GAAA9M,EAAA,MAA1C8M,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa5M,EAAE6M,aAA2B,CAAA,CAAA/M,EAAA,KAAAE,EAAA6M,aAAA/M,EAAA,KAAA8M,IAAA,IAAAE,GAAAhN,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAE7B2K,GAAAzN,EAnUFI,GAmUqB,CAAE,mCAAmC,CAAAK,EAAA,KAAAgN,IAAAA,GAAAhN,EAAA,KAG5D,IAAAiN,GAAAjL,OAAON,EAAEqL,aAAc,CAAAG,GAAAlN,EAAA,OAAAa,EACqDqM,GAAAlN,EAAA,MAAzEkN,GAAAC,GAAOtM,EAAa,CAAAkM,aAAgB/E,OAAOrF,EAACE,OAAOa,OAAR,IAA2B,EAAlC,EAAoC,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAAkN,IAAA,IAAAE,GAAApN,EAAA,OAAAiN,IAAAjN,EAAA,OAAAkN,IALrFE,IAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAJ,GACN,KAAA,SACK,UAAA,UACH,MAAAC,GACG,SAAAC,GACV,CAAA,CAAAlN,EAAA,KAAAiN,GAAAjN,EAAA,KAAAkN,GAAAlN,EAAA,KAAAoN,IAAAA,GAAApN,EAAA,KAAA,IAAAqN,GAAArN,EAAA,OAAA8M,IAAA9M,EAAA,OAAAoN,IARJC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEP,GACAM,GAOI,GAAApN,EAAA,KAAA8M,GAAA9M,EAAA,KAAAoN,GAAApN,EAAA,KAAAqN,IAAAA,GAAArN,EAAA,KAAA,IAAAsN,GAAAtN,EAAA,OAAAE,EAAAqN,eAEwCD,GAAAtN,EAAA,MAA5CsN,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAapN,EAAEqN,eAA6B,CAAA,CAAAvN,EAAA,KAAAE,EAAAqN,eAAAvN,EAAA,KAAAsN,IAAA,IAAAE,GAAAxN,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAE/BmL,GAAAjO,EA7UFI,GA6UqB,CAAE,mCAAmC,CAAAK,EAAA,KAAAwN,IAAAA,GAAAxN,EAAA,KAG5D,IAAAyN,GAAAzL,OAAON,EAAE6L,eAAgB,CAAAG,GAAA1N,EAAA,OAAAa,EACqD6M,GAAA1N,EAAA,MAA3E0N,GAAAC,GAAO9M,EAAa,CAAA0M,eAAkBvF,OAAOrF,EAACE,OAAOa,OAAR,IAA2B,EAAlC,EAAoC,CAAC,CAAA1D,EAAA,KAAAa,EAAAb,EAAA,KAAA0N,IAAA,IAAAE,GAAA5N,EAAA,OAAAyN,IAAAzN,EAAA,OAAA0N,IALvFE,IAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAJ,GACN,KAAA,SACK,UAAA,UACH,MAAAC,GACG,SAAAC,GACV,CAAA,CAAA1N,EAAA,KAAAyN,GAAAzN,EAAA,KAAA0N,GAAA1N,EAAA,KAAA4N,IAAAA,GAAA5N,EAAA,KAAA,IAAA6N,GAAA7N,EAAA,OAAAsN,IAAAtN,EAAA,OAAA4N,IARJC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEP,GACAM,GAOI,GAAA5N,EAAA,KAAAsN,GAAAtN,EAAA,KAAA4N,GAAA5N,EAAA,KAAA6N,IAAAA,GAAA7N,EAAA,KAAA,IAAA8N,GAAA9N,EAAA,OAAAqN,IAAArN,EAAA,OAAA6N,IApBRC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qCAAf,CACET,GAUAQ,GAUI,GAAA7N,EAAA,KAAAqN,GAAArN,EAAA,KAAA6N,GAAA7N,EAAA,KAAA8N,IAAAA,GAAA9N,EAAA,KAAA,IAAA+N,GAAA/N,EAAA,OAAAE,EAAA8N,iBAGoED,GAAA/N,EAAA,MAAxE+N,IAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,uCAA+B7N,EAAE8N,iBAAwB,CAAA,CAAAhO,EAAA,KAAAE,EAAA8N,iBAAAhO,EAAA,KAAA+N,IAAA,IAAAE,GAAAjO,EAAA,OAAAE,EAAAgO,cAIzCD,GAAAjO,EAAA,MAAzBiO,GAAA,CAAC,MAAO/N,EAAEgO,cAAe,CAAAlO,EAAA,KAAAE,EAAAgO,cAAAlO,EAAA,KAAAiO,IAAA,IAAAE,GAAAnO,EAAA,OAAAE,EAAAkO,eACED,GAAAnO,EAAA,MAA3BmO,GAAA,CAAC,OAAQjO,EAAEkO,eAAgB,CAAApO,EAAA,KAAAE,EAAAkO,eAAApO,EAAA,KAAAmO,IAAA,IAAAE,GAAArO,EAAA,OAAAE,EAAAoO,gBACED,GAAArO,EAAA,MAA7BqO,GAAA,CAAC,QAASnO,EAAEoO,gBAAiB,CAAAtO,EAAA,KAAAE,EAAAoO,gBAAAtO,EAAA,KAAAqO,IAAA,IAAAE,GAAAvO,EAAA,OAAAE,EAAAsO,eACFD,GAAAvO,EAAA,MAA3BuO,GAAA,CAAC,OAAQrO,EAAEsO,eAAgB,CAAAxO,EAAA,KAAAE,EAAAsO,eAAAxO,EAAA,KAAAuO,IAAA,IAAAE,GAAAzO,EAAA,OAAAE,EAAAwO,kBACMD,GAAAzO,EAAA,MAAjCyO,GAAA,CAAC,UAAWvO,EAAEwO,kBAAmB,CAAA1O,EAAA,KAAAE,EAAAwO,kBAAA1O,EAAA,KAAAyO,IAAA,IAAAE,GAAA3O,EAAA,OAAAE,EAAA0O,iBACFD,GAAA3O,EAAA,MAA/B2O,GAAA,CAAC,SAAUzO,EAAE0O,iBAAkB,CAAA5O,EAAA,KAAAE,EAAA0O,iBAAA5O,EAAA,KAAA2O,IAAA,IAAAE,GAAA7O,EAAA,OAAAiO,IAAAjO,EAAA,OAAAmO,IAAAnO,EAAA,OAAAqO,IAAArO,EAAA,OAAAuO,IAAAvO,EAAA,OAAAyO,IAAAzO,EAAA,OAAA2O,IANjCE,GAAA,CACEZ,GACAE,GACAE,GACAE,GACAE,GACAE,GACD,CAAA3O,EAAA,KAAAiO,GAAAjO,EAAA,KAAAmO,GAAAnO,EAAA,KAAAqO,GAAArO,EAAA,KAAAuO,GAAAvO,EAAA,KAAAyO,GAAAzO,EAAA,KAAA2O,GAAA3O,EAAA,KAAA6O,IAAAA,GAAA7O,EAAA,KAPD,IAAA8O,GAAAD,GAOUG,GAAAhP,EAAA,OAAA0B,EAAAuN,OAAAjP,EAAA,OAAA8O,IAAA9O,EAAA,OAAAa,GATdmO,IAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,0CAEXF,GAOU1E,IACN8E,GAAA,CAAC,GAAA,CAAAC,EAAAC,GAAAF,EAAY,OACjB,EAAA,EAAA,MAAA,QAAA,CAA2B,UAAA,kEAA3B,EACE,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAAnN,EAAQL,EAAEuN,QAASE,GAClB,SAAAE,GACRxO,EAAa,CAAAoO,MACJ,CAAA,GAAKvN,EAAEuN,OAASE,GAAMxM,EAACE,OAAOC,QAAS,CAC/C,CAAA,CAGJsM,CAAAA,CAAAA,EACK,EAZID,EAYJ,EACT,CACG,CAAA,CAAAnP,EAAA,KAAA0B,EAAAuN,MAAAjP,EAAA,KAAA8O,GAAA9O,EAAA,KAAAa,EAAAb,EAAA,KAAAgP,IAAAA,GAAAhP,EAAA,KAAA,IAAAkP,GAAAlP,EAAA,OAAAE,EAAAoP,gBAGAJ,GAAAlP,EAAA,MAFNkP,IAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,iBACb,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYhP,EAAEoP,gBAChB,CAAA,CAAM,CAAA,CAAAtP,EAAA,KAAAE,EAAAoP,gBAAAtP,EAAA,KAAAkP,IAAA,IAAAK,GAAAvP,EAAA,OAAA+N,IAAA/N,EAAA,OAAAgP,IAAAhP,EAAA,OAAAkP,IA9BRK,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,6FAAf,CACExB,GACAiB,GA0BAE,GAGI,GAAAlP,EAAA,KAAA+N,GAAA/N,EAAA,KAAAgP,GAAAhP,EAAA,KAAAkP,GAAAlP,EAAA,KAAAuP,IAAAA,GAAAvP,EAAA,KAAA,IAAAwP,GAAAxP,EAAA,OAAAE,EAAAuP,mBAGsED,GAAAxP,EAAA,MAA1EwP,IAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,uCAA+BtP,EAAEuP,mBAA0B,CAAA,CAAAzP,EAAA,KAAAE,EAAAuP,mBAAAzP,EAAA,KAAAwP,IAK7D,IAAAE,GAAA3N,EAAQL,EAAEiO,SAAmBC,UAACC,GAAA7P,EAAA,OAAA0B,EAAAiO,SAAA3P,EAAA,OAAAa,GAC7BgP,GAAAC,GACRjP,EAAa,CAAA8O,QACF,CAAA,GAAKjO,EAAEiO,QAAQC,UAAajN,EAACE,OAAOC,QAAS,CACvD,CAAC,CAAA9C,EAAA,KAAA0B,EAAAiO,QAAA3P,EAAA,KAAAa,EAAAb,EAAA,KAAA6P,IAAAA,GAAA7P,EAAA,KAAA,IAAA+P,GAAA/P,EAAA,OAAA0P,IAAA1P,EAAA,OAAA6P,IAPNE,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAAL,GACC,SAAAG,GAKV,CAAA,CAAA7P,EAAA,KAAA0P,GAAA1P,EAAA,KAAA6P,GAAA7P,EAAA,KAAA+P,IAAAA,GAAA/P,EAAA,KAAA,IAAAgQ,GAAAhQ,EAAA,OAAAE,EAAA+P,uBAAAjQ,EAAA,OAAA+P,IAVJC,IAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,uEAAjB,CACED,GAUC7P,EAAE+P,sBACG,GAAAjQ,EAAA,KAAAE,EAAA+P,sBAAAjQ,EAAA,KAAA+P,GAAA/P,EAAA,KAAAgQ,IAAAA,GAAAhQ,EAAA,KAAA,IAAAkQ,GAAAlQ,EAAA,OAAAwP,IAAAxP,EAAA,OAAAgQ,IAdVE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,6FAAf,CACEV,GACAQ,GAaI,GAAAhQ,EAAA,KAAAwP,GAAAxP,EAAA,KAAAgQ,GAAAhQ,EAAA,KAAAkQ,IAAAA,GAAAlQ,EAAA,KAAA,IAAAmQ,GAAAnQ,EAAA,OAAA0B,EAGmCyO,GAAAnQ,EAAA,MAA3BmQ,GAAAjR,EAAwBwC,EAAG,CAAA1B,EAAA,KAAA0B,EAAA1B,EAAA,KAAAmQ,IAAA,IAAAC,GAAApQ,EAAA,OAAAqB,GAAAgP,MAGJD,GAAApQ,EAAA,MAAvBoQ,GAAA/O,GAAUgP,OAAV,EAAuB,CAAArQ,EAAA,KAAAqB,GAAAgP,MAAArQ,EAAA,KAAAoQ,IAAA,IAAAE,GAAAtQ,EAAA,OAAAc,EAEgCwP,GAAAtQ,EAAA,MAAzDsQ,IAAAC,EAAAC,IAAc1P,EAAwB,SAAUyP,EAAKC,EAAI,CAAAxQ,EAAA,KAAAc,EAAAd,EAAA,KAAAsQ,IAAA,IAAAG,GAAAzQ,EAAA,OAAAE,GAAAF,EAAA,OAAAG,EAAAuQ,mBAAA/O,QAAA3B,EAAA,OAAAG,EAAAwQ,gBAAA3Q,EAAA,OAAAsB,GAAAtB,EAAA,OAAAmQ,IAAAnQ,EAAA,OAAAoQ,IAAApQ,EAAA,OAAAsQ,IANrEG,IAAA,EAAA,EAAA,KAAC,GAAD,CACc,WAAAN,GACJ,OAAAhQ,EAAIuQ,mBAAmB/O,OACf,eAAAxB,EAAIwQ,eACR,WAAAP,GACF9O,SAAAA,EACA,SAAAgP,GACNpQ,KACJ,CAAA,CAAAF,EAAA,KAAAE,EAAAF,EAAA,KAAAG,EAAAuQ,mBAAA/O,OAAA3B,EAAA,KAAAG,EAAAwQ,eAAA3Q,EAAA,KAAAsB,EAAAtB,EAAA,KAAAmQ,GAAAnQ,EAAA,KAAAoQ,GAAApQ,EAAA,KAAAsQ,GAAAtQ,EAAA,KAAAyQ,IAAAA,GAAAzQ,EAAA,KAAA,IAAA4Q,GAAA5Q,EAAA,OAAAE,EAAA2Q,iBAG8CD,GAAA5Q,EAAA,MAA9C4Q,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa1Q,EAAE2Q,iBAA+B,CAAA,CAAA7Q,EAAA,KAAAE,EAAA2Q,iBAAA7Q,EAAA,KAAA4Q,IAAA,IAAAE,GAAA9Q,EAAA,OAAAoC,OAAAC,IAAA,4BAAA,EAEjCyO,GAAAvR,EArZAI,GAqZmB,CAAE,2CAA2C,CAAAK,EAAA,KAAA8Q,IAAAA,GAAA9Q,EAAA,KAAA,IAAA+Q,GAAA/Q,EAAA,OAAAgB,EAGpB+P,GAAA/Q,EAAA,MAA7C+Q,GAAAC,GAAOhQ,EAAuB2B,EAACE,OAAOa,MAAO,CAAA1D,EAAA,KAAAgB,EAAAhB,EAAA,KAAA+Q,IAAA,IAAAE,GAAAjR,EAAA,OAAAe,GAAAf,EAAA,OAAAkB,GAAAlB,EAAA,OAAA+Q,IAJzDE,IAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAH,GACC,WAAA,GACL/P,MAAAA,EACG,SAAAgQ,GACF7P,OAAAA,EACI,YAAA,yEACZ,CAAA,CAAAlB,EAAA,KAAAe,EAAAf,EAAA,KAAAkB,EAAAlB,EAAA,KAAA+Q,GAAA/Q,EAAA,KAAAiR,IAAAA,GAAAjR,EAAA,KAAA,IAAAkR,GAAAlR,EAAA,OAAAE,EAAAiR,sBAAAnR,EAAA,OAAAiB,GACDiQ,GAAAjQ,GACC,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,kDAA0CA,EAGxD,CAAA,EADC,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYf,EAAEiR,qBACf,CAAA,CAAAnR,EAAA,KAAAE,EAAAiR,qBAAAnR,EAAA,KAAAiB,EAAAjB,EAAA,KAAAkR,IAAAA,GAAAlR,EAAA,KAAA,IAAAoR,GAAApR,EAAA,OAAA4Q,IAAA5Q,EAAA,OAAAiR,IAAAjR,EAAA,OAAAkR,IAdHE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACER,GACAK,GAQCC,GAKG,GAAAlR,EAAA,KAAA4Q,GAAA5Q,EAAA,KAAAiR,GAAAjR,EAAA,KAAAkR,GAAAlR,EAAA,KAAAoR,IAAAA,GAAApR,EAAA,KAAA,IAAAqR,GAAArR,EAAA,OAAA6M,IAAA7M,EAAA,OAAA8N,IAAA9N,EAAA,OAAAuP,IAAAvP,EAAA,OAAAkQ,IAAAlQ,EAAA,OAAAyQ,IAAAzQ,EAAA,OAAAoR,IAAApR,EAAA,OAAA8D,IAAA9D,EAAA,OAAAyF,IAAAzF,EAAA,OAAAgH,IAAAhH,EAAA,OAAAiH,IAAAjH,EAAA,OAAAsJ,IAAAtJ,EAAA,OAAA2J,IAAA3J,EAAA,OAAAkL,IAAAlL,EAAA,OAAAuL,IAAAvL,EAAA,OAAAkM,IArYRmF,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qBAAf,CACEvN,GAcA2B,GA8CAuB,GA4BCC,GAyFDqC,GAkCAK,GAUAuB,GAmCAK,GAUAW,GAYAW,GAYAiB,GAuBAyB,GAiCAW,GAiBAO,GAUAW,GAgBI,GAAApR,EAAA,KAAA6M,GAAA7M,EAAA,KAAA8N,GAAA9N,EAAA,KAAAuP,GAAAvP,EAAA,KAAAkQ,GAAAlQ,EAAA,KAAAyQ,GAAAzQ,EAAA,KAAAoR,GAAApR,EAAA,KAAA8D,GAAA9D,EAAA,KAAAyF,GAAAzF,EAAA,KAAAgH,GAAAhH,EAAA,KAAAiH,GAAAjH,EAAA,KAAAsJ,GAAAtJ,EAAA,KAAA2J,GAAA3J,EAAA,KAAAkL,GAAAlL,EAAA,KAAAuL,GAAAvL,EAAA,KAAAkM,GAAAlM,EAAA,KAAAqR,IAAAA,GAAArR,EAAA,KAG6E,IAAAsR,GAAA,CAAC/P,GAADD,EAAgBiQ,GAAAvR,EAAA,OAAAE,EAAAuB,SAAAzB,EAAA,OAAAyB,GAAAzB,EAAA,OAAAsR,IAAjGC,IAAA,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAsB,UAAA,mBAA6B,SAAAD,GAA2B7P,QAAAA,WACzGvB,EAAEuB,QACI,CAAA,CAAAzB,EAAA,KAAAE,EAAAuB,QAAAzB,EAAA,KAAAyB,EAAAzB,EAAA,KAAAsR,GAAAtR,EAAA,KAAAuR,IAAAA,GAAAvR,EAAA,KAKG,IAAAwR,GAAA,CAACjQ,GAADD,EAAgBmQ,GAAAzR,EAAA,OAAAwB,EAGzBiQ,GAAAzR,EAAA,MAFQyR,GAAA,SAAA,CACP,MAAMjQ,GAAM,EACbxB,EAAA,KAAAwB,EAAAxB,EAAA,KAAAyR,IAEA,IAAAC,GAAApQ,EAASpB,EAAEoB,OAAUpB,EAAEsB,KAAKmQ,GAAA3R,EAAA,OAAAwR,IAAAxR,EAAA,OAAAyR,IAAAzR,EAAA,OAAA0R,IAT/BC,IAAA,EAAA,EAAA,KAAC,EAAD,CACO,KAAA,SACG,QAAA,UACE,UAAA,mBACA,SAAAH,GACD,QAAAC,YAIRC,GACM,CAAA,CAAA1R,EAAA,KAAAwR,GAAAxR,EAAA,KAAAyR,GAAAzR,EAAA,KAAA0R,GAAA1R,EAAA,KAAA2R,IAAAA,GAAA3R,EAAA,KAAA,IAAA4R,GAAA5R,EAAA,OAAAuR,IAAAvR,EAAA,OAAA2R,IAdXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,0DAAf,CACEL,GAGAI,GAWI,GAAA3R,EAAA,KAAAuR,GAAAvR,EAAA,KAAA2R,GAAA3R,EAAA,KAAA4R,IAAAA,GAAA5R,EAAA,KAAA,IAAA6R,GAAA7R,EAAA,OAAAqR,IAAArR,EAAA,OAAA4R,IAAA5R,EAAA,OAAAwC,GAAAxC,EAAA,OAAAkD,IAnaR2O,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,wFAAf,CACErP,EACAU,GAUAmO,GAwYAO,GAgBI,GAAA5R,EAAA,KAAAqR,GAAArR,EAAA,KAAA4R,GAAA5R,EAAA,KAAAwC,EAAAxC,EAAA,KAAAkD,GAAAlD,EAAA,KAAA6R,IAAAA,GAAA7R,EAAA,KAAA,IAAA8R,GACE,OADF9R,EAAA,OAAA6R,IAAA7R,EAAA,OAAAsC,IA3aRwP,IAAA,EAAA,EAAA,MAAA,UAAA,CAAmB,UAAA,iGAAnB,CACExP,GAMAuP,GAqaQ,GAAA7R,EAAA,KAAA6R,GAAA7R,EAAA,KAAAsC,GAAAtC,EAAA,KAAA8R,IAAAA,GAAA9R,EAAA,KA5aV8R,GAhEG,SAAA/G,GAAAgH,EAAA,CAAA,OA4UW,EAAA,EAAA,KAAA,SAAA,CAA+B,MAAAC,EAAGtO,eAC/BsO,EAAG5C,MACG,CAFI4C,EAAGtO,MAEP,CA9UpB,SAAA2G,GAAA2H,EAAA,CAAA,OA4TW,EAAA,EAAA,KAAA,SAAA,CAA+B,MAAAA,EAAGtO,eAC/BsO,EAAG5C,MACG,CAFI4C,EAAGtO,MAEP,CA9TpB,SAAAiE,GAAAsK,EAAA,CAAA,MAqL+D,CAACC,EArLhE,SAAAlN,GAAAkN,EAAA,CAAA,MAuImD,CAACA,6BCtH3D,SAAA,GAAA,EAAA,CACE,MAAA,8LAiBF,SAAA,IAAA,CACE,MAAA,g7BA2DF,SAAA,GAAA,EAAA,wQAeE,GAAA,CAAA,IAAA,EAAA,6EAUA,EAAA,UAAA,EAAA,oJAaE,OAAA,MAAA,QAAA,EAAA,CAAA,EAAA,EAAA,uDAMA,OAAA,GAAA,OAAA,GAAA,SAAA,EAAA,EAAA,s+EA4EF,MAAA,6EAoBF,eAAA,GAAA,EAAA,CAQE,OAAA,MAAA,EAAA,EAAA,mCAAA,CAAA,qDAGF,eAAA,GAAA,EAAA,CAME,OAAA,MAAA,EAAA,EAAA,8BAAA,mBAAA,EAAA,GAAA,CAAA,EAAA,QAAA,OAGF,eAAA,GAAA,EAAA,kJAeI,OADA,EACA,QAAA,KAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EADA,49CAoEF,OAFA,GAAA,CACA,EAAA,GAAA,EAAA,CACA,sBAgBF,eAAA,GAAA,EAAA,CAUE,OAAA,MAAA,EAAA,EAAA,mCAAA,CAAA,qDAGF,eAAA,GAAA,EAAA,CAKE,OAAA,MAAA,EAAA,EAAA,8BAAA,mBAAA,EAAA,GAAA,CAAA,EAAA,QAAA,OChXF,SAAgByJ,GAAoB,CAClCC,OACAC,eACAC,KACAC,iBACAC,gBAOC,CACD,GAAM,CAACK,EAAMC,IAAAA,EAAAA,EAAAA,UAAoB,GAAM,CACjC,CAACH,EAAQI,IAAAA,EAAAA,EAAAA,UAAoC,SAAS,CACtD,CAACC,EAAYC,IAAAA,EAAAA,EAAAA,UAAyC,KAAK,CAC3D,CAACC,EAAOC,IAAAA,EAAAA,EAAAA,UAAoC,KAAK,CACjD,CAACC,EAAOC,IAAAA,EAAAA,EAAAA,UAAoC,KAAK,CACjD,CAACC,EAAWC,IAAAA,EAAAA,EAAAA,UAAwC,KAAK,CACzD,CAACC,EAAaC,IAAAA,EAAAA,EAAAA,UAA2B,GAAM,CAE/CC,GAAAA,EAAAA,EAAAA,aAAwB,KAAOC,IAAoB,CACvDZ,EAAUY,EAAE,CACZN,EAAS,KAAK,CACdJ,EAAc,KAAK,CACnBE,EAAS,KAAK,CACdL,EAAQ,GAAK,CACb,GAAI,CACF,IAAML,EAAS,MAAMb,GAAsB,CAAEe,OAAQgB,EAAG,CAAC,CACzDR,EAASV,EAAOS,MAAM,CACtBD,EAAcR,EAAOO,WAAW,OACzBY,EAAG,CACVP,EAASO,aAAaC,MAAQD,EAAEE,QAAU,eAAe,QACjD,CACRhB,EAAQ,GAAM,GAEf,EAAE,CAAC,EAENtB,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAACY,EAAM,CACTa,EAAc,KAAK,CACnBE,EAAS,KAAK,CACdE,EAAS,KAAK,CACdE,EAAa,KAAK,CAClBE,EAAe,GAAM,CACrBV,EAAU,SAAS,CACnBD,EAAQ,GAAM,CACd,OAEGY,EAAU,SAAS,EACvB,CAACtB,EAAMsB,EAAU,CAAC,EAErBlC,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAACwB,EAAY,OACjB,IAAIe,EAAY,GACZC,EAEEC,EAAO,SAAY,CACvB,GAAI,CACF,IAAMC,EAAS,MAAMrC,GAAuBmB,EAAW,CAGvD,GAFIe,GAEAG,EAAOC,QAAU,UAAW,OAEhC,GAAID,EAAOC,QAAU,OAAQ,CACvBH,IAAeI,IAAAA,KACjBC,OAAOC,cAAcN,EAAW,CAChCA,EAAaI,IAAAA,IAEfnB,EAAc,KAAK,CACfiB,EAAOK,IACTpB,EAAS,KAAK,CACdd,EAAa,GAAM,CACnBE,EAAe,CACbG,MAAOwB,EAAOxB,MACdC,OAAQuB,EAAOvB,OACfC,OAAQsB,EAAOtB,OAChB,CAAC,GAEFS,EAASa,EAAOJ,QAAQ,CACxBX,EAAS,KAAK,EAEhB,OAGEe,EAAOC,QAAU,YACfH,IAAeI,IAAAA,IACjBC,OAAOC,cAAcN,EAAW,CAElCX,EAASa,EAAOJ,QAAQ,CACxBb,EAAc,KAAK,CACnBE,EAAS,KAAK,QAETS,EAAG,CACLG,IACCC,IAAeI,IAAAA,IACjBC,OAAOC,cAAcN,EAAW,CAElCX,EAASO,aAAaC,MAAQD,EAAEE,QAAU,iBAAiB,CAC3Db,EAAc,KAAK,CACnBE,EAAS,KAAK,IAOpB,MAFAa,GAAaK,OAAOG,gBAAkB,KAAKP,GAAM,CAAE,IAAK,CACnDA,GAAM,KACE,CACXF,EAAY,GACRC,IAAeI,IAAAA,IACjBC,OAAOC,cAAcN,EAAW,GAGnC,CAAChB,EAAYX,EAAcE,EAAe,CAAC,EAE9Cf,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAAC0B,EAAO,CACVK,EAAa,KAAK,CAClBE,EAAe,GAAM,CACrB,OAEF,IAAIM,EAAY,GAiBhB,OAhBAN,EAAe,GAAM,CACrB,GAAYgB,UAAUvB,EAAO,CAC3BwB,MAAO,IACPC,OAAQ,EACRC,qBAAsB,IACtBC,MAAO,CAAEC,KAAM,YAAaC,MAAO,YAAY,CAChD,CAAC,CACCC,KAAMC,GAAQ,CACRlB,GAAWR,EAAa0B,EAAI,EACjC,CACDC,UAAY,CACNnB,IACHN,EAAe,GAAK,CACpBF,EAAa,KAAK,GAEpB,KACS,CACXQ,EAAY,KAEb,CAACb,EAAM,CAAC,CAEX,IAAMiC,EAASC,GAAQlC,GAASF,GAE1BqC,EAAmBjD,EAEnBkD,EAAiBlD,GAAQ,CAACgB,GAAS,CAAC+B,EAE1C,OACE,EAAA,EAAA,KAAC,EAAD,CAAmB/C,OAAoBC,yBACrC,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAWN,EACT,iEACAE,EACD,CAAC,CAAA,EAEJ,EAAA,EAAA,MAAC,EAAD,CACE,UAAWF,EACT,4GACAC,EACA,mHACD,CACD,gBAAkB4B,GAAMA,EAAE2B,gBAAgB,UAN5C,EAQE,EAAA,EAAA,KAAC,EAAD,CAAc,QAAA,aACZ,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,+KACV,aAAYjD,EAAGkD,4BAEf,EAAA,EAAA,KAAC,EAAD,CAAG,UAAU,SAAQ,CAAA,CACf,CAAA,CACI,CAAA,EAEd,EAAA,EAAA,KAAC,EAAD,CAAc,UAAU,mBAAWlD,EAAGmD,mBAAiC,CAAA,EACvE,EAAA,EAAA,KAAC,EAAD,CAAoB,UAAU,mBAAWnD,EAAGoD,sBAA0C,CAAA,EAEtF,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,wDAAgDpD,EAAGmD,mBAAsB,CAAA,EACtF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,wCAAgCnD,EAAGoD,sBAAyB,CAAA,CACtE,IAEL,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gFAAf,CACGtC,GACC,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,8DAAsDA,EAAU,CAAA,CAC3E,KAEH,CAACA,IAAU+B,GAAUG,IACpB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mDAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iCACVA,EAAiBhD,EAAGqD,iBAAmBrD,EAAGsD,iBAC1C,CAAA,EACH,EAAA,EAAA,MAAC,MAAD,CACE,UAAW7D,EACT,gJACAuD,GAAkB,2CACnB,UAJH,CAMGA,GACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,mFACV,cAAA,GACA,CAAA,CACA,KACHH,GAAUjC,GAAS,CAACE,GAASE,GAAa,CAACE,GAC1C,EAAA,EAAA,KAAC,MAAD,CAAK,IAAKF,EAAW,IAAI,GAAG,UAAU,0CAA4C,CAAA,CAChF,KACH6B,GAAUjC,GAAS,CAACE,GAAS,CAACE,GAAa,CAACE,GAAe,CAAC8B,GAC3D,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iEAAyDhD,EAAGuD,iBAAqB,CAAA,CAC5F,KACHV,GAAUjC,GAAS,CAACE,GAASI,GAC5B,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yFAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,6CAAqClB,EAAGwD,mBAAsB,CAAA,EAC3E,EAAA,EAAA,MAAC,IAAD,CACE,KAAM5C,EACN,OAAO,SACP,IAAI,aACJ,UAAU,iGAJZ,EAME,EAAA,EAAA,KAAC,GAAD,CAAc,UAAU,kBAAiB,CAAA,CACxCZ,EAAGyD,iBACH,GACC,GACJ,KACD,GACD,GACJ,KACD,GAEJV,GACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,6DACV,KAAK,QACL,aAAY/C,EAAG0D,iCAEf,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4HAAf,EACE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAUnD,EACV,UAAWd,EACT,0FACAY,IAAW,SACP,2DACA,8BACL,CACD,YAAe,KAAKe,EAAU,SAAS,UAEtCpB,EAAG2D,kBACE,CAAA,EACR,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAUpD,EACV,UAAWd,EACT,0FACAY,IAAW,OACP,2DACA,8BACL,CACD,YAAe,KAAKe,EAAU,OAAO,UAEpCpB,EAAG4D,0BACE,CAAA,CACL,GACD,CAAA,CACJ,MAEJ,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,KAAC,EAAD,CACE,KAAK,SACL,QAAQ,YACR,UAAU,iHACV,SAAUrD,EACV,YAAe,KAAKa,EAAUf,EAAO,UAEpCE,EAAOP,EAAGqD,iBAAmBrD,EAAG6D,mBAC3B,CAAA,CACL,CAAA,CAEJ3D,GACC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yEAAiEA,EAAmB,CAAA,CACjG,KACU,GACH,CAAA,CAAA,CACH,CAAA,CChSlB,SAAOyE,GAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,IAAA,CAA0B,CAAAE,KAAAC,iBAAAC,KAAAC,SAAAC,YAAAC,YAAAC,aAAAC,kBAAAC,qBAAAC,kBAAAC,oBAAAb,EAwBhCc,EAAAb,EAAA,KAAAI,EAAAU,QAK4CD,EAAAb,EAAA,IAArCa,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAaT,EAAEU,QAAsB,CAAA,CAAAd,EAAA,GAAAI,EAAAU,QAAAd,EAAA,GAAAa,GAAA,IAAAE,EAAAf,EAAA,KAAAgB,OAAAC,IAAA,4BAAA,EAExBF,EANIpB,GAMY,CAAAK,EAAA,GAAAe,GAAAA,EAAAf,EAAA,GAAA,IAAAkB,EAAAlB,EAAA,KAAAG,EAEiCe,EAAAlB,EAAA,IAAlDkB,EAAAC,GAAOhB,EAAe,CAAAW,QAAWK,EAACC,OAAOC,MAAQ,CAAC,CAAArB,EAAA,GAAAG,EAAAH,EAAA,GAAAkB,GAAA,IAAAI,EAAAtB,EAAA,KAAAkB,GAAAlB,EAAA,KAAAE,EAAAY,SAH9DQ,GAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAP,EACJ,MAAAb,EAAEY,QACC,SAAAI,EACE,YAAA,2BACZ,CAAA,CAAAlB,EAAA,GAAAkB,EAAAlB,EAAA,GAAAE,EAAAY,QAAAd,EAAA,GAAAsB,GAAAA,EAAAtB,EAAA,GAAA,IAAAuB,EAAAvB,EAAA,KAAAa,GAAAb,EAAA,KAAAsB,GAPJC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,EACAS,EAMI,GAAAtB,EAAA,GAAAa,EAAAb,EAAA,GAAAsB,EAAAtB,EAAA,IAAAuB,GAAAA,EAAAvB,EAAA,IAAA,IAAAwB,EAAAxB,EAAA,MAAAI,EAAAqB,MAE+BD,EAAAxB,EAAA,KAAnCwB,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAapB,EAAEqB,MAAoB,CAAA,CAAAzB,EAAA,IAAAI,EAAAqB,MAAAzB,EAAA,IAAAwB,GAAA,IAAAE,EAAA1B,EAAA,MAAAgB,OAAAC,IAAA,4BAAA,EAEtBS,EAfI/B,GAeY,CAAAK,EAAA,IAAA0B,GAAAA,EAAA1B,EAAA,IAAA,IAAA2B,EAAA3B,EAAA,MAAAG,EAE+BwB,EAAA3B,EAAA,KAAhD2B,EAAAC,GAAOzB,EAAe,CAAAsB,MAASN,EAACC,OAAOC,MAAQ,CAAC,CAAArB,EAAA,IAAAG,EAAAH,EAAA,IAAA2B,GAAA,IAAAE,EAAA7B,EAAA,MAAA2B,GAAA3B,EAAA,MAAAE,EAAAuB,OAH5DI,GAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAH,EACJ,MAAAxB,EAAEuB,MACC,SAAAE,EACE,YAAA,gCACZ,CAAA,CAAA3B,EAAA,IAAA2B,EAAA3B,EAAA,IAAAE,EAAAuB,MAAAzB,EAAA,IAAA6B,GAAAA,EAAA7B,EAAA,IAAA,IAAA8B,EAAA9B,EAAA,MAAAwB,GAAAxB,EAAA,MAAA6B,GAPJC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEN,EACAK,EAMI,GAAA7B,EAAA,IAAAwB,EAAAxB,EAAA,IAAA6B,EAAA7B,EAAA,IAAA8B,GAAAA,EAAA9B,EAAA,IAAA,IAAA+B,EAAA/B,EAAA,MAAAG,EAC+F4B,EAAA/B,EAAA,KAAtC+B,EAAAC,GAAO7B,EAAe,CAAA8B,SAAYD,EAAG,CAAC,CAAAhC,EAAA,IAAAG,EAAAH,EAAA,IAAA+B,GAAA,IAAAG,EAAAlC,EAAA,MAAAI,EAAA6B,UAAAjC,EAAA,MAAAK,GAAAL,EAAA,MAAA+B,GAAA/B,EAAA,MAAAE,EAAA+B,UAArGC,GAAA,EAAA,EAAA,KAAC,GAAD,CAAoB,MAAA9B,EAAE6B,SAAkB,MAAA/B,EAAE+B,SAAqB,SAAAF,EAAiD1B,QAAAA,EAAU,CAAA,CAAAL,EAAA,IAAAI,EAAA6B,SAAAjC,EAAA,IAAAK,EAAAL,EAAA,IAAA+B,EAAA/B,EAAA,IAAAE,EAAA+B,SAAAjC,EAAA,IAAAkC,GAAAA,EAAAlC,EAAA,IAAA,IAAAmC,EAAAnC,EAAA,MAAAG,EAIrEgC,EAAAnC,EAAA,KAAzCmC,EAAAC,GAAOjC,EAAe,CAAAkC,YAAeL,EAAG,CAAC,CAAAhC,EAAA,IAAAG,EAAAH,EAAA,IAAAmC,GAAA,IAAAG,EAAAtC,EAAA,MAAAI,EAAAiC,aAAArC,EAAA,MAAAM,GAAAN,EAAA,MAAAmC,GAAAnC,EAAA,MAAAE,EAAAmC,aAHrDC,GAAA,EAAA,EAAA,KAAC,GAAD,CACS,MAAAlC,EAAEiC,YACF,MAAAnC,EAAEmC,YACC,SAAAF,EACD7B,QAAAA,EACT,CAAA,CAAAN,EAAA,IAAAI,EAAAiC,YAAArC,EAAA,IAAAM,EAAAN,EAAA,IAAAmC,EAAAnC,EAAA,IAAAE,EAAAmC,YAAArC,EAAA,IAAAsC,GAAAA,EAAAtC,EAAA,IAAA,IAAAuC,EAAAvC,EAAA,MAAAG,EAImDoC,EAAAvC,EAAA,KAAzCuC,EAAAC,GAAOrC,EAAe,CAAAsC,YAAeT,EAAG,CAAC,CAAAhC,EAAA,IAAAG,EAAAH,EAAA,IAAAuC,GAAA,IAAAG,EAAA1C,EAAA,MAAAI,EAAAqC,aAAAzC,EAAA,MAAAO,GAAAP,EAAA,MAAAuC,GAAAvC,EAAA,MAAAE,EAAAuC,aAHrDC,GAAA,EAAA,EAAA,KAAC,GAAD,CACS,MAAAtC,EAAEqC,YACF,MAAAvC,EAAEuC,YACC,SAAAF,EACDhC,QAAAA,EACT,CAAA,CAAAP,EAAA,IAAAI,EAAAqC,YAAAzC,EAAA,IAAAO,EAAAP,EAAA,IAAAuC,EAAAvC,EAAA,IAAAE,EAAAuC,YAAAzC,EAAA,IAAA0C,GAAAA,EAAA1C,EAAA,IAAA,IAAA2C,EAAA3C,EAAA,MAAAG,EAIkDwC,EAAA3C,EAAA,KAAxC2C,EAAAC,GAAOzC,EAAe,CAAA0C,WAAcb,EAAG,CAAC,CAAAhC,EAAA,IAAAG,EAAAH,EAAA,IAAA2C,GAAA,IAAAG,EAAA9C,EAAA,MAAAI,EAAAyC,YAAA7C,EAAA,MAAAQ,GAAAR,EAAA,MAAA2C,GAAA3C,EAAA,MAAAE,EAAA2C,YAHpDC,GAAA,EAAA,EAAA,KAAC,GAAD,CACS,MAAA1C,EAAEyC,WACF,MAAA3C,EAAE2C,WACC,SAAAF,EACDnC,QAAAA,EACT,CAAA,CAAAR,EAAA,IAAAI,EAAAyC,WAAA7C,EAAA,IAAAQ,EAAAR,EAAA,IAAA2C,EAAA3C,EAAA,IAAAE,EAAA2C,WAAA7C,EAAA,IAAA8C,GAAAA,EAAA9C,EAAA,IAAA,IAAA+C,GAAA/C,EAAA,MAAAI,EAAA4C,gBAE6CD,GAAA/C,EAAA,KAA7C+C,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa3C,EAAE4C,gBAA8B,CAAA,CAAAhD,EAAA,IAAAI,EAAA4C,gBAAAhD,EAAA,IAAA+C,IAAA,IAAAE,EAAAjD,EAAA,MAAAgB,OAAAC,IAAA,4BAAA,EAEhCgC,EAAA3D,EA3CIK,GA2Ce,CAAE,6CAA6C,CAAAK,EAAA,IAAAiD,GAAAA,EAAAjD,EAAA,IAAA,IAAAkD,EAAAlD,EAAA,MAAAE,EAAAiD,eAGtCD,EAAAlD,EAAA,KAAhCkD,EAAAtD,GAAcM,EAAEiD,eAAgB,CAAAnD,EAAA,IAAAE,EAAAiD,eAAAnD,EAAA,IAAAkD,GAAA,IAAAE,EAAApD,EAAA,MAAAG,EACyCiD,EAAApD,EAAA,KAAtEoD,EAAAC,GAAOlD,EAAe,CAAAgD,eAAkBtD,GAAYsB,EAACC,OAAOC,MAAM,CAAG,CAAC,CAAArB,EAAA,IAAAG,EAAAH,EAAA,IAAAoD,GAAA,IAAAE,GAAAtD,EAAA,MAAAkD,GAAAlD,EAAA,MAAAoD,GALlFE,IAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAL,EACL,KAAA,EACM,YAAA,iBACL,MAAAC,EACG,SAAAE,EACV,CAAA,CAAApD,EAAA,IAAAkD,EAAAlD,EAAA,IAAAoD,EAAApD,EAAA,IAAAsD,IAAAA,GAAAtD,EAAA,IAAA,IAAAuD,EAAAvD,EAAA,MAAA+C,IAAA/C,EAAA,MAAAsD,IARJC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACER,GACAO,GAOI,GAAAtD,EAAA,IAAA+C,GAAA/C,EAAA,IAAAsD,GAAAtD,EAAA,IAAAuD,GAAAA,EAAAvD,EAAA,IAAA,IAAAwD,GAAAxD,EAAA,MAAAI,EAAAqD,aAGwCD,GAAAxD,EAAA,KAA1CwD,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAapD,EAAEqD,aAA2B,CAAA,CAAAzD,EAAA,IAAAI,EAAAqD,aAAAzD,EAAA,IAAAwD,IAAA,IAAAE,EAAA1D,EAAA,MAAAgB,OAAAC,IAAA,4BAAA,EAK7ByC,EAzDE/D,GAyDc,CAAAK,EAAA,IAAA0D,GAAAA,EAAA1D,EAAA,IAAA,IAAA2D,EAAA3D,EAAA,MAAAG,EAE0DwD,EAAA3D,EAAA,KAA3E2D,EAAAC,GAAOzD,EAAe,CAAAsD,aAAgBI,SAAS1C,EAACC,OAAOC,MAAQ,GAAS,EAAlC,GAAoC,CAAC,CAAArB,EAAA,IAAAG,EAAAH,EAAA,IAAA2D,GAAA,IAAAG,EAAA9D,EAAA,MAAA2D,GAAA3D,EAAA,MAAAE,EAAAuD,cANvFK,GAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,SACA,IAAA,GACA,IAAA,IACM,UAAAJ,EACJ,MAAAxD,EAAEuD,aACC,SAAAE,EACV,CAAA,CAAA3D,EAAA,IAAA2D,EAAA3D,EAAA,IAAAE,EAAAuD,aAAAzD,EAAA,IAAA8D,GAAAA,EAAA9D,EAAA,IAAA,IAAA+D,GAAA/D,EAAA,MAAAwD,IAAAxD,EAAA,MAAA8D,GATJC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEP,GACAM,EAQI,GAAA9D,EAAA,IAAAwD,GAAAxD,EAAA,IAAA8D,EAAA9D,EAAA,IAAA+D,IAAAA,GAAA/D,EAAA,IAAA,IAAAgE,GAAAhE,EAAA,MAAAI,EAAA6D,eAEwCD,GAAAhE,EAAA,KAA5CgE,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa5D,EAAE6D,eAA6B,CAAA,CAAAjE,EAAA,IAAAI,EAAA6D,eAAAjE,EAAA,IAAAgE,IAAA,IAAAE,GAAAlE,EAAA,MAAAgB,OAAAC,IAAA,4BAAA,EAM/BiD,GArEEvE,GAqEc,CAAAK,EAAA,IAAAkE,IAAAA,GAAAlE,EAAA,IAAA,IAAAmE,EAAAnE,EAAA,MAAAG,EAE8DgE,EAAAnE,EAAA,KAA/EmE,EAAAC,GAAOjE,EAAe,CAAA8D,eAAkBJ,SAAS1C,EAACC,OAAOC,MAAQ,GAAW,EAApC,IAAsC,CAAC,CAAArB,EAAA,IAAAG,EAAAH,EAAA,IAAAmE,GAAA,IAAAE,GAAArE,EAAA,MAAAmE,GAAAnE,EAAA,MAAAE,EAAA+D,gBAP3FI,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,SACA,IAAA,IACA,IAAA,IACC,KAAA,IACK,UAAAH,GACJ,MAAAhE,EAAE+D,eACC,SAAAE,EACV,CAAA,CAAAnE,EAAA,IAAAmE,EAAAnE,EAAA,IAAAE,EAAA+D,eAAAjE,EAAA,IAAAqE,IAAAA,GAAArE,EAAA,IAAA,IAAAsE,EAAAtE,EAAA,MAAAgE,IAAAhE,EAAA,MAAAqE,IAVJC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEN,GACAK,GASI,GAAArE,EAAA,IAAAgE,GAAAhE,EAAA,IAAAqE,GAAArE,EAAA,IAAAsE,GAAAA,EAAAtE,EAAA,IAAA,IAAAuE,EAAAvE,EAAA,MAAA+D,IAAA/D,EAAA,MAAAsE,GAvBRC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qCAAf,CACER,GAWAO,EAYI,GAAAtE,EAAA,IAAA+D,GAAA/D,EAAA,IAAAsE,EAAAtE,EAAA,IAAAuE,GAAAA,EAAAvE,EAAA,IAAA,IAAAwE,EAAAxE,EAAA,MAAAG,EAM0DqE,EAAAxE,EAAA,KAAlDwE,EAAAC,GAAOtE,EAAe,CAAAuE,MAASvD,EAACC,OAAOuD,QAAU,CAAC,CAAA3E,EAAA,IAAAG,EAAAH,EAAA,IAAAwE,GAAA,IAAAI,GAAA5E,EAAA,MAAAwE,GAAAxE,EAAA,MAAAE,EAAAwE,OAJ9DE,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAA1E,EAAEwE,MACD,SAAAF,EACV,CAAA,CAAAxE,EAAA,IAAAwE,EAAAxE,EAAA,IAAAE,EAAAwE,MAAA1E,EAAA,IAAA4E,IAAAA,GAAA5E,EAAA,IAAA,IAAA6E,EAAA7E,EAAA,MAAAI,EAAA0E,eAAA9E,EAAA,MAAA4E,IANJC,GAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,kEAAjB,CACED,GAMCxE,EAAE0E,cACG,GAAA9E,EAAA,IAAAI,EAAA0E,cAAA9E,EAAA,IAAA4E,GAAA5E,EAAA,IAAA6E,GAAAA,EAAA7E,EAAA,IAAA,IAAA+E,EAAA/E,EAAA,MAAAI,EAAA4E,iBAEwCD,EAAA/E,EAAA,KAA9C+E,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa3E,EAAE4E,iBAA+B,CAAA,CAAAhF,EAAA,IAAAI,EAAA4E,iBAAAhF,EAAA,IAAA+E,GAAA,IAAAE,EAAAjF,EAAA,MAAAgB,OAAAC,IAAA,4BAAA,EAEjCgE,EAAA3F,EAvFIK,GAuFe,CAAE,2CAA2C,CAAAK,EAAA,IAAAiF,GAAAA,EAAAjF,EAAA,IAAA,IAAAkF,GAAAlF,EAAA,MAAAU,EAGxBwE,GAAAlF,EAAA,MAAzCkF,GAAAC,GAAOzE,EAAmBS,EAACC,OAAOC,MAAO,CAAArB,EAAA,IAAAU,EAAAV,EAAA,KAAAkF,IAAA,IAAAE,EAAApF,EAAA,OAAAY,GAAAZ,EAAA,OAAAkF,IAAAlF,EAAA,OAAAS,GAJrD2E,GAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAH,EACC,WAAA,GACLxE,MAAAA,EACG,SAAAyE,GACFtE,OAAAA,EACI,YAAA,sEACZ,CAAA,CAAAZ,EAAA,KAAAY,EAAAZ,EAAA,KAAAkF,GAAAlF,EAAA,KAAAS,EAAAT,EAAA,KAAAoF,GAAAA,EAAApF,EAAA,KAAA,IAAAqF,EAAArF,EAAA,OAAAI,EAAAkF,sBAAAtF,EAAA,OAAAW,GACD0E,EAAA1E,GACC,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,kDAA0CA,EAGxD,CAAA,EADC,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYP,EAAEkF,qBACf,CAAA,CAAAtF,EAAA,KAAAI,EAAAkF,qBAAAtF,EAAA,KAAAW,EAAAX,EAAA,KAAAqF,GAAAA,EAAArF,EAAA,KAAA,IAAAuF,EAAAvF,EAAA,OAAA+E,GAAA/E,EAAA,OAAAoF,GAAApF,EAAA,OAAAqF,GAdHE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACER,EACAK,EAQCC,EAKG,GAAArF,EAAA,KAAA+E,EAAA/E,EAAA,KAAAoF,EAAApF,EAAA,KAAAqF,EAAArF,EAAA,KAAAuF,GAAAA,EAAAvF,EAAA,KAAA,IAAAwF,EACF,OADExF,EAAA,OAAA8B,GAAA9B,EAAA,OAAAkC,GAAAlC,EAAA,OAAAsC,GAAAtC,EAAA,OAAA0C,GAAA1C,EAAA,OAAA8C,GAAA9C,EAAA,OAAAuD,GAAAvD,EAAA,OAAAuE,GAAAvE,EAAA,OAAA6E,GAAA7E,EAAA,OAAAuF,GAAAvF,EAAA,OAAAuB,GAjGRiE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,uEAAf,CACEjE,EASAO,EASAI,EACAI,EAMAI,EAMAI,EAMAS,EAUAgB,EAyBAM,EASAU,EAgBI,GAAAvF,EAAA,KAAA8B,EAAA9B,EAAA,KAAAkC,EAAAlC,EAAA,KAAAsC,EAAAtC,EAAA,KAAA0C,EAAA1C,EAAA,KAAA8C,EAAA9C,EAAA,KAAAuD,EAAAvD,EAAA,KAAAuE,EAAAvE,EAAA,KAAA6E,EAAA7E,EAAA,KAAAuF,EAAAvF,EAAA,KAAAuB,EAAAvB,EAAA,KAAAwF,GAAAA,EAAAxF,EAAA,KAlGNwF,ECjBJ,SAAO6B,GAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,IAAA,CAAuC,CAAAE,OAAAC,eAAAC,KAAAC,OAAAC,WAAAC,aAAAC,gBAAAC,YAAAC,eAAAC,SAAAC,YAAAC,iBAAAC,0BAAAC,kBAAAC,qBAAAC,kBAAAC,mBAAAC,UAAAC,YAAAC,YAAAC,cAAAC,aAAAC,SAAAC,SAAAC,QAAAC,YAAA5B,EAwD5C6B,EAAWvB,EAAIwB,SAAUC,GAAA9B,EAAA,KAAAM,EACyDwB,GAAA9B,EAAA,IAA1D8B,GAAAxB,EAAWT,GAAwBS,EAAQuB,SAAe,CAA1D,GAA0D7B,EAAA,GAAAM,EAAAN,EAAA,GAAA8B,IAAlF,IAAAC,EAAwBD,GAA2DE,EAAAhC,EAAA,KAAA4B,EACxCI,EAAAhC,EAAA,IAA3BgC,EAAAnC,GAAwB+B,EAAG,CAAA5B,EAAA,GAAA4B,EAAA5B,EAAA,GAAAgC,GAA3C,IAAAC,EAAgBD,EAA4BE,GAAAlC,EAAA,KAAAS,GAAAT,EAAA,KAAA+B,GAAA/B,EAAA,KAAAiC,GAE1CC,GAAA,CAACzB,GAAa0B,EAAQC,OAAOL,EAAgB,CAAAM,MAAO,EAAKJ,IAAYF,EAAe/B,EAAA,GAAAS,EAAAT,EAAA,GAAA+B,EAAA/B,EAAA,GAAAiC,EAAAjC,EAAA,GAAAkC,IAAAA,GAAAlC,EAAA,GADtF,IAAAsC,EACEJ,GAAqFK,EAAAvC,EAAA,KAAAwC,OAAAC,IAAA,4BAAA,EAKjFF,GAAA,EAAA,EAAA,KAAA,EAAA,CACa,UAAApD,EACT,iEACAE,EACF,CACA,CAAA,CAAAW,EAAA,GAAAuC,GAAAA,EAAAvC,EAAA,GAAA,IAAA0C,GAAA1C,EAAA,KAAAwC,OAAAC,IAAA,4BAAA,EAEWC,GAAAvD,EACT,4GACAC,EACA,mHACD,CAAAY,EAAA,GAAA0C,IAAAA,GAAA1C,EAAA,GAAA,IAAA2C,EAAA3C,EAAA,MAAAI,EAAAwC,cAK2GD,EAAA3C,EAAA,KAAxG2C,GAAA,EAAA,EAAA,KAAA,EAAA,CAAwB,UAAA,wDAAgDvC,EAAEwC,cAA8B,CAAA,CAAA5C,EAAA,IAAAI,EAAAwC,cAAA5C,EAAA,IAAA2C,GAAA,IAAAE,EAAA7C,EAAA,MAAAI,EAAA0C,iBACHD,EAAA7C,EAAA,KAArG6C,GAAA,EAAA,EAAA,KAAA,EAAA,CAA8B,UAAA,sCAA8BzC,EAAE0C,iBAAuC,CAAA,CAAA9C,EAAA,IAAAI,EAAA0C,iBAAA9C,EAAA,IAAA6C,GAAA,IAAAE,EAAA/C,EAAA,MAAA2C,GAAA3C,EAAA,MAAA6C,GAFvGE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAA,SAAA,CACEJ,EACAE,EACI,CAAA,CAAA,CAAA7C,EAAA,IAAA2C,EAAA3C,EAAA,IAAA6C,EAAA7C,EAAA,IAAA+C,GAAAA,EAAA/C,EAAA,IAAA,IAAAgD,EAAAhD,EAAA,MAAAwC,OAAAC,IAAA,4BAAA,EAOFO,GAAA,EAAA,EAAA,KAAC,EAAD,CAAa,UAAA,SAAW,CAAA,CAAAhD,EAAA,IAAAgD,GAAAA,EAAAhD,EAAA,IAAA,IAAAiD,GAAAjD,EAAA,MAAAI,EAAA8C,YAEbD,GAAAjD,EAAA,KARfiD,IAAA,EAAA,EAAA,KAAA,EAAA,CAAc,QAAA,aACZ,EAAA,EAAA,KAAA,SAAA,CACO,KAAA,SACK,UAAA,mJACE,aAAA7C,EAAE8C,qBAEdF,EAEJ,CAAA,CAAe,CAAA,CAAAhD,EAAA,IAAAI,EAAA8C,YAAAlD,EAAA,IAAAiD,IAAA,IAAAE,GAAAnD,EAAA,MAAAiD,IAAAjD,EAAA,MAAA+C,GAbjBI,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,kDAAf,CACEJ,EAIAE,GASI,GAAAjD,EAAA,IAAAiD,GAAAjD,EAAA,IAAA+C,EAAA/C,EAAA,IAAAmD,IAAAA,GAAAnD,EAAA,IAAA,IAAAoD,GAAApD,EAAA,MAAAa,EAO4DuC,GAAApD,EAAA,KAApDoD,GAAAC,GAAOxC,EAAe,CAAAyC,QAAWC,EAACC,OAAOC,QAAU,CAAC,CAAAzD,EAAA,IAAAa,EAAAb,EAAA,IAAAoD,IAAA,IAAAM,GAAA1D,EAAA,MAAAoD,IAAApD,EAAA,MAAA4B,EAAA0B,SAJhEI,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAA9B,EAAE0B,QACD,SAAAF,GACV,CAAA,CAAApD,EAAA,IAAAoD,GAAApD,EAAA,IAAA4B,EAAA0B,QAAAtD,EAAA,IAAA0D,IAAAA,GAAA1D,EAAA,IAAA,IAAA2D,GAAA3D,EAAA,MAAAI,EAAAwD,mBACkCD,GAAA3D,EAAA,KAApC2D,IAAA,EAAA,EAAA,KAAA,OAAA,CAAA,SAAOvD,EAAEwD,mBAA2B,CAAA,CAAA5D,EAAA,IAAAI,EAAAwD,mBAAA5D,EAAA,IAAA2D,IAAA,IAAAE,GAAA7D,EAAA,MAAA0D,IAAA1D,EAAA,MAAA2D,IAPtCE,IAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,uEAAjB,CACEH,GAMAC,GACM,GAAA3D,EAAA,IAAA0D,GAAA1D,EAAA,IAAA2D,GAAA3D,EAAA,IAAA6D,IAAAA,GAAA7D,EAAA,IAAA,IAAA8D,GAAA9D,EAAA,MAAAwC,OAAAC,IAAA,4BAAA,EAMFqB,IAAA,EAAA,EAAA,KAAA,OAAA,CAAgB,UAAA,0CAAiC,KAAS,CAAA,CAAA9D,EAAA,IAAA8D,IAAAA,GAAA9D,EAAA,IAAA,IAAA+D,GAAA/D,EAAA,MAAAI,EAAA4D,cAC/CD,GAAA/D,EAAA,KAHb+D,IAAA,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,CACG3D,EAAE4D,cACHF,GACW,CAAA,CAAA,CAAA9D,EAAA,IAAAI,EAAA4D,cAAAhE,EAAA,IAAA+D,IAAA,IAAAE,GAAAjE,EAAA,MAAAwC,OAAAC,IAAA,4BAAA,EAGEwB,GAAA9E,EA1DJO,GA0DuB,CAAE,mCAAmC,CAAAM,EAAA,IAAAiE,IAAAA,GAAAjE,EAAA,IAC7D,IAAAkE,GAAAzD,EAAA,OAAA,WAA+B0D,GAAAnE,EAAA,MAAAsC,GAAAtC,EAAA,MAAA+B,GAAA/B,EAAA,MAAAiC,GAInCkC,GAAA7B,EACI,IAAG8B,OAAQC,KAAIC,IAAK,EAAGvC,EAAewC,OAChC,CAAC,CAFXtC,EAEWjC,EAAA,IAAAsC,EAAAtC,EAAA,IAAA+B,EAAA/B,EAAA,IAAAiC,EAAAjC,EAAA,IAAAmE,IAAAA,GAAAnE,EAAA,IAAA,IAAAwE,EAAAxE,EAAA,MAAAsC,GAAAtC,EAAA,MAAA4B,EAAA6C,UAAAzE,EAAA,MAAAa,GAEH2D,EAAAE,GAAA,CACR,GAAIpC,EAA0B,OAC9B,IAAAqC,EAAa/C,EAAE6C,UAAkBG,SAAIhG,GAAqB,UAAU,CACpEiC,EAAe,CAAA4D,SACH,CAAA,GACL7C,EAAE6C,SAASG,QACL,CAAA,GAAKD,EAAIE,UAAa,UAASC,SAAYvB,EAACC,OAAOuB,MAAO,CACrE,CACD,CAAC,EACH/E,EAAA,IAAAsC,EAAAtC,EAAA,IAAA4B,EAAA6C,SAAAzE,EAAA,IAAAa,EAAAb,EAAA,IAAAwE,GAAAA,EAAAxE,EAAA,IAAA,IAAAgF,GAAAhF,EAAA,MAAAkE,IAAAlE,EAAA,MAAAmE,IAAAnE,EAAA,MAAAwE,GAAAxE,EAAA,MAAAsC,GAnBH0C,IAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAf,GACL,KAAAC,GACO,aAAA,MACH5B,SAAAA,EAER,MAAA6B,GAIQ,SAAAK,EAUE,YAAA,uCACZ,CAAA,CAAAxE,EAAA,IAAAkE,GAAAlE,EAAA,IAAAmE,GAAAnE,EAAA,IAAAwE,EAAAxE,EAAA,IAAAsC,EAAAtC,EAAA,IAAAgF,IAAAA,GAAAhF,EAAA,IAAA,IAAAiF,GAAAjF,EAAA,MAAAI,EAAAO,QAAAX,EAAA,MAAAI,EAAA8E,MAAAlF,EAAA,MAAAW,GAAAX,EAAA,MAAAY,GAAAZ,EAAA,MAAAiC,GACDgD,GAAAhD,GACC,EAAA,EAAA,MAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAsB,UAAA,oBAA6B,YAAM,KAAKrB,GAAU,UAAtG,CACGD,GAAS,EAAA,EAAA,KAAC,EAAD,CAAiB,UAAA,WAA6C,CAAA,EAA7B,EAAA,EAAA,KAAC,EAAD,CAAgB,UAAA,WAAY,CAAA,CACtEA,EAASP,EAAEO,OAAUP,EAAE8E,KAEpB,GALP,KAKOlF,EAAA,IAAAI,EAAAO,OAAAX,EAAA,IAAAI,EAAA8E,KAAAlF,EAAA,IAAAW,EAAAX,EAAA,IAAAY,EAAAZ,EAAA,IAAAiC,EAAAjC,EAAA,IAAAiF,IAAAA,GAAAjF,EAAA,IAAA,IAAAmF,GAAAnF,EAAA,MAAAU,EAKgCyE,GAAAnF,EAAA,KAA7BmF,OAAMzE,EAAa0E,GAAU,CAAApF,EAAA,IAAAU,EAAAV,EAAA,IAAAmF,IAAA,IAAAE,GAAArF,EAAA,MAAAS,EAEqC4E,GAAArF,EAAA,KAA1EqF,GAAA5E,GAAY,EAAA,EAAA,KAAC,EAAD,CAAkB,UAAA,WAA4C,CAAA,EAA5B,EAAA,EAAA,KAAC,GAAD,CAAe,UAAA,WAAa,CAAA,CAAAT,EAAA,IAAAS,EAAAT,EAAA,IAAAqF,IAC1E,IAAAC,GAAA7E,EAAYL,EAAEmF,KAAQnF,EAAEoF,KAAKC,GAAAzF,EAAA,MAAAmF,IAAAnF,EAAA,MAAAqF,IAAArF,EAAA,MAAAsF,IAPhCG,IAAA,EAAA,EAAA,MAAC,EAAD,CACO,KAAA,SACG,QAAA,YACE,UAAA,oBACD,QAAAN,YAJX,CAMGE,GACAC,GACM,GAAAtF,EAAA,IAAAmF,GAAAnF,EAAA,IAAAqF,GAAArF,EAAA,IAAAsF,GAAAtF,EAAA,IAAAyF,IAAAA,GAAAzF,EAAA,IAAA,IAAA0F,GAAA1F,EAAA,MAAAgF,IAAAhF,EAAA,MAAAiF,IAAAjF,EAAA,MAAAyF,IArCXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,gCAAf,CACEV,GAsBCC,GAMDQ,GASI,GAAAzF,EAAA,IAAAgF,GAAAhF,EAAA,IAAAiF,GAAAjF,EAAA,IAAAyF,GAAAzF,EAAA,IAAA0F,IAAAA,GAAA1F,EAAA,IAAA,IAAA2F,GAAA3F,EAAA,MAAAI,EAAAwF,kBACuCD,GAAA3F,EAAA,KAA7C2F,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYvF,EAAEwF,kBAA+B,CAAA,CAAA5F,EAAA,IAAAI,EAAAwF,kBAAA5F,EAAA,IAAA2F,IAAA,IAAAE,GAAA7F,EAAA,MAAA+D,IAAA/D,EAAA,MAAA0F,IAAA1F,EAAA,MAAA2F,IA5C/CE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACE9B,GAIA2B,GAuCAC,GACI,GAAA3F,EAAA,IAAA+D,GAAA/D,EAAA,IAAA0F,GAAA1F,EAAA,IAAA2F,GAAA3F,EAAA,IAAA6F,IAAAA,GAAA7F,EAAA,IAAA,IAAA8F,GAAA9F,EAAA,MAAAI,EAAA2F,YAGqCD,GAAA9F,EAAA,KAAzC8F,IAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa1F,EAAE2F,YAA0B,CAAA,CAAA/F,EAAA,IAAAI,EAAA2F,YAAA/F,EAAA,IAAA8F,IAAA,IAAAE,GAAAhG,EAAA,MAAAwC,OAAAC,IAAA,4BAAA,EAE5BuD,GAAA7G,EArGFO,GAqGqB,CAAE,6CAA6C,CAAAM,EAAA,IAAAgG,IAAAA,GAAAhG,EAAA,IAAA,IAAAiG,GAAAjG,EAAA,MAAA4B,EAAAsE,UAG3CD,GAAAjG,EAAA,KAA3BiG,GAAAtG,GAAciC,EAAEsE,UAAW,CAAAlG,EAAA,IAAA4B,EAAAsE,UAAAlG,EAAA,IAAAiG,IAAA,IAAAE,GAAAnG,EAAA,MAAAa,EACyCsF,GAAAnG,EAAA,KAAjEmG,GAAAC,GAAOvF,EAAe,CAAAqF,UAAatG,GAAY2D,EAACC,OAAOuB,MAAM,CAAG,CAAC,CAAA/E,EAAA,IAAAa,EAAAb,EAAA,IAAAmG,IAAA,IAAAE,GAAArG,EAAA,MAAAiG,IAAAjG,EAAA,MAAAmG,IAL7EE,IAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAL,GACL,KAAA,EACM,YAAA,uBACL,MAAAC,GACG,SAAAE,GACV,CAAA,CAAAnG,EAAA,IAAAiG,GAAAjG,EAAA,IAAAmG,GAAAnG,EAAA,IAAAqG,IAAAA,GAAArG,EAAA,IAAA,IAAAsG,GAAAtG,EAAA,MAAAI,EAAAmG,gBACyCD,GAAAtG,EAAA,KAA3CsG,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYlG,EAAEmG,gBAA6B,CAAA,CAAAvG,EAAA,IAAAI,EAAAmG,gBAAAvG,EAAA,IAAAsG,IAAA,IAAAE,GAAAxG,EAAA,MAAA8F,IAAA9F,EAAA,MAAAqG,IAAArG,EAAA,MAAAsG,IAT7CE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,GACAO,GAOAC,GACI,GAAAtG,EAAA,IAAA8F,GAAA9F,EAAA,IAAAqG,GAAArG,EAAA,IAAAsG,GAAAtG,EAAA,IAAAwG,IAAAA,GAAAxG,EAAA,IAAA,IAAAyG,GAAAzG,EAAA,MAAA4B,EAGqC6E,GAAAzG,EAAA,KAA7ByG,GAAA9H,EAA0BiD,EAAG,CAAA5B,EAAA,IAAA4B,EAAA5B,EAAA,IAAAyG,IAAA,IAAAC,GAAA1G,EAAA,MAAAuB,GAAAoF,MAGND,GAAA1G,EAAA,KAAvB0G,GAAAnF,GAAUoF,OAAV,EAAuB,CAAA3G,EAAA,IAAAuB,GAAAoF,MAAA3G,EAAA,IAAA0G,IAAA,IAAAE,GAAA5G,EAAA,MAAAc,EAEkC8F,GAAA5G,EAAA,KAA3D4G,IAAAC,EAAAC,IAAchG,EAAwB,WAAY+F,EAAKC,EAAI,CAAA9G,EAAA,IAAAc,EAAAd,EAAA,IAAA4G,IAAA,IAAAG,GAAA/G,EAAA,MAAAI,GAAAJ,EAAA,MAAAK,EAAA2G,mBAAAnF,UAAA7B,EAAA,MAAAK,EAAA4G,gBAAAjH,EAAA,MAAAwB,GAAAxB,EAAA,OAAAyG,IAAAzG,EAAA,OAAA0G,IAAA1G,EAAA,OAAA4G,IANvEG,IAAA,EAAA,EAAA,KAAC,GAAD,CACc,WAAAN,GACJ,OAAApG,EAAI2G,mBAAmBnF,SACf,eAAAxB,EAAI4G,eACR,WAAAP,GACFlF,SAAAA,EACA,SAAAoF,GACNxG,KACJ,CAAA,CAAAJ,EAAA,IAAAI,EAAAJ,EAAA,IAAAK,EAAA2G,mBAAAnF,SAAA7B,EAAA,IAAAK,EAAA4G,eAAAjH,EAAA,IAAAwB,EAAAxB,EAAA,KAAAyG,GAAAzG,EAAA,KAAA0G,GAAA1G,EAAA,KAAA4G,GAAA5G,EAAA,KAAA+G,IAAAA,GAAA/G,EAAA,KAAA,IAAAkH,GAAAlH,EAAA,OAAAQ,EAMuC0G,GAAAlH,EAAA,MAA9BkH,OAAM1G,EAAc2G,GAAU,CAAAnH,EAAA,KAAAQ,EAAAR,EAAA,KAAAkH,IAEwB,IAAAE,GAAA7G,GAAA,aAA0B8G,GAAArH,EAAA,OAAAoH,GAACC,GAAArH,EAAA,MAAlEqH,GAAAlI,EAAG,mCAAoCiI,GAA2B,CAAApH,EAAA,KAAAoH,GAAApH,EAAA,KAAAqH,IAAA,IAAAC,GAAAtH,EAAA,OAAAqH,GAAIC,GAAAtH,EAAA,MAA9FsH,IAAA,EAAA,EAAA,KAAC,EAAD,CAAwB,UAAAD,GAAsE,CAAA,CAAArH,EAAA,KAAAqH,GAAArH,EAAA,KAAAsH,IAC7F,IAAAC,GAAAhH,EAAaH,EAAEoH,aAAgBpH,EAAEqH,aAAaC,GAAA1H,EAAA,OAAAkH,IAAAlH,EAAA,OAAAsH,IAAAtH,EAAA,OAAAuH,IAPjDG,IAAA,EAAA,EAAA,MAAC,EAAD,CACO,KAAA,SACG,QAAA,QACE,UAAA,2EACD,QAAAR,YAJX,CAMEI,GACCC,GACM,GAAAvH,EAAA,KAAAkH,GAAAlH,EAAA,KAAAsH,GAAAtH,EAAA,KAAAuH,GAAAvH,EAAA,KAAA0H,IAAAA,GAAA1H,EAAA,KAAA,IAAA2H,GAAA3H,EAAA,OAAAI,GAAAJ,EAAA,OAAAmB,IAAAnB,EAAA,OAAAoB,GAAApB,EAAA,OAAAkB,GAAAlB,EAAA,OAAAqB,GAAArB,EAAA,OAAAgB,GAAAhB,EAAA,OAAAsB,IAAAtB,EAAA,OAAA4B,GAAA5B,EAAA,OAAAe,GAAAf,EAAA,OAAAiB,GAAAjB,EAAA,OAAAO,GAAAP,EAAA,OAAAa,GAER8G,GAAApH,GACC,EAAA,EAAA,KAAC,GAAD,CACMqB,KACYf,iBACZT,KACIe,UACGC,YACAC,YACCC,cACKP,kBACGC,qBACHC,kBACCC,mBAEd,CAAA,CAdP,KAcOlB,EAAA,KAAAI,EAAAJ,EAAA,KAAAmB,GAAAnB,EAAA,KAAAoB,EAAApB,EAAA,KAAAkB,EAAAlB,EAAA,KAAAqB,EAAArB,EAAA,KAAAgB,EAAAhB,EAAA,KAAAsB,GAAAtB,EAAA,KAAA4B,EAAA5B,EAAA,KAAAe,EAAAf,EAAA,KAAAiB,EAAAjB,EAAA,KAAAO,EAAAP,EAAA,KAAAa,EAAAb,EAAA,KAAA2H,IAAAA,GAAA3H,EAAA,KAAA,IAAA4H,GAAA5H,EAAA,OAAA6F,IAAA7F,EAAA,OAAAwG,IAAAxG,EAAA,OAAA+G,IAAA/G,EAAA,OAAA0H,IAAA1H,EAAA,OAAA2H,IA9FVC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,0BAAf,CACE/B,GA+CAW,GAYAO,GAUAW,GAUCC,GAeG,GAAA3H,EAAA,KAAA6F,GAAA7F,EAAA,KAAAwG,GAAAxG,EAAA,KAAA+G,GAAA/G,EAAA,KAAA0H,GAAA1H,EAAA,KAAA2H,GAAA3H,EAAA,KAAA4H,IAAAA,GAAA5H,EAAA,KAAA,IAAA6H,GAAA7H,EAAA,OAAAG,EAGwE0H,GAAA7H,EAAA,MAAzB6H,OAAM1H,EAAa,GAAM,CAAAH,EAAA,KAAAG,EAAAH,EAAA,KAAA6H,IAAA,IAAAC,GAAA9H,EAAA,OAAAI,EAAA8C,aAAAlD,EAAA,OAAA6H,IAA5EC,IAAA,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAqB,QAAAD,YAChDzH,EAAE8C,YACI,CAAA,CAAAlD,EAAA,KAAAI,EAAA8C,YAAAlD,EAAA,KAAA6H,GAAA7H,EAAA,KAAA8H,IAAAA,GAAA9H,EAAA,KAC2C,IAAA+H,GAAA,CAACtG,IAADD,EAAgBwG,GAAAhI,EAAA,OAAAI,EAAAuB,SAAA3B,EAAA,OAAA2B,IAAA3B,EAAA,OAAA+H,IAApEC,IAAA,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAsB,SAAAD,GAA2BpG,QAAAA,YAC5EvB,EAAEuB,QACI,CAAA,CAAA3B,EAAA,KAAAI,EAAAuB,QAAA3B,EAAA,KAAA2B,GAAA3B,EAAA,KAAA+H,GAAA/H,EAAA,KAAAgI,IAAAA,GAAAhI,EAAA,KAIG,IAAAiI,GAAA,CAACxG,IAADD,EAAgB0G,GAAAlI,EAAA,OAAAG,GAAAH,EAAA,OAAA0B,IACjBwG,GAAA,SAAA,CAEHC,MADazG,IAAM,EACfvB,EAAa,GAAM,EAC5BH,EAAA,KAAAG,EAAAH,EAAA,KAAA0B,GAAA1B,EAAA,KAAAkI,IAAAA,GAAAlI,EAAA,KAEA,IAAAoI,GAAA5G,EAASpB,EAAEoB,OAAUpB,EAAEsB,KAAK2G,GAAArI,EAAA,OAAAiI,IAAAjI,EAAA,OAAAkI,IAAAlI,EAAA,OAAAoI,IAT/BC,IAAA,EAAA,EAAA,KAAC,EAAD,CACO,KAAA,SACG,QAAA,UACE,SAAAJ,GACD,QAAAC,YAKRE,GACM,CAAA,CAAApI,EAAA,KAAAiI,GAAAjI,EAAA,KAAAkI,GAAAlI,EAAA,KAAAoI,GAAApI,EAAA,KAAAqI,IAAAA,GAAArI,EAAA,KAAA,IAAAsI,GAAAtI,EAAA,OAAA8H,IAAA9H,EAAA,OAAAgI,IAAAhI,EAAA,OAAAqI,IAjBXC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,0GAAf,CACER,GAGAE,GAGAK,GAWI,GAAArI,EAAA,KAAA8H,GAAA9H,EAAA,KAAAgI,GAAAhI,EAAA,KAAAqI,GAAArI,EAAA,KAAAsI,IAAAA,GAAAtI,EAAA,KAAA,IAAAuI,GAAAvI,EAAA,OAAAmD,IAAAnD,EAAA,OAAA6D,IAAA7D,EAAA,OAAA4H,IAAA5H,EAAA,OAAAsI,IA5JVC,IAAA,EAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CACEhG,GAMA,EAAA,EAAA,MAAA,EAAA,CACa,UAAAG,GAKM,gBAAA8F,YANnB,CAQErF,GAgBAU,GAUA+D,GAiGAU,GAoBJ,GAAgB,CAAA,CAAA,CAAAtI,EAAA,KAAAmD,GAAAnD,EAAA,KAAA6D,GAAA7D,EAAA,KAAA4H,GAAA5H,EAAA,KAAAsI,GAAAtI,EAAA,KAAAuI,IAAAA,GAAAvI,EAAA,KAAA,IAAAyI,GACJ,OADIzI,EAAA,OAAAG,GAAAH,EAAA,OAAAE,GAAAF,EAAA,OAAAuI,IA/JlBE,IAAA,EAAA,EAAA,KAAA,EAAA,CAAmBvI,OAAoBC,wBACrCoI,GA+JY,CAAA,CAAAvI,EAAA,KAAAG,EAAAH,EAAA,KAAAE,EAAAF,EAAA,KAAAuI,GAAAvI,EAAA,KAAAyI,IAAAA,GAAAzI,EAAA,KAhKdyI,GA/DG,SAAAtB,GAAAuB,EAAA,CAAA,MAmL2C,CAACA,EAnL5C,SAAAtD,GAAAuD,EAAA,CAAA,MAgJ8C,CAACA,EAhJ/C,SAAAH,GAAAjF,EAAA,CAAA,OA6E2BA,EAACqF,gBAAiB,CC/EpD,SAAgBoB,IAA2B,CACzC,IAAMC,EAAWH,EAAgBI,GAAMA,EAAED,SAAS,CAC5CE,EAAIP,EAASK,EAAS,CACtBG,EAAKD,EAAEE,iBAEPG,EAAWC,EADHZ,EAAiBU,GAAOA,EAAGD,MAChBA,CAEnB,CAACI,EAAMC,IAAAA,EAAAA,EAAAA,UAAkD,KAAK,CAC9D,CAACC,EAAUC,IAAAA,EAAAA,EAAAA,UAAsD,KAAK,CACtE,CAACC,EAAQC,IAAAA,EAAAA,EAAAA,UAAsB,GAAM,CACrC,CAACC,EAAOC,IAAAA,EAAAA,EAAAA,UAAoC,KAAK,CACjD,CAACC,EAAQC,IAAAA,EAAAA,EAAAA,UAAsB,GAAM,CAErC,CAACC,EAAiBC,IAAAA,EAAAA,EAAAA,UAA+B,GAAM,CACvD,CAACC,EAAmBC,IAAAA,EAAAA,EAAAA,UAAiC,GAAM,CAC3D,CAACC,EAAiBC,IAAAA,EAAAA,EAAAA,UAA+B,GAAM,CACvD,CAACC,EAAcC,IAAAA,EAAAA,EAAAA,UAAqE,KAAK,CACzF,CAACC,EAAqBC,IAAAA,EAAAA,EAAAA,UAAkD,KAAK,CAC7E,CAACC,EAA0BC,KAAAA,EAAAA,EAAAA,UAAuD,KAAK,CACvF,CAACC,EAAYC,IAAAA,EAAAA,EAAAA,UAA0B,GAAM,CAC7C,CAACC,EAAWC,IAAAA,EAAAA,EAAAA,UAAyB,GAAM,CAC3C,CAACC,GAAkBC,IAAAA,EAAAA,EAAAA,UAAgC,GAAM,CACzD,CAACC,GAA0BC,IAAAA,EAAAA,EAAAA,UAAwC,GAAM,CACzE,CAACC,EAAQC,IAAAA,EAAAA,EAAAA,UAAsB,GAAM,CACrC,CAACC,GAAcC,KAAAA,EAAAA,EAAAA,UAA4B,GAAM,CACjD,CAACC,GAAqBC,IAAAA,EAAAA,EAAAA,UAAmC,GAAM,CAE/D,CAACC,GAAiBC,IAAAA,EAAAA,EAAAA,UAA+B,GAAG,CACpD,CAACC,GAAiBC,IAAAA,EAAAA,EAAAA,UAA+B,GAAG,CACpD,CAACC,EAAiBC,IAAAA,EAAAA,EAAAA,UAA+B,GAAG,CACpD,CAACC,GAAiBC,IAAAA,EAAAA,EAAAA,UAA+B,GAAG,CACpD,CAACC,EAAqBC,IAAAA,EAAAA,EAAAA,UAAmC,GAAG,CAC5D,CAACC,GAAqBC,IAAAA,EAAAA,EAAAA,UAAmC,GAAG,CAE5D,CAAEC,KAAMC,GAAe1E,EAAOuB,EAAW,yBAA2B,KAAMtB,EAAiB,CAC/F0E,kBAAmB,GACpB,CAAC,CAEI,CAAEF,KAAMG,EAAS7C,MAAO8C,EAAUC,YAAWC,WAAW7E,EAAoBqB,EAAS,CAErFyD,IAAAA,EAAAA,EAAAA,aAEFJ,GAASK,SAASC,SAAWC,IAAAA,GAEzB,KADA/E,GAA4BwE,EAAQK,QAAQC,OAAO,CAEzD,CAACN,EACH,CAAC,CAEKQ,IAAAA,EAAAA,EAAAA,aACA,CAAC3D,GAAQ,CAACE,EAAiB,GACxB0D,KAAKC,UAAU7D,EAAK,GAAK4D,KAAKC,UAAU3D,EAAS,CACvD,CAACF,EAAME,EAAS,CAAC,EAEpB9B,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAAC0B,EAAU,CACbG,EAAQ,KAAK,CACbE,EAAY,KAAK,CACjB,OAEEoD,KAAW,OACVI,KACH1D,EAAQsD,GAAO,CACfpD,EAAY2D,gBAAgBP,GAAO,CAAC,CACpClB,EAAmBuB,KAAKC,UAAUN,GAAOQ,SAASC,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAC3EzB,EAAmB,GAAG,CACtBE,EAAmBmB,KAAKC,UAAUN,GAAOU,OAAOD,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CACzErB,EAAmB,GAAG,CACtBE,EAAuBe,KAAKC,UAAUN,GAAOW,QAAQF,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAC9EjB,EAAuB,GAAG,CAC1BtC,EAAU,GAAM,IAEjB,CAACX,EAAUyD,GAAQI,GAAM,CAAC,CAE7B,IAAMQ,GAAUpE,GAAQD,GAAYuD,GAAaF,IAAYO,IAAAA,IAAa,CAACN,GACrEgB,GACJhB,aAAoBiB,MAAQjB,EAASkB,QAAUlB,EAAWmB,OAAOnB,EAAS,CAAG,KAEzEoB,GAAAA,EAAAA,EAAAA,cACHC,EAA2CC,EAAmBC,IAAoB,CACjF1E,EAAS2E,GAAM,CACb,GAAI,CAACA,EAAG,OAAO,KACf,IAAMC,EAAIJ,IAAY,WAAa,WAAaA,IAAY,SAAW,SAAW,SAClF,MAAO,CACL,GAAGG,EACHE,mBAAoB,CAClB,GAAGF,EAAEE,oBACJD,GAAI,CAAE,GAAGD,EAAEE,mBAAmBD,IAAKH,GAAYC,EAAQI,MAAM,CAACC,aAAY,CAAE,CAC/E,CACD,EACD,EAEJ,EACF,CAAC,CAEKC,IAAAA,EAAAA,EAAAA,aAA8BC,GAAsD,CACxFjF,EAAS2E,GAAOA,EAAI,CAAE,GAAGA,EAAGb,SAAU,CAAE,GAAGa,EAAEb,SAAU,GAAGmB,EAAM,CAAG,CAAG,KAAM,EAC3E,EAAE,CAAC,CAEAE,IAAAA,EAAAA,EAAAA,aAA4BF,GAAoD,CACpFjF,EAAS2E,GAAOA,EAAI,CAAE,GAAGA,EAAGX,OAAQ,CAAE,GAAGW,EAAEX,OAAQ,GAAGiB,EAAM,CAAG,CAAG,KAAM,EACvE,EAAE,CAAC,CAEAG,IAAAA,EAAAA,EAAAA,aAA4BH,GAAoD,CACpFjF,EAAS2E,GAAOA,EAAI,CAAE,GAAGA,EAAGV,OAAQ,CAAE,GAAGU,EAAEV,OAAQ,GAAGgB,EAAM,CAAG,CAAG,KAAM,EACvE,EAAE,CAAC,CAwPN,MAAO,CACL3F,WACAE,IACAC,KACAI,WACAqE,WACAC,cACAd,UACAtD,OACAE,WACAyD,SACAvD,SACAE,QACAE,SACAE,kBACAC,qBACAC,oBACAC,uBACAC,kBACAC,qBACAC,eACAC,kBACAC,sBACAC,yBACAC,2BACAE,aACAC,gBACAC,YACAC,eACAC,oBACAC,sBACAC,4BACAC,8BACAC,SACAE,gBACAE,uBACAE,mBACAC,qBACAC,mBACAE,kBACAC,qBACAC,mBACAE,sBACAC,yBACAC,uBACAG,aACAuB,0BACAS,kBACAG,gBACAC,gBACAC,MAAAA,EAAAA,EAAAA,aAxSuB,SAA8B,CACrD,GAAI,CAACtF,GAAQI,EAAQ,MAAO,GAC5BC,EAAU,GAAK,CACfE,EAAS,KAAK,CACdE,EAAU,GAAM,CAChB,GAAI,CACF,IAAM+E,EAAO,MAAM5G,GAAsBoB,EAAK,CAC9CC,EAAQuF,EAAK,CACb,IAAMC,EAAgB3B,gBAAgB0B,EAAK,CAU3C,OATArF,EAAYsF,EAAc,CAC1BpD,EAAmBuB,KAAKC,UAAU4B,EAAc1B,SAASC,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAClFzB,EAAmB,GAAG,CACtBE,EAAmBmB,KAAKC,UAAU4B,EAAcxB,OAAOD,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAChFrB,EAAmB,GAAG,CACtBE,EAAuBe,KAAKC,UAAU4B,EAAcvB,QAAQF,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CACrFjB,EAAuB,GAAG,CAC1BtC,EAAU,GAAK,CACfiF,OAAOC,eAAiBlF,EAAU,GAAM,CAAE,KAAK,CACxC,SACAmF,EAAG,CAEV,OADArF,EAASqF,aAAavB,MAAQuB,EAAEtB,QAAU5E,EAAGmG,UAAU,CAChD,UACC,CACRxF,EAAU,GAAM,GAEjB,CAACL,EAAMI,EAAQV,EAAGmG,UAAU,CA+Q7BP,CACAQ,SAAAA,EAAAA,EAAAA,iBA9QgC,CAChC,GAAI,CAAC5F,EAAU,OACf,IAAM6F,EAAIjC,gBAAgB5D,EAAS,CACnCD,EAAQ8F,EAAE,CACV1D,EAAmBuB,KAAKC,UAAUkC,EAAEhC,SAASC,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CACtEzB,EAAmB,GAAG,CACtBE,EAAmBmB,KAAKC,UAAUkC,EAAE9B,OAAOD,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CACpErB,EAAmB,GAAG,CACtBE,EAAuBe,KAAKC,UAAUkC,EAAE7B,QAAQF,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CACzEjB,EAAuB,GAAG,CAC1BxC,EAAS,KAAK,CACdE,EAAU,GAAM,EACf,CAACP,EAAS,CAkQX4F,CACAE,sBAAAA,EAAAA,EAAAA,aAhQA,MAAOC,EAAyCC,IAAqB,CACnE,GAAI,CAAClG,GAAQI,EAAQ,OACrB,IAAM+F,EAAOnG,EACPwF,EACJS,IAAU,SACN,CAAE,GAAGjG,EAAMiE,OAAQ,CAAE,GAAGjE,EAAKiE,OAAQiC,UAAQ,CAAG,CAChDD,IAAU,WACR,CAAE,GAAGjG,EAAM+D,SAAU,CAAE,GAAG/D,EAAK+D,SAAUmC,UAAQ,CAAG,CACpD,CAAE,GAAGlG,EAAMkE,OAAQ,CAAE,GAAGlE,EAAKkE,OAAQgC,UAAQ,CAAG,CACxDjG,EAAQuF,EAAK,CACbnF,EAAU,GAAK,CACfE,EAAS,KAAK,CACd,GAAI,CACF,IAAM6F,EAAS,MAAMxH,GAAsB4G,EAAK,CAChDvF,EAAQmG,EAAO,CACf,IAAMX,EAAgB3B,gBAAgBsC,EAAO,CAC7CjG,EAAYsF,EAAc,CAC1BpD,EAAmBuB,KAAKC,UAAU4B,EAAc1B,SAASC,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAClFvB,EAAmBmB,KAAKC,UAAU4B,EAAcxB,OAAOD,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAChFnB,EAAuBe,KAAKC,UAAU4B,EAAcvB,QAAQF,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,OAC9E4B,EAAG,CACVrF,EAASqF,aAAavB,MAAQuB,EAAEtB,QAAU5E,EAAGmG,UAAU,CACvD5F,EAAQkG,EAAK,QACL,CACR9F,EAAU,GAAM,GAGpB,CAACL,EAAMI,EAAQV,EAAGmG,UACpB,CAoOEG,CACAK,eAAAA,EAAAA,EAAAA,aAnOgC,SAAY,CAC5C,GAAI,CAACrG,GAAQ,CAACgB,GAAgBZ,EAAQ,OACtC,IAAMkG,EAAW5H,IAAsB,CACjC8G,EACJxE,IAAiB,SACb,CAAE,GAAGhB,EAAMiE,OAAQqC,EAASrC,OAAQ,CACpCjD,IAAiB,WACf,CAAE,GAAGhB,EAAM+D,SAAUuC,EAASvC,SAAU,CACxC,CAAE,GAAG/D,EAAMkE,OAAQoC,EAASpC,OAAQ,CAC5C7D,EAAU,GAAK,CACfE,EAAS,KAAK,CACd,GAAI,CACF,IAAM6F,EAAS,MAAMxH,GAAsB4G,EAAK,CAChDvF,EAAQmG,EAAO,CACf,IAAMX,EAAgB3B,gBAAgBsC,EAAO,CAC7CjG,EAAYsF,EAAc,CAC1BpD,EAAmBuB,KAAKC,UAAU4B,EAAc1B,SAASC,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAClFvB,EAAmBmB,KAAKC,UAAU4B,EAAcxB,OAAOD,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CAChFzB,EAAmB,GAAG,CACtBI,EAAmB,GAAG,CACtBE,EAAuBe,KAAKC,UAAU4B,EAAcvB,QAAQF,UAAY,EAAE,CAAE,KAAM,EAAE,CAAC,CACrFjB,EAAuB,GAAG,CAC1B9B,EAAgB,KAAK,CACrBR,EAAU,GAAK,CACfiF,OAAOC,eAAiBlF,EAAU,GAAM,CAAE,KAAK,OACxCmF,EAAG,CACVrF,EAASqF,aAAavB,MAAQuB,EAAEtB,QAAU5E,EAAGmG,UAAU,QAC/C,CACRxF,EAAU,GAAM,GAEjB,CAACL,EAAMgB,EAAcZ,EAAQV,EAAGmG,UAAU,CAqM3CQ,CACAE,WAAAA,EAAAA,EAAAA,aApM4B,SAAY,CACxC,IAAMC,EAAIxG,EAAOX,GAAwBW,EAAK+D,SAAS,CAAG,GACrDyC,IACL,MAAMC,UAAUC,UAAUC,UAAUH,EAAE,CAACI,UAAY,GAAG,CACtD7E,EAAU,GAAK,CACf2D,OAAOC,eAAiB5D,EAAU,GAAM,CAAE,IAAK,GAC9C,CAAC/B,EAAK,CA8LPuG,CACAM,4BAAAA,EAAAA,EAAAA,aA5LCC,GAA+D,CAC9DzB,GAAa,CACX0B,MAAOD,EAAOC,MACdC,OAAQF,EAAOE,OACfd,QAAS,GACV,CAAC,CACG5C,IAAQ,CACbjC,GAA4B3B,EAAGwH,qBAAqB,CACpDxB,OAAOC,eAAiBtE,GAA4B,KAAK,CAAE,IAAK,EAElE,CAACgE,GAAc/B,GAAQ5D,EAAGwH,qBAC5B,CAiLEL,CACAM,kBAAAA,EAAAA,EAAAA,aAhLmC,SAAY,CAC/C,IAAMX,EAAIxG,GAAMkE,QAAQkD,UACnBZ,IACL,MAAMC,UAAUC,UAAUC,UAAUH,EAAE,CAACI,UAAY,GAAG,CACtD3E,GAAgB,GAAK,CACrByD,OAAOC,eAAiB1D,GAAgB,GAAM,CAAE,IAAK,GACpD,CAACjC,EAAK,CA0KPmH,CACAE,yBAAAA,EAAAA,EAAAA,aAzK0C,SAAY,CACtD,IAAMC,EAAKtH,GAAMkE,OACjB,GAAI,CAACoD,EAAI,OACT,IAAM9D,EAAU,CACd+D,eAAgBD,EAAGC,eACnBC,kBAAmBF,EAAGE,mBAAqB,GAC3CC,WAAYH,EAAGG,YAAc,GAC7BC,YAAaJ,EAAGI,aAAe,GAC/BC,YAAaL,EAAGK,aAAe,EAC/BC,YAAaN,EAAGM,aAAe,GAChC,CACD,MAAMnB,UAAUC,UAAUC,UAAU/C,KAAKC,UAAUL,EAAS,KAAM,EAAE,CAAC,CAACoD,UAAY,GAAG,CACrFzE,EAAuB,GAAK,CAC5BuD,OAAOC,eAAiBxD,EAAuB,GAAM,CAAE,IAAK,EAC3D,CAACnC,EAAK,CA2JPqH,CACAQ,kBAAAA,EAAAA,EAAAA,iBA1JyC,CACzC,GAAI,CAAC7H,EAAM,OACX,IAAM8H,EAAM1F,GAAgB2C,MAAM,CAClC,GAAI,CAAC+C,EAAK,CACR7C,GAAe,CAAEjB,SAAU,EAAC,CAAG,CAAC,CAChCzB,EAAmB,GAAG,CACtB,OAEF,GAAI,CACF,IAAMwF,EAAanE,KAAKoE,MAAMF,EAAI,CAClC,GAAI,OAAOC,GAAe,WAAYA,GAAuBE,MAAMC,QAAQH,EAAW,CACpF,MAAU1D,MAAM3E,EAAGyI,mBAAmB,CAExClD,GAAe,CAAEjB,SAAU+D,EAA6D,CAAC,CACzFxF,EAAmB,GAAG,OACf6F,EAAK,CACZ7F,EAAmB6F,aAAe/D,MAAQ+D,EAAI9D,QAAU5E,EAAG2I,YAAY,GAExE,CAACrI,EAAMoC,GAAiB6C,GAAgBvF,EAAGyI,mBAAoBzI,EAAG2I,YAAY,CAwI/ER,CACAS,kBAAAA,EAAAA,EAAAA,iBAvIyC,CACzC,GAAI,CAACtI,EAAM,OACX,IAAM8H,EAAMtF,EAAgBuC,MAAM,CAClC,GAAI,CAAC+C,EAAK,CACR1C,GAAa,CAAEpB,SAAU,EAAC,CAAG,CAAC,CAC9BrB,EAAmB,GAAG,CACtB,OAEF,GAAI,CACF,IAAMoF,EAAanE,KAAKoE,MAAMF,EAAI,CAClC,GAAI,OAAOC,GAAe,WAAYA,GAAuBE,MAAMC,QAAQH,EAAW,CACpF,MAAU1D,MAAM3E,EAAGyI,mBAAmB,CAExC/C,GAAa,CAAEpB,SAAU+D,EAA2D,CAAC,CACrFpF,EAAmB,GAAG,OACfyF,EAAK,CACZzF,EAAmByF,aAAe/D,MAAQ+D,EAAI9D,QAAU5E,EAAG2I,YAAY,GAExE,CAACrI,EAAMwC,EAAiB4C,GAAc1F,EAAGyI,mBAAoBzI,EAAG2I,YAAY,CAqH7EC,CACAC,sBAAAA,EAAAA,EAAAA,iBApH6C,CAC7C,GAAI,CAACvI,EAAM,OACX,IAAM8H,EAAMlF,EAAoBmC,MAAM,CACtC,GAAI,CAAC+C,EAAK,CACRzC,GAAa,CAAErB,SAAU,EAAC,CAAG,CAAC,CAC9BjB,EAAuB,GAAG,CAC1B,OAEF,GAAI,CACF,IAAMgF,EAAanE,KAAKoE,MAAMF,EAAI,CAClC,GAAI,OAAOC,GAAe,WAAYA,GAAuBE,MAAMC,QAAQH,EAAW,CACpF,MAAU1D,MAAM3E,EAAGyI,mBAAmB,CAExC9C,GAAa,CAAErB,SAAU+D,EAA2D,CAAC,CACrFhF,EAAuB,GAAG,OACnBqF,EAAK,CACZrF,EAAuBqF,aAAe/D,MAAQ+D,EAAI9D,QAAU5E,EAAG2I,YAAY,GAE5E,CAACrI,EAAM4C,EAAqByC,GAAc3F,EAAGyI,mBAAoBzI,EAAG2I,YAAY,CAkGjFE,CACAC,QAAAA,EAAAA,EAAAA,aA/FG,CAAC,UAAW,YAAa,OAAQ,WAAW,CAAgBC,IAAKC,IAAW,CAC3EA,QACAC,MAAOjJ,EAAGkJ,OAAOC,GAAGH,GACrB,EAAE,CACL,CAAChJ,EAAGkJ,OAAOC,GACb,CA0FEL,CACAM,WAAAA,EAAAA,EAAAA,aAvFG,CAAC,OAAQ,WAAY,YAAY,CAAmBL,IAAKC,IAAW,CACnEA,MAAAA,EACAC,MAAOjJ,EAAGkJ,OAAOG,MAAML,GACxB,EAAE,CACL,CAAChJ,EAAGkJ,OAAOG,MACb,CAkFED,CACAE,WAAAA,EAAAA,EAAAA,aA/EG,CAAC,MAAO,QAAS,MAAM,CAAmBP,IAAKC,IAAW,CACzDA,MAAAA,EACAC,MAAOjJ,EAAGkJ,OAAOK,MAAMP,GACxB,EAAE,CACL,CAAChJ,EAAGkJ,OAAOK,MACb,CA0EED,CACAE,YAAAA,EAAAA,EAAAA,aAvEG,CAAC,MAAO,UAAW,QAAQ,CAAkBT,IAAKC,IAAW,CAC5DA,MAAAA,EACAC,MAAOjJ,EAAGkJ,OAAOO,OAAOT,GACzB,EAAE,CACL,CAAChJ,EAAGkJ,OAAOO,OACb,CAkEED,CACD,CCxaH,SAAgBiB,GAAoB,CAClCC,OACAC,eACAC,KACAC,iBACAC,gBAOC,CACD,GAAM,CAACE,EAAMC,IAAAA,EAAAA,EAAAA,UAAoB,GAAM,CACjC,CAACC,EAAYC,IAAAA,EAAAA,EAAAA,UAAyC,KAAK,CAC3D,CAACC,EAAWC,IAAAA,EAAAA,EAAAA,UAAwC,KAAK,CACzD,CAACC,EAAOC,IAAAA,EAAAA,EAAAA,UAAoC,KAAK,CACjD,CAACC,EAAMC,IAAAA,EAAAA,EAAAA,UAAmC,KAAK,CAC/C,CAACC,EAAWC,IAAAA,EAAAA,EAAAA,UAAwC,KAAK,CACzD,CAACC,EAAaC,IAAAA,EAAAA,EAAAA,UAA2B,GAAM,CAE/CC,GAAAA,EAAAA,EAAAA,aAAoB,SAAY,CACpCP,EAAS,KAAK,CACdE,EAAQ,KAAK,CACbN,EAAc,KAAK,CACnBF,EAAQ,GAAK,CACb,GAAI,CACF,IAAMc,EAAI,MAAM5B,IAAgC,CAChDkB,EAAaU,EAAEX,UAAU,CACzBD,EAAcY,EAAEb,WAAW,OACpBc,EAAG,CACVT,EAASS,aAAaC,MAAQD,EAAEE,QAAU,eAAe,QACjD,CACRjB,EAAQ,GAAM,GAEf,EAAE,CAAC,EAENlB,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAACW,EAAM,CACTS,EAAc,KAAK,CACnBE,EAAa,KAAK,CAClBE,EAAS,KAAK,CACdI,EAAa,KAAK,CAClBE,EAAe,GAAM,CACrBJ,EAAQ,KAAK,CACb,OAEGK,GAAO,EACX,CAACpB,EAAMoB,EAAM,CAAC,EAEjB/B,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAACmB,EAAY,OACjB,IAAIiB,EAAY,GACZC,EAEEC,EAAO,SAAY,CACvB,GAAI,CACF,IAAMC,EAAK,MAAMlC,GAAgCc,EAAW,CAC5D,GAAIiB,EAAW,OACf,GAAIG,EAAGC,QAAU,UAAW,CAC1BlB,EAAaiB,EAAGlB,UAAU,CACtBkB,EAAGE,WAAa,SAClBf,EAAQb,EAAG6B,qBAAqB,CAEhChB,EAAQ,KAAK,CAEf,OAEF,GAAIa,EAAGC,QAAU,OAAQ,CACnBH,IAAeM,IAAAA,KACjBC,OAAOC,cAAcR,EAAW,CAChCA,EAAaM,IAAAA,IAEfvB,EAAc,KAAK,CACfmB,EAAGO,IACLxB,EAAa,KAAK,CAClBV,EAAa,GAAM,CACnB,MAAME,GAAgB,GAEtBU,EAASe,EAAGJ,QAAQ,CACpBb,EAAa,KAAK,EAEpB,OAEEiB,EAAGC,QAAU,WACfd,EAAQ,KAAK,OAERO,EAAG,CACLG,IACCC,IAAeM,IAAAA,IACjBC,OAAOC,cAAcR,EAAW,CAElCb,EAASS,aAAaC,MAAQD,EAAEE,QAAU,iBAAiB,CAC3Df,EAAc,KAAK,CACnBE,EAAa,KAAK,IAOxB,MAFAe,GAAaO,OAAOG,gBAAkB,KAAKT,GAAM,CAAE,IAAK,CACnDA,GAAM,KACE,CACXF,EAAY,GACRC,IAAeM,IAAAA,IACjBC,OAAOC,cAAcR,EAAW,GAGnC,CAAClB,EAAYN,EAAG6B,qBAAsB7B,EAAGmC,qBAAsBlC,EAAgBF,EAAa,CAAC,EAEhGZ,EAAAA,EAAAA,eAAgB,CACd,GAAI,CAACqB,EAAW,CACdO,EAAa,KAAK,CAClBE,EAAe,GAAM,CACrB,OAEF,IAAIM,EAAY,GAiBhB,OAhBAN,EAAe,GAAM,CACrB,GAAYmB,UAAU5B,EAAW,CAC/B6B,MAAO,IACPC,OAAQ,EACRC,qBAAsB,IACtBC,MAAO,CAAEC,KAAM,YAAaC,MAAO,YAAY,CAChD,CAAC,CACCC,KAAMC,GAAQ,CACRrB,GAAWR,EAAa6B,EAAI,EACjC,CACDC,UAAY,CACNtB,IACHN,EAAe,GAAK,CACpBF,EAAa,KAAK,GAEpB,KACS,CACXQ,EAAY,KAEb,CAACf,EAAU,CAAC,CAEf,IAAMsC,EAASC,GAAQvC,GAAaF,GAE9B0C,EAAiBlD,GAAQ,CAACY,GAAS,CAACoC,EAE1C,OACE,EAAA,EAAA,KAAC,EAAD,CAAmBhD,OAAoBC,yBACrC,EAAA,EAAA,MAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAD,CACE,UAAWL,EACT,iEACAE,EACD,CAAC,CAAA,EAEJ,EAAA,EAAA,MAAC,EAAD,CACE,UAAWF,EACT,4GACAC,EACA,mHACD,CACD,gBAAkByB,GAAMA,EAAE6B,gBAAgB,UAN5C,EAQE,EAAA,EAAA,KAAC,EAAD,CAAc,QAAA,aACZ,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,+KACV,aAAYjD,EAAGkD,iCAEf,EAAA,EAAA,KAAC,EAAD,CAAG,UAAU,SAAQ,CAAA,CACf,CAAA,CACI,CAAA,EAEd,EAAA,EAAA,KAAC,EAAD,CAAc,UAAU,mBAAWlD,EAAGmD,mBAAiC,CAAA,EACvE,EAAA,EAAA,KAAC,EAAD,CAAoB,UAAU,mBAAWnD,EAAGoD,sBAA0C,CAAA,EAEtF,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,wDAAgDpD,EAAGmD,mBAAsB,CAAA,EACtF,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,wCAAgCnD,EAAGoD,sBAAyB,CAAA,CACtE,IAEL,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gFAAf,CACG1C,GAAQ,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,8DAAsDA,EAAU,CAAA,CAAG,KAExF,CAACA,IAAUoC,GAAUE,IACpB,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mDAAf,EACE,EAAA,EAAA,KAAC,IAAD,CACE,UAAWtD,EACT,sCACAkB,GAAQ,CAACoC,EAAiB,cAAgB,gBAC3C,UAEAA,EAAiBhD,EAAGqD,kBAAoBzC,GAAQ,OAChD,CAAA,EACH,EAAA,EAAA,MAAC,MAAD,CACE,UAAWlB,EACT,gJACAsD,GAAkB,2CACnB,UAJH,CAMGA,GACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,mFACV,cAAA,GACA,CAAA,CACA,KACHF,GAAUtC,GAAa,CAACE,GAASI,GAAa,CAACE,GAC9C,EAAA,EAAA,KAAC,MAAD,CAAK,IAAKF,EAAW,IAAI,GAAG,UAAU,0CAA4C,CAAA,CAChF,KACHgC,GAAUtC,GAAa,CAACE,GAAS,CAACI,GAAa,CAACE,GAAe,CAACgC,GAC/D,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iEAAyDhD,EAAGsD,iBAAqB,CAAA,CAC5F,KACHR,GAAUtC,GAAa,CAACE,GAASM,GAChC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,yFAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,6CAAqChB,EAAGuD,mBAAsB,CAAA,EAC3E,EAAA,EAAA,MAAC,IAAD,CACE,KAAM/C,EACN,OAAO,SACP,IAAI,aACJ,UAAU,iGAJZ,EAME,EAAA,EAAA,KAAC,GAAD,CAAc,UAAU,kBAAiB,CAAA,CACxCR,EAAGwD,iBACH,GACC,GACJ,KACD,GACD,GACJ,KACD,IAEL,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBACb,EAAA,EAAA,KAAC,EAAD,CACE,KAAK,SACL,QAAQ,YACR,UAAU,iHACV,SAAUpD,EACV,YAAe,KAAKc,GAAO,UAE1Bd,EAAOJ,EAAGqD,kBAAoBrD,EAAGyD,mBAC5B,CAAA,CACL,CAAA,CAEJvD,GACC,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yEAAiEA,EAAmB,CAAA,CACjG,KACU,GACH,CAAA,CAAA,CACH,CAAA,CCxPlB,SAAOmE,GAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,IAAA,CAAwB,CAAAE,KAAAC,eAAAC,KAAAC,SAAAC,aAAAC,kBAAAC,qBAAAC,kBAAAC,mBAAAC,uBAAAC,iBAAAC,aAAAC,qBAAAC,mBAAAhB,EA8B9BiB,EAAAhB,EAAA,KAAAI,EAAAa,gBAKoDD,EAAAhB,EAAA,IAA7CgB,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAaZ,EAAEa,gBAA8B,CAAA,CAAAjB,EAAA,GAAAI,EAAAa,gBAAAjB,EAAA,GAAAgB,GAAA,IAAAE,EAAAlB,EAAA,KAAAmB,OAAAC,IAAA,4BAAA,EAEhCF,EAAA3B,EANIM,GAMe,CAAE,6CAA6C,CAAAG,EAAA,GAAAkB,GAAAA,EAAAlB,EAAA,GAAA,IAAAqB,EAAArB,EAAA,KAAAE,EAAAoB,UAG/CD,EAAArB,EAAA,IAAvBqB,EAAAnB,EAAEoB,UAAUC,KAAM,KAAK,CAAAvB,EAAA,GAAAE,EAAAoB,UAAAtB,EAAA,GAAAqB,GAAA,IAAAG,EAAAxB,EAAA,KAAAG,EAO1BqB,EAAAxB,EAAA,IANMwB,EAAAC,GACRtB,EAAa,CAAAmB,UACAG,EAACC,OAAOC,MAAMC,MAChB,QAAQ,CAAAC,IACVC,GAAgB,CAAAC,OACbC,QAAO,CAClB,CAAC,CAAAhC,EAAA,GAAAG,EAAAH,EAAA,GAAAwB,GAAA,IAAAS,EAAAjC,EAAA,KAAAqB,GAAArB,EAAA,KAAAwB,GAXNS,GAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAf,EACL,KAAA,EACM,YAAA,uBACL,MAAAG,EACG,SAAAG,EAQV,CAAA,CAAAxB,EAAA,GAAAqB,EAAArB,EAAA,GAAAwB,EAAAxB,EAAA,GAAAiC,GAAAA,EAAAjC,EAAA,GAAA,IAAAkC,EAAAlC,EAAA,MAAAI,EAAA+B,oBAC6CD,EAAAlC,EAAA,KAA/CkC,GAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAY9B,EAAE+B,oBAAiC,CAAA,CAAAnC,EAAA,IAAAI,EAAA+B,oBAAAnC,EAAA,IAAAkC,GAAA,IAAAE,EAAApC,EAAA,MAAAgB,GAAAhB,EAAA,MAAAiC,GAAAjC,EAAA,MAAAkC,GAhBjDE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEpB,EACAiB,EAcAC,EACI,GAAAlC,EAAA,IAAAgB,EAAAhB,EAAA,IAAAiC,EAAAjC,EAAA,IAAAkC,EAAAlC,EAAA,IAAAoC,GAAAA,EAAApC,EAAA,IAAA,IAAAqC,EAAArC,EAAA,MAAAG,EAC6FkC,EAAArC,EAAA,KAApCqC,EAAAC,GAAOnC,EAAa,CAAAoC,SAAYD,EAAG,CAAC,CAAAtC,EAAA,IAAAG,EAAAH,EAAA,IAAAqC,GAAA,IAAAG,EAAAxC,EAAA,MAAAI,EAAAmC,UAAAvC,EAAA,MAAAK,GAAAL,EAAA,MAAAqC,GAAArC,EAAA,MAAAE,EAAAqC,UAAnGC,GAAA,EAAA,EAAA,KAAC,GAAD,CAAoB,MAAApC,EAAEmC,SAAkB,MAAArC,EAAEqC,SAAqB,SAAAF,EAA+ChC,QAAAA,EAAU,CAAA,CAAAL,EAAA,IAAAI,EAAAmC,SAAAvC,EAAA,IAAAK,EAAAL,EAAA,IAAAqC,EAAArC,EAAA,IAAAE,EAAAqC,SAAAvC,EAAA,IAAAwC,GAAAA,EAAAxC,EAAA,IAAA,IAAAyC,EAAAzC,EAAA,MAAAG,EAItEsC,EAAAzC,EAAA,KAAtCyC,EAAAC,GAAOvC,EAAa,CAAAwC,WAAcL,EAAG,CAAC,CAAAtC,EAAA,IAAAG,EAAAH,EAAA,IAAAyC,GAAA,IAAAG,EAAA5C,EAAA,MAAAI,EAAAuC,YAAA3C,EAAA,MAAAM,GAAAN,EAAA,MAAAyC,GAAAzC,EAAA,MAAAE,EAAAyC,YAHlDC,GAAA,EAAA,EAAA,KAAC,GAAD,CACS,MAAAxC,EAAEuC,WACF,MAAAzC,EAAEyC,WACC,SAAAF,EACDnC,QAAAA,EACT,CAAA,CAAAN,EAAA,IAAAI,EAAAuC,WAAA3C,EAAA,IAAAM,EAAAN,EAAA,IAAAyC,EAAAzC,EAAA,IAAAE,EAAAyC,WAAA3C,EAAA,IAAA4C,GAAAA,EAAA5C,EAAA,IAAA,IAAA6C,EAAA7C,EAAA,MAAAI,EAAA0C,aAG4CD,EAAA7C,EAAA,KAA1C6C,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAazC,EAAE0C,aAA2B,CAAA,CAAA9C,EAAA,IAAAI,EAAA0C,aAAA9C,EAAA,IAAA6C,GAAA,IAAAE,EAAA/C,EAAA,MAAAmB,OAAAC,IAAA,4BAAA,EAK7B2B,EAnCElD,GAmCc,CAAAG,EAAA,IAAA+C,GAAAA,EAAA/C,EAAA,IAAA,IAAAgD,EAAAhD,EAAA,MAAAG,EAEwD6C,EAAAhD,EAAA,KAAzEgD,EAAAC,GAAO9C,EAAa,CAAA2C,aAAgBI,SAASzB,EAACC,OAAOC,MAAQ,GAAS,EAAlC,GAAoC,CAAC,CAAA3B,EAAA,IAAAG,EAAAH,EAAA,IAAAgD,GAAA,IAAAG,EAAAnD,EAAA,MAAAgD,GAAAhD,EAAA,MAAAE,EAAA4C,cANrFK,GAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,SACA,IAAA,GACA,IAAA,IACM,UAAAJ,EACJ,MAAA7C,EAAE4C,aACC,SAAAE,EACV,CAAA,CAAAhD,EAAA,IAAAgD,EAAAhD,EAAA,IAAAE,EAAA4C,aAAA9C,EAAA,IAAAmD,GAAAA,EAAAnD,EAAA,IAAA,IAAAoD,GAAApD,EAAA,MAAA6C,GAAA7C,EAAA,MAAAmD,GATJC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEP,EACAM,EAQI,GAAAnD,EAAA,IAAA6C,EAAA7C,EAAA,IAAAmD,EAAAnD,EAAA,IAAAoD,IAAAA,GAAApD,EAAA,IAAA,IAAAqD,EAAArD,EAAA,MAAAI,EAAAkD,eAEwCD,EAAArD,EAAA,KAA5CqD,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAajD,EAAEkD,eAA6B,CAAA,CAAAtD,EAAA,IAAAI,EAAAkD,eAAAtD,EAAA,IAAAqD,GAAA,IAAAE,EAAAvD,EAAA,MAAAmB,OAAAC,IAAA,4BAAA,EAM/BmC,EA/CE1D,GA+Cc,CAAAG,EAAA,IAAAuD,GAAAA,EAAAvD,EAAA,IAAA,IAAAwD,EAAAxD,EAAA,MAAAG,EAE4DqD,EAAAxD,EAAA,KAA7EwD,EAAAC,GAAOtD,EAAa,CAAAmD,eAAkBJ,SAASzB,EAACC,OAAOC,MAAQ,GAAW,EAApC,IAAsC,CAAC,CAAA3B,EAAA,IAAAG,EAAAH,EAAA,IAAAwD,GAAA,IAAAE,GAAA1D,EAAA,MAAAwD,GAAAxD,EAAA,MAAAE,EAAAoD,gBAPzFI,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,SACA,IAAA,IACA,IAAA,IACC,KAAA,IACK,UAAAH,EACJ,MAAArD,EAAEoD,eACC,SAAAE,EACV,CAAA,CAAAxD,EAAA,IAAAwD,EAAAxD,EAAA,IAAAE,EAAAoD,eAAAtD,EAAA,IAAA0D,IAAAA,GAAA1D,EAAA,IAAA,IAAA2D,EAAA3D,EAAA,MAAAqD,GAAArD,EAAA,MAAA0D,IAVJC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEN,EACAK,GASI,GAAA1D,EAAA,IAAAqD,EAAArD,EAAA,IAAA0D,GAAA1D,EAAA,IAAA2D,GAAAA,EAAA3D,EAAA,IAAA,IAAA4D,GAAA5D,EAAA,MAAAoD,IAAApD,EAAA,MAAA2D,GAvBRC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,qCAAf,CACER,GAWAO,EAYI,GAAA3D,EAAA,IAAAoD,GAAApD,EAAA,IAAA2D,EAAA3D,EAAA,IAAA4D,IAAAA,GAAA5D,EAAA,IAAA,IAAA6D,EAAA7D,EAAA,MAAAI,EAAA0D,eAEwCD,EAAA7D,EAAA,KAA5C6D,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAazD,EAAE0D,eAA6B,CAAA,CAAA9D,EAAA,IAAAI,EAAA0D,eAAA9D,EAAA,IAAA6D,GAAA,IAAAE,EAAA/D,EAAA,MAAAmB,OAAAC,IAAA,4BAAA,EAE/B2C,EAxDIlE,GAwDY,CAAAG,EAAA,IAAA+D,GAAAA,EAAA/D,EAAA,IAAA,IAAAgE,EAAAhE,EAAA,MAAAG,EAEgC6D,EAAAhE,EAAA,KAAjDgE,EAAAC,GAAO9D,EAAa,CAAA+D,SAAYzC,EAACC,OAAOC,MAAQ,CAAC,CAAA3B,EAAA,IAAAG,EAAAH,EAAA,IAAAgE,GAAA,IAAAG,GAAAnE,EAAA,MAAAI,EAAAgE,qBAAApE,EAAA,MAAAgE,GAAAhE,EAAA,MAAAE,EAAAgE,UAH7DC,IAAA,EAAA,EAAA,KAAA,QAAA,CACa,UAAAJ,EACJ,MAAA7D,EAAEgE,SACC,SAAAF,EACG,YAAA5D,EAAEgE,oBACf,CAAA,CAAApE,EAAA,IAAAI,EAAAgE,oBAAApE,EAAA,IAAAgE,EAAAhE,EAAA,IAAAE,EAAAgE,SAAAlE,EAAA,IAAAmE,IAAAA,GAAAnE,EAAA,IAAA,IAAAqE,GAAArE,EAAA,MAAAI,EAAAkE,mBAC4CD,GAAArE,EAAA,KAA9CqE,IAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYjE,EAAEkE,mBAAgC,CAAA,CAAAtE,EAAA,IAAAI,EAAAkE,mBAAAtE,EAAA,IAAAqE,IAAA,IAAAE,GAAAvE,EAAA,MAAA6D,GAAA7D,EAAA,MAAAmE,IAAAnE,EAAA,MAAAqE,IARhDE,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACEV,EACAM,GAMAE,GACI,GAAArE,EAAA,IAAA6D,EAAA7D,EAAA,IAAAmE,GAAAnE,EAAA,IAAAqE,GAAArE,EAAA,IAAAuE,IAAAA,GAAAvE,EAAA,IAAA,IAAAwE,EAAAxE,EAAA,MAAAG,EAMwDqE,EAAAxE,EAAA,KAAhDwE,EAAAC,GAAOtE,EAAa,CAAAuE,MAASjD,EAACC,OAAOiD,QAAU,CAAC,CAAA3E,EAAA,IAAAG,EAAAH,EAAA,IAAAwE,GAAA,IAAAI,GAAA5E,EAAA,MAAAwE,GAAAxE,EAAA,MAAAE,EAAAwE,OAJ5DE,IAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,cACD,QAAA1E,EAAEwE,MACD,SAAAF,EACV,CAAA,CAAAxE,EAAA,IAAAwE,EAAAxE,EAAA,IAAAE,EAAAwE,MAAA1E,EAAA,IAAA4E,IAAAA,GAAA5E,EAAA,IAAA,IAAA6E,EAAA7E,EAAA,MAAAI,EAAA0E,aAAA9E,EAAA,MAAA4E,IANJC,GAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,kEAAjB,CACED,GAMCxE,EAAE0E,YACG,GAAA9E,EAAA,IAAAI,EAAA0E,YAAA9E,EAAA,IAAA4E,GAAA5E,EAAA,IAAA6E,GAAAA,EAAA7E,EAAA,IAAA,IAAA+E,EAAA/E,EAAA,MAAAI,EAAA4E,gBACmCD,EAAA/E,EAAA,KAA3C+E,GAAA,EAAA,EAAA,KAAC,GAAD,CAAA,SAAY3E,EAAE4E,gBAA6B,CAAA,CAAAhF,EAAA,IAAAI,EAAA4E,gBAAAhF,EAAA,IAAA+E,GAAA,IAAAE,EAAAjF,EAAA,MAAAI,EAAA8E,mBAEOD,EAAAjF,EAAA,KAAhDiF,GAAA,EAAA,EAAA,KAAC,EAAD,CAAA,SAAa7E,EAAE8E,mBAAiC,CAAA,CAAAlF,EAAA,IAAAI,EAAA8E,mBAAAlF,EAAA,IAAAiF,GAAA,IAAAE,GAAAnF,EAAA,MAAAmB,OAAAC,IAAA,4BAAA,EAEnC+D,GAAA5F,EA5EIM,GA4Ee,CAAE,2CAA2C,CAAAG,EAAA,IAAAmF,IAAAA,GAAAnF,EAAA,IAAA,IAAAoF,EAAApF,EAAA,MAAAQ,EAGxB4E,EAAApF,EAAA,KAAzCoF,EAAAC,GAAO7E,EAAmBiB,EAACC,OAAOC,MAAO,CAAA3B,EAAA,IAAAQ,EAAAR,EAAA,IAAAoF,GAAA,IAAAE,EAAAtF,EAAA,MAAAU,GAAAV,EAAA,MAAAoF,GAAApF,EAAA,MAAAO,GAJrD+E,GAAA,EAAA,EAAA,KAAA,WAAA,CACa,UAAAH,GACC,WAAA,GACL5E,MAAAA,EACG,SAAA6E,EACF1E,OAAAA,EACI,YAAA,0EACZ,CAAA,CAAAV,EAAA,IAAAU,EAAAV,EAAA,IAAAoF,EAAApF,EAAA,IAAAO,EAAAP,EAAA,IAAAsF,GAAAA,EAAAtF,EAAA,IAAA,IAAAuF,EAAAvF,EAAA,MAAAI,EAAAoF,wBAAAxF,EAAA,MAAAS,GACD8E,EAAA9E,GACC,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,kDAA0CA,EAGxD,CAAA,EADC,EAAA,EAAA,KAAC,GAAD,CAAA,SAAYL,EAAEoF,uBACf,CAAA,CAAAxF,EAAA,IAAAI,EAAAoF,uBAAAxF,EAAA,IAAAS,EAAAT,EAAA,IAAAuF,GAAAA,EAAAvF,EAAA,IAAA,IAAAyF,EAAAzF,EAAA,MAAAiF,GAAAjF,EAAA,MAAAsF,GAAAtF,EAAA,MAAAuF,GAdHE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,iCAAf,CACER,EACAK,EAQCC,EAKG,GAAAvF,EAAA,IAAAiF,EAAAjF,EAAA,IAAAsF,EAAAtF,EAAA,IAAAuF,EAAAvF,EAAA,IAAAyF,GAAAA,EAAAzF,EAAA,IAAA,IAAA0F,EAAA1F,EAAA,MAAAE,EAGmCwF,EAAA1F,EAAA,KAA3B0F,EAAApG,GAAwBY,EAAG,CAAAF,EAAA,IAAAE,EAAAF,EAAA,IAAA0F,GAAA,IAAAC,EAAA3F,EAAA,MAAAa,GAAAb,EAAA,MAAAI,GAAAJ,EAAA,OAAAW,GAAAX,EAAA,OAAAY,GAAAZ,EAAA,OAAAc,GAAAd,EAAA,OAAAe,GAAAf,EAAA,OAAA0F,GADzCC,GAAA,EAAA,EAAA,KAAC,GAAD,CACc,WAAAD,EACJ/E,OAAAA,EACQC,iBACJC,aACFE,SAAAA,EACAD,SAAAA,EACNV,KACJ,CAAA,CAAAJ,EAAA,IAAAa,EAAAb,EAAA,IAAAI,EAAAJ,EAAA,KAAAW,EAAAX,EAAA,KAAAY,EAAAZ,EAAA,KAAAc,EAAAd,EAAA,KAAAe,EAAAf,EAAA,KAAA0F,EAAA1F,EAAA,KAAA2F,GAAAA,EAAA3F,EAAA,KAAA,IAAA4F,EACE,OADF5F,EAAA,OAAA4C,GAAA5C,EAAA,OAAA4D,IAAA5D,EAAA,OAAAuE,IAAAvE,EAAA,OAAA6E,GAAA7E,EAAA,OAAA+E,GAAA/E,EAAA,OAAAyF,GAAAzF,EAAA,OAAA2F,GAAA3F,EAAA,OAAAoC,GAAApC,EAAA,OAAAwC,GAhGJoD,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,uEAAf,CACExD,EAkBAI,EACAI,EAMAgB,GAyBAW,GAUAM,EASAE,EACAU,EAiBAE,EASI,GAAA3F,EAAA,KAAA4C,EAAA5C,EAAA,KAAA4D,GAAA5D,EAAA,KAAAuE,GAAAvE,EAAA,KAAA6E,EAAA7E,EAAA,KAAA+E,EAAA/E,EAAA,KAAAyF,EAAAzF,EAAA,KAAA2F,EAAA3F,EAAA,KAAAoC,EAAApC,EAAA,KAAAwC,EAAAxC,EAAA,KAAA4F,GAAAA,EAAA5F,EAAA,KAjGN4F,EAjCG,SAAA9D,GAAA+D,EAAA,CAAA,OA6CqBA,EAACC,MAAO,CC7CpC,SAAOS,GAAAC,EAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,GAAA,CAAmC,CAAAE,KAAAC,KAAAC,eAAAC,SAAAC,aAAAC,kBAAAC,qBAAAC,kBAAAC,mBAAAC,OAAAC,aAAAC,qBAAAC,SAAAC,QAAAC,OAAAC,WAAAlB,EAkCzCmB,EAAAlB,EAAA,KAAAmB,OAAAC,IAAA,4BAAA,EAKSF,GAAA,EAAA,EAAA,KAAC,EAAD,CAAuB,UAAA,2EAA6E,CAAA,CAAAlB,EAAA,GAAAkB,GAAAA,EAAAlB,EAAA,GAAA,IAAAqB,EAAArB,EAAA,KAAAE,EAAAoB,aAG9FD,EAAArB,EAAA,IALVqB,GAAA,EAAA,EAAA,KAAA,UAAA,CAAmB,UAAA,8LACjB,EAAA,EAAA,MAAA,OAAA,CAAgB,UAAA,0CAAhB,CACEH,EACChB,EAAEoB,aAEP,GAAU,CAAA,CAAAtB,EAAA,GAAAE,EAAAoB,aAAAtB,EAAA,GAAAqB,GAAA,IAAAE,EAAAvB,EAAA,KAAAE,EAAAsB,mBAEwED,EAAAvB,EAAA,IAAhFuB,GAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,iDAAyCrB,EAAEsB,mBAAwB,CAAA,CAAAxB,EAAA,GAAAE,EAAAsB,mBAAAxB,EAAA,GAAAuB,GAAA,IAAAE,EAAAzB,EAAA,KAAAI,EAMhBqB,EAAAzB,EAAA,IAAlDyB,EAAAC,GAAOtB,EAAa,CAAAuB,QAAWD,EAACE,OAAOC,QAAU,CAAC,CAAA7B,EAAA,GAAAI,EAAAJ,EAAA,GAAAyB,GAAA,IAAAK,EAAA9B,EAAA,KAAAyB,GAAAzB,EAAA,KAAAG,EAAAwB,SAJ9DG,GAAA,EAAA,EAAA,KAAA,QAAA,CACO,KAAA,WACK,UAAA,qBACD,QAAA3B,EAAEwB,QACD,SAAAF,EACV,CAAA,CAAAzB,EAAA,GAAAyB,EAAAzB,EAAA,GAAAG,EAAAwB,QAAA3B,EAAA,GAAA8B,GAAAA,EAAA9B,EAAA,GAAA,IAAA+B,EAAA/B,EAAA,MAAAE,EAAA8B,iBACgCD,EAAA/B,EAAA,KAAlC+B,GAAA,EAAA,EAAA,KAAA,OAAA,CAAA,SAAO7B,EAAE8B,iBAAyB,CAAA,CAAAhC,EAAA,IAAAE,EAAA8B,iBAAAhC,EAAA,IAAA+B,GAAA,IAAAE,EAAAjC,EAAA,MAAA8B,GAAA9B,EAAA,MAAA+B,GAPpCE,GAAA,EAAA,EAAA,MAAA,QAAA,CAAiB,UAAA,iEAAjB,CACEH,EAMAC,EACM,GAAA/B,EAAA,IAAA8B,EAAA9B,EAAA,IAAA+B,EAAA/B,EAAA,IAAAiC,GAAAA,EAAAjC,EAAA,IAAA,IAAAkC,EAAAlC,EAAA,MAAAY,GAAAuB,MAc+BD,EAAAlC,EAAA,KAAvBkC,EAAAtB,GAAUuB,OAAV,EAAuB,CAAAnC,EAAA,IAAAY,GAAAuB,MAAAnC,EAAA,IAAAkC,GAAA,IAAAE,EAAApC,EAAA,MAAAE,GAAAF,EAAA,MAAAK,GAAAL,EAAA,MAAAW,EAAA0B,mBAAAC,QAAAtC,EAAA,MAAAW,EAAA4B,gBAAAvC,EAAA,MAAAa,GAAAb,EAAA,MAAAU,GAAAV,EAAA,MAAAc,GAAAd,EAAA,MAAAQ,GAAAR,EAAA,MAAAM,GAAAN,EAAA,MAAAkC,GAAAlC,EAAA,MAAAI,GAAAJ,EAAA,MAAAG,GAAAH,EAAA,MAAAO,GAAAP,EAAA,MAAAS,GAbvC2B,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,0CACb,EAAA,EAAA,KAAC,GAAD,CACMjC,KACUC,eACVF,KACIG,SACIC,aACKC,kBACGC,qBACHC,kBACCC,mBACI,qBAAAC,EAAI0B,mBAAmBC,OAC7B,eAAA3B,EAAI4B,eACR,WAAAL,EACQrB,qBACHC,gBAAAA,EAErB,CAAA,CAAM,CAAA,CAAAd,EAAA,IAAAE,EAAAF,EAAA,IAAAK,EAAAL,EAAA,IAAAW,EAAA0B,mBAAAC,OAAAtC,EAAA,IAAAW,EAAA4B,eAAAvC,EAAA,IAAAa,EAAAb,EAAA,IAAAU,EAAAV,EAAA,IAAAc,EAAAd,EAAA,IAAAQ,EAAAR,EAAA,IAAAM,EAAAN,EAAA,IAAAkC,EAAAlC,EAAA,IAAAI,EAAAJ,EAAA,IAAAG,EAAAH,EAAA,IAAAO,EAAAP,EAAA,IAAAS,EAAAT,EAAA,IAAAoC,GAAAA,EAAApC,EAAA,IAE6E,IAAAwC,EAAA,CAACzB,GAADD,EAAgB2B,EAAAzC,EAAA,MAAAE,EAAAe,SAAAjB,EAAA,MAAAiB,GAAAjB,EAAA,MAAAwC,GAAjGC,GAAA,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAsB,UAAA,mBAA6B,SAAAD,EAA2BvB,QAAAA,WACzGf,EAAEe,QACI,CAAA,CAAAjB,EAAA,IAAAE,EAAAe,QAAAjB,EAAA,IAAAiB,EAAAjB,EAAA,IAAAwC,EAAAxC,EAAA,IAAAyC,GAAAA,EAAAzC,EAAA,IAKG,IAAA0C,GAAA,CAAC3B,GAADD,EAAgB6B,EAAA3C,EAAA,MAAAgB,EAGzB2B,EAAA3C,EAAA,KAFQ2C,EAAA,SAAA,CACP,MAAM3B,GAAM,EACbhB,EAAA,IAAAgB,EAAAhB,EAAA,IAAA2C,GAEA,IAAAC,EAAA9B,EAASZ,EAAEY,OAAUZ,EAAEc,KAAK6B,EAAA7C,EAAA,MAAA0C,IAAA1C,EAAA,MAAA2C,GAAA3C,EAAA,MAAA4C,GAT/BC,GAAA,EAAA,EAAA,KAAC,EAAD,CACO,KAAA,SACG,QAAA,UACE,UAAA,mBACA,SAAAH,GACD,QAAAC,WAIRC,EACM,CAAA,CAAA5C,EAAA,IAAA0C,GAAA1C,EAAA,IAAA2C,EAAA3C,EAAA,IAAA4C,EAAA5C,EAAA,IAAA6C,GAAAA,EAAA7C,EAAA,IAAA,IAAA8C,EAAA9C,EAAA,MAAAyC,GAAAzC,EAAA,MAAA6C,GAdXC,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,0DAAf,CACEL,EAGAI,EAWI,GAAA7C,EAAA,IAAAyC,EAAAzC,EAAA,IAAA6C,EAAA7C,EAAA,IAAA8C,GAAAA,EAAA9C,EAAA,IAAA,IAAA+C,GAAA/C,EAAA,MAAA8C,GAAA9C,EAAA,MAAAuB,GAAAvB,EAAA,MAAAiC,GAAAjC,EAAA,MAAAoC,GA5CRW,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,wFAAf,CACExB,EACAU,EASAG,EAkBAU,EAgBI,GAAA9C,EAAA,IAAA8C,EAAA9C,EAAA,IAAAuB,EAAAvB,EAAA,IAAAiC,EAAAjC,EAAA,IAAAoC,EAAApC,EAAA,IAAA+C,IAAAA,GAAA/C,EAAA,IAAA,IAAAgD,EACE,OADFhD,EAAA,MAAA+C,IAAA/C,EAAA,MAAAqB,GApDR2B,GAAA,EAAA,EAAA,MAAA,UAAA,CAAmB,UAAA,iGAAnB,CACE3B,EAMA0B,GA8CQ,GAAA/C,EAAA,IAAA+C,GAAA/C,EAAA,IAAAqB,EAAArB,EAAA,IAAAgD,GAAAA,EAAAhD,EAAA,IArDVgD,EC9BJ,SAAOiB,IAAA,CAAA,IAAAC,GAAAA,EAAAA,GAAAA,GAAA,IAAA,CAEL,CAAAG,WAAAC,IAAAC,KAAAC,WAAAC,UAAAC,aAAAC,SAAAC,OAAAC,WAAAC,QAAAC,SAAAC,QAAAC,SAAAC,kBAAAC,qBAAAC,oBAAAC,uBAAAC,kBAAAC,qBAAAC,eAAAC,kBAAAC,sBAAAC,yBAAAC,2BAAAC,aAAAC,gBAAAC,YAAAC,eAAAC,mBAAAC,sBAAAC,4BAAAC,8BAAAC,UAAAC,eAAAC,sBAAAC,kBAAAC,sBAAAC,mBAAAC,mBAAAC,qBAAAC,mBAAAC,sBAAAC,0BAAAC,sBAAAC,aAAAC,0BAAAC,kBAAAC,eAAAC,eAAAC,OAAAC,UAAAC,uBAAAC,iBAAAC,aAAAC,8BAAAC,mBAAAC,2BAAAC,oBAAAC,oBAAAC,wBAAAC,UAAAC,aAAAC,aAAAC,eADYzE,IAkERS,CAEJ,GAAI,CAACI,EAAQ,CAAA,IAAA6D,EAAAnE,EAAA,KAAAI,EAAAgE,iBAAAC,SAGyEF,EAAAnE,EAAA,IAAhFmE,GAAA,EAAA,EAAA,KAAA,KAAA,CAAc,UAAA,yCAAiC/D,EAACgE,iBAAiBC,SAAe,CAAA,CAAArE,EAAA,GAAAI,EAAAgE,iBAAAC,SAAArE,EAAA,GAAAmE,GAAA,IAAAG,EAAAtE,EAAA,KAAAK,EAAAkE,UACzBD,EAAAtE,EAAA,IAAvDsE,GAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,iCAAyBjE,EAAEkE,UAAe,CAAA,CAAAvE,EAAA,GAAAK,EAAAkE,UAAAvE,EAAA,GAAAsE,GAAA,IAAAE,EACnD,OADmDxE,EAAA,KAAAmE,GAAAnE,EAAA,KAAAsE,GAFzDE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,uEAAf,CACEL,EACAG,EACI,GAAAtE,EAAA,GAAAmE,EAAAnE,EAAA,GAAAsE,EAAAtE,EAAA,GAAAwE,GAAAA,EAAAxE,EAAA,GAHNwE,EAOJ,GAAIjE,EAAO,CAAA,IAAA4D,EAAAG,EAAAtE,EAAA,KAAAyE,OAAAC,IAAA,4BAAA,EAGLP,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,kDAAoD,CAAA,CACnEG,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,sDAAwD,CAAA,CAAAtE,EAAA,GAAAmE,EAAAnE,EAAA,GAAAsE,IAAAH,EAAAnE,EAAA,GAAAsE,EAAAtE,EAAA,IAAA,IAAAwE,EAEnE,OAFmExE,EAAA,KAAAK,EAAAE,QAEnEiE,EAAAxE,EAAA,KAJNwE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,mDAAf,CACEL,EACAG,GACA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,sCAA8BjE,EAAEE,QAC/C,CAAA,CAAM,GAAAP,EAAA,GAAAK,EAAAE,QAAAP,EAAA,IAAAwE,GAJNA,EAQJ,GAAI,CAAC9D,EAAI,CAGmC,IAAAyD,EAAArD,GAAAN,GAAuBH,EAAEsE,UAAUL,EAAAtE,EAAA,MAAAmE,EAAKG,EAAAtE,EAAA,KAA9EsE,GAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,iCAAyBH,EAAwC,CAAA,CAAAnE,EAAA,IAAAmE,EAAAnE,EAAA,IAAAsE,GAAA,IAAAE,EAAAxE,EAAA,MAAAS,EACR+D,EAAAxE,EAAA,KAAnBwE,MAAM,KAAK/D,GAAQ,CAAAT,EAAA,IAAAS,EAAAT,EAAA,IAAAwE,GAAA,IAAAI,EAAA5E,EAAA,MAAAK,EAAAwE,OAAA7E,EAAA,MAAAwE,GAAtEI,GAAA,EAAA,EAAA,KAAC,EAAD,CAAa,KAAA,SAAiB,QAAA,YAAqB,QAAAJ,WAChDnE,EAAEwE,MACI,CAAA,CAAA7E,EAAA,IAAAK,EAAAwE,MAAA7E,EAAA,IAAAwE,EAAAxE,EAAA,IAAA4E,GAAAA,EAAA5E,EAAA,IAAA,IAAA8E,EACL,OADK9E,EAAA,MAAAsE,GAAAtE,EAAA,MAAA4E,GAJXE,GAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,uEAAf,CACER,EACAM,EAGI,GAAA5E,EAAA,IAAAsE,EAAAtE,EAAA,IAAA4E,EAAA5E,EAAA,IAAA8E,GAAAA,EAAA9E,EAAA,IALN8E,EASJ,IAAAC,GAAWrE,EAAIsE,OACfC,EAAWvE,EAAIwE,SACfC,GAAWzE,EAAI0E,OAAQjB,GAAAnE,EAAA,MAAA+E,GACwBZ,GAAAnE,EAAA,KAAtBmE,GAAArE,GAAmBiF,GAAG,CAAA/E,EAAA,IAAA+E,GAAA/E,EAAA,IAAAmE,IAA/C,IAAAkB,GAAyBlB,GAAuBG,GAAAtE,EAAA,MAAAiF,EACGX,GAAAtE,EAAA,KAAxBsE,GAAAzE,GAAqBoF,EAAG,CAAAjF,EAAA,IAAAiF,EAAAjF,EAAA,IAAAsE,IAAnD,IAAAgB,GAA2BhB,GAAyBE,GAAAxE,EAAA,MAAAmF,GACLX,GAAAxE,EAAA,KAAtBwE,GAAA5E,GAAmBuF,GAAG,CAAAnF,EAAA,IAAAmF,GAAAnF,EAAA,IAAAwE,IAA/C,IAAAe,GAAyBf,GAAuBI,GAAA5E,EAAA,MAAAW,GAAAX,EAAA,MAAAK,GAAAL,EAAA,MAAA+C,GAAA/C,EAAA,MAAA0D,GAAA1D,EAAA,MAAA2D,IAAA3D,EAAA,MAAAY,GAAAZ,EAAA,MAAAqD,GAAArD,EAAA,MAAA+D,IAAA/D,EAAA,MAAA4C,GAAA5C,EAAA,MAAA8C,GAAA9C,EAAA,MAAAoC,GAAApC,EAAA,MAAAqC,GAAArC,EAAA,MAAAU,GAAAV,EAAA,MAAAgE,IAAAhE,EAAA,MAAA8D,IAAA9D,EAAA,MAAAoD,GAAApD,EAAA,MAAAa,GAAAb,EAAA,MAAA6C,IAAA7C,EAAA,MAAAgC,GAAAhC,EAAA,MAAAkC,GAAAlC,EAAA,MAAA+B,GAAA/B,EAAA,MAAAiC,IAAAjC,EAAA,MAAAgD,GAAAhD,EAAA,MAAAmD,GAG9CyB,IAAA,EAAA,EAAA,KAAC,GAAD,CACMvE,KACEK,OACIC,WACQoB,mBACGC,sBACKC,4BACGC,8BACfE,eACOC,sBACHqB,mBACOC,2BACXR,eACWH,0BACJJ,sBACGC,0BACHC,sBACCgB,wBACdC,UACGC,aACCjB,aACJlC,SACDD,QACDwC,OACGC,UACT,CAAA,CAAArD,EAAA,IAAAW,EAAAX,EAAA,IAAAK,EAAAL,EAAA,IAAA+C,EAAA/C,EAAA,IAAA0D,EAAA1D,EAAA,IAAA2D,GAAA3D,EAAA,IAAAY,EAAAZ,EAAA,IAAAqD,EAAArD,EAAA,IAAA+D,GAAA/D,EAAA,IAAA4C,EAAA5C,EAAA,IAAA8C,EAAA9C,EAAA,IAAAoC,EAAApC,EAAA,IAAAqC,EAAArC,EAAA,IAAAU,EAAAV,EAAA,IAAAgE,GAAAhE,EAAA,IAAA8D,GAAA9D,EAAA,IAAAoD,EAAApD,EAAA,IAAAa,EAAAb,EAAA,IAAA6C,GAAA7C,EAAA,IAAAgC,EAAAhC,EAAA,IAAAkC,EAAAlC,EAAA,IAAA+B,EAAA/B,EAAA,IAAAiC,GAAAjC,EAAA,IAAAgD,EAAAhD,EAAA,IAAAmD,EAAAnD,EAAA,IAAA4E,IAAAA,GAAA5E,EAAA,IA1BJ,IAAAwF,GACEZ,GA0BAE,GAAA9E,EAAA,MAAAgD,EAe+E8B,GAAA9E,EAAA,KAAzD8E,IAAAW,EAAAC,IAAc1C,EAAwB,SAAUyC,EAAKC,EAAI,CAAA1F,EAAA,IAAAgD,EAAAhD,EAAA,IAAA8E,IAAA,IAAAa,GAAA3F,EAAA,MAAAK,GAAAL,EAAA,MAAA+C,GAAA/C,EAAA,MAAAY,GAAAZ,EAAA,MAAAqD,GAAArD,EAAA,MAAA+D,IAAA/D,EAAA,MAAAU,GAAAV,EAAA,MAAA6D,IAAA7D,EAAA,MAAAoD,GAAApD,EAAA,MAAAa,GAAAb,EAAA,MAAA0C,GAAA1C,EAAA,MAAAkE,IAAAlE,EAAA,MAAA8E,IAAA9E,EAAA,MAAAkD,GAAAlD,EAAA,MAAA+E,IAAA/E,EAAA,MAAAyC,IAAAzC,EAAA,MAAA2C,IAZ/EgD,IAAA,EAAA,EAAA,KAAC,GAAD,CACMtF,KACA0E,MACU7B,eACNa,UACIG,cACKzB,mBACGC,qBACHC,mBACCkB,oBACZnD,OACMqC,aACQ,mBAAA+B,GACZjE,SACDD,QACDwC,OACGC,UACT,CAAA,CAAArD,EAAA,IAAAK,EAAAL,EAAA,IAAA+C,EAAA/C,EAAA,IAAAY,EAAAZ,EAAA,IAAAqD,EAAArD,EAAA,IAAA+D,GAAA/D,EAAA,IAAAU,EAAAV,EAAA,IAAA6D,GAAA7D,EAAA,IAAAoD,EAAApD,EAAA,IAAAa,EAAAb,EAAA,IAAA0C,EAAA1C,EAAA,IAAAkE,GAAAlE,EAAA,IAAA8E,GAAA9E,EAAA,IAAAkD,EAAAlD,EAAA,IAAA+E,GAAA/E,EAAA,IAAAyC,GAAAzC,EAAA,IAAA2C,GAAA3C,EAAA,IAAA2F,IAAAA,GAAA3F,EAAA,IAlBJ,IAAA4F,GACED,GAkBAE,GAAA7F,EAAA,MAAAI,EAAAgE,iBAAAC,SAKmGwB,GAAA7F,EAAA,KAA/F6F,IAAA,EAAA,EAAA,KAAA,KAAA,CAAc,UAAA,wDAAgDzF,EAACgE,iBAAiBC,SAAe,CAAA,CAAArE,EAAA,IAAAI,EAAAgE,iBAAAC,SAAArE,EAAA,IAAA6F,IAAA,IAAAC,GAAA9F,EAAA,MAAAK,EAAA0F,SACpCD,GAAA9F,EAAA,KAA3D8F,IAAA,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,sCAA8BzF,EAAE0F,SAAc,CAAA,CAAA/F,EAAA,IAAAK,EAAA0F,SAAA/F,EAAA,IAAA8F,IAAA,IAAAE,GAAAhG,EAAA,MAAAG,EAEb6F,GAAAhG,EAAA,KAAtCgG,GAAA7G,EAAiBgB,EAAU,WAAW,CAAAH,EAAA,IAAAG,EAAAH,EAAA,IAAAgG,IAAA,IAAAC,GAAAjG,EAAA,MAAAyE,OAAAC,IAAA,4BAAA,EAM5CuB,IAAA,EAAA,EAAA,KAAC,GAAD,CAAwB,UAAA,WAAa,CAAA,CAAAjG,EAAA,IAAAiG,IAAAA,GAAAjG,EAAA,IAAA,IAAAkG,GAAAlG,EAAA,MAAAK,EAAA8F,UAAAnG,EAAA,MAAAgG,IAPvCE,IAAA,EAAA,EAAA,MAAA,IAAA,CACQ,KAAAF,GACC,OAAA,SACH,IAAA,aACM,UAAA,gKAJZ,CAMG3F,EAAE8F,SACHF,GACE,GAAAjG,EAAA,IAAAK,EAAA8F,SAAAnG,EAAA,IAAAgG,GAAAhG,EAAA,IAAAkG,IAAAA,GAAAlG,EAAA,IAAA,IAAAoG,GAAApG,EAAA,MAAAkG,IAAAlG,EAAA,MAAA6F,IAAA7F,EAAA,MAAA8F,IAXNM,IAAA,EAAA,EAAA,MAAA,SAAA,CAAkB,UAAA,+BAAlB,CACEP,GACAC,GACAI,GASO,GAAAlG,EAAA,IAAAkG,GAAAlG,EAAA,IAAA6F,GAAA7F,EAAA,IAAA8F,GAAA9F,EAAA,IAAAoG,IAAAA,GAAApG,EAAA,IAAA,IAAAqG,GAAArG,EAAA,MAAAK,EAAAiG,aAAAtG,EAAA,MAAAY,GAERyF,GAAAzF,GAAQ,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,sDAA8CP,EAAEiG,YAAwB,CAAA,CAA7F,KAA6FtG,EAAA,IAAAK,EAAAiG,YAAAtG,EAAA,IAAAY,EAAAZ,EAAA,IAAAqG,IAAAA,GAAArG,EAAA,IAAA,IAAAuG,GAAAvG,EAAA,MAAAK,EAAAmG,OAAAxG,EAAA,MAAAe,GAC7FwF,GAAAxF,GAAS,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,iCAAyBV,EAAEmG,MAAkB,CAAA,CAAnE,KAAmExG,EAAA,IAAAK,EAAAmG,MAAAxG,EAAA,IAAAe,EAAAf,EAAA,IAAAuG,IAAAA,GAAAvG,EAAA,IAAA,IAAAyG,GAAAzG,EAAA,MAAAc,EACa2F,GAAAzG,EAAA,KAAhFyG,GAAA3F,GAAQ,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,kDAA0CA,EAAiB,CAAA,CAAhF,KAAgFd,EAAA,IAAAc,EAAAd,EAAA,IAAAyG,IAAA,IAAAC,GAAA1G,EAAA,MAAAwB,EACSkF,GAAA1G,EAAA,KAAzF0G,GAAAlF,GAAsB,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,+BAAuBA,EAA+B,CAAA,CAAzF,KAAyFxB,EAAA,IAAAwB,EAAAxB,EAAA,IAAA0G,IAAA,IAAAC,GAAA3G,EAAA,MAAA0B,EAKlFiF,GAAA3G,EAAA,KAJP2G,GAAAjF,GACC,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,8FACZA,EAEG,CAAA,CAJP,KAIO1B,EAAA,IAAA0B,EAAA1B,EAAA,IAAA2G,IAAA,IAAAC,GAAA5G,EAAA,MAAAyE,OAAAC,IAAA,4BAAA,EAIEkC,IAAA,EAAA,EAAA,KAAC,EAAD,CAAyB,UAAA,qBAAkC,YAAA,KAAQ,CAAA,CAAA5G,EAAA,IAAA4G,IAAAA,GAAA5G,EAAA,IAAA,IAAA6G,GAAA7G,EAAA,MAAAsD,EAMZuD,GAAA7G,EAAA,KAAnD6G,GAAAC,GAAU,KAAKxD,EAAqB,SAAUwD,EAAK,CAAA9G,EAAA,IAAAsD,EAAAtD,EAAA,IAAA6G,IAAA,IAAAE,GAAAC,GAAAhH,EAAA,OAAAiB,GAEvB8F,GAAA/G,EAAA,KAAAgH,GAAAhH,EAAA,OADzB+G,OAAM9F,EAAmB,GAAK,CACnC+F,OAAM/F,EAAmB,GAAK,CAAAjB,EAAA,KAAAiB,EAAAjB,EAAA,KAAA+G,GAAA/G,EAAA,KAAAgH,IAAA,IAAAC,GAAAjH,EAAA,OAAAuB,EACG0F,GAAAjH,EAAA,MAA/BiH,OAAM1F,EAAgB,SAAS,CAAAvB,EAAA,KAAAuB,EAAAvB,EAAA,KAAAiH,IAAA,IAAAC,GAAAlH,EAAA,OAAAK,GAAAL,EAAA,OAAAa,GAAAb,EAAA,OAAA6G,IAAA7G,EAAA,OAAA+G,IAAA/G,EAAA,OAAAgH,IAAAhH,EAAA,OAAAiH,IAAAjH,EAAA,OAAAqF,IAAArF,EAAA,OAAA+E,GAAAoC,SAV3CD,IAAA,EAAA,EAAA,KAAC,EAAD,CACQ,KAAAN,GACC,MAAAvG,EAAE+G,YACC,SAAA/G,EAAEgH,eACAhC,WAAAA,GACH,QAAAN,GAAEoC,QACKtG,eAAAA,EACN,SAAAgG,GACG,YAAAE,GACL,OAAAC,GACE,SAAAC,GACN5G,KACJ,CAAA,CAAAL,EAAA,KAAAK,EAAAL,EAAA,KAAAa,EAAAb,EAAA,KAAA6G,GAAA7G,EAAA,KAAA+G,GAAA/G,EAAA,KAAAgH,GAAAhH,EAAA,KAAAiH,GAAAjH,EAAA,KAAAqF,GAAArF,EAAA,KAAA+E,GAAAoC,QAAAnH,EAAA,KAAAkH,IAAAA,GAAAlH,EAAA,KAAA,IAAAsH,GAAAtH,EAAA,OAAAyE,OAAAC,IAAA,4BAAA,EAEM4C,IAAA,EAAA,EAAA,KAAC,EAAD,CAAgB,UAAA,qBAAkC,YAAA,KAAQ,CAAA,CAAAtH,EAAA,KAAAsH,IAAAA,GAAAtH,EAAA,KAAA,IAAAuH,GAAAvH,EAAA,OAAAsD,EAMDiE,GAAAvH,EAAA,MAArDuH,GAAAC,GAAU,KAAKlE,EAAqB,WAAYwD,EAAK,CAAA9G,EAAA,KAAAsD,EAAAtD,EAAA,KAAAuH,IAAA,IAAAE,GAAAC,GAAA1H,EAAA,OAAAmB,GAEvBsG,GAAAzH,EAAA,KAAA0H,GAAA1H,EAAA,OAD3ByH,OAAMtG,EAAqB,GAAK,CACrCuG,OAAMvG,EAAqB,GAAK,CAAAnB,EAAA,KAAAmB,EAAAnB,EAAA,KAAAyH,GAAAzH,EAAA,KAAA0H,IAAA,IAAAC,GAAA3H,EAAA,OAAAuB,EACGoG,GAAA3H,EAAA,MAAjC2H,OAAMpG,EAAgB,WAAW,CAAAvB,EAAA,KAAAuB,EAAAvB,EAAA,KAAA2H,IAAA,IAAAC,GAAA5H,EAAA,OAAAK,GAAAL,EAAA,OAAAa,GAAAb,EAAA,OAAAuH,IAAAvH,EAAA,OAAAyH,IAAAzH,EAAA,OAAA0H,IAAA1H,EAAA,OAAA2H,IAAA3H,EAAA,OAAAsF,IAAAtF,EAAA,OAAAiF,EAAAkC,SAV7CS,IAAA,EAAA,EAAA,KAAC,EAAD,CACQ,KAAAN,GACC,MAAAjH,EAAEwH,cACC,SAAAxH,EAAEyH,iBACAxC,WAAAA,GACH,QAAAL,EAAEkC,QACKtG,eAAAA,EACN,SAAA0G,GACG,YAAAE,GACL,OAAAC,GACE,SAAAC,GACNtH,KACJ,CAAA,CAAAL,EAAA,KAAAK,EAAAL,EAAA,KAAAa,EAAAb,EAAA,KAAAuH,GAAAvH,EAAA,KAAAyH,GAAAzH,EAAA,KAAA0H,GAAA1H,EAAA,KAAA2H,GAAA3H,EAAA,KAAAsF,GAAAtF,EAAA,KAAAiF,EAAAkC,QAAAnH,EAAA,KAAA4H,IAAAA,GAAA5H,EAAA,KAAA,IAAA+H,GAAA/H,EAAA,OAAAyE,OAAAC,IAAA,4BAAA,EAEMqD,IAAA,EAAA,EAAA,KAAC,EAAD,CAAyB,UAAA,qBAAkC,YAAA,KAAQ,CAAA,CAAA/H,EAAA,KAAA+H,IAAAA,GAAA/H,EAAA,KAAA,IAAAgI,GAAAhI,EAAA,OAAAsD,EAMZ0E,GAAAhI,EAAA,MAAnDgI,GAAAC,GAAU,KAAK3E,EAAqB,SAAUwD,EAAK,CAAA9G,EAAA,KAAAsD,EAAAtD,EAAA,KAAAgI,IAAA,IAAAE,GAAAC,GAAAnI,EAAA,OAAAqB,GAEvB6G,GAAAlI,EAAA,KAAAmI,GAAAnI,EAAA,OADzBkI,OAAM7G,EAAmB,GAAK,CACnC8G,OAAM9G,EAAmB,GAAK,CAAArB,EAAA,KAAAqB,EAAArB,EAAA,KAAAkI,GAAAlI,EAAA,KAAAmI,IAAA,IAAAC,GAAApI,EAAA,OAAAuB,EACG6G,GAAApI,EAAA,MAA/BoI,OAAM7G,EAAgB,SAAS,CAAAvB,EAAA,KAAAuB,EAAAvB,EAAA,KAAAoI,IAAA,IAAAC,GAAArI,EAAA,OAAAK,GAAAL,EAAA,OAAAuF,IAAAvF,EAAA,OAAAmF,GAAAgC,SAAAnH,EAAA,OAAAa,GAAAb,EAAA,OAAAgI,IAAAhI,EAAA,OAAAkI,IAAAlI,EAAA,OAAAmI,IAAAnI,EAAA,OAAAoI,IAV3CC,IAAA,EAAA,EAAA,KAAC,EAAD,CACQ,KAAAN,GACC,MAAA1H,EAAEiI,YACC,SAAAjI,EAAEkI,eACAhD,WAAAA,GACH,QAAAJ,GAAEgC,QACKtG,eAAAA,EACN,SAAAmH,GACG,YAAAE,GACL,OAAAC,GACE,SAAAC,GACN/H,KACJ,CAAA,CAAAL,EAAA,KAAAK,EAAAL,EAAA,KAAAuF,GAAAvF,EAAA,KAAAmF,GAAAgC,QAAAnH,EAAA,KAAAa,EAAAb,EAAA,KAAAgI,GAAAhI,EAAA,KAAAkI,GAAAlI,EAAA,KAAAmI,GAAAnI,EAAA,KAAAoI,GAAApI,EAAA,KAAAqI,IAAAA,GAAArI,EAAA,KAAA,IAAAwI,GAAAxI,EAAA,OAAAkH,IAAAlH,EAAA,OAAA4H,IAAA5H,EAAA,OAAAqI,IAvCJG,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,+BAAf,CACEtB,GAaAU,GAaAS,GAaI,GAAArI,EAAA,KAAAkH,GAAAlH,EAAA,KAAA4H,GAAA5H,EAAA,KAAAqI,GAAArI,EAAA,KAAAwI,IAAAA,GAAAxI,EAAA,KAAA,IAAAyI,GAAAzI,EAAA,OAAAK,EAAAqI,sBAAA1I,EAAA,OAAAS,GAAAT,EAAA,OAAAyB,GAMYgH,GAAA,SAAA,CACd,MAAMhI,GAAQ,CACdgB,EAAuBpB,EAAEqI,qBAAsB,CAC/CC,OAAMC,eAAkBnH,EAAuB,KAAK,CAAE,IAAK,EAC5DzB,EAAA,KAAAK,EAAAqI,qBAAA1I,EAAA,KAAAS,EAAAT,EAAA,KAAAyB,EAAAzB,EAAA,KAAAyI,IAAAA,GAAAzI,EAAA,KAAA,IAAA6I,GAAA7I,EAAA,OAAAK,GAAAL,EAAA,OAAAiB,GAAAjB,EAAA,OAAAyI,IAAAzI,EAAA,OAAAgB,GAAAhB,EAAA,OAAA4F,IARHiD,IAAA,EAAA,EAAA,KAAC,GAAD,CACQ7H,KAAAA,EACQC,aAAAA,EACVZ,KACY,eAAAoI,GAKF7C,aAAAA,GACd,CAAA,CAAA5F,EAAA,KAAAK,EAAAL,EAAA,KAAAiB,EAAAjB,EAAA,KAAAyI,GAAAzI,EAAA,KAAAgB,EAAAhB,EAAA,KAAA4F,GAAA5F,EAAA,KAAA6I,IAAAA,GAAA7I,EAAA,KAAA,IAAA8I,GAAA9I,EAAA,OAAAW,GAAAX,EAAA,OAAAK,GAAAL,EAAA,OAAA+C,GAAA/C,EAAA,OAAAmC,IAAAnC,EAAA,OAAAwD,IAAAxD,EAAA,OAAAY,GAAAZ,EAAA,OAAAqD,GAAArD,EAAA,OAAA+D,IAAA/D,EAAA,OAAAU,GAAAV,EAAA,OAAAgE,IAAAhE,EAAA,OAAA4D,IAAA5D,EAAA,OAAAiE,IAAAjE,EAAA,OAAAoD,GAAApD,EAAA,OAAAa,GAAAb,EAAA,OAAA8B,GAAA9B,EAAA,OAAAmB,GAAAnB,EAAA,OAAAuC,IAAAvC,EAAA,OAAA4B,GAAA5B,EAAA,OAAA6B,GAAA7B,EAAA,OAAAkE,IAAAlE,EAAA,OAAAkB,GAAAlB,EAAA,OAAAsC,GAAAtC,EAAA,OAAAwC,IAAAxC,EAAA,OAAA2B,GAAA3B,EAAA,OAAAgD,GAAAhD,EAAA,OAAAiD,IAEF6F,IAAA,EAAA,EAAA,KAAC,GAAD,CACQ5H,KAAAA,EACQC,aAAAA,EACVd,KACEK,OACIC,WACEgB,aACGC,gBACJC,YACGC,eACNK,UACGqB,aACKP,kBACSD,0BACRV,kBACGC,sBACHC,mBACCoB,oBACVG,UACGC,aACAC,aACCC,cACAnB,aACJlC,SACDD,QACDwC,OACGC,UACT,CAAA,CAAArD,EAAA,KAAAW,EAAAX,EAAA,KAAAK,EAAAL,EAAA,KAAA+C,EAAA/C,EAAA,KAAAmC,GAAAnC,EAAA,KAAAwD,GAAAxD,EAAA,KAAAY,EAAAZ,EAAA,KAAAqD,EAAArD,EAAA,KAAA+D,GAAA/D,EAAA,KAAAU,EAAAV,EAAA,KAAAgE,GAAAhE,EAAA,KAAA4D,GAAA5D,EAAA,KAAAiE,GAAAjE,EAAA,KAAAoD,EAAApD,EAAA,KAAAa,EAAAb,EAAA,KAAA8B,EAAA9B,EAAA,KAAAmB,EAAAnB,EAAA,KAAAuC,GAAAvC,EAAA,KAAA4B,EAAA5B,EAAA,KAAA6B,EAAA7B,EAAA,KAAAkE,GAAAlE,EAAA,KAAAkB,EAAAlB,EAAA,KAAAsC,EAAAtC,EAAA,KAAAwC,GAAAxC,EAAA,KAAA2B,EAAA3B,EAAA,KAAAgD,EAAAhD,EAAA,KAAAiD,GAAAjD,EAAA,KAAA8I,IAAAA,GAAA9I,EAAA,KAAA,IAAA+I,GAAA/I,EAAA,OAAAK,GAAAL,EAAA,OAAAoB,GAAApB,EAAA,OAAAwF,IAAAxF,EAAA,OAAAyD,IAAAzD,EAAA,OAAAqB,GAEF0H,IAAA,EAAA,EAAA,KAAC,GAAD,CACQ3H,KAAAA,EACQC,aAAAA,EACVhB,KACYoD,eAAAA,GACF+B,aAAAA,GACd,CAAA,CAAAxF,EAAA,KAAAK,EAAAL,EAAA,KAAAoB,EAAApB,EAAA,KAAAwF,GAAAxF,EAAA,KAAAyD,GAAAzD,EAAA,KAAAqB,EAAArB,EAAA,KAAA+I,IAAAA,GAAA/I,EAAA,KAGM,IAAAgJ,GAAA1H,IAAiB,KAAI2H,GAAAjJ,EAAA,OAAAuB,EAG1B0H,GAAAjJ,EAAA,MAFaiJ,GAAAC,GAAA,CACPA,GAAG3H,EAAgB,KAAK,EAC9BvB,EAAA,KAAAuB,EAAAvB,EAAA,KAAAiJ,IAAA,IAAAE,GAAAnJ,EAAA,OAAAuB,EAGoC4H,GAAAnJ,EAAA,MAA3BmJ,OAAM5H,EAAgB,KAAK,CAAAvB,EAAA,KAAAuB,EAAAvB,EAAA,KAAAmJ,IAAA,IAAAC,GAAApJ,EAAA,OAAAuD,GAEM6F,GAAApJ,EAAA,MAA1BoJ,OAAM,KAAK7F,IAAe,CAAAvD,EAAA,KAAAuD,GAAAvD,EAAA,KAAAoJ,IAAA,IAAAC,GAAArJ,EAAA,OAAAK,GAAAL,EAAA,OAAAsB,GAAAtB,EAAA,OAAAa,GAAAb,EAAA,OAAAgJ,IAAAhJ,EAAA,OAAAiJ,IAAAjJ,EAAA,OAAAmJ,IAAAnJ,EAAA,OAAAoJ,IAT7CC,IAAA,EAAA,EAAA,KAAC,EAAD,CACQ,KAAAL,GACQ,aAAAC,GAGV5I,KACUiB,eACJ,SAAA6H,GACFtI,SACS,gBAAAuI,GACjB,CAAA,CAAApJ,EAAA,KAAAK,EAAAL,EAAA,KAAAsB,EAAAtB,EAAA,KAAAa,EAAAb,EAAA,KAAAgJ,GAAAhJ,EAAA,KAAAiJ,GAAAjJ,EAAA,KAAAmJ,GAAAnJ,EAAA,KAAAoJ,GAAApJ,EAAA,KAAAqJ,IAAAA,GAAArJ,EAAA,KAAA,IAAAsJ,GACE,OADFtJ,EAAA,OAAAoG,IAAApG,EAAA,OAAAqG,IAAArG,EAAA,OAAAuG,IAAAvG,EAAA,OAAAyG,IAAAzG,EAAA,OAAA0G,IAAA1G,EAAA,OAAA2G,IAAA3G,EAAA,OAAAwI,IAAAxI,EAAA,OAAA6I,IAAA7I,EAAA,OAAA8I,IAAA9I,EAAA,OAAA+I,IAAA/I,EAAA,OAAAqJ,IA9HJC,IAAA,EAAA,EAAA,MAAA,MAAA,CAAe,UAAA,uEAAf,CACElD,GAcCC,GACAE,GACAE,GACAC,GACAC,GAMD6B,GA0CAK,GAYAC,GA6BAC,GAQAM,GAWI,GAAArJ,EAAA,KAAAoG,GAAApG,EAAA,KAAAqG,GAAArG,EAAA,KAAAuG,GAAAvG,EAAA,KAAAyG,GAAAzG,EAAA,KAAA0G,GAAA1G,EAAA,KAAA2G,GAAA3G,EAAA,KAAAwI,GAAAxI,EAAA,KAAA6I,GAAA7I,EAAA,KAAA8I,GAAA9I,EAAA,KAAA+I,GAAA/I,EAAA,KAAAqJ,GAAArJ,EAAA,KAAAsJ,IAAAA,GAAAtJ,EAAA,KA/HNsJ"}
|
|
1
|
+
{"version":3,"file":"channels-settings-Bn0YSztA.js","names":["DropdownMenu","MoreHorizontal","Pencil","Trash2","ReactNode","Button","ChannelsSettingsMessages","cn","SETTINGS_SHELL_POPOVER_Z","ChannelImHubCardProps","icon","title","subtitle","configured","enabled","onToggle","next","Promise","toggleDisabled","onConfigure","onEdit","onRemove","ch","ChannelImHubCard","t0","$","_c","t1","t2","t3","hubConnectedBadge","t4","t5","t6","t7","t8","enableChannelAria","hubConfigureButton","menuEditConfig","menuMoreAria","menuRemoveConfig","t9","Dialog","Button","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","ChannelsRemoveChannelDialog","t0","$","_c","open","onOpenChange","ch","removeTarget","onCancel","saving","onConfirmRemove","t1","Symbol","for","t2","t3","removeChannelTitle","t4","feishuTitle","removeChannelConfirm","telegramTitle","weixinTitle","replace","t5","t6","modalCancel","t7","removeChannelAction","t8","t9","t10","_temp","t11","e","preventDefault","BindingRuleWire","ChannelAgentRoutesState","normAcc","s","trim","toLowerCase","isSimpleAccountOnlyRule","r","m","match","channel","accountId","peerId","peerKind","guildId","teamId","memberRoleIds","length","telegramRoutingAccountIds","tg","accounts","Record","Object","keys","sort","weixinRoutingAccountIds","wx","feishuRoutingAccountIds","fs","appId","appSecret","extractChannelAgentRoutes","bindings","telegramAccountIds","weixinAccountIds","feishuAccountIds","defaultAgentId","telegram","weixin","feishu","id","rule","find","agentId","mergeChannelAgentBindings","previous","routes","tgAcc","Set","map","wxAcc","fsAcc","filtered","filter","startsWith","ch","acc","has","added","push","priority","enabled","ChannelsSettingsState","cn","nativeSelectMaxWidthClass","selectControlBaseClass","settingsInputFocusClass","channelsInputClassName","channelsSelectClassName","parseIdList","raw","split","map","s","trim","filter","Boolean","test","Number","joinAllowFrom","ids","String","join","telegramDefaultBotToken","tg","t","accounts","default","botToken","isTelegramConfigured","Object","values","some","a","length","isWeixinConfigured","wx","keys","allowFrom","isFeishuConfigured","fs","appId","appSecret","ReactNode","channelsSelectClassName","FieldLabel","t0","$","_c","children","t1","FieldHint","SelectFieldProps","label","value","T","onChange","v","options","SelectField","t2","Symbol","for","t3","e","target","t4","map","_temp","t5","t6","o","agentListDisplayName","nativeSelectMaxWidthClass","cn","messages","ChannelsSettingsMessages","useLocaleStore","FieldHint","FieldLabel","channelsInputClassName","ChannelAgentRoutingBlock","t0","$","_c","accountIds","routes","defaultAgentId","agentItems","disabled","onChange","ch","language","_temp","t1","t2","t3","t4","t5","Symbol","for","bb0","agentsMessages","agentsSettings","length","opts","id","t6","agentRoutingTitle","t7","agentRoutingHint","map","acc","agentRoutingAccountLabel","agentRoutingAgentLabel","toLowerCase","e","target","value","ag","s","Check","ChevronDown","Copy","Eye","EyeOff","Button","ChatAgentsPayload","feishuRoutingAccountIds","ChannelsSettingsState","DmPolicy","GroupPolicy","ChannelsSettingsMessages","cn","ChannelAgentRoutingBlock","FieldHint","FieldLabel","channelsInputClassName","joinAllowFrom","parseIdList","FeishuMoreSettingsSection","t0","$","_c","ch","form","baseline","showFeishuSecret","setShowFeishuSecret","showFeishuWebhookSecrets","setShowFeishuWebhookSecrets","feishuCopied","feishuWebhookCopied","copyFeishuSecret","copyFeishuWebhookConfig","updateFeishu","updateChannelAgentRoute","feishuAccountsDraft","setFeishuAccountsDraft","feishuAccountsError","onFeishuAccountsBlur","dmOpts","groupOpts","chatAgents","saving","dirty","save","discard","fs","feishu","feishuBaselineSecret","appSecret","t1","Boolean","String","trim","feishuSecretDisplayLocked","t2","Symbol","for","t3","advancedShow","t4","feishuAdvancedHint","t5","e","enabled","target","checked","t6","t7","enableFeishuAria","t8","t9","t10","feishuAppId","t11","t12","e_0","appId","value","t13","t14","feishuAppIdDesc","t15","t16","t17","feishuAppSecret","t18","t19","t20","repeat","Math","max","length","t21","e_1","t22","t23","copied","copy","t24","_temp","t25","t26","hide","show","t27","t28","t29","feishuAppSecretDesc","t30","t31","feishuDomain","t32","t33","domain","t34","e_2","t35","t36","t37","t38","t39","connectionMode","t40","t41","e_3","t42","t43","t44","t45","connectionModeDesc","t46","t47","t48","encryptKey","encryptKeyDesc","verificationToken","verificationTokenDesc","webhookHost","webhookPath","webhookPathDesc","webhookPort","webhookTitle","_temp2","e_4","e_5","e_6","e_7","Number","e_8","t49","renderMode","t50","t51","e_9","t52","t53","t54","t55","t56","t57","reactionNotifications","t58","t59","e_10","t60","t61","t62","t63","t64","t65","t66","e_11","streaming","t67","t68","enableStreaming","t69","dmPolicy","t70","t71","t72","e_12","t73","map","_temp3","t74","t75","t76","groupPolicy","t77","t78","t79","e_13","t80","_temp4","t81","t82","t83","t84","e_14","requireMention","t85","t86","t87","allowFromDm","t88","t89","allowFrom","t90","e_15","t91","t92","allowFromDmDesc","t93","t94","allowFromGroups","t95","t96","groupAllowFrom","t97","e_16","t98","t99","allowFromGroupsDesc","t100","t101","historyLimit","t102","t103","t104","e_17","t105","t106","t107","textChunkLimit","t108","t109","t110","e_18","t111","t112","t113","t114","feishuToolsTitle","t115","feishuToolDoc","t116","feishuToolWiki","t117","feishuToolDrive","t118","feishuToolPerm","t119","feishuToolBitable","t120","feishuToolScopes","t121","t122","const","t123","tools","t124","key","label","e_19","feishuToolsDesc","t125","t126","feishuActionsTitle","t127","actions","reactions","t128","e_20","t129","t130","feishuActionReactions","t131","t132","t133","items","t134","acc","aid","t135","channelAgentRoutes","defaultAgentId","t136","multiAccountJson","t137","t138","e_21","t139","t140","multiAccountJsonDesc","t141","t142","t143","t144","t145","t146","t147","t148","t149","t150","t151","opt_0","opt","s_0","s","revalidateGatewayConfig","fetchJson","apiUrl","extractChannelAgentRoutes","mergeChannelAgentBindings","feishuRoutingAccountIds","telegramRoutingAccountIds","weixinRoutingAccountIds","BindingRuleWire","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","TelegramAccount","WeixinAccount","TelegramConfig","WeixinConfig","emptyTelegramAccount","accountId","name","enabled","botToken","allowFrom","dmPolicy","groupPolicy","replyToMode","apiRoot","proxy","historyLimit","textChunkLimit","streamMode","defaultChannelsState","bindingsFull","channelAgentRoutes","telegram","weixin","feishu","defaultAgentId","debug","groupAllowFrom","accounts","default","routeTag","defaultAccount","appId","appSecret","domain","connectionMode","verificationToken","encryptKey","webhookHost","webhookPort","webhookPath","requireMention","renderMode","streaming","reactionNotifications","tools","doc","wiki","drive","scopes","bitable","perm","actions","reactions","normalizeChannelsFromConfig","config","cfg","channels","undefined","ch","Record","tg","wx","fs","telegramAccounts","Array","isArray","legacyTopToken","trim","defaultTok","weixinAccounts","wxAcc","bindingsRaw","cfgObj","b","bindings","agents","a","defaultId","toLowerCase","base","Boolean","String","tgIds","wxIds","fsIds","map","r","fetchChannelsSettings","Promise","res","ok","payload","c","WeixinGatewayQrLoginStatusPayload","phase","qrcodeUrl","qrStatus","message","fetchWeixinGatewayQrLoginStart","body","account","timeoutMs","sessionKey","method","JSON","stringify","fetchWeixinGatewayQrLoginStatus","status","encodeURIComponent","patchChannelsSettings","state","mergedBindings","weixinRouteTag","raw","test","Number","length","FeishuSetupStatusPayload","openId","fetchFeishuSetupStart","qrUrl","fetchFeishuSetupStatus","Dialog","ExternalLink","X","QRCode","useCallback","useEffect","useState","ReactNode","Button","fetchFeishuSetupStart","fetchFeishuSetupStatus","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","FeishuDomain","FeishuQrSetupDialog","open","onOpenChange","ch","onSetupSuccess","moreSettings","result","appId","domain","openId","busy","setBusy","setDomain","sessionKey","setSessionKey","qrUrl","setQrUrl","error","setError","qrDataUrl","setQrDataUrl","qrGenFailed","setQrGenFailed","startScan","d","e","Error","message","cancelled","intervalId","poll","status","phase","undefined","window","clearInterval","ok","setInterval","toDataURL","width","margin","errorCorrectionLevel","color","dark","light","then","url","catch","showQr","Boolean","showRegionSwitch","qrFrameLoading","preventDefault","feishuQrCloseAria","feishuQrModalTitle","feishuQrModalSubtitle","feishuQrStarting","feishuQrScanHint","feishuQrEncoding","feishuQrImageError","feishuQrOpenLink","feishuRegionSwitchAria","feishuRegionChina","feishuRegionInternational","feishuQrRegenerate","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","cn","ChannelsSettingsMessages","FieldHint","FieldLabel","SelectField","channelsInputClassName","joinAllowFrom","parseIdList","TelegramAdvanced","t0","$","_c","tg","updateTelegram","ch","dmOpts","groupOpts","replyOpts","streamOpts","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","onTgAccountsBlur","t1","apiRoot","t2","Symbol","for","t3","e","target","value","t4","t5","t6","proxy","t7","t8","e_0","t9","t10","t11","v","dmPolicy","t12","t13","v_0","groupPolicy","t14","t15","v_1","replyToMode","t16","t17","v_2","streamMode","t18","t19","allowFromGroups","t20","t21","groupAllowFrom","t22","e_1","t23","t24","t25","historyLimit","t26","t27","e_2","parseInt","t28","t29","t30","textChunkLimit","t31","t32","e_3","t33","t34","t35","t36","e_4","debug","checked","t37","t38","telegramDebug","t39","multiAccountJson","t40","t41","e_5","t42","t43","multiAccountJsonDesc","t44","t45","Dialog","Check","ChevronDown","Copy","Eye","EyeOff","X","Button","ChatAgentsPayload","telegramRoutingAccountIds","emptyTelegramAccount","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","ChannelAgentRoutingBlock","FieldHint","FieldLabel","TelegramAdvanced","channelsInputClassName","joinAllowFrom","parseIdList","telegramDefaultBotToken","TelegramChannelSettingsDialog","t0","$","_c","open","onOpenChange","ch","form","baseline","tgAdvanced","setTgAdvanced","showToken","setShowToken","copied","copyToken","updateTelegram","updateChannelAgentRoute","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","onTgAccountsBlur","dmOpts","groupOpts","replyOpts","streamOpts","chatAgents","saving","dirty","save","discard","tg","telegram","t1","tgBaselineToken","t2","tgToken","t3","Boolean","String","trim","telegramTokenDisplayLocked","t4","Symbol","for","t5","t6","telegramTitle","t7","telegramSubtitle","t8","t9","t10","modalCancel","t11","t12","e_0","enabled","e","target","checked","t13","t14","enableTelegramAria","t15","t16","t17","telegramToken","t18","t19","t20","repeat","Math","max","length","t21","accounts","e_1","prev","default","accountId","botToken","value","t22","t23","copy","t24","_temp2","t25","t26","hide","show","t27","t28","t29","telegramTokenDesc","t30","t31","allowFromDm","t32","t33","allowFrom","t34","e_2","t35","t36","allowFromDmDesc","t37","t38","t39","items","t40","acc","aid","t41","channelAgentRoutes","defaultAgentId","t42","_temp3","t43","t44","t45","t46","advancedHide","advancedShow","t47","t48","t49","t50","t51","t52","t53","t54","t55","ok","t56","t57","t58","t59","_temp","t60","a","s","preventDefault","useCallback","useEffect","useMemo","useState","useSWR","fetchChatAgents","useGatewayConfigSwr","defaultChannelsState","normalizeChannelsFromConfig","patchChannelsSettings","ChannelsSettingsState","DmPolicy","GroupPolicy","ReplyToMode","StreamMode","messages","useGatewayStore","useLocaleStore","telegramDefaultBotToken","useChannelsSettingsPanel","language","s","m","ch","channelsSettings","token","st","hasToken","Boolean","form","setForm","baseline","setBaseline","saving","setSaving","error","setError","saveOk","setSaveOk","weixinModalOpen","setWeixinModalOpen","telegramModalOpen","setTelegramModalOpen","feishuModalOpen","setFeishuModalOpen","removeTarget","setRemoveTarget","weixinSuccessBanner","setWeixinSuccessBanner","feishuSetupSuccessBanner","setFeishuSetupSuccessBanner","tgAdvanced","setTgAdvanced","showToken","setShowToken","showFeishuSecret","setShowFeishuSecret","showFeishuWebhookSecrets","setShowFeishuWebhookSecrets","copied","setCopied","feishuCopied","setFeishuCopied","feishuWebhookCopied","setFeishuWebhookCopied","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","setTgAccountsError","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","setWxAccountsError","feishuAccountsDraft","setFeishuAccountsDraft","feishuAccountsError","setFeishuAccountsError","data","chatAgents","revalidateOnFocus","cfgData","swrError","isLoading","mutate","parsed","payload","config","undefined","dirty","JSON","stringify","structuredClone","telegram","accounts","weixin","feishu","loading","fetchError","Error","message","String","updateChannelAgentRoute","channel","accountId","agentId","f","k","channelAgentRoutes","trim","toLowerCase","updateTelegram","patch","Partial","updateWeixin","updateFeishu","save","Promise","next","baselineClone","window","setTimeout","e","saveError","discard","b","toggleChannelEnabled","which","enabled","prev","synced","removeChannel","defaults","copyToken","t","navigator","clipboard","writeText","catch","handleFeishuQrSetupSuccess","result","appId","domain","openId","feishuQrSetupSuccess","copyFeishuSecret","appSecret","copyFeishuWebhookConfig","fs","connectionMode","verificationToken","encryptKey","webhookHost","webhookPort","webhookPath","onTgAccountsBlur","raw","parsedJson","parse","Array","isArray","jsonObjectAccounts","err","jsonInvalid","onWxAccountsBlur","onFeishuAccountsBlur","dmOpts","map","value","label","policy","dm","groupOpts","group","replyOpts","reply","streamOpts","stream","Dialog","ExternalLink","X","QRCode","useCallback","useEffect","useState","ReactNode","Button","fetchWeixinGatewayQrLoginStart","fetchWeixinGatewayQrLoginStatus","ChannelsSettingsMessages","cn","SETTINGS_SHELL_CONTENT_Z","SETTINGS_SHELL_OVERLAY_Z","WeixinQrLoginDialog","open","onOpenChange","ch","onLoginSuccess","moreSettings","Promise","busy","setBusy","sessionKey","setSessionKey","qrcodeUrl","setQrcodeUrl","error","setError","hint","setHint","qrDataUrl","setQrDataUrl","qrGenFailed","setQrGenFailed","start","r","e","Error","message","cancelled","intervalId","poll","st","phase","qrStatus","weixinQrLoginScanned","undefined","window","clearInterval","ok","setInterval","weixinQrLoginSuccess","toDataURL","width","margin","errorCorrectionLevel","color","dark","light","then","url","catch","showQr","Boolean","qrFrameLoading","preventDefault","weixinQrModalCloseAria","weixinQrModalTitle","weixinQrModalSubtitle","weixinQrLoginBusy","weixinQrEncoding","weixinQrImageError","weixinQrOpenLink","weixinQrRegenerate","ChannelsSettingsState","DmPolicy","StreamMode","weixinRoutingAccountIds","cn","ChannelsSettingsMessages","ChannelAgentRoutingBlock","FieldHint","FieldLabel","SelectField","channelsInputClassName","WeixinAdvanced","t0","$","_c","wx","updateWeixin","ch","dmOpts","streamOpts","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","onWxAccountsBlur","channelAgentRoutesWx","defaultAgentId","agentItems","onAgentRouteChange","routingDisabled","t1","weixinAllowFrom","t2","Symbol","for","t3","allowFrom","join","t4","e","target","value","split","map","_temp","filter","Boolean","t5","t6","weixinAllowFromDesc","t7","t8","v","dmPolicy","t9","t10","v_0","streamMode","t11","t12","historyLimit","t13","t14","e_0","parseInt","t15","t16","t17","textChunkLimit","t18","t19","e_1","t20","t21","t22","t23","weixinRouteTag","t24","t25","e_2","routeTag","t26","routeTagPlaceholder","t27","weixinRouteTagDesc","t28","t29","e_3","debug","checked","t30","t31","weixinDebug","t32","weixinDebugDesc","t33","weixinAccountsJson","t34","t35","e_4","t36","t37","weixinAccountsJsonDesc","t38","t39","t40","t41","s","trim","ChevronDown","Button","ChatAgentsPayload","ChannelsSettingsState","DmPolicy","StreamMode","ChannelsSettingsMessages","WeixinAdvanced","WeixinMoreSettingsSection","t0","$","_c","ch","wx","updateWeixin","dmOpts","streamOpts","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","onWxAccountsBlur","form","chatAgents","onAgentRouteChange","saving","dirty","save","discard","t1","Symbol","for","t2","advancedShow","t3","weixinAdvancedHint","t4","e","enabled","target","checked","t5","t6","enableWeixinAria","t7","t8","items","t9","channelAgentRoutes","weixin","defaultAgentId","t10","t11","t12","t13","t14","t15","t16","t17","t18","ExternalLink","MessageSquare","Send","Button","docsGuidePageUrl","ChannelImHubCard","ChannelsRemoveChannelDialog","FeishuMoreSettingsSection","FeishuQrSetupDialog","TelegramChannelSettingsDialog","useChannelsSettingsPanel","WeixinQrLoginDialog","WeixinMoreSettingsSection","isFeishuConfigured","isTelegramConfigured","isWeixinConfigured","ChannelsSettingsPanel","$","_c","ctx","language","m","ch","hasToken","loading","fetchError","mutate","form","baseline","dirty","saving","error","saveOk","weixinModalOpen","setWeixinModalOpen","telegramModalOpen","setTelegramModalOpen","feishuModalOpen","setFeishuModalOpen","removeTarget","setRemoveTarget","weixinSuccessBanner","setWeixinSuccessBanner","feishuSetupSuccessBanner","tgAdvanced","setTgAdvanced","showToken","setShowToken","showFeishuSecret","setShowFeishuSecret","showFeishuWebhookSecrets","setShowFeishuWebhookSecrets","copied","feishuCopied","feishuWebhookCopied","tgAccountsDraft","setTgAccountsDraft","tgAccountsError","wxAccountsDraft","setWxAccountsDraft","wxAccountsError","feishuAccountsDraft","setFeishuAccountsDraft","feishuAccountsError","chatAgents","updateChannelAgentRoute","updateTelegram","updateWeixin","updateFeishu","save","discard","toggleChannelEnabled","removeChannel","copyToken","handleFeishuQrSetupSuccess","copyFeishuSecret","copyFeishuWebhookConfig","onTgAccountsBlur","onWxAccountsBlur","onFeishuAccountsBlur","dmOpts","groupOpts","replyOpts","streamOpts","t0","settingsSections","channels","t1","needToken","t2","Symbol","for","loadError","t3","retry","t4","wx","weixin","tg","telegram","fs","feishu","weixinConfigured","telegramConfigured","feishuConfigured","feishuMoreSettings","acc","aid","t5","weixinMoreSettings","t6","t7","subtitle","t8","t9","t10","docsLink","t11","t12","unsavedHint","t13","saved","t14","t15","t16","t17","t18","next","t19","t20","t21","t22","enabled","weixinTitle","weixinSubtitle","t23","t24","next_0","t25","t26","t27","t28","telegramTitle","telegramSubtitle","t29","t30","next_1","t31","t32","t33","t34","feishuTitle","feishuSubtitle","t35","t36","weixinQrLoginSuccess","window","setTimeout","t37","t38","t39","t40","t41","o","t42","t43","t44","t45"],"sources":["../../../../../web/src/features/settings/channels/channel-im-hub-card.tsx","../../../../../web/src/features/settings/channels/channels-remove-channel-dialog.tsx","../../../../../web/src/features/settings/channel-bindings-merge.ts","../../../../../web/src/features/settings/channels/utils.ts","../../../../../web/src/features/settings/channels/field-primitives.tsx","../../../../../web/src/features/settings/channels/channel-agent-routing-block.tsx","../../../../../web/src/features/settings/channels/feishu-more-settings-section.tsx","../../../../../web/src/features/settings/channels-config-api.ts","../../../../../web/src/features/settings/channels/feishu-qr-setup-dialog.tsx","../../../../../web/src/features/settings/channels/telegram-advanced.tsx","../../../../../web/src/features/settings/channels/telegram-channel-settings-dialog.tsx","../../../../../web/src/features/settings/channels/use-channels-settings-panel.ts","../../../../../web/src/features/settings/channels/weixin-qr-login-dialog.tsx","../../../../../web/src/features/settings/channels/weixin-advanced.tsx","../../../../../web/src/features/settings/channels/weixin-more-settings-section.tsx","../../../../../web/src/features/settings/channels/channels-settings-panel.tsx"],"sourcesContent":["import * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { MoreHorizontal, Pencil, Trash2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_POPOVER_Z } from '@/lib/settings-shell-dialog-layer';\n\nexport type ChannelImHubCardProps = {\n icon: ReactNode;\n title: string;\n subtitle: string;\n configured: boolean;\n enabled: boolean;\n onToggle: (next: boolean) => void | Promise<void>;\n toggleDisabled: boolean;\n onConfigure: () => void;\n onEdit: () => void;\n onRemove: () => void;\n ch: ChannelsSettingsMessages;\n};\n\nexport function ChannelImHubCard({\n icon,\n title,\n subtitle,\n configured,\n enabled,\n onToggle,\n toggleDisabled,\n onConfigure,\n onEdit,\n onRemove,\n ch,\n}: ChannelImHubCardProps) {\n return (\n <div className=\"flex flex-col gap-3 rounded-2xl border border-edge bg-surface-base p-4 dark:border-edge sm:flex-row sm:items-center sm:gap-4\">\n <div className=\"flex min-w-0 flex-1 items-start gap-4\">\n <div className=\"flex size-12 shrink-0 items-center justify-center rounded-xl bg-surface-hover\" aria-hidden>\n {icon}\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h2 className=\"text-sm font-semibold text-fg\">{title}</h2>\n {configured ? (\n <span className=\"inline-flex items-center rounded-full bg-success-soft px-2 py-0.5 text-xs font-medium text-success\">\n {ch.hubConnectedBadge}\n </span>\n ) : null}\n </div>\n <p className=\"mt-1 text-xs text-fg-muted\">{subtitle}</p>\n </div>\n </div>\n\n {!configured ? (\n <div className=\"flex shrink-0 justify-end sm:justify-end\">\n <Button type=\"button\" variant=\"primary\" className=\"shrink-0\" onClick={onConfigure}>\n {ch.hubConfigureButton}\n </Button>\n </div>\n ) : (\n <div className=\"flex shrink-0 flex-wrap items-center justify-end gap-2 sm:gap-3\">\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button type=\"button\" variant=\"ghost\" className=\"size-9 shrink-0 p-0\" aria-label={ch.menuMoreAria}>\n <MoreHorizontal className=\"size-5 text-fg-muted\" strokeWidth={1.75} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className={cn(\n 'min-w-[11rem] rounded-xl border border-edge bg-surface-panel p-1 shadow-popover dark:border-edge',\n SETTINGS_SHELL_POPOVER_Z,\n )}\n sideOffset={6}\n align=\"end\"\n >\n <DropdownMenu.Item\n className=\"cursor-pointer rounded-lg px-3 py-2 text-sm text-fg outline-none hover:bg-surface-hover data-[highlighted]:bg-surface-hover\"\n onSelect={() => onEdit()}\n >\n <span className=\"flex items-center gap-2\">\n <Pencil className=\"size-4 shrink-0 text-fg-muted\" strokeWidth={1.75} />\n {ch.menuEditConfig}\n </span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"cursor-pointer rounded-lg px-3 py-2 text-sm text-danger outline-none hover:bg-surface-hover data-[highlighted]:bg-surface-hover\"\n onSelect={() => onRemove()}\n >\n <span className=\"flex items-center gap-2\">\n <Trash2 className=\"size-4 shrink-0\" strokeWidth={1.75} />\n {ch.menuRemoveConfig}\n </span>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={enabled}\n aria-label={`${title} — ${ch.enableChannelAria}`}\n disabled={toggleDisabled}\n className={cn(\n 'inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-edge p-0.5 transition-colors',\n enabled ? 'justify-end bg-accent' : 'justify-start bg-surface-hover',\n toggleDisabled && 'cursor-not-allowed opacity-50',\n )}\n onClick={() => void onToggle(!enabled)}\n >\n <span className=\"size-4 rounded-full bg-surface-panel shadow-surface ring-1 ring-edge/40 dark:ring-edge/55\" />\n </button>\n </div>\n )}\n </div>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\nexport function ChannelsRemoveChannelDialog({\n open,\n onOpenChange,\n ch,\n removeTarget,\n onCancel,\n saving,\n onConfirmRemove,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n removeTarget: 'weixin' | 'telegram' | 'feishu' | null;\n onCancel: () => void;\n saving: boolean;\n onConfirmRemove: () => void;\n}) {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 w-[min(100%-2rem,28rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Title className=\"text-base font-semibold text-fg\">{ch.removeChannelTitle}</Dialog.Title>\n <Dialog.Description className=\"mt-2 text-sm text-fg-muted\">\n {removeTarget\n ? ch.removeChannelConfirm.replace(\n '{{name}}',\n removeTarget === 'weixin'\n ? ch.weixinTitle\n : removeTarget === 'telegram'\n ? ch.telegramTitle\n : ch.feishuTitle,\n )\n : '\\u00a0'}\n </Dialog.Description>\n <div className=\"mt-6 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"secondary\" onClick={onCancel}>\n {ch.modalCancel}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"border-danger/40 bg-danger text-white hover:bg-danger/90 dark:border-danger/40\"\n disabled={saving}\n onClick={onConfirmRemove}\n >\n {saving ? ch.saving : ch.removeChannelAction}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","/**\n * Merge UI channel account → agent routes into `config.bindings`.\n * Managed rules use ids `ui:route:account:<channel>:<accountId>`.\n */\n\nimport type { BindingRuleWire, ChannelAgentRoutesState } from './types/channel-bindings';\n\nexport type { BindingRuleWire, ChannelAgentRoutesState } from './types/channel-bindings';\n\nfunction normAcc(s: string | undefined): string {\n return (s ?? '').trim().toLowerCase();\n}\n\nexport function isSimpleAccountOnlyRule(r: BindingRuleWire): boolean {\n const m = r.match;\n if (!m?.channel || !m.accountId) return false;\n if (m.peerId || m.peerKind || m.guildId || m.teamId) return false;\n if (m.memberRoleIds && m.memberRoleIds.length > 0) return false;\n return true;\n}\n\n/** Telegram: `accounts` keys (token lives per account, typically `default`). */\nexport function telegramRoutingAccountIds(tg: { accounts?: Record<string, unknown> }): string[] {\n return Object.keys(tg.accounts ?? {}).sort();\n}\n\nexport function weixinRoutingAccountIds(wx: { accounts?: Record<string, unknown> }): string[] {\n return Object.keys(wx.accounts ?? {}).sort();\n}\n\nexport function feishuRoutingAccountIds(fs: { appId?: string; appSecret?: string; accounts?: Record<string, unknown> }): string[] {\n const keys = Object.keys(fs.accounts ?? {});\n if (keys.length > 0) return [...keys].sort();\n if (typeof fs.appId === 'string' && fs.appId.trim() && typeof fs.appSecret === 'string' && fs.appSecret.trim()) {\n return ['default'];\n }\n return [];\n}\n\nexport function extractChannelAgentRoutes(\n bindings: BindingRuleWire[],\n telegramAccountIds: string[],\n weixinAccountIds: string[],\n feishuAccountIds: string[],\n defaultAgentId: string,\n): ChannelAgentRoutesState {\n const telegram: Record<string, string> = {};\n const weixin: Record<string, string> = {};\n const feishu: Record<string, string> = {};\n\n for (const id of telegramAccountIds) {\n const rule = bindings.find(\n (r) =>\n normAcc(r.match?.channel) === 'telegram' &&\n normAcc(r.match?.accountId) === normAcc(id) &&\n isSimpleAccountOnlyRule(r),\n );\n telegram[id] = (rule?.agentId ?? defaultAgentId).trim().toLowerCase();\n }\n for (const id of weixinAccountIds) {\n const rule = bindings.find(\n (r) =>\n normAcc(r.match?.channel) === 'weixin' &&\n normAcc(r.match?.accountId) === normAcc(id) &&\n isSimpleAccountOnlyRule(r),\n );\n weixin[id] = (rule?.agentId ?? defaultAgentId).trim().toLowerCase();\n }\n\n for (const id of feishuAccountIds) {\n const rule = bindings.find(\n (r) =>\n normAcc(r.match?.channel) === 'feishu' &&\n normAcc(r.match?.accountId) === normAcc(id) &&\n isSimpleAccountOnlyRule(r),\n );\n feishu[id] = (rule?.agentId ?? defaultAgentId).trim().toLowerCase();\n }\n\n return { telegram, weixin, feishu };\n}\n\nexport function mergeChannelAgentBindings(\n previous: BindingRuleWire[],\n routes: ChannelAgentRoutesState,\n telegramAccountIds: string[],\n weixinAccountIds: string[],\n feishuAccountIds: string[],\n defaultAgentId: string,\n): BindingRuleWire[] {\n const tgAcc = new Set(telegramAccountIds.map(normAcc));\n const wxAcc = new Set(weixinAccountIds.map(normAcc));\n const fsAcc = new Set(feishuAccountIds.map(normAcc));\n\n const filtered = previous.filter((r) => {\n if (r.id?.startsWith('ui:route:account:')) return false;\n if (!isSimpleAccountOnlyRule(r)) return true;\n const ch = normAcc(r.match.channel);\n const acc = normAcc(r.match.accountId);\n if (!acc || acc === '*') return true;\n if (ch === 'telegram' && tgAcc.has(acc)) return false;\n if (ch === 'weixin' && wxAcc.has(acc)) return false;\n if (ch === 'feishu' && fsAcc.has(acc)) return false;\n return true;\n });\n\n const added: BindingRuleWire[] = [];\n\n for (const acc of telegramAccountIds) {\n const agentId = (routes.telegram[acc] ?? routes.telegram[normAcc(acc)] ?? defaultAgentId).trim().toLowerCase();\n added.push({\n id: `ui:route:account:telegram:${acc}`,\n agentId,\n priority: 45,\n enabled: true,\n match: { channel: 'telegram', accountId: acc },\n });\n }\n\n for (const acc of weixinAccountIds) {\n const agentId = (routes.weixin[acc] ?? routes.weixin[normAcc(acc)] ?? defaultAgentId).trim().toLowerCase();\n added.push({\n id: `ui:route:account:weixin:${acc}`,\n agentId,\n priority: 45,\n enabled: true,\n match: { channel: 'weixin', accountId: acc },\n });\n }\n\n for (const acc of feishuAccountIds) {\n const agentId = (routes.feishu[acc] ?? routes.feishu[normAcc(acc)] ?? defaultAgentId).trim().toLowerCase();\n added.push({\n id: `ui:route:account:feishu:${acc}`,\n agentId,\n priority: 45,\n enabled: true,\n match: { channel: 'feishu', accountId: acc },\n });\n }\n\n return [...filtered, ...added];\n}\n","import type { ChannelsSettingsState } from '@/features/settings/channels-config-api';\nimport { cn } from '@/lib/cn';\nimport { nativeSelectMaxWidthClass, selectControlBaseClass, settingsInputFocusClass } from '@/lib/form-field-width';\n\nexport function channelsInputClassName(): string {\n return cn(\n 'w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg',\n 'placeholder:text-fg-subtle',\n settingsInputFocusClass,\n 'dark:border-edge',\n );\n}\n\nexport function channelsSelectClassName(): string {\n return cn(selectControlBaseClass, nativeSelectMaxWidthClass);\n}\n\nexport function parseIdList(raw: string): (string | number)[] {\n return raw\n .split(/[,\\n]/)\n .map((s) => s.trim())\n .filter(Boolean)\n .map((s) => (/^-?\\d+$/.test(s) ? Number(s) : s));\n}\n\nexport function joinAllowFrom(ids: (string | number)[]): string {\n return ids.map(String).join(', ');\n}\n\nexport function telegramDefaultBotToken(tg: ChannelsSettingsState['telegram']): string {\n const t = tg.accounts?.default?.botToken;\n return typeof t === 'string' ? t : '';\n}\n\nexport function isTelegramConfigured(tg: ChannelsSettingsState['telegram']): boolean {\n return Object.values(tg.accounts ?? {}).some(\n (a) => typeof a.botToken === 'string' && a.botToken.trim().length > 0,\n );\n}\n\nexport function isWeixinConfigured(wx: ChannelsSettingsState['weixin']): boolean {\n return Object.keys(wx.accounts ?? {}).length > 0 || wx.allowFrom.length > 0;\n}\n\nexport function isFeishuConfigured(fs: ChannelsSettingsState['feishu']): boolean {\n return Boolean(fs.appId?.trim() && fs.appSecret?.trim()) || Object.keys(fs.accounts ?? {}).length > 0;\n}\n","import type { ReactNode } from 'react';\n\nimport { channelsSelectClassName } from './utils';\n\nexport function FieldLabel({ children }: { children: ReactNode }) {\n return <div className=\"text-sm font-medium text-fg\">{children}</div>;\n}\n\nexport function FieldHint({ children }: { children: ReactNode }) {\n return <p className=\"text-xs leading-relaxed text-fg-subtle\">{children}</p>;\n}\n\ntype SelectFieldProps<T extends string> = {\n label: string;\n value: T;\n onChange: (v: T) => void;\n options: { value: T; label: string }[];\n};\n\nexport function SelectField<T extends string>({ label, value, onChange, options }: SelectFieldProps<T>) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{label}</FieldLabel>\n <select className={channelsSelectClassName()} value={value} onChange={(e) => onChange(e.target.value as T)}>\n {options.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n","import { agentListDisplayName } from '@/features/settings/agents/agent-display-names';\nimport { nativeSelectMaxWidthClass } from '@/lib/form-field-width';\nimport { cn } from '@/lib/cn';\nimport { messages, type ChannelsSettingsMessages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { FieldHint, FieldLabel } from './field-primitives';\nimport { channelsInputClassName } from './utils';\n\nexport function ChannelAgentRoutingBlock({\n accountIds,\n routes,\n defaultAgentId,\n agentItems,\n disabled,\n onChange,\n ch,\n}: {\n accountIds: string[];\n routes: Record<string, string>;\n defaultAgentId: string;\n agentItems: { id: string; name?: string }[];\n disabled?: boolean;\n onChange: (accountId: string, agentId: string) => void;\n ch: ChannelsSettingsMessages;\n}) {\n const language = useLocaleStore((s) => s.language);\n const agentsMessages = messages(language).agentsSettings;\n if (accountIds.length === 0) return null;\n const opts = agentItems.length > 0 ? agentItems : [{ id: defaultAgentId }];\n return (\n <div className=\"space-y-3 border-t border-edge-subtle pt-4 dark:border-edge\">\n <div>\n <FieldLabel>{ch.agentRoutingTitle}</FieldLabel>\n <FieldHint>{ch.agentRoutingHint}</FieldHint>\n </div>\n <div className=\"space-y-2\">\n {accountIds.map((acc) => (\n <div\n key={acc}\n className=\"grid grid-cols-1 items-start gap-2 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2.5 sm:grid-cols-2 sm:items-center dark:border-edge\"\n >\n <div className=\"min-w-0\">\n <p className=\"text-xs font-medium text-fg-muted\">{ch.agentRoutingAccountLabel}</p>\n <p className=\"mt-0.5 truncate font-mono text-sm text-fg\" title={acc}>\n {acc}\n </p>\n </div>\n <div className=\"min-w-0\">\n <label className=\"sr-only\" htmlFor={`agent-route-${acc}`}>\n {ch.agentRoutingAgentLabel}\n </label>\n <select\n id={`agent-route-${acc}`}\n className={cn(channelsInputClassName(), nativeSelectMaxWidthClass)}\n disabled={disabled}\n value={(routes[acc] ?? defaultAgentId).toLowerCase()}\n onChange={(e) => onChange(acc, e.target.value)}\n >\n {opts.map((ag) => (\n <option key={ag.id} value={ag.id}>\n {`${agentListDisplayName(ag, agentsMessages)} (${ag.id})`}\n </option>\n ))}\n </select>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { Check, ChevronDown, Copy, Eye, EyeOff } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentsPayload } from '@/features/chat/chat-agents-api';\nimport { feishuRoutingAccountIds } from '@/features/settings/channel-bindings-merge';\nimport type { ChannelsSettingsState, DmPolicy, GroupPolicy } from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\n\nimport { ChannelAgentRoutingBlock } from './channel-agent-routing-block';\nimport { FieldHint, FieldLabel } from './field-primitives';\nimport { channelsInputClassName, joinAllowFrom, parseIdList } from './utils';\n\nexport function FeishuMoreSettingsSection({\n ch,\n form,\n baseline,\n showFeishuSecret,\n setShowFeishuSecret,\n showFeishuWebhookSecrets,\n setShowFeishuWebhookSecrets,\n feishuCopied,\n feishuWebhookCopied,\n copyFeishuSecret,\n copyFeishuWebhookConfig,\n updateFeishu,\n updateChannelAgentRoute,\n feishuAccountsDraft,\n setFeishuAccountsDraft,\n feishuAccountsError,\n onFeishuAccountsBlur,\n dmOpts,\n groupOpts,\n chatAgents,\n saving,\n dirty,\n save,\n discard,\n}: {\n ch: ChannelsSettingsMessages;\n form: ChannelsSettingsState;\n baseline: ChannelsSettingsState | null;\n showFeishuSecret: boolean;\n setShowFeishuSecret: (v: boolean | ((b: boolean) => boolean)) => void;\n showFeishuWebhookSecrets: boolean;\n setShowFeishuWebhookSecrets: (v: boolean | ((b: boolean) => boolean)) => void;\n feishuCopied: boolean;\n feishuWebhookCopied: boolean;\n copyFeishuSecret: () => Promise<void>;\n copyFeishuWebhookConfig: () => Promise<void>;\n updateFeishu: (patch: Partial<ChannelsSettingsState['feishu']>) => void;\n updateChannelAgentRoute: (\n channel: 'telegram' | 'weixin' | 'feishu',\n accountId: string,\n agentId: string,\n ) => void;\n feishuAccountsDraft: string;\n setFeishuAccountsDraft: (v: string) => void;\n feishuAccountsError: string;\n onFeishuAccountsBlur: () => void;\n dmOpts: { value: DmPolicy; label: string }[];\n groupOpts: { value: GroupPolicy; label: string }[];\n chatAgents: ChatAgentsPayload | undefined;\n saving: boolean;\n dirty: boolean;\n save: () => Promise<boolean>;\n discard: () => void;\n}) {\n const inputClassName = channelsInputClassName;\n const fs = form.feishu;\n const feishuBaselineSecret = baseline?.feishu?.appSecret ?? '';\n const feishuSecretDisplayLocked =\n !showFeishuSecret &&\n Boolean(String(feishuBaselineSecret).trim()) &&\n fs.appSecret === feishuBaselineSecret;\n\n return (\n <details className=\"group rounded-xl border border-edge-subtle bg-surface-base open:pb-3 dark:border-edge\">\n <summary className=\"cursor-pointer list-none rounded-xl px-3 py-2.5 text-sm font-medium text-fg transition-colors hover:bg-surface-hover group-open:rounded-b-none [&::-webkit-details-marker]:hidden\">\n <span className=\"inline-flex items-center gap-2\">\n <ChevronDown className=\"size-4 shrink-0 text-fg-muted transition-transform group-open:rotate-180\" />\n {ch.advancedShow}\n </span>\n </summary>\n <div className=\"space-y-4 border-t border-edge-subtle px-3 pb-3 pt-3 dark:border-edge-subtle\">\n <p className=\"text-xs leading-relaxed text-fg-muted\">{ch.feishuAdvancedHint}</p>\n <label className=\"flex cursor-pointer items-start gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox mt-0.5\"\n checked={fs.enabled}\n onChange={(e) => updateFeishu({ enabled: e.target.checked })}\n />\n <span>{ch.enableFeishuAria}</span>\n </label>\n\n <div className=\"space-y-4\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>\n {ch.feishuAppId}\n <span className=\"text-red-600 dark:text-red-400\"> *</span>\n </FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n value={fs.appId}\n onChange={(e) => updateFeishu({ appId: e.target.value })}\n placeholder=\"cli_xxx\"\n />\n <FieldHint>{ch.feishuAppIdDesc}</FieldHint>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>\n {ch.feishuAppSecret}\n <span className=\"text-red-600 dark:text-red-400\"> *</span>\n </FieldLabel>\n <div className=\"flex flex-wrap gap-2\">\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showFeishuSecret ? 'text' : 'password'}\n autoComplete=\"off\"\n readOnly={feishuSecretDisplayLocked}\n value={\n feishuSecretDisplayLocked\n ? '*'.repeat(Math.max(1, fs.appSecret.length))\n : fs.appSecret\n }\n onChange={(e) => {\n if (feishuSecretDisplayLocked) return;\n updateFeishu({ appSecret: e.target.value });\n }}\n placeholder=\"••••••••\"\n />\n {fs.appSecret ? (\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => void copyFeishuSecret()}\n >\n {feishuCopied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {feishuCopied ? ch.copied : ch.copy}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => setShowFeishuSecret((s) => !s)}\n >\n {showFeishuSecret ? <EyeOff className=\"size-3.5\" /> : <Eye className=\"size-3.5\" />}\n {showFeishuSecret ? ch.hide : ch.show}\n </Button>\n </div>\n <FieldHint>{ch.feishuAppSecretDesc}</FieldHint>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.feishuDomain}</FieldLabel>\n <select\n className={inputClassName()}\n value={String(fs.domain || 'feishu')}\n onChange={(e) => updateFeishu({ domain: e.target.value })}\n >\n <option value=\"feishu\">feishu</option>\n <option value=\"lark\">lark</option>\n </select>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.connectionMode}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.connectionMode}\n onChange={(e) =>\n updateFeishu({ connectionMode: e.target.value as ChannelsSettingsState['feishu']['connectionMode'] })\n }\n >\n <option value=\"websocket\">websocket</option>\n <option value=\"webhook\">webhook</option>\n </select>\n <FieldHint>{ch.connectionModeDesc}</FieldHint>\n </div>\n </div>\n\n {fs.connectionMode === 'webhook' ? (\n <div className=\"rounded-xl border border-edge-subtle bg-surface px-4 py-3 dark:border-edge-subtle\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"text-sm font-medium text-fg\">{ch.webhookTitle}</div>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => setShowFeishuWebhookSecrets((s) => !s)}\n >\n {showFeishuWebhookSecrets ? <EyeOff className=\"size-3.5\" /> : <Eye className=\"size-3.5\" />}\n {showFeishuWebhookSecrets ? ch.hide : ch.show}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => void copyFeishuWebhookConfig()}\n >\n {feishuWebhookCopied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {feishuWebhookCopied ? ch.copied : ch.copy}\n </Button>\n </div>\n </div>\n\n <div className=\"mt-3 grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.verificationToken}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showFeishuWebhookSecrets ? 'text' : 'password'}\n autoComplete=\"off\"\n value={fs.verificationToken ?? ''}\n onChange={(e) => updateFeishu({ verificationToken: e.target.value })}\n />\n <FieldHint>{ch.verificationTokenDesc}</FieldHint>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.encryptKey}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showFeishuWebhookSecrets ? 'text' : 'password'}\n autoComplete=\"off\"\n value={fs.encryptKey ?? ''}\n onChange={(e) => updateFeishu({ encryptKey: e.target.value })}\n />\n <FieldHint>{ch.encryptKeyDesc}</FieldHint>\n </div>\n </div>\n\n <div className=\"mt-3 grid gap-3 sm:grid-cols-3\">\n <div className=\"flex flex-col gap-1.5 sm:col-span-2\">\n <FieldLabel>{ch.webhookHost}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n value={fs.webhookHost ?? ''}\n onChange={(e) => updateFeishu({ webhookHost: e.target.value })}\n placeholder=\"127.0.0.1\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.webhookPort}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type=\"number\"\n inputMode=\"numeric\"\n value={String(fs.webhookPort ?? '')}\n onChange={(e) =>\n updateFeishu({ webhookPort: Number(e.target.value || '0') || 0 })\n }\n placeholder=\"3000\"\n />\n </div>\n </div>\n\n <div className=\"mt-3 flex flex-col gap-1.5\">\n <FieldLabel>{ch.webhookPath}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n value={fs.webhookPath ?? ''}\n onChange={(e) => updateFeishu({ webhookPath: e.target.value })}\n placeholder=\"/feishu/events\"\n />\n <FieldHint>{ch.webhookPathDesc}</FieldHint>\n </div>\n </div>\n ) : null}\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.renderMode}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.renderMode}\n onChange={(e) =>\n updateFeishu({ renderMode: e.target.value as ChannelsSettingsState['feishu']['renderMode'] })\n }\n >\n <option value=\"auto\">auto</option>\n <option value=\"raw\">raw</option>\n <option value=\"card\">card</option>\n </select>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.reactionNotifications}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.reactionNotifications}\n onChange={(e) =>\n updateFeishu({\n reactionNotifications: e.target\n .value as ChannelsSettingsState['feishu']['reactionNotifications'],\n })\n }\n >\n <option value=\"off\">off</option>\n <option value=\"own\">own</option>\n <option value=\"all\">all</option>\n </select>\n </div>\n </div>\n\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={fs.streaming}\n onChange={(e) => updateFeishu({ streaming: e.target.checked })}\n />\n {ch.enableStreaming}\n </label>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.dmPolicy}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.dmPolicy}\n onChange={(e) =>\n updateFeishu({ dmPolicy: e.target.value as ChannelsSettingsState['feishu']['dmPolicy'] })\n }\n >\n {dmOpts.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.groupPolicy}</FieldLabel>\n <select\n className={inputClassName()}\n value={fs.groupPolicy}\n onChange={(e) =>\n updateFeishu({ groupPolicy: e.target.value as ChannelsSettingsState['feishu']['groupPolicy'] })\n }\n >\n {groupOpts.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={fs.requireMention}\n onChange={(e) => updateFeishu({ requireMention: e.target.checked })}\n />\n {ch.requireMention}\n </label>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromDm}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"ou_xxx, on_xxx\"\n value={joinAllowFrom(fs.allowFrom)}\n onChange={(e) => updateFeishu({ allowFrom: parseIdList(e.target.value) })}\n />\n <FieldHint>{ch.allowFromDmDesc}</FieldHint>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromGroups}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"oc_xxx, oc_yyy\"\n value={joinAllowFrom(fs.groupAllowFrom)}\n onChange={(e) => updateFeishu({ groupAllowFrom: parseIdList(e.target.value) })}\n />\n <FieldHint>{ch.allowFromGroupsDesc}</FieldHint>\n </div>\n\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.historyLimit}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type=\"number\"\n inputMode=\"numeric\"\n value={String(fs.historyLimit)}\n onChange={(e) => updateFeishu({ historyLimit: Number(e.target.value || '0') || 0 })}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.textChunkLimit}</FieldLabel>\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type=\"number\"\n inputMode=\"numeric\"\n value={String(fs.textChunkLimit)}\n onChange={(e) => updateFeishu({ textChunkLimit: Number(e.target.value || '0') || 0 })}\n />\n </div>\n </div>\n\n <div className=\"rounded-xl border border-edge-subtle bg-surface px-4 py-3 dark:border-edge-subtle\">\n <div className=\"text-sm font-medium text-fg\">{ch.feishuToolsTitle}</div>\n <div className=\"mt-2 grid gap-2 sm:grid-cols-2\">\n {(\n [\n ['doc', ch.feishuToolDoc],\n ['wiki', ch.feishuToolWiki],\n ['drive', ch.feishuToolDrive],\n ['perm', ch.feishuToolPerm],\n ['bitable', ch.feishuToolBitable],\n ['scopes', ch.feishuToolScopes],\n ] as const\n ).map(([key, label]) => (\n <label key={key} className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={Boolean(fs.tools?.[key])}\n onChange={(e) =>\n updateFeishu({\n tools: { ...fs.tools, [key]: e.target.checked },\n })\n }\n />\n {label}\n </label>\n ))}\n </div>\n <div className=\"mt-2\">\n <FieldHint>{ch.feishuToolsDesc}</FieldHint>\n </div>\n </div>\n\n <div className=\"rounded-xl border border-edge-subtle bg-surface px-4 py-3 dark:border-edge-subtle\">\n <div className=\"text-sm font-medium text-fg\">{ch.feishuActionsTitle}</div>\n <label className=\"mt-2 flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={Boolean(fs.actions?.reactions)}\n onChange={(e) =>\n updateFeishu({\n actions: { ...fs.actions, reactions: e.target.checked },\n })\n }\n />\n {ch.feishuActionReactions}\n </label>\n </div>\n\n <ChannelAgentRoutingBlock\n accountIds={feishuRoutingAccountIds(fs)}\n routes={form.channelAgentRoutes.feishu}\n defaultAgentId={form.defaultAgentId}\n agentItems={chatAgents?.items ?? []}\n disabled={saving}\n onChange={(acc, aid) => updateChannelAgentRoute('feishu', acc, aid)}\n ch={ch}\n />\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.multiAccountJson}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n spellCheck={false}\n value={feishuAccountsDraft}\n onChange={(e) => setFeishuAccountsDraft(e.target.value)}\n onBlur={onFeishuAccountsBlur}\n placeholder='{ \"default\": { \"appId\": \"...\", \"appSecret\": \"...\", \"enabled\": true } }'\n />\n {feishuAccountsError ? (\n <p className=\"text-xs text-red-600 dark:text-red-400\">{feishuAccountsError}</p>\n ) : (\n <FieldHint>{ch.multiAccountJsonDesc}</FieldHint>\n )}\n </div>\n </div>\n\n <div className=\"flex flex-col gap-2 sm:flex-row sm:justify-end\">\n <Button type=\"button\" variant=\"secondary\" className=\"w-full sm:w-auto\" disabled={!dirty || saving} onClick={discard}>\n {ch.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"w-full sm:w-auto\"\n disabled={!dirty || saving}\n onClick={async () => {\n await save();\n }}\n >\n {saving ? ch.saving : ch.save}\n </Button>\n </div>\n </div>\n </details>\n );\n}\n","import { revalidateGatewayConfig } from '@/features/gateway/gateway-config-swr';\nimport { fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\n\nimport {\n extractChannelAgentRoutes,\n mergeChannelAgentBindings,\n feishuRoutingAccountIds,\n telegramRoutingAccountIds,\n weixinRoutingAccountIds,\n type BindingRuleWire,\n} from './channel-bindings-merge';\nimport type {\n ChannelsSettingsState,\n DmPolicy,\n GroupPolicy,\n ReplyToMode,\n StreamMode,\n TelegramAccount,\n WeixinAccount,\n} from './channels-settings.types';\n\nexport type {\n ChannelsSettingsState,\n TelegramConfig,\n WeixinConfig,\n} from './channels-settings.types';\n\nexport type { DmPolicy, GroupPolicy, ReplyToMode, StreamMode };\n\nexport function emptyTelegramAccount(accountId: string): TelegramAccount {\n return {\n accountId,\n name: '',\n enabled: true,\n botToken: '',\n allowFrom: [],\n dmPolicy: 'pairing',\n groupPolicy: 'open',\n replyToMode: 'off',\n apiRoot: '',\n proxy: '',\n historyLimit: 50,\n textChunkLimit: 4000,\n streamMode: 'partial',\n };\n}\n\nexport function defaultChannelsState(): ChannelsSettingsState {\n return {\n bindingsFull: [],\n channelAgentRoutes: { telegram: {}, weixin: {}, feishu: {} },\n defaultAgentId: 'main',\n telegram: {\n enabled: false,\n apiRoot: '',\n debug: false,\n allowFrom: [],\n groupAllowFrom: [],\n dmPolicy: 'pairing',\n groupPolicy: 'open',\n replyToMode: 'off',\n streamMode: 'partial',\n historyLimit: 50,\n textChunkLimit: 4000,\n proxy: '',\n accounts: { default: emptyTelegramAccount('default') },\n },\n weixin: {\n enabled: false,\n dmPolicy: 'open',\n allowFrom: [],\n debug: false,\n streamMode: 'partial',\n historyLimit: 50,\n textChunkLimit: 4000,\n routeTag: '',\n accounts: {},\n },\n feishu: {\n enabled: false,\n defaultAccount: '',\n appId: '',\n appSecret: '',\n domain: 'feishu',\n connectionMode: 'websocket',\n verificationToken: '',\n encryptKey: '',\n webhookHost: '127.0.0.1',\n webhookPort: 3000,\n webhookPath: '/feishu/events',\n dmPolicy: 'open',\n groupPolicy: 'allowlist',\n allowFrom: [],\n groupAllowFrom: [],\n requireMention: true,\n historyLimit: 50,\n textChunkLimit: 4000,\n renderMode: 'auto',\n streaming: false,\n reactionNotifications: 'own',\n tools: { doc: true, wiki: true, drive: true, scopes: true, bitable: true, perm: false },\n actions: { reactions: true },\n accounts: {},\n },\n };\n}\n\nexport function normalizeChannelsFromConfig(config: unknown): ChannelsSettingsState {\n const cfg = config && typeof config === 'object' ? (config as { channels?: unknown }).channels : undefined;\n const ch = cfg && typeof cfg === 'object' ? (cfg as Record<string, unknown>) : {};\n const tg = ch.telegram as Record<string, unknown> | undefined;\n const wx = ch.weixin as Record<string, unknown> | undefined;\n const fs = ch.feishu as Record<string, unknown> | undefined;\n\n const telegramAccounts = tg?.accounts;\n let accounts: Record<string, TelegramAccount> =\n telegramAccounts && typeof telegramAccounts === 'object' && !Array.isArray(telegramAccounts)\n ? { ...(telegramAccounts as Record<string, TelegramAccount>) }\n : {};\n\n const legacyTopToken = typeof tg?.botToken === 'string' ? tg.botToken.trim() : '';\n const defaultTok = accounts.default?.botToken?.trim() ?? '';\n if (legacyTopToken && !defaultTok) {\n accounts = {\n ...accounts,\n default: {\n ...(accounts.default ?? emptyTelegramAccount('default')),\n accountId: 'default',\n botToken: legacyTopToken,\n },\n };\n }\n if (!accounts.default) {\n accounts = { ...accounts, default: emptyTelegramAccount('default') };\n }\n\n const weixinAccounts = wx?.accounts;\n const wxAcc: Record<string, WeixinAccount> =\n weixinAccounts && typeof weixinAccounts === 'object' && !Array.isArray(weixinAccounts)\n ? (weixinAccounts as Record<string, WeixinAccount>)\n : {};\n\n const bindingsRaw = (() => {\n const cfgObj = config && typeof config === 'object' ? (config as Record<string, unknown>) : {};\n const b = cfgObj.bindings;\n return Array.isArray(b) ? (b as BindingRuleWire[]) : [];\n })();\n\n const agents = (() => {\n const cfgObj = config && typeof config === 'object' ? (config as Record<string, unknown>) : {};\n const a = cfgObj.agents;\n return a && typeof a === 'object' ? (a as Record<string, unknown>) : {};\n })();\n const defaultAgentId =\n typeof agents.defaultId === 'string' && agents.defaultId.trim()\n ? agents.defaultId.trim().toLowerCase()\n : 'main';\n\n const base = {\n telegram: {\n enabled: Boolean(tg?.enabled),\n apiRoot: typeof tg?.apiRoot === 'string' ? tg.apiRoot : '',\n debug: Boolean(tg?.debug),\n allowFrom: Array.isArray(tg?.allowFrom) ? [...(tg.allowFrom as (string | number)[])] : [],\n groupAllowFrom: Array.isArray(tg?.groupAllowFrom) ? [...(tg.groupAllowFrom as (string | number)[])] : [],\n dmPolicy: (tg?.dmPolicy as DmPolicy) || 'pairing',\n groupPolicy: (tg?.groupPolicy as GroupPolicy) || 'open',\n replyToMode: (tg?.replyToMode as ReplyToMode) || 'off',\n streamMode: (tg?.streamMode as StreamMode) ?? 'partial',\n historyLimit: typeof tg?.historyLimit === 'number' ? tg.historyLimit : 50,\n textChunkLimit: typeof tg?.textChunkLimit === 'number' ? tg.textChunkLimit : 4000,\n proxy: typeof tg?.proxy === 'string' ? tg.proxy : '',\n accounts: { ...accounts },\n },\n weixin: {\n enabled: Boolean(wx?.enabled),\n dmPolicy: (wx?.dmPolicy as DmPolicy) || 'open',\n allowFrom: Array.isArray(wx?.allowFrom) ? [...(wx.allowFrom as string[])] : [],\n debug: Boolean(wx?.debug),\n streamMode: (wx?.streamMode as StreamMode) ?? 'partial',\n historyLimit: typeof wx?.historyLimit === 'number' ? wx.historyLimit : 50,\n textChunkLimit: typeof wx?.textChunkLimit === 'number' ? wx.textChunkLimit : 4000,\n routeTag: wx?.routeTag != null ? String(wx.routeTag) : '',\n accounts: { ...wxAcc },\n },\n feishu: {\n enabled: Boolean(fs?.enabled),\n defaultAccount: typeof fs?.defaultAccount === 'string' ? fs.defaultAccount : '',\n appId: typeof fs?.appId === 'string' ? fs.appId : '',\n appSecret: typeof fs?.appSecret === 'string' ? fs.appSecret : '',\n domain: (typeof fs?.domain === 'string' && fs.domain) || 'feishu',\n connectionMode: (fs?.connectionMode as any) || 'websocket',\n verificationToken: typeof fs?.verificationToken === 'string' ? fs.verificationToken : '',\n encryptKey: typeof fs?.encryptKey === 'string' ? fs.encryptKey : '',\n webhookHost: typeof fs?.webhookHost === 'string' ? fs.webhookHost : '127.0.0.1',\n webhookPort: typeof fs?.webhookPort === 'number' ? fs.webhookPort : 3000,\n webhookPath: typeof fs?.webhookPath === 'string' ? fs.webhookPath : '/feishu/events',\n dmPolicy: (fs?.dmPolicy as DmPolicy) || 'open',\n groupPolicy: (fs?.groupPolicy as GroupPolicy) || 'allowlist',\n allowFrom: Array.isArray(fs?.allowFrom) ? [...(fs.allowFrom as (string | number)[])] : [],\n groupAllowFrom: Array.isArray(fs?.groupAllowFrom) ? [...(fs.groupAllowFrom as (string | number)[])] : [],\n requireMention: fs?.requireMention === undefined ? true : Boolean(fs.requireMention),\n historyLimit: typeof fs?.historyLimit === 'number' ? fs.historyLimit : 50,\n textChunkLimit: typeof fs?.textChunkLimit === 'number' ? fs.textChunkLimit : 4000,\n renderMode: (fs?.renderMode as any) || 'auto',\n streaming: fs?.streaming === undefined ? false : Boolean(fs.streaming),\n reactionNotifications: (fs?.reactionNotifications as any) || 'own',\n tools:\n fs?.tools && typeof fs.tools === 'object' && !Array.isArray(fs.tools)\n ? ({ ...(fs.tools as Record<string, boolean>) } as any)\n : undefined,\n actions:\n fs?.actions && typeof fs.actions === 'object' && !Array.isArray(fs.actions)\n ? ({ ...(fs.actions as Record<string, boolean>) } as any)\n : undefined,\n accounts:\n fs?.accounts && typeof fs.accounts === 'object' && !Array.isArray(fs.accounts)\n ? ({ ...(fs.accounts as Record<string, any>) } as any)\n : {},\n },\n };\n\n const tgIds = telegramRoutingAccountIds(base.telegram);\n const wxIds = weixinRoutingAccountIds(base.weixin);\n const fsIds = feishuRoutingAccountIds(base.feishu);\n const channelAgentRoutes = extractChannelAgentRoutes(bindingsRaw, tgIds, wxIds, fsIds, defaultAgentId);\n\n return {\n ...base,\n bindingsFull: bindingsRaw.map((r) => ({ ...r })),\n channelAgentRoutes,\n defaultAgentId,\n };\n}\n\nexport async function fetchChannelsSettings(): Promise<ChannelsSettingsState> {\n const res = await fetchJson<{ ok?: boolean; payload?: { config?: unknown } }>(apiUrl('/api/config'));\n const c = res.payload?.config;\n return normalizeChannelsFromConfig(c ?? {});\n}\n\nexport type WeixinGatewayQrLoginStatusPayload =\n | { phase: 'polling'; qrcodeUrl: string; qrStatus?: string }\n | { phase: 'done'; ok: true; accountId: string }\n | { phase: 'done'; ok: false; message: string }\n | { phase: 'unknown'; message: string };\n\nexport async function fetchWeixinGatewayQrLoginStart(body?: {\n account?: string;\n timeoutMs?: number;\n}): Promise<{ sessionKey: string; qrcodeUrl: string }> {\n const res = await fetchJson<{ ok: boolean; payload: { sessionKey: string; qrcodeUrl: string } }>(\n apiUrl('/api/channels/weixin/login/start'),\n { method: 'POST', body: JSON.stringify(body ?? {}) },\n );\n return res.payload;\n}\n\nexport async function fetchWeixinGatewayQrLoginStatus(\n sessionKey: string,\n): Promise<WeixinGatewayQrLoginStatusPayload> {\n const res = await fetchJson<{ ok: boolean; payload: { status: WeixinGatewayQrLoginStatusPayload } }>(\n apiUrl(`/api/channels/weixin/login/${encodeURIComponent(sessionKey)}`),\n );\n return res.payload.status;\n}\n\nexport async function patchChannelsSettings(state: ChannelsSettingsState): Promise<ChannelsSettingsState> {\n const tg = state.telegram;\n const wx = state.weixin;\n const fs = state.feishu;\n const mergedBindings = mergeChannelAgentBindings(\n state.bindingsFull,\n state.channelAgentRoutes,\n telegramRoutingAccountIds(tg),\n weixinRoutingAccountIds(wx),\n feishuRoutingAccountIds(fs),\n state.defaultAgentId,\n );\n const weixinRouteTag: string | number | null = (() => {\n const raw = wx.routeTag.trim();\n if (!raw) return null;\n return /^\\d+$/.test(raw) ? Number(raw) : raw;\n })();\n\n const res = await fetchJson<{ ok?: boolean; payload?: { config?: unknown } }>(apiUrl('/api/config'), {\n method: 'PATCH',\n body: JSON.stringify({\n bindings: mergedBindings,\n channels: {\n telegram: {\n enabled: tg.enabled,\n apiRoot: tg.apiRoot || undefined,\n debug: tg.debug,\n allowFrom: tg.allowFrom,\n groupAllowFrom: tg.groupAllowFrom.length ? tg.groupAllowFrom : undefined,\n dmPolicy: tg.dmPolicy,\n groupPolicy: tg.groupPolicy,\n replyToMode: tg.replyToMode,\n streamMode: tg.streamMode,\n historyLimit: tg.historyLimit,\n textChunkLimit: tg.textChunkLimit,\n proxy: tg.proxy || undefined,\n // Always send `accounts` (including `{}`) so PATCH clears stale entries instead of omitting the field.\n accounts: tg.accounts,\n },\n weixin: {\n enabled: wx.enabled,\n dmPolicy: wx.dmPolicy,\n allowFrom: wx.allowFrom,\n debug: wx.debug,\n streamMode: wx.streamMode,\n historyLimit: wx.historyLimit,\n textChunkLimit: wx.textChunkLimit,\n routeTag: weixinRouteTag,\n accounts: wx.accounts,\n },\n feishu: {\n enabled: fs.enabled,\n defaultAccount: fs.defaultAccount || undefined,\n appId: fs.appId,\n appSecret: fs.appSecret || undefined,\n domain: fs.domain || undefined,\n connectionMode: fs.connectionMode,\n verificationToken: (fs as any).verificationToken?.trim() ? (fs as any).verificationToken : undefined,\n encryptKey: (fs as any).encryptKey?.trim() ? (fs as any).encryptKey : undefined,\n webhookHost: (fs as any).webhookHost?.trim() ? (fs as any).webhookHost : undefined,\n webhookPort: typeof (fs as any).webhookPort === 'number' ? (fs as any).webhookPort : undefined,\n webhookPath: (fs as any).webhookPath?.trim() ? (fs as any).webhookPath : undefined,\n dmPolicy: fs.dmPolicy,\n groupPolicy: fs.groupPolicy,\n allowFrom: fs.allowFrom,\n groupAllowFrom: fs.groupAllowFrom.length ? fs.groupAllowFrom : undefined,\n requireMention: fs.requireMention,\n historyLimit: fs.historyLimit,\n textChunkLimit: fs.textChunkLimit,\n renderMode: fs.renderMode,\n streaming: fs.streaming,\n reactionNotifications: fs.reactionNotifications,\n tools: (fs as any).tools,\n actions: (fs as any).actions,\n accounts: fs.accounts,\n },\n },\n }),\n });\n const c = res.payload?.config;\n void revalidateGatewayConfig();\n if (c) return normalizeChannelsFromConfig(c);\n return {\n ...state,\n bindingsFull: mergedBindings,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Feishu QR scan-to-create\n// ---------------------------------------------------------------------------\n\nexport type FeishuSetupStatusPayload =\n | { phase: 'polling' }\n | { phase: 'done'; ok: true; appId: string; domain: string; openId?: string }\n | { phase: 'done'; ok: false; message: string }\n | { phase: 'unknown'; message: string };\n\nexport async function fetchFeishuSetupStart(body?: {\n domain?: 'feishu' | 'lark';\n}): Promise<{ sessionKey: string; qrUrl: string }> {\n const res = await fetchJson<{\n ok: boolean;\n payload: { sessionKey: string; qrUrl: string };\n }>(apiUrl('/api/channels/feishu/setup/start'), {\n method: 'POST',\n body: JSON.stringify(body ?? {}),\n });\n return res.payload;\n}\n\nexport async function fetchFeishuSetupStatus(sessionKey: string): Promise<FeishuSetupStatusPayload> {\n const res = await fetchJson<{\n ok: boolean;\n payload: { status: FeishuSetupStatusPayload };\n }>(apiUrl(`/api/channels/feishu/setup/${encodeURIComponent(sessionKey)}`));\n return res.payload.status;\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { ExternalLink, X } from 'lucide-react';\nimport QRCode from 'qrcode';\nimport { useCallback, useEffect, useState, type ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n fetchFeishuSetupStart,\n fetchFeishuSetupStatus,\n} from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\ntype FeishuDomain = 'feishu' | 'lark';\n\nexport function FeishuQrSetupDialog({\n open,\n onOpenChange,\n ch,\n onSetupSuccess,\n moreSettings,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n onSetupSuccess: (result: { appId: string; domain: string; openId?: string }) => void;\n moreSettings?: ReactNode;\n}) {\n const [busy, setBusy] = useState(false);\n const [domain, setDomain] = useState<FeishuDomain>('feishu');\n const [sessionKey, setSessionKey] = useState<string | null>(null);\n const [qrUrl, setQrUrl] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [qrDataUrl, setQrDataUrl] = useState<string | null>(null);\n const [qrGenFailed, setQrGenFailed] = useState(false);\n\n const startScan = useCallback(async (d: FeishuDomain) => {\n setDomain(d);\n setError(null);\n setSessionKey(null);\n setQrUrl(null);\n setBusy(true);\n try {\n const result = await fetchFeishuSetupStart({ domain: d });\n setQrUrl(result.qrUrl);\n setSessionKey(result.sessionKey);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'Start failed');\n } finally {\n setBusy(false);\n }\n }, []);\n\n useEffect(() => {\n if (!open) {\n setSessionKey(null);\n setQrUrl(null);\n setError(null);\n setQrDataUrl(null);\n setQrGenFailed(false);\n setDomain('feishu');\n setBusy(false);\n return;\n }\n void startScan('feishu');\n }, [open, startScan]);\n\n useEffect(() => {\n if (!sessionKey) return;\n let cancelled = false;\n let intervalId: number | undefined;\n\n const poll = async () => {\n try {\n const status = await fetchFeishuSetupStatus(sessionKey);\n if (cancelled) return;\n\n if (status.phase === 'polling') return;\n\n if (status.phase === 'done') {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n intervalId = undefined;\n }\n setSessionKey(null);\n if (status.ok) {\n setQrUrl(null);\n onOpenChange(false);\n onSetupSuccess({\n appId: status.appId,\n domain: status.domain,\n openId: status.openId,\n });\n } else {\n setError(status.message);\n setQrUrl(null);\n }\n return;\n }\n\n if (status.phase === 'unknown') {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n setError(status.message);\n setSessionKey(null);\n setQrUrl(null);\n }\n } catch (e) {\n if (!cancelled) {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n setError(e instanceof Error ? e.message : 'Request failed');\n setSessionKey(null);\n setQrUrl(null);\n }\n }\n };\n\n intervalId = window.setInterval(() => void poll(), 3000);\n void poll();\n return () => {\n cancelled = true;\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n };\n }, [sessionKey, onOpenChange, onSetupSuccess]);\n\n useEffect(() => {\n if (!qrUrl) {\n setQrDataUrl(null);\n setQrGenFailed(false);\n return;\n }\n let cancelled = false;\n setQrGenFailed(false);\n void QRCode.toDataURL(qrUrl, {\n width: 208,\n margin: 2,\n errorCorrectionLevel: 'M',\n color: { dark: '#000000ff', light: '#ffffffff' },\n })\n .then((url) => {\n if (!cancelled) setQrDataUrl(url);\n })\n .catch(() => {\n if (!cancelled) {\n setQrGenFailed(true);\n setQrDataUrl(null);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [qrUrl]);\n\n const showQr = Boolean(qrUrl && sessionKey);\n /** Keep pill visible for the whole open session so region toggles do not collapse the modal. */\n const showRegionSwitch = open;\n /** True until the first QR session is ready (covers first paint before useEffect + region switches). */\n const qrFrameLoading = open && !error && !showQr;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 max-h-[min(90vh,52rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 z-20 rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n aria-label={ch.feishuQrCloseAria}\n >\n <X className=\"size-4\" />\n </button>\n </Dialog.Close>\n\n <Dialog.Title className=\"sr-only\">{ch.feishuQrModalTitle}</Dialog.Title>\n <Dialog.Description className=\"sr-only\">{ch.feishuQrModalSubtitle}</Dialog.Description>\n\n <div className=\"text-center\">\n <p className=\"text-lg font-semibold tracking-tight text-fg\">{ch.feishuQrModalTitle}</p>\n <p className=\"mt-1.5 text-sm text-fg-muted\">{ch.feishuQrModalSubtitle}</p>\n </div>\n\n <div className=\"mt-6 flex min-h-[17.5rem] flex-col items-center justify-center gap-3\">\n {error ? (\n <p className=\"text-center text-sm text-red-600 dark:text-red-400\">{error}</p>\n ) : null}\n\n {!error && (showQr || qrFrameLoading) ? (\n <div className=\"flex w-full flex-col items-center gap-3\">\n <p className=\"text-sm text-fg-muted\">\n {qrFrameLoading ? ch.feishuQrStarting : ch.feishuQrScanHint}\n </p>\n <div\n className={cn(\n 'relative flex size-52 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-edge-subtle bg-white p-3 dark:border-edge',\n qrFrameLoading && 'bg-surface-muted/40 dark:bg-surface-base',\n )}\n >\n {qrFrameLoading ? (\n <div\n className=\"absolute inset-3 animate-pulse rounded-md bg-surface-muted dark:bg-surface-hover\"\n aria-hidden\n />\n ) : null}\n {showQr && qrUrl && !error && qrDataUrl && !qrGenFailed ? (\n <img src={qrDataUrl} alt=\"\" className=\"relative z-[1] size-full object-contain\" />\n ) : null}\n {showQr && qrUrl && !error && !qrDataUrl && !qrGenFailed && !qrFrameLoading ? (\n <p className=\"relative z-[1] px-2 text-center text-sm text-fg-muted\">{ch.feishuQrEncoding}</p>\n ) : null}\n {showQr && qrUrl && !error && qrGenFailed ? (\n <div className=\"relative z-[1] flex size-full flex-col items-center justify-center gap-2 px-1\">\n <p className=\"text-center text-xs text-fg-muted\">{ch.feishuQrImageError}</p>\n <a\n href={qrUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 text-xs text-accent underline-offset-2 hover:underline\"\n >\n <ExternalLink className=\"size-3 shrink-0\" />\n {ch.feishuQrOpenLink}\n </a>\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n\n {showRegionSwitch ? (\n <div\n className=\"mx-auto mt-4 flex w-full max-w-[20rem] justify-center px-1\"\n role=\"group\"\n aria-label={ch.feishuRegionSwitchAria}\n >\n <div className=\"inline-flex w-full rounded-full border border-edge bg-surface-muted/60 p-1 dark:border-edge dark:bg-surface-base\">\n <button\n type=\"button\"\n disabled={busy}\n className={cn(\n 'min-w-0 flex-1 rounded-full px-3 py-2 text-center text-sm font-medium transition-colors',\n domain === 'feishu'\n ? 'bg-surface-panel text-fg shadow-sm dark:bg-surface-panel'\n : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => void startScan('feishu')}\n >\n {ch.feishuRegionChina}\n </button>\n <button\n type=\"button\"\n disabled={busy}\n className={cn(\n 'min-w-0 flex-1 rounded-full px-3 py-2 text-center text-sm font-medium transition-colors',\n domain === 'lark'\n ? 'bg-surface-panel text-fg shadow-sm dark:bg-surface-panel'\n : 'text-fg-muted hover:text-fg',\n )}\n onClick={() => void startScan('lark')}\n >\n {ch.feishuRegionInternational}\n </button>\n </div>\n </div>\n ) : null}\n\n <div className=\"mt-6\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-11 w-full rounded-full border-0 bg-fg text-surface-panel hover:opacity-90 dark:bg-fg dark:text-surface-panel\"\n disabled={busy}\n onClick={() => void startScan(domain)}\n >\n {busy ? ch.feishuQrStarting : ch.feishuQrRegenerate}\n </Button>\n </div>\n\n {moreSettings ? (\n <div className=\"mt-6 border-t border-edge-subtle pt-4 dark:border-edge-subtle\">{moreSettings}</div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type {\n ChannelsSettingsState,\n DmPolicy,\n GroupPolicy,\n ReplyToMode,\n StreamMode,\n} from '@/features/settings/channels-config-api';\nimport { cn } from '@/lib/cn';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\n\nimport { FieldHint, FieldLabel, SelectField } from './field-primitives';\nimport { channelsInputClassName, joinAllowFrom, parseIdList } from './utils';\n\nexport function TelegramAdvanced({\n tg,\n updateTelegram,\n ch,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n onTgAccountsBlur,\n}: {\n tg: ChannelsSettingsState['telegram'];\n updateTelegram: (p: Partial<ChannelsSettingsState['telegram']>) => void;\n ch: ChannelsSettingsMessages;\n dmOpts: { value: DmPolicy; label: string }[];\n groupOpts: { value: GroupPolicy; label: string }[];\n replyOpts: { value: ReplyToMode; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n tgAccountsDraft: string;\n setTgAccountsDraft: (s: string) => void;\n tgAccountsError: string;\n onTgAccountsBlur: () => void;\n}) {\n const inputClassName = channelsInputClassName;\n return (\n <div className=\"space-y-4 border-t border-edge-subtle pt-4 dark:border-edge\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.apiRoot}</FieldLabel>\n <input\n className={inputClassName()}\n value={tg.apiRoot}\n onChange={(e) => updateTelegram({ apiRoot: e.target.value })}\n placeholder=\"https://api.telegram.org\"\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.proxy}</FieldLabel>\n <input\n className={inputClassName()}\n value={tg.proxy}\n onChange={(e) => updateTelegram({ proxy: e.target.value })}\n placeholder=\"http://proxy.example.com:8080\"\n />\n </div>\n <SelectField label={ch.dmPolicy} value={tg.dmPolicy} onChange={(v) => updateTelegram({ dmPolicy: v })} options={dmOpts} />\n <SelectField\n label={ch.groupPolicy}\n value={tg.groupPolicy}\n onChange={(v) => updateTelegram({ groupPolicy: v })}\n options={groupOpts}\n />\n <SelectField\n label={ch.replyToMode}\n value={tg.replyToMode}\n onChange={(v) => updateTelegram({ replyToMode: v })}\n options={replyOpts}\n />\n <SelectField\n label={ch.streamMode}\n value={tg.streamMode}\n onChange={(v) => updateTelegram({ streamMode: v })}\n options={streamOpts}\n />\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromGroups}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"-1001234567890\"\n value={joinAllowFrom(tg.groupAllowFrom)}\n onChange={(e) => updateTelegram({ groupAllowFrom: parseIdList(e.target.value) })}\n />\n </div>\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.historyLimit}</FieldLabel>\n <input\n type=\"number\"\n min={10}\n max={200}\n className={inputClassName()}\n value={tg.historyLimit}\n onChange={(e) => updateTelegram({ historyLimit: parseInt(e.target.value, 10) || 50 })}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.textChunkLimit}</FieldLabel>\n <input\n type=\"number\"\n min={1000}\n max={10000}\n step={100}\n className={inputClassName()}\n value={tg.textChunkLimit}\n onChange={(e) => updateTelegram({ textChunkLimit: parseInt(e.target.value, 10) || 4000 })}\n />\n </div>\n </div>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={tg.debug}\n onChange={(e) => updateTelegram({ debug: e.target.checked })}\n />\n {ch.telegramDebug}\n </label>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.multiAccountJson}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n spellCheck={false}\n value={tgAccountsDraft}\n onChange={(e) => setTgAccountsDraft(e.target.value)}\n onBlur={onTgAccountsBlur}\n placeholder='{ \"personal\": { \"accountId\": \"personal\", \"botToken\": \"...\", ... } }'\n />\n {tgAccountsError ? (\n <p className=\"text-xs text-red-600 dark:text-red-400\">{tgAccountsError}</p>\n ) : (\n <FieldHint>{ch.multiAccountJsonDesc}</FieldHint>\n )}\n </div>\n </div>\n );\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { Check, ChevronDown, Copy, Eye, EyeOff, X } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentsPayload } from '@/features/chat/chat-agents-api';\nimport { telegramRoutingAccountIds } from '@/features/settings/channel-bindings-merge';\nimport {\n emptyTelegramAccount,\n type ChannelsSettingsState,\n type DmPolicy,\n type GroupPolicy,\n type ReplyToMode,\n type StreamMode,\n} from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\nimport { ChannelAgentRoutingBlock } from './channel-agent-routing-block';\nimport { FieldHint, FieldLabel } from './field-primitives';\nimport { TelegramAdvanced } from './telegram-advanced';\nimport { channelsInputClassName, joinAllowFrom, parseIdList, telegramDefaultBotToken } from './utils';\n\nexport function TelegramChannelSettingsDialog({\n open,\n onOpenChange,\n ch,\n form,\n baseline,\n tgAdvanced,\n setTgAdvanced,\n showToken,\n setShowToken,\n copied,\n copyToken,\n updateTelegram,\n updateChannelAgentRoute,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n onTgAccountsBlur,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n chatAgents,\n saving,\n dirty,\n save,\n discard,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n form: ChannelsSettingsState;\n baseline: ChannelsSettingsState | null;\n tgAdvanced: boolean;\n setTgAdvanced: (v: boolean | ((b: boolean) => boolean)) => void;\n showToken: boolean;\n setShowToken: (v: boolean | ((b: boolean) => boolean)) => void;\n copied: boolean;\n copyToken: () => Promise<void>;\n updateTelegram: (patch: Partial<ChannelsSettingsState['telegram']>) => void;\n updateChannelAgentRoute: (channel: 'telegram', accountId: string, agentId: string) => void;\n tgAccountsDraft: string;\n setTgAccountsDraft: (s: string) => void;\n tgAccountsError: string;\n onTgAccountsBlur: () => void;\n dmOpts: { value: DmPolicy; label: string }[];\n groupOpts: { value: GroupPolicy; label: string }[];\n replyOpts: { value: ReplyToMode; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n chatAgents: ChatAgentsPayload | undefined;\n saving: boolean;\n dirty: boolean;\n save: () => Promise<boolean>;\n discard: () => void;\n}) {\n const inputClassName = channelsInputClassName;\n const tg = form.telegram;\n const tgBaselineToken = baseline ? telegramDefaultBotToken(baseline.telegram) : '';\n const tgToken = telegramDefaultBotToken(tg);\n const telegramTokenDisplayLocked =\n !showToken && Boolean(String(tgBaselineToken).trim()) && tgToken === tgBaselineToken;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 max-h-[min(90vh,48rem)] w-[min(100%-2rem,36rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <Dialog.Title className=\"text-lg font-semibold tracking-tight text-fg\">{ch.telegramTitle}</Dialog.Title>\n <Dialog.Description className=\"mt-1 text-sm text-fg-muted\">{ch.telegramSubtitle}</Dialog.Description>\n </div>\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className=\"rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n aria-label={ch.modalCancel}\n >\n <X className=\"size-4\" />\n </button>\n </Dialog.Close>\n </div>\n\n <label className=\"mt-6 flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={tg.enabled}\n onChange={(e) => updateTelegram({ enabled: e.target.checked })}\n />\n <span>{ch.enableTelegramAria}</span>\n </label>\n\n <div className=\"mt-6 space-y-4\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>\n {ch.telegramToken}\n <span className=\"text-red-600 dark:text-red-400\"> *</span>\n </FieldLabel>\n <div className=\"flex flex-wrap gap-2\">\n <input\n className={cn(inputClassName(), 'min-w-0 flex-1 font-mono text-xs')}\n type={showToken ? 'text' : 'password'}\n autoComplete=\"off\"\n readOnly={telegramTokenDisplayLocked}\n value={\n telegramTokenDisplayLocked\n ? '*'.repeat(Math.max(1, tgBaselineToken.length))\n : tgToken\n }\n onChange={(e) => {\n if (telegramTokenDisplayLocked) return;\n const prev = tg.accounts?.default ?? emptyTelegramAccount('default');\n updateTelegram({\n accounts: {\n ...tg.accounts,\n default: { ...prev, accountId: 'default', botToken: e.target.value },\n },\n });\n }}\n placeholder=\"123456789:ABCdefGHIjklMNOpqrsTUVwxyz\"\n />\n {tgToken ? (\n <Button type=\"button\" variant=\"secondary\" className=\"px-2 py-1 text-xs\" onClick={() => void copyToken()}>\n {copied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />}\n {copied ? ch.copied : ch.copy}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"px-2 py-1 text-xs\"\n onClick={() => setShowToken((s) => !s)}\n >\n {showToken ? <EyeOff className=\"size-3.5\" /> : <Eye className=\"size-3.5\" />}\n {showToken ? ch.hide : ch.show}\n </Button>\n </div>\n <FieldHint>{ch.telegramTokenDesc}</FieldHint>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.allowFromDm}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"123456789, 987654321\"\n value={joinAllowFrom(tg.allowFrom)}\n onChange={(e) => updateTelegram({ allowFrom: parseIdList(e.target.value) })}\n />\n <FieldHint>{ch.allowFromDmDesc}</FieldHint>\n </div>\n\n <ChannelAgentRoutingBlock\n accountIds={telegramRoutingAccountIds(tg)}\n routes={form.channelAgentRoutes.telegram}\n defaultAgentId={form.defaultAgentId}\n agentItems={chatAgents?.items ?? []}\n disabled={saving}\n onChange={(acc, aid) => updateChannelAgentRoute('telegram', acc, aid)}\n ch={ch}\n />\n\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"-ml-2 h-auto justify-start px-2 py-1 text-sm text-fg-muted hover:text-fg\"\n onClick={() => setTgAdvanced((a) => !a)}\n >\n <ChevronDown className={cn('mr-1 size-4 transition-transform', tgAdvanced && 'rotate-180')} />\n {tgAdvanced ? ch.advancedHide : ch.advancedShow}\n </Button>\n\n {tgAdvanced ? (\n <TelegramAdvanced\n tg={tg}\n updateTelegram={updateTelegram}\n ch={ch}\n dmOpts={dmOpts}\n groupOpts={groupOpts}\n replyOpts={replyOpts}\n streamOpts={streamOpts}\n tgAccountsDraft={tgAccountsDraft}\n setTgAccountsDraft={setTgAccountsDraft}\n tgAccountsError={tgAccountsError}\n onTgAccountsBlur={onTgAccountsBlur}\n />\n ) : null}\n </div>\n\n <div className=\"mt-8 flex flex-wrap justify-end gap-2 border-t border-edge-subtle pt-4 dark:border-edge-subtle\">\n <Button type=\"button\" variant=\"secondary\" onClick={() => onOpenChange(false)}>\n {ch.modalCancel}\n </Button>\n <Button type=\"button\" variant=\"secondary\" disabled={!dirty || saving} onClick={discard}>\n {ch.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n disabled={!dirty || saving}\n onClick={async () => {\n const ok = await save();\n if (ok) onOpenChange(false);\n }}\n >\n {saving ? ch.saving : ch.save}\n </Button>\n </div>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR from 'swr';\n\nimport { fetchChatAgents } from '@/features/chat/chat-agents-api';\nimport { useGatewayConfigSwr } from '@/features/gateway/gateway-config-swr';\nimport {\n defaultChannelsState,\n normalizeChannelsFromConfig,\n patchChannelsSettings,\n type ChannelsSettingsState,\n type DmPolicy,\n type GroupPolicy,\n type ReplyToMode,\n type StreamMode,\n} from '@/features/settings/channels-config-api';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { telegramDefaultBotToken } from './utils';\n\nexport function useChannelsSettingsPanel() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const ch = m.channelsSettings;\n const token = useGatewayStore((st) => st.token);\n const hasToken = Boolean(token);\n\n const [form, setForm] = useState<ChannelsSettingsState | null>(null);\n const [baseline, setBaseline] = useState<ChannelsSettingsState | null>(null);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [saveOk, setSaveOk] = useState(false);\n\n const [weixinModalOpen, setWeixinModalOpen] = useState(false);\n const [telegramModalOpen, setTelegramModalOpen] = useState(false);\n const [feishuModalOpen, setFeishuModalOpen] = useState(false);\n const [removeTarget, setRemoveTarget] = useState<'weixin' | 'telegram' | 'feishu' | null>(null);\n const [weixinSuccessBanner, setWeixinSuccessBanner] = useState<string | null>(null);\n const [feishuSetupSuccessBanner, setFeishuSetupSuccessBanner] = useState<string | null>(null);\n const [tgAdvanced, setTgAdvanced] = useState(false);\n const [showToken, setShowToken] = useState(false);\n const [showFeishuSecret, setShowFeishuSecret] = useState(false);\n const [showFeishuWebhookSecrets, setShowFeishuWebhookSecrets] = useState(false);\n const [copied, setCopied] = useState(false);\n const [feishuCopied, setFeishuCopied] = useState(false);\n const [feishuWebhookCopied, setFeishuWebhookCopied] = useState(false);\n\n const [tgAccountsDraft, setTgAccountsDraft] = useState('');\n const [tgAccountsError, setTgAccountsError] = useState('');\n const [wxAccountsDraft, setWxAccountsDraft] = useState('');\n const [wxAccountsError, setWxAccountsError] = useState('');\n const [feishuAccountsDraft, setFeishuAccountsDraft] = useState('');\n const [feishuAccountsError, setFeishuAccountsError] = useState('');\n\n const { data: chatAgents } = useSWR(hasToken ? 'gateway-chat-agents-ch' : null, fetchChatAgents, {\n revalidateOnFocus: false,\n });\n\n const { data: cfgData, error: swrError, isLoading, mutate } = useGatewayConfigSwr(hasToken);\n\n const parsed = useMemo(\n () =>\n cfgData?.payload?.config !== undefined\n ? normalizeChannelsFromConfig(cfgData.payload.config)\n : null,\n [cfgData],\n );\n\n const dirty = useMemo(() => {\n if (!form || !baseline) return false;\n return JSON.stringify(form) !== JSON.stringify(baseline);\n }, [form, baseline]);\n\n useEffect(() => {\n if (!hasToken) {\n setForm(null);\n setBaseline(null);\n return;\n }\n if (parsed === null) return;\n if (!dirty) {\n setForm(parsed);\n setBaseline(structuredClone(parsed));\n setTgAccountsDraft(JSON.stringify(parsed.telegram.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsDraft(JSON.stringify(parsed.weixin.accounts ?? {}, null, 2));\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(parsed.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setSaveOk(false);\n }\n }, [hasToken, parsed, dirty]);\n\n const loading = Boolean(hasToken && isLoading && cfgData === undefined && !swrError);\n const fetchError =\n swrError instanceof Error ? swrError.message : swrError ? String(swrError) : null;\n\n const updateChannelAgentRoute = useCallback(\n (channel: 'telegram' | 'weixin' | 'feishu', accountId: string, agentId: string) => {\n setForm((f) => {\n if (!f) return null;\n const k = channel === 'telegram' ? 'telegram' : channel === 'weixin' ? 'weixin' : 'feishu';\n return {\n ...f,\n channelAgentRoutes: {\n ...f.channelAgentRoutes,\n [k]: { ...f.channelAgentRoutes[k], [accountId]: agentId.trim().toLowerCase() },\n },\n };\n });\n },\n [],\n );\n\n const updateTelegram = useCallback((patch: Partial<ChannelsSettingsState['telegram']>) => {\n setForm((f) => (f ? { ...f, telegram: { ...f.telegram, ...patch } } : null));\n }, []);\n\n const updateWeixin = useCallback((patch: Partial<ChannelsSettingsState['weixin']>) => {\n setForm((f) => (f ? { ...f, weixin: { ...f.weixin, ...patch } } : null));\n }, []);\n\n const updateFeishu = useCallback((patch: Partial<ChannelsSettingsState['feishu']>) => {\n setForm((f) => (f ? { ...f, feishu: { ...f.feishu, ...patch } } : null));\n }, []);\n\n const save = useCallback(async (): Promise<boolean> => {\n if (!form || saving) return false;\n setSaving(true);\n setError(null);\n setSaveOk(false);\n try {\n const next = await patchChannelsSettings(form);\n setForm(next);\n const baselineClone = structuredClone(next);\n setBaseline(baselineClone);\n setTgAccountsDraft(JSON.stringify(baselineClone.telegram.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsDraft(JSON.stringify(baselineClone.weixin.accounts ?? {}, null, 2));\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(baselineClone.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setSaveOk(true);\n window.setTimeout(() => setSaveOk(false), 2500);\n return true;\n } catch (e) {\n setError(e instanceof Error ? e.message : ch.saveError);\n return false;\n } finally {\n setSaving(false);\n }\n }, [form, saving, ch.saveError]);\n\n const discard = useCallback(() => {\n if (!baseline) return;\n const b = structuredClone(baseline);\n setForm(b);\n setTgAccountsDraft(JSON.stringify(b.telegram.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsDraft(JSON.stringify(b.weixin.accounts ?? {}, null, 2));\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(b.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setError(null);\n setSaveOk(false);\n }, [baseline]);\n\n const toggleChannelEnabled = useCallback(\n async (which: 'weixin' | 'telegram' | 'feishu', enabled: boolean) => {\n if (!form || saving) return;\n const prev = form;\n const next: ChannelsSettingsState =\n which === 'weixin'\n ? { ...form, weixin: { ...form.weixin, enabled } }\n : which === 'telegram'\n ? { ...form, telegram: { ...form.telegram, enabled } }\n : { ...form, feishu: { ...form.feishu, enabled } };\n setForm(next);\n setSaving(true);\n setError(null);\n try {\n const synced = await patchChannelsSettings(next);\n setForm(synced);\n const baselineClone = structuredClone(synced);\n setBaseline(baselineClone);\n setTgAccountsDraft(JSON.stringify(baselineClone.telegram.accounts ?? {}, null, 2));\n setWxAccountsDraft(JSON.stringify(baselineClone.weixin.accounts ?? {}, null, 2));\n setFeishuAccountsDraft(JSON.stringify(baselineClone.feishu?.accounts ?? {}, null, 2));\n } catch (e) {\n setError(e instanceof Error ? e.message : ch.saveError);\n setForm(prev);\n } finally {\n setSaving(false);\n }\n },\n [form, saving, ch.saveError],\n );\n\n const removeChannel = useCallback(async () => {\n if (!form || !removeTarget || saving) return;\n const defaults = defaultChannelsState();\n const next: ChannelsSettingsState =\n removeTarget === 'weixin'\n ? { ...form, weixin: defaults.weixin }\n : removeTarget === 'telegram'\n ? { ...form, telegram: defaults.telegram }\n : { ...form, feishu: defaults.feishu };\n setSaving(true);\n setError(null);\n try {\n const synced = await patchChannelsSettings(next);\n setForm(synced);\n const baselineClone = structuredClone(synced);\n setBaseline(baselineClone);\n setTgAccountsDraft(JSON.stringify(baselineClone.telegram.accounts ?? {}, null, 2));\n setWxAccountsDraft(JSON.stringify(baselineClone.weixin.accounts ?? {}, null, 2));\n setTgAccountsError('');\n setWxAccountsError('');\n setFeishuAccountsDraft(JSON.stringify(baselineClone.feishu?.accounts ?? {}, null, 2));\n setFeishuAccountsError('');\n setRemoveTarget(null);\n setSaveOk(true);\n window.setTimeout(() => setSaveOk(false), 2500);\n } catch (e) {\n setError(e instanceof Error ? e.message : ch.saveError);\n } finally {\n setSaving(false);\n }\n }, [form, removeTarget, saving, ch.saveError]);\n\n const copyToken = useCallback(async () => {\n const t = form ? telegramDefaultBotToken(form.telegram) : '';\n if (!t) return;\n await navigator.clipboard.writeText(t).catch(() => {});\n setCopied(true);\n window.setTimeout(() => setCopied(false), 2000);\n }, [form]);\n\n const handleFeishuQrSetupSuccess = useCallback(\n (result: { appId: string; domain: string; openId?: string }) => {\n updateFeishu({\n appId: result.appId,\n domain: result.domain,\n enabled: true,\n });\n void mutate();\n setFeishuSetupSuccessBanner(ch.feishuQrSetupSuccess);\n window.setTimeout(() => setFeishuSetupSuccessBanner(null), 4000);\n },\n [updateFeishu, mutate, ch.feishuQrSetupSuccess],\n );\n\n const copyFeishuSecret = useCallback(async () => {\n const t = form?.feishu?.appSecret;\n if (!t) return;\n await navigator.clipboard.writeText(t).catch(() => {});\n setFeishuCopied(true);\n window.setTimeout(() => setFeishuCopied(false), 2000);\n }, [form]);\n\n const copyFeishuWebhookConfig = useCallback(async () => {\n const fs = form?.feishu;\n if (!fs) return;\n const payload = {\n connectionMode: fs.connectionMode,\n verificationToken: fs.verificationToken || '',\n encryptKey: fs.encryptKey || '',\n webhookHost: fs.webhookHost || '',\n webhookPort: fs.webhookPort || 0,\n webhookPath: fs.webhookPath || '',\n };\n await navigator.clipboard.writeText(JSON.stringify(payload, null, 2)).catch(() => {});\n setFeishuWebhookCopied(true);\n window.setTimeout(() => setFeishuWebhookCopied(false), 2000);\n }, [form]);\n\n const onTgAccountsBlur = useCallback(() => {\n if (!form) return;\n const raw = tgAccountsDraft.trim();\n if (!raw) {\n updateTelegram({ accounts: {} });\n setTgAccountsError('');\n return;\n }\n try {\n const parsedJson = JSON.parse(raw) as unknown;\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) {\n throw new Error(ch.jsonObjectAccounts);\n }\n updateTelegram({ accounts: parsedJson as ChannelsSettingsState['telegram']['accounts'] });\n setTgAccountsError('');\n } catch (err) {\n setTgAccountsError(err instanceof Error ? err.message : ch.jsonInvalid);\n }\n }, [form, tgAccountsDraft, updateTelegram, ch.jsonObjectAccounts, ch.jsonInvalid]);\n\n const onWxAccountsBlur = useCallback(() => {\n if (!form) return;\n const raw = wxAccountsDraft.trim();\n if (!raw) {\n updateWeixin({ accounts: {} });\n setWxAccountsError('');\n return;\n }\n try {\n const parsedJson = JSON.parse(raw) as unknown;\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) {\n throw new Error(ch.jsonObjectAccounts);\n }\n updateWeixin({ accounts: parsedJson as ChannelsSettingsState['weixin']['accounts'] });\n setWxAccountsError('');\n } catch (err) {\n setWxAccountsError(err instanceof Error ? err.message : ch.jsonInvalid);\n }\n }, [form, wxAccountsDraft, updateWeixin, ch.jsonObjectAccounts, ch.jsonInvalid]);\n\n const onFeishuAccountsBlur = useCallback(() => {\n if (!form) return;\n const raw = feishuAccountsDraft.trim();\n if (!raw) {\n updateFeishu({ accounts: {} });\n setFeishuAccountsError('');\n return;\n }\n try {\n const parsedJson = JSON.parse(raw) as unknown;\n if (typeof parsedJson !== 'object' || parsedJson === null || Array.isArray(parsedJson)) {\n throw new Error(ch.jsonObjectAccounts);\n }\n updateFeishu({ accounts: parsedJson as ChannelsSettingsState['feishu']['accounts'] });\n setFeishuAccountsError('');\n } catch (err) {\n setFeishuAccountsError(err instanceof Error ? err.message : ch.jsonInvalid);\n }\n }, [form, feishuAccountsDraft, updateFeishu, ch.jsonObjectAccounts, ch.jsonInvalid]);\n\n const dmOpts = useMemo(\n () =>\n (['pairing', 'allowlist', 'open', 'disabled'] as DmPolicy[]).map((value) => ({\n value,\n label: ch.policy.dm[value],\n })),\n [ch.policy.dm],\n );\n\n const groupOpts = useMemo(\n () =>\n (['open', 'disabled', 'allowlist'] as GroupPolicy[]).map((value) => ({\n value,\n label: ch.policy.group[value],\n })),\n [ch.policy.group],\n );\n\n const replyOpts = useMemo(\n () =>\n (['off', 'first', 'all'] as ReplyToMode[]).map((value) => ({\n value,\n label: ch.policy.reply[value],\n })),\n [ch.policy.reply],\n );\n\n const streamOpts = useMemo(\n () =>\n (['off', 'partial', 'block'] as StreamMode[]).map((value) => ({\n value,\n label: ch.policy.stream[value],\n })),\n [ch.policy.stream],\n );\n\n return {\n language,\n m,\n ch,\n hasToken,\n loading,\n fetchError,\n mutate,\n form,\n baseline,\n dirty,\n saving,\n error,\n saveOk,\n weixinModalOpen,\n setWeixinModalOpen,\n telegramModalOpen,\n setTelegramModalOpen,\n feishuModalOpen,\n setFeishuModalOpen,\n removeTarget,\n setRemoveTarget,\n weixinSuccessBanner,\n setWeixinSuccessBanner,\n feishuSetupSuccessBanner,\n tgAdvanced,\n setTgAdvanced,\n showToken,\n setShowToken,\n showFeishuSecret,\n setShowFeishuSecret,\n showFeishuWebhookSecrets,\n setShowFeishuWebhookSecrets,\n copied,\n feishuCopied,\n feishuWebhookCopied,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n feishuAccountsDraft,\n setFeishuAccountsDraft,\n feishuAccountsError,\n chatAgents,\n updateChannelAgentRoute,\n updateTelegram,\n updateWeixin,\n updateFeishu,\n save,\n discard,\n toggleChannelEnabled,\n removeChannel,\n copyToken,\n handleFeishuQrSetupSuccess,\n copyFeishuSecret,\n copyFeishuWebhookConfig,\n onTgAccountsBlur,\n onWxAccountsBlur,\n onFeishuAccountsBlur,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n };\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { ExternalLink, X } from 'lucide-react';\nimport QRCode from 'qrcode';\nimport { useCallback, useEffect, useState, type ReactNode } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n fetchWeixinGatewayQrLoginStart,\n fetchWeixinGatewayQrLoginStatus,\n} from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\nimport { cn } from '@/lib/cn';\nimport { SETTINGS_SHELL_CONTENT_Z, SETTINGS_SHELL_OVERLAY_Z } from '@/lib/settings-shell-dialog-layer';\n\nexport function WeixinQrLoginDialog({\n open,\n onOpenChange,\n ch,\n onLoginSuccess,\n moreSettings,\n}: {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ch: ChannelsSettingsMessages;\n onLoginSuccess: () => void | Promise<void>;\n moreSettings?: ReactNode;\n}) {\n const [busy, setBusy] = useState(false);\n const [sessionKey, setSessionKey] = useState<string | null>(null);\n const [qrcodeUrl, setQrcodeUrl] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [hint, setHint] = useState<string | null>(null);\n const [qrDataUrl, setQrDataUrl] = useState<string | null>(null);\n const [qrGenFailed, setQrGenFailed] = useState(false);\n\n const start = useCallback(async () => {\n setError(null);\n setHint(null);\n setSessionKey(null);\n setBusy(true);\n try {\n const r = await fetchWeixinGatewayQrLoginStart();\n setQrcodeUrl(r.qrcodeUrl);\n setSessionKey(r.sessionKey);\n } catch (e) {\n setError(e instanceof Error ? e.message : 'Start failed');\n } finally {\n setBusy(false);\n }\n }, []);\n\n useEffect(() => {\n if (!open) {\n setSessionKey(null);\n setQrcodeUrl(null);\n setError(null);\n setQrDataUrl(null);\n setQrGenFailed(false);\n setHint(null);\n return;\n }\n void start();\n }, [open, start]);\n\n useEffect(() => {\n if (!sessionKey) return;\n let cancelled = false;\n let intervalId: number | undefined;\n\n const poll = async () => {\n try {\n const st = await fetchWeixinGatewayQrLoginStatus(sessionKey);\n if (cancelled) return;\n if (st.phase === 'polling') {\n setQrcodeUrl(st.qrcodeUrl);\n if (st.qrStatus === 'scaned') {\n setHint(ch.weixinQrLoginScanned);\n } else {\n setHint(null);\n }\n return;\n }\n if (st.phase === 'done') {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n intervalId = undefined;\n }\n setSessionKey(null);\n if (st.ok) {\n setQrcodeUrl(null);\n onOpenChange(false);\n await onLoginSuccess();\n } else {\n setError(st.message);\n setQrcodeUrl(null);\n }\n return;\n }\n if (st.phase === 'unknown') {\n setHint(null);\n }\n } catch (e) {\n if (!cancelled) {\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n setError(e instanceof Error ? e.message : 'Request failed');\n setSessionKey(null);\n setQrcodeUrl(null);\n }\n }\n };\n\n intervalId = window.setInterval(() => void poll(), 2000);\n void poll();\n return () => {\n cancelled = true;\n if (intervalId !== undefined) {\n window.clearInterval(intervalId);\n }\n };\n }, [sessionKey, ch.weixinQrLoginScanned, ch.weixinQrLoginSuccess, onLoginSuccess, onOpenChange]);\n\n useEffect(() => {\n if (!qrcodeUrl) {\n setQrDataUrl(null);\n setQrGenFailed(false);\n return;\n }\n let cancelled = false;\n setQrGenFailed(false);\n void QRCode.toDataURL(qrcodeUrl, {\n width: 208,\n margin: 2,\n errorCorrectionLevel: 'M',\n color: { dark: '#000000ff', light: '#ffffffff' },\n })\n .then((url) => {\n if (!cancelled) setQrDataUrl(url);\n })\n .catch(() => {\n if (!cancelled) {\n setQrGenFailed(true);\n setQrDataUrl(null);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [qrcodeUrl]);\n\n const showQr = Boolean(qrcodeUrl && sessionKey);\n /** True while waiting for a new login session (first open, regenerate). Keeps modal height stable. */\n const qrFrameLoading = open && !error && !showQr;\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(\n 'xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]',\n SETTINGS_SHELL_OVERLAY_Z,\n )}\n />\n <Dialog.Content\n className={cn(\n 'fixed left-1/2 top-1/2 max-h-[min(90vh,52rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2',\n SETTINGS_SHELL_CONTENT_Z,\n 'overflow-y-auto rounded-2xl border border-edge bg-surface-panel p-6 shadow-popover outline-none dark:border-edge',\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <Dialog.Close asChild>\n <button\n type=\"button\"\n className=\"absolute right-3 top-3 z-20 rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n aria-label={ch.weixinQrModalCloseAria}\n >\n <X className=\"size-4\" />\n </button>\n </Dialog.Close>\n\n <Dialog.Title className=\"sr-only\">{ch.weixinQrModalTitle}</Dialog.Title>\n <Dialog.Description className=\"sr-only\">{ch.weixinQrModalSubtitle}</Dialog.Description>\n\n <div className=\"text-center\">\n <p className=\"text-lg font-semibold tracking-tight text-fg\">{ch.weixinQrModalTitle}</p>\n <p className=\"mt-1.5 text-sm text-fg-muted\">{ch.weixinQrModalSubtitle}</p>\n </div>\n\n <div className=\"mt-6 flex min-h-[17.5rem] flex-col items-center justify-center gap-3\">\n {error ? <p className=\"text-center text-sm text-red-600 dark:text-red-400\">{error}</p> : null}\n\n {!error && (showQr || qrFrameLoading) ? (\n <div className=\"flex w-full flex-col items-center gap-3\">\n <p\n className={cn(\n 'min-h-[1.25rem] text-center text-sm',\n hint && !qrFrameLoading ? 'text-accent' : 'text-fg-muted',\n )}\n >\n {qrFrameLoading ? ch.weixinQrLoginBusy : hint ?? '\\u00a0'}\n </p>\n <div\n className={cn(\n 'relative flex size-52 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-edge-subtle bg-white p-3 dark:border-edge',\n qrFrameLoading && 'bg-surface-muted/40 dark:bg-surface-base',\n )}\n >\n {qrFrameLoading ? (\n <div\n className=\"absolute inset-3 animate-pulse rounded-md bg-surface-muted dark:bg-surface-hover\"\n aria-hidden\n />\n ) : null}\n {showQr && qrcodeUrl && !error && qrDataUrl && !qrGenFailed ? (\n <img src={qrDataUrl} alt=\"\" className=\"relative z-[1] size-full object-contain\" />\n ) : null}\n {showQr && qrcodeUrl && !error && !qrDataUrl && !qrGenFailed && !qrFrameLoading ? (\n <p className=\"relative z-[1] px-2 text-center text-sm text-fg-muted\">{ch.weixinQrEncoding}</p>\n ) : null}\n {showQr && qrcodeUrl && !error && qrGenFailed ? (\n <div className=\"relative z-[1] flex size-full flex-col items-center justify-center gap-2 px-1\">\n <p className=\"text-center text-xs text-fg-muted\">{ch.weixinQrImageError}</p>\n <a\n href={qrcodeUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"inline-flex items-center gap-1 text-xs text-accent underline-offset-2 hover:underline\"\n >\n <ExternalLink className=\"size-3 shrink-0\" />\n {ch.weixinQrOpenLink}\n </a>\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n\n <div className=\"mt-6\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-11 w-full rounded-full border-0 bg-fg text-surface-panel hover:opacity-90 dark:bg-fg dark:text-surface-panel\"\n disabled={busy}\n onClick={() => void start()}\n >\n {busy ? ch.weixinQrLoginBusy : ch.weixinQrRegenerate}\n </Button>\n </div>\n\n {moreSettings ? (\n <div className=\"mt-6 border-t border-edge-subtle pt-4 dark:border-edge-subtle\">{moreSettings}</div>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n}\n","import type { ChannelsSettingsState, DmPolicy, StreamMode } from '@/features/settings/channels-config-api';\nimport { weixinRoutingAccountIds } from '@/features/settings/channel-bindings-merge';\nimport { cn } from '@/lib/cn';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\n\nimport { ChannelAgentRoutingBlock } from './channel-agent-routing-block';\nimport { FieldHint, FieldLabel, SelectField } from './field-primitives';\nimport { channelsInputClassName } from './utils';\n\nexport function WeixinAdvanced({\n wx,\n updateWeixin,\n ch,\n dmOpts,\n streamOpts,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n onWxAccountsBlur,\n channelAgentRoutesWx,\n defaultAgentId,\n agentItems,\n onAgentRouteChange,\n routingDisabled,\n}: {\n wx: ChannelsSettingsState['weixin'];\n updateWeixin: (p: Partial<ChannelsSettingsState['weixin']>) => void;\n ch: ChannelsSettingsMessages;\n dmOpts: { value: DmPolicy; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n wxAccountsDraft: string;\n setWxAccountsDraft: (s: string) => void;\n wxAccountsError: string;\n onWxAccountsBlur: () => void;\n channelAgentRoutesWx: Record<string, string>;\n defaultAgentId: string;\n agentItems: { id: string; name?: string }[];\n onAgentRouteChange: (accountId: string, agentId: string) => void;\n routingDisabled: boolean;\n}) {\n const inputClassName = channelsInputClassName;\n return (\n <div className=\"space-y-4 border-t border-edge-subtle pt-4 dark:border-edge\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.weixinAllowFrom}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[2.75rem] resize-y font-mono text-xs')}\n rows={2}\n placeholder=\"wxid_..., openid_...\"\n value={wx.allowFrom.join(', ')}\n onChange={(e) =>\n updateWeixin({\n allowFrom: e.target.value\n .split(/[,\\n]/)\n .map((s) => s.trim())\n .filter(Boolean),\n })\n }\n />\n <FieldHint>{ch.weixinAllowFromDesc}</FieldHint>\n </div>\n <SelectField label={ch.dmPolicy} value={wx.dmPolicy} onChange={(v) => updateWeixin({ dmPolicy: v })} options={dmOpts} />\n <SelectField\n label={ch.streamMode}\n value={wx.streamMode}\n onChange={(v) => updateWeixin({ streamMode: v })}\n options={streamOpts}\n />\n <div className=\"grid gap-3 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.historyLimit}</FieldLabel>\n <input\n type=\"number\"\n min={10}\n max={200}\n className={inputClassName()}\n value={wx.historyLimit}\n onChange={(e) => updateWeixin({ historyLimit: parseInt(e.target.value, 10) || 50 })}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.textChunkLimit}</FieldLabel>\n <input\n type=\"number\"\n min={1000}\n max={10000}\n step={100}\n className={inputClassName()}\n value={wx.textChunkLimit}\n onChange={(e) => updateWeixin({ textChunkLimit: parseInt(e.target.value, 10) || 4000 })}\n />\n </div>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.weixinRouteTag}</FieldLabel>\n <input\n className={inputClassName()}\n value={wx.routeTag}\n onChange={(e) => updateWeixin({ routeTag: e.target.value })}\n placeholder={ch.routeTagPlaceholder}\n />\n <FieldHint>{ch.weixinRouteTagDesc}</FieldHint>\n </div>\n <label className=\"flex cursor-pointer items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox\"\n checked={wx.debug}\n onChange={(e) => updateWeixin({ debug: e.target.checked })}\n />\n {ch.weixinDebug}\n </label>\n <FieldHint>{ch.weixinDebugDesc}</FieldHint>\n <div className=\"flex flex-col gap-1.5\">\n <FieldLabel>{ch.weixinAccountsJson}</FieldLabel>\n <textarea\n className={cn(inputClassName(), 'min-h-[140px] resize-y font-mono text-xs')}\n spellCheck={false}\n value={wxAccountsDraft}\n onChange={(e) => setWxAccountsDraft(e.target.value)}\n onBlur={onWxAccountsBlur}\n placeholder='{ \"personal\": { \"name\": \"...\", \"cdnBaseUrl\": \"...\", \"enabled\": true } }'\n />\n {wxAccountsError ? (\n <p className=\"text-xs text-red-600 dark:text-red-400\">{wxAccountsError}</p>\n ) : (\n <FieldHint>{ch.weixinAccountsJsonDesc}</FieldHint>\n )}\n </div>\n\n <ChannelAgentRoutingBlock\n accountIds={weixinRoutingAccountIds(wx)}\n routes={channelAgentRoutesWx}\n defaultAgentId={defaultAgentId}\n agentItems={agentItems}\n disabled={routingDisabled}\n onChange={onAgentRouteChange}\n ch={ch}\n />\n </div>\n );\n}\n","import { ChevronDown } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport type { ChatAgentsPayload } from '@/features/chat/chat-agents-api';\nimport type { ChannelsSettingsState, DmPolicy, StreamMode } from '@/features/settings/channels-config-api';\nimport type { ChannelsSettingsMessages } from '@/i18n/messages';\n\nimport { WeixinAdvanced } from './weixin-advanced';\n\nexport function WeixinMoreSettingsSection({\n ch,\n wx,\n updateWeixin,\n dmOpts,\n streamOpts,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n onWxAccountsBlur,\n form,\n chatAgents,\n onAgentRouteChange,\n saving,\n dirty,\n save,\n discard,\n}: {\n ch: ChannelsSettingsMessages;\n wx: ChannelsSettingsState['weixin'];\n updateWeixin: (patch: Partial<ChannelsSettingsState['weixin']>) => void;\n dmOpts: { value: DmPolicy; label: string }[];\n streamOpts: { value: StreamMode; label: string }[];\n wxAccountsDraft: string;\n setWxAccountsDraft: (v: string) => void;\n wxAccountsError: string;\n onWxAccountsBlur: () => void;\n form: ChannelsSettingsState;\n chatAgents: ChatAgentsPayload | undefined;\n onAgentRouteChange: (accountId: string, agentId: string) => void;\n saving: boolean;\n dirty: boolean;\n save: () => Promise<boolean>;\n discard: () => void;\n}) {\n return (\n <details className=\"group rounded-xl border border-edge-subtle bg-surface-base open:pb-3 dark:border-edge\">\n <summary className=\"cursor-pointer list-none rounded-xl px-3 py-2.5 text-sm font-medium text-fg transition-colors hover:bg-surface-hover group-open:rounded-b-none [&::-webkit-details-marker]:hidden\">\n <span className=\"inline-flex items-center gap-2\">\n <ChevronDown className=\"size-4 shrink-0 text-fg-muted transition-transform group-open:rotate-180\" />\n {ch.advancedShow}\n </span>\n </summary>\n <div className=\"space-y-4 border-t border-edge-subtle px-3 pb-3 pt-3 dark:border-edge-subtle\">\n <p className=\"text-xs leading-relaxed text-fg-muted\">{ch.weixinAdvancedHint}</p>\n <label className=\"flex cursor-pointer items-start gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"ui-checkbox mt-0.5\"\n checked={wx.enabled}\n onChange={(e) => updateWeixin({ enabled: e.target.checked })}\n />\n <span>{ch.enableWeixinAria}</span>\n </label>\n <div className=\"[&>div]:border-0 [&>div]:pt-0\">\n <WeixinAdvanced\n wx={wx}\n updateWeixin={updateWeixin}\n ch={ch}\n dmOpts={dmOpts}\n streamOpts={streamOpts}\n wxAccountsDraft={wxAccountsDraft}\n setWxAccountsDraft={setWxAccountsDraft}\n wxAccountsError={wxAccountsError}\n onWxAccountsBlur={onWxAccountsBlur}\n channelAgentRoutesWx={form.channelAgentRoutes.weixin}\n defaultAgentId={form.defaultAgentId}\n agentItems={chatAgents?.items ?? []}\n onAgentRouteChange={onAgentRouteChange}\n routingDisabled={saving}\n />\n </div>\n <div className=\"flex flex-col gap-2 sm:flex-row sm:justify-end\">\n <Button type=\"button\" variant=\"secondary\" className=\"w-full sm:w-auto\" disabled={!dirty || saving} onClick={discard}>\n {ch.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"w-full sm:w-auto\"\n disabled={!dirty || saving}\n onClick={async () => {\n await save();\n }}\n >\n {saving ? ch.saving : ch.save}\n </Button>\n </div>\n </div>\n </details>\n );\n}\n","import { ExternalLink, MessageSquare, Send } from 'lucide-react';\n\nimport { Button } from '@/components/ui/button';\nimport { docsGuidePageUrl } from '@/navigation';\n\nimport { ChannelImHubCard } from './channel-im-hub-card';\nimport { ChannelsRemoveChannelDialog } from './channels-remove-channel-dialog';\nimport { FeishuMoreSettingsSection } from './feishu-more-settings-section';\nimport { FeishuQrSetupDialog } from './feishu-qr-setup-dialog';\nimport { TelegramChannelSettingsDialog } from './telegram-channel-settings-dialog';\nimport { useChannelsSettingsPanel } from './use-channels-settings-panel';\nimport { WeixinQrLoginDialog } from './weixin-qr-login-dialog';\nimport { WeixinMoreSettingsSection } from './weixin-more-settings-section';\nimport { isFeishuConfigured, isTelegramConfigured, isWeixinConfigured } from './utils';\n\nexport function ChannelsSettingsPanel() {\n const ctx = useChannelsSettingsPanel();\n const {\n language,\n m,\n ch,\n hasToken,\n loading,\n fetchError,\n mutate,\n form,\n baseline,\n dirty,\n saving,\n error,\n saveOk,\n weixinModalOpen,\n setWeixinModalOpen,\n telegramModalOpen,\n setTelegramModalOpen,\n feishuModalOpen,\n setFeishuModalOpen,\n removeTarget,\n setRemoveTarget,\n weixinSuccessBanner,\n setWeixinSuccessBanner,\n feishuSetupSuccessBanner,\n tgAdvanced,\n setTgAdvanced,\n showToken,\n setShowToken,\n showFeishuSecret,\n setShowFeishuSecret,\n showFeishuWebhookSecrets,\n setShowFeishuWebhookSecrets,\n copied,\n feishuCopied,\n feishuWebhookCopied,\n tgAccountsDraft,\n setTgAccountsDraft,\n tgAccountsError,\n wxAccountsDraft,\n setWxAccountsDraft,\n wxAccountsError,\n feishuAccountsDraft,\n setFeishuAccountsDraft,\n feishuAccountsError,\n chatAgents,\n updateChannelAgentRoute,\n updateTelegram,\n updateWeixin,\n updateFeishu,\n save,\n discard,\n toggleChannelEnabled,\n removeChannel,\n copyToken,\n handleFeishuQrSetupSuccess,\n copyFeishuSecret,\n copyFeishuWebhookConfig,\n onTgAccountsBlur,\n onWxAccountsBlur,\n onFeishuAccountsBlur,\n dmOpts,\n groupOpts,\n replyOpts,\n streamOpts,\n } = ctx;\n\n if (!hasToken) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{m.settingsSections.channels}</h1>\n <p className=\"text-sm text-fg-muted\">{ch.needToken}</p>\n </div>\n );\n }\n\n if (loading) {\n return (\n <div className=\"mx-auto w-full max-w-app-main px-4 py-8\">\n <div className=\"h-8 w-48 animate-pulse rounded bg-surface-hover\" />\n <div className=\"mt-6 h-32 animate-pulse rounded-xl bg-surface-hover\" />\n <p className=\"mt-4 text-sm text-fg-muted\">{ch.loading}</p>\n </div>\n );\n }\n\n if (!form) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <p className=\"text-sm text-fg-muted\">{error ?? fetchError ?? ch.loadError}</p>\n <Button type=\"button\" variant=\"secondary\" onClick={() => void mutate()}>\n {ch.retry}\n </Button>\n </div>\n );\n }\n\n const wx = form.weixin;\n const tg = form.telegram;\n const fs = form.feishu;\n const weixinConfigured = isWeixinConfigured(wx);\n const telegramConfigured = isTelegramConfigured(tg);\n const feishuConfigured = isFeishuConfigured(fs);\n\n const feishuMoreSettings = (\n <FeishuMoreSettingsSection\n ch={ch}\n form={form}\n baseline={baseline}\n showFeishuSecret={showFeishuSecret}\n setShowFeishuSecret={setShowFeishuSecret}\n showFeishuWebhookSecrets={showFeishuWebhookSecrets}\n setShowFeishuWebhookSecrets={setShowFeishuWebhookSecrets}\n feishuCopied={feishuCopied}\n feishuWebhookCopied={feishuWebhookCopied}\n copyFeishuSecret={copyFeishuSecret}\n copyFeishuWebhookConfig={copyFeishuWebhookConfig}\n updateFeishu={updateFeishu}\n updateChannelAgentRoute={updateChannelAgentRoute}\n feishuAccountsDraft={feishuAccountsDraft}\n setFeishuAccountsDraft={setFeishuAccountsDraft}\n feishuAccountsError={feishuAccountsError}\n onFeishuAccountsBlur={onFeishuAccountsBlur}\n dmOpts={dmOpts}\n groupOpts={groupOpts}\n chatAgents={chatAgents}\n saving={saving}\n dirty={dirty}\n save={save}\n discard={discard}\n />\n );\n\n const weixinMoreSettings = (\n <WeixinMoreSettingsSection\n ch={ch}\n wx={wx}\n updateWeixin={updateWeixin}\n dmOpts={dmOpts}\n streamOpts={streamOpts}\n wxAccountsDraft={wxAccountsDraft}\n setWxAccountsDraft={setWxAccountsDraft}\n wxAccountsError={wxAccountsError}\n onWxAccountsBlur={onWxAccountsBlur}\n form={form}\n chatAgents={chatAgents}\n onAgentRouteChange={(acc, aid) => updateChannelAgentRoute('weixin', acc, aid)}\n saving={saving}\n dirty={dirty}\n save={save}\n discard={discard}\n />\n );\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-6 px-4 py-6\">\n <header className=\"flex flex-col gap-1\">\n <h1 className=\"text-lg font-semibold tracking-tight text-fg\">{m.settingsSections.channels}</h1>\n <p className=\"mt-1 text-sm text-fg-muted\">{ch.subtitle}</p>\n <a\n href={docsGuidePageUrl(language, 'channels')}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"mt-1 inline-flex items-center gap-1 text-sm text-accent hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40\"\n >\n {ch.docsLink}\n <ExternalLink className=\"size-3.5\" />\n </a>\n </header>\n\n {dirty ? <p className=\"text-xs text-amber-800 dark:text-amber-200\">{ch.unsavedHint}</p> : null}\n {saveOk ? <p className=\"text-xs text-fg-muted\">{ch.saved}</p> : null}\n {error ? <p className=\"text-sm text-red-600 dark:text-red-400\">{error}</p> : null}\n {weixinSuccessBanner ? <p className=\"text-xs text-accent\">{weixinSuccessBanner}</p> : null}\n {feishuSetupSuccessBanner ? (\n <div className=\"rounded-xl border border-success/30 bg-success-soft px-4 py-3 text-sm text-success\">\n {feishuSetupSuccessBanner}\n </div>\n ) : null}\n\n <div className=\"flex flex-col gap-3\">\n <ChannelImHubCard\n icon={<MessageSquare className=\"size-6 text-accent\" strokeWidth={1.75} />}\n title={ch.weixinTitle}\n subtitle={ch.weixinSubtitle}\n configured={weixinConfigured}\n enabled={wx.enabled}\n toggleDisabled={saving}\n onToggle={(next) => void toggleChannelEnabled('weixin', next)}\n onConfigure={() => setWeixinModalOpen(true)}\n onEdit={() => setWeixinModalOpen(true)}\n onRemove={() => setRemoveTarget('weixin')}\n ch={ch}\n />\n <ChannelImHubCard\n icon={<Send className=\"size-6 text-accent\" strokeWidth={1.75} />}\n title={ch.telegramTitle}\n subtitle={ch.telegramSubtitle}\n configured={telegramConfigured}\n enabled={tg.enabled}\n toggleDisabled={saving}\n onToggle={(next) => void toggleChannelEnabled('telegram', next)}\n onConfigure={() => setTelegramModalOpen(true)}\n onEdit={() => setTelegramModalOpen(true)}\n onRemove={() => setRemoveTarget('telegram')}\n ch={ch}\n />\n <ChannelImHubCard\n icon={<MessageSquare className=\"size-6 text-accent\" strokeWidth={1.75} />}\n title={ch.feishuTitle}\n subtitle={ch.feishuSubtitle}\n configured={feishuConfigured}\n enabled={fs.enabled}\n toggleDisabled={saving}\n onToggle={(next) => void toggleChannelEnabled('feishu', next)}\n onConfigure={() => setFeishuModalOpen(true)}\n onEdit={() => setFeishuModalOpen(true)}\n onRemove={() => setRemoveTarget('feishu')}\n ch={ch}\n />\n </div>\n\n <WeixinQrLoginDialog\n open={weixinModalOpen}\n onOpenChange={setWeixinModalOpen}\n ch={ch}\n onLoginSuccess={async () => {\n await mutate();\n setWeixinSuccessBanner(ch.weixinQrLoginSuccess);\n window.setTimeout(() => setWeixinSuccessBanner(null), 4000);\n }}\n moreSettings={weixinMoreSettings}\n />\n\n <TelegramChannelSettingsDialog\n open={telegramModalOpen}\n onOpenChange={setTelegramModalOpen}\n ch={ch}\n form={form}\n baseline={baseline}\n tgAdvanced={tgAdvanced}\n setTgAdvanced={setTgAdvanced}\n showToken={showToken}\n setShowToken={setShowToken}\n copied={copied}\n copyToken={copyToken}\n updateTelegram={updateTelegram}\n updateChannelAgentRoute={updateChannelAgentRoute}\n tgAccountsDraft={tgAccountsDraft}\n setTgAccountsDraft={setTgAccountsDraft}\n tgAccountsError={tgAccountsError}\n onTgAccountsBlur={onTgAccountsBlur}\n dmOpts={dmOpts}\n groupOpts={groupOpts}\n replyOpts={replyOpts}\n streamOpts={streamOpts}\n chatAgents={chatAgents}\n saving={saving}\n dirty={dirty}\n save={save}\n discard={discard}\n />\n\n <FeishuQrSetupDialog\n open={feishuModalOpen}\n onOpenChange={setFeishuModalOpen}\n ch={ch}\n onSetupSuccess={handleFeishuQrSetupSuccess}\n moreSettings={feishuMoreSettings}\n />\n\n <ChannelsRemoveChannelDialog\n open={removeTarget !== null}\n onOpenChange={(o) => {\n if (!o) setRemoveTarget(null);\n }}\n ch={ch}\n removeTarget={removeTarget}\n onCancel={() => setRemoveTarget(null)}\n saving={saving}\n onConfirmRemove={() => void removeChannel()}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|