diff --git a/core/table-system/manager.js b/core/table-system/manager.js index f4e5f00..261b3dd 100644 --- a/core/table-system/manager.js +++ b/core/table-system/manager.js @@ -1 +1 @@ -const _0x5cf5ff=_0x8bba;(function(_0x5d0531,_0x138b26){const _0x171552=_0x8bba,_0x529a39=_0x5d0531();while(!![]){try{const _0x43e125=-parseInt(_0x171552(0x1f7))/0x1*(-parseInt(_0x171552(0x1fa))/0x2)+parseInt(_0x171552(0x2c9))/0x3*(-parseInt(_0x171552(0x270))/0x4)+-parseInt(_0x171552(0x1fb))/0x5+-parseInt(_0x171552(0x278))/0x6*(-parseInt(_0x171552(0x2b8))/0x7)+parseInt(_0x171552(0x266))/0x8*(parseInt(_0x171552(0x2ae))/0x9)+parseInt(_0x171552(0x20a))/0xa+-parseInt(_0x171552(0x21c))/0xb;if(_0x43e125===_0x138b26)break;else _0x529a39['push'](_0x529a39['shift']());}catch(_0x472f46){_0x529a39['push'](_0x529a39['shift']());}}}(_0x2ce6,0x6aa4a));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.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=_0x5cf5ff(0x26b);let currentTablesState=null,highlightedCells=new Set(),updatedTables=new Set();export function addHighlight(_0x3ab956,_0xe98281,_0x1ac017){const _0x293d13=_0x5cf5ff,_0x19b57d=_0x3ab956+'-'+_0xe98281+'-'+_0x1ac017;highlightedCells[_0x293d13(0x249)](_0x19b57d);}export function getHighlights(){return highlightedCells;}export function clearHighlights(){const _0x18b5a4=_0x5cf5ff;highlightedCells[_0x18b5a4(0x1e1)]>0x0&&(highlightedCells[_0x18b5a4(0x269)](),log(_0x18b5a4(0x205),'info'));}export function getUpdatedTables(){return updatedTables;}export function clearUpdatedTables(){const _0x3d8ec4=_0x5cf5ff;updatedTables[_0x3d8ec4(0x1e1)]>0x0&&(updatedTables[_0x3d8ec4(0x269)](),log(_0x3d8ec4(0x200),'info'));}export function setMemoryState(_0x2f0d1c){currentTablesState=_0x2f0d1c;}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':_0x5cf5ff(0x211),'headers':['日期','时段','时间','地点',_0x5cf5ff(0x28f)],'note':'【核心作用】此表格用于精确追踪故事发生的即时时空背景,确保时间与空间的连续性。它应该始终只包含一行,代表当前的“镜头”位置。\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分隔。','rule_add':_0x5cf5ff(0x25a),'rule_delete':_0x5cf5ff(0x2c7),'rule_update':_0x5cf5ff(0x26f),'charLimitRules':{},'rowLimitRule':0x1,'rows':[]},{'name':_0x5cf5ff(0x223),'headers':['角色名','外貌','身形','衣着','性格','身份','职业',_0x5cf5ff(0x286),'爱好','住所',_0x5cf5ff(0x293)],'note':'【核心作用】此表格是角色关系和状态的核心数据库,用于记录所有在故事中出现的重要角色的详细信息。\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与关系:\x20描述该角色与主角之间的社会或情感关系,如\x27盟友\x27、\x27导师\x27、\x27敌人\x27。\x0a-\x20爱好:\x20角色的兴趣和消遣活动。\x0a-\x20住所:\x20角色的常住地。\x0a-\x20其他重要信息:\x20记录任何不属于以上类别但对角色至关重要的信息,如特殊能力、过去的经历等。','rule_add':_0x5cf5ff(0x2d1),'rule_delete':_0x5cf5ff(0x2d5),'rule_update':_0x5cf5ff(0x29a),'charLimitRules':{'10':0x1e},'rowLimitRule':0x0,'rows':[]},{'name':_0x5cf5ff(0x23f),'headers':['任务名','类型','详情','状态',_0x5cf5ff(0x2d7),'地点',_0x5cf5ff(0x224),'结果'],'note':_0x5cf5ff(0x27d),'rule_add':_0x5cf5ff(0x246),'rule_delete':_0x5cf5ff(0x2ab),'rule_update':_0x5cf5ff(0x2ca),'charLimitRules':{},'rowLimitRule':0xa,'rows':[]},{'name':_0x5cf5ff(0x23a),'headers':['物品名','类型','详情','状态',_0x5cf5ff(0x23d),_0x5cf5ff(0x238)],'note':_0x5cf5ff(0x203),'rule_add':_0x5cf5ff(0x2d3),'rule_delete':_0x5cf5ff(0x1e8),'rule_update':_0x5cf5ff(0x2b7),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':'技能栏','headers':[_0x5cf5ff(0x1dc),_0x5cf5ff(0x259)],'note':_0x5cf5ff(0x22c),'rule_add':_0x5cf5ff(0x288),'rule_delete':_0x5cf5ff(0x251),'rule_update':'【触发条件】当一个已知技能的效果发生进化、变异或被添加了新的限制/效果时(例如,技能升级),必须更新其“技能效果”描述。','charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x5cf5ff(0x1fc),'headers':['类型','具体描述'],'note':'【核心作用】此表格记录了来自的、超越故事本身的“元指令”或世界观设定,拥有最高解释权。内容应被严格遵守,禁止AI自行修改。\x0a【字段详解】\x0a-\x20类型:\x20指令的分类,如\x27世界观设定\x27、\x27剧情走向要求\x27、\x27角色行为禁令\x27。\x0a-\x20具体描述:\x20完整、准确地记录提出的具体要求。','rule_add':_0x5cf5ff(0x28e),'rule_delete':'【触发条件】只能在明确表示要移除或废弃某条设定时,才能删除对应行。','rule_update':'【触发条件】只能在明确表示要修改某条设定时,才能更新对应行的描述。','charLimitRules':{},'rowLimitRule':0x0,'rows':[]}]};function _0x2ce6(){const _0x16998a=['新列\x20','message',')第(','result','below','readAsText','appendChild','重要原因','injectionFlowTemplate','物品栏','执行AI指令:\x20insertRow(tableIndex=','纯净预设','拥有者','全局预设已成功导入并保存到扩展设置中。','任务栏','名为\x20\x22','AI指令块为空,无需执行任何操作。','未能保存回退状态,操作中止。','未在聊天记录中找到表格,正在加载全局预设...','dispatchEvent','createElement','【触发条件】当以下情况发生时,应添加新行:\x0a1.\x20角色接下一个明确的、有目标的委托或命令。\x0a2.\x20角色们达成一个具体的、需要在未来执行的约定。\x0a3.\x20角色为自己设定一个长期的、关键性的目标。','\x20行已标记为待删除。','Amily2-','add','extra','正在尝试从第\x20','预设已成功导入并应用。','note','\x22\x20的表格已存在。','batch_filler_flow_template','在第\x20','【触发条件】如果发现表格中存在两个描述完全相同的重复技能,应删除其中一个。如果记录了非的技能,应立即删除。','aiTemplate','新表格状态已强制写入最新消息并立即保存。','完整备份','rule_update','聊天记录不足,无法执行回退操作。','trim','click','技能效果','【触发条件】当故事开始,且此表格为空时,必须立即根据初始场景创建第一行。',']\x20的顺序已调整。','\x20(索引\x20','chat',']\x20的规则已更新。','type','无法移动表格:索引\x20','插入行失败:找不到索引为\x20','全局预设已清除,新聊天将使用默认模板。','文件格式无效或缺少版本号/表格数据。','【清除全局预设】\x0a\x0a您确定要清除已设置的全局预设吗?\x0a\x0a清除后,新聊天将恢复使用扩展内置的默认表格模板。','amily2_ai_template','8MUezBP','导出成功','当前没有设置全局预设。','clear','所有表格的剧情内容已清空。','amily2_tables_data','操作完成',',\x20data=','执行失败','【触发条件】当以下任一情况发生时,必须更新此行:\x0a1.\x20时间发生显著跳跃(例如,\x27几小时后\x27、\x27第二天\x27)。\x0a2.\x20角色从一个地点移动到另一个地点。\x0a3.\x20场景中关键角色的出入导致在场人员发生变化。','4ifrMtI','\x20条表格操作指令...','rowIndex,','href','表格名称不能为空。','加载全局预设失败:\x20','【修改】:\x20','map','3462024nSnblV','重命名失败:名称不能为空。',',\x20rowIndex=',')超出规定(','Amily2-Table-Preset-v2.0-full','【核心作用】追踪故事中的主要情节线、目标和挑战。只记录对剧情发展有重大影响的“任务”,忽略日常琐事。\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任务完成或失败后的最终结果。','AI\x20指令更新了表格\x20[','global_table_preset','导入成功','已提交并永久删除了\x20','(该表当前内容为空)\x0a','执行AI指令时发生错误:\x20',']\x20末尾新增一行。','removeChild','与关系','columnWidths','【触发条件】当在故事中首次成功施展或习得一个全新的、表格中未记录的技能时,必须添加。','移动。','操作成功','charLimitRule','Amily2-Table-Preset-v2.0-clean','”已更新为“','【触发条件】当通过括号、旁白或其他明确的“第四面墙”方式,提出关于故事背景、规则或未来走向的指令时,必须记录于此。','此地角色','stringify','getPrototypeOf','无法回退:聊天记录不足。','其他重要信息','rule_add','\x20条消息加载表格状态...','导入操作已取消。','表格不存在。','toString',']\x20已被成功废黜。','【触发条件】当角色的任何信息发生持久性或关键性变化时,必须更新对应单元格。例如:\x0a1.\x20外貌/身形/衣着发生永久性改变(如断肢、换上新装备)。\x0a2.\x20性格因重大事件而扭转。\x0a3.\x20身份或职业发生变更(如继承王位、被解雇)。\x0a4.\x20与的关系发生根本性转变(如从敌人变为盟友)。','columnIndex','\x20中操作。','缺少状态或目标消息,无法保存。','batchFillerRuleTemplate','headers','”已向','【说明】:\x0a','表格\x20[','\x20列。',')行以下,但切莫完全删除。】','没有可导出的表格数据。','所有AI指令已成功执行完毕。','target',']\x20新增了一列。','mes','function','【触发条件】当任务列表超过10行时,优先删除最早的、已经“已完成”且与当前剧情关联度最低的任务。如果存在内容完全重复的任务,应删除。','length','未能在上一楼找到可用的表格状态。','4724739caHdOH','成功将表格\x20','清空行数据后的状态已强制写入最新消息并立即保存。','files','\x0a*\x20','已成功将回退后的状态保存至最新消息。','无法导出:当前表格状态为空。','body',']\x20新增了一行。','【触发条件】当物品的“状态”(如被损坏)、“拥有者”(如被转交或被盗)或“详情”(如发现了新功能)发生变化时,必须更新。','7hzQNPf',']\x20在第\x20','执行AI指令:\x20updateRow(tableIndex=','UI已更新以显示回退后的状态。','无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!','replace','onload','file','\x20条消息中找到基准表格数据。','这是一个新创建的表格。','aiFlowTemplate','split','\x0a---\x0a','执行AI指令时出错:\x20','重命名失败','【触发条件】任何时候,如果此表格的行数超过一行,必须删除旧的行,只保留最新、最准确的一行。','charLimitRules','2453931pdnECt','【触发条件】当任务的“状态”发生任何变化时,必须更新。例如,从\x27进行中\x27变为\x27已完成\x27。当任务的“详情”或“结果”有新的关键信息补充时,也应更新。','batchFillerFlowTemplate','version','表格\x20\x22','重新填表失败:\x20','未知操作','\x20的列。','【触发条件】当一个有名有姓的角色首次出现,并与或当前剧情发生有意义的互动时,必须为其创建新的一行。','\x22\x20已重命名为\x20\x22','【触发条件】当一个物品被明确赋予了特殊意义(如被赠予、在关键事件中扮演重要角色)或展示出独特功能时,应为其创建条目。','isArray','【触发条件】当一个角色被确认永久性死亡(非假死或失踪),且其存在不再对后续剧情有直接影响时,可以删除该行。','表格顺序调整后的状态已强制写入最新消息并立即保存。','执行者','fill','warn','\x20行移动到第\x20','success','filter','batch_filler_rule_template','above','parse','成功删除了表格\x20','执行AI指令:\x20deleteRow(tableIndex=','所有表格的行数据已在内存中清空。','废黜表格后的状态已强制写入最新消息并立即保存。','技能名','状态回退成功,准备重新填表...','object','error','\x22\x20已更新内存状态。','size','\x20已在边界。','some',')列,字符超出规定(','\x20的表格。','join','未在AI返回内容中找到有效的\x20\x20指令块。','【触发条件】当一个物品被彻底摧毁、消耗完毕或永久失去其特殊意义时,可以删除。','download','every','left','.json','AI返回内容为空,无法更新表格。','回退状态保存失败,操作中止。','准备执行从AI返回的\x20','导入的预设已强制写入最新消息并立即保存。','rows','aiRuleTemplate','rule_delete','match','无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','input','46285PrBWdv','tables',')行(','26svHneE','393665RJGexp','设定栏','\x20行位置插入了新行。','forEach',']\x20的第\x20','已清除所有表格的更新标记。','导入的表格数据格式不正确:\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。','删除列失败:在表格\x20','已清除所有单元格高亮标记。','AI指令意图更新不存在的行\x20(rowIndex:\x20','runner','toISOString','limit','5829960qJeaWr','插入了新列。','pending-deletion','导入失败:','全局预设已被清除。','无需清除,当前未设置任何全局预设。','normal','时空栏','onchange','\x0a\x20\x20\x20\x20\x20\x20\x20\x20','\x20行。','application/json','创建失败','number','...]','rowLimitRule','Amily2-Table-Preset-v3.0-separated_templates','AI指令错误:尝试在不存在的表格索引\x20','10484716LusrZX','操作已取消。','constructor','splice','push','\x20行已恢复。','confirm','角色栏','开始时间/结束时间','createObjectURL','rowStatuses','无法找到可锚定的消息或保存失败,新表格可能不会被持久化!','】已开始下载。','回退重填过程中发生错误:\x20','slice','用户取消了全局预设导入操作。','【核心作用】专门用于记录主角掌握的各种技能、魔法、被动能力或特殊专长。\x0a【字段详解】\x0a-\x20技能名:\x20技能的正式名称。\x0a-\x20技能效果:\x20清晰、简洁地描述该技能使用时产生的具体效果、消耗和限制条件。','revokeObjectURL','【删除】:\x20','name','info'];_0x2ce6=function(){return _0x16998a;};return _0x2ce6();}function getDefaultTables(){const _0x34c537=_0x5cf5ff;log('从预设模板生成默认表格...',_0x34c537(0x230));const _0x430d2a=JSON[_0x34c537(0x2df)](JSON[_0x34c537(0x290)](defaultTemplate[_0x34c537(0x1f8)]));return _0x430d2a['forEach'](_0x13e39c=>{const _0x5e72bd=_0x34c537;_0x13e39c['charLimitRule']={'columnIndex':-0x1,'limit':0x0},_0x13e39c['rowLimitRule']=0x0,_0x13e39c[_0x5e72bd(0x287)]=[];}),_0x430d2a;}export function loadTables(_0x39b312=-0x1){const _0x1bf0b7=_0x5cf5ff,_0xc82263=getContext();if(_0xc82263&&_0xc82263[_0x1bf0b7(0x25d)]&&_0xc82263[_0x1bf0b7(0x25d)]['length']>0x0){const _0x422576=_0x39b312===-0x1?_0xc82263[_0x1bf0b7(0x25d)][_0x1bf0b7(0x2ac)]-0x1:_0x39b312-0x1;for(let _0x1d307a=_0x422576;_0x1d307a>=0x0;_0x1d307a--){const _0x25c6f2=_0xc82263[_0x1bf0b7(0x25d)][_0x1d307a];if(_0x25c6f2[_0x1bf0b7(0x24a)]&&_0x25c6f2[_0x1bf0b7(0x24a)][TABLE_DATA_KEY]){log(_0x1bf0b7(0x250)+_0x1d307a+_0x1bf0b7(0x2c0),'info');let _0x574b07=JSON[_0x1bf0b7(0x2df)](JSON[_0x1bf0b7(0x290)](_0x25c6f2['extra'][TABLE_DATA_KEY]));return _0x574b07[_0x1bf0b7(0x1fe)](_0xbdff8c=>{const _0x30b150=_0x1bf0b7;if(_0xbdff8c['note']===undefined)_0xbdff8c[_0x30b150(0x24d)]='无';if(_0xbdff8c[_0x30b150(0x294)]===undefined)_0xbdff8c[_0x30b150(0x294)]='允许';if(_0xbdff8c[_0x30b150(0x1f3)]===undefined)_0xbdff8c[_0x30b150(0x1f3)]='允许';if(_0xbdff8c[_0x30b150(0x255)]===undefined)_0xbdff8c[_0x30b150(0x255)]='允许';_0xbdff8c[_0x30b150(0x28b)]&&!_0xbdff8c[_0x30b150(0x2c8)]&&(_0xbdff8c['charLimitRules']={},_0xbdff8c[_0x30b150(0x28b)][_0x30b150(0x29b)]!==-0x1&&_0xbdff8c['charLimitRule']['limit']>0x0&&(_0xbdff8c['charLimitRules'][_0xbdff8c[_0x30b150(0x28b)][_0x30b150(0x29b)]]=_0xbdff8c['charLimitRule'][_0x30b150(0x209)]));delete _0xbdff8c[_0x30b150(0x28b)];if(_0xbdff8c[_0x30b150(0x219)]===undefined)_0xbdff8c[_0x30b150(0x219)]=0x0;if(_0xbdff8c[_0x30b150(0x287)]===undefined)_0xbdff8c[_0x30b150(0x287)]=[];!_0xbdff8c[_0x30b150(0x226)]&&(_0xbdff8c[_0x30b150(0x226)]=Array(_0xbdff8c[_0x30b150(0x1f1)][_0x30b150(0x2ac)])['fill'](_0x30b150(0x210)));}),currentTablesState=_0x574b07,currentTablesState;}}}if(extension_settings[extensionName]?.[_0x1bf0b7(0x27f)]){log(_0x1bf0b7(0x243),'info');try{const _0x495caf=extension_settings[extensionName]['global_table_preset'];return currentTablesState=JSON[_0x1bf0b7(0x2df)](JSON['stringify'](_0x495caf[_0x1bf0b7(0x1f8)])),_0x495caf[_0x1bf0b7(0x29e)]!==undefined&&saveBatchFillerRuleTemplate(_0x495caf[_0x1bf0b7(0x29e)]),_0x495caf[_0x1bf0b7(0x2cb)]!==undefined&&saveBatchFillerFlowTemplate(_0x495caf['batchFillerFlowTemplate']),currentTablesState;}catch(_0x265c56){log(_0x1bf0b7(0x275)+_0x265c56['message'],_0x1bf0b7(0x1df));}}return log('未找到任何表格数据或全局预设,使用默认模板。','info'),currentTablesState=getDefaultTables(),currentTablesState;}export function saveStateToMessage(_0x43faad,_0x8a3cf6){const _0x4b3dd1=_0x5cf5ff;if(!_0x43faad||!_0x8a3cf6)return log(_0x4b3dd1(0x29d),'error'),![];return!_0x8a3cf6[_0x4b3dd1(0x24a)]&&(_0x8a3cf6[_0x4b3dd1(0x24a)]={}),_0x8a3cf6[_0x4b3dd1(0x24a)][TABLE_DATA_KEY]=JSON[_0x4b3dd1(0x2df)](JSON[_0x4b3dd1(0x290)](_0x43faad)),log('表格状态已准备写入消息\x20['+_0x8a3cf6[_0x4b3dd1(0x2a9)]['substring'](0x0,0x14)+_0x4b3dd1(0x218),_0x4b3dd1(0x230)),!![];}export function saveTables(_0xd0fa2a=_0x5cf5ff(0x2cf)){const _0x5a7e23=_0x5cf5ff;return log('UI操作\x20\x22'+_0xd0fa2a+_0x5a7e23(0x1e0),'info'),!![];}export function deleteColumn(_0x5cfef1,_0x400b4b){const _0x1596e4=_0x5cf5ff,_0x168183=getMemoryState();if(!_0x168183[_0x5cfef1]||_0x400b4b<0x0||_0x400b4b>=_0x168183[_0x5cfef1][_0x1596e4(0x29f)][_0x1596e4(0x2ac)]){log(_0x1596e4(0x204)+_0x5cfef1+'\x20中找不到索引为\x20'+_0x400b4b+_0x1596e4(0x2d0),_0x1596e4(0x1df));return;}_0x168183[_0x5cfef1][_0x1596e4(0x29f)]['splice'](_0x400b4b,0x1),_0x168183[_0x5cfef1][_0x1596e4(0x1f1)][_0x1596e4(0x1fe)](_0x17d884=>{const _0x49a3fd=_0x1596e4;_0x17d884[_0x49a3fd(0x2ac)]>_0x400b4b&&_0x17d884[_0x49a3fd(0x21f)](_0x400b4b,0x1);}),_0x168183[_0x5cfef1][_0x1596e4(0x287)]&&_0x168183[_0x5cfef1][_0x1596e4(0x287)][_0x1596e4(0x2ac)]>_0x400b4b&&_0x168183[_0x5cfef1][_0x1596e4(0x287)][_0x1596e4(0x21f)](_0x400b4b,0x1),log(_0x1596e4(0x2e0)+_0x5cfef1+'\x20的第\x20'+(_0x400b4b+0x1)+_0x1596e4(0x2a3),_0x1596e4(0x2db)),saveTables(_0x168183);}export function moveRow(_0x27fd43,_0x3d87b9,_0x435c2d){const _0x550651=_0x5cf5ff,_0x49b26a=getMemoryState(),_0x7053cf=_0x49b26a[_0x27fd43];if(!_0x7053cf||_0x3d87b9<0x0||_0x3d87b9>=_0x7053cf[_0x550651(0x1f1)][_0x550651(0x2ac)])return;const _0x47c421=_0x435c2d==='up'?_0x3d87b9-0x1:_0x3d87b9+0x1;if(_0x47c421<0x0||_0x47c421>=_0x7053cf[_0x550651(0x1f1)]['length'])return;const [_0x55b71f]=_0x7053cf[_0x550651(0x1f1)][_0x550651(0x21f)](_0x3d87b9,0x1);_0x7053cf[_0x550651(0x1f1)][_0x550651(0x21f)](_0x47c421,0x0,_0x55b71f);if(_0x7053cf[_0x550651(0x226)]&&_0x7053cf['rowStatuses']['length']===_0x7053cf[_0x550651(0x1f1)][_0x550651(0x2ac)]+0x1){const [_0x1dcec7]=_0x7053cf['rowStatuses'][_0x550651(0x21f)](_0x3d87b9,0x1);_0x7053cf[_0x550651(0x226)][_0x550651(0x21f)](_0x47c421,0x0,_0x1dcec7);}log(_0x550651(0x2af)+_0x27fd43+'\x20的第\x20'+(_0x3d87b9+0x1)+_0x550651(0x2da)+(_0x47c421+0x1)+_0x550651(0x214),_0x550651(0x2db)),saveTables(_0x49b26a);}export function insertRow(_0x2c4fb5,_0x5438c7,_0x3a0c2b=_0x5cf5ff(0x235)){const _0x600e4c=_0x5cf5ff,_0x5c094b=getMemoryState(),_0x53a8b6=_0x5c094b[_0x2c4fb5];if(!_0x53a8b6){log(_0x600e4c(0x261)+_0x2c4fb5+_0x600e4c(0x1e5),'error');return;}let _0x40c8ad;typeof _0x5438c7===_0x600e4c(0x217)?_0x40c8ad=_0x3a0c2b===_0x600e4c(0x2de)?_0x5438c7:_0x5438c7+0x1:_0x40c8ad=_0x53a8b6[_0x600e4c(0x1f1)][_0x600e4c(0x2ac)];if(_0x40c8ad<0x0)_0x40c8ad=0x0;if(_0x40c8ad>_0x53a8b6[_0x600e4c(0x1f1)][_0x600e4c(0x2ac)])_0x40c8ad=_0x53a8b6[_0x600e4c(0x1f1)][_0x600e4c(0x2ac)];const _0x5e7d6f=new Array(_0x53a8b6[_0x600e4c(0x29f)]['length'])[_0x600e4c(0x2d8)]('');if(typeof _0x5438c7===_0x600e4c(0x1de)&&_0x5438c7!==null)for(const _0x393aba in _0x5438c7){const _0x318faf=parseInt(_0x393aba,0xa);!isNaN(_0x318faf)&&_0x318faf<_0x5e7d6f[_0x600e4c(0x2ac)]&&(_0x5e7d6f[_0x318faf]=_0x5438c7[_0x393aba],addHighlight(_0x2c4fb5,_0x40c8ad,_0x318faf));}_0x53a8b6['rows'][_0x600e4c(0x21f)](_0x40c8ad,0x0,_0x5e7d6f);if(!_0x53a8b6[_0x600e4c(0x226)])_0x53a8b6[_0x600e4c(0x226)]=Array(_0x53a8b6[_0x600e4c(0x1f1)][_0x600e4c(0x2ac)])['fill'](_0x600e4c(0x210));_0x53a8b6[_0x600e4c(0x226)][_0x600e4c(0x21f)](_0x40c8ad,0x0,_0x600e4c(0x210)),updatedTables['add'](_0x2c4fb5),log('成功在表格\x20'+_0x53a8b6[_0x600e4c(0x22f)]+_0x600e4c(0x25c)+_0x2c4fb5+')\x20的第\x20'+(_0x40c8ad+0x1)+_0x600e4c(0x1fd),_0x600e4c(0x2db));const _0x5e236c=getContext();if(_0x5e236c[_0x600e4c(0x25d)]&&_0x5e236c[_0x600e4c(0x25d)][_0x600e4c(0x2ac)]>0x0){const _0x33ada6=_0x5e236c[_0x600e4c(0x25d)][_0x5e236c[_0x600e4c(0x25d)][_0x600e4c(0x2ac)]-0x1];if(saveStateToMessage(_0x5c094b,_0x33ada6)){saveChat();return;}}saveChatDebounced();}export function addRow(_0x580950){const _0xc24c1e=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x580950])return;const _0x5cbf4d=currentTablesState[_0x580950],_0x4b7789=_0x5cbf4d[_0xc24c1e(0x29f)][_0xc24c1e(0x2ac)],_0xc142b7=Array(_0x4b7789)[_0xc24c1e(0x2d8)]('');_0x5cbf4d[_0xc24c1e(0x1f1)][_0xc24c1e(0x220)](_0xc142b7);if(!_0x5cbf4d[_0xc24c1e(0x226)])_0x5cbf4d['rowStatuses']=Array(_0x5cbf4d[_0xc24c1e(0x1f1)][_0xc24c1e(0x2ac)])[_0xc24c1e(0x2d8)]('normal');_0x5cbf4d[_0xc24c1e(0x226)][_0xc24c1e(0x220)]('normal'),updatedTables[_0xc24c1e(0x249)](_0x580950);const _0x5887dd='表格\x20['+_0x5cbf4d[_0xc24c1e(0x22f)]+_0xc24c1e(0x2b6);log(_0x5887dd,_0xc24c1e(0x230));const _0x4f37d9=getContext();if(_0x4f37d9[_0xc24c1e(0x25d)]&&_0x4f37d9[_0xc24c1e(0x25d)]['length']>0x0){const _0x2e1dc2=_0x4f37d9['chat'][_0x4f37d9[_0xc24c1e(0x25d)][_0xc24c1e(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x2e1dc2)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x23ac72){const _0x4eedb8=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x23ac72])return;const _0x242c25=currentTablesState[_0x23ac72],_0x3c975a=_0x4eedb8(0x231)+(_0x242c25[_0x4eedb8(0x29f)][_0x4eedb8(0x2ac)]+0x1);_0x242c25['headers'][_0x4eedb8(0x220)](_0x3c975a),_0x242c25[_0x4eedb8(0x1f1)][_0x4eedb8(0x1fe)](_0x3c41d9=>_0x3c41d9[_0x4eedb8(0x220)](''));if(!_0x242c25[_0x4eedb8(0x287)])_0x242c25[_0x4eedb8(0x287)]=[];_0x242c25[_0x4eedb8(0x287)][_0x4eedb8(0x220)](null);const _0x14acaa=_0x4eedb8(0x2a2)+_0x242c25[_0x4eedb8(0x22f)]+_0x4eedb8(0x2a8);log(_0x14acaa,'info');const _0xa7916=getContext();if(_0xa7916[_0x4eedb8(0x25d)]&&_0xa7916['chat']['length']>0x0){const _0x164454=_0xa7916[_0x4eedb8(0x25d)][_0xa7916[_0x4eedb8(0x25d)][_0x4eedb8(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x164454)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x43b31d,_0x39914e,_0x493fe5){const _0x20f60f=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x43b31d]||currentTablesState[_0x43b31d][_0x20f60f(0x29f)][_0x39914e]===undefined)return;const _0x4fc9ff=currentTablesState[_0x43b31d][_0x20f60f(0x22f)],_0x4f74f9=currentTablesState[_0x43b31d][_0x20f60f(0x29f)][_0x39914e];currentTablesState[_0x43b31d][_0x20f60f(0x29f)][_0x39914e]=_0x493fe5;const _0x46af9f='表格\x20['+_0x4fc9ff+']\x20的表头“'+_0x4f74f9+_0x20f60f(0x28d)+_0x493fe5+'”。';log(_0x46af9f,_0x20f60f(0x230));const _0x312619=getContext();if(_0x312619[_0x20f60f(0x25d)]&&_0x312619['chat'][_0x20f60f(0x2ac)]>0x0){const _0x36a4c6=_0x312619['chat'][_0x312619['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x36a4c6)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0x3410bd,_0x17ed90){const _0x4c194c=_0x5cf5ff,_0x3115c2=currentTablesState?.[_0x3410bd];if(!_0x3115c2||!_0x3115c2[_0x4c194c(0x1f1)][_0x17ed90])return;!_0x3115c2['rowStatuses']&&(_0x3115c2[_0x4c194c(0x226)]=Array(_0x3115c2['rows'][_0x4c194c(0x2ac)])[_0x4c194c(0x2d8)](_0x4c194c(0x210)));_0x3115c2[_0x4c194c(0x226)][_0x17ed90]=_0x4c194c(0x20c),updatedTables['add'](_0x3410bd);const _0x39aef0='表格\x20['+_0x3115c2[_0x4c194c(0x22f)]+']\x20的第\x20'+(_0x17ed90+0x1)+_0x4c194c(0x247);log(_0x39aef0,_0x4c194c(0x230));const _0xa4a1b8=getContext();if(_0xa4a1b8['chat']?.[_0x4c194c(0x2ac)]>0x0){const _0x21a04c=_0xa4a1b8[_0x4c194c(0x25d)][_0xa4a1b8[_0x4c194c(0x25d)][_0x4c194c(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x21a04c)){await saveChat(),renderTables();return;}}await saveChatDebounced(),renderTables();}export async function restoreRow(_0x47866a,_0x294ccd){const _0x54cd13=_0x5cf5ff,_0x337c1c=currentTablesState?.[_0x47866a];if(!_0x337c1c||!_0x337c1c[_0x54cd13(0x1f1)][_0x294ccd]||!_0x337c1c['rowStatuses'])return;_0x337c1c[_0x54cd13(0x226)][_0x294ccd]=_0x54cd13(0x210),updatedTables[_0x54cd13(0x249)](_0x47866a);const _0x549fa4=_0x54cd13(0x2a2)+_0x337c1c['name']+']\x20的第\x20'+(_0x294ccd+0x1)+_0x54cd13(0x221);log(_0x549fa4,_0x54cd13(0x230));const _0x2e6d96=getContext();if(_0x2e6d96['chat']?.[_0x54cd13(0x2ac)]>0x0){const _0x489e79=_0x2e6d96['chat'][_0x2e6d96[_0x54cd13(0x25d)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x489e79)){await saveChat(),renderTables();return;}}await saveChatDebounced(),renderTables();}export function commitPendingDeletions(){const _0x5385fb=_0x5cf5ff;if(!currentTablesState)return![];let _0x12a0a8=0x0;currentTablesState['forEach']((_0x44e24c,_0x3405f7)=>{const _0x2193cf=_0x8bba;if(!_0x44e24c[_0x2193cf(0x226)]||_0x44e24c[_0x2193cf(0x226)][_0x2193cf(0x2ac)]===0x0)return;let _0x38e493=![];for(let _0xc66ef6=_0x44e24c[_0x2193cf(0x1f1)]['length']-0x1;_0xc66ef6>=0x0;_0xc66ef6--){_0x44e24c[_0x2193cf(0x226)][_0xc66ef6]===_0x2193cf(0x20c)&&(_0x44e24c['rows'][_0x2193cf(0x21f)](_0xc66ef6,0x1),_0x44e24c[_0x2193cf(0x226)][_0x2193cf(0x21f)](_0xc66ef6,0x1),_0x12a0a8++,_0x38e493=!![]);}_0x38e493&&updatedTables['add'](_0x3405f7);});if(_0x12a0a8>0x0)return log(_0x5385fb(0x281)+_0x12a0a8+_0x5385fb(0x214),'info'),!![];return![];}export function insertColumn(_0x1be27c,_0x40dfd3,_0xa1a59){const _0x5f5af7=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x1be27c])return;const _0x1f7c85=currentTablesState[_0x1be27c],_0x3bcffb=_0xa1a59==='left'?_0x40dfd3:_0x40dfd3+0x1,_0x2b69dc='新列';_0x1f7c85[_0x5f5af7(0x29f)][_0x5f5af7(0x21f)](_0x3bcffb,0x0,_0x2b69dc),_0x1f7c85[_0x5f5af7(0x1f1)]['forEach'](_0x11a114=>_0x11a114[_0x5f5af7(0x21f)](_0x3bcffb,0x0,''));if(!_0x1f7c85[_0x5f5af7(0x287)])_0x1f7c85[_0x5f5af7(0x287)]=[];_0x1f7c85[_0x5f5af7(0x287)]['splice'](_0x3bcffb,0x0,null);const _0xb5cb6e='表格\x20['+_0x1f7c85[_0x5f5af7(0x22f)]+_0x5f5af7(0x2b9)+(_0x40dfd3+0x1)+'\x20列的'+(_0xa1a59===_0x5f5af7(0x1eb)?'左侧':'右侧')+_0x5f5af7(0x20b);log(_0xb5cb6e,_0x5f5af7(0x230));const _0x6a724d=getContext();if(_0x6a724d[_0x5f5af7(0x25d)]&&_0x6a724d['chat'][_0x5f5af7(0x2ac)]>0x0){const _0x4ddd86=_0x6a724d[_0x5f5af7(0x25d)][_0x6a724d['chat'][_0x5f5af7(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x4ddd86)){saveChat();return;}}saveChatDebounced();}export function moveColumn(_0x79cc16,_0x1a188a,_0x15df15){const _0x400297=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x79cc16])return;const _0x35e514=currentTablesState[_0x79cc16],_0x55355e=_0x35e514[_0x400297(0x29f)],_0x1ab8f0=_0x35e514[_0x400297(0x1f1)],_0x595228=_0x15df15==='left'?_0x1a188a-0x1:_0x1a188a+0x1;if(_0x595228<0x0||_0x595228>=_0x55355e['length']){log('无法移动列:索引\x20'+_0x1a188a+_0x400297(0x1e2),_0x400297(0x2d9));return;}const [_0x4a5148]=_0x55355e[_0x400297(0x21f)](_0x1a188a,0x1);_0x55355e['splice'](_0x595228,0x0,_0x4a5148),_0x1ab8f0[_0x400297(0x1fe)](_0x4e6fbd=>{const _0x425a2f=_0x400297,[_0xa4239d]=_0x4e6fbd[_0x425a2f(0x21f)](_0x1a188a,0x1);_0x4e6fbd['splice'](_0x595228,0x0,_0xa4239d);});if(_0x35e514[_0x400297(0x287)]&&_0x35e514[_0x400297(0x287)]['length']>_0x1a188a){const [_0xfd4a6b]=_0x35e514['columnWidths'][_0x400297(0x21f)](_0x1a188a,0x1);_0x35e514[_0x400297(0x287)][_0x400297(0x21f)](_0x595228,0x0,_0xfd4a6b);}const _0x3d4292=_0x400297(0x2a2)+_0x35e514['name']+']\x20的列“'+_0x4a5148+_0x400297(0x2a0)+(_0x15df15===_0x400297(0x1eb)?'左':'右')+_0x400297(0x289);log(_0x3d4292,'info');const _0x30d2ba=getContext();if(_0x30d2ba[_0x400297(0x25d)]&&_0x30d2ba[_0x400297(0x25d)][_0x400297(0x2ac)]>0x0){const _0x255ea4=_0x30d2ba[_0x400297(0x25d)][_0x30d2ba[_0x400297(0x25d)][_0x400297(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x255ea4)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0x735e57){const _0xe42acf=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x735e57])return;const _0x213081=currentTablesState[_0x735e57][_0xe42acf(0x22f)];currentTablesState[_0xe42acf(0x21f)](_0x735e57,0x1);const _0x3da7ce=_0xe42acf(0x2a2)+_0x213081+_0xe42acf(0x299);log(_0x3da7ce,_0xe42acf(0x2db));const _0x2359e1=getContext();if(_0x2359e1[_0xe42acf(0x25d)]&&_0x2359e1[_0xe42acf(0x25d)][_0xe42acf(0x2ac)]>0x0){const _0x5b0409=_0x2359e1[_0xe42acf(0x25d)][_0x2359e1[_0xe42acf(0x25d)][_0xe42acf(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x5b0409)){saveChat(),log(_0xe42acf(0x1db),'success');return;}}log('无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!',_0xe42acf(0x1df)),saveChatDebounced();}export function addTable(_0x571cd2){const _0x4fc2d7=_0x5cf5ff;if(!_0x571cd2||!_0x571cd2[_0x4fc2d7(0x257)]()){log('无法创建表格:名称不能为空。',_0x4fc2d7(0x1df)),toastr[_0x4fc2d7(0x1df)](_0x4fc2d7(0x274),_0x4fc2d7(0x216));return;}!currentTablesState&&loadTables();if(currentTablesState[_0x4fc2d7(0x1e3)](_0x11e6ff=>_0x11e6ff[_0x4fc2d7(0x22f)]===_0x571cd2['trim']())){log('无法创建表格:名为\x20\x22'+_0x571cd2+'\x22\x20的表格已存在。',_0x4fc2d7(0x1df)),toastr[_0x4fc2d7(0x1df)]('名为\x20\x22'+_0x571cd2+'\x22\x20的表格已存在。',_0x4fc2d7(0x216));return;}const _0x60604d={'name':_0x571cd2['trim'](),'headers':['新列\x201'],'rows':[],'rowStatuses':[],'columnWidths':[],'note':_0x4fc2d7(0x2c1),'rule_add':'允许','rule_delete':'允许','rule_update':'允许','charLimitRules':{},'rowLimitRule':0x0};currentTablesState[_0x4fc2d7(0x220)](_0x60604d);const _0x19f2c8='已成功创建新表格:['+_0x571cd2['trim']()+']。';log(_0x19f2c8,'success');const _0x22cf51=getContext();if(_0x22cf51[_0x4fc2d7(0x25d)]&&_0x22cf51['chat'][_0x4fc2d7(0x2ac)]>0x0){const _0x20b0b5=_0x22cf51[_0x4fc2d7(0x25d)][_0x22cf51['chat'][_0x4fc2d7(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x20b0b5)){saveChat(),log(_0x4fc2d7(0x253),_0x4fc2d7(0x2db));return;}}log(_0x4fc2d7(0x227),_0x4fc2d7(0x1df)),saveChatDebounced();}export function renameTable(_0xd17636,_0x4a7b7f){const _0x2614c2=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0xd17636]){log('重命名失败:表格不存在。',_0x2614c2(0x1df)),toastr[_0x2614c2(0x1df)](_0x2614c2(0x297),'重命名失败');return;}const _0x27c58c=_0x4a7b7f[_0x2614c2(0x257)]();if(!_0x27c58c){log(_0x2614c2(0x279),_0x2614c2(0x1df)),toastr[_0x2614c2(0x1df)](_0x2614c2(0x274),_0x2614c2(0x2c6));return;}if(currentTablesState[_0x2614c2(0x1e3)]((_0x2addb3,_0x107806)=>_0x107806!==_0xd17636&&_0x2addb3[_0x2614c2(0x22f)]===_0x27c58c)){log('重命名失败:名为\x20\x22'+_0x27c58c+_0x2614c2(0x24e),_0x2614c2(0x1df)),toastr[_0x2614c2(0x1df)](_0x2614c2(0x240)+_0x27c58c+_0x2614c2(0x24e),'重命名失败');return;}const _0x3b811a=currentTablesState[_0xd17636][_0x2614c2(0x22f)];currentTablesState[_0xd17636]['name']=_0x27c58c,log(_0x2614c2(0x2cd)+_0x3b811a+_0x2614c2(0x2d2)+_0x27c58c+'\x22。','success');const _0x1f8d69=getContext();if(_0x1f8d69[_0x2614c2(0x25d)]&&_0x1f8d69['chat']['length']>0x0){const _0x3e8a75=_0x1f8d69[_0x2614c2(0x25d)][_0x1f8d69[_0x2614c2(0x25d)][_0x2614c2(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x3e8a75)){saveChat();return;}}saveChatDebounced();}export function moveTable(_0x451a60,_0x3c2f0c){const _0x2ce06c=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x451a60])return;const _0x147d68=_0x3c2f0c==='up'?_0x451a60-0x1:_0x451a60+0x1;if(_0x147d68<0x0||_0x147d68>=currentTablesState[_0x2ce06c(0x2ac)]){log(_0x2ce06c(0x260)+_0x451a60+_0x2ce06c(0x1e2),_0x2ce06c(0x2d9));return;}const _0x354400=currentTablesState[_0x451a60];currentTablesState[_0x451a60]=currentTablesState[_0x147d68],currentTablesState[_0x147d68]=_0x354400;const _0x5f174b=_0x2ce06c(0x2a2)+_0x354400[_0x2ce06c(0x22f)]+_0x2ce06c(0x25b);log(_0x5f174b,_0x2ce06c(0x2db));const _0x34e3ea=getContext();if(_0x34e3ea['chat']&&_0x34e3ea[_0x2ce06c(0x25d)]['length']>0x0){const _0x36fdfc=_0x34e3ea[_0x2ce06c(0x25d)][_0x34e3ea['chat'][_0x2ce06c(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x36fdfc)){saveChat(),log(_0x2ce06c(0x2d6),_0x2ce06c(0x2db));return;}}log(_0x2ce06c(0x2bc),_0x2ce06c(0x1df)),saveChatDebounced();}export function updateTableRules(_0x24cdb2,_0x4ab488){const _0xb8d2e5=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x24cdb2])return;const _0x19b3ca=currentTablesState[_0x24cdb2];_0x19b3ca[_0xb8d2e5(0x24d)]=_0x4ab488[_0xb8d2e5(0x24d)],_0x19b3ca[_0xb8d2e5(0x294)]=_0x4ab488['rule_add'],_0x19b3ca[_0xb8d2e5(0x1f3)]=_0x4ab488[_0xb8d2e5(0x1f3)],_0x19b3ca[_0xb8d2e5(0x255)]=_0x4ab488[_0xb8d2e5(0x255)],_0x19b3ca[_0xb8d2e5(0x2c8)]=_0x4ab488['charLimitRules'],_0x19b3ca[_0xb8d2e5(0x219)]=_0x4ab488[_0xb8d2e5(0x219)],delete _0x19b3ca[_0xb8d2e5(0x28b)];const _0x414c1b='表格\x20['+_0x19b3ca[_0xb8d2e5(0x22f)]+_0xb8d2e5(0x25e);log(_0x414c1b,_0xb8d2e5(0x230));const _0x56c8e=getContext();if(_0x56c8e[_0xb8d2e5(0x25d)]&&_0x56c8e[_0xb8d2e5(0x25d)][_0xb8d2e5(0x2ac)]>0x0){const _0x212d86=_0x56c8e[_0xb8d2e5(0x25d)][_0x56c8e['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x212d86)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x3381ae,_0x374e61,_0x37c172){const _0x4340a4=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x3381ae]){log(_0x4340a4(0x21b)+_0x3381ae+_0x4340a4(0x29c),_0x4340a4(0x1df));return;}const _0x1e88f6=currentTablesState[_0x3381ae];if(_0x374e61>=_0x1e88f6[_0x4340a4(0x1f1)][_0x4340a4(0x2ac)]){log(_0x4340a4(0x206)+_0x374e61+'),已智能转换为在表格\x20['+_0x1e88f6[_0x4340a4(0x22f)]+_0x4340a4(0x284),'warn'),insertRow(_0x3381ae,_0x37c172);return;}const _0x327a7f=_0x1e88f6[_0x4340a4(0x1f1)][_0x374e61];for(const _0x1ebff4 in _0x37c172){const _0x4f0c9e=parseInt(_0x1ebff4,0xa);_0x4f0c9e<_0x327a7f[_0x4340a4(0x2ac)]&&(_0x327a7f[_0x4f0c9e]=_0x37c172[_0x4f0c9e],addHighlight(_0x3381ae,_0x374e61,_0x4f0c9e));}updatedTables[_0x4340a4(0x249)](_0x3381ae);const _0x54059f=_0x4340a4(0x27e)+_0x1e88f6[_0x4340a4(0x22f)]+_0x4340a4(0x1ff)+(_0x374e61+0x1)+_0x4340a4(0x214);log(_0x54059f,'info');const _0x15f758=getContext();if(_0x15f758[_0x4340a4(0x25d)]&&_0x15f758['chat']['length']>0x0){const _0x158f4e=_0x15f758[_0x4340a4(0x25d)][_0x15f758['chat'][_0x4340a4(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x158f4e)){saveChat();return;}}saveChatDebounced();}export function clearAllTables(){const _0x29e187=_0x5cf5ff;if(!currentTablesState){log('无法清空:当前表格状态为空。',_0x29e187(0x1df));return;}currentTablesState['forEach']((_0x5bd7c7,_0x1ad3c8)=>{const _0x1738c2=_0x29e187;_0x5bd7c7[_0x1738c2(0x1f1)][_0x1738c2(0x2ac)]>0x0&&updatedTables[_0x1738c2(0x249)](_0x1ad3c8),_0x5bd7c7[_0x1738c2(0x1f1)]=[],_0x5bd7c7[_0x1738c2(0x226)]=[];}),log(_0x29e187(0x1da),_0x29e187(0x2d9));const _0x5b5a1a=getContext();if(_0x5b5a1a[_0x29e187(0x25d)]&&_0x5b5a1a[_0x29e187(0x25d)][_0x29e187(0x2ac)]>0x0){const _0x30c38c=_0x5b5a1a[_0x29e187(0x25d)][_0x5b5a1a[_0x29e187(0x25d)][_0x29e187(0x2ac)]-0x1];if(saveStateToMessage(currentTablesState,_0x30c38c)){saveChat(),log(_0x29e187(0x2b0),_0x29e187(0x2db)),toastr['success'](_0x29e187(0x26a),_0x29e187(0x26c));return;}}log(_0x29e187(0x1f5),_0x29e187(0x1df)),saveChatDebounced();}function checkTableRules(_0x531c5b){const _0x16f95c=_0x5cf5ff;let _0x6168b4=[];_0x531c5b[_0x16f95c(0x219)]&&_0x531c5b[_0x16f95c(0x219)]>0x0&&_0x531c5b['rows']['length']>_0x531c5b['rowLimitRule']&&_0x6168b4['push']('【当前('+_0x531c5b[_0x16f95c(0x22f)]+_0x16f95c(0x27b)+_0x531c5b[_0x16f95c(0x219)]+')行,请结合剧情缩减至('+_0x531c5b[_0x16f95c(0x219)]+_0x16f95c(0x2a4));const _0x2b029b=_0x531c5b[_0x16f95c(0x2c8)]||{};for(const _0x410d1c in _0x2b029b){const _0x2980db=parseInt(_0x410d1c,0xa),_0x957517=_0x2b029b[_0x2980db];if(_0x957517>0x0&&_0x2980db>=0x0&&_0x2980db<_0x531c5b[_0x16f95c(0x29f)][_0x16f95c(0x2ac)]){const _0x43c4a0=_0x531c5b[_0x16f95c(0x29f)][_0x2980db],_0x1466fc=[];_0x531c5b['rows'][_0x16f95c(0x1fe)]((_0x3d352d,_0x357fc5)=>{const _0x51d06f=_0x16f95c;if(_0x531c5b[_0x51d06f(0x226)]&&_0x531c5b['rowStatuses'][_0x357fc5]===_0x51d06f(0x20c))return;const _0x54e00a=_0x3d352d[_0x2980db]||'';_0x54e00a[_0x51d06f(0x2ac)]>_0x957517&&_0x1466fc[_0x51d06f(0x220)](_0x357fc5);});if(_0x1466fc[_0x16f95c(0x2ac)]>0x0){const _0x94c697=_0x1466fc[_0x16f95c(0x1e6)]('、');_0x6168b4[_0x16f95c(0x220)]('【当前('+_0x531c5b[_0x16f95c(0x22f)]+_0x16f95c(0x233)+_0x94c697+_0x16f95c(0x1f9)+_0x43c4a0+_0x16f95c(0x1e4)+_0x957517+')字限制,请进行缩减。】');}}}return _0x6168b4[_0x16f95c(0x1e6)]('\x0a');}export function convertTablesToCsvString(){const _0x343821=_0x5cf5ff;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x993d17='';return currentTablesState[_0x343821(0x1fe)]((_0x439f41,_0x2d3dfe)=>{const _0x23413a=_0x343821;_0x993d17+=_0x23413a(0x2b2)+_0x2d3dfe+':'+_0x439f41[_0x23413a(0x22f)]+'\x0a',_0x993d17+=_0x23413a(0x2a1)+(_0x439f41[_0x23413a(0x24d)]||'无')+'\x0a';const _0x5b6851=_0x439f41[_0x23413a(0x22f)][_0x23413a(0x2bd)](/\s/g,'')+'内容';_0x993d17+='<'+_0x5b6851+'>\x0a';const _0x4202a3=_0x439f41[_0x23413a(0x29f)][_0x23413a(0x277)]((_0x413b38,_0x2d5295)=>_0x2d5295+':'+_0x413b38)[_0x23413a(0x1e6)](',');_0x993d17+=_0x23413a(0x272)+_0x4202a3+'\x0a';_0x439f41[_0x23413a(0x1f1)][_0x23413a(0x2ac)]===0x0||_0x439f41[_0x23413a(0x1f1)]['every']((_0x330072,_0x230b06)=>_0x439f41[_0x23413a(0x226)]&&_0x439f41[_0x23413a(0x226)][_0x230b06]===_0x23413a(0x20c))?_0x993d17+='(该表当前内容为空)\x0a':_0x439f41[_0x23413a(0x1f1)]['forEach']((_0x1a764e,_0x46527a)=>{const _0xe0ba17=_0x23413a;if(_0x439f41[_0xe0ba17(0x226)]&&_0x439f41[_0xe0ba17(0x226)][_0x46527a]===_0xe0ba17(0x20c))return;if(Array[_0xe0ba17(0x2d4)](_0x1a764e)){const _0x220f1a=_0x1a764e[_0xe0ba17(0x277)](_0x4f26c9=>{const _0x27a30d=_0xe0ba17;return _0x4f26c9===null||_0x4f26c9===undefined||_0x4f26c9===''?'未知':_0x4f26c9[_0x27a30d(0x298)]();})[_0xe0ba17(0x1e6)](',');_0x993d17+=_0x46527a+','+_0x220f1a+'\x0a';}});const _0x36ef0c=checkTableRules(_0x439f41);_0x36ef0c&&(_0x993d17+=_0x36ef0c+'\x0a'),_0x993d17+='\x0a',_0x993d17+='【增加】:\x20'+(_0x439f41[_0x23413a(0x294)]||'允许')+'\x0a',_0x993d17+=_0x23413a(0x22e)+(_0x439f41[_0x23413a(0x1f3)]||'允许')+'\x0a',_0x993d17+=_0x23413a(0x276)+(_0x439f41['rule_update']||'允许')+'\x0a',_0x2d3dfe{const _0x491a98=_0x154035;_0x358dd8+='\x0a<'+_0x3e21f5['name']+'>\x0a';const _0x3cef70='|\x20'+_0x3e21f5['headers'][_0x491a98(0x1e6)]('\x20|\x20')+'\x20|';_0x358dd8+=_0x3cef70+'\x0a';const _0x1d3a93='|'+_0x3e21f5[_0x491a98(0x29f)][_0x491a98(0x277)](()=>'---')[_0x491a98(0x1e6)]('|')+'|';_0x358dd8+=_0x1d3a93+'\x0a';const _0x422860=_0x3e21f5['rows']['filter']((_0x2f7eb5,_0x253c15)=>!_0x3e21f5[_0x491a98(0x226)]||_0x3e21f5[_0x491a98(0x226)][_0x253c15]!==_0x491a98(0x20c));_0x422860[_0x491a98(0x2ac)]>0x0?_0x422860['forEach'](_0x5a3af3=>{const _0x338b78=_0x491a98;if(Array[_0x338b78(0x2d4)](_0x5a3af3)){const _0xdfbcc2=_0x5a3af3[_0x338b78(0x277)](_0x18e7bd=>_0x18e7bd===null||_0x18e7bd===undefined||_0x18e7bd===''?'\x20':_0x18e7bd[_0x338b78(0x298)]()),_0x32e495='|\x20'+_0xdfbcc2[_0x338b78(0x1e6)]('\x20|\x20')+'\x20|';_0x358dd8+=_0x32e495+'\x0a';}}):_0x358dd8+=_0x491a98(0x282),_0x358dd8+='\x0a';}),_0x358dd8[_0x154035(0x257)]();}loadTables();export function getBatchFillerRuleTemplate(){const _0x218b42=_0x5cf5ff;return extension_settings[extensionName]?.[_0x218b42(0x2dd)]??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0xf75747){extension_settings[extensionName]['batch_filler_rule_template']=_0xf75747,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){const _0x1be54c=_0x5cf5ff;return extension_settings[extensionName]?.[_0x1be54c(0x24f)]??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0x510d77){const _0x3bfa83=_0x5cf5ff;extension_settings[extensionName][_0x3bfa83(0x24f)]=_0x510d77,saveSettingsDebounced();}export function getAiFlowTemplateForInjection(){const _0x49edc3=_0x5cf5ff;return extension_settings[extensionName]?.[_0x49edc3(0x265)]??DEFAULT_AI_FLOW_TEMPLATE;}export async function updateTableFromText(_0x50ca49){const _0x57320c=_0x5cf5ff;if(!_0x50ca49){log(_0x57320c(0x1ed),_0x57320c(0x2d9));return;}const _0x1790ea=_0x50ca49[_0x57320c(0x1f4)](/([\s\S]*?)<\/Amily2Edit>/);if(!_0x1790ea||!_0x1790ea[0x1]){log(_0x57320c(0x1e7),_0x57320c(0x2d9));return;}let _0x2ccf84=_0x1790ea[0x1][_0x57320c(0x2bd)](//g,'')[_0x57320c(0x257)]();if(!_0x2ccf84){log(_0x57320c(0x241),_0x57320c(0x230));return;}const _0xe68068=_0x2ccf84[_0x57320c(0x2c3)]('\x0a')[_0x57320c(0x2dc)](_0xe99f71=>_0xe99f71['trim']()!=='');log(_0x57320c(0x1ef)+_0xe68068[_0x57320c(0x2ac)]+_0x57320c(0x271),_0x57320c(0x230));const _0x29eaac={'insertRow':(_0x5411de,_0x2b8f1b)=>{const _0x1ec01c=_0x57320c;log(_0x1ec01c(0x23b)+_0x5411de+_0x1ec01c(0x26d)+JSON[_0x1ec01c(0x290)](_0x2b8f1b)+')',_0x1ec01c(0x230)),insertRow(_0x5411de,_0x2b8f1b);},'deleteRow':(_0xdcf451,_0x313e0a)=>{const _0x26435e=_0x57320c;log(_0x26435e(0x2e1)+_0xdcf451+_0x26435e(0x27a)+_0x313e0a+')',_0x26435e(0x230)),deleteRow(_0xdcf451,_0x313e0a);},'updateRow':(_0x1f1ab4,_0xf5032d,_0x23bf40)=>{const _0x1d9810=_0x57320c;log(_0x1d9810(0x2ba)+_0x1f1ab4+',\x20rowIndex='+_0xf5032d+',\x20data='+JSON[_0x1d9810(0x290)](_0x23bf40)+')',_0x1d9810(0x230)),updateRow(_0x1f1ab4,_0xf5032d,_0x23bf40);}};try{const _0xd97c67=Object[_0x57320c(0x291)](async function(){})[_0x57320c(0x21e)],_0xbbf377=new _0xd97c67(_0x57320c(0x207),'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20insertRow,\x20deleteRow,\x20updateRow\x20}\x20=\x20runner;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2ccf84+_0x57320c(0x213));await _0xbbf377(_0x29eaac),log(_0x57320c(0x2a6),_0x57320c(0x2db)),toastr['success']('已根据AI的指示成功更新表格!','填表完成'),document[_0x57320c(0x244)](new CustomEvent('amily2-force-ui-reload'));}catch(_0xb0675d){log(_0x57320c(0x283)+_0xb0675d[_0x57320c(0x232)],_0x57320c(0x1df)),toastr[_0x57320c(0x1df)](_0x57320c(0x2c5)+_0xb0675d[_0x57320c(0x232)],_0x57320c(0x26e));}}export function saveAiTemplate(_0x1e8526){extension_settings[extensionName]['amily2_ai_template']=_0x1e8526,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0x5e1829=![]){const _0x590252=_0x5cf5ff;if(!currentTablesState){log(_0x590252(0x2b4),'error'),toastr[_0x590252(0x1df)](_0x590252(0x2a5));return;}let _0x963da7,_0x2948f7,_0x217d44;_0x5e1829?(_0x963da7=JSON['parse'](JSON[_0x590252(0x290)](currentTablesState)),_0x2948f7=_0x590252(0x27c),_0x217d44=_0x590252(0x254)):(_0x963da7=currentTablesState[_0x590252(0x277)](_0x5eb455=>({'name':_0x5eb455['name'],'headers':_0x5eb455[_0x590252(0x29f)],'columnWidths':_0x5eb455[_0x590252(0x287)]||[],'note':_0x5eb455['note'],'rule_add':_0x5eb455[_0x590252(0x294)],'rule_delete':_0x5eb455[_0x590252(0x1f3)],'rule_update':_0x5eb455[_0x590252(0x255)],'charLimitRules':_0x5eb455['charLimitRules']||{},'rowLimitRule':_0x5eb455[_0x590252(0x219)]||0x0,'rows':[],'rowStatuses':[]})),_0x2948f7=_0x590252(0x28c),_0x217d44=_0x590252(0x23c));const _0x3ac02a={'version':_0x590252(0x21a),'batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'tables':_0x963da7},_0x351af9=new Blob([JSON[_0x590252(0x290)](_0x3ac02a,null,0x2)],{'type':_0x590252(0x215)}),_0x334f8a=URL[_0x590252(0x225)](_0x351af9),_0x5965a0=document['createElement']('a');_0x5965a0[_0x590252(0x273)]=_0x334f8a,_0x5965a0[_0x590252(0x1e9)]=_0x590252(0x248)+_0x217d44+'-'+new Date()[_0x590252(0x208)]()[_0x590252(0x22a)](0x0,0xa)+_0x590252(0x1ec),document[_0x590252(0x2b5)][_0x590252(0x237)](_0x5965a0),_0x5965a0['click'](),document[_0x590252(0x2b5)][_0x590252(0x285)](_0x5965a0),URL[_0x590252(0x22d)](_0x334f8a),log('【'+_0x217d44+'】已成功导出。',_0x590252(0x2db)),toastr['success']('【'+_0x217d44+_0x590252(0x228),_0x590252(0x267));}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0x2f47f4){const _0x491693=_0x5cf5ff,_0x38e956=document[_0x491693(0x245)](_0x491693(0x1f6));_0x38e956[_0x491693(0x25f)]=_0x491693(0x2bf),_0x38e956['accept']=_0x491693(0x1ec),_0x38e956[_0x491693(0x212)]=_0x3193fd=>{const _0x1cee3b=_0x491693,_0x394510=_0x3193fd[_0x1cee3b(0x2a7)]['files'][0x0];if(!_0x394510)return;const _0x429a3d=new FileReader();_0x429a3d[_0x1cee3b(0x2be)]=_0x496a98=>{const _0x4de077=_0x1cee3b;try{const _0x5e1293=JSON[_0x4de077(0x2df)](_0x496a98[_0x4de077(0x2a7)][_0x4de077(0x234)]);if(!_0x5e1293[_0x4de077(0x2cc)]||!Array[_0x4de077(0x2d4)](_0x5e1293['tables']))throw new Error(_0x4de077(0x263));const _0x298f41=window[_0x4de077(0x222)]('【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格(包括结构和内容)。\x0a\x0a此操作不可逆,是否确定要继续?');if(!_0x298f41){log('用户取消了导入操作。',_0x4de077(0x230)),toastr[_0x4de077(0x230)](_0x4de077(0x296));return;}if(_0x5e1293[_0x4de077(0x2cc)]==='Amily2-Table-Preset-v3.0-separated_templates')saveBatchFillerRuleTemplate(_0x5e1293[_0x4de077(0x29e)]||''),saveBatchFillerFlowTemplate(_0x5e1293[_0x4de077(0x2cb)]||''),saveAiTemplate(_0x5e1293[_0x4de077(0x239)]||'');else{if(_0x5e1293['aiRuleTemplate']!==undefined&&_0x5e1293[_0x4de077(0x2c2)]!==undefined)saveBatchFillerRuleTemplate(_0x5e1293['aiRuleTemplate']||''),saveBatchFillerFlowTemplate(_0x5e1293[_0x4de077(0x2c2)]||''),saveAiTemplate(_0x5e1293[_0x4de077(0x2c2)]||'');else _0x5e1293[_0x4de077(0x252)]?(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x5e1293[_0x4de077(0x252)]||''),saveAiTemplate(_0x5e1293[_0x4de077(0x252)]||'')):log('导入的预设中缺少指令模板字段,模板将不会被更新。',_0x4de077(0x2d9));}const _0x4f4f06=_0x5e1293[_0x4de077(0x1f8)];_0x4f4f06[_0x4de077(0x1fe)](_0x1dadc8=>{const _0x465821=_0x4de077;if(_0x1dadc8[_0x465821(0x22f)]===undefined||_0x1dadc8[_0x465821(0x29f)]===undefined||_0x1dadc8[_0x465821(0x1f1)]===undefined)throw new Error(_0x465821(0x201)+JSON[_0x465821(0x290)](_0x1dadc8));if(_0x1dadc8['note']===undefined)_0x1dadc8[_0x465821(0x24d)]='无';if(_0x1dadc8[_0x465821(0x294)]===undefined)_0x1dadc8[_0x465821(0x294)]='允许';if(_0x1dadc8[_0x465821(0x1f3)]===undefined)_0x1dadc8['rule_delete']='允许';if(_0x1dadc8[_0x465821(0x255)]===undefined)_0x1dadc8[_0x465821(0x255)]='允许';if(_0x1dadc8[_0x465821(0x28b)]&&!_0x1dadc8[_0x465821(0x2c8)])_0x1dadc8[_0x465821(0x2c8)]={},_0x1dadc8['charLimitRule'][_0x465821(0x29b)]!==-0x1&&_0x1dadc8[_0x465821(0x28b)][_0x465821(0x209)]>0x0&&(_0x1dadc8['charLimitRules'][_0x1dadc8['charLimitRule'][_0x465821(0x29b)]]=_0x1dadc8['charLimitRule'][_0x465821(0x209)]);else _0x1dadc8['charLimitRules']===undefined&&(_0x1dadc8[_0x465821(0x2c8)]={});delete _0x1dadc8['charLimitRule'],!_0x1dadc8[_0x465821(0x226)]&&(_0x1dadc8['rowStatuses']=Array(_0x1dadc8[_0x465821(0x1f1)][_0x465821(0x2ac)])[_0x465821(0x2d8)]('normal')),_0x1dadc8[_0x465821(0x219)]===undefined&&(_0x1dadc8[_0x465821(0x219)]=0x0),_0x1dadc8[_0x465821(0x287)]===undefined&&(_0x1dadc8[_0x465821(0x287)]=[]);}),setMemoryState(_0x4f4f06);const _0x3e173e=getContext();if(_0x3e173e[_0x4de077(0x25d)]&&_0x3e173e[_0x4de077(0x25d)][_0x4de077(0x2ac)]>0x0){const _0x2f6919=_0x3e173e[_0x4de077(0x25d)][_0x3e173e[_0x4de077(0x25d)][_0x4de077(0x2ac)]-0x1];saveStateToMessage(getMemoryState(),_0x2f6919)&&(saveChat(),log(_0x4de077(0x1f0),'success'));}else saveChatDebounced();log(_0x4de077(0x24c),_0x4de077(0x2db)),toastr[_0x4de077(0x2db)]('预设已成功导入!',_0x4de077(0x280)),typeof _0x2f47f4===_0x4de077(0x2aa)&&_0x2f47f4();}catch(_0x59cca0){log('导入预设失败:\x20'+_0x59cca0['message'],_0x4de077(0x1df)),toastr[_0x4de077(0x1df)](_0x4de077(0x20d)+_0x59cca0[_0x4de077(0x232)],'错误');}},_0x429a3d[_0x1cee3b(0x236)](_0x394510);},_0x38e956['click']();}function _0x8bba(_0x526c0b,_0x50cdd5){const _0x2ce62b=_0x2ce6();return _0x8bba=function(_0x8bbac3,_0x4d35ba){_0x8bbac3=_0x8bbac3-0x1da;let _0x1360e0=_0x2ce62b[_0x8bbac3];return _0x1360e0;},_0x8bba(_0x526c0b,_0x50cdd5);}export async function rollbackState(){const _0x5496c2=_0x5cf5ff,_0xdae7dd=getContext();if(!_0xdae7dd||!_0xdae7dd[_0x5496c2(0x25d)]||_0xdae7dd[_0x5496c2(0x25d)][_0x5496c2(0x2ac)]<0x2)return log(_0x5496c2(0x292),_0x5496c2(0x2d9)),toastr['warning'](_0x5496c2(0x256)),![];const _0x4946de=_0xdae7dd[_0x5496c2(0x25d)],_0x14c70b=_0x4946de['length']-0x1,_0x1e1fd2=_0x4946de[_0x14c70b];log(_0x5496c2(0x24b)+(_0x14c70b-0x1)+_0x5496c2(0x295),_0x5496c2(0x230));const _0x169bee=loadTables(_0x14c70b);if(!_0x169bee)return log('未能在上一楼找到可用的表格状态,无法回退。',_0x5496c2(0x1df)),toastr[_0x5496c2(0x1df)](_0x5496c2(0x2ad)),![];setMemoryState(_0x169bee);if(saveStateToMessage(_0x169bee,_0x1e1fd2))await saveChat(),log(_0x5496c2(0x2b3),'success');else return log(_0x5496c2(0x1ee),_0x5496c2(0x1df)),toastr[_0x5496c2(0x1df)](_0x5496c2(0x242)),![];return renderTables(),updateOrInsertTableInChat(),log(_0x5496c2(0x2bb),_0x5496c2(0x230)),!![];}export async function rollbackAndRefill(){const _0x156e4c=_0x5cf5ff;toastr[_0x156e4c(0x230)]('正在执行回退并重新填表...');const _0x2ad974=await rollbackState();if(!_0x2ad974){toastr[_0x156e4c(0x1df)]('状态回退失败,已中止操作。');return;}toastr[_0x156e4c(0x2db)](_0x156e4c(0x1dd));const _0x40d147=getContext(),_0x54be8e=_0x40d147['chat'][_0x40d147[_0x156e4c(0x25d)][_0x156e4c(0x2ac)]-0x1];try{await fillWithSecondaryApi(_0x54be8e,!![]),log('回退并重新填表操作完成。',_0x156e4c(0x2db));}catch(_0x4855e4){log(_0x156e4c(0x229)+_0x4855e4['message'],_0x156e4c(0x1df)),toastr[_0x156e4c(0x1df)](_0x156e4c(0x2ce)+_0x4855e4['message']);}}export function updateColumnWidth(_0x5e363a,_0x3a8588,_0x9ddf4e){const _0x3b0670=_0x5cf5ff;if(!currentTablesState||!currentTablesState[_0x5e363a])return;const _0x4038ee=currentTablesState[_0x5e363a];!_0x4038ee[_0x3b0670(0x287)]&&(_0x4038ee['columnWidths']=[]);while(_0x4038ee[_0x3b0670(0x287)]['length']<_0x4038ee['headers'][_0x3b0670(0x2ac)]){_0x4038ee[_0x3b0670(0x287)][_0x3b0670(0x220)](null);}_0x4038ee['columnWidths'][_0x3a8588]=_0x9ddf4e;const _0x2c3de6=getContext();if(_0x2c3de6[_0x3b0670(0x25d)]&&_0x2c3de6[_0x3b0670(0x25d)][_0x3b0670(0x2ac)]>0x0){const _0x2c2dab=_0x2c3de6['chat'][_0x2c3de6['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x2c2dab)){saveChat();return;}}saveChatDebounced();}export function isCurrentTablesEmpty(){const _0x3d48ee=_0x5cf5ff,_0x3b5374=getMemoryState();if(!_0x3b5374||_0x3b5374[_0x3d48ee(0x2ac)]===0x0)return!![];return _0x3b5374[_0x3d48ee(0x1ea)](_0x5494d7=>!_0x5494d7[_0x3d48ee(0x1f1)]||_0x5494d7[_0x3d48ee(0x1f1)][_0x3d48ee(0x2ac)]===0x0);}export function clearGlobalPreset(){const _0x30cd67=_0x5cf5ff;if(extension_settings[extensionName]&&extension_settings[extensionName]['global_table_preset']){const _0x546e77=window[_0x30cd67(0x222)](_0x30cd67(0x264));_0x546e77?(delete extension_settings[extensionName][_0x30cd67(0x27f)],saveSettingsDebounced(),log(_0x30cd67(0x20e),'success'),toastr['success'](_0x30cd67(0x262),_0x30cd67(0x28a))):(log(_0x30cd67(0x202),'info'),toastr[_0x30cd67(0x230)](_0x30cd67(0x21d)));}else log(_0x30cd67(0x20f),_0x30cd67(0x230)),toastr[_0x30cd67(0x230)](_0x30cd67(0x268),'提示');}export function importGlobalPreset(_0x24274c){const _0x3ea7b3=_0x5cf5ff,_0x5c73bb=document['createElement']('input');_0x5c73bb[_0x3ea7b3(0x25f)]='file',_0x5c73bb['accept']=_0x3ea7b3(0x1ec),_0x5c73bb['onchange']=_0x494cea=>{const _0x313fc1=_0x3ea7b3,_0x50f239=_0x494cea[_0x313fc1(0x2a7)][_0x313fc1(0x2b1)][0x0];if(!_0x50f239)return;const _0x4d1998=new FileReader();_0x4d1998[_0x313fc1(0x2be)]=_0x1fcffe=>{const _0x3cb5d3=_0x313fc1;try{const _0x157a3d=JSON[_0x3cb5d3(0x2df)](_0x1fcffe['target']['result']);if(!_0x157a3d['version']||!Array[_0x3cb5d3(0x2d4)](_0x157a3d[_0x3cb5d3(0x1f8)]))throw new Error(_0x3cb5d3(0x263));const _0x4cf22a=window[_0x3cb5d3(0x222)]('【全局预设导入】\x0a\x0a这将把选定的预设设置为所有新聊天的默认表格。\x0a\x0a此操作将覆盖任何已存在的全局预设,是否确定?');if(!_0x4cf22a){log(_0x3cb5d3(0x22b),_0x3cb5d3(0x230)),toastr[_0x3cb5d3(0x230)](_0x3cb5d3(0x21d));return;}const _0x62444f=_0x157a3d[_0x3cb5d3(0x1f8)][_0x3cb5d3(0x277)](_0x54581d=>({'name':_0x54581d[_0x3cb5d3(0x22f)],'headers':_0x54581d[_0x3cb5d3(0x29f)],'note':_0x54581d['note'],'rule_add':_0x54581d[_0x3cb5d3(0x294)],'rule_delete':_0x54581d[_0x3cb5d3(0x1f3)],'rule_update':_0x54581d[_0x3cb5d3(0x255)],'rows':[]}));!extension_settings[extensionName]&&(extension_settings[extensionName]={});extension_settings[extensionName]['global_table_preset']={'version':_0x157a3d[_0x3cb5d3(0x2cc)],'tables':_0x62444f,'batchFillerRuleTemplate':_0x157a3d[_0x3cb5d3(0x29e)],'batchFillerFlowTemplate':_0x157a3d[_0x3cb5d3(0x2cb)]},saveSettingsDebounced();if(_0x157a3d[_0x3cb5d3(0x2cc)]===_0x3cb5d3(0x21a))saveBatchFillerRuleTemplate(_0x157a3d[_0x3cb5d3(0x29e)]||''),saveBatchFillerFlowTemplate(_0x157a3d[_0x3cb5d3(0x2cb)]||''),saveAiTemplate(_0x157a3d['injectionFlowTemplate']||'');else{if(_0x157a3d[_0x3cb5d3(0x1f2)]!==undefined&&_0x157a3d['aiFlowTemplate']!==undefined)saveBatchFillerRuleTemplate(_0x157a3d[_0x3cb5d3(0x1f2)]||''),saveBatchFillerFlowTemplate(_0x157a3d[_0x3cb5d3(0x2c2)]||''),saveAiTemplate(_0x157a3d['aiFlowTemplate']||'');else _0x157a3d[_0x3cb5d3(0x252)]&&(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x157a3d['aiTemplate']||''),saveAiTemplate(_0x157a3d['aiTemplate']||''));}log(_0x3cb5d3(0x23e),'success'),toastr[_0x3cb5d3(0x2db)]('全局预设已设置!新聊天将默认使用此预设。','设置成功'),typeof _0x24274c===_0x3cb5d3(0x2aa)&&_0x24274c();}catch(_0x65996a){log('导入全局预设失败:\x20'+_0x65996a[_0x3cb5d3(0x232)],_0x3cb5d3(0x1df)),toastr[_0x3cb5d3(0x1df)]('导入失败:'+_0x65996a[_0x3cb5d3(0x232)],'错误');}},_0x4d1998[_0x313fc1(0x236)](_0x50f239);},_0x5c73bb[_0x3ea7b3(0x258)]();} +const _0x53d54e=_0x346b;(function(_0x8fddaa,_0x54b264){const _0x3484e1=_0x346b,_0xb26be8=_0x8fddaa();while(!![]){try{const _0x4e284=-parseInt(_0x3484e1(0x2a5))/0x1*(-parseInt(_0x3484e1(0x23a))/0x2)+-parseInt(_0x3484e1(0x1e0))/0x3+parseInt(_0x3484e1(0x205))/0x4*(parseInt(_0x3484e1(0x1e4))/0x5)+parseInt(_0x3484e1(0x2b8))/0x6+parseInt(_0x3484e1(0x2a1))/0x7+parseInt(_0x3484e1(0x1ff))/0x8*(parseInt(_0x3484e1(0x262))/0x9)+-parseInt(_0x3484e1(0x2b1))/0xa;if(_0x4e284===_0x54b264)break;else _0xb26be8['push'](_0xb26be8['shift']());}catch(_0x192b35){_0xb26be8['push'](_0xb26be8['shift']());}}}(_0x4e47,0x4bc97));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.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=_0x53d54e(0x1e8);let currentTablesState=null,highlightedCells=new Set(),updatedTables=new Set();export function addHighlight(_0x49a9b4,_0x399176,_0x72c2fb){const _0x7a748e=_0x53d54e,_0x3f2eae=_0x49a9b4+'-'+_0x399176+'-'+_0x72c2fb;highlightedCells[_0x7a748e(0x1f5)](_0x3f2eae);}export function getHighlights(){return highlightedCells;}export function clearHighlights(){const _0x35d5f4=_0x53d54e;highlightedCells[_0x35d5f4(0x2bf)]>0x0&&(highlightedCells[_0x35d5f4(0x286)](),log(_0x35d5f4(0x270),_0x35d5f4(0x280)));}export function getUpdatedTables(){return updatedTables;}export function clearUpdatedTables(){const _0x449512=_0x53d54e;updatedTables['size']>0x0&&(updatedTables[_0x449512(0x286)](),log(_0x449512(0x1eb),_0x449512(0x280)));}export function setMemoryState(_0x4ffb92){currentTablesState=_0x4ffb92;}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':_0x53d54e(0x225),'headers':['日期','时段','时间','地点','此地角色'],'note':_0x53d54e(0x2b5),'rule_add':_0x53d54e(0x213),'rule_delete':_0x53d54e(0x271),'rule_update':'【触发条件】当以下任一情况发生时,必须更新此行:\x0a1.\x20时间发生显著跳跃(例如,\x27几小时后\x27、\x27第二天\x27)。\x0a2.\x20角色从一个地点移动到另一个地点。\x0a3.\x20场景中关键角色的出入导致在场人员发生变化。','charLimitRules':{},'rowLimitRule':0x1,'rows':[]},{'name':'角色栏','headers':[_0x53d54e(0x26b),'外貌','身形','衣着','性格','身份','职业',_0x53d54e(0x28d),'爱好','住所',_0x53d54e(0x2b2)],'note':_0x53d54e(0x24b),'rule_add':'【触发条件】当一个有名有姓的角色首次出现,并与或当前剧情发生有意义的互动时,必须为其创建新的一行。','rule_delete':_0x53d54e(0x2cd),'rule_update':_0x53d54e(0x2d6),'charLimitRules':{'10':0x1e},'rowLimitRule':0x0,'rows':[]},{'name':'任务栏','headers':[_0x53d54e(0x2b4),'类型','详情','状态','执行者','地点','开始时间/结束时间','结果'],'note':_0x53d54e(0x2d0),'rule_add':_0x53d54e(0x2c7),'rule_delete':_0x53d54e(0x1f8),'rule_update':_0x53d54e(0x1e3),'charLimitRules':{},'rowLimitRule':0xa,'rows':[]},{'name':'物品栏','headers':[_0x53d54e(0x278),'类型','详情','状态',_0x53d54e(0x2c2),_0x53d54e(0x272)],'note':_0x53d54e(0x1f1),'rule_add':'【触发条件】当一个物品被明确赋予了特殊意义(如被赠予、在关键事件中扮演重要角色)或展示出独特功能时,应为其创建条目。','rule_delete':_0x53d54e(0x25c),'rule_update':_0x53d54e(0x281),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x53d54e(0x1ee),'headers':[_0x53d54e(0x2c5),'技能效果'],'note':'【核心作用】专门用于记录主角掌握的各种技能、魔法、被动能力或特殊专长。\x0a【字段详解】\x0a-\x20技能名:\x20技能的正式名称。\x0a-\x20技能效果:\x20清晰、简洁地描述该技能使用时产生的具体效果、消耗和限制条件。','rule_add':_0x53d54e(0x2bc),'rule_delete':'【触发条件】如果发现表格中存在两个描述完全相同的重复技能,应删除其中一个。如果记录了非的技能,应立即删除。','rule_update':'【触发条件】当一个已知技能的效果发生进化、变异或被添加了新的限制/效果时(例如,技能升级),必须更新其“技能效果”描述。','charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x53d54e(0x229),'headers':['类型',_0x53d54e(0x209)],'note':'【核心作用】此表格记录了来自的、超越故事本身的“元指令”或世界观设定,拥有最高解释权。内容应被严格遵守,禁止AI自行修改。\x0a【字段详解】\x0a-\x20类型:\x20指令的分类,如\x27世界观设定\x27、\x27剧情走向要求\x27、\x27角色行为禁令\x27。\x0a-\x20具体描述:\x20完整、准确地记录提出的具体要求。','rule_add':_0x53d54e(0x28f),'rule_delete':_0x53d54e(0x23d),'rule_update':_0x53d54e(0x258),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]}]};function getDefaultTables(){const _0x376325=_0x53d54e;log(_0x376325(0x236),_0x376325(0x280));const _0x20453f=JSON[_0x376325(0x250)](JSON[_0x376325(0x294)](defaultTemplate['tables']));return _0x20453f[_0x376325(0x2ce)](_0xc4ed5d=>{const _0x1b3113=_0x376325;_0xc4ed5d[_0x1b3113(0x206)]={'columnIndex':-0x1,'limit':0x0},_0xc4ed5d[_0x1b3113(0x296)]=0x0,_0xc4ed5d[_0x1b3113(0x2b9)]=[];}),_0x20453f;}export function loadTables(_0x3cce63=-0x1){const _0x287847=_0x53d54e,_0x2836c7=getContext();if(_0x2836c7&&_0x2836c7[_0x287847(0x2ba)]&&_0x2836c7[_0x287847(0x2ba)][_0x287847(0x2e4)]>0x0){const _0x1c69f7=_0x3cce63===-0x1?_0x2836c7['chat'][_0x287847(0x2e4)]-0x1:_0x3cce63-0x1;for(let _0xd2fea1=_0x1c69f7;_0xd2fea1>=0x0;_0xd2fea1--){const _0x313c35=_0x2836c7[_0x287847(0x2ba)][_0xd2fea1];if(_0x313c35[_0x287847(0x217)]&&_0x313c35[_0x287847(0x217)][TABLE_DATA_KEY]){log('在第\x20'+_0xd2fea1+'\x20条消息中找到基准表格数据。',_0x287847(0x280));let _0x24bf88=JSON[_0x287847(0x250)](JSON[_0x287847(0x294)](_0x313c35[_0x287847(0x217)][TABLE_DATA_KEY]));return _0x24bf88[_0x287847(0x2ce)](_0x3a3904=>{const _0x30e357=_0x287847;if(_0x3a3904[_0x30e357(0x254)]===undefined)_0x3a3904[_0x30e357(0x254)]='无';if(_0x3a3904[_0x30e357(0x219)]===undefined)_0x3a3904[_0x30e357(0x219)]='允许';if(_0x3a3904[_0x30e357(0x29e)]===undefined)_0x3a3904[_0x30e357(0x29e)]='允许';if(_0x3a3904[_0x30e357(0x29c)]===undefined)_0x3a3904[_0x30e357(0x29c)]='允许';_0x3a3904[_0x30e357(0x206)]&&!_0x3a3904[_0x30e357(0x2a8)]&&(_0x3a3904[_0x30e357(0x2a8)]={},_0x3a3904[_0x30e357(0x206)][_0x30e357(0x291)]!==-0x1&&_0x3a3904[_0x30e357(0x206)][_0x30e357(0x2cf)]>0x0&&(_0x3a3904[_0x30e357(0x2a8)][_0x3a3904[_0x30e357(0x206)]['columnIndex']]=_0x3a3904[_0x30e357(0x206)][_0x30e357(0x2cf)]));delete _0x3a3904['charLimitRule'];if(_0x3a3904[_0x30e357(0x296)]===undefined)_0x3a3904['rowLimitRule']=0x0;if(_0x3a3904[_0x30e357(0x2b9)]===undefined)_0x3a3904[_0x30e357(0x2b9)]=[];!_0x3a3904['rowStatuses']&&(_0x3a3904['rowStatuses']=Array(_0x3a3904[_0x30e357(0x210)][_0x30e357(0x2e4)])[_0x30e357(0x283)](_0x30e357(0x23e)));}),currentTablesState=_0x24bf88,currentTablesState;}}}if(extension_settings[extensionName]?.[_0x287847(0x25a)]){log('未在聊天记录中找到表格,正在加载全局预设...',_0x287847(0x280));try{const _0x49c7d4=extension_settings[extensionName][_0x287847(0x25a)];return currentTablesState=JSON[_0x287847(0x250)](JSON['stringify'](_0x49c7d4[_0x287847(0x264)])),_0x49c7d4[_0x287847(0x24a)]!==undefined&&saveBatchFillerRuleTemplate(_0x49c7d4[_0x287847(0x24a)]),_0x49c7d4[_0x287847(0x269)]!==undefined&&saveBatchFillerFlowTemplate(_0x49c7d4['batchFillerFlowTemplate']),currentTablesState;}catch(_0x387206){log('加载全局预设失败:\x20'+_0x387206['message'],_0x287847(0x239));}}return log(_0x287847(0x247),_0x287847(0x280)),currentTablesState=getDefaultTables(),currentTablesState;}export function saveStateToMessage(_0x46821d,_0x9e2097){const _0x3da5df=_0x53d54e;if(!_0x46821d||!_0x9e2097)return log(_0x3da5df(0x257),_0x3da5df(0x239)),![];return!_0x9e2097[_0x3da5df(0x217)]&&(_0x9e2097[_0x3da5df(0x217)]={}),_0x9e2097[_0x3da5df(0x217)][TABLE_DATA_KEY]=JSON[_0x3da5df(0x250)](JSON['stringify'](_0x46821d)),log(_0x3da5df(0x204)+_0x9e2097[_0x3da5df(0x220)][_0x3da5df(0x2d2)](0x0,0x14)+_0x3da5df(0x27f),_0x3da5df(0x280)),!![];}export function saveTables(_0x301c99=_0x53d54e(0x2da)){const _0x470f78=_0x53d54e;return log('UI操作\x20\x22'+_0x301c99+_0x470f78(0x2a2),'info'),!![];}export function deleteColumn(_0xdc496c,_0x1f28cd){const _0x33be4b=_0x53d54e,_0x366df6=getMemoryState();if(!_0x366df6[_0xdc496c]||_0x1f28cd<0x0||_0x1f28cd>=_0x366df6[_0xdc496c][_0x33be4b(0x2b7)][_0x33be4b(0x2e4)]){log(_0x33be4b(0x260)+_0xdc496c+_0x33be4b(0x241)+_0x1f28cd+_0x33be4b(0x2e5),_0x33be4b(0x239));return;}_0x366df6[_0xdc496c]['headers'][_0x33be4b(0x2d5)](_0x1f28cd,0x1),_0x366df6[_0xdc496c][_0x33be4b(0x210)]['forEach'](_0x1f5365=>{const _0x1af14e=_0x33be4b;_0x1f5365[_0x1af14e(0x2e4)]>_0x1f28cd&&_0x1f5365[_0x1af14e(0x2d5)](_0x1f28cd,0x1);}),_0x366df6[_0xdc496c][_0x33be4b(0x2b9)]&&_0x366df6[_0xdc496c]['columnWidths'][_0x33be4b(0x2e4)]>_0x1f28cd&&_0x366df6[_0xdc496c][_0x33be4b(0x2b9)]['splice'](_0x1f28cd,0x1),log(_0x33be4b(0x22e)+_0xdc496c+_0x33be4b(0x299)+(_0x1f28cd+0x1)+_0x33be4b(0x208),_0x33be4b(0x2dd)),saveTables(_0x366df6);}export function moveRow(_0x4ae6a8,_0x4e1a45,_0x1865c3){const _0x4374cf=_0x53d54e,_0xb9d9eb=getMemoryState(),_0x25c472=_0xb9d9eb[_0x4ae6a8];if(!_0x25c472||_0x4e1a45<0x0||_0x4e1a45>=_0x25c472['rows'][_0x4374cf(0x2e4)])return;const _0x2eaa57=_0x1865c3==='up'?_0x4e1a45-0x1:_0x4e1a45+0x1;if(_0x2eaa57<0x0||_0x2eaa57>=_0x25c472[_0x4374cf(0x210)][_0x4374cf(0x2e4)])return;const [_0x2720ba]=_0x25c472[_0x4374cf(0x210)]['splice'](_0x4e1a45,0x1);_0x25c472[_0x4374cf(0x210)][_0x4374cf(0x2d5)](_0x2eaa57,0x0,_0x2720ba);if(_0x25c472['rowStatuses']&&_0x25c472['rowStatuses'][_0x4374cf(0x2e4)]===_0x25c472[_0x4374cf(0x210)][_0x4374cf(0x2e4)]+0x1){const [_0xce56a2]=_0x25c472[_0x4374cf(0x1e6)][_0x4374cf(0x2d5)](_0x4e1a45,0x1);_0x25c472[_0x4374cf(0x1e6)]['splice'](_0x2eaa57,0x0,_0xce56a2);}log(_0x4374cf(0x2c6)+_0x4ae6a8+'\x20的第\x20'+(_0x4e1a45+0x1)+_0x4374cf(0x218)+(_0x2eaa57+0x1)+'\x20行。',_0x4374cf(0x2dd)),saveTables(_0xb9d9eb);}export function insertRow(_0x2728f6,_0x37ce80,_0x2c4f76=_0x53d54e(0x26f)){const _0x572019=_0x53d54e,_0x5186a8=getMemoryState(),_0x776eba=_0x5186a8[_0x2728f6];if(!_0x776eba){log(_0x572019(0x230)+_0x2728f6+_0x572019(0x22d),'error');return;}let _0x2df47d;typeof _0x37ce80==='number'?_0x2df47d=_0x2c4f76==='above'?_0x37ce80:_0x37ce80+0x1:_0x2df47d=_0x776eba[_0x572019(0x210)]['length'];if(_0x2df47d<0x0)_0x2df47d=0x0;if(_0x2df47d>_0x776eba['rows'][_0x572019(0x2e4)])_0x2df47d=_0x776eba['rows'][_0x572019(0x2e4)];const _0x28161f=new Array(_0x776eba[_0x572019(0x2b7)][_0x572019(0x2e4)])[_0x572019(0x283)]('');if(typeof _0x37ce80===_0x572019(0x20e)&&_0x37ce80!==null)for(const _0x4c618c in _0x37ce80){const _0x12e3f7=parseInt(_0x4c618c,0xa);!isNaN(_0x12e3f7)&&_0x12e3f7<_0x28161f[_0x572019(0x2e4)]&&(_0x28161f[_0x12e3f7]=_0x37ce80[_0x4c618c],addHighlight(_0x2728f6,_0x2df47d,_0x12e3f7));}_0x776eba[_0x572019(0x210)]['splice'](_0x2df47d,0x0,_0x28161f);if(!_0x776eba[_0x572019(0x1e6)])_0x776eba[_0x572019(0x1e6)]=Array(_0x776eba[_0x572019(0x210)]['length'])[_0x572019(0x283)](_0x572019(0x23e));_0x776eba['rowStatuses'][_0x572019(0x2d5)](_0x2df47d,0x0,_0x572019(0x23e)),updatedTables[_0x572019(0x1f5)](_0x2728f6),log(_0x572019(0x237)+_0x776eba['name']+'\x20(索引\x20'+_0x2728f6+_0x572019(0x295)+(_0x2df47d+0x1)+_0x572019(0x24c),_0x572019(0x2dd));const _0x1603f8=getContext();if(_0x1603f8[_0x572019(0x2ba)]&&_0x1603f8['chat'][_0x572019(0x2e4)]>0x0){const _0xf5c525=_0x1603f8['chat'][_0x1603f8[_0x572019(0x2ba)][_0x572019(0x2e4)]-0x1];if(saveStateToMessage(_0x5186a8,_0xf5c525)){saveChat();return;}}saveChatDebounced();}export function addRow(_0x50c7c3){const _0xeae2a0=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x50c7c3])return;const _0x6788bc=currentTablesState[_0x50c7c3],_0x1d418a=_0x6788bc[_0xeae2a0(0x2b7)][_0xeae2a0(0x2e4)],_0x2d18ff=Array(_0x1d418a)[_0xeae2a0(0x283)]('');_0x6788bc[_0xeae2a0(0x210)][_0xeae2a0(0x1dc)](_0x2d18ff);if(!_0x6788bc[_0xeae2a0(0x1e6)])_0x6788bc[_0xeae2a0(0x1e6)]=Array(_0x6788bc[_0xeae2a0(0x210)][_0xeae2a0(0x2e4)])['fill']('normal');_0x6788bc[_0xeae2a0(0x1e6)][_0xeae2a0(0x1dc)](_0xeae2a0(0x23e)),updatedTables[_0xeae2a0(0x1f5)](_0x50c7c3);const _0x4be5ee=_0xeae2a0(0x21d)+_0x6788bc['name']+_0xeae2a0(0x248);log(_0x4be5ee,_0xeae2a0(0x280));const _0x16727b=getContext();if(_0x16727b[_0xeae2a0(0x2ba)]&&_0x16727b[_0xeae2a0(0x2ba)]['length']>0x0){const _0x35ec94=_0x16727b[_0xeae2a0(0x2ba)][_0x16727b[_0xeae2a0(0x2ba)][_0xeae2a0(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x35ec94)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x52934d){const _0x3ffd92=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x52934d])return;const _0x52ecad=currentTablesState[_0x52934d],_0x4dec42='新列\x20'+(_0x52ecad[_0x3ffd92(0x2b7)][_0x3ffd92(0x2e4)]+0x1);_0x52ecad[_0x3ffd92(0x2b7)][_0x3ffd92(0x1dc)](_0x4dec42),_0x52ecad[_0x3ffd92(0x210)][_0x3ffd92(0x2ce)](_0x3873a8=>_0x3873a8['push'](''));if(!_0x52ecad[_0x3ffd92(0x2b9)])_0x52ecad[_0x3ffd92(0x2b9)]=[];_0x52ecad['columnWidths'][_0x3ffd92(0x1dc)](null);const _0x4b1c42=_0x3ffd92(0x21d)+_0x52ecad['name']+_0x3ffd92(0x268);log(_0x4b1c42,_0x3ffd92(0x280));const _0x192e3f=getContext();if(_0x192e3f[_0x3ffd92(0x2ba)]&&_0x192e3f[_0x3ffd92(0x2ba)][_0x3ffd92(0x2e4)]>0x0){const _0x3265a3=_0x192e3f['chat'][_0x192e3f['chat'][_0x3ffd92(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x3265a3)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x47b488,_0x8eeb69,_0x2ea8b1){const _0x365621=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x47b488]||currentTablesState[_0x47b488]['headers'][_0x8eeb69]===undefined)return;const _0x15a032=currentTablesState[_0x47b488][_0x365621(0x28e)],_0x36c580=currentTablesState[_0x47b488][_0x365621(0x2b7)][_0x8eeb69];currentTablesState[_0x47b488]['headers'][_0x8eeb69]=_0x2ea8b1;const _0x5131ff=_0x365621(0x21d)+_0x15a032+_0x365621(0x2b6)+_0x36c580+_0x365621(0x2c4)+_0x2ea8b1+'”。';log(_0x5131ff,_0x365621(0x280));const _0x278581=getContext();if(_0x278581[_0x365621(0x2ba)]&&_0x278581[_0x365621(0x2ba)][_0x365621(0x2e4)]>0x0){const _0x2f3950=_0x278581[_0x365621(0x2ba)][_0x278581[_0x365621(0x2ba)][_0x365621(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x2f3950)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0x56f092,_0x3c03ac){const _0x22c8ed=_0x53d54e,_0x18c0f1=currentTablesState?.[_0x56f092];if(!_0x18c0f1||!_0x18c0f1['rows'][_0x3c03ac])return;!_0x18c0f1[_0x22c8ed(0x1e6)]&&(_0x18c0f1[_0x22c8ed(0x1e6)]=Array(_0x18c0f1['rows'][_0x22c8ed(0x2e4)])[_0x22c8ed(0x283)](_0x22c8ed(0x23e)));_0x18c0f1[_0x22c8ed(0x1e6)][_0x3c03ac]=_0x22c8ed(0x221),updatedTables[_0x22c8ed(0x1f5)](_0x56f092);const _0x33c1a7=_0x22c8ed(0x21d)+_0x18c0f1['name']+_0x22c8ed(0x2bb)+(_0x3c03ac+0x1)+_0x22c8ed(0x21f);log(_0x33c1a7,'info');const _0x5c39c2=getContext();if(_0x5c39c2['chat']?.[_0x22c8ed(0x2e4)]>0x0){const _0x4ebb17=_0x5c39c2['chat'][_0x5c39c2['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x4ebb17)){await saveChat(),renderTables();return;}}await saveChatDebounced(),renderTables();}export async function restoreRow(_0x5ba884,_0x28fa6e){const _0x126c0b=_0x53d54e,_0x45f26e=currentTablesState?.[_0x5ba884];if(!_0x45f26e||!_0x45f26e['rows'][_0x28fa6e]||!_0x45f26e[_0x126c0b(0x1e6)])return;_0x45f26e[_0x126c0b(0x1e6)][_0x28fa6e]=_0x126c0b(0x23e),updatedTables[_0x126c0b(0x1f5)](_0x5ba884);const _0xf67cd8=_0x126c0b(0x21d)+_0x45f26e[_0x126c0b(0x28e)]+_0x126c0b(0x2bb)+(_0x28fa6e+0x1)+_0x126c0b(0x28a);log(_0xf67cd8,_0x126c0b(0x280));const _0x3dde86=getContext();if(_0x3dde86[_0x126c0b(0x2ba)]?.['length']>0x0){const _0x5da17e=_0x3dde86[_0x126c0b(0x2ba)][_0x3dde86['chat'][_0x126c0b(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x5da17e)){await saveChat(),renderTables();return;}}await saveChatDebounced(),renderTables();}export function commitPendingDeletions(){const _0x199733=_0x53d54e;if(!currentTablesState)return![];let _0x20cd99=0x0;currentTablesState[_0x199733(0x2ce)]((_0x391168,_0x45fe58)=>{const _0x4ac71d=_0x199733;if(!_0x391168[_0x4ac71d(0x1e6)]||_0x391168[_0x4ac71d(0x1e6)][_0x4ac71d(0x2e4)]===0x0)return;let _0x19604d=![];for(let _0x1628a7=_0x391168[_0x4ac71d(0x210)][_0x4ac71d(0x2e4)]-0x1;_0x1628a7>=0x0;_0x1628a7--){_0x391168[_0x4ac71d(0x1e6)][_0x1628a7]===_0x4ac71d(0x221)&&(_0x391168[_0x4ac71d(0x210)][_0x4ac71d(0x2d5)](_0x1628a7,0x1),_0x391168[_0x4ac71d(0x1e6)][_0x4ac71d(0x2d5)](_0x1628a7,0x1),_0x20cd99++,_0x19604d=!![]);}_0x19604d&&updatedTables['add'](_0x45fe58);});if(_0x20cd99>0x0)return log('已提交并永久删除了\x20'+_0x20cd99+_0x199733(0x2c8),'info'),!![];return![];}export function insertColumn(_0x4f4007,_0x23e457,_0x5459f1){const _0x18471a=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x4f4007])return;const _0x54efc5=currentTablesState[_0x4f4007],_0x39a7f6=_0x5459f1===_0x18471a(0x285)?_0x23e457:_0x23e457+0x1,_0x3e6f9a='新列';_0x54efc5[_0x18471a(0x2b7)][_0x18471a(0x2d5)](_0x39a7f6,0x0,_0x3e6f9a),_0x54efc5[_0x18471a(0x210)]['forEach'](_0x4b6236=>_0x4b6236[_0x18471a(0x2d5)](_0x39a7f6,0x0,''));if(!_0x54efc5['columnWidths'])_0x54efc5[_0x18471a(0x2b9)]=[];_0x54efc5[_0x18471a(0x2b9)][_0x18471a(0x2d5)](_0x39a7f6,0x0,null);const _0x33d6d7=_0x18471a(0x21d)+_0x54efc5['name']+']\x20在第\x20'+(_0x23e457+0x1)+_0x18471a(0x242)+(_0x5459f1===_0x18471a(0x285)?'左侧':'右侧')+'插入了新列。';log(_0x33d6d7,_0x18471a(0x280));const _0x275cf6=getContext();if(_0x275cf6[_0x18471a(0x2ba)]&&_0x275cf6[_0x18471a(0x2ba)][_0x18471a(0x2e4)]>0x0){const _0x455945=_0x275cf6[_0x18471a(0x2ba)][_0x275cf6[_0x18471a(0x2ba)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x455945)){saveChat();return;}}saveChatDebounced();}export function moveColumn(_0xf31011,_0x1d9d5b,_0x5e6458){const _0x3282d7=_0x53d54e;if(!currentTablesState||!currentTablesState[_0xf31011])return;const _0x25d866=currentTablesState[_0xf31011],_0x174c7c=_0x25d866[_0x3282d7(0x2b7)],_0x24747d=_0x25d866[_0x3282d7(0x210)],_0x38898b=_0x5e6458===_0x3282d7(0x285)?_0x1d9d5b-0x1:_0x1d9d5b+0x1;if(_0x38898b<0x0||_0x38898b>=_0x174c7c[_0x3282d7(0x2e4)]){log('无法移动列:索引\x20'+_0x1d9d5b+_0x3282d7(0x1f6),_0x3282d7(0x1fc));return;}const [_0x49957c]=_0x174c7c[_0x3282d7(0x2d5)](_0x1d9d5b,0x1);_0x174c7c['splice'](_0x38898b,0x0,_0x49957c),_0x24747d['forEach'](_0x9e753a=>{const _0x27ee92=_0x3282d7,[_0x4b12a3]=_0x9e753a[_0x27ee92(0x2d5)](_0x1d9d5b,0x1);_0x9e753a[_0x27ee92(0x2d5)](_0x38898b,0x0,_0x4b12a3);});if(_0x25d866['columnWidths']&&_0x25d866[_0x3282d7(0x2b9)][_0x3282d7(0x2e4)]>_0x1d9d5b){const [_0x510cc9]=_0x25d866[_0x3282d7(0x2b9)]['splice'](_0x1d9d5b,0x1);_0x25d866[_0x3282d7(0x2b9)][_0x3282d7(0x2d5)](_0x38898b,0x0,_0x510cc9);}const _0xd1d7e7=_0x3282d7(0x21d)+_0x25d866[_0x3282d7(0x28e)]+_0x3282d7(0x1ec)+_0x49957c+'”已向'+(_0x5e6458===_0x3282d7(0x285)?'左':'右')+_0x3282d7(0x27d);log(_0xd1d7e7,_0x3282d7(0x280));const _0x4519b0=getContext();if(_0x4519b0[_0x3282d7(0x2ba)]&&_0x4519b0[_0x3282d7(0x2ba)][_0x3282d7(0x2e4)]>0x0){const _0x237000=_0x4519b0[_0x3282d7(0x2ba)][_0x4519b0[_0x3282d7(0x2ba)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x237000)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0x4b0483){const _0x5a7e1a=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x4b0483])return;const _0x5a1dd5=currentTablesState[_0x4b0483][_0x5a7e1a(0x28e)];currentTablesState[_0x5a7e1a(0x2d5)](_0x4b0483,0x1);const _0x524110=_0x5a7e1a(0x21d)+_0x5a1dd5+_0x5a7e1a(0x1e7);log(_0x524110,_0x5a7e1a(0x2dd));const _0x494d63=getContext();if(_0x494d63[_0x5a7e1a(0x2ba)]&&_0x494d63[_0x5a7e1a(0x2ba)]['length']>0x0){const _0x58e706=_0x494d63[_0x5a7e1a(0x2ba)][_0x494d63[_0x5a7e1a(0x2ba)][_0x5a7e1a(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x58e706)){saveChat(),log(_0x5a7e1a(0x22c),_0x5a7e1a(0x2dd));return;}}log(_0x5a7e1a(0x2b3),_0x5a7e1a(0x239)),saveChatDebounced();}export function addTable(_0x38d665){const _0x4f5fbb=_0x53d54e;if(!_0x38d665||!_0x38d665[_0x4f5fbb(0x2d9)]()){log(_0x4f5fbb(0x203),_0x4f5fbb(0x239)),toastr['error'](_0x4f5fbb(0x1ef),_0x4f5fbb(0x274));return;}!currentTablesState&&loadTables();if(currentTablesState[_0x4f5fbb(0x2be)](_0x35b538=>_0x35b538[_0x4f5fbb(0x28e)]===_0x38d665['trim']())){log(_0x4f5fbb(0x24f)+_0x38d665+'\x22\x20的表格已存在。',_0x4f5fbb(0x239)),toastr[_0x4f5fbb(0x239)](_0x4f5fbb(0x23f)+_0x38d665+_0x4f5fbb(0x2dc),'创建失败');return;}const _0x2da4e8={'name':_0x38d665[_0x4f5fbb(0x2d9)](),'headers':[_0x4f5fbb(0x29a)],'rows':[],'rowStatuses':[],'columnWidths':[],'note':_0x4f5fbb(0x1de),'rule_add':'允许','rule_delete':'允许','rule_update':'允许','charLimitRules':{},'rowLimitRule':0x0};currentTablesState['push'](_0x2da4e8);const _0x37a840=_0x4f5fbb(0x214)+_0x38d665['trim']()+']。';log(_0x37a840,_0x4f5fbb(0x2dd));const _0x481dec=getContext();if(_0x481dec[_0x4f5fbb(0x2ba)]&&_0x481dec[_0x4f5fbb(0x2ba)][_0x4f5fbb(0x2e4)]>0x0){const _0x2c5392=_0x481dec[_0x4f5fbb(0x2ba)][_0x481dec[_0x4f5fbb(0x2ba)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x2c5392)){saveChat(),log(_0x4f5fbb(0x1e5),_0x4f5fbb(0x2dd));return;}}log(_0x4f5fbb(0x252),_0x4f5fbb(0x239)),saveChatDebounced();}export function renameTable(_0x3f2951,_0xe142fb){const _0x2b7afb=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x3f2951]){log(_0x2b7afb(0x240),_0x2b7afb(0x239)),toastr[_0x2b7afb(0x239)](_0x2b7afb(0x2a9),'重命名失败');return;}const _0x3494af=_0xe142fb['trim']();if(!_0x3494af){log(_0x2b7afb(0x256),_0x2b7afb(0x239)),toastr[_0x2b7afb(0x239)]('表格名称不能为空。',_0x2b7afb(0x26e));return;}if(currentTablesState[_0x2b7afb(0x2be)]((_0x286f0f,_0x1545a6)=>_0x1545a6!==_0x3f2951&&_0x286f0f[_0x2b7afb(0x28e)]===_0x3494af)){log('重命名失败:名为\x20\x22'+_0x3494af+'\x22\x20的表格已存在。',_0x2b7afb(0x239)),toastr['error'](_0x2b7afb(0x23f)+_0x3494af+_0x2b7afb(0x2dc),_0x2b7afb(0x26e));return;}const _0x3d163b=currentTablesState[_0x3f2951]['name'];currentTablesState[_0x3f2951][_0x2b7afb(0x28e)]=_0x3494af,log(_0x2b7afb(0x2bd)+_0x3d163b+_0x2b7afb(0x1e9)+_0x3494af+'\x22。',_0x2b7afb(0x2dd));const _0xbb6b8e=getContext();if(_0xbb6b8e[_0x2b7afb(0x2ba)]&&_0xbb6b8e[_0x2b7afb(0x2ba)][_0x2b7afb(0x2e4)]>0x0){const _0x39f888=_0xbb6b8e[_0x2b7afb(0x2ba)][_0xbb6b8e['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x39f888)){saveChat();return;}}saveChatDebounced();}export function moveTable(_0x4acc7c,_0x34a4c4){const _0x33a375=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x4acc7c])return;const _0x3b88e2=_0x34a4c4==='up'?_0x4acc7c-0x1:_0x4acc7c+0x1;if(_0x3b88e2<0x0||_0x3b88e2>=currentTablesState[_0x33a375(0x2e4)]){log('无法移动表格:索引\x20'+_0x4acc7c+_0x33a375(0x1f6),_0x33a375(0x1fc));return;}const _0x17b9b7=currentTablesState[_0x4acc7c];currentTablesState[_0x4acc7c]=currentTablesState[_0x3b88e2],currentTablesState[_0x3b88e2]=_0x17b9b7;const _0x1573f8='表格\x20['+_0x17b9b7[_0x33a375(0x28e)]+_0x33a375(0x263);log(_0x1573f8,_0x33a375(0x2dd));const _0x72d9a5=getContext();if(_0x72d9a5[_0x33a375(0x2ba)]&&_0x72d9a5[_0x33a375(0x2ba)][_0x33a375(0x2e4)]>0x0){const _0x14a18a=_0x72d9a5['chat'][_0x72d9a5[_0x33a375(0x2ba)][_0x33a375(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x14a18a)){saveChat(),log(_0x33a375(0x1fe),_0x33a375(0x2dd));return;}}log('无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!',_0x33a375(0x239)),saveChatDebounced();}export function updateTableRules(_0x2d987e,_0x50652c){const _0x44d4c2=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x2d987e])return;const _0x539781=currentTablesState[_0x2d987e];_0x539781[_0x44d4c2(0x254)]=_0x50652c[_0x44d4c2(0x254)],_0x539781['rule_add']=_0x50652c['rule_add'],_0x539781[_0x44d4c2(0x29e)]=_0x50652c['rule_delete'],_0x539781['rule_update']=_0x50652c[_0x44d4c2(0x29c)],_0x539781['charLimitRules']=_0x50652c[_0x44d4c2(0x2a8)],_0x539781[_0x44d4c2(0x296)]=_0x50652c[_0x44d4c2(0x296)],delete _0x539781['charLimitRule'];const _0x5efe87=_0x44d4c2(0x21d)+_0x539781[_0x44d4c2(0x28e)]+_0x44d4c2(0x2a0);log(_0x5efe87,_0x44d4c2(0x280));const _0x27da9c=getContext();if(_0x27da9c[_0x44d4c2(0x2ba)]&&_0x27da9c['chat']['length']>0x0){const _0x2f04b7=_0x27da9c[_0x44d4c2(0x2ba)][_0x27da9c['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x2f04b7)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x3e0317,_0x55e63b,_0x2b4718){const _0x2ea68c=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x3e0317]){log(_0x2ea68c(0x1f4)+_0x3e0317+_0x2ea68c(0x1f3),_0x2ea68c(0x239));return;}const _0x3bafd6=currentTablesState[_0x3e0317];if(_0x55e63b>=_0x3bafd6[_0x2ea68c(0x210)]['length']){log('AI指令意图更新不存在的行\x20(rowIndex:\x20'+_0x55e63b+_0x2ea68c(0x29b)+_0x3bafd6['name']+_0x2ea68c(0x2ca),_0x2ea68c(0x1fc)),insertRow(_0x3e0317,_0x2b4718);return;}const _0x397e9a=_0x3bafd6[_0x2ea68c(0x210)][_0x55e63b];for(const _0x96d2ac in _0x2b4718){const _0x2f3f5a=parseInt(_0x96d2ac,0xa);_0x2f3f5a<_0x397e9a[_0x2ea68c(0x2e4)]&&(_0x397e9a[_0x2f3f5a]=_0x2b4718[_0x2f3f5a],addHighlight(_0x3e0317,_0x55e63b,_0x2f3f5a));}updatedTables[_0x2ea68c(0x1f5)](_0x3e0317);const _0x12802e=_0x2ea68c(0x1e1)+_0x3bafd6[_0x2ea68c(0x28e)]+']\x20的第\x20'+(_0x55e63b+0x1)+_0x2ea68c(0x2c8);log(_0x12802e,_0x2ea68c(0x280));const _0x53204e=getContext();if(_0x53204e[_0x2ea68c(0x2ba)]&&_0x53204e[_0x2ea68c(0x2ba)][_0x2ea68c(0x2e4)]>0x0){const _0x3781f2=_0x53204e['chat'][_0x53204e['chat'][_0x2ea68c(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x3781f2)){saveChat();return;}}saveChatDebounced();}function _0x346b(_0x51eb94,_0x312873){const _0x4e475e=_0x4e47();return _0x346b=function(_0x346bd4,_0xaf7ed7){_0x346bd4=_0x346bd4-0x1dc;let _0xe92900=_0x4e475e[_0x346bd4];return _0xe92900;},_0x346b(_0x51eb94,_0x312873);}export function clearAllTables(){const _0x3ee854=_0x53d54e;if(!currentTablesState){log(_0x3ee854(0x2d3),_0x3ee854(0x239));return;}currentTablesState[_0x3ee854(0x2ce)]((_0x1a755f,_0x5b76a0)=>{const _0x284bdc=_0x3ee854;_0x1a755f['rows'][_0x284bdc(0x2e4)]>0x0&&updatedTables['add'](_0x5b76a0),_0x1a755f[_0x284bdc(0x210)]=[],_0x1a755f[_0x284bdc(0x1e6)]=[];}),log(_0x3ee854(0x2ab),_0x3ee854(0x1fc));const _0x9321d9=getContext();if(_0x9321d9[_0x3ee854(0x2ba)]&&_0x9321d9[_0x3ee854(0x2ba)][_0x3ee854(0x2e4)]>0x0){const _0x4c5407=_0x9321d9[_0x3ee854(0x2ba)][_0x9321d9['chat'][_0x3ee854(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x4c5407)){saveChat(),log(_0x3ee854(0x2cc),_0x3ee854(0x2dd)),toastr[_0x3ee854(0x2dd)](_0x3ee854(0x2e2),'操作完成');return;}}log('无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','error'),saveChatDebounced();}function checkTableRules(_0x26cd28){const _0x3b391f=_0x53d54e;let _0x2c4f48=[];_0x26cd28[_0x3b391f(0x296)]&&_0x26cd28[_0x3b391f(0x296)]>0x0&&_0x26cd28[_0x3b391f(0x210)][_0x3b391f(0x2e4)]>_0x26cd28[_0x3b391f(0x296)]&&_0x2c4f48[_0x3b391f(0x1dc)]('【当前('+_0x26cd28[_0x3b391f(0x28e)]+_0x3b391f(0x2df)+_0x26cd28[_0x3b391f(0x296)]+')行,请结合剧情缩减至('+_0x26cd28[_0x3b391f(0x296)]+_0x3b391f(0x297));const _0x5bbeb6=_0x26cd28[_0x3b391f(0x2a8)]||{};for(const _0x1d68af in _0x5bbeb6){const _0x7cb92f=parseInt(_0x1d68af,0xa),_0x385695=_0x5bbeb6[_0x7cb92f];if(_0x385695>0x0&&_0x7cb92f>=0x0&&_0x7cb92f<_0x26cd28[_0x3b391f(0x2b7)][_0x3b391f(0x2e4)]){const _0x4897bb=_0x26cd28[_0x3b391f(0x2b7)][_0x7cb92f],_0x52ce35=[];_0x26cd28[_0x3b391f(0x210)][_0x3b391f(0x2ce)]((_0x5c7040,_0x5d1d62)=>{const _0x16b542=_0x3b391f;if(_0x26cd28[_0x16b542(0x1e6)]&&_0x26cd28[_0x16b542(0x1e6)][_0x5d1d62]==='pending-deletion')return;const _0x477fa2=_0x5c7040[_0x7cb92f]||'';_0x477fa2[_0x16b542(0x2e4)]>_0x385695&&_0x52ce35[_0x16b542(0x1dc)](_0x5d1d62);});if(_0x52ce35[_0x3b391f(0x2e4)]>0x0){const _0x38396c=_0x52ce35[_0x3b391f(0x2c0)]('、');_0x2c4f48[_0x3b391f(0x1dc)](_0x3b391f(0x2af)+_0x26cd28[_0x3b391f(0x28e)]+_0x3b391f(0x21c)+_0x38396c+_0x3b391f(0x2e0)+_0x4897bb+_0x3b391f(0x29f)+_0x385695+')字限制,请进行缩减。】');}}}return _0x2c4f48[_0x3b391f(0x2c0)]('\x0a');}export function convertTablesToCsvString(){const _0x459e09=_0x53d54e;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x132747='';return currentTablesState[_0x459e09(0x2ce)]((_0x44b2fd,_0x8d3926)=>{const _0x2fd025=_0x459e09;_0x132747+=_0x2fd025(0x2ac)+_0x8d3926+':'+_0x44b2fd[_0x2fd025(0x28e)]+'\x0a',_0x132747+=_0x2fd025(0x207)+(_0x44b2fd[_0x2fd025(0x254)]||'无')+'\x0a';const _0x7fabf3=_0x44b2fd['name'][_0x2fd025(0x2e1)](/\s/g,'')+'内容';_0x132747+='<'+_0x7fabf3+'>\x0a';const _0x54d8fa=_0x44b2fd[_0x2fd025(0x2b7)][_0x2fd025(0x2d1)]((_0x4174da,_0x3f771b)=>_0x3f771b+':'+_0x4174da)[_0x2fd025(0x2c0)](',');_0x132747+=_0x2fd025(0x26a)+_0x54d8fa+'\x0a';_0x44b2fd[_0x2fd025(0x210)][_0x2fd025(0x2e4)]===0x0||_0x44b2fd[_0x2fd025(0x210)][_0x2fd025(0x232)]((_0xa981b8,_0xac405e)=>_0x44b2fd['rowStatuses']&&_0x44b2fd['rowStatuses'][_0xac405e]===_0x2fd025(0x221))?_0x132747+=_0x2fd025(0x2c9):_0x44b2fd[_0x2fd025(0x210)]['forEach']((_0x307560,_0x5c387f)=>{const _0x456ed6=_0x2fd025;if(_0x44b2fd[_0x456ed6(0x1e6)]&&_0x44b2fd[_0x456ed6(0x1e6)][_0x5c387f]==='pending-deletion')return;if(Array['isArray'](_0x307560)){const _0x47ddf=_0x307560[_0x456ed6(0x2d1)](_0x40b7a1=>{return _0x40b7a1===null||_0x40b7a1===undefined||_0x40b7a1===''?'未知':_0x40b7a1['toString']();})[_0x456ed6(0x2c0)](',');_0x132747+=_0x5c387f+','+_0x47ddf+'\x0a';}});const _0x4cee7c=checkTableRules(_0x44b2fd);_0x4cee7c&&(_0x132747+=_0x4cee7c+'\x0a'),_0x132747+='\x0a',_0x132747+=_0x2fd025(0x253)+(_0x44b2fd[_0x2fd025(0x219)]||'允许')+'\x0a',_0x132747+=_0x2fd025(0x28c)+(_0x44b2fd[_0x2fd025(0x29e)]||'允许')+'\x0a',_0x132747+=_0x2fd025(0x22b)+(_0x44b2fd[_0x2fd025(0x29c)]||'允许')+'\x0a',_0x8d3926{const _0x5ae02d=_0x2805b5;_0x35152d+='\x0a<'+_0x4a90ad[_0x5ae02d(0x28e)]+'>\x0a';const _0x20d6b8='|\x20'+_0x4a90ad['headers'][_0x5ae02d(0x2c0)](_0x5ae02d(0x287))+'\x20|';_0x35152d+=_0x20d6b8+'\x0a';const _0x1bcd9b='|'+_0x4a90ad[_0x5ae02d(0x2b7)][_0x5ae02d(0x2d1)](()=>_0x5ae02d(0x20a))['join']('|')+'|';_0x35152d+=_0x1bcd9b+'\x0a';const _0x21850f=_0x4a90ad[_0x5ae02d(0x210)]['filter']((_0x140ea9,_0x202f49)=>!_0x4a90ad['rowStatuses']||_0x4a90ad[_0x5ae02d(0x1e6)][_0x202f49]!==_0x5ae02d(0x221));_0x21850f[_0x5ae02d(0x2e4)]>0x0?_0x21850f[_0x5ae02d(0x2ce)](_0x58052c=>{const _0x7e5285=_0x5ae02d;if(Array[_0x7e5285(0x24e)](_0x58052c)){const _0x4da0a8=_0x58052c['map'](_0x232b78=>_0x232b78===null||_0x232b78===undefined||_0x232b78===''?'\x20':_0x232b78['toString']()),_0x3fe78b='|\x20'+_0x4da0a8[_0x7e5285(0x2c0)](_0x7e5285(0x287))+'\x20|';_0x35152d+=_0x3fe78b+'\x0a';}}):_0x35152d+=_0x5ae02d(0x2c9),_0x35152d+='\x0a';}),_0x35152d[_0x2805b5(0x2d9)]();}loadTables();export function getBatchFillerRuleTemplate(){const _0x2fb627=_0x53d54e;return extension_settings[extensionName]?.[_0x2fb627(0x224)]??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0x2b007f){const _0x3acdf5=_0x53d54e;extension_settings[extensionName][_0x3acdf5(0x224)]=_0x2b007f,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){const _0x3c40bf=_0x53d54e;return extension_settings[extensionName]?.[_0x3c40bf(0x20d)]??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0x93e75e){const _0x546a58=_0x53d54e;extension_settings[extensionName][_0x546a58(0x20d)]=_0x93e75e,saveSettingsDebounced();}export function getAiFlowTemplateForInjection(){const _0x3a4b6a=_0x53d54e;return extension_settings[extensionName]?.[_0x3a4b6a(0x201)]??DEFAULT_AI_FLOW_TEMPLATE;}export async function updateTableFromText(_0xb7aaf8){const _0x50eb69=_0x53d54e,_0x36db41=extension_settings[extensionName];if(_0x36db41[_0x50eb69(0x231)]===![]){log('表格系统总开关已关闭,跳过\x20\x20标签处理。','info');return;}if(!_0xb7aaf8){log(_0x50eb69(0x20f),_0x50eb69(0x1fc));return;}const _0x31cb0f=_0xb7aaf8[_0x50eb69(0x27e)](/([\s\S]*?)<\/Amily2Edit>/);if(!_0x31cb0f||!_0x31cb0f[0x1]){log('未在AI返回内容中找到有效的\x20\x20指令块。',_0x50eb69(0x1fc));return;}let _0x30e9b3=_0x31cb0f[0x1][_0x50eb69(0x2e1)](//g,'')['trim']();if(!_0x30e9b3){log(_0x50eb69(0x2ad),'info');return;}const _0x349e63=_0x30e9b3[_0x50eb69(0x1f0)]('\x0a')[_0x50eb69(0x233)](_0xdbfb48=>_0xdbfb48[_0x50eb69(0x2d9)]()!=='');log(_0x50eb69(0x251)+_0x349e63[_0x50eb69(0x2e4)]+_0x50eb69(0x298),_0x50eb69(0x280));const _0x15c6b8={'insertRow':(_0x16bb90,_0x3f7e72)=>{const _0x581c19=_0x50eb69;log(_0x581c19(0x1ed)+_0x16bb90+_0x581c19(0x293)+JSON[_0x581c19(0x294)](_0x3f7e72)+')','info'),insertRow(_0x16bb90,_0x3f7e72);},'deleteRow':(_0x388e7b,_0x477663)=>{const _0x3d4022=_0x50eb69;log(_0x3d4022(0x22a)+_0x388e7b+',\x20rowIndex='+_0x477663+')',_0x3d4022(0x280)),deleteRow(_0x388e7b,_0x477663);},'updateRow':(_0x373f9d,_0x3b4bbc,_0xa8e228)=>{const _0x48a093=_0x50eb69;log(_0x48a093(0x202)+_0x373f9d+_0x48a093(0x222)+_0x3b4bbc+',\x20data='+JSON[_0x48a093(0x294)](_0xa8e228)+')','info'),updateRow(_0x373f9d,_0x3b4bbc,_0xa8e228);}};try{const _0x19b839=Object[_0x50eb69(0x28b)](async function(){})[_0x50eb69(0x267)],_0x25432d=new _0x19b839('runner',_0x50eb69(0x20b)+_0x30e9b3+_0x50eb69(0x21e));await _0x25432d(_0x15c6b8),log(_0x50eb69(0x266),'success'),toastr['success'](_0x50eb69(0x216),'填表完成'),document[_0x50eb69(0x21b)](new CustomEvent(_0x50eb69(0x288)));}catch(_0x284fa5){log('执行AI指令时发生错误:\x20'+_0x284fa5[_0x50eb69(0x1df)],_0x50eb69(0x239)),toastr[_0x50eb69(0x239)](_0x50eb69(0x27a)+_0x284fa5[_0x50eb69(0x1df)],'执行失败');}}export function saveAiTemplate(_0x2471e8){const _0x5bf4a5=_0x53d54e;extension_settings[extensionName][_0x5bf4a5(0x201)]=_0x2471e8,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0xee9e13=![]){const _0x1c7a24=_0x53d54e;if(!currentTablesState){log(_0x1c7a24(0x259),_0x1c7a24(0x239)),toastr[_0x1c7a24(0x239)](_0x1c7a24(0x223));return;}let _0x2ba1e6,_0xa753a1,_0x108e08;_0xee9e13?(_0x2ba1e6=JSON[_0x1c7a24(0x250)](JSON[_0x1c7a24(0x294)](currentTablesState)),_0xa753a1=_0x1c7a24(0x1fb),_0x108e08=_0x1c7a24(0x235)):(_0x2ba1e6=currentTablesState['map'](_0x162b99=>({'name':_0x162b99[_0x1c7a24(0x28e)],'headers':_0x162b99[_0x1c7a24(0x2b7)],'columnWidths':_0x162b99['columnWidths']||[],'note':_0x162b99[_0x1c7a24(0x254)],'rule_add':_0x162b99['rule_add'],'rule_delete':_0x162b99['rule_delete'],'rule_update':_0x162b99[_0x1c7a24(0x29c)],'charLimitRules':_0x162b99[_0x1c7a24(0x2a8)]||{},'rowLimitRule':_0x162b99[_0x1c7a24(0x296)]||0x0,'rows':[],'rowStatuses':[]})),_0xa753a1=_0x1c7a24(0x2d7),_0x108e08='纯净预设');const _0x37e3e3={'version':'Amily2-Table-Preset-v3.0-separated_templates','batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'tables':_0x2ba1e6},_0x3c50a7=new Blob([JSON[_0x1c7a24(0x294)](_0x37e3e3,null,0x2)],{'type':_0x1c7a24(0x2d8)}),_0x324ff8=URL[_0x1c7a24(0x243)](_0x3c50a7),_0x202c8d=document[_0x1c7a24(0x249)]('a');_0x202c8d['href']=_0x324ff8,_0x202c8d['download']=_0x1c7a24(0x2c3)+_0x108e08+'-'+new Date()[_0x1c7a24(0x2a3)]()[_0x1c7a24(0x2cb)](0x0,0xa)+'.json',document[_0x1c7a24(0x2e3)][_0x1c7a24(0x1f2)](_0x202c8d),_0x202c8d[_0x1c7a24(0x265)](),document['body'][_0x1c7a24(0x1dd)](_0x202c8d),URL[_0x1c7a24(0x29d)](_0x324ff8),log('【'+_0x108e08+_0x1c7a24(0x2c1),_0x1c7a24(0x2dd)),toastr['success']('【'+_0x108e08+_0x1c7a24(0x2b0),'导出成功');}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0x385473){const _0x4334df=_0x53d54e,_0x1d4c52=document[_0x4334df(0x249)](_0x4334df(0x2ae));_0x1d4c52[_0x4334df(0x234)]='file',_0x1d4c52['accept']=_0x4334df(0x1ea),_0x1d4c52[_0x4334df(0x1e2)]=_0x3ecdce=>{const _0x22b2fa=_0x4334df,_0x54c7e4=_0x3ecdce[_0x22b2fa(0x23b)][_0x22b2fa(0x2d4)][0x0];if(!_0x54c7e4)return;const _0x1b832d=new FileReader();_0x1b832d[_0x22b2fa(0x2aa)]=_0x20d7b4=>{const _0x59993d=_0x22b2fa;try{const _0x8aeff2=JSON[_0x59993d(0x250)](_0x20d7b4[_0x59993d(0x23b)][_0x59993d(0x1fa)]);if(!_0x8aeff2['version']||!Array[_0x59993d(0x24e)](_0x8aeff2[_0x59993d(0x264)]))throw new Error('文件格式无效或缺少版本号/表格数据。');const _0xdd0f24=window[_0x59993d(0x212)]('【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格(包括结构和内容)。\x0a\x0a此操作不可逆,是否确定要继续?');if(!_0xdd0f24){log(_0x59993d(0x276),_0x59993d(0x280)),toastr[_0x59993d(0x280)]('导入操作已取消。');return;}if(_0x8aeff2[_0x59993d(0x275)]===_0x59993d(0x21a))saveBatchFillerRuleTemplate(_0x8aeff2[_0x59993d(0x24a)]||''),saveBatchFillerFlowTemplate(_0x8aeff2[_0x59993d(0x269)]||''),saveAiTemplate(_0x8aeff2[_0x59993d(0x27b)]||'');else{if(_0x8aeff2['aiRuleTemplate']!==undefined&&_0x8aeff2['aiFlowTemplate']!==undefined)saveBatchFillerRuleTemplate(_0x8aeff2[_0x59993d(0x27c)]||''),saveBatchFillerFlowTemplate(_0x8aeff2['aiFlowTemplate']||''),saveAiTemplate(_0x8aeff2[_0x59993d(0x1f9)]||'');else _0x8aeff2['aiTemplate']?(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x8aeff2[_0x59993d(0x284)]||''),saveAiTemplate(_0x8aeff2[_0x59993d(0x284)]||'')):log(_0x59993d(0x2db),_0x59993d(0x1fc));}const _0x1898a7=_0x8aeff2[_0x59993d(0x264)];_0x1898a7[_0x59993d(0x2ce)](_0x3c7280=>{const _0x19a38c=_0x59993d;if(_0x3c7280['name']===undefined||_0x3c7280[_0x19a38c(0x2b7)]===undefined||_0x3c7280[_0x19a38c(0x210)]===undefined)throw new Error(_0x19a38c(0x25f)+JSON[_0x19a38c(0x294)](_0x3c7280));if(_0x3c7280['note']===undefined)_0x3c7280[_0x19a38c(0x254)]='无';if(_0x3c7280['rule_add']===undefined)_0x3c7280[_0x19a38c(0x219)]='允许';if(_0x3c7280[_0x19a38c(0x29e)]===undefined)_0x3c7280['rule_delete']='允许';if(_0x3c7280[_0x19a38c(0x29c)]===undefined)_0x3c7280['rule_update']='允许';if(_0x3c7280[_0x19a38c(0x206)]&&!_0x3c7280[_0x19a38c(0x2a8)])_0x3c7280[_0x19a38c(0x2a8)]={},_0x3c7280[_0x19a38c(0x206)][_0x19a38c(0x291)]!==-0x1&&_0x3c7280[_0x19a38c(0x206)][_0x19a38c(0x2cf)]>0x0&&(_0x3c7280['charLimitRules'][_0x3c7280[_0x19a38c(0x206)]['columnIndex']]=_0x3c7280[_0x19a38c(0x206)][_0x19a38c(0x2cf)]);else _0x3c7280[_0x19a38c(0x2a8)]===undefined&&(_0x3c7280[_0x19a38c(0x2a8)]={});delete _0x3c7280['charLimitRule'],!_0x3c7280['rowStatuses']&&(_0x3c7280[_0x19a38c(0x1e6)]=Array(_0x3c7280[_0x19a38c(0x210)][_0x19a38c(0x2e4)])[_0x19a38c(0x283)]('normal')),_0x3c7280[_0x19a38c(0x296)]===undefined&&(_0x3c7280[_0x19a38c(0x296)]=0x0),_0x3c7280['columnWidths']===undefined&&(_0x3c7280[_0x19a38c(0x2b9)]=[]);}),setMemoryState(_0x1898a7);const _0x5aec19=getContext();if(_0x5aec19[_0x59993d(0x2ba)]&&_0x5aec19[_0x59993d(0x2ba)][_0x59993d(0x2e4)]>0x0){const _0x5eedcd=_0x5aec19[_0x59993d(0x2ba)][_0x5aec19['chat'][_0x59993d(0x2e4)]-0x1];saveStateToMessage(getMemoryState(),_0x5eedcd)&&(saveChat(),log(_0x59993d(0x23c),_0x59993d(0x2dd)));}else saveChatDebounced();log(_0x59993d(0x1fd),_0x59993d(0x2dd)),toastr['success'](_0x59993d(0x277),_0x59993d(0x2a4)),typeof _0x385473===_0x59993d(0x238)&&_0x385473();}catch(_0x5846a8){log(_0x59993d(0x245)+_0x5846a8[_0x59993d(0x1df)],_0x59993d(0x239)),toastr['error'](_0x59993d(0x200)+_0x5846a8[_0x59993d(0x1df)],'错误');}},_0x1b832d[_0x22b2fa(0x289)](_0x54c7e4);},_0x1d4c52[_0x4334df(0x265)]();}export async function rollbackState(){const _0x1612af=_0x53d54e,_0x22d7db=getContext();if(!_0x22d7db||!_0x22d7db[_0x1612af(0x2ba)]||_0x22d7db[_0x1612af(0x2ba)][_0x1612af(0x2e4)]<0x2)return log(_0x1612af(0x228),_0x1612af(0x1fc)),toastr[_0x1612af(0x25b)]('聊天记录不足,无法执行回退操作。'),![];const _0x4420c7=_0x22d7db[_0x1612af(0x2ba)],_0x446d9d=_0x4420c7['length']-0x1,_0x1bd854=_0x4420c7[_0x446d9d];log(_0x1612af(0x292)+(_0x446d9d-0x1)+_0x1612af(0x226),'info');const _0x44e7c0=loadTables(_0x446d9d);if(!_0x44e7c0)return log('未能在上一楼找到可用的表格状态,无法回退。',_0x1612af(0x239)),toastr['error'](_0x1612af(0x26d)),![];setMemoryState(_0x44e7c0);if(saveStateToMessage(_0x44e7c0,_0x1bd854))await saveChat(),log(_0x1612af(0x273),_0x1612af(0x2dd));else return log(_0x1612af(0x22f),_0x1612af(0x239)),toastr[_0x1612af(0x239)](_0x1612af(0x2a7)),![];return renderTables(),updateOrInsertTableInChat(),log('UI已更新以显示回退后的状态。','info'),!![];}export async function rollbackAndRefill(){const _0x209a62=_0x53d54e,_0x572acc=extension_settings[extensionName];if(_0x572acc[_0x209a62(0x231)]===![]){log(_0x209a62(0x255),'info'),toastr[_0x209a62(0x280)](_0x209a62(0x261));return;}toastr[_0x209a62(0x280)](_0x209a62(0x1f7));const _0x29291d=await rollbackState();if(!_0x29291d){toastr[_0x209a62(0x239)](_0x209a62(0x26c));return;}toastr[_0x209a62(0x2dd)](_0x209a62(0x290));const _0x1cd11e=getContext(),_0x3218a4=_0x1cd11e[_0x209a62(0x2ba)][_0x1cd11e[_0x209a62(0x2ba)][_0x209a62(0x2e4)]-0x1];try{await fillWithSecondaryApi(_0x3218a4,!![]),log(_0x209a62(0x279),_0x209a62(0x2dd));}catch(_0x685b2a){log(_0x209a62(0x227)+_0x685b2a[_0x209a62(0x1df)],'error'),toastr[_0x209a62(0x239)](_0x209a62(0x2a6)+_0x685b2a[_0x209a62(0x1df)]);}}function _0x4e47(){const _0x20659b=['角色名','状态回退失败,已中止操作。','未能在上一楼找到可用的表格状态。','重命名失败','below','已清除所有单元格高亮标记。','【触发条件】任何时候,如果此表格的行数超过一行,必须删除旧的行,只保留最新、最准确的一行。','重要原因','已成功将回退后的状态保存至最新消息。','创建失败','version','用户取消了导入操作。','预设已成功导入!','物品名','回退并重新填表操作完成。','执行AI指令时出错:\x20','injectionFlowTemplate','aiRuleTemplate','移动。','match','...]','info','【触发条件】当物品的“状态”(如被损坏)、“拥有者”(如被转交或被盗)或“详情”(如发现了新功能)发生变化时,必须更新。','操作成功','fill','aiTemplate','left','clear','\x20|\x20','amily2-force-ui-reload','readAsText','\x20行已恢复。','getPrototypeOf','【删除】:\x20','与关系','name','【触发条件】当通过括号、旁白或其他明确的“第四面墙”方式,提出关于故事背景、规则或未来走向的指令时,必须记录于此。','状态回退成功,准备重新填表...','columnIndex','正在尝试从第\x20',',\x20data=','stringify',')\x20的第\x20','rowLimitRule',')行以下,但切莫完全删除。】','\x20条表格操作指令...','\x20的第\x20','新列\x201','),已智能转换为在表格\x20[','rule_update','revokeObjectURL','rule_delete',')列,字符超出规定(',']\x20的规则已更新。','3227028RmCFGA','\x22\x20已更新内存状态。','toISOString','导入成功','1Jqjhsi','重新填表失败:\x20','未能保存回退状态,操作中止。','charLimitRules','表格不存在。','onload','所有表格的行数据已在内存中清空。','\x0a*\x20','AI指令块为空,无需执行任何操作。','input','【当前(','】已开始下载。','10542340KEtUWV','其他重要信息','无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!','任务名','【核心作用】此表格用于精确追踪故事发生的即时时空背景,确保时间与空间的连续性。它应该始终只包含一行,代表当前的“镜头”位置。\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的表头“','headers','1108914qHPfVT','columnWidths','chat',']\x20的第\x20','【触发条件】当在故事中首次成功施展或习得一个全新的、表格中未记录的技能时,必须添加。','表格\x20\x22','some','size','join','】已成功导出。','拥有者','Amily2-','”已更新为“','技能名','成功将表格\x20','【触发条件】当以下情况发生时,应添加新行:\x0a1.\x20角色接下一个明确的、有目标的委托或命令。\x0a2.\x20角色们达成一个具体的、需要在未来执行的约定。\x0a3.\x20角色为自己设定一个长期的、关键性的目标。','\x20行。','(该表当前内容为空)\x0a',']\x20末尾新增一行。','slice','清空行数据后的状态已强制写入最新消息并立即保存。','【触发条件】当一个角色被确认永久性死亡(非假死或失踪),且其存在不再对后续剧情有直接影响时,可以删除该行。','forEach','limit','【核心作用】追踪故事中的主要情节线、目标和挑战。只记录对剧情发展有重大影响的“任务”,忽略日常琐事。\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任务完成或失败后的最终结果。','map','substring','无法清空:当前表格状态为空。','files','splice','【触发条件】当角色的任何信息发生持久性或关键性变化时,必须更新对应单元格。例如:\x0a1.\x20外貌/身形/衣着发生永久性改变(如断肢、换上新装备)。\x0a2.\x20性格因重大事件而扭转。\x0a3.\x20身份或职业发生变更(如继承王位、被解雇)。\x0a4.\x20与的关系发生根本性转变(如从敌人变为盟友)。','Amily2-Table-Preset-v2.0-clean','application/json','trim','未知操作','导入的预设中缺少指令模板字段,模板将不会被更新。','\x22\x20的表格已存在。','success','文件格式无效或缺少版本号/表格数据。',')超出规定(',')行(','replace','所有表格的剧情内容已清空。','body','length','\x20的列。','全局预设已清除,新聊天将使用默认模板。','push','removeChild','这是一个新创建的表格。','message','9663fbThlE','AI\x20指令更新了表格\x20[','onchange','【触发条件】当任务的“状态”发生任何变化时,必须更新。例如,从\x27进行中\x27变为\x27已完成\x27。当任务的“详情”或“结果”有新的关键信息补充时,也应更新。','10veiDjO','新表格状态已强制写入最新消息并立即保存。','rowStatuses',']\x20已被成功废黜。','amily2_tables_data','\x22\x20已重命名为\x20\x22','.json','已清除所有表格的更新标记。',']\x20的列“','执行AI指令:\x20insertRow(tableIndex=','技能栏','表格名称不能为空。','split','【核心作用】记录那些在故事中具有特殊功能、背景或情感价值的关键物品。普通物品不应记录。\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。','appendChild','\x20中操作。','AI指令错误:尝试在不存在的表格索引\x20','add','\x20已在边界。','正在执行回退并重新填表...','【触发条件】当任务列表超过10行时,优先删除最早的、已经“已完成”且与当前剧情关联度最低的任务。如果存在内容完全重复的任务,应删除。','aiFlowTemplate','result','Amily2-Table-Preset-v2.0-full','warn','预设已成功导入并应用。','表格顺序调整后的状态已强制写入最新消息并立即保存。','69928WFJSIC','导入失败:','amily2_ai_template','执行AI指令:\x20updateRow(tableIndex=','无法创建表格:名称不能为空。','表格状态已准备写入消息\x20[','882900qjheGb','charLimitRule','【说明】:\x0a','\x20列。','具体描述','---','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20insertRow,\x20deleteRow,\x20updateRow\x20}\x20=\x20runner;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','【全局预设导入】\x0a\x0a这将把选定的预设设置为所有新聊天的默认表格。\x0a\x0a此操作将覆盖任何已存在的全局预设,是否确定?','batch_filler_flow_template','object','AI返回内容为空,无法更新表格。','rows','当前没有设置全局预设。','confirm','【触发条件】当故事开始,且此表格为空时,必须立即根据初始场景创建第一行。','已成功创建新表格:[','全局预设已成功导入并保存到扩展设置中。','已根据AI的指示成功更新表格!','extra','\x20行移动到第\x20','rule_add','Amily2-Table-Preset-v3.0-separated_templates','dispatchEvent',')第(','表格\x20[','\x0a\x20\x20\x20\x20\x20\x20\x20\x20','\x20行已标记为待删除。','mes','pending-deletion',',\x20rowIndex=','没有可导出的表格数据。','batch_filler_rule_template','时空栏','\x20条消息加载表格状态...','回退重填过程中发生错误:\x20','无法回退:聊天记录不足。','设定栏','执行AI指令:\x20deleteRow(tableIndex=','【修改】:\x20','废黜表格后的状态已强制写入最新消息并立即保存。','\x20的表格。','成功删除了表格\x20','回退状态保存失败,操作中止。','插入行失败:找不到索引为\x20','table_system_enabled','every','filter','type','完整备份','从预设模板生成默认表格...','成功在表格\x20','function','error','491282MSlQIC','target','导入的预设已强制写入最新消息并立即保存。','【触发条件】只能在明确表示要移除或废弃某条设定时,才能删除对应行。','normal','名为\x20\x22','重命名失败:表格不存在。','\x20中找不到索引为\x20','\x20列的','createObjectURL','【清除全局预设】\x0a\x0a您确定要清除已设置的全局预设吗?\x0a\x0a清除后,新聊天将恢复使用扩展内置的默认表格模板。','导入预设失败:\x20','用户取消了清除全局预设的操作。','未找到任何表格数据或全局预设,使用默认模板。',']\x20新增了一行。','createElement','batchFillerRuleTemplate','【核心作用】此表格是角色关系和状态的核心数据库,用于记录所有在故事中出现的重要角色的详细信息。\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与关系:\x20描述该角色与主角之间的社会或情感关系,如\x27盟友\x27、\x27导师\x27、\x27敌人\x27。\x0a-\x20爱好:\x20角色的兴趣和消遣活动。\x0a-\x20住所:\x20角色的常住地。\x0a-\x20其他重要信息:\x20记录任何不属于以上类别但对角色至关重要的信息,如特殊能力、过去的经历等。','\x20行位置插入了新行。','无需清除,当前未设置任何全局预设。','isArray','无法创建表格:名为\x20\x22','parse','准备执行从AI返回的\x20','无法找到可锚定的消息或保存失败,新表格可能不会被持久化!','【增加】:\x20','note','表格系统总开关已关闭,跳过回退填表。','重命名失败:名称不能为空。','缺少状态或目标消息,无法保存。','【触发条件】只能在明确表示要修改某条设定时,才能更新对应行的描述。','无法导出:当前表格状态为空。','global_table_preset','warning','【触发条件】当一个物品被彻底摧毁、消耗完毕或永久失去其特殊意义时,可以删除。','操作已取消。','全局预设已被清除。','导入的表格数据格式不正确:\x20','删除列失败:在表格\x20','表格系统总开关已关闭,无法执行回退填表。','36ryTVNY',']\x20的顺序已调整。','tables','click','所有AI指令已成功执行完毕。','constructor',']\x20新增了一列。','batchFillerFlowTemplate','rowIndex,'];_0x4e47=function(){return _0x20659b;};return _0x4e47();}export function updateColumnWidth(_0x527469,_0xc5e7da,_0x478ccb){const _0x33c183=_0x53d54e;if(!currentTablesState||!currentTablesState[_0x527469])return;const _0x12d4d7=currentTablesState[_0x527469];!_0x12d4d7['columnWidths']&&(_0x12d4d7[_0x33c183(0x2b9)]=[]);while(_0x12d4d7[_0x33c183(0x2b9)][_0x33c183(0x2e4)]<_0x12d4d7[_0x33c183(0x2b7)][_0x33c183(0x2e4)]){_0x12d4d7[_0x33c183(0x2b9)][_0x33c183(0x1dc)](null);}_0x12d4d7[_0x33c183(0x2b9)][_0xc5e7da]=_0x478ccb;const _0x54bf5c=getContext();if(_0x54bf5c[_0x33c183(0x2ba)]&&_0x54bf5c[_0x33c183(0x2ba)][_0x33c183(0x2e4)]>0x0){const _0x1551b8=_0x54bf5c['chat'][_0x54bf5c[_0x33c183(0x2ba)][_0x33c183(0x2e4)]-0x1];if(saveStateToMessage(currentTablesState,_0x1551b8)){saveChat();return;}}saveChatDebounced();}export function isCurrentTablesEmpty(){const _0x2983d2=_0x53d54e,_0x45cc9d=getMemoryState();if(!_0x45cc9d||_0x45cc9d[_0x2983d2(0x2e4)]===0x0)return!![];return _0x45cc9d[_0x2983d2(0x232)](_0x42b1a4=>!_0x42b1a4[_0x2983d2(0x210)]||_0x42b1a4[_0x2983d2(0x210)][_0x2983d2(0x2e4)]===0x0);}export function clearGlobalPreset(){const _0x105169=_0x53d54e;if(extension_settings[extensionName]&&extension_settings[extensionName][_0x105169(0x25a)]){const _0xa95939=window['confirm'](_0x105169(0x244));_0xa95939?(delete extension_settings[extensionName]['global_table_preset'],saveSettingsDebounced(),log(_0x105169(0x25e),_0x105169(0x2dd)),toastr[_0x105169(0x2dd)](_0x105169(0x2e6),_0x105169(0x282))):(log(_0x105169(0x246),_0x105169(0x280)),toastr['info'](_0x105169(0x25d)));}else log(_0x105169(0x24d),'info'),toastr[_0x105169(0x280)](_0x105169(0x211),'提示');}export function importGlobalPreset(_0x2d889d){const _0x149108=_0x53d54e,_0x149ebc=document[_0x149108(0x249)]('input');_0x149ebc[_0x149108(0x234)]='file',_0x149ebc['accept']=_0x149108(0x1ea),_0x149ebc['onchange']=_0x238f31=>{const _0x1b833f=_0x149108,_0x56656f=_0x238f31['target']['files'][0x0];if(!_0x56656f)return;const _0x4b22ea=new FileReader();_0x4b22ea['onload']=_0x5aebe7=>{const _0x28c28d=_0x346b;try{const _0x182a92=JSON['parse'](_0x5aebe7[_0x28c28d(0x23b)]['result']);if(!_0x182a92[_0x28c28d(0x275)]||!Array[_0x28c28d(0x24e)](_0x182a92[_0x28c28d(0x264)]))throw new Error(_0x28c28d(0x2de));const _0x225593=window[_0x28c28d(0x212)](_0x28c28d(0x20c));if(!_0x225593){log('用户取消了全局预设导入操作。',_0x28c28d(0x280)),toastr[_0x28c28d(0x280)](_0x28c28d(0x25d));return;}const _0x1a66d2=_0x182a92[_0x28c28d(0x264)][_0x28c28d(0x2d1)](_0x559033=>({'name':_0x559033[_0x28c28d(0x28e)],'headers':_0x559033[_0x28c28d(0x2b7)],'note':_0x559033[_0x28c28d(0x254)],'rule_add':_0x559033['rule_add'],'rule_delete':_0x559033[_0x28c28d(0x29e)],'rule_update':_0x559033[_0x28c28d(0x29c)],'rows':[]}));!extension_settings[extensionName]&&(extension_settings[extensionName]={});extension_settings[extensionName][_0x28c28d(0x25a)]={'version':_0x182a92[_0x28c28d(0x275)],'tables':_0x1a66d2,'batchFillerRuleTemplate':_0x182a92['batchFillerRuleTemplate'],'batchFillerFlowTemplate':_0x182a92[_0x28c28d(0x269)]},saveSettingsDebounced();if(_0x182a92['version']===_0x28c28d(0x21a))saveBatchFillerRuleTemplate(_0x182a92[_0x28c28d(0x24a)]||''),saveBatchFillerFlowTemplate(_0x182a92[_0x28c28d(0x269)]||''),saveAiTemplate(_0x182a92[_0x28c28d(0x27b)]||'');else{if(_0x182a92['aiRuleTemplate']!==undefined&&_0x182a92[_0x28c28d(0x1f9)]!==undefined)saveBatchFillerRuleTemplate(_0x182a92['aiRuleTemplate']||''),saveBatchFillerFlowTemplate(_0x182a92[_0x28c28d(0x1f9)]||''),saveAiTemplate(_0x182a92[_0x28c28d(0x1f9)]||'');else _0x182a92['aiTemplate']&&(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x182a92[_0x28c28d(0x284)]||''),saveAiTemplate(_0x182a92[_0x28c28d(0x284)]||''));}log(_0x28c28d(0x215),_0x28c28d(0x2dd)),toastr[_0x28c28d(0x2dd)]('全局预设已设置!新聊天将默认使用此预设。','设置成功'),typeof _0x2d889d==='function'&&_0x2d889d();}catch(_0x5c73f8){log('导入全局预设失败:\x20'+_0x5c73f8['message'],_0x28c28d(0x239)),toastr['error'](_0x28c28d(0x200)+_0x5c73f8[_0x28c28d(0x1df)],'错误');}},_0x4b22ea[_0x1b833f(0x289)](_0x56656f);},_0x149ebc[_0x149108(0x265)]();}