<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1245px" preserveAspectRatio="none" style="width:3077px;height:1245px;background:#FFFFFF;" version="1.1" viewBox="0 0 3077 1245" width="3077px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Verdana" font-size="22" font-weight="bold" lengthAdjust="spacing" textLength="325" x="1371.5" y="37.1182">UML MCP 渲染服务 - 核心类图</text><!--cluster FastMCP--><g id="cluster_FastMCP"><path d="M13.5,241.4273 L79.5,241.4273 A3.75,3.75 0 0 1 82,243.9273 L89,264.442 L231.5,264.442 A2.5,2.5 0 0 1 234,266.942 L234,418.9873 A2.5,2.5 0 0 1 231.5,421.4873 L13.5,421.4873 A2.5,2.5 0 0 1 11,418.9873 L11,243.9273 A2.5,2.5 0 0 1 13.5,241.4273 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="11" x2="89" y1="264.442" y2="264.442"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="65" x="15" y="257.5025">FastMCP</text></g><!--cluster Core Components--><g id="cluster_Core Components"><path d="M268.5,147.3373 L408.5,147.3373 A3.75,3.75 0 0 1 411,149.8373 L418,170.352 L805.5,170.352 A2.5,2.5 0 0 1 808,172.852 L808,936.8173 A2.5,2.5 0 0 1 805.5,939.3173 L268.5,939.3173 A2.5,2.5 0 0 1 266,936.8173 L266,149.8373 A2.5,2.5 0 0 1 268.5,147.3373 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="266" x2="418" y1="170.352" y2="170.352"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="139" x="270" y="163.4125">Core Components</text></g><!--cluster Cache System--><g id="cluster_Cache System"><path d="M2238.5,562.5673 L2347.5,562.5673 A3.75,3.75 0 0 1 2350,565.0673 L2357,585.582 L2621.5,585.582 A2.5,2.5 0 0 1 2624,588.082 L2624,1236.4673 A2.5,2.5 0 0 1 2621.5,1238.9673 L2238.5,1238.9673 A2.5,2.5 0 0 1 2236,1236.4673 L2236,565.0673 A2.5,2.5 0 0 1 2238.5,562.5673 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="2236" x2="2357" y1="585.582" y2="585.582"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="108" x="2240" y="578.6425">Cache System</text></g><!--cluster Metrics & Monitoring--><g id="cluster_Metrics & Monitoring"><path d="M2650.5,605.1073 L2815.5,605.1073 A3.75,3.75 0 0 1 2818,607.6073 L2825,628.122 L3067.5,628.122 A2.5,2.5 0 0 1 3070,630.622 L3070,902.7873 A2.5,2.5 0 0 1 3067.5,905.2873 L2650.5,905.2873 A2.5,2.5 0 0 1 2648,902.7873 L2648,607.6073 A2.5,2.5 0 0 1 2650.5,605.1073 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="2648" x2="2825" y1="628.122" y2="628.122"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="164" x="2652" y="621.1825">Metrics & Monitoring</text></g><!--cluster Validation & Encoding--><g id="cluster_Validation & Encoding"><path d="M1204.5,664.6573 L1380.5,664.6573 A3.75,3.75 0 0 1 1383,667.1573 L1390,687.672 L2209.5,687.672 A2.5,2.5 0 0 1 2212,690.172 L2212,843.2373 A2.5,2.5 0 0 1 2209.5,845.7373 L1204.5,845.7373 A2.5,2.5 0 0 1 1202,843.2373 L1202,667.1573 A2.5,2.5 0 0 1 1204.5,664.6573 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="1202" x2="1390" y1="687.672" y2="687.672"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="175" x="1206" y="680.7325">Validation & Encoding</text></g><!--cluster Exceptions--><g id="cluster_Exceptions"><path d="M536.5,1040.8773 L622.5,1040.8773 A3.75,3.75 0 0 1 625,1043.3773 L632,1063.892 L1529.5,1063.892 A2.5,2.5 0 0 1 1532,1066.392 L1532,1168.4073 A2.5,2.5 0 0 1 1529.5,1170.9073 L536.5,1170.9073 A2.5,2.5 0 0 1 534,1168.4073 L534,1043.3773 A2.5,2.5 0 0 1 536.5,1040.8773 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="534" x2="632" y1="1063.892" y2="1063.892"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="85" x="538" y="1056.9525">Exceptions</text></g><!--class FastMCP--><g id="elem_FastMCP"><rect codeLine="5" fill="#FFFFFF" height="112.0586" id="FastMCP" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="155" x="35.5" y="285.4273"/><ellipse cx="79.75" cy="299.4273" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M82.2231,305.5704 Q81.6421,305.8692 81.0029,306.0186 Q80.3638,306.168 79.6582,306.168 Q77.1514,306.168 75.8315,304.5162 Q74.5117,302.8643 74.5117,299.7432 Q74.5117,296.6138 75.8315,294.962 Q77.1514,293.3101 79.6582,293.3101 Q80.3638,293.3101 81.0112,293.4595 Q81.6587,293.6089 82.2231,293.9078 L82.2231,296.6304 Q81.5923,296.0494 80.9988,295.7796 Q80.4053,295.5098 79.7744,295.5098 Q78.4297,295.5098 77.7449,296.5765 Q77.0601,297.6431 77.0601,299.7432 Q77.0601,301.835 77.7449,302.9017 Q78.4297,303.9683 79.7744,303.9683 Q80.4053,303.9683 80.9988,303.6985 Q81.5923,303.4288 82.2231,302.8477 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="59" x="97.25" y="304.9952">FastMCP</text><line style="stroke:#000000;stroke-width:1.0;" x1="36.5" x2="189.5" y1="313.4273" y2="313.4273"/><ellipse cx="46.5" cy="327.4346" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="69" x="53.5" y="331.5025">name: str</text><ellipse cx="46.5" cy="344.4493" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="110" x="53.5" y="348.5171">tools: List[Tool]</text><line style="stroke:#000000;stroke-width:1.0;" x1="36.5" x2="189.5" y1="355.4566" y2="355.4566"/><ellipse cx="46.5" cy="369.4639" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="68" x="53.5" y="373.5318">tool(func)</text><ellipse cx="46.5" cy="386.4786" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="131" x="53.5" y="390.5464">run(transport: str)</text></g><!--class Config--><g id="elem_Config"><rect codeLine="14" fill="#FFFFFF" height="316.2344" id="Config" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="230" x="282" y="607.0773"/><ellipse cx="370.75" cy="621.0773" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M373.2231,627.2204 Q372.6421,627.5192 372.0029,627.6686 Q371.3638,627.818 370.6582,627.818 Q368.1514,627.818 366.8315,626.1662 Q365.5117,624.5143 365.5117,621.3932 Q365.5117,618.2638 366.8315,616.612 Q368.1514,614.9601 370.6582,614.9601 Q371.3638,614.9601 372.0112,615.1095 Q372.6587,615.2589 373.2231,615.5578 L373.2231,618.2804 Q372.5923,617.6994 371.9988,617.4296 Q371.4053,617.1598 370.7744,617.1598 Q369.4297,617.1598 368.7449,618.2265 Q368.0601,619.2931 368.0601,621.3932 Q368.0601,623.485 368.7449,624.5517 Q369.4297,625.6183 370.7744,625.6183 Q371.4053,625.6183 371.9988,625.3485 Q372.5923,625.0788 373.2231,624.4977 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="45" x="388.25" y="626.6452">Config</text><line style="stroke:#000000;stroke-width:1.0;" x1="283" x2="511" y1="635.0773" y2="635.0773"/><ellipse cx="293" cy="649.0846" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="112" x="300" y="653.1525">server_host: str</text><ellipse cx="293" cy="666.0993" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="111" x="300" y="670.1671">server_port: int</text><ellipse cx="293" cy="683.1139" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="162" x="300" y="687.1818">plantuml_jar_path: str</text><ellipse cx="293" cy="700.1286" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="143" x="300" y="704.1964">java_executable: str</text><ellipse cx="293" cy="717.1432" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="140" x="300" y="721.2111">render_timeout: int</text><ellipse cx="293" cy="734.1579" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="131" x="300" y="738.2257">max_uml_size: int</text><ellipse cx="293" cy="751.1725" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="206" x="300" y="755.2404">max_concurrent_renders: int</text><ellipse cx="293" cy="768.1872" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="134" x="300" y="772.255">enable_cache: bool</text><ellipse cx="293" cy="785.2018" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="94" x="300" y="789.2697">cache_ttl: int</text><ellipse cx="293" cy="802.2165" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="182" x="300" y="806.2843">allowed_formats: List[str]</text><ellipse cx="293" cy="819.2311" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="92" x="300" y="823.299">log_level: str</text><line style="stroke:#000000;stroke-width:1.0;" x1="283" x2="511" y1="830.2384" y2="830.2384"/><ellipse cx="293" cy="844.2458" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="71" x="300" y="848.3136">__init__()</text><ellipse cx="293" cy="861.2604" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="137" x="300" y="865.3283">create_directories()</text><ellipse cx="293" cy="878.2751" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="185" x="300" y="882.3429">get_plantuml_command()</text><ellipse cx="293" cy="895.2897" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="100" x="300" y="899.3576">to_dict(): Dict</text><ellipse cx="293" cy="912.3044" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="127" x="300" y="916.3722">_validate_config()</text></g><!--class UMLRenderer--><g id="elem_UMLRenderer"><rect codeLine="34" fill="#FFFFFF" height="316.2344" id="UMLRenderer" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="511" x="281.5" y="183.3373"/><ellipse cx="486.25" cy="197.3373" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M488.7231,203.4804 Q488.1421,203.7792 487.5029,203.9286 Q486.8638,204.078 486.1582,204.078 Q483.6514,204.078 482.3315,202.4262 Q481.0117,200.7743 481.0117,197.6532 Q481.0117,194.5238 482.3315,192.872 Q483.6514,191.2201 486.1582,191.2201 Q486.8638,191.2201 487.5112,191.3695 Q488.1587,191.5189 488.7231,191.8178 L488.7231,194.5404 Q488.0923,193.9594 487.4988,193.6896 Q486.9053,193.4198 486.2744,193.4198 Q484.9297,193.4198 484.2449,194.4865 Q483.5601,195.5531 483.5601,197.6532 Q483.5601,199.745 484.2449,200.8117 Q484.9297,201.8783 486.2744,201.8783 Q486.9053,201.8783 487.4988,201.6085 Q488.0923,201.3388 488.7231,200.7577 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="94" x="503.75" y="202.9052">UMLRenderer</text><line style="stroke:#000000;stroke-width:1.0;" x1="282.5" x2="791.5" y1="211.3373" y2="211.3373"/><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="222.3446"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="98" x="299.5" y="229.4125">config: Config</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="239.3593"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="142" x="299.5" y="246.4271">cache: RenderCache</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="256.3739"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="163" x="299.5" y="263.4418">metrics: RenderMetrics</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="273.3886"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="224" x="299.5" y="280.4564">semaphore: asyncio.Semaphore</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="290.4032"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="169" x="299.5" y="297.4711">active_renders: Set[str]</text><line style="stroke:#000000;stroke-width:1.0;" x1="282.5" x2="791.5" y1="304.4105" y2="304.4105"/><ellipse cx="292.5" cy="318.4179" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="169" x="299.5" y="322.4857">__init__(config: Config)</text><ellipse cx="292.5" cy="335.4325" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="116" x="299.5" y="339.5004">initialize(): None</text><ellipse cx="292.5" cy="352.4472" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="292" x="299.5" y="356.515">render(uml_code: str, format: str): bytes</text><ellipse cx="292.5" cy="369.4618" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="260" x="299.5" y="373.5297">validate_syntax(uml_code: str): bool</text><ellipse cx="292.5" cy="386.4765" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="247" x="299.5" y="390.5443">check_plantuml_availability(): bool</text><ellipse cx="292.5" cy="403.4911" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="196" x="299.5" y="407.559">get_plantuml_version(): str</text><ellipse cx="292.5" cy="420.5058" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="112" x="299.5" y="424.5736">cleanup(): None</text><ellipse cx="292.5" cy="437.5204" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="117" x="299.5" y="441.5883">get_stats(): Dict</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="451.5351"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="364" x="299.5" y="458.6029">_render_internal(uml_code: str, format: str): bytes</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="468.5497"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="487" x="299.5" y="475.6176">_execute_plantuml_command(command: List, uml_code: str): bytes</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="289.5" y="485.5644"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="379" x="299.5" y="492.6322">_generate_cache_key(uml_code: str, format: str): str</text></g><!--class RenderSession--><g id="elem_RenderSession"><rect codeLine="54" fill="#FFFFFF" height="129.0732" id="RenderSession" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="169" x="546.5" y="700.6573"/><ellipse cx="576.6" cy="714.6573" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M579.0731,720.8004 Q578.4921,721.0992 577.8529,721.2486 Q577.2138,721.398 576.5082,721.398 Q574.0014,721.398 572.6815,719.7462 Q571.3617,718.0943 571.3617,714.9732 Q571.3617,711.8438 572.6815,710.192 Q574.0014,708.5401 576.5082,708.5401 Q577.2138,708.5401 577.8612,708.6895 Q578.5087,708.8389 579.0731,709.1378 L579.0731,711.8604 Q578.4423,711.2794 577.8488,711.0096 Q577.2553,710.7398 576.6244,710.7398 Q575.2797,710.7398 574.5949,711.8065 Q573.9101,712.8731 573.9101,714.9732 Q573.9101,717.065 574.5949,718.1317 Q575.2797,719.1983 576.6244,719.1983 Q577.2553,719.1983 577.8488,718.9285 Q578.4423,718.6588 579.0731,718.0777 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="103" x="592.4" y="720.2252">RenderSession</text><line style="stroke:#000000;stroke-width:1.0;" x1="547.5" x2="714.5" y1="728.6573" y2="728.6573"/><ellipse cx="557.5" cy="742.6646" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="116" x="564.5" y="746.7325">start_time: float</text><ellipse cx="557.5" cy="759.6793" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="102" x="564.5" y="763.7471">session_id: str</text><line style="stroke:#000000;stroke-width:1.0;" x1="547.5" x2="714.5" y1="770.6866" y2="770.6866"/><ellipse cx="557.5" cy="784.6939" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="71" x="564.5" y="788.7618">__init__()</text><ellipse cx="557.5" cy="801.7086" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="145" x="564.5" y="805.7764">get_duration(): float</text><ellipse cx="557.5" cy="818.7232" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="97" x="564.5" y="822.7911">__str__(): str</text></g><!--class RenderCache--><g id="elem_RenderCache"><rect codeLine="65" fill="#FFFFFF" height="333.249" id="RenderCache" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="357" x="2251.5" y="598.5673"/><ellipse cx="2380.25" cy="612.5673" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M2382.7231,618.7104 Q2382.1421,619.0092 2381.5029,619.1586 Q2380.8638,619.308 2380.1582,619.308 Q2377.6514,619.308 2376.3315,617.6562 Q2375.0117,616.0043 2375.0117,612.8832 Q2375.0117,609.7538 2376.3315,608.102 Q2377.6514,606.4501 2380.1582,606.4501 Q2380.8638,606.4501 2381.5112,606.5995 Q2382.1587,606.7489 2382.7231,607.0478 L2382.7231,609.7704 Q2382.0923,609.1894 2381.4988,608.9196 Q2380.9053,608.6498 2380.2744,608.6498 Q2378.9297,608.6498 2378.2449,609.7165 Q2377.5601,610.7831 2377.5601,612.8832 Q2377.5601,614.975 2378.2449,616.0417 Q2378.9297,617.1083 2380.2744,617.1083 Q2380.9053,617.1083 2381.4988,616.8385 Q2382.0923,616.5688 2382.7231,615.9877 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="92" x="2397.75" y="618.1352">RenderCache</text><line style="stroke:#000000;stroke-width:1.0;" x1="2252.5" x2="2607.5" y1="626.5673" y2="626.5673"/><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="637.5746"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="98" x="2269.5" y="644.6425">config: Config</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="654.5893"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="262" x="2269.5" y="661.6571">memory_cache: Dict[str, CacheItem]</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="671.6039"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="157" x="2269.5" y="678.6718">access_order: List[str]</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="688.6186"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="109" x="2269.5" y="695.6864">cache_dir: Path</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="705.6332"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="56" x="2269.5" y="712.7011">hits: int</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="722.6479"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="77" x="2269.5" y="729.7157">misses: int</text><line style="stroke:#000000;stroke-width:1.0;" x1="2252.5" x2="2607.5" y1="736.6552" y2="736.6552"/><ellipse cx="2262.5" cy="750.6625" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="169" x="2269.5" y="754.7304">__init__(config: Config)</text><ellipse cx="2262.5" cy="767.6772" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="116" x="2269.5" y="771.745">initialize(): None</text><ellipse cx="2262.5" cy="784.6918" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="209" x="2269.5" y="788.7597">get(key: str): Optional[bytes]</text><ellipse cx="2262.5" cy="801.7065" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="333" x="2269.5" y="805.7743">set(key: str, data: bytes, metadata: Dict): bool</text><ellipse cx="2262.5" cy="818.7211" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="149" x="2269.5" y="822.789">delete(key: str): bool</text><ellipse cx="2262.5" cy="835.7358" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="85" x="2269.5" y="839.8036">clear(): bool</text><ellipse cx="2262.5" cy="852.7504" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="117" x="2269.5" y="856.8183">get_stats(): Dict</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="866.7651"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="329" x="2269.5" y="873.8329">_add_to_memory_cache(key: str, data: bytes)</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="883.7797"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="128" x="2269.5" y="890.8476">_evict_lru(): None</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="900.7944"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="295" x="2269.5" y="907.8622">_save_to_disk(key: str, item: CacheItem)</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2259.5" y="917.809"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="303" x="2269.5" y="924.8769">_load_from_disk(key: str): Optional[bytes]</text></g><!--class CacheItem--><g id="elem_CacheItem"><rect codeLine="86" fill="#FFFFFF" height="214.1465" id="CacheItem" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="291" x="2284.5" y="1008.8173"/><ellipse cx="2388.25" cy="1022.8173" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M2390.7231,1028.9604 Q2390.1421,1029.2592 2389.5029,1029.4086 Q2388.8638,1029.558 2388.1582,1029.558 Q2385.6514,1029.558 2384.3315,1027.9062 Q2383.0117,1026.2543 2383.0117,1023.1332 Q2383.0117,1020.0038 2384.3315,1018.352 Q2385.6514,1016.7001 2388.1582,1016.7001 Q2388.8638,1016.7001 2389.5112,1016.8495 Q2390.1587,1016.9989 2390.7231,1017.2978 L2390.7231,1020.0204 Q2390.0923,1019.4394 2389.4988,1019.1696 Q2388.9053,1018.8998 2388.2744,1018.8998 Q2386.9297,1018.8998 2386.2449,1019.9665 Q2385.5601,1021.0331 2385.5601,1023.1332 Q2385.5601,1025.225 2386.2449,1026.2917 Q2386.9297,1027.3583 2388.2744,1027.3583 Q2388.9053,1027.3583 2389.4988,1027.0885 Q2390.0923,1026.8188 2390.7231,1026.2377 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="76" x="2405.75" y="1028.3852">CacheItem</text><line style="stroke:#000000;stroke-width:1.0;" x1="2285.5" x2="2574.5" y1="1036.8173" y2="1036.8173"/><ellipse cx="2295.5" cy="1050.8246" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="80" x="2302.5" y="1054.8925">data: bytes</text><ellipse cx="2295.5" cy="1067.8393" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="174" x="2302.5" y="1071.9071">metadata: Dict[str, Any]</text><ellipse cx="2295.5" cy="1084.8539" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="117" x="2302.5" y="1088.9218">created_at: float</text><ellipse cx="2295.5" cy="1101.8686" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="126" x="2302.5" y="1105.9364">accessed_at: float</text><ellipse cx="2295.5" cy="1118.8832" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="122" x="2302.5" y="1122.9511">access_count: int</text><line style="stroke:#000000;stroke-width:1.0;" x1="2285.5" x2="2574.5" y1="1129.8905" y2="1129.8905"/><ellipse cx="2295.5" cy="1143.8979" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="267" x="2302.5" y="1147.9657">__init__(data: bytes, metadata: Dict)</text><ellipse cx="2295.5" cy="1160.9125" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105" x="2302.5" y="1164.9804">access(): bytes</text><ellipse cx="2295.5" cy="1177.9272" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="170" x="2302.5" y="1181.995">is_expired(ttl: int): bool</text><ellipse cx="2295.5" cy="1194.9418" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="68" x="2302.5" y="1199.0097">size(): int</text><ellipse cx="2295.5" cy="1211.9565" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="100" x="2302.5" y="1216.0243">to_dict(): Dict</text></g><!--class RenderMetrics--><g id="elem_RenderMetrics"><rect codeLine="102" fill="#FFFFFF" height="248.1758" id="RenderMetrics" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="389" x="2664.5" y="641.1073"/><ellipse cx="2805.25" cy="655.1073" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M2807.7231,661.2504 Q2807.1421,661.5492 2806.5029,661.6986 Q2805.8638,661.848 2805.1582,661.848 Q2802.6514,661.848 2801.3315,660.1962 Q2800.0117,658.5443 2800.0117,655.4232 Q2800.0117,652.2938 2801.3315,650.642 Q2802.6514,648.9901 2805.1582,648.9901 Q2805.8638,648.9901 2806.5112,649.1395 Q2807.1587,649.2889 2807.7231,649.5878 L2807.7231,652.3104 Q2807.0923,651.7294 2806.4988,651.4596 Q2805.9053,651.1898 2805.2744,651.1898 Q2803.9297,651.1898 2803.2449,652.2565 Q2802.5601,653.3231 2802.5601,655.4232 Q2802.5601,657.515 2803.2449,658.5817 Q2803.9297,659.6483 2805.2744,659.6483 Q2805.9053,659.6483 2806.4988,659.3785 Q2807.0923,659.1088 2807.7231,658.5277 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="100" x="2822.75" y="660.6752">RenderMetrics</text><line style="stroke:#000000;stroke-width:1.0;" x1="2665.5" x2="3052.5" y1="669.1073" y2="669.1073"/><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="680.1146"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="116" x="2682.5" y="687.1825">start_time: float</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="697.1293"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="124" x="2682.5" y="704.1971">total_renders: int</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="714.1439"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="112" x="2682.5" y="721.2118">total_errors: int</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="731.1586"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="173" x="2682.5" y="738.2264">render_times: List[float]</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="748.1732"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="198" x="2682.5" y="755.2411">format_stats: Dict[str, Dict]</text><rect fill="none" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="765.1879"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="176" x="2682.5" y="772.2557">error_stats: Dict[str, int]</text><line style="stroke:#000000;stroke-width:1.0;" x1="2665.5" x2="3052.5" y1="779.1952" y2="779.1952"/><ellipse cx="2675.5" cy="793.2025" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="71" x="2682.5" y="797.2704">__init__()</text><ellipse cx="2675.5" cy="810.2172" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="365" x="2682.5" y="814.285">record_render(duration: float, format: str, size: int)</text><ellipse cx="2675.5" cy="827.2318" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="203" x="2682.5" y="831.2997">record_error(error_type: str)</text><ellipse cx="2675.5" cy="844.2465" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="135" x="2682.5" y="848.3143">get_metrics(): Dict</text><ellipse cx="2675.5" cy="861.2611" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="93" x="2682.5" y="865.329">reset(): None</text><rect fill="#FFFFFF" height="6" style="stroke:#000000;stroke-width:1.0;" width="6" x="2672.5" y="875.2758"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="206" x="2682.5" y="882.3436">_calculate_percentiles(): Dict</text></g><!--class PlantUMLEncoder--><g id="elem_PlantUMLEncoder"><rect codeLine="120" fill="#FFFFFF" height="129.0732" id="PlantUMLEncoder" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="479" x="1716.5" y="700.6573"/><ellipse cx="1891.75" cy="714.6573" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M1894.2231,720.8004 Q1893.6421,721.0992 1893.0029,721.2486 Q1892.3638,721.398 1891.6582,721.398 Q1889.1514,721.398 1887.8315,719.7462 Q1886.5117,718.0943 1886.5117,714.9732 Q1886.5117,711.8438 1887.8315,710.192 Q1889.1514,708.5401 1891.6582,708.5401 Q1892.3638,708.5401 1893.0112,708.6895 Q1893.6587,708.8389 1894.2231,709.1378 L1894.2231,711.8604 Q1893.5923,711.2794 1892.9988,711.0096 Q1892.4053,710.7398 1891.7744,710.7398 Q1890.4297,710.7398 1889.7449,711.8065 Q1889.0601,712.8731 1889.0601,714.9732 Q1889.0601,717.065 1889.7449,718.1317 Q1890.4297,719.1983 1891.7744,719.1983 Q1892.4053,719.1983 1892.9988,718.9285 Q1893.5923,718.6588 1894.2231,718.0777 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="121" x="1909.25" y="720.2252">PlantUMLEncoder</text><line style="stroke:#000000;stroke-width:1.0;" x1="1717.5" x2="2194.5" y1="728.6573" y2="728.6573"/><line style="stroke:#000000;stroke-width:1.0;" x1="1717.5" x2="2194.5" y1="736.6573" y2="736.6573"/><ellipse cx="1727.5" cy="750.6646" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="242" x="1734.5" y="754.7325">encode_deflate(uml_text: str): str</text><ellipse cx="1727.5" cy="767.6793" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="219" x="1734.5" y="771.7471">encode_hex(uml_text: str): str</text><ellipse cx="1727.5" cy="784.6939" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="273" x="1734.5" y="788.7618">decode_deflate(encoded_text: str): str</text><ellipse cx="1727.5" cy="801.7086" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="250" x="1734.5" y="805.7764">decode_hex(encoded_text: str): str</text><ellipse cx="1727.5" cy="818.7232" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="455" x="1734.5" y="822.7911">generate_url(encoded_text: str, server_url: str, format: str): str</text></g><!--class Validator--><g id="elem_Validator"><rect codeLine="129" fill="#FFFFFF" height="95.0439" id="Validator" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="463" x="1218.5" y="717.6773"/><ellipse cx="1414.75" cy="731.6773" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M1417.2231,737.8204 Q1416.6421,738.1192 1416.0029,738.2686 Q1415.3638,738.418 1414.6582,738.418 Q1412.1514,738.418 1410.8315,736.7662 Q1409.5117,735.1143 1409.5117,731.9932 Q1409.5117,728.8638 1410.8315,727.212 Q1412.1514,725.5601 1414.6582,725.5601 Q1415.3638,725.5601 1416.0112,725.7095 Q1416.6587,725.8589 1417.2231,726.1578 L1417.2231,728.8804 Q1416.5923,728.2994 1415.9988,728.0296 Q1415.4053,727.7598 1414.7744,727.7598 Q1413.4297,727.7598 1412.7449,728.8265 Q1412.0601,729.8931 1412.0601,731.9932 Q1412.0601,734.085 1412.7449,735.1517 Q1413.4297,736.2183 1414.7744,736.2183 Q1415.4053,736.2183 1415.9988,735.9485 Q1416.5923,735.6788 1417.2231,735.0977 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="63" x="1432.25" y="737.2452">Validator</text><line style="stroke:#000000;stroke-width:1.0;" x1="1219.5" x2="1680.5" y1="745.6773" y2="745.6773"/><line style="stroke:#000000;stroke-width:1.0;" x1="1219.5" x2="1680.5" y1="753.6773" y2="753.6773"/><ellipse cx="1229.5" cy="767.6846" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="439" x="1236.5" y="771.7525">validate_uml_input(uml_code: str, format: str, max_size: int)</text><ellipse cx="1229.5" cy="784.6993" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="392" x="1236.5" y="788.7671">validate_format(format: str, allowed_formats: List[str])</text><ellipse cx="1229.5" cy="801.7139" fill="#FFFFFF" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="296" x="1236.5" y="805.7818">validate_uml_syntax(uml_code: str): bool</text></g><!--class UMLRenderError--><g id="elem_UMLRenderError"><rect codeLine="138" fill="#FFFFFF" height="78.0293" id="UMLRenderError" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="143" x="985.5" y="1076.8773"/><ellipse cx="998.5" cy="1090.8773" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M1000.9731,1097.0204 Q1000.3921,1097.3192 999.7529,1097.4686 Q999.1138,1097.618 998.4082,1097.618 Q995.9014,1097.618 994.5815,1095.9662 Q993.2617,1094.3143 993.2617,1091.1932 Q993.2617,1088.0638 994.5815,1086.412 Q995.9014,1084.7601 998.4082,1084.7601 Q999.1138,1084.7601 999.7612,1084.9095 Q1000.4087,1085.0589 1000.9731,1085.3578 L1000.9731,1088.0804 Q1000.3423,1087.4994 999.7488,1087.2296 Q999.1553,1086.9598 998.5244,1086.9598 Q997.1797,1086.9598 996.4949,1088.0265 Q995.8101,1089.0931 995.8101,1091.1932 Q995.8101,1093.285 996.4949,1094.3517 Q997.1797,1095.4183 998.5244,1095.4183 Q999.1553,1095.4183 999.7488,1095.1485 Q1000.3423,1094.8788 1000.9731,1094.2977 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="115" x="1010.5" y="1096.4452">UMLRenderError</text><line style="stroke:#000000;stroke-width:1.0;" x1="986.5" x2="1127.5" y1="1104.8773" y2="1104.8773"/><ellipse cx="996.5" cy="1118.8846" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="91" x="1003.5" y="1122.9525">message: str</text><ellipse cx="996.5" cy="1135.8993" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105" x="1003.5" y="1139.9671">error_code: str</text><line style="stroke:#000000;stroke-width:1.0;" x1="986.5" x2="1127.5" y1="1146.9066" y2="1146.9066"/></g><!--class ValidationError--><g id="elem_ValidationError"><rect codeLine="143" fill="#FFFFFF" height="78.0293" id="ValidationError" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="133" x="1383.5" y="1076.8773"/><ellipse cx="1396.5" cy="1090.8773" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M1398.9731,1097.0204 Q1398.3921,1097.3192 1397.7529,1097.4686 Q1397.1138,1097.618 1396.4082,1097.618 Q1393.9014,1097.618 1392.5815,1095.9662 Q1391.2617,1094.3143 1391.2617,1091.1932 Q1391.2617,1088.0638 1392.5815,1086.412 Q1393.9014,1084.7601 1396.4082,1084.7601 Q1397.1138,1084.7601 1397.7612,1084.9095 Q1398.4087,1085.0589 1398.9731,1085.3578 L1398.9731,1088.0804 Q1398.3423,1087.4994 1397.7488,1087.2296 Q1397.1553,1086.9598 1396.5244,1086.9598 Q1395.1797,1086.9598 1394.4949,1088.0265 Q1393.8101,1089.0931 1393.8101,1091.1932 Q1393.8101,1093.285 1394.4949,1094.3517 Q1395.1797,1095.4183 1396.5244,1095.4183 Q1397.1553,1095.4183 1397.7488,1095.1485 Q1398.3423,1094.8788 1398.9731,1094.2977 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105" x="1408.5" y="1096.4452">ValidationError</text><line style="stroke:#000000;stroke-width:1.0;" x1="1384.5" x2="1515.5" y1="1104.8773" y2="1104.8773"/><ellipse cx="1394.5" cy="1118.8846" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="91" x="1401.5" y="1122.9525">message: str</text><ellipse cx="1394.5" cy="1135.8993" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="60" x="1401.5" y="1139.9671">field: str</text><line style="stroke:#000000;stroke-width:1.0;" x1="1384.5" x2="1515.5" y1="1146.9066" y2="1146.9066"/></g><!--class PlantUMLNotFoundError--><g id="elem_PlantUMLNotFoundError"><rect codeLine="148" fill="#FFFFFF" height="61.0146" id="PlantUMLNotFoundError" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="195" x="549.5" y="1085.3873"/><ellipse cx="562.5" cy="1099.3873" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M564.9731,1105.5304 Q564.3921,1105.8292 563.7529,1105.9786 Q563.1138,1106.128 562.4082,1106.128 Q559.9014,1106.128 558.5815,1104.4762 Q557.2617,1102.8243 557.2617,1099.7032 Q557.2617,1096.5738 558.5815,1094.922 Q559.9014,1093.2701 562.4082,1093.2701 Q563.1138,1093.2701 563.7612,1093.4195 Q564.4087,1093.5689 564.9731,1093.8678 L564.9731,1096.5904 Q564.3423,1096.0094 563.7488,1095.7396 Q563.1553,1095.4698 562.5244,1095.4698 Q561.1797,1095.4698 560.4949,1096.5365 Q559.8101,1097.6031 559.8101,1099.7032 Q559.8101,1101.795 560.4949,1102.8617 Q561.1797,1103.9283 562.5244,1103.9283 Q563.1553,1103.9283 563.7488,1103.6585 Q564.3423,1103.3888 564.9731,1102.8077 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="167" x="574.5" y="1104.9552">PlantUMLNotFoundError</text><line style="stroke:#000000;stroke-width:1.0;" x1="550.5" x2="743.5" y1="1113.3873" y2="1113.3873"/><ellipse cx="560.5" cy="1127.3946" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="62" x="567.5" y="1131.4625">path: str</text><line style="stroke:#000000;stroke-width:1.0;" x1="550.5" x2="743.5" y1="1138.402" y2="1138.402"/></g><!--class RenderTimeoutError--><g id="elem_RenderTimeoutError"><rect codeLine="152" fill="#FFFFFF" height="61.0146" id="RenderTimeoutError" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="171" x="779.5" y="1085.3873"/><ellipse cx="792.5" cy="1099.3873" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M794.9731,1105.5304 Q794.3921,1105.8292 793.7529,1105.9786 Q793.1138,1106.128 792.4082,1106.128 Q789.9014,1106.128 788.5815,1104.4762 Q787.2617,1102.8243 787.2617,1099.7032 Q787.2617,1096.5738 788.5815,1094.922 Q789.9014,1093.2701 792.4082,1093.2701 Q793.1138,1093.2701 793.7612,1093.4195 Q794.4087,1093.5689 794.9731,1093.8678 L794.9731,1096.5904 Q794.3423,1096.0094 793.7488,1095.7396 Q793.1553,1095.4698 792.5244,1095.4698 Q791.1797,1095.4698 790.4949,1096.5365 Q789.8101,1097.6031 789.8101,1099.7032 Q789.8101,1101.795 790.4949,1102.8617 Q791.1797,1103.9283 792.5244,1103.9283 Q793.1553,1103.9283 793.7488,1103.6585 Q794.3423,1103.3888 794.9731,1102.8077 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="143" x="804.5" y="1104.9552">RenderTimeoutError</text><line style="stroke:#000000;stroke-width:1.0;" x1="780.5" x2="949.5" y1="1113.3873" y2="1113.3873"/><ellipse cx="790.5" cy="1127.3946" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="85" x="797.5" y="1131.4625">timeout: int</text><line style="stroke:#000000;stroke-width:1.0;" x1="780.5" x2="949.5" y1="1138.402" y2="1138.402"/></g><!--class ConcurrencyLimitError--><g id="elem_ConcurrencyLimitError"><rect codeLine="156" fill="#FFFFFF" height="61.0146" id="ConcurrencyLimitError" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1.0;" width="186" x="1163" y="1085.3873"/><ellipse cx="1176" cy="1099.3873" fill="#FFFFFF" rx="9" ry="9" style="stroke:#000000;stroke-width:1.0;"/><path d="M1178.4731,1105.5304 Q1177.8921,1105.8292 1177.2529,1105.9786 Q1176.6138,1106.128 1175.9082,1106.128 Q1173.4014,1106.128 1172.0815,1104.4762 Q1170.7617,1102.8243 1170.7617,1099.7032 Q1170.7617,1096.5738 1172.0815,1094.922 Q1173.4014,1093.2701 1175.9082,1093.2701 Q1176.6138,1093.2701 1177.2612,1093.4195 Q1177.9087,1093.5689 1178.4731,1093.8678 L1178.4731,1096.5904 Q1177.8423,1096.0094 1177.2488,1095.7396 Q1176.6553,1095.4698 1176.0244,1095.4698 Q1174.6797,1095.4698 1173.9949,1096.5365 Q1173.3101,1097.6031 1173.3101,1099.7032 Q1173.3101,1101.795 1173.9949,1102.8617 Q1174.6797,1103.9283 1176.0244,1103.9283 Q1176.6553,1103.9283 1177.2488,1103.6585 Q1177.8423,1103.3888 1178.4731,1102.8077 Z " fill="#000000"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="158" x="1188" y="1104.9552">ConcurrencyLimitError</text><line style="stroke:#000000;stroke-width:1.0;" x1="1164" x2="1348" y1="1113.3873" y2="1113.3873"/><ellipse cx="1174" cy="1127.3946" fill="none" rx="3" ry="3" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="62" x="1181" y="1131.4625">limit: int</text><line style="stroke:#000000;stroke-width:1.0;" x1="1164" x2="1348" y1="1138.402" y2="1138.402"/></g><g id="elem_GMN35"><path d="M144,58.7373 L144,100.3359 L308,100.3359 L308,68.7373 L298,58.7373 L144,58.7373 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><path d="M298,58.7373 L298,68.7373 L308,68.7373 L298,58.7373 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="80" x="150" y="76.8071">MCP协议框架</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="143" x="150" y="92.6064">提供工具注册和调用机制</text></g><g id="elem_GMN38"><path d="M455,58.7373 L455,100.3359 A0,0 0 0 0 455,100.3359 L533,100.3359 L537,183.1273 L541,100.3359 L619,100.3359 A0,0 0 0 0 619,100.3359 L619,68.7373 L609,58.7373 L455,58.7373 A0,0 0 0 0 455,58.7373 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><path d="M609,58.7373 L609,68.7373 L619,68.7373 L609,58.7373 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="78" x="461" y="76.8071">核心渲染引擎</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="143" x="461" y="92.6064">支持异步处理和并发控制</text></g><g id="elem_GMN41"><path d="M2357,320.6573 L2357,362.2559 A0,0 0 0 0 2357,362.2559 L2426,362.2559 L2430,598.2073 L2434,362.2559 L2503,362.2559 A0,0 0 0 0 2503,362.2559 L2503,330.6573 L2493,320.6573 L2357,320.6573 A0,0 0 0 0 2357,320.6573 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><path d="M2493,320.6573 L2493,330.6573 L2503,330.6573 L2493,320.6573 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="78" x="2363" y="338.7271">双层缓存系统</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="125" x="2363" y="354.5264">内存缓存 + 文件缓存</text></g><g id="elem_GMN44"><path d="M2803,320.6573 L2803,362.2559 A0,0 0 0 0 2803,362.2559 L2855,362.2559 L2859,640.8673 L2863,362.2559 L2915,362.2559 A0,0 0 0 0 2915,362.2559 L2915,330.6573 L2905,320.6573 L2803,320.6573 A0,0 0 0 0 2803,320.6573 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><path d="M2905,320.6573 L2905,330.6573 L2915,330.6573 L2905,320.6573 " fill="#FFFFFF" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="78" x="2809" y="338.7271">性能监控系统</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="91" x="2809" y="354.5264">实时统计和分析</text></g><!--link FastMCP to Config--><g id="link_FastMCP_Config"><path codeLine="162" d="M235.7573,391.8867 C235.8511,392.3258 234.419,385.5996 234.5143,386.0434 C235.2766,389.5941 236.0872,393.2953 236.945,397.1211 C243.8075,427.7273 253.69,466.3073 266,499.5673 C279.12,535.0273 287.739,555.8052 304.479,590.5052 " fill="none" id="FastMCP-Config" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="231.0117" x2="238.8362" y1="388.8078" y2="387.1411"/><line style="stroke:#000000;stroke-width:1.0;" x1="231.6367" x2="239.4612" y1="391.742" y2="390.0753"/><line style="stroke:#000000;stroke-width:1.0;" x1="235.7573" x2="234.0906" y1="391.8867" y2="384.0623"/><line style="stroke:#000000;stroke-width:1.0;" x1="308.824" x2="317.704" y1="599.5119" y2="604.1103"/><line style="stroke:#000000;stroke-width:1.0;" x1="308.824" x2="306.896" y1="599.5119" y2="609.3243"/><line style="stroke:#000000;stroke-width:1.0;" x1="308.824" x2="312.3" y1="599.5119" y2="606.7173"/><ellipse cx="306.217" cy="594.1079" fill="none" rx="4" ry="4" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="30" x="284.91" y="543.6371">uses</text></g><!--link UMLRenderer to Config--><g id="link_UMLRenderer_Config"><path codeLine="163" d="M482.2486,507.3896 C470.6286,542.3796 463.3607,564.2948 451.7407,599.2948 " fill="none" id="UMLRenderer-Config" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="479.7132" x2="487.3055" y1="502.3328" y2="504.8541"/><line style="stroke:#000000;stroke-width:1.0;" x1="478.7677" x2="486.36" y1="505.1799" y2="507.7012"/><line style="stroke:#000000;stroke-width:1.0;" x1="482.2486" x2="484.77" y1="507.3896" y2="499.7973"/><line style="stroke:#000000;stroke-width:1.0;" x1="454.2766" x2="446.6841" y1="604.3514" y2="601.8307"/><line style="stroke:#000000;stroke-width:1.0;" x1="455.2219" x2="447.6294" y1="601.5042" y2="598.9835"/><line style="stroke:#000000;stroke-width:1.0;" x1="451.7407" x2="449.22" y1="599.2948" y2="606.8873"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="30" x="472.2" y="543.6371">uses</text></g><!--link UMLRenderer to RenderCache--><g id="link_UMLRenderer_RenderCache"><path codeLine="164" d="M800.6084,375.3079 C1267.6684,433.5879 2204.04,550.7673 2212,554.5673 C2236.04,566.0673 2252.8306,576.2933 2274.3806,593.2333 " fill="none" id="UMLRenderer-RenderCache" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="796.1439" x2="797.1345" y1="378.7818" y2="370.8434"/><line style="stroke:#000000;stroke-width:1.0;" x1="799.1209" x2="800.1114" y1="379.1533" y2="371.2148"/><line style="stroke:#000000;stroke-width:1.0;" x1="800.6084" x2="792.67" y1="375.3079" y2="374.3173"/><line style="stroke:#000000;stroke-width:1.0;" x1="2279.9973" x2="2275.0533" y1="592.5606" y2="598.85"/><line style="stroke:#000000;stroke-width:1.0;" x1="2277.6387" x2="2272.6948" y1="590.7066" y2="596.996"/><line style="stroke:#000000;stroke-width:1.0;" x1="2274.3806" x2="2280.67" y1="593.2333" y2="598.1773"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="30" x="2143.48" y="543.6371">uses</text></g><!--link UMLRenderer to RenderMetrics--><g id="link_UMLRenderer_RenderMetrics"><path codeLine="165" d="M800.7705,364.904 C1339.6705,411.334 2541.29,518.1473 2624,554.5673 C2669.78,574.7373 2706.9682,601.8556 2743.4182,635.3356 " fill="none" id="UMLRenderer-RenderMetrics" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="796.4419" x2="797.1286" y1="368.5459" y2="360.5754"/><line style="stroke:#000000;stroke-width:1.0;" x1="799.4308" x2="800.1175" y1="368.8034" y2="360.8329"/><line style="stroke:#000000;stroke-width:1.0;" x1="800.7705" x2="792.8" y1="364.904" y2="364.2173"/><line style="stroke:#000000;stroke-width:1.0;" x1="2749.07" x2="2743.6582" y1="635.0955" y2="640.9873"/><line style="stroke:#000000;stroke-width:1.0;" x1="2746.8605" x2="2741.4488" y1="633.0661" y2="638.9579"/><line style="stroke:#000000;stroke-width:1.0;" x1="2743.4182" x2="2749.31" y1="635.3356" y2="640.7473"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="30" x="2586.4" y="543.6371">uses</text></g><!--link UMLRenderer to RenderSession--><g id="link_UMLRenderer_RenderSession"><path codeLine="166" d="M573.8098,507.6058 C589.2998,577.1258 600.9933,629.5786 612.8333,682.6886 " fill="none" id="UMLRenderer-RenderSession" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="569.0357" x2="576.8442" y1="504.5715" y2="502.8316"/><line style="stroke:#000000;stroke-width:1.0;" x1="569.6881" x2="577.4966" y1="507.4997" y2="505.7598"/><line style="stroke:#000000;stroke-width:1.0;" x1="573.8098" x2="572.07" y1="507.6058" y2="499.7973"/><line style="stroke:#000000;stroke-width:1.0;" x1="615.0093" x2="622.6062" y1="692.449" y2="698.9518"/><line style="stroke:#000000;stroke-width:1.0;" x1="615.0093" x2="610.8938" y1="692.449" y2="701.5629"/><line style="stroke:#000000;stroke-width:1.0;" x1="615.0093" x2="616.75" y1="692.449" y2="700.2573"/><ellipse cx="613.7037" cy="686.5927" fill="none" rx="4" ry="4" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="49" x="582.18" y="543.6371">creates</text></g><!--link RenderCache to CacheItem--><g id="link_RenderCache_CacheItem"><path codeLine="167" d="M2430,940.1173 C2430,966.1073 2430,966.3373 2430,990.5073 " fill="none" id="RenderCache-CacheItem" style="stroke:#000000;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.0;" x1="2426" x2="2434" y1="936.1173" y2="936.1173"/><line style="stroke:#000000;stroke-width:1.0;" x1="2426" x2="2434" y1="939.1173" y2="939.1173"/><line style="stroke:#000000;stroke-width:1.0;" x1="2430" x2="2430" y1="940.1173" y2="932.1173"/><line style="stroke:#000000;stroke-width:1.0;" x1="2430" x2="2436" y1="1000.5073" y2="1008.5073"/><line style="stroke:#000000;stroke-width:1.0;" x1="2430" x2="2424" y1="1000.5073" y2="1008.5073"/><line style="stroke:#000000;stroke-width:1.0;" x1="2430" x2="2430" y1="1000.5073" y2="1008.5073"/><ellipse cx="2430" cy="994.5073" fill="none" rx="4" ry="4" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="55" x="2431" y="975.8871">contains</text></g><!--link UMLRenderer to PlantUMLEncoder--><g id="link_UMLRenderer_PlantUMLEncoder"><path codeLine="168" d="M792.77,352.5573 C1035.86,370.4473 1406.67,419.6573 1699,554.5673 C1775.07,589.6773 1843.4149,648.3874 1891.9249,696.1574 " fill="none" id="UMLRenderer-to-PlantUMLEncoder" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="1896.2,700.3673,1892.5939,691.2024,1892.6374,696.859,1886.9807,696.9025,1896.2,700.3673" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="30" x="1671.16" y="543.6371">uses</text></g><!--link UMLRenderer to Validator--><g id="link_UMLRenderer_Validator"><path codeLine="169" d="M792.96,394.9073 C909.69,424.8273 1047.15,468.7173 1162,529.5673 C1257.45,580.1473 1347.0131,660.7792 1400.4831,713.3892 " fill="none" id="UMLRenderer-to-Validator" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="1404.76,717.5973,1401.1501,708.4339,1401.1959,714.0905,1395.5393,714.1364,1404.76,717.5973" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="30" x="1189.19" y="543.6371">uses</text></g><!--link UMLRenderer to UMLRenderError--><g id="link_UMLRenderer_UMLRenderError"><path codeLine="170" d="M792.97,429.7773 C851.63,460.8173 908.33,501.6473 948,554.5673 C1010.64,638.1273 1043.4869,957.8802 1053.3369,1070.4202 " fill="none" id="UMLRenderer-to-UMLRenderError" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="1053.86,1076.3973,1057.06,1067.0828,1053.424,1071.4163,1049.0905,1067.7803,1053.86,1076.3973" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="45" x="1041.54" y="770.7671">throws</text></g><!--link Validator to ValidationError--><g id="link_Validator_ValidationError"><path codeLine="171" d="M1450,812.8573 C1450,882.4573 1450,1006.1273 1450,1070.5373 " fill="none" id="Validator-to-ValidationError" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="1450,1076.5373,1454,1067.5373,1450,1071.5373,1446,1067.5373,1450,1076.5373" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="45" x="1451" y="975.8871">throws</text></g><!--link UMLRenderer to PlantUMLNotFoundError--><g id="link_UMLRenderer_PlantUMLNotFoundError"><path codeLine="172" d="M703.89,499.8073 C715.51,517.1973 725.56,535.5473 733,554.5673 C796.6,717.1273 773.99,777.6473 733,947.3173 C720.48,999.1273 692.3362,1047.8838 671.1462,1080.1138 " fill="none" id="UMLRenderer-to-PlantUMLNotFoundError" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="667.85,1085.1273,676.1366,1079.8045,670.5968,1080.9494,669.4519,1075.4096,667.85,1085.1273" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="45" x="773.67" y="770.7671">throws</text></g><!--link UMLRenderer to RenderTimeoutError--><g id="link_UMLRenderer_RenderTimeoutError"><path codeLine="173" d="M788.62,499.8473 C803.77,516.7473 817.22,534.9973 828,554.5673 C927,734.3273 889.3454,991.4257 872.4254,1079.2257 " fill="none" id="UMLRenderer-to-RenderTimeoutError" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="871.29,1085.1173,876.9208,1077.0368,872.2361,1080.2076,869.0653,1075.523,871.29,1085.1173" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="45" x="894.13" y="770.7671">throws</text></g><!--link UMLRenderer to ConcurrencyLimitError--><g id="link_UMLRenderer_ConcurrencyLimitError"><path codeLine="174" d="M792.89,380.6273 C902.22,410.0873 1021.56,462.2573 1096,554.5673 C1206.8,691.9773 1095.18,781.2473 1155,947.3173 C1173.71,999.2473 1205.8166,1047.9254 1229.3666,1080.1054 " fill="none" id="UMLRenderer-to-ConcurrencyLimitError" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="#000000" points="1232.91,1084.9473,1230.8228,1075.3221,1229.9572,1080.9124,1224.3669,1080.0467,1232.91,1084.9473" style="stroke:#000000;stroke-width:1.0;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="45" x="1156" y="770.7671">throws</text></g><!--link GMN35 to FastMCP--><g id="link_GMN35_FastMCP"><path d="M226,100.4973 C226,130.4573 226,189.0548 226,240.8423 " fill="none" id="GMN35-FastMCP" style="stroke:#000000;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/></g><!--SRC=[fLZTRXKt4Bu_J-5oGKz43WzmBYfLAKYL24KDxGsALcPtJew9TtraUqCEf58B9QLL8BJG7nK4HIg26z9If00DfI_3Rl8O7Q_tnpv_GUfDaXtFV1xFV3DZvptTXnZ8W5EMj3JJ7CXdYwV8ui8Pah_yAtzmExzt8_lk8UcG_BUNsRzNzv_jPNVVj5e36gxI5I17JbAbKVi8kTmY9EHKALAA2WaXnn8QGvSeBUsd5eAhBZd5b3vt5lzURiJjNfg4S_PRfabRIvgeWP2wC3SBNxI-SFPU41B8WeW78e54AzU71P7qs4hbWWAv1ZBe2wKTJqgftO0bsaen58bEOnvSeBX6TT-nk43NQ03h4AQQdkVkgIGa4M9f5eD8NRYOhWS6JR5BC28EHHAc4YrrOCsLem29sI48QTX7k_CO7Iil187MtD6bd8kB40Kz8MEgg-2YRsLikLW9EAm1RnpkTEnI4B24wI1ebs4F9L0DGSGaX5f81gfQMG4TrB49HHpJ9AhMj42BKBVdkkGZ_5r2hr7E8eCM5ibesmJMAKAUVLeS6sIPfuvLx9RPAsKs0bPrmNnOUGnQib1LAulsqwufYEcWZ-pe4gg6ISZ4yQLAP3LegDaQD75V0YTWOy7n_IeFRTOO7l4Ic7EVHWwwL6ZRC4MM9FF4viOI6VCvr61zFLP72HtLTDstc_DItuTmjSa1Sf5nUfvnfeTjJz5B5L9SCP4OZPgj8GUQf0FVRsEbDFB7IsEdZ166GeDCA7_NWtNAGe5nrfI_BK_doTY97OmLI40M72fulmh3sVlR8peii-nO0cM2KFS3JQKkYhLBUbnGNJM4GYjWqU65Og8LfUXQ6Li79i0mIgFPkEDrBNCIiZHK6cAtPJaCdrKFCSH23gl6OF9qheX3OVWnOYvN30_nE86G23hQ4MnHcIhlaZFOugompxJJWJenKnWGH_2_gWBZrSRiLNdwP602H_cv8jdBLVmRdNc2HK5BCimJh7Pg1UR47jiZuA311NTA1eaknujZ4irf50NOnzpmJdPchgBt6Xe7NARUGJk1ejXOYeweLXq4XgdfDbcgK90ssBYbY7tzYI5oQ5tZL9Hs72mdZ1Snov4Fa-6os-UZm5IEGrrBccboBBiqqJCOCIjbBb3RRu5COQyOuCY9sjLWyrAcIZRL0szytlWbLWu3SfGi2lGCvrYoCbvgbLPPR9ERGaSBJVduW2xb8ANmnCv5e1h41LXPUBPRMGAwcJ5_bIe5vBW6xh0yioFXnCPYBprjLxsfF8lN9-T9VHlnROkjszO1FHn0VUygwwQSkVwSbs3grg-1aF8mvQPl3q26UCDX7DJKT7rkHw1fq4V9YGIR-qY-pfW9WlU5OgsvBdIggvAH1X7qp8x5VD2mFZ8I6hq-h4_NYS33iYRHJ5s3DrEldc6fvEEQc0nx3yNLTnjfPRZ4Q1pgcuGv7Ki6gPunAx4-yGewoeCQmcgsFOFfryov2GxClixu13Yn7aBHxRmxV7r1F648MJKwh2k5HcvU2xxMcqmC5c8VWj9ZmAC901NtJWjz4jjVvC6uxuEnIyTP-nZm34OU26v7hru3uV0KYvblnesaCKApzqbsxVd-yxrivzUthxvjLM-kZOrEHrokdZzTak88RxatRQEmiN6uWdiREKohQgHJzD0V_nRM9NRyg9QxI-LwFTbGJI27ME937Z_-mLX3cB2pKMigPOh22CMwHFUbkAXQZQ43KtEeLflcbi-LgUeJQ39LTp8zQlLM8ZGGBGP4zAe7E585VsOtjWzsTlA7c_dzNPJasxVUlhcRlNYKNNkHFt-IRMvbFsmT_7br_ywJ_DxVsVNT5kvA39gFwVXZK8f_1jZ_46IlVynltpJ2Et_aMrzbhw_aJnzblt-zVsiJeRDNkzdsz_dDnzEX_QTTjhsLFRko__fszlGNvFV-tWCZtBncFWiXEKRodxvvkxThFsU2Dg_2_Cl71rV_sRzhN6bWT-xdF-_YtmSx3uslrp58jnh0_m00]--></g></svg>