mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 15:05:51 +00:00
2 lines
64 KiB
JavaScript
2 lines
64 KiB
JavaScript
const _0x2c092c=_0x2b91;(function(_0x3c141b,_0x55966f){const _0x496218=_0x2b91,_0x4ca439=_0x3c141b();while(!![]){try{const _0x5a10ff=parseInt(_0x496218(0x2c2))/0x1*(-parseInt(_0x496218(0x2f9))/0x2)+-parseInt(_0x496218(0x2af))/0x3+-parseInt(_0x496218(0x20e))/0x4*(parseInt(_0x496218(0x2fc))/0x5)+-parseInt(_0x496218(0x260))/0x6+-parseInt(_0x496218(0x213))/0x7+parseInt(_0x496218(0x25a))/0x8+parseInt(_0x496218(0x29f))/0x9;if(_0x5a10ff===_0x55966f)break;else _0x4ca439['push'](_0x4ca439['shift']());}catch(_0x18fc8d){_0x4ca439['push'](_0x4ca439['shift']());}}}(_0x2ea6,0x82dee));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.js';import{executeCommands}from'./executor.js';import{fillWithSecondaryApi}from'./secondary-filler.js';import{getChatPiece,saveChatDebounced}from'../../utils/utils.js';import{extensionName}from'../../utils/settings.js';import{DEFAULT_AI_RULE_TEMPLATE,DEFAULT_AI_FLOW_TEMPLATE}from'./settings.js';import{renderTables}from'../../ui/table-bindings.js';import{updateOrInsertTableInChat}from'../../ui/message-table-renderer.js';const TABLE_DATA_KEY='amily2_tables_data';let currentTablesState=null,highlightedCells=new Set(),updatedTables=new Set();function dispatchTableUpdate(_0xa5050a){const _0xbcf5a6=_0x2b91,_0xf1b90d=extension_settings[extensionName]||{};if(_0xf1b90d[_0xbcf5a6(0x2b2)]===![])return;if(!currentTablesState||!currentTablesState[_0xa5050a])return;const _0x3dcf75=currentTablesState[_0xa5050a];let _0x298a97=_0xbcf5a6(0x22b);if(_0x3dcf75['name']['includes']('时空')||_0x3dcf75[_0xbcf5a6(0x26f)][_0xbcf5a6(0x208)]('世界钟'))_0x298a97='anchor';if(_0x3dcf75[_0xbcf5a6(0x26f)][_0xbcf5a6(0x208)]('日志')||_0x3dcf75['name'][_0xbcf5a6(0x208)]('Log'))_0x298a97='log';const _0x3fa276=new CustomEvent(_0xbcf5a6(0x1f9),{'detail':{'tableName':_0x3dcf75['name'],'data':_0x3dcf75[_0xbcf5a6(0x2d0)],'headers':_0x3dcf75[_0xbcf5a6(0x264)],'rowStatuses':_0x3dcf75[_0xbcf5a6(0x266)]||[],'role':_0x298a97}});document['dispatchEvent'](_0x3fa276),log(_0xbcf5a6(0x286)+_0x3dcf75['name'],_0xbcf5a6(0x238));}function _0x2ea6(){const _0x4e4305=['rowIndex','number','stringify','在第\x20','\x20已在边界。','onload','【核心作用】此表格用于精确追踪故事发生的即时时空背景,确保时间与空间的连续性。它应该始终只包含一行,代表当前的“镜头”位置。\x0a【字段详解】\x0a-\x20日期:\x20格式为\x27YYYY-MM-DD\x27。若日期未知,请根据上下文合理推断或设定一个初始日期,如\x27大夏3年-9月-10日\x27。\x0a-\x20时段:\x20严格遵循规定(凌晨:0-5时;早晨:5-8时;上午:8-11时;中午:11-13时;下午:13-16时;傍晚:16-19时;晚上:19-24时)。\x0a-\x20时间:\x20格式为\x27HH:MM\x27。若时间未知,可根据时段估算,如\x2708:30\x27。\x0a-\x20地点:\x20描述当前场景发生的具体位置,应尽可能精确,例如\x27XX街的咖啡馆\x27而非\x27城里\x27。\x0a-\x20此地角色:\x20列出当前场景中所有在场且参与互动的主要角色,用\x27/\x27分隔。','正在尝试从第\x20','【清除全局预设】\x0a\x0a您确定要清除已设置的全局预设吗?\x0a\x0a清除后,新聊天将恢复使用扩展内置的默认表格模板。','Amily2-Table-Preset-v2.0-full','above','填表完成','【说明】:\x0a','1025208vlFThp','files','---','(该表当前内容为空)\x0a','\x20中找不到索引为\x20','|\x20...\x20|\x20','3782634TssCBo','【核心作用】此表格是角色关系和状态的核心数据库,用于记录所有在故事中出现的重要角色的详细信息。\x0a【字段详解】\x0a-\x20角色名:\x20角色的唯一标识。\x0a-\x20外貌:\x20描述五官、发型、发色、肤色等面部特征。\x0a-\x20身形:\x20描述身高、体型、肌肉状况、特殊身体标记(如伤疤)等。\x0a-\x20衣着:\x20描述角色当前或标志性的穿着,包括服装、配饰等。\x0a-\x20性格:\x20概括角色的核心性格特质,使用1-3个关键词,如\x27勇敢/鲁莽/忠诚\x27。\x0a-\x20身份:\x20角色的社会背景或出身,如\x27贵族后裔\x27、\x27流浪者\x27。\x0a-\x20职业:\x20角色赖以谋生的工作或职责,如\x27佣兵\x27、\x27学者\x27。\x0a-\x20与<user>关系:\x20描述该角色与主角<user>之间的社会或情感关系,如\x27盟友\x27、\x27导师\x27、\x27敌人\x27。\x0a-\x20爱好:\x20角色的兴趣和消遣活动。\x0a-\x20住所:\x20角色的常住地。\x0a-\x20其他重要信息:\x20记录任何不属于以上类别但对角色至关重要的信息,如特殊能力、过去的经历等。','创建失败','角色栏','headers','未找到任何表格数据或全局预设,使用默认模板。','rowStatuses','colIndex','【触发条件】当<user>通过括号、旁白或其他明确的“第四面墙”方式,提出关于故事背景、规则或未来走向的指令时,必须记录于此。','状态回退成功,准备重新填表...','UI操作\x20\x22','\x20的表格。',']\x20的列“','below','无需清除,当前未设置任何全局预设。','name','技能效果','聊天记录不足,无法执行回退操作。','columnWidths','columnIndex','物品名','message','\x0a*\x20','removeChild','chat','重命名失败:表格不存在。','\x20中操作。','【触发条件】当以下任一情况发生时,必须更新此行:\x0a1.\x20时间发生显著跳跃(例如,\x27几小时后\x27、\x27第二天\x27)。\x0a2.\x20角色从一个地点移动到另一个地点。\x0a3.\x20场景中关键角色的出入导致在场人员发生变化。','导入成功','任务名','amily2_ai_template','没有可导出的表格数据。','【触发条件】当一个已知技能的效果发生进化、变异或被添加了新的限制/效果时(例如,技能升级),必须更新其“技能效果”描述。','【核心作用】追踪故事中的主要情节线、目标和挑战。只记录对剧情发展有重大影响的“任务”,忽略日常琐事。\x0a【字段详解】\x0a-\x20任务名:\x20任务的简洁概括,如\x27寻找失落的神器\x27。\x0a-\x20类型:\x20任务的分类,如\x27主线\x27、\x27支线\x27、\x27个人\x27、\x27约定\x27。\x0a-\x20详情:\x20对任务目标和背景的简要描述。\x0a-\x20状态:\x20任务的当前进展,如\x27未开始\x27、\x27进行中\x27、\x27已完成\x27、\x27已失败\x27、\x27已取消\x27。\x0a-\x20执行者:\x20负责完成此任务的角色名。\x0a-\x20地点:\x20任务关键环节发生的地点。\x0a-\x20开始时间/结束时间:\x20记录任务的起止时间,格式\x27YYYY-MM-DD\x27,若未结束则结束时间留空。\x0a-\x20结果:\x20任务完成或失败后的最终结果。','batch_filler_rule_template','技能名','导入的预设中缺少指令模板字段,模板将不会被更新。','...]','[SuperMemory]\x20Dispatched\x20update\x20event\x20for\x20','【核心作用】记录那些在故事中具有特殊功能、背景或情感价值的关键物品。普通物品不应记录。\x0a【字段详解】\x0a-\x20物品名:\x20物品的名称。\x0a-\x20类型:\x20物品的分类,如\x27武器\x27、\x27道具\x27、\x27信物\x27、\x27关键物品\x27。\x0a-\x20详情:\x20描述物品的外观、材质和已知功能。\x0a-\x20状态:\x20物品的当前状况,如\x27完好\x27、\x27破损\x27、\x27能量耗尽\x27。\x0a-\x20拥有者:\x20当前持有该物品的角色名。\x0a-\x20重要原因:\x20解释该物品为何重要,例如\x27是解开谜题的钥匙\x27或\x27是母亲的遗物\x27。','charLimitRules',')行以下,但切莫完全删除。】','every',')\x20的第\x20','无法回退:聊天记录不足。','角色名','成功删除了表格\x20','无法创建表格:名为\x20\x22','【增加】:\x20','导入失败:','Amily2-Table-Preset-v3.0-separated_templates','\x20行。','batchFillerRuleTemplate','当前没有设置全局预设。','\x0a---\x0a','表格不存在。','操作成功','导入预设失败:\x20','全局预设已成功导入并保存到扩展设置中。','accept','filter','batchFillerFlowTemplate','未能保存回退状态,操作中止。','18314082vRXQoj','重命名失败','用户取消了导入操作。','forEach','confirm','无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','\x20行位置插入了新行。','【触发条件】当以下情况发生时,应添加新行:\x0a1.\x20角色接下一个明确的、有目标的委托或命令。\x0a2.\x20角色们达成一个具体的、需要在未来执行的约定。\x0a3.\x20角色为自己设定一个长期的、关键性的目标。',')的历史内容已简化并锁定,无需读取或修改。请专注于后续行的内容。\x0a','revokeObjectURL','【触发条件】只能在<user>明确表示要移除或废弃某条设定时,才能删除对应行。','【修改】:\x20','splice','toString','[SuperMemory]\x20Dispatching\x20update\x20events\x20for\x20ALL\x20tables...','表格名称不能为空。','108045tlrbAd','其他重要信息','aiRuleTemplate','super_memory_enabled','已根据AI的指示成功更新表格!','mes','【删除】:\x20','substring','\x0a【系统提示】:表格前\x20','回退状态保存失败,操作中止。','【触发条件】当故事开始,且此表格为空时,必须立即根据初始场景创建第一行。','trim','update',']\x20的顺序已调整。','表格\x20[','无法导出:当前表格状态为空。','version','success','【触发条件】当一个物品被彻底摧毁、消耗完毕或永久失去其特殊意义时,可以删除。','61051JhKmCa',')行,请结合剧情缩减至(','aiFlowTemplate','表格系统总开关已关闭,跳过回退填表。','缺少状态或目标消息,无法保存。','(此处省略未选中的表格内容,仅提供表头供索引参考)\x0a','parse','【触发条件】当两个NPC之间的关系性质发生转变(如从\x27盟友\x27变为\x27背叛者\x27)时,必须更新。','appendChild',')行(','开始时间/结束时间','push',')第(','AI指令错误:尝试在不存在的表格索引\x20','rows','clear','body','immediateDelete','【核心作用】专门用于记录除主角<user>以外的角色之间的复杂人际关系网(NPC\x20to\x20NPC)。\x0a【字段详解】\x0a-\x20主动方:\x20关系的发起者或主体(例如\x27艾克\x27)。\x0a-\x20被动方:\x20关系的接收者或对象(例如\x27莉娜\x27)。\x0a-\x20关系:\x20用简短的词汇描述两者之间的关系本质,如\x27暗恋\x27、\x27世仇\x27、\x27师徒\x27。\x0a-\x20详情:\x20对这段关系的具体描述或背景补充。','【触发条件】当一个有名有姓的角色首次出现,并与<user>或当前剧情发生有意义的互动时,必须为其创建新的一行。','已成功创建新表格:[','插入了新列。','成功将表格\x20','),已智能转换为在表格\x20[','所有表格的行数据已在内存中清空。','fill','\x20条消息中找到基准表格数据。',']\x20在第\x20',']\x20的第\x20',']\x20末尾新增一行。','设定栏',']\x20的表头“','rule_update','已提交并永久删除了\x20','Amily2-','amily2-force-ui-reload','pending-deletion','完整备份','\x20的列。','【触发条件】只能在<user>明确表示要修改某条设定时,才能更新对应行的描述。','charLimitRule','无法找到可锚定的消息或保存失败,新表格可能不会被持久化!','add','\x20|\x0a','\x20行(索引\x200\x20到\x20','dispatchEvent','normal','batch_filler_flow_template','note','【全局预设导入】\x0a\x0a这将把选定的预设设置为所有新聊天的默认表格。\x0a\x0a此操作将覆盖任何已存在的全局预设,是否确定?','simplifyRowThreshold','状态回退失败,已中止操作。','无法移动列:索引\x20','表格顺序调整后的状态已强制写入最新消息并立即保存。','\x22\x20的表格已存在。','6NEZlpI','href','被动方','1998635VMNQts','未能在上一楼找到可用的表格状态,无法回退。','表格\x20\x22','createObjectURL','【触发条件】当一个角色被确认永久性死亡(非假死或失踪),且其存在不再对后续剧情有直接影响时,可以删除该行。','.json',')字限制,请进行缩减。】','\x22\x20已重命名为\x20\x22','文件格式无效或缺少版本号/表格数据。','extra','tables','type','【触发条件】当两个NPC之间展现出明确的、非临时性的人际关系时,应添加新行。','file','Amily2-Table-Preset-v2.0-clean','删除列失败:在表格\x20','插入行失败:找不到索引为\x20','rule_add','AMILY2_TABLE_UPDATED','重命名失败:名称不能为空。','\x20行已恢复。','input','【触发条件】如果发现表格中存在两个描述完全相同的重复技能,应删除其中一个。如果记录了非<user>的技能,应立即删除。','这是一个新创建的表格。','result','导出成功','预设已成功导入并应用。','”已向','...','global_table_preset','limit','warning','isArray','includes','废黜表格后的状态已强制写入最新消息并立即保存。',']\x20已被成功废黜。','download',']\x20新增了一列。','技能栏','4pYkuyg','表格系统总开关已关闭,跳过\x20<Amily2Edit>\x20标签处理。','设置成功','”已更新为“','\x20|\x20','2643683rRnBlH','与<user>关系',')列,字符超出规定(','新表格状态已强制写入最新消息并立即保存。','readAsText','slice','injectionFlowTemplate','warn','\x20行已标记为待删除。',']\x20新增了一行。','用户取消了全局预设导入操作。','join','function','具体描述','size','left','无法清空:当前表格状态为空。','【触发条件】任何时候,如果此表格的行数超过一行,必须删除旧的行,只保留最新、最准确的一行。','【当前(','清空行数据后的状态已强制写入最新消息并立即保存。','table_system_enabled','操作已取消。','rule_delete','导入的表格数据格式不正确:\x20','database','\x20(索引\x20','无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!','加载全局预设失败:\x20','replace','【触发条件】当角色的任何信息发生持久性或关键性变化时,必须更新对应单元格。例如:\x0a1.\x20外貌/身形/衣着发生永久性改变(如断肢、换上新装备)。\x0a2.\x20性格因重大事件而扭转。\x0a3.\x20身份或职业发生变更(如继承王位、被解雇)。\x0a4.\x20与<user>的关系发生根本性转变(如从敌人变为盟友)。','\x20行移动到第\x20','关系栏','toISOString','【核心作用】此表格记录了来自<user>的、超越故事本身的“元指令”或世界观设定,拥有最高解释权。内容应被严格遵守,禁止AI自行修改。\x0a【字段详解】\x0a-\x20类型:\x20指令的分类,如\x27世界观设定\x27、\x27剧情走向要求\x27、\x27角色行为禁令\x27。\x0a-\x20具体描述:\x20完整、准确地记录<user>提出的具体要求。','时空栏','rowLimitRule','some','info','导入全局预设失败:\x20','tableIndex','click','名为\x20\x22','表格系统总开关已关闭,无法执行回退填表。','---已锁定---','AI指令未产生任何实质性变更。','未在聊天记录中找到表格,正在加载全局预设...','导入操作已取消。','移动。','target','aiTemplate','error','全局预设已被清除。','拥有者','createElement','onchange','length','map','表格状态已准备写入消息\x20['];_0x2ea6=function(){return _0x4e4305;};return _0x2ea6();}function dispatchAllTablesUpdate(){const _0x524ccf=_0x2b91;if(!currentTablesState)return;log(_0x524ccf(0x2ad),_0x524ccf(0x238)),currentTablesState['forEach']((_0x3f840b,_0x136917)=>{dispatchTableUpdate(_0x136917);});}export function addHighlight(_0x2ac495,_0xd62f00,_0x4b0f9d){const _0x34a350=_0x2ac495+'-'+_0xd62f00+'-'+_0x4b0f9d;highlightedCells['add'](_0x34a350);}export function getHighlights(){return highlightedCells;}export function clearHighlights(){const _0x4a16b3=_0x2b91;highlightedCells['size']>0x0&&(highlightedCells[_0x4a16b3(0x2d1)](),log('已清除所有单元格高亮标记。',_0x4a16b3(0x238)));}export function getUpdatedTables(){return updatedTables;}export function clearUpdatedTables(){const _0x3df37e=_0x2b91;updatedTables[_0x3df37e(0x221)]>0x0&&(updatedTables['clear'](),log('已清除所有表格的更新标记。',_0x3df37e(0x238)));}export function setMemoryState(_0xc09dee){currentTablesState=_0xc09dee;}export function loadMemoryState(_0x5c3e47){if(!_0x5c3e47)return;setMemoryState(_0x5c3e47),renderTables(),updateOrInsertTableInChat(),log('[SuperMemory]\x20已从元数据恢复内存状态并刷新\x20UI。','info');}export function saveMemoryState(){const _0x17b1ff=_0x2b91,_0x2d2c4c=getContext();if(_0x2d2c4c[_0x17b1ff(0x278)]&&_0x2d2c4c[_0x17b1ff(0x278)][_0x17b1ff(0x24a)]>0x0){const _0x5873f4=_0x2d2c4c[_0x17b1ff(0x278)][_0x2d2c4c['chat'][_0x17b1ff(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x5873f4))return!![];}return![];}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':_0x2c092c(0x235),'headers':['日期','时段','时间','地点','此地角色'],'note':_0x2c092c(0x253),'rule_add':_0x2c092c(0x2b9),'rule_delete':_0x2c092c(0x224),'rule_update':_0x2c092c(0x27b),'charLimitRules':{},'rowLimitRule':0x1,'rows':[]},{'name':_0x2c092c(0x263),'headers':[_0x2c092c(0x28d),'外貌','身形','衣着','性格','身份','职业',_0x2c092c(0x214),'爱好','住所',_0x2c092c(0x2b0)],'note':_0x2c092c(0x261),'rule_add':_0x2c092c(0x2d5),'rule_delete':_0x2c092c(0x300),'rule_update':_0x2c092c(0x230),'charLimitRules':{'10':0x1e},'rowLimitRule':0x0,'rows':[]},{'name':_0x2c092c(0x232),'headers':['主动方',_0x2c092c(0x2fb),'关系','详情'],'columnWidths':[],'note':_0x2c092c(0x2d4),'rule_add':_0x2c092c(0x1f3),'rule_delete':'【触发条件】当两个NPC之间的关系彻底断绝且不再影响剧情,或者其中一方彻底消失/死亡时,可以删除。','rule_update':_0x2c092c(0x2c9),'charLimitRules':{},'rowLimitRule':0x0,'rows':[],'rowStatuses':[]},{'name':'任务栏','headers':[_0x2c092c(0x27d),'类型','详情','状态','执行者','地点',_0x2c092c(0x2cc),'结果'],'note':_0x2c092c(0x281),'rule_add':_0x2c092c(0x2a6),'rule_delete':'【触发条件】当任务列表超过10行时,优先删除最早的、已经“已完成”且与当前剧情关联度最低的任务。如果存在内容完全重复的任务,应删除。','rule_update':'【触发条件】当任务的“状态”发生任何变化时,必须更新。例如,从\x27进行中\x27变为\x27已完成\x27。当任务的“详情”或“结果”有新的关键信息补充时,也应更新。','charLimitRules':{},'rowLimitRule':0xa,'rows':[]},{'name':'物品栏','headers':[_0x2c092c(0x274),'类型','详情','状态',_0x2c092c(0x247),'重要原因'],'note':_0x2c092c(0x287),'rule_add':'【触发条件】当一个物品被明确赋予了特殊意义(如被赠予、在关键事件中扮演重要角色)或展示出独特功能时,应为其创建条目。','rule_delete':_0x2c092c(0x2c1),'rule_update':'【触发条件】当物品的“状态”(如被损坏)、“拥有者”(如被转交或被盗)或“详情”(如发现了新功能)发生变化时,必须更新。','charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x2c092c(0x20d),'headers':[_0x2c092c(0x283),_0x2c092c(0x270)],'note':'【核心作用】专门用于记录主角<user>掌握的各种技能、魔法、被动能力或特殊专长。\x0a【字段详解】\x0a-\x20技能名:\x20技能的正式名称。\x0a-\x20技能效果:\x20清晰、简洁地描述该技能使用时产生的具体效果、消耗和限制条件。','rule_add':'【触发条件】当<user>在故事中首次成功施展或习得一个全新的、表格中未记录的技能时,必须添加。','rule_delete':_0x2c092c(0x1fd),'rule_update':_0x2c092c(0x280),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x2c092c(0x2e0),'headers':['类型',_0x2c092c(0x220)],'note':_0x2c092c(0x234),'rule_add':_0x2c092c(0x268),'rule_delete':_0x2c092c(0x2a9),'rule_update':_0x2c092c(0x2e9),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]}]};function getDefaultTables(){const _0x118005=_0x2c092c;log('从预设模板生成默认表格...',_0x118005(0x238));const _0x48da2b=JSON[_0x118005(0x2c8)](JSON[_0x118005(0x24f)](defaultTemplate['tables']));return _0x48da2b['forEach'](_0x5572d7=>{const _0x377b0b=_0x118005;_0x5572d7[_0x377b0b(0x2ea)]={'columnIndex':-0x1,'limit':0x0},_0x5572d7[_0x377b0b(0x236)]=0x0,_0x5572d7[_0x377b0b(0x272)]=[];}),_0x48da2b;}export function loadTables(_0x2b662c=-0x1){const _0x571a6b=_0x2c092c,_0x23add0=getContext();if(_0x23add0&&_0x23add0[_0x571a6b(0x278)]&&_0x23add0[_0x571a6b(0x278)]['length']>0x0){const _0x323a46=_0x2b662c===-0x1?_0x23add0[_0x571a6b(0x278)][_0x571a6b(0x24a)]-0x1:_0x2b662c-0x1;for(let _0x376573=_0x323a46;_0x376573>=0x0;_0x376573--){const _0x5b87d7=_0x23add0[_0x571a6b(0x278)][_0x376573];if(_0x5b87d7[_0x571a6b(0x1f0)]&&_0x5b87d7[_0x571a6b(0x1f0)][TABLE_DATA_KEY]){log(_0x571a6b(0x250)+_0x376573+_0x571a6b(0x2dc),_0x571a6b(0x238));let _0x50a91d=JSON[_0x571a6b(0x2c8)](JSON['stringify'](_0x5b87d7['extra'][TABLE_DATA_KEY]));return _0x50a91d[_0x571a6b(0x2a2)](_0x5cc23d=>{const _0xe3300d=_0x571a6b;if(_0x5cc23d[_0xe3300d(0x2f2)]===undefined)_0x5cc23d[_0xe3300d(0x2f2)]='无';if(_0x5cc23d[_0xe3300d(0x1f8)]===undefined)_0x5cc23d[_0xe3300d(0x1f8)]='允许';if(_0x5cc23d[_0xe3300d(0x229)]===undefined)_0x5cc23d[_0xe3300d(0x229)]='允许';if(_0x5cc23d[_0xe3300d(0x2e2)]===undefined)_0x5cc23d[_0xe3300d(0x2e2)]='允许';_0x5cc23d[_0xe3300d(0x2ea)]&&!_0x5cc23d[_0xe3300d(0x288)]&&(_0x5cc23d[_0xe3300d(0x288)]={},_0x5cc23d[_0xe3300d(0x2ea)][_0xe3300d(0x273)]!==-0x1&&_0x5cc23d[_0xe3300d(0x2ea)]['limit']>0x0&&(_0x5cc23d[_0xe3300d(0x288)][_0x5cc23d[_0xe3300d(0x2ea)][_0xe3300d(0x273)]]=_0x5cc23d[_0xe3300d(0x2ea)][_0xe3300d(0x205)]));delete _0x5cc23d[_0xe3300d(0x2ea)];if(_0x5cc23d['rowLimitRule']===undefined)_0x5cc23d['rowLimitRule']=0x0;if(_0x5cc23d[_0xe3300d(0x272)]===undefined)_0x5cc23d[_0xe3300d(0x272)]=[];!_0x5cc23d['rowStatuses']&&(_0x5cc23d[_0xe3300d(0x266)]=Array(_0x5cc23d['rows'][_0xe3300d(0x24a)])[_0xe3300d(0x2db)]('normal'));}),currentTablesState=_0x50a91d,dispatchAllTablesUpdate(),currentTablesState;}}}if(extension_settings[extensionName]?.[_0x571a6b(0x204)]){log(_0x571a6b(0x240),'info');try{const _0x327b1b=extension_settings[extensionName][_0x571a6b(0x204)];return currentTablesState=JSON[_0x571a6b(0x2c8)](JSON['stringify'](_0x327b1b[_0x571a6b(0x1f1)])),_0x327b1b[_0x571a6b(0x294)]!==undefined&&saveBatchFillerRuleTemplate(_0x327b1b[_0x571a6b(0x294)]),_0x327b1b[_0x571a6b(0x29d)]!==undefined&&saveBatchFillerFlowTemplate(_0x327b1b[_0x571a6b(0x29d)]),dispatchAllTablesUpdate(),currentTablesState;}catch(_0x4a9f6e){log(_0x571a6b(0x22e)+_0x4a9f6e[_0x571a6b(0x275)],'error');}}return log(_0x571a6b(0x265),_0x571a6b(0x238)),currentTablesState=getDefaultTables(),dispatchAllTablesUpdate(),currentTablesState;}export function saveStateToMessage(_0x5c3f27,_0x9b9aa0){const _0x1d5f6c=_0x2c092c;if(!_0x5c3f27||!_0x9b9aa0)return log(_0x1d5f6c(0x2c6),_0x1d5f6c(0x245)),![];return!_0x9b9aa0[_0x1d5f6c(0x1f0)]&&(_0x9b9aa0[_0x1d5f6c(0x1f0)]={}),_0x9b9aa0[_0x1d5f6c(0x1f0)][TABLE_DATA_KEY]=JSON[_0x1d5f6c(0x2c8)](JSON[_0x1d5f6c(0x24f)](_0x5c3f27)),log(_0x1d5f6c(0x24c)+_0x9b9aa0[_0x1d5f6c(0x2b4)][_0x1d5f6c(0x2b6)](0x0,0x14)+_0x1d5f6c(0x285),'info'),!![];}export function saveTables(_0x430495='未知操作'){const _0xccfd2a=_0x2c092c;return log(_0xccfd2a(0x26a)+_0x430495+'\x22\x20已更新内存状态。',_0xccfd2a(0x238)),!![];}export function deleteColumn(_0x57bf6a,_0x4dcda6){const _0x53a707=_0x2c092c,_0x58c5f8=getMemoryState();if(!_0x58c5f8[_0x57bf6a]||_0x4dcda6<0x0||_0x4dcda6>=_0x58c5f8[_0x57bf6a][_0x53a707(0x264)][_0x53a707(0x24a)]){log(_0x53a707(0x1f6)+_0x57bf6a+_0x53a707(0x25e)+_0x4dcda6+_0x53a707(0x2e8),_0x53a707(0x245));return;}_0x58c5f8[_0x57bf6a][_0x53a707(0x264)][_0x53a707(0x2ab)](_0x4dcda6,0x1),_0x58c5f8[_0x57bf6a][_0x53a707(0x2d0)][_0x53a707(0x2a2)](_0x420e67=>{const _0x2a31f4=_0x53a707;_0x420e67[_0x2a31f4(0x24a)]>_0x4dcda6&&_0x420e67['splice'](_0x4dcda6,0x1);}),_0x58c5f8[_0x57bf6a]['columnWidths']&&_0x58c5f8[_0x57bf6a][_0x53a707(0x272)]['length']>_0x4dcda6&&_0x58c5f8[_0x57bf6a]['columnWidths'][_0x53a707(0x2ab)](_0x4dcda6,0x1),log(_0x53a707(0x28e)+_0x57bf6a+'\x20的第\x20'+(_0x4dcda6+0x1)+'\x20列。',_0x53a707(0x2c0)),saveTables(_0x58c5f8),dispatchTableUpdate(_0x57bf6a);}export function moveRow(_0x4302e1,_0x180056,_0x5a80b0){const _0x55b4ac=_0x2c092c,_0x4b79df=getMemoryState(),_0x9b881a=_0x4b79df[_0x4302e1];if(!_0x9b881a||_0x180056<0x0||_0x180056>=_0x9b881a[_0x55b4ac(0x2d0)][_0x55b4ac(0x24a)])return;const _0x39315e=_0x5a80b0==='up'?_0x180056-0x1:_0x180056+0x1;if(_0x39315e<0x0||_0x39315e>=_0x9b881a[_0x55b4ac(0x2d0)]['length'])return;const [_0x4d5b3b]=_0x9b881a[_0x55b4ac(0x2d0)][_0x55b4ac(0x2ab)](_0x180056,0x1);_0x9b881a['rows']['splice'](_0x39315e,0x0,_0x4d5b3b);if(_0x9b881a[_0x55b4ac(0x266)]&&_0x9b881a[_0x55b4ac(0x266)]['length']===_0x9b881a['rows'][_0x55b4ac(0x24a)]+0x1){const [_0x1f42e6]=_0x9b881a[_0x55b4ac(0x266)][_0x55b4ac(0x2ab)](_0x180056,0x1);_0x9b881a[_0x55b4ac(0x266)][_0x55b4ac(0x2ab)](_0x39315e,0x0,_0x1f42e6);}log(_0x55b4ac(0x2d8)+_0x4302e1+'\x20的第\x20'+(_0x180056+0x1)+_0x55b4ac(0x231)+(_0x39315e+0x1)+_0x55b4ac(0x293),_0x55b4ac(0x2c0)),saveTables(_0x4b79df),dispatchTableUpdate(_0x4302e1);}export function insertRow(_0x49ff5a,_0x2ceb98,_0x5eedb8=_0x2c092c(0x26d)){const _0x24907f=_0x2c092c,_0x354486=getMemoryState(),_0x5dbf2a=_0x354486[_0x49ff5a];if(!_0x5dbf2a){log(_0x24907f(0x1f7)+_0x49ff5a+_0x24907f(0x26b),'error');return;}let _0x672df0;typeof _0x2ceb98===_0x24907f(0x24e)?_0x672df0=_0x5eedb8===_0x24907f(0x257)?_0x2ceb98:_0x2ceb98+0x1:_0x672df0=_0x5dbf2a['rows']['length'];if(_0x672df0<0x0)_0x672df0=0x0;if(_0x672df0>_0x5dbf2a[_0x24907f(0x2d0)][_0x24907f(0x24a)])_0x672df0=_0x5dbf2a[_0x24907f(0x2d0)][_0x24907f(0x24a)];const _0x26949c=new Array(_0x5dbf2a[_0x24907f(0x264)][_0x24907f(0x24a)])[_0x24907f(0x2db)]('');if(typeof _0x2ceb98==='object'&&_0x2ceb98!==null)for(const _0x28eac6 in _0x2ceb98){const _0x5c4dfa=parseInt(_0x28eac6,0xa);!isNaN(_0x5c4dfa)&&_0x5c4dfa<_0x26949c[_0x24907f(0x24a)]&&(_0x26949c[_0x5c4dfa]=_0x2ceb98[_0x28eac6],addHighlight(_0x49ff5a,_0x672df0,_0x5c4dfa));}_0x5dbf2a['rows'][_0x24907f(0x2ab)](_0x672df0,0x0,_0x26949c);if(!_0x5dbf2a[_0x24907f(0x266)])_0x5dbf2a[_0x24907f(0x266)]=Array(_0x5dbf2a[_0x24907f(0x2d0)]['length'])[_0x24907f(0x2db)](_0x24907f(0x2f0));_0x5dbf2a['rowStatuses'][_0x24907f(0x2ab)](_0x672df0,0x0,_0x24907f(0x2f0)),updatedTables[_0x24907f(0x2ec)](_0x49ff5a),dispatchTableUpdate(_0x49ff5a),log('成功在表格\x20'+_0x5dbf2a[_0x24907f(0x26f)]+_0x24907f(0x22c)+_0x49ff5a+_0x24907f(0x28b)+(_0x672df0+0x1)+_0x24907f(0x2a5),'success');const _0x427de5=getContext();if(_0x427de5[_0x24907f(0x278)]&&_0x427de5['chat'][_0x24907f(0x24a)]>0x0){const _0x5d6127=_0x427de5[_0x24907f(0x278)][_0x427de5[_0x24907f(0x278)][_0x24907f(0x24a)]-0x1];if(saveStateToMessage(_0x354486,_0x5d6127)){saveChat();return;}}saveChatDebounced();}export function addRow(_0x458455){const _0x367343=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x458455])return;const _0x5e8ffa=currentTablesState[_0x458455],_0x452377=_0x5e8ffa[_0x367343(0x264)][_0x367343(0x24a)],_0x2da85e=Array(_0x452377)[_0x367343(0x2db)]('');_0x5e8ffa[_0x367343(0x2d0)][_0x367343(0x2cd)](_0x2da85e);if(!_0x5e8ffa[_0x367343(0x266)])_0x5e8ffa[_0x367343(0x266)]=Array(_0x5e8ffa['rows']['length'])[_0x367343(0x2db)](_0x367343(0x2f0));_0x5e8ffa['rowStatuses'][_0x367343(0x2cd)](_0x367343(0x2f0)),updatedTables[_0x367343(0x2ec)](_0x458455),dispatchTableUpdate(_0x458455);const _0x2d4ef6=_0x367343(0x2bd)+_0x5e8ffa[_0x367343(0x26f)]+_0x367343(0x21c);log(_0x2d4ef6,_0x367343(0x238));const _0xaa0367=getContext();if(_0xaa0367[_0x367343(0x278)]&&_0xaa0367[_0x367343(0x278)][_0x367343(0x24a)]>0x0){const _0x386e99=_0xaa0367['chat'][_0xaa0367[_0x367343(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x386e99)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x2f5df8){const _0x4d98d0=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x2f5df8])return;const _0x16df56=currentTablesState[_0x2f5df8],_0x5da21='新列\x20'+(_0x16df56['headers']['length']+0x1);_0x16df56['headers'][_0x4d98d0(0x2cd)](_0x5da21),_0x16df56[_0x4d98d0(0x2d0)]['forEach'](_0x512ac7=>_0x512ac7[_0x4d98d0(0x2cd)](''));if(!_0x16df56[_0x4d98d0(0x272)])_0x16df56[_0x4d98d0(0x272)]=[];_0x16df56[_0x4d98d0(0x272)]['push'](null);const _0x53b740=_0x4d98d0(0x2bd)+_0x16df56[_0x4d98d0(0x26f)]+_0x4d98d0(0x20c);log(_0x53b740,_0x4d98d0(0x238));const _0x48ed46=getContext();if(_0x48ed46['chat']&&_0x48ed46['chat']['length']>0x0){const _0x1b7ee1=_0x48ed46[_0x4d98d0(0x278)][_0x48ed46[_0x4d98d0(0x278)][_0x4d98d0(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x1b7ee1)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x5f10b6,_0x420932,_0x52f634){const _0x6ec151=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x5f10b6]||currentTablesState[_0x5f10b6][_0x6ec151(0x264)][_0x420932]===undefined)return;const _0x2351cb=currentTablesState[_0x5f10b6]['name'],_0x275f2a=currentTablesState[_0x5f10b6][_0x6ec151(0x264)][_0x420932];currentTablesState[_0x5f10b6][_0x6ec151(0x264)][_0x420932]=_0x52f634;const _0x1dc354='表格\x20['+_0x2351cb+_0x6ec151(0x2e1)+_0x275f2a+_0x6ec151(0x211)+_0x52f634+'”。';log(_0x1dc354,_0x6ec151(0x238));const _0x1d7505=getContext();if(_0x1d7505[_0x6ec151(0x278)]&&_0x1d7505['chat'][_0x6ec151(0x24a)]>0x0){const _0x2bfac2=_0x1d7505[_0x6ec151(0x278)][_0x1d7505[_0x6ec151(0x278)][_0x6ec151(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x2bfac2)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0x168c44,_0x39b4ab){const _0x428adc=_0x2c092c,_0x5a9d51=currentTablesState?.[_0x168c44];if(!_0x5a9d51||!_0x5a9d51[_0x428adc(0x2d0)][_0x39b4ab])return;!_0x5a9d51['rowStatuses']&&(_0x5a9d51[_0x428adc(0x266)]=Array(_0x5a9d51[_0x428adc(0x2d0)][_0x428adc(0x24a)])['fill'](_0x428adc(0x2f0)));_0x5a9d51[_0x428adc(0x266)][_0x39b4ab]=_0x428adc(0x2e6),updatedTables[_0x428adc(0x2ec)](_0x168c44);const _0xa3dcdf='表格\x20['+_0x5a9d51[_0x428adc(0x26f)]+']\x20的第\x20'+(_0x39b4ab+0x1)+_0x428adc(0x21b);log(_0xa3dcdf,_0x428adc(0x238));const _0x2d2a4f=getContext();if(_0x2d2a4f[_0x428adc(0x278)]?.[_0x428adc(0x24a)]>0x0){const _0x1380f9=_0x2d2a4f[_0x428adc(0x278)][_0x2d2a4f[_0x428adc(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x1380f9)){await saveChat(),renderTables(),dispatchTableUpdate(_0x168c44);return;}}await saveChatDebounced(),renderTables(),dispatchTableUpdate(_0x168c44);}export async function restoreRow(_0x339e1a,_0x5e4eff){const _0x70b263=_0x2c092c,_0xebdbf8=currentTablesState?.[_0x339e1a];if(!_0xebdbf8||!_0xebdbf8[_0x70b263(0x2d0)][_0x5e4eff]||!_0xebdbf8[_0x70b263(0x266)])return;_0xebdbf8[_0x70b263(0x266)][_0x5e4eff]=_0x70b263(0x2f0),updatedTables['add'](_0x339e1a);const _0x2e1ff1=_0x70b263(0x2bd)+_0xebdbf8['name']+_0x70b263(0x2de)+(_0x5e4eff+0x1)+_0x70b263(0x1fb);log(_0x2e1ff1,_0x70b263(0x238));const _0x41983f=getContext();if(_0x41983f[_0x70b263(0x278)]?.[_0x70b263(0x24a)]>0x0){const _0x48593f=_0x41983f[_0x70b263(0x278)][_0x41983f['chat'][_0x70b263(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x48593f)){await saveChat(),renderTables(),dispatchTableUpdate(_0x339e1a);return;}}await saveChatDebounced(),renderTables(),dispatchTableUpdate(_0x339e1a);}export function commitPendingDeletions(){const _0x3fe730=_0x2c092c;if(!currentTablesState)return![];let _0x24c675=0x0;currentTablesState['forEach']((_0x46d05a,_0xe22879)=>{const _0x213618=_0x2b91;if(!_0x46d05a[_0x213618(0x266)]||_0x46d05a[_0x213618(0x266)]['length']===0x0)return;let _0x1e0788=![];for(let _0x523411=_0x46d05a['rows']['length']-0x1;_0x523411>=0x0;_0x523411--){_0x46d05a[_0x213618(0x266)][_0x523411]===_0x213618(0x2e6)&&(_0x46d05a['rows'][_0x213618(0x2ab)](_0x523411,0x1),_0x46d05a[_0x213618(0x266)][_0x213618(0x2ab)](_0x523411,0x1),_0x24c675++,_0x1e0788=!![]);}_0x1e0788&&updatedTables[_0x213618(0x2ec)](_0xe22879);});if(_0x24c675>0x0)return log(_0x3fe730(0x2e3)+_0x24c675+_0x3fe730(0x293),_0x3fe730(0x238)),updatedTables['size']>0x0&&updatedTables['forEach'](_0xe9d50f=>{dispatchTableUpdate(_0xe9d50f);}),!![];return![];}export function insertColumn(_0x361835,_0x180f57,_0x503e64){const _0x44ef80=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x361835])return;const _0x5ede4d=currentTablesState[_0x361835],_0x402366=_0x503e64===_0x44ef80(0x222)?_0x180f57:_0x180f57+0x1,_0x4efab1='新列';_0x5ede4d[_0x44ef80(0x264)][_0x44ef80(0x2ab)](_0x402366,0x0,_0x4efab1),_0x5ede4d[_0x44ef80(0x2d0)][_0x44ef80(0x2a2)](_0x44551f=>_0x44551f[_0x44ef80(0x2ab)](_0x402366,0x0,''));if(!_0x5ede4d['columnWidths'])_0x5ede4d[_0x44ef80(0x272)]=[];_0x5ede4d[_0x44ef80(0x272)][_0x44ef80(0x2ab)](_0x402366,0x0,null);const _0x1197fd=_0x44ef80(0x2bd)+_0x5ede4d[_0x44ef80(0x26f)]+_0x44ef80(0x2dd)+(_0x180f57+0x1)+'\x20列的'+(_0x503e64===_0x44ef80(0x222)?'左侧':'右侧')+_0x44ef80(0x2d7);log(_0x1197fd,'info');const _0x3c5220=getContext();if(_0x3c5220[_0x44ef80(0x278)]&&_0x3c5220[_0x44ef80(0x278)][_0x44ef80(0x24a)]>0x0){const _0xd24625=_0x3c5220[_0x44ef80(0x278)][_0x3c5220[_0x44ef80(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0xd24625)){saveChat();return;}}saveChatDebounced();}export function moveColumn(_0x17723e,_0x326a58,_0x3db72e){const _0x5a9cef=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x17723e])return;const _0x30e7e5=currentTablesState[_0x17723e],_0x39349b=_0x30e7e5[_0x5a9cef(0x264)],_0x2bf881=_0x30e7e5[_0x5a9cef(0x2d0)],_0x10d543=_0x3db72e===_0x5a9cef(0x222)?_0x326a58-0x1:_0x326a58+0x1;if(_0x10d543<0x0||_0x10d543>=_0x39349b[_0x5a9cef(0x24a)]){log(_0x5a9cef(0x2f6)+_0x326a58+_0x5a9cef(0x251),'warn');return;}const [_0x3b61fb]=_0x39349b[_0x5a9cef(0x2ab)](_0x326a58,0x1);_0x39349b[_0x5a9cef(0x2ab)](_0x10d543,0x0,_0x3b61fb),_0x2bf881[_0x5a9cef(0x2a2)](_0x1f9bb9=>{const _0x8355f0=_0x5a9cef,[_0x476d10]=_0x1f9bb9['splice'](_0x326a58,0x1);_0x1f9bb9[_0x8355f0(0x2ab)](_0x10d543,0x0,_0x476d10);});if(_0x30e7e5['columnWidths']&&_0x30e7e5[_0x5a9cef(0x272)]['length']>_0x326a58){const [_0x340376]=_0x30e7e5[_0x5a9cef(0x272)][_0x5a9cef(0x2ab)](_0x326a58,0x1);_0x30e7e5['columnWidths']['splice'](_0x10d543,0x0,_0x340376);}const _0x253a27=_0x5a9cef(0x2bd)+_0x30e7e5['name']+_0x5a9cef(0x26c)+_0x3b61fb+_0x5a9cef(0x202)+(_0x3db72e==='left'?'左':'右')+_0x5a9cef(0x242);log(_0x253a27,_0x5a9cef(0x238));const _0x3bc14a=getContext();if(_0x3bc14a['chat']&&_0x3bc14a[_0x5a9cef(0x278)][_0x5a9cef(0x24a)]>0x0){const _0x583dd5=_0x3bc14a[_0x5a9cef(0x278)][_0x3bc14a[_0x5a9cef(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x583dd5)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0xea6220){const _0x25e31a=_0x2c092c;if(!currentTablesState||!currentTablesState[_0xea6220])return;const _0x3e4a27=currentTablesState[_0xea6220][_0x25e31a(0x26f)];currentTablesState['splice'](_0xea6220,0x1);const _0x185347=_0x25e31a(0x2bd)+_0x3e4a27+_0x25e31a(0x20a);log(_0x185347,_0x25e31a(0x2c0));const _0x95ba5=getContext();if(_0x95ba5[_0x25e31a(0x278)]&&_0x95ba5[_0x25e31a(0x278)][_0x25e31a(0x24a)]>0x0){const _0x1a7ba6=_0x95ba5[_0x25e31a(0x278)][_0x95ba5[_0x25e31a(0x278)][_0x25e31a(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x1a7ba6)){saveChat(),log(_0x25e31a(0x209),_0x25e31a(0x2c0));return;}}log(_0x25e31a(0x22d),_0x25e31a(0x245)),saveChatDebounced();}export function addTable(_0x9f8776){const _0x2a667f=_0x2c092c;if(!_0x9f8776||!_0x9f8776[_0x2a667f(0x2ba)]()){log('无法创建表格:名称不能为空。',_0x2a667f(0x245)),toastr[_0x2a667f(0x245)]('表格名称不能为空。','创建失败');return;}!currentTablesState&&loadTables();if(currentTablesState[_0x2a667f(0x237)](_0x1dd7af=>_0x1dd7af['name']===_0x9f8776[_0x2a667f(0x2ba)]())){log(_0x2a667f(0x28f)+_0x9f8776+'\x22\x20的表格已存在。',_0x2a667f(0x245)),toastr[_0x2a667f(0x245)](_0x2a667f(0x23c)+_0x9f8776+_0x2a667f(0x2f8),_0x2a667f(0x262));return;}const _0x546cef={'name':_0x9f8776[_0x2a667f(0x2ba)](),'headers':['新列\x201'],'rows':[],'rowStatuses':[],'columnWidths':[],'note':_0x2a667f(0x1fe),'rule_add':'允许','rule_delete':'允许','rule_update':'允许','charLimitRules':{},'rowLimitRule':0x0};currentTablesState[_0x2a667f(0x2cd)](_0x546cef);const _0x1a7267=_0x2a667f(0x2d6)+_0x9f8776[_0x2a667f(0x2ba)]()+']。';log(_0x1a7267,_0x2a667f(0x2c0));const _0x56b19a=getContext();if(_0x56b19a[_0x2a667f(0x278)]&&_0x56b19a[_0x2a667f(0x278)][_0x2a667f(0x24a)]>0x0){const _0x59bea3=_0x56b19a[_0x2a667f(0x278)][_0x56b19a[_0x2a667f(0x278)][_0x2a667f(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x59bea3)){saveChat(),log(_0x2a667f(0x216),_0x2a667f(0x2c0));return;}}log(_0x2a667f(0x2eb),_0x2a667f(0x245)),saveChatDebounced();}export function renameTable(_0x2d61ff,_0x83f978){const _0x1dc8eb=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x2d61ff]){log(_0x1dc8eb(0x279),'error'),toastr[_0x1dc8eb(0x245)](_0x1dc8eb(0x297),'重命名失败');return;}const _0x2a8cde=_0x83f978[_0x1dc8eb(0x2ba)]();if(!_0x2a8cde){log(_0x1dc8eb(0x1fa),_0x1dc8eb(0x245)),toastr[_0x1dc8eb(0x245)](_0x1dc8eb(0x2ae),'重命名失败');return;}if(currentTablesState[_0x1dc8eb(0x237)]((_0x1bd895,_0x1d5b70)=>_0x1d5b70!==_0x2d61ff&&_0x1bd895['name']===_0x2a8cde)){log('重命名失败:名为\x20\x22'+_0x2a8cde+'\x22\x20的表格已存在。','error'),toastr[_0x1dc8eb(0x245)](_0x1dc8eb(0x23c)+_0x2a8cde+'\x22\x20的表格已存在。',_0x1dc8eb(0x2a0));return;}const _0x51252b=currentTablesState[_0x2d61ff][_0x1dc8eb(0x26f)];currentTablesState[_0x2d61ff]['name']=_0x2a8cde,log(_0x1dc8eb(0x2fe)+_0x51252b+_0x1dc8eb(0x303)+_0x2a8cde+'\x22。',_0x1dc8eb(0x2c0));const _0x4a8f7a=getContext();if(_0x4a8f7a[_0x1dc8eb(0x278)]&&_0x4a8f7a[_0x1dc8eb(0x278)][_0x1dc8eb(0x24a)]>0x0){const _0x424baf=_0x4a8f7a[_0x1dc8eb(0x278)][_0x4a8f7a[_0x1dc8eb(0x278)][_0x1dc8eb(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x424baf)){saveChat();return;}}saveChatDebounced();}export function moveTable(_0x1aa21f,_0x479179){const _0x528226=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x1aa21f])return;const _0x4a121a=_0x479179==='up'?_0x1aa21f-0x1:_0x1aa21f+0x1;if(_0x4a121a<0x0||_0x4a121a>=currentTablesState[_0x528226(0x24a)]){log('无法移动表格:索引\x20'+_0x1aa21f+_0x528226(0x251),'warn');return;}const _0x457ee2=currentTablesState[_0x1aa21f];currentTablesState[_0x1aa21f]=currentTablesState[_0x4a121a],currentTablesState[_0x4a121a]=_0x457ee2;const _0x2463b7=_0x528226(0x2bd)+_0x457ee2[_0x528226(0x26f)]+_0x528226(0x2bc);log(_0x2463b7,'success');const _0x168c7b=getContext();if(_0x168c7b[_0x528226(0x278)]&&_0x168c7b[_0x528226(0x278)][_0x528226(0x24a)]>0x0){const _0x3976e9=_0x168c7b[_0x528226(0x278)][_0x168c7b[_0x528226(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x3976e9)){saveChat(),log(_0x528226(0x2f7),_0x528226(0x2c0));return;}}log('无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!',_0x528226(0x245)),saveChatDebounced();}export function updateTableRules(_0x565701,_0x59b7d5){const _0x4428a8=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x565701])return;const _0x33cc27=currentTablesState[_0x565701];_0x33cc27[_0x4428a8(0x2f2)]=_0x59b7d5[_0x4428a8(0x2f2)],_0x33cc27[_0x4428a8(0x1f8)]=_0x59b7d5['rule_add'],_0x33cc27[_0x4428a8(0x229)]=_0x59b7d5[_0x4428a8(0x229)],_0x33cc27['rule_update']=_0x59b7d5['rule_update'],_0x33cc27[_0x4428a8(0x288)]=_0x59b7d5[_0x4428a8(0x288)],_0x33cc27[_0x4428a8(0x236)]=_0x59b7d5[_0x4428a8(0x236)],_0x33cc27['simplifyRowThreshold']=_0x59b7d5[_0x4428a8(0x2f4)],delete _0x33cc27[_0x4428a8(0x2ea)];const _0x3060e0=_0x4428a8(0x2bd)+_0x33cc27[_0x4428a8(0x26f)]+']\x20的规则已更新。';log(_0x3060e0,_0x4428a8(0x238));const _0x5e140e=getContext();if(_0x5e140e[_0x4428a8(0x278)]&&_0x5e140e[_0x4428a8(0x278)][_0x4428a8(0x24a)]>0x0){const _0x4f98ae=_0x5e140e[_0x4428a8(0x278)][_0x5e140e[_0x4428a8(0x278)][_0x4428a8(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x4f98ae)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x3b304e,_0x3d3cbd,_0x1933e3){const _0x55d584=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x3b304e]){log(_0x55d584(0x2cf)+_0x3b304e+_0x55d584(0x27a),'error');return;}const _0x1f1ff0=currentTablesState[_0x3b304e];if(_0x3d3cbd>=_0x1f1ff0[_0x55d584(0x2d0)][_0x55d584(0x24a)]){log('AI指令意图更新不存在的行\x20(rowIndex:\x20'+_0x3d3cbd+_0x55d584(0x2d9)+_0x1f1ff0['name']+_0x55d584(0x2df),'warn'),insertRow(_0x3b304e,_0x1933e3);return;}const _0x50ba0b=_0x1f1ff0[_0x55d584(0x2d0)][_0x3d3cbd];for(const _0x278db5 in _0x1933e3){const _0x5cdabc=parseInt(_0x278db5,0xa);_0x5cdabc<_0x50ba0b[_0x55d584(0x24a)]&&(_0x50ba0b[_0x5cdabc]=_0x1933e3[_0x5cdabc],addHighlight(_0x3b304e,_0x3d3cbd,_0x5cdabc));}updatedTables[_0x55d584(0x2ec)](_0x3b304e),dispatchTableUpdate(_0x3b304e);const _0x4d33b6='AI\x20指令更新了表格\x20['+_0x1f1ff0[_0x55d584(0x26f)]+']\x20的第\x20'+(_0x3d3cbd+0x1)+_0x55d584(0x293);log(_0x4d33b6,_0x55d584(0x238));const _0x30e8e2=getContext();if(_0x30e8e2[_0x55d584(0x278)]&&_0x30e8e2[_0x55d584(0x278)][_0x55d584(0x24a)]>0x0){const _0x2c4467=_0x30e8e2['chat'][_0x30e8e2[_0x55d584(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x2c4467)){saveChat();return;}}saveChatDebounced();}export function clearAllTables(){const _0x37ec58=_0x2c092c;if(!currentTablesState){log(_0x37ec58(0x223),_0x37ec58(0x245));return;}currentTablesState[_0x37ec58(0x2a2)]((_0x2b024b,_0x35be0f)=>{const _0x85743b=_0x37ec58;_0x2b024b[_0x85743b(0x2d0)][_0x85743b(0x24a)]>0x0&&updatedTables[_0x85743b(0x2ec)](_0x35be0f),_0x2b024b[_0x85743b(0x2d0)]=[],_0x2b024b[_0x85743b(0x266)]=[];}),log(_0x37ec58(0x2da),_0x37ec58(0x21a)),dispatchAllTablesUpdate();const _0x2a0d57=getContext();if(_0x2a0d57[_0x37ec58(0x278)]&&_0x2a0d57[_0x37ec58(0x278)][_0x37ec58(0x24a)]>0x0){const _0x128ac6=_0x2a0d57[_0x37ec58(0x278)][_0x2a0d57[_0x37ec58(0x278)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x128ac6)){saveChat(),log(_0x37ec58(0x226),_0x37ec58(0x2c0)),toastr[_0x37ec58(0x2c0)]('所有表格的剧情内容已清空。','操作完成');return;}}log(_0x37ec58(0x2a4),_0x37ec58(0x245)),saveChatDebounced();}function checkTableRules(_0x4de977){const _0x2adeb3=_0x2c092c;let _0x380514=[];_0x4de977['rowLimitRule']&&_0x4de977[_0x2adeb3(0x236)]>0x0&&_0x4de977['rows']['length']>_0x4de977[_0x2adeb3(0x236)]&&_0x380514[_0x2adeb3(0x2cd)](_0x2adeb3(0x225)+_0x4de977['name']+')超出规定('+_0x4de977[_0x2adeb3(0x236)]+_0x2adeb3(0x2c3)+_0x4de977[_0x2adeb3(0x236)]+_0x2adeb3(0x289));const _0x2a03d4=_0x4de977[_0x2adeb3(0x288)]||{};for(const _0x46cb0d in _0x2a03d4){const _0x538c6d=parseInt(_0x46cb0d,0xa),_0x1d27e2=_0x2a03d4[_0x538c6d];if(_0x1d27e2>0x0&&_0x538c6d>=0x0&&_0x538c6d<_0x4de977['headers'][_0x2adeb3(0x24a)]){const _0x5db2f0=_0x4de977[_0x2adeb3(0x264)][_0x538c6d],_0x4fb9e4=[];_0x4de977[_0x2adeb3(0x2d0)][_0x2adeb3(0x2a2)]((_0x2ccec0,_0x5496e5)=>{const _0x173536=_0x2adeb3;if(_0x4de977[_0x173536(0x266)]&&_0x4de977[_0x173536(0x266)][_0x5496e5]===_0x173536(0x2e6))return;const _0x264435=_0x2ccec0[_0x538c6d]||'';_0x264435['length']>_0x1d27e2&&_0x4fb9e4[_0x173536(0x2cd)](_0x5496e5);});if(_0x4fb9e4[_0x2adeb3(0x24a)]>0x0){const _0x2c82bb=_0x4fb9e4[_0x2adeb3(0x21e)]('、');_0x380514['push'](_0x2adeb3(0x225)+_0x4de977[_0x2adeb3(0x26f)]+_0x2adeb3(0x2ce)+_0x2c82bb+_0x2adeb3(0x2cb)+_0x5db2f0+_0x2adeb3(0x215)+_0x1d27e2+_0x2adeb3(0x302));}}}return _0x380514[_0x2adeb3(0x21e)]('\x0a');}export function convertTablesToCsvString(){const _0x38e676=_0x2c092c;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x37ed1a='';return currentTablesState[_0x38e676(0x2a2)]((_0x5bd493,_0x28bf23)=>{const _0x19d940=_0x38e676;_0x37ed1a+=_0x19d940(0x276)+_0x28bf23+':'+_0x5bd493[_0x19d940(0x26f)]+'\x0a',_0x37ed1a+=_0x19d940(0x259)+(_0x5bd493[_0x19d940(0x2f2)]||'无')+'\x0a';const _0x375112=_0x5bd493[_0x19d940(0x26f)][_0x19d940(0x22f)](/\s/g,'')+'内容';_0x37ed1a+='<'+_0x375112+'>\x0a';const _0x4ff340=[_0x19d940(0x24d),..._0x5bd493[_0x19d940(0x264)][_0x19d940(0x24b)]((_0x32a023,_0x1efd74)=>_0x1efd74+':'+_0x32a023)];_0x37ed1a+='|\x20'+_0x4ff340[_0x19d940(0x21e)](_0x19d940(0x212))+_0x19d940(0x2ed),_0x37ed1a+='|'+_0x4ff340[_0x19d940(0x24b)](()=>_0x19d940(0x25c))['join']('|')+'|\x0a';const _0x3fe7d5=_0x5bd493[_0x19d940(0x2d0)][_0x19d940(0x29c)]((_0x4ee16b,_0x1aee4e)=>!_0x5bd493[_0x19d940(0x266)]||_0x5bd493[_0x19d940(0x266)][_0x1aee4e]!==_0x19d940(0x2e6));if(_0x3fe7d5['length']===0x0)_0x37ed1a+=_0x19d940(0x25d);else{const _0x118ab3=_0x5bd493[_0x19d940(0x2f4)]||0x0;let _0x3fc267=0x0;_0x5bd493['rows'][_0x19d940(0x2a2)]((_0x1c721a,_0x20a614)=>{const _0x97cb79=_0x19d940;if(_0x5bd493[_0x97cb79(0x266)]&&_0x5bd493[_0x97cb79(0x266)][_0x20a614]==='pending-deletion')return;if(_0x118ab3>0x0&&_0x20a614<_0x118ab3){if(_0x3fc267===0x0){const _0x3e8cf4=_0x1c721a['map'](()=>_0x97cb79(0x23e));_0x37ed1a+='|\x20'+_0x20a614+_0x97cb79(0x212)+_0x3e8cf4[_0x97cb79(0x21e)](_0x97cb79(0x212))+_0x97cb79(0x2ed),_0x37ed1a+=_0x97cb79(0x25f)+_0x1c721a[_0x97cb79(0x24b)](()=>'...')['join']('\x20|\x20')+'\x20|\x0a';}if(_0x20a614===_0x118ab3-0x1){const _0x577161=_0x1c721a[_0x97cb79(0x24b)](()=>_0x97cb79(0x23e));_0x37ed1a+='|\x20'+_0x20a614+_0x97cb79(0x212)+_0x577161[_0x97cb79(0x21e)]('\x20|\x20')+_0x97cb79(0x2ed);}_0x3fc267++;return;}if(Array[_0x97cb79(0x207)](_0x1c721a)){const _0x1cc486=_0x1c721a[_0x97cb79(0x24b)](_0x1f46f3=>{const _0x126e9e=_0x97cb79,_0x2b6d7c=_0x1f46f3===null||_0x1f46f3===undefined||_0x1f46f3===''?'未知':String(_0x1f46f3);return _0x2b6d7c[_0x126e9e(0x22f)](/\|/g,'|');});_0x37ed1a+='|\x20'+_0x20a614+'\x20|\x20'+_0x1cc486[_0x97cb79(0x21e)]('\x20|\x20')+_0x97cb79(0x2ed);}}),_0x3fc267>0x0&&(_0x37ed1a+=_0x19d940(0x2b7)+_0x3fc267+_0x19d940(0x2ee)+(_0x3fc267-0x1)+_0x19d940(0x2a7));}const _0x43337a=checkTableRules(_0x5bd493);_0x43337a&&(_0x37ed1a+=_0x43337a+'\x0a'),_0x37ed1a+='</'+_0x375112+'>\x0a',_0x37ed1a+=_0x19d940(0x290)+(_0x5bd493[_0x19d940(0x1f8)]||'允许')+'\x0a',_0x37ed1a+=_0x19d940(0x2b5)+(_0x5bd493['rule_delete']||'允许')+'\x0a',_0x37ed1a+=_0x19d940(0x2aa)+(_0x5bd493[_0x19d940(0x2e2)]||'允许')+'\x0a',_0x28bf23<currentTablesState['length']-0x1&&(_0x37ed1a+=_0x19d940(0x296));}),_0x37ed1a;}export function convertSelectedTablesToCsvString(_0x4f76c0){const _0x435030=_0x2c092c;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x434105='';return currentTablesState[_0x435030(0x2a2)]((_0x4ab1e9,_0x5985bf)=>{const _0x498418=_0x435030,_0x3f769f=_0x4f76c0[_0x498418(0x208)](_0x5985bf);_0x434105+='\x0a*\x20'+_0x5985bf+':'+_0x4ab1e9[_0x498418(0x26f)];!_0x3f769f&&(_0x434105+='\x20(本表格无需重新整理,仅供参考)');_0x434105+='\x0a',_0x434105+=_0x498418(0x259)+(_0x4ab1e9[_0x498418(0x2f2)]||'无')+'\x0a';const _0x599cda=_0x4ab1e9[_0x498418(0x26f)]['replace'](/\s/g,'')+'内容';_0x434105+='<'+_0x599cda+'>\x0a';const _0x3f682b=[_0x498418(0x24d),..._0x4ab1e9[_0x498418(0x264)]['map']((_0x3f72be,_0x38a1aa)=>_0x38a1aa+':'+_0x3f72be)];_0x434105+='|\x20'+_0x3f682b[_0x498418(0x21e)](_0x498418(0x212))+_0x498418(0x2ed),_0x434105+='|'+_0x3f682b[_0x498418(0x24b)](()=>_0x498418(0x25c))[_0x498418(0x21e)]('|')+'|\x0a';if(_0x3f769f){const _0xbc44a5=_0x4ab1e9['rows'][_0x498418(0x29c)]((_0x4b32c2,_0x29fe1c)=>!_0x4ab1e9[_0x498418(0x266)]||_0x4ab1e9[_0x498418(0x266)][_0x29fe1c]!==_0x498418(0x2e6));if(_0xbc44a5[_0x498418(0x24a)]===0x0)_0x434105+=_0x498418(0x25d);else{const _0x346468=_0x4ab1e9[_0x498418(0x2f4)]||0x0;let _0x2296df=0x0;_0x4ab1e9[_0x498418(0x2d0)][_0x498418(0x2a2)]((_0x653963,_0x300211)=>{const _0x2de453=_0x498418;if(_0x4ab1e9[_0x2de453(0x266)]&&_0x4ab1e9[_0x2de453(0x266)][_0x300211]===_0x2de453(0x2e6))return;if(_0x346468>0x0&&_0x300211<_0x346468){if(_0x2296df===0x0){const _0x20e5c3=_0x653963[_0x2de453(0x24b)](()=>_0x2de453(0x23e));_0x434105+='|\x20'+_0x300211+'\x20|\x20'+_0x20e5c3[_0x2de453(0x21e)](_0x2de453(0x212))+_0x2de453(0x2ed),_0x434105+=_0x2de453(0x25f)+_0x653963['map'](()=>_0x2de453(0x203))[_0x2de453(0x21e)]('\x20|\x20')+'\x20|\x0a';}if(_0x300211===_0x346468-0x1){const _0x578585=_0x653963[_0x2de453(0x24b)](()=>'---已锁定---');_0x434105+='|\x20'+_0x300211+_0x2de453(0x212)+_0x578585[_0x2de453(0x21e)]('\x20|\x20')+_0x2de453(0x2ed);}_0x2296df++;return;}if(Array[_0x2de453(0x207)](_0x653963)){const _0x44476c=_0x653963[_0x2de453(0x24b)](_0x56f870=>{const _0xd42d94=_0x2de453,_0x30d01c=_0x56f870===null||_0x56f870===undefined||_0x56f870===''?'未知':String(_0x56f870);return _0x30d01c[_0xd42d94(0x22f)](/\|/g,'|');});_0x434105+='|\x20'+_0x300211+_0x2de453(0x212)+_0x44476c['join'](_0x2de453(0x212))+_0x2de453(0x2ed);}}),_0x2296df>0x0&&(_0x434105+=_0x498418(0x2b7)+_0x2296df+_0x498418(0x2ee)+(_0x2296df-0x1)+_0x498418(0x2a7));}const _0x5dc55a=checkTableRules(_0x4ab1e9);_0x5dc55a&&(_0x434105+=_0x5dc55a+'\x0a');}else _0x434105+=_0x498418(0x2c7);_0x434105+='</'+_0x599cda+'>\x0a',_0x3f769f?(_0x434105+=_0x498418(0x290)+(_0x4ab1e9[_0x498418(0x1f8)]||'允许')+'\x0a',_0x434105+=_0x498418(0x2b5)+(_0x4ab1e9['rule_delete']||'允许')+'\x0a',_0x434105+=_0x498418(0x2aa)+(_0x4ab1e9['rule_update']||'允许')+'\x0a'):_0x434105+='【操作权限】:\x20禁止修改此表格\x0a',_0x5985bf<currentTablesState[_0x498418(0x24a)]-0x1&&(_0x434105+=_0x498418(0x296));}),_0x434105;}export function convertTablesToCsvStringForContentOnly(){const _0x266b20=_0x2c092c,_0x26e92e=getMemoryState();if(!_0x26e92e||_0x26e92e['length']===0x0)return'';let _0x2891c7='';return _0x26e92e[_0x266b20(0x2a2)](_0x57a8ec=>{const _0x421ec8=_0x266b20;_0x2891c7+='\x0a<'+_0x57a8ec['name']+'>\x0a';const _0x2e23f6='|\x20'+_0x57a8ec['headers']['join'](_0x421ec8(0x212))+'\x20|';_0x2891c7+=_0x2e23f6+'\x0a';const _0x26c187='|'+_0x57a8ec[_0x421ec8(0x264)][_0x421ec8(0x24b)](()=>_0x421ec8(0x25c))[_0x421ec8(0x21e)]('|')+'|';_0x2891c7+=_0x26c187+'\x0a';const _0xec6cd8=_0x57a8ec[_0x421ec8(0x2d0)][_0x421ec8(0x29c)]((_0xd95922,_0x2b86eb)=>!_0x57a8ec[_0x421ec8(0x266)]||_0x57a8ec[_0x421ec8(0x266)][_0x2b86eb]!==_0x421ec8(0x2e6));_0xec6cd8[_0x421ec8(0x24a)]>0x0?_0xec6cd8[_0x421ec8(0x2a2)](_0x58599a=>{const _0x569218=_0x421ec8;if(Array['isArray'](_0x58599a)){const _0x4ca132=_0x58599a['map'](_0x6cb887=>_0x6cb887===null||_0x6cb887===undefined||_0x6cb887===''?'\x20':_0x6cb887[_0x569218(0x2ac)]()),_0x53ce88='|\x20'+_0x4ca132[_0x569218(0x21e)](_0x569218(0x212))+'\x20|';_0x2891c7+=_0x53ce88+'\x0a';}}):_0x2891c7+=_0x421ec8(0x25d),_0x2891c7+='</'+_0x57a8ec[_0x421ec8(0x26f)]+'>\x0a';}),_0x2891c7['trim']();}loadTables();export function getBatchFillerRuleTemplate(){const _0x179e6b=_0x2c092c;return extension_settings[extensionName]?.[_0x179e6b(0x282)]??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0xe20cfa){const _0x51ecf1=_0x2c092c;extension_settings[extensionName][_0x51ecf1(0x282)]=_0xe20cfa,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){const _0x5d6e4a=_0x2c092c;return extension_settings[extensionName]?.[_0x5d6e4a(0x2f1)]??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0x461a6f){const _0x25a533=_0x2c092c;extension_settings[extensionName][_0x25a533(0x2f1)]=_0x461a6f,saveSettingsDebounced();}export function getAiFlowTemplateForInjection(){const _0x5cb1da=_0x2c092c;return extension_settings[extensionName]?.[_0x5cb1da(0x27e)]??DEFAULT_AI_FLOW_TEMPLATE;}function _0x2b91(_0x51eb37,_0x24fb0a){const _0x2ea654=_0x2ea6();return _0x2b91=function(_0x2b9177,_0x4f9851){_0x2b9177=_0x2b9177-0x1f0;let _0x274e4a=_0x2ea654[_0x2b9177];return _0x274e4a;},_0x2b91(_0x51eb37,_0x24fb0a);}export async function updateTableFromText(_0x3861cb,_0x28255c={}){const _0x26ed0a=_0x2c092c,_0x5b41b8=extension_settings[extensionName];if(_0x5b41b8[_0x26ed0a(0x227)]===![]){log(_0x26ed0a(0x20f),_0x26ed0a(0x238));return;}if(!_0x3861cb){log('AI返回内容为空,无法更新表格。',_0x26ed0a(0x21a));return;}const {finalState:_0x3ea257,hasChanges:_0x2e459a,changes:_0x583c25}=executeCommands(_0x3861cb,currentTablesState);if(!_0x2e459a){log(_0x26ed0a(0x23f),_0x26ed0a(0x238));return;}setMemoryState(_0x3ea257);_0x28255c[_0x26ed0a(0x2d3)]&&commitPendingDeletions();_0x583c25[_0x26ed0a(0x2a2)](_0x539bb8=>{const _0x3eba6b=_0x26ed0a;updatedTables[_0x3eba6b(0x2ec)](_0x539bb8['tableIndex']),(_0x539bb8[_0x3eba6b(0x1f2)]===_0x3eba6b(0x2bb)||_0x539bb8[_0x3eba6b(0x1f2)]==='insert')&&(_0x539bb8[_0x3eba6b(0x24d)]!==undefined&&_0x539bb8[_0x3eba6b(0x267)]!==undefined&&addHighlight(_0x539bb8[_0x3eba6b(0x23a)],_0x539bb8[_0x3eba6b(0x24d)],_0x539bb8['colIndex']));}),log('成功执行了\x20'+_0x583c25[_0x26ed0a(0x24a)]+'\x20处变更。',_0x26ed0a(0x2c0));const _0x25b70c=[...new Set(_0x583c25[_0x26ed0a(0x24b)](_0x2ca635=>_0x2ca635[_0x26ed0a(0x23a)]))];_0x25b70c[_0x26ed0a(0x2a2)](_0x2005f7=>{dispatchTableUpdate(_0x2005f7);});const _0x47608f=getContext();if(_0x47608f[_0x26ed0a(0x278)]&&_0x47608f[_0x26ed0a(0x278)][_0x26ed0a(0x24a)]>0x0){const _0x87d121=_0x47608f[_0x26ed0a(0x278)][_0x47608f['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x87d121)){await saveChat(),toastr[_0x26ed0a(0x2c0)]('已根据AI的指示成功更新表格!',_0x26ed0a(0x258)),document[_0x26ed0a(0x2ef)](new CustomEvent(_0x26ed0a(0x2e5)));return;}}saveChatDebounced(),toastr[_0x26ed0a(0x2c0)](_0x26ed0a(0x2b3),'填表完成'),document[_0x26ed0a(0x2ef)](new CustomEvent(_0x26ed0a(0x2e5)));}export function saveAiTemplate(_0x5f4592){const _0x4d7a5a=_0x2c092c;extension_settings[extensionName][_0x4d7a5a(0x27e)]=_0x5f4592,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0x4e08ab=![]){const _0x4a70cf=_0x2c092c;if(!currentTablesState){log(_0x4a70cf(0x2be),_0x4a70cf(0x245)),toastr[_0x4a70cf(0x245)](_0x4a70cf(0x27f));return;}let _0x558056,_0x545959,_0x34b049;_0x4e08ab?(_0x558056=JSON[_0x4a70cf(0x2c8)](JSON[_0x4a70cf(0x24f)](currentTablesState)),_0x545959=_0x4a70cf(0x256),_0x34b049=_0x4a70cf(0x2e7)):(_0x558056=currentTablesState[_0x4a70cf(0x24b)](_0x29bbf4=>({'name':_0x29bbf4[_0x4a70cf(0x26f)],'headers':_0x29bbf4[_0x4a70cf(0x264)],'columnWidths':_0x29bbf4[_0x4a70cf(0x272)]||[],'note':_0x29bbf4[_0x4a70cf(0x2f2)],'rule_add':_0x29bbf4[_0x4a70cf(0x1f8)],'rule_delete':_0x29bbf4['rule_delete'],'rule_update':_0x29bbf4[_0x4a70cf(0x2e2)],'charLimitRules':_0x29bbf4['charLimitRules']||{},'rowLimitRule':_0x29bbf4[_0x4a70cf(0x236)]||0x0,'rows':[],'rowStatuses':[]})),_0x545959=_0x4a70cf(0x1f5),_0x34b049='纯净预设');const _0xbe3cb0={'version':_0x4a70cf(0x292),'batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'tables':_0x558056},_0x4e8b63=new Blob([JSON['stringify'](_0xbe3cb0,null,0x2)],{'type':'application/json'}),_0x47eebf=URL[_0x4a70cf(0x2ff)](_0x4e8b63),_0x1371ec=document[_0x4a70cf(0x248)]('a');_0x1371ec[_0x4a70cf(0x2fa)]=_0x47eebf,_0x1371ec[_0x4a70cf(0x20b)]=_0x4a70cf(0x2e4)+_0x34b049+'-'+new Date()[_0x4a70cf(0x233)]()[_0x4a70cf(0x218)](0x0,0xa)+'.json',document[_0x4a70cf(0x2d2)][_0x4a70cf(0x2ca)](_0x1371ec),_0x1371ec[_0x4a70cf(0x23b)](),document[_0x4a70cf(0x2d2)][_0x4a70cf(0x277)](_0x1371ec),URL[_0x4a70cf(0x2a8)](_0x47eebf),log('【'+_0x34b049+'】已成功导出。',_0x4a70cf(0x2c0)),toastr['success']('【'+_0x34b049+'】已开始下载。',_0x4a70cf(0x200));}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0x301a23){const _0x42d2e6=_0x2c092c,_0x4d6331=document[_0x42d2e6(0x248)]('input');_0x4d6331[_0x42d2e6(0x1f2)]=_0x42d2e6(0x1f4),_0x4d6331[_0x42d2e6(0x29b)]=_0x42d2e6(0x301),_0x4d6331[_0x42d2e6(0x249)]=_0x2fa253=>{const _0x156d21=_0x42d2e6,_0x499758=_0x2fa253[_0x156d21(0x243)][_0x156d21(0x25b)][0x0];if(!_0x499758)return;const _0x55285b=new FileReader();_0x55285b[_0x156d21(0x252)]=_0x5bac6b=>{const _0x4dd1f2=_0x156d21;try{const _0x4501d7=JSON[_0x4dd1f2(0x2c8)](_0x5bac6b[_0x4dd1f2(0x243)][_0x4dd1f2(0x1ff)]);if(!_0x4501d7[_0x4dd1f2(0x2bf)]||!Array['isArray'](_0x4501d7[_0x4dd1f2(0x1f1)]))throw new Error(_0x4dd1f2(0x304));const _0x3003ed=window[_0x4dd1f2(0x2a3)]('【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格(包括结构和内容)。\x0a\x0a此操作不可逆,是否确定要继续?');if(!_0x3003ed){log(_0x4dd1f2(0x2a1),'info'),toastr[_0x4dd1f2(0x238)](_0x4dd1f2(0x241));return;}if(_0x4501d7['version']===_0x4dd1f2(0x292))saveBatchFillerRuleTemplate(_0x4501d7[_0x4dd1f2(0x294)]||''),saveBatchFillerFlowTemplate(_0x4501d7[_0x4dd1f2(0x29d)]||''),saveAiTemplate(_0x4501d7[_0x4dd1f2(0x219)]||'');else{if(_0x4501d7[_0x4dd1f2(0x2b1)]!==undefined&&_0x4501d7[_0x4dd1f2(0x2c4)]!==undefined)saveBatchFillerRuleTemplate(_0x4501d7[_0x4dd1f2(0x2b1)]||''),saveBatchFillerFlowTemplate(_0x4501d7[_0x4dd1f2(0x2c4)]||''),saveAiTemplate(_0x4501d7[_0x4dd1f2(0x2c4)]||'');else _0x4501d7[_0x4dd1f2(0x244)]?(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x4501d7[_0x4dd1f2(0x244)]||''),saveAiTemplate(_0x4501d7['aiTemplate']||'')):log(_0x4dd1f2(0x284),_0x4dd1f2(0x21a));}const _0x4a41f5=_0x4501d7[_0x4dd1f2(0x1f1)];_0x4a41f5['forEach'](_0xe0c707=>{const _0x22f983=_0x4dd1f2;if(_0xe0c707[_0x22f983(0x26f)]===undefined||_0xe0c707[_0x22f983(0x264)]===undefined||_0xe0c707[_0x22f983(0x2d0)]===undefined)throw new Error(_0x22f983(0x22a)+JSON[_0x22f983(0x24f)](_0xe0c707));if(_0xe0c707[_0x22f983(0x2f2)]===undefined)_0xe0c707['note']='无';if(_0xe0c707[_0x22f983(0x1f8)]===undefined)_0xe0c707[_0x22f983(0x1f8)]='允许';if(_0xe0c707[_0x22f983(0x229)]===undefined)_0xe0c707[_0x22f983(0x229)]='允许';if(_0xe0c707['rule_update']===undefined)_0xe0c707[_0x22f983(0x2e2)]='允许';if(_0xe0c707[_0x22f983(0x2ea)]&&!_0xe0c707[_0x22f983(0x288)])_0xe0c707[_0x22f983(0x288)]={},_0xe0c707[_0x22f983(0x2ea)][_0x22f983(0x273)]!==-0x1&&_0xe0c707[_0x22f983(0x2ea)][_0x22f983(0x205)]>0x0&&(_0xe0c707['charLimitRules'][_0xe0c707['charLimitRule'][_0x22f983(0x273)]]=_0xe0c707['charLimitRule'][_0x22f983(0x205)]);else _0xe0c707[_0x22f983(0x288)]===undefined&&(_0xe0c707['charLimitRules']={});delete _0xe0c707[_0x22f983(0x2ea)],!_0xe0c707[_0x22f983(0x266)]&&(_0xe0c707[_0x22f983(0x266)]=Array(_0xe0c707[_0x22f983(0x2d0)][_0x22f983(0x24a)])[_0x22f983(0x2db)](_0x22f983(0x2f0))),_0xe0c707[_0x22f983(0x236)]===undefined&&(_0xe0c707['rowLimitRule']=0x0),_0xe0c707[_0x22f983(0x272)]===undefined&&(_0xe0c707[_0x22f983(0x272)]=[]);}),setMemoryState(_0x4a41f5),dispatchAllTablesUpdate();const _0x43427e=getContext();if(_0x43427e['chat']&&_0x43427e['chat'][_0x4dd1f2(0x24a)]>0x0){const _0x1c59d9=_0x43427e['chat'][_0x43427e[_0x4dd1f2(0x278)][_0x4dd1f2(0x24a)]-0x1];saveStateToMessage(getMemoryState(),_0x1c59d9)&&(saveChat(),log('导入的预设已强制写入最新消息并立即保存。','success'));}else saveChatDebounced();log(_0x4dd1f2(0x201),_0x4dd1f2(0x2c0)),toastr[_0x4dd1f2(0x2c0)]('预设已成功导入!',_0x4dd1f2(0x27c)),typeof _0x301a23===_0x4dd1f2(0x21f)&&_0x301a23();}catch(_0x26faaf){log(_0x4dd1f2(0x299)+_0x26faaf['message'],_0x4dd1f2(0x245)),toastr[_0x4dd1f2(0x245)](_0x4dd1f2(0x291)+_0x26faaf[_0x4dd1f2(0x275)],'错误');}},_0x55285b['readAsText'](_0x499758);},_0x4d6331[_0x42d2e6(0x23b)]();}export async function rollbackState(){const _0x52b131=_0x2c092c,_0x532988=getContext();if(!_0x532988||!_0x532988[_0x52b131(0x278)]||_0x532988['chat'][_0x52b131(0x24a)]<0x2)return log(_0x52b131(0x28c),_0x52b131(0x21a)),toastr[_0x52b131(0x206)](_0x52b131(0x271)),![];const _0x112c05=_0x532988['chat'],_0x359cee=_0x112c05[_0x52b131(0x24a)]-0x1,_0x3f5de8=_0x112c05[_0x359cee];log(_0x52b131(0x254)+(_0x359cee-0x1)+'\x20条消息加载表格状态...',_0x52b131(0x238));const _0x21514a=loadTables(_0x359cee);if(!_0x21514a)return log(_0x52b131(0x2fd),'error'),toastr['error']('未能在上一楼找到可用的表格状态。'),![];setMemoryState(_0x21514a);if(saveStateToMessage(_0x21514a,_0x3f5de8))await saveChat(),log('已成功将回退后的状态保存至最新消息。','success');else return log(_0x52b131(0x2b8),_0x52b131(0x245)),toastr['error'](_0x52b131(0x29e)),![];return renderTables(),updateOrInsertTableInChat(),log('UI已更新以显示回退后的状态。',_0x52b131(0x238)),!![];}export async function rollbackAndRefill(){const _0x24c0a4=_0x2c092c,_0x17931b=extension_settings[extensionName];if(_0x17931b[_0x24c0a4(0x227)]===![]){log(_0x24c0a4(0x2c5),'info'),toastr['info'](_0x24c0a4(0x23d));return;}toastr['info']('正在执行回退并重新填表...');const _0x50033b=await rollbackState();if(!_0x50033b){toastr[_0x24c0a4(0x245)](_0x24c0a4(0x2f5));return;}toastr['success'](_0x24c0a4(0x269));const _0x3ae686=getContext(),_0x3aecd0=_0x3ae686[_0x24c0a4(0x278)][_0x3ae686[_0x24c0a4(0x278)][_0x24c0a4(0x24a)]-0x1];try{await fillWithSecondaryApi(_0x3aecd0,!![]),log('回退并重新填表操作完成。',_0x24c0a4(0x2c0));}catch(_0x2f0729){log('回退重填过程中发生错误:\x20'+_0x2f0729[_0x24c0a4(0x275)],_0x24c0a4(0x245)),toastr[_0x24c0a4(0x245)]('重新填表失败:\x20'+_0x2f0729[_0x24c0a4(0x275)]);}}export function updateColumnWidth(_0x33dc9b,_0x3403c7,_0x50bc1b){const _0x37cebe=_0x2c092c;if(!currentTablesState||!currentTablesState[_0x33dc9b])return;const _0xf01930=currentTablesState[_0x33dc9b];!_0xf01930[_0x37cebe(0x272)]&&(_0xf01930['columnWidths']=[]);while(_0xf01930['columnWidths'][_0x37cebe(0x24a)]<_0xf01930[_0x37cebe(0x264)][_0x37cebe(0x24a)]){_0xf01930[_0x37cebe(0x272)][_0x37cebe(0x2cd)](null);}_0xf01930['columnWidths'][_0x3403c7]=_0x50bc1b;const _0x24c2ff=getContext();if(_0x24c2ff[_0x37cebe(0x278)]&&_0x24c2ff[_0x37cebe(0x278)][_0x37cebe(0x24a)]>0x0){const _0x39c5b8=_0x24c2ff[_0x37cebe(0x278)][_0x24c2ff[_0x37cebe(0x278)][_0x37cebe(0x24a)]-0x1];if(saveStateToMessage(currentTablesState,_0x39c5b8)){saveChat();return;}}saveChatDebounced();}export function isCurrentTablesEmpty(){const _0x2418af=_0x2c092c,_0x441799=getMemoryState();if(!_0x441799||_0x441799[_0x2418af(0x24a)]===0x0)return!![];return _0x441799[_0x2418af(0x28a)](_0x5cb5c3=>!_0x5cb5c3[_0x2418af(0x2d0)]||_0x5cb5c3[_0x2418af(0x2d0)][_0x2418af(0x24a)]===0x0);}export function clearGlobalPreset(){const _0x37970d=_0x2c092c;if(extension_settings[extensionName]&&extension_settings[extensionName][_0x37970d(0x204)]){const _0xc081bc=window[_0x37970d(0x2a3)](_0x37970d(0x255));_0xc081bc?(delete extension_settings[extensionName][_0x37970d(0x204)],saveSettingsDebounced(),log(_0x37970d(0x246),_0x37970d(0x2c0)),toastr[_0x37970d(0x2c0)]('全局预设已清除,新聊天将使用默认模板。',_0x37970d(0x298))):(log('用户取消了清除全局预设的操作。','info'),toastr[_0x37970d(0x238)](_0x37970d(0x228)));}else log(_0x37970d(0x26e),'info'),toastr['info'](_0x37970d(0x295),'提示');}export function importGlobalPreset(_0x26850b){const _0x481bcf=_0x2c092c,_0x108532=document[_0x481bcf(0x248)](_0x481bcf(0x1fc));_0x108532['type']=_0x481bcf(0x1f4),_0x108532[_0x481bcf(0x29b)]=_0x481bcf(0x301),_0x108532[_0x481bcf(0x249)]=_0x157a4d=>{const _0x35a7a6=_0x481bcf,_0x5a884e=_0x157a4d[_0x35a7a6(0x243)]['files'][0x0];if(!_0x5a884e)return;const _0x132ca8=new FileReader();_0x132ca8['onload']=_0x2dda82=>{const _0x388d5=_0x35a7a6;try{const _0x5d3682=JSON[_0x388d5(0x2c8)](_0x2dda82[_0x388d5(0x243)]['result']);if(!_0x5d3682[_0x388d5(0x2bf)]||!Array[_0x388d5(0x207)](_0x5d3682['tables']))throw new Error(_0x388d5(0x304));const _0x230a51=window[_0x388d5(0x2a3)](_0x388d5(0x2f3));if(!_0x230a51){log(_0x388d5(0x21d),_0x388d5(0x238)),toastr['info'](_0x388d5(0x228));return;}const _0x18f710=_0x5d3682['tables'][_0x388d5(0x24b)](_0x107cdf=>({'name':_0x107cdf['name'],'headers':_0x107cdf[_0x388d5(0x264)],'note':_0x107cdf[_0x388d5(0x2f2)],'rule_add':_0x107cdf['rule_add'],'rule_delete':_0x107cdf['rule_delete'],'rule_update':_0x107cdf[_0x388d5(0x2e2)],'rows':[]}));!extension_settings[extensionName]&&(extension_settings[extensionName]={});extension_settings[extensionName][_0x388d5(0x204)]={'version':_0x5d3682['version'],'tables':_0x18f710,'batchFillerRuleTemplate':_0x5d3682['batchFillerRuleTemplate'],'batchFillerFlowTemplate':_0x5d3682[_0x388d5(0x29d)]},saveSettingsDebounced();if(_0x5d3682['version']===_0x388d5(0x292))saveBatchFillerRuleTemplate(_0x5d3682[_0x388d5(0x294)]||''),saveBatchFillerFlowTemplate(_0x5d3682[_0x388d5(0x29d)]||''),saveAiTemplate(_0x5d3682['injectionFlowTemplate']||'');else{if(_0x5d3682[_0x388d5(0x2b1)]!==undefined&&_0x5d3682[_0x388d5(0x2c4)]!==undefined)saveBatchFillerRuleTemplate(_0x5d3682[_0x388d5(0x2b1)]||''),saveBatchFillerFlowTemplate(_0x5d3682[_0x388d5(0x2c4)]||''),saveAiTemplate(_0x5d3682[_0x388d5(0x2c4)]||'');else _0x5d3682[_0x388d5(0x244)]&&(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x5d3682[_0x388d5(0x244)]||''),saveAiTemplate(_0x5d3682[_0x388d5(0x244)]||''));}log(_0x388d5(0x29a),_0x388d5(0x2c0)),toastr['success']('全局预设已设置!新聊天将默认使用此预设。',_0x388d5(0x210)),typeof _0x26850b===_0x388d5(0x21f)&&_0x26850b();}catch(_0x16ce00){log(_0x388d5(0x239)+_0x16ce00['message'],_0x388d5(0x245)),toastr[_0x388d5(0x245)](_0x388d5(0x291)+_0x16ce00[_0x388d5(0x275)],'错误');}},_0x132ca8[_0x35a7a6(0x217)](_0x5a884e);},_0x108532['click']();}
|