Files
assist/src/agent/__pycache__/intelligent_agent.cpython-311.pyc

132 lines
17 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00>3<EFBFBD>h<EFBFBD>5<00><00>R<00>dZddlZddlZddlZddlmZmZmZmZm Z ddl
m
Z
ddl m Z ddl mZeje<10><00>ZGd<07>de<0E><00>ZGd <09>d
e<0E><00>Ze Gd <0B>d <0C><00><00><00>Ze Gd <0A>d<0E><00><00><00>Ze Gd<0F>d<10><00><00><00>ZGd<11>d<12><00>ZdS)u[
智能Agent核心 - 集成大模型和智能决策
高效实现Agent的智能处理能力
<EFBFBD>N)<05>Dict<63>Any<6E>List<73>Optional<61>Tuple)<01>datetime)<01> dataclass)<01>Enumc<00>&<00>eZdZdZdZdZdZdZdZdS)<08>
ActionTypeu动作类型枚举<E69E9A>alert_response<73>knowledge_update<74>workorder_create<74>system_optimize<7A> user_notifyN) <09>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>ALERT_RESPONSE<53>KNOWLEDGE_UPDATE<54>WORKORDER_CREATE<54>SYSTEM_OPTIMIZE<5A> USER_NOTIFY<46><00><00>4d:\code\tsp-assistant\src\agent\intelligent_agent.pyr r s/<00><00><00><00><00><00><1C><1C>%<25>N<EFBFBD>)<29><14>)<29><14>'<27>O<EFBFBD><1F>K<EFBFBD>K<EFBFBD>Krr c<00><00>eZdZdZdZdZdZdS)<06>ConfidenceLevelu置信度等级<E7AD89>high<67>medium<75>lowN)rrrr<00>HIGH<47>MEDIUM<55>LOWrrrrrs#<00><00><00><00><00><00><19><19> <11>D<EFBFBD> <15>F<EFBFBD>
<0F>C<EFBFBD>C<EFBFBD>Crrc<00>`<00>eZdZUdZeed<eed<eed<eed<e ee
fed<eed<dS) <09> AgentActionu Agent动作<E58AA8> action_type<70> description<6F>priority<74>
confidence<EFBFBD>
parameters<EFBFBD>estimated_timeN) rrrrr <00>__annotations__<5F>str<74>int<6E>floatrrrrrr'r' se<00><00><00><00><00><00><00><15><15><1B><1B><1B><1B><14><14><14><14><11>M<EFBFBD>M<EFBFBD>M<EFBFBD><15><15><15><15><14>S<EFBFBD>#<23>X<EFBFBD><0E><1E><1E><1E><17><17><17><17><17>rr'c<00>l<00>eZdZUdZeed<eed<eed<eed<eeed<eeefed<dS) <09> AlertContextu预警上下文<E4B88B>alert_id<69>
alert_type<EFBFBD>severityr)<00>affected_systems<6D>metricsN) rrrrr/r.rrrrrrr3r3*sc<00><00><00><00><00><00><00><19><19><11>M<EFBFBD>M<EFBFBD>M<EFBFBD><13>O<EFBFBD>O<EFBFBD>O<EFBFBD><11>M<EFBFBD>M<EFBFBD>M<EFBFBD><14><14><14><14><1A>3<EFBFBD>i<EFBFBD><1F><1F><1F> <11>#<23>s<EFBFBD>(<28>^<5E><1B><1B><1B><1B>rr3c<00>F<00>eZdZUdZeed<eed<eed<eed<eed<dS)<08>KnowledgeContextu知识库上下文<E4B88B>question<6F>answerr+<00>source<63>categoryN)rrrrr/r.r1rrrr:r:4sF<00><00><00><00><00><00><00><1C><1C><11>M<EFBFBD>M<EFBFBD>M<EFBFBD> <0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><15><15><15><15> <0F>K<EFBFBD>K<EFBFBD>K<EFBFBD><11>M<EFBFBD>M<EFBFBD>M<EFBFBD>M<EFBFBD>Mrr:c<00><><00>eZdZdZdd<03>Zdedeefd<06>Zde deefd<08>Z
d ede e e ffd
<EFBFBD>Zdede fd <0B>Zde de fd <0C>Zd e de e e ffd<0E>Zd e de e e ffd<0F>Zde e e fdedeefd<11>Zde e e fde deefd<13>Zdedefd<14>Zde defd<15>Zd ede e e ffd<16>Zd ede e e ffd<17>Zd ede e e ffd<18>Zd ede e e ffd<19>Zd ede e e ffd<1A>ZdS)<1C>IntelligentAgentu智能Agent核心Nc<00>F<00>||_g|_i|_dddd<04>|_dS)N皙<4E><E79A99><EFBFBD><EFBFBD><EFBFBD>?<3F><00>?<3F>333333<33>?)r r!r")<04>
llm_client<EFBFBD>action_history<72> learning_data<74>confidence_thresholds)<02>selfrEs r<00>__init__zIntelligentAgent.__init__@s7<00><00>$<24><04><0F> <20><04><1B><1F><04><1A><17><19><16>&
<EFBFBD>&
<EFBFBD><04>"<22>"<22>"r<00> alert_context<78>returnc<00><00>\K<00> |<00>|<01><00>}|<00>|<02><00><00>d{V<00><03>}|<00>||<01><00>}|<04>d<02>d<03><04><00>|S#t$r=}t
<00>d|<05><00><02><00>|<00>|<01><00>gcYd}~Sd}~wwxYw)u'处理预警信息生成智能动作Nc<00><00>|jS<00>N)r*)<01>xs r<00><lambda>z0IntelligentAgent.process_alert.<locals>.<lambda>Ws<00><00>q<EFBFBD>z<EFBFBD>rT)<02>key<65>reverseu处理预警失败: )<08>_build_alert_analysis_prompt<70> _call_llm<6C>_parse_alert_actions<6E>sort<72> Exception<6F>logger<65>error<6F>_create_default_alert_action)rIrK<00>prompt<70>analysis<69>actions<6E>es r<00> process_alertzIntelligentAgent.process_alertJs<><00><00><00><00> F<01><19>6<>6<>}<7D>E<>E<>F<EFBFBD>"<22>^<5E>^<5E>F<EFBFBD>3<>3<>3<>3<>3<>3<>3<>3<>H<EFBFBD><1B>/<2F>/<2F><08>-<2D>H<>H<>G<EFBFBD> <14>L<EFBFBD>L<EFBFBD>1<>1<>4<EFBFBD>L<EFBFBD> @<40> @<40> @<40><1A>N<EFBFBD><4E><18> F<01> F<01> F<01> <12>L<EFBFBD>L<EFBFBD>3<><01>3<>3<> 4<> 4<> 4<><18>5<>5<>m<EFBFBD>D<>D<>E<> E<> E<> E<> E<> E<> E<><45><EFBFBD><EFBFBD><EFBFBD> F<01><><EFBFBD>s<00>AA$<00>$
B+<03>.2B&<03> B+<03>&B+<03>knowledge_contextc<00><00>\K<00> |j|jdkrgS|<00>|<01><00>}|<00>|<02><00><00>d{V<00><03>}|<00>||<01><00>}|S#t
$r=}t <00>d|<05><00><02><00>|<00>|<01><00>gcYd}~Sd}~wwxYw)u处理知识库置信度问题r Nu 处理知识库置信度失败: ) r+rH<00>#_build_knowledge_enhancement_promptrU<00>_parse_knowledge_actionsrXrYrZ<00> _create_default_knowledge_action)rIrar\<00> enhancementr^r_s r<00>process_knowledge_confidencez-IntelligentAgent.process_knowledge_confidence_s<><00><00><00><00> N<01> <20>+<2B>t<EFBFBD>/I<>&<26>/Q<>Q<>Q<><19> <09><1A>=<3D>=<3D>>O<>P<>P<>F<EFBFBD>!%<25><0E><0E>v<EFBFBD> 6<> 6<>6<>6<>6<>6<>6<>6<>K<EFBFBD><1B>3<>3<>K<EFBFBD>AR<41>S<>S<>G<EFBFBD><1A>N<EFBFBD><4E><18> N<01> N<01> N<01> <12>L<EFBFBD>L<EFBFBD>?<3F>A<EFBFBD>?<3F>?<3F> @<40> @<40> @<40><18>9<>9<>:K<>L<>L<>M<> M<> M<> M<> M<> M<> M<><4D><EFBFBD><EFBFBD><EFBFBD> N<01><><EFBFBD>s#<00>A$<00>AA$<00>$
B+<03>.2B&<03> B+<03>&B+<03>actionc<00><00><>K<00> t<00>d|jj<00>d|j<00><00><04><00>|jt
jkr|<00>|<01><00><00>d{V<00><03>S|jt
jkr|<00> |<01><00><00>d{V<00><03>S|jt
j
kr|<00> |<01><00><00>d{V<00><03>S|jt
j kr|<00> |<01><00><00>d{V<00><03>S|jt
jkr|<00>|<01><00><00>d{V<00><03>Sddd<06>S#t $r9}t<00>d|<02><00><02><00>dt%|<02><00>d<06>cYd}~Sd}~wwxYw)u执行Agent动作u执行Agent动作: z - NFu未知动作类型)<02>successrZu执行动作失败: )rY<00>infor(<00>valuer)r r<00>_execute_alert_responser<00>_execute_knowledge_updater<00>_execute_workorder_creater<00>_execute_system_optimizer<00>_execute_user_notifyrXrZr/)rIrhr_s r<00>execute_actionzIntelligentAgent.execute_actionts<><00><00><00><00> 7<> <12>K<EFBFBD>K<EFBFBD>_<>f<EFBFBD>.@<40>.F<>_<>_<>6<EFBFBD>K]<5D>_<>_<> `<60> `<60> `<60><15>!<21>Z<EFBFBD>%><3E>><3E>><3E>!<21>9<>9<>&<26>A<>A<>A<>A<>A<>A<>A<>A<>A<><17>#<23>z<EFBFBD>'B<>B<>B<>!<21>;<3B>;<3B>F<EFBFBD>C<>C<>C<>C<>C<>C<>C<>C<>C<><17>#<23>z<EFBFBD>'B<>B<>B<>!<21>;<3B>;<3B>F<EFBFBD>C<>C<>C<>C<>C<>C<>C<>C<>C<><17>#<23>z<EFBFBD>'A<>A<>A<>!<21>:<3A>:<3A>6<EFBFBD>B<>B<>B<>B<>B<>B<>B<>B<>B<><17>#<23>z<EFBFBD>'=<3D>=<3D>=<3D>!<21>6<>6<>v<EFBFBD>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>><3E>#(<28>3G<33>H<>H<>H<><48><18> 7<> 7<> 7<> <12>L<EFBFBD>L<EFBFBD>3<><01>3<>3<> 4<> 4<> 4<>$<24>s<EFBFBD>1<EFBFBD>v<EFBFBD>v<EFBFBD>6<>6<> 6<> 6<> 6<> 6<> 6<> 6<><36><EFBFBD><EFBFBD><EFBFBD> 7<><37><EFBFBD>s<<00>AD(<00>#/D(<00>/D(<00>/D(<00>3/D(<00>#D(<00>(
E+<03>2.E&<03> E+<03>&E+c <00><><00>d|j<00>d|j<00>d|j<00>dd<05>|j<00><00><00>dt j|jd<07><08><00><00>d <09> S)
u构建预警分析提示uh
作为TSP智能助手请分析以下预警信息并提供处理建议
预警信息:
- 类型: u
- 严重程度: u
- 描述: u
- 影响系统: z, u
- 指标数据: F)<01> ensure_asciiu7
请提供以下格式的JSON响应
{
"analysis": "预警原因分析",
"immediate_actions": [
{
"action": "立即执行的动作",
"priority": 5,
"confidence": 0.9,
"parameters": {"key": "value"}
}
],
"follow_up_actions": [
{
"action": "后续跟进动作",
"priority": 3,
"confidence": 0.7,
"parameters": {"key": "value"}
}
],
"prevention_measures": [
"预防措施1",
"预防措施2"
]
}
)r5r6r)<00>joinr7<00>json<6F>dumpsr8<00>rIrKs rrTz-IntelligentAgent._build_alert_analysis_prompt<70>s<><00><00>"<04> <19> #<23> "<04>"<04>
<1F>'<27> "<04>"<04> <19> $<24> "<04>"<04><16><19><19>=<3D>9<>:<3A>:<3A>"<04>"<04><16><1A>M<EFBFBD>1<><05>F<>F<>F<>"<04>"<04>"<04>" rc <00>X<00>d|j<00>d|j<00>d|j<00>d|j<00>d|j<00>d<06> S)u构建知识增强提示uk
作为TSP智能助手请分析以下知识库条目并提供增强建议
知识条目:
- 问题: u
- 答案: u
- 置信度: u
- 来源: u
- 分类: u<>
请提供以下格式的JSON响应
{
"confidence_analysis": "置信度分析",
"enhancement_suggestions": [
"增强建议1",
"增强建议2"
],
"actions": [
{
"action": "知识更新动作",
"priority": 4,
"confidence": 0.8,
"parameters": {"enhanced_answer": "增强后的答案"}
}
],
"learning_opportunities": [
"学习机会1",
"学习机会2"
]
}
)r;r<r+r=r><00>rIras rrcz4IntelligentAgent._build_knowledge_enhancement_prompt<70>sk<00><00><04> <1D> %<25> <04><04>
<1D> #<23> <04><04>  <20>*<2A> <04><04> <1D> #<23><04><04> <1D> %<25><04><04><04> rr\c<00><00>:K<00> |jr4|j<00>|<01><00><00>d{V<00><03>}tj|<02><00>S|<00>|<01><00>S#t
$r<}t <00>d|<03><00><02><00>|<00>|<01><00>cYd}~Sd}~wwxYw)u调用大模型Nu调用大模型失败: )rE<00>generaterv<00>loads<64>_simulate_llm_responserXrYrZ)rIr\<00>responser_s rrUzIntelligentAgent._call_llm<6C>s<><00><00><00><00>
7<><13><EFBFBD> ;<3B>!%<25><1F>!9<>!9<>&<26>!A<>!A<>A<>A<>A<>A<>A<>A<><08><1B>z<EFBFBD>(<28>+<2B>+<2B>+<2B><1C>2<>2<>6<EFBFBD>:<3A>:<3A>:<3A><><18> 7<> 7<> 7<> <12>L<EFBFBD>L<EFBFBD>6<>1<EFBFBD>6<>6<> 7<> 7<> 7<><17>.<2E>.<2E>v<EFBFBD>6<>6<> 6<> 6<> 6<> 6<> 6<> 6<><36><EFBFBD><EFBFBD><EFBFBD> 7<><37><EFBFBD>s"<00>:A<00>A<00>
B<03>1B<03>B<03>Bc<00>f<00>d|vrddddddd<08>d <09>gd
d d d dd<0F>d <09>ggd<10>d<11>Sdgd<13>dddddid <09>ggd<19>d<1A>S)u*模拟大模型响应 - 千问模型风格u 预警信息u<E681AF>【千问分析】系统性能下降需要立即处理。根据历史数据分析这可能是由于资源不足或配置问题导致的。u重启相关服务<E69C8D>g<><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F> main_serviceu服务响应超时)<02>service<63>reason)rhr*r+r,u检查系统日志<E697A5>gffffff<66>?rZ<00> last_hour)<02> log_level<65>
time_range)u'增加监控频率提前发现问题u!优化系统配置提升性能u'建立预警机制,减少故障影响)r]<00>immediate_actions<6E>follow_up_actions<6E>prevention_measuresu<73>【千问分析】当前答案置信度较低,需要更多上下文信息。建议结合用户反馈和历史工单数据来提升答案质量。)u'添加更多实际案例和操作步骤u!提供详细的故障排除指南u!结合系统架构图进行说明u更新知识库条目<E69DA1>rB<00>enhanced_answeru'基于千问模型分析的增强答案)u'收集用户反馈持续优化答案u'分析相似问题建立知识关联u6利用千问模型的学习能力,提升知识质量)<04>confidence_analysis<69>enhancement_suggestionsr^<00>learning_opportunitiesr)rIr\s rr~z'IntelligentAgent._simulate_llm_response<73>s<><00><00> <19>V<EFBFBD> #<23> #<23>o<02>#7<>$%<25>&)<29>2@<40>L`<60>&a<>&a<> <16><16>&<12>#7<>$%<25>&)<29>4;<3B>;<3B>&W<>&W<> <16><16>&<12>(<12>(<12>(<12>%<0E><0E> <0E>4(}<02>,<12>,<12>,<12>#:<3A>$%<25>&)<29>'8<>:c<>&d<> <16><16><12>+<12>+<12>+<12><0E><0E> rr]c <00><><00>g}|<01>dg<00><00>D]N}ttj|d|d|d|dd<06><07><00>}|<03>|<05><00><00>O|<01>dg<00><00>D]N}ttj|d|d|d|dd <09><07><00>}|<03>|<05><00><00>O|S)
u解析预警动作r<E4BD9C>rhr*r+r,<00><00>r(r)r*r+r,r-r<>i,)<06>getr'r r<00>appendr)rIr]rKr^<00> action_datarhs rrVz%IntelligentAgent._parse_alert_actionss<><00><00><14><07>$<24><<3C><<3C>(;<3B>R<EFBFBD>@<40>@<40> #<23> #<23>K<EFBFBD> <20>&<26>5<>'<27><08>1<>$<24>Z<EFBFBD>0<>&<26>|<7C>4<>&<26>|<7C>4<>!<21> <0E><0E><0E>F<EFBFBD> <14>N<EFBFBD>N<EFBFBD>6<EFBFBD> "<22> "<22> "<22> "<22>$<24><<3C><<3C>(;<3B>R<EFBFBD>@<40>@<40> #<23> #<23>K<EFBFBD> <20>&<26>6<>'<27><08>1<>$<24>Z<EFBFBD>0<>&<26>|<7C>4<>&<26>|<7C>4<>"<22> <0E><0E><0E>F<EFBFBD> <14>N<EFBFBD>N<EFBFBD>6<EFBFBD> "<22> "<22> "<22> "<22><16>rrfc <00><><00>g}|<01>dg<00><00>D]N}ttj|d|d|d|dd<06><07><00>}|<03>|<05><00><00>O|S)u解析知识库动作r^rhr*r+r,<00><r<>)r<>r'r rr<>)rIrfrar^r<>rhs rrdz)IntelligentAgent._parse_knowledge_actions0s}<00><00><14><07>&<26>?<3F>?<3F>9<EFBFBD>b<EFBFBD>9<>9<> #<23> #<23>K<EFBFBD> <20>&<26>7<>'<27><08>1<>$<24>Z<EFBFBD>0<>&<26>|<7C>4<>&<26>|<7C>4<>!<21> <0E><0E><0E>F<EFBFBD> <14>N<EFBFBD>N<EFBFBD>6<EFBFBD> "<22> "<22> "<22> "<22><16>rc<00>`<00>ttjd|j<00>d<02>ddd|jid<06><07><00>S)u创建默认预警动作u通知管理员处理u预警r<E8ADA6>rCr4<00>
r<>)r'r rr5r4rxs rr[z-IntelligentAgent._create_default_alert_actionAsD<00><00><1A>"<22>.<2E>P<> <0A>0H<30>P<>P<>P<><16><1A>"<22>M<EFBFBD>$:<3A>;<3B><1D> 
<EFBFBD>
<EFBFBD>
<EFBFBD>
rc<00>N<00>ttjdddd|jid<05><06><00>S)u创建默认知识库动作u3标记低置信度知识条目等待人工审核<E5AEA1>rDr;r<>r<>)r'r rr;rzs rrez1IntelligentAgent._create_default_knowledge_actionLs7<00><00><1A>"<22>3<>M<><16><1A>"<22>$5<>$><3E>?<3F><1C> 
<EFBFBD>
<EFBFBD>
<EFBFBD>
rc<00><00>TK<00>t<00>d|j<00><00><02><00>ddd<04>S)u执行预警响应动作u执行预警响应: Tu预警响应已执行<E689A7>rj<00>message<67>rYrkr)<00>rIrhs rrmz(IntelligentAgent._execute_alert_responseW<00>5<00><00><00><00> <0F> <0B> <0B>?<3F>6<EFBFBD>+=<3D>?<3F>?<3F>@<40>@<40>@<40><1F>,C<>D<>D<>Drc<00><00>TK<00>t<00>d|j<00><00><02><00>ddd<04>S)u执行知识库更新动作u执行知识库更新: Tu知识库已更新r<E696B0>r<>r<>s rrnz*IntelligentAgent._execute_knowledge_update]s5<00><00><00><00> <0F> <0B> <0B>B<>f<EFBFBD>.@<40>B<>B<>C<>C<>C<><1F>,@<40>A<>A<>Arc<00><00>TK<00>t<00>d|j<00><00><02><00>ddd<04>S)u执行工单创建动作u执行工单创建: Tu工单已创建r<E5BBBA>r<>r<>s rroz*IntelligentAgent._execute_workorder_createc<00>5<00><00><00><00> <0F> <0B> <0B>?<3F>6<EFBFBD>+=<3D>?<3F>?<3F>@<40>@<40>@<40><1F>,=<3D>><3E>><3E>>rc<00><00>TK<00>t<00>d|j<00><00><02><00>ddd<04>S)u执行系统优化动作u执行系统优化: Tu系统优化已执行r<E8A18C>r<>r<>s rrpz)IntelligentAgent._execute_system_optimizeir<>rc<00><00>TK<00>t<00>d|j<00><00><02><00>ddd<04>S)u执行用户通知动作u执行用户通知: Tu用户已通知r<E79FA5>r<>r<>s rrqz%IntelligentAgent._execute_user_notifyor<>rrO)rrrrrJr3rr'r`r:rgrr/rrrrTrcrUr~rVrdr[rermrnrorprqrrrr@r@=s<><00><00><00><00><00><00><1B><1B>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>F<01><1C>F<01>$<24>{<7B>BS<42>F<01>F<01>F<01>F<01>*N<01>DT<44>N<01>Y]<5D>^i<>Yj<59>N<01>N<01>N<01>N<01>*7<>;<3B>7<>4<EFBFBD><03>S<EFBFBD><08>><3E>7<>7<>7<>7<>,$<04>,<2C>$<04>3<EFBFBD>$<04>$<04>$<04>$<04>L <04>EU<45> <04>Z]<5D> <04> <04> <04> <04>D 7<>c<EFBFBD> 7<>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD> 7<> 7<> 7<> 7<>0<0E>S<EFBFBD>0<0E>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E>0<0E>0<0E>0<0E>0<0E>d<17>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E><17>L<EFBFBD><17>]a<>bm<62>]n<><17><17><17><17><<17>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD><17>Wg<57><17>lp<6C>q|<7C>l}<7D><17><17><17><17>" 
<EFBFBD>,<2C> 
<EFBFBD>;<3B> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD>BR<EFBFBD> 
<EFBFBD>Wb<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD> 
<EFBFBD>E<01>K<EFBFBD>E<01>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD>E<01>E<01>E<01>E<01> B<01>k<EFBFBD>B<01>d<EFBFBD>3<EFBFBD>PS<50>8<EFBFBD>n<EFBFBD>B<01>B<01>B<01>B<01> ?<3F>k<EFBFBD>?<3F>d<EFBFBD>3<EFBFBD>PS<50>8<EFBFBD>n<EFBFBD>?<3F>?<3F>?<3F>?<3F> E<01>[<5B>E<01>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E>E<01>E<01>E<01>E<01> ?<3F><1B>?<3F><14>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E>?<3F>?<3F>?<3F>?<3F>?<3F>?rr@)r<00>logging<6E>asynciorv<00>typingrrrrrr<00> dataclassesr <00>enumr
<00> getLoggerrrYr rr'r3r:r@rrr<00><module>r<>s<><00><01><04><04>
<0F><0E><0E><0E><0E><0E><0E><0E> <0B> <0B> <0B> <0B>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<>3<><1D><1D><1D><1D><1D><1D>!<21>!<21>!<21>!<21>!<21>!<21><15><15><15><15><15><15> <1A><17> <1A>8<EFBFBD> $<24> $<24><06> <20> <20> <20> <20> <20><14> <20> <20> <20><10><10><10><10><10>d<EFBFBD><10><10><10>  <0B><18><18><18><18><18><18><18> <0B><19><18> <0B><1C><1C><1C><1C><1C><1C><1C> <0B><19><1C> <0B><12><12><12><12><12><12><12> <0B><19><12>v?<3F>v?<3F>v?<3F>v?<3F>v?<3F>v?<3F>v?<3F>v?<3F>v?<3F>v?r