Files
graphify/docs/demo-path.svg
T
safishamsiandClaude Opus 4.8 bbc3be2238 docs(readme): add animated "path lights up" demo to See it in action
An animated SVG that mirrors the real `graphify path` output: a terminal
types the query on the left while the answer draws itself hop by hop across
the knowledge graph on the right, ending on "3 hops. Zero files opened."

Pure SMIL inside a self-contained dark card, so it renders inline on both
GitHub themes with no JS and no external fonts. Palette is brand-only:
muted emerald (sampled from the logo) as the single accent, no neon.
Generated by scripts/gen_demo_path.py (re-run to regenerate; STATIC=1 bakes
a still frame for QA).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 13:25:35 +01:00

1 line
20 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 360" width="900" height="360" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" role="img" aria-label="graphify path query lighting up a knowledge graph"><defs><linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#0c1712"/><stop offset="1" stop-color="#0f1e18"/></linearGradient><radialGradient id="glow" cx="0.5" cy="0.5" r="0.5"><stop offset="0" stop-color="#62c4a2" stop-opacity="0.35"/><stop offset="1" stop-color="#62c4a2" stop-opacity="0"/></radialGradient></defs><rect x="1" y="1" width="898" height="358" rx="14" fill="url(#bg)" stroke="#20342b" stroke-width="1.5"/><line x1="336" y1="18" x2="336" y2="342" stroke="#1c2c25" stroke-width="1"/><circle cx="28" cy="30" r="4.5" fill="#ff5f56"/><circle cx="46" cy="30" r="4.5" fill="#ffbd2e"/><circle cx="64" cy="30" r="4.5" fill="#27c93f"/><text x="320" y="34" text-anchor="end" font-size="10" fill="#6f8a7f">graphify</text><text x="20" y="74" font-size="11" fill="#4db18f" font-weight="600">$</text><text x="33.2" y="74" font-size="11" fill="#c6d6ce" opacity="0">g<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.035;0.047;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="39.9" y="74" font-size="11" fill="#c6d6ce" opacity="0">r<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0408;0.0528;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="46.5" y="74" font-size="11" fill="#c6d6ce" opacity="0">a<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0466;0.0586;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="53.1" y="74" font-size="11" fill="#c6d6ce" opacity="0">p<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0524;0.0644;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="59.7" y="74" font-size="11" fill="#c6d6ce" opacity="0">h<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0582;0.0702;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="66.3" y="74" font-size="11" fill="#c6d6ce" opacity="0">i<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.064;0.076;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="73.0" y="74" font-size="11" fill="#c6d6ce" opacity="0">f<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0698;0.0818;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="79.6" y="74" font-size="11" fill="#c6d6ce" opacity="0">y<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0756;0.0876;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="92.8" y="74" font-size="11" fill="#c6d6ce" opacity="0">p<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0872;0.0992;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="99.4" y="74" font-size="11" fill="#c6d6ce" opacity="0">a<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.093;0.105;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="106.1" y="74" font-size="11" fill="#c6d6ce" opacity="0">t<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.0988;0.1108;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="112.7" y="74" font-size="11" fill="#c6d6ce" opacity="0">h<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1046;0.1166;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="125.9" y="74" font-size="11" fill="#c6d6ce" opacity="0">"<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1162;0.1282;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="132.5" y="74" font-size="11" fill="#c6d6ce" opacity="0">F<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.122;0.134;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="139.2" y="74" font-size="11" fill="#c6d6ce" opacity="0">a<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1278;0.1398;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="145.8" y="74" font-size="11" fill="#c6d6ce" opacity="0">s<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1336;0.1456;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="152.4" y="74" font-size="11" fill="#c6d6ce" opacity="0">t<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1394;0.1514;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="159.0" y="74" font-size="11" fill="#c6d6ce" opacity="0">A<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1452;0.1572;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="165.6" y="74" font-size="11" fill="#c6d6ce" opacity="0">P<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.151;0.163;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="172.3" y="74" font-size="11" fill="#c6d6ce" opacity="0">I<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1568;0.1688;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="178.9" y="74" font-size="11" fill="#c6d6ce" opacity="0">"<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1626;0.1746;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="192.1" y="74" font-size="11" fill="#c6d6ce" opacity="0">"<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1742;0.1862;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="198.7" y="74" font-size="11" fill="#c6d6ce" opacity="0">M<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.18;0.192;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="205.4" y="74" font-size="11" fill="#c6d6ce" opacity="0">o<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1858;0.1978;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="212.0" y="74" font-size="11" fill="#c6d6ce" opacity="0">d<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1916;0.2036;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="218.6" y="74" font-size="11" fill="#c6d6ce" opacity="0">e<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.1974;0.2094;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="225.2" y="74" font-size="11" fill="#c6d6ce" opacity="0">l<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.2032;0.2152;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="231.8" y="74" font-size="11" fill="#c6d6ce" opacity="0">F<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.209;0.221;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="238.5" y="74" font-size="11" fill="#c6d6ce" opacity="0">i<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.2148;0.2268;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="245.1" y="74" font-size="11" fill="#c6d6ce" opacity="0">e<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.2206;0.2326;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="251.7" y="74" font-size="11" fill="#c6d6ce" opacity="0">l<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.2264;0.2384;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="258.3" y="74" font-size="11" fill="#c6d6ce" opacity="0">d<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.2322;0.2442;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="264.9" y="74" font-size="11" fill="#c6d6ce" opacity="0">"<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.238;0.25;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><rect y="65" width="7" height="12" fill="#4db18f" opacity="0.9"><animate attributeName="x" values="33.2;33.2;39.9;46.5;53.1;59.7;66.3;73.0;79.6;86.2;92.8;99.4;106.1;112.7;119.3;125.9;132.5;139.2;145.8;152.4;159.0;165.6;172.3;178.9;185.5;192.1;198.7;205.4;212.0;218.6;225.2;231.8;238.5;245.1;251.7;258.3;264.9;271.6;271.6" keyTimes="0;0.0350;0.0408;0.0466;0.0524;0.0582;0.0640;0.0698;0.0756;0.0814;0.0872;0.0930;0.0988;0.1046;0.1104;0.1162;0.1220;0.1278;0.1336;0.1394;0.1452;0.1510;0.1568;0.1626;0.1684;0.1742;0.1800;0.1858;0.1916;0.1974;0.2032;0.2090;0.2148;0.2206;0.2264;0.2322;0.2380;0.2438;1" calcMode="discrete" dur="10.0s" repeatCount="indefinite"/><animate attributeName="opacity" values="0.9;0.9;0.15;0.9;0.15;0.9;0" keyTimes="0;0.244;0.289;0.334;0.379;0.96;1" dur="10.0s" repeatCount="indefinite"/></rect><text x="20" y="104" font-size="11" fill="#6f8a7f" opacity="0" style="white-space:pre">Shortest path (3 hops):<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.295;0.307;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="20" y="126" font-size="11" fill="#62c4a2" opacity="0" style="white-space:pre">FastAPI<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.325;0.337;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="20" y="148" font-size="11" fill="#c6d6ce" opacity="0" style="white-space:pre"> --uses--&gt; DefaultPlaceholder<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.395;0.407;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="20" y="170" font-size="11" fill="#c6d6ce" opacity="0" style="white-space:pre"> &lt;--references-- get_request_handler()<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.465;0.477;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="20" y="192" font-size="11" fill="#c6d6ce" opacity="0" style="white-space:pre"> --references--&gt; ModelField<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.535;0.547;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><text x="20" y="330" font-size="12" fill="#62c4a2" font-weight="600" opacity="0">3 hops. Zero files opened.<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.595;0.607;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><g><line x1="557.5" y1="197.8" x2="476.6" y2="183.6" stroke="#22302a" stroke-width="1"/><line x1="481.3" y1="118.0" x2="531.0" y2="118.0" stroke="#22302a" stroke-width="1"/><line x1="870.8" y1="184.9" x2="866.7" y2="224.6" stroke="#22302a" stroke-width="1"/><line x1="412.9" y1="59.4" x2="379.4" y2="90.4" stroke="#22302a" stroke-width="1"/><line x1="417.1" y1="114.5" x2="398.1" y2="146.0" stroke="#22302a" stroke-width="1"/><line x1="476.6" y1="183.6" x2="448.7" y2="145.4" stroke="#22302a" stroke-width="1"/><line x1="412.9" y1="59.4" x2="417.1" y2="114.5" stroke="#22302a" stroke-width="1"/><line x1="850.3" y1="132.3" x2="828.8" y2="169.5" stroke="#22302a" stroke-width="1"/><line x1="866.7" y1="224.6" x2="828.8" y2="169.5" stroke="#22302a" stroke-width="1"/><line x1="794.8" y1="213.5" x2="828.8" y2="169.5" stroke="#22302a" stroke-width="1"/><line x1="775.6" y1="32.0" x2="817.4" y2="56.4" stroke="#22302a" stroke-width="1"/><line x1="773.7" y1="242.2" x2="738.7" y2="235.7" stroke="#22302a" stroke-width="1"/><line x1="773.7" y1="242.2" x2="794.8" y2="213.5" stroke="#22302a" stroke-width="1"/><line x1="481.9" y1="39.8" x2="481.3" y2="118.0" stroke="#22302a" stroke-width="1"/><line x1="817.4" y1="56.4" x2="806.0" y2="120.0" stroke="#22302a" stroke-width="1"/><line x1="448.7" y1="145.4" x2="481.3" y2="118.0" stroke="#22302a" stroke-width="1"/><line x1="766.8" y1="158.3" x2="806.0" y2="120.0" stroke="#22302a" stroke-width="1"/><line x1="870.8" y1="184.9" x2="828.8" y2="169.5" stroke="#22302a" stroke-width="1"/><line x1="379.4" y1="90.4" x2="412.9" y2="59.4" stroke="#22302a" stroke-width="1"/><line x1="417.1" y1="114.5" x2="448.7" y2="145.4" stroke="#22302a" stroke-width="1"/><line x1="637.3" y1="325.8" x2="738.7" y2="235.7" stroke="#22302a" stroke-width="1"/><line x1="557.5" y1="197.8" x2="531.0" y2="118.0" stroke="#22302a" stroke-width="1"/><line x1="579.5" y1="39.1" x2="531.0" y2="118.0" stroke="#22302a" stroke-width="1"/><line x1="452.6" y1="251.7" x2="406.0" y2="205.0" stroke="#22302a" stroke-width="1"/><line x1="866.7" y1="224.6" x2="870.8" y2="184.9" stroke="#22302a" stroke-width="1"/><line x1="481.3" y1="118.0" x2="448.7" y2="145.4" stroke="#22302a" stroke-width="1"/><line x1="766.8" y1="158.3" x2="794.8" y2="213.5" stroke="#22302a" stroke-width="1"/><line x1="689.5" y1="37.6" x2="650.1" y2="109.9" stroke="#22302a" stroke-width="1"/><line x1="850.3" y1="132.3" x2="806.0" y2="120.0" stroke="#22302a" stroke-width="1"/><line x1="637.3" y1="325.8" x2="671.0" y2="210.0" stroke="#22302a" stroke-width="1"/><line x1="501.1" y1="314.7" x2="557.5" y2="197.8" stroke="#22302a" stroke-width="1"/><line x1="398.1" y1="146.0" x2="448.7" y2="145.4" stroke="#22302a" stroke-width="1"/><line x1="481.9" y1="39.8" x2="412.9" y2="59.4" stroke="#22302a" stroke-width="1"/><line x1="650.1" y1="109.9" x2="689.5" y2="37.6" stroke="#22302a" stroke-width="1"/><line x1="828.8" y1="169.5" x2="850.3" y2="132.3" stroke="#22302a" stroke-width="1"/><line x1="687.7" y1="140.9" x2="650.1" y2="109.9" stroke="#22302a" stroke-width="1"/><line x1="687.7" y1="140.9" x2="671.0" y2="210.0" stroke="#22302a" stroke-width="1"/><line x1="828.8" y1="169.5" x2="870.8" y2="184.9" stroke="#22302a" stroke-width="1"/><line x1="452.6" y1="251.7" x2="476.6" y2="183.6" stroke="#22302a" stroke-width="1"/><line x1="650.1" y1="109.9" x2="687.7" y2="140.9" stroke="#22302a" stroke-width="1"/><line x1="476.6" y1="183.6" x2="481.3" y2="118.0" stroke="#22302a" stroke-width="1"/><line x1="379.4" y1="90.4" x2="417.1" y2="114.5" stroke="#22302a" stroke-width="1"/><line x1="579.5" y1="39.1" x2="481.9" y2="39.8" stroke="#22302a" stroke-width="1"/><line x1="794.8" y1="213.5" x2="773.7" y2="242.2" stroke="#22302a" stroke-width="1"/><line x1="689.5" y1="37.6" x2="775.6" y2="32.0" stroke="#22302a" stroke-width="1"/><line x1="738.7" y1="235.7" x2="773.7" y2="242.2" stroke="#22302a" stroke-width="1"/><line x1="817.4" y1="56.4" x2="775.6" y2="32.0" stroke="#22302a" stroke-width="1"/><line x1="398.1" y1="146.0" x2="417.1" y2="114.5" stroke="#22302a" stroke-width="1"/><line x1="738.7" y1="235.7" x2="794.8" y2="213.5" stroke="#22302a" stroke-width="1"/><line x1="775.6" y1="32.0" x2="689.5" y2="37.6" stroke="#22302a" stroke-width="1"/><line x1="501.1" y1="314.7" x2="452.6" y2="251.7" stroke="#22302a" stroke-width="1"/><line x1="448.7" y1="145.4" x2="417.1" y2="114.5" stroke="#22302a" stroke-width="1"/><circle cx="689.5" cy="37.6" r="3.6" fill="#2c3a34"/><circle cx="738.7" cy="235.7" r="3.6" fill="#2c3a34"/><circle cx="817.4" cy="56.4" r="3.6" fill="#2c3a34"/><circle cx="579.5" cy="39.1" r="3.6" fill="#2c3a34"/><circle cx="476.6" cy="183.6" r="3.6" fill="#2c3a34"/><circle cx="379.4" cy="90.4" r="3.6" fill="#2c3a34"/><circle cx="775.6" cy="32.0" r="3.6" fill="#2c3a34"/><circle cx="773.7" cy="242.2" r="3.6" fill="#2c3a34"/><circle cx="850.3" cy="132.3" r="3.6" fill="#2c3a34"/><circle cx="412.9" cy="59.4" r="3.6" fill="#2c3a34"/><circle cx="794.8" cy="213.5" r="3.6" fill="#2c3a34"/><circle cx="637.3" cy="325.8" r="3.6" fill="#2c3a34"/><circle cx="557.5" cy="197.8" r="3.6" fill="#2c3a34"/><circle cx="481.3" cy="118.0" r="3.6" fill="#2c3a34"/><circle cx="417.1" cy="114.5" r="3.6" fill="#2c3a34"/><circle cx="687.7" cy="140.9" r="3.6" fill="#2c3a34"/><circle cx="501.1" cy="314.7" r="3.6" fill="#2c3a34"/><circle cx="452.6" cy="251.7" r="3.6" fill="#2c3a34"/><circle cx="448.7" cy="145.4" r="3.6" fill="#2c3a34"/><circle cx="866.7" cy="224.6" r="3.6" fill="#2c3a34"/><circle cx="481.9" cy="39.8" r="3.6" fill="#2c3a34"/><circle cx="828.8" cy="169.5" r="3.6" fill="#2c3a34"/><circle cx="650.1" cy="109.9" r="3.6" fill="#2c3a34"/><circle cx="870.8" cy="184.9" r="3.6" fill="#2c3a34"/><circle cx="766.8" cy="158.3" r="3.6" fill="#2c3a34"/><circle cx="398.1" cy="146.0" r="3.6" fill="#2c3a34"/></g><line x1="406" y1="205" x2="531" y2="118" stroke="#22302a" stroke-width="1.2"/><line x1="531" y1="118" x2="671" y2="210" stroke="#22302a" stroke-width="1.2"/><line x1="671" y1="210" x2="806" y2="120" stroke="#22302a" stroke-width="1.2"/><line x1="406" y1="205" x2="531" y2="118" stroke="#4db18f" stroke-width="2" stroke-linecap="round" stroke-dasharray="152.3" stroke-dashoffset="152.3"><animate attributeName="stroke-dashoffset" values="152.3;152.3;0;0;152.3" keyTimes="0;0.33;0.385;0.96;1" dur="10.0s" repeatCount="indefinite"/></line><text x="468.5" y="155.5" font-size="9" fill="#62c4a2" text-anchor="middle" opacity="0" font-style="italic">uses<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.355;0.367;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><line x1="531" y1="118" x2="671" y2="210" stroke="#4db18f" stroke-width="2" stroke-linecap="round" stroke-dasharray="167.5" stroke-dashoffset="167.5"><animate attributeName="stroke-dashoffset" values="167.5;167.5;0;0;167.5" keyTimes="0;0.4;0.455;0.96;1" dur="10.0s" repeatCount="indefinite"/></line><text x="601.0" y="158.0" font-size="9" fill="#62c4a2" text-anchor="middle" opacity="0" font-style="italic">references<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.425;0.437;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><line x1="671" y1="210" x2="806" y2="120" stroke="#4db18f" stroke-width="2" stroke-linecap="round" stroke-dasharray="162.2" stroke-dashoffset="162.2"><animate attributeName="stroke-dashoffset" values="162.2;162.2;0;0;162.2" keyTimes="0;0.47;0.525;0.96;1" dur="10.0s" repeatCount="indefinite"/></line><text x="738.5" y="159.0" font-size="9" fill="#62c4a2" text-anchor="middle" opacity="0" font-style="italic">references<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.495;0.507;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><circle cx="406" cy="205" r="20" fill="url(#glow)" opacity="0"><animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.325;0.34;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><circle cx="406" cy="205" fill="#2c3a34" r="4"><animate attributeName="fill" values="#2c3a34;#2c3a34;#62c4a2;#4db18f;#4db18f;#2c3a34" keyTimes="0;0.325;0.331;0.345;0.96;1" dur="10.0s" repeatCount="indefinite"/><animate attributeName="r" values="4;4;8;5.6;5.6;4" keyTimes="0;0.325;0.33;0.343;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><text x="406" y="227" font-size="10.5" fill="#c6d6ce" text-anchor="middle" opacity="0" font-weight="600">FastAPI<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.335;0.347;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><circle cx="531" cy="118" r="20" fill="url(#glow)" opacity="0"><animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.395;0.41;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><circle cx="531" cy="118" fill="#2c3a34" r="4"><animate attributeName="fill" values="#2c3a34;#2c3a34;#62c4a2;#4db18f;#4db18f;#2c3a34" keyTimes="0;0.395;0.401;0.415;0.96;1" dur="10.0s" repeatCount="indefinite"/><animate attributeName="r" values="4;4;8;5.6;5.6;4" keyTimes="0;0.395;0.4;0.413;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><text x="531" y="104" font-size="10.5" fill="#c6d6ce" text-anchor="middle" opacity="0" font-weight="600">DefaultPlaceholder<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.405;0.417;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><circle cx="671" cy="210" r="20" fill="url(#glow)" opacity="0"><animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.465;0.48;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><circle cx="671" cy="210" fill="#2c3a34" r="4"><animate attributeName="fill" values="#2c3a34;#2c3a34;#62c4a2;#4db18f;#4db18f;#2c3a34" keyTimes="0;0.465;0.471;0.485;0.96;1" dur="10.0s" repeatCount="indefinite"/><animate attributeName="r" values="4;4;8;5.6;5.6;4" keyTimes="0;0.465;0.47;0.483;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><text x="671" y="232" font-size="10.5" fill="#c6d6ce" text-anchor="middle" opacity="0" font-weight="600">get_request_handler()<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.475;0.487;0.96;1" dur="10.0s" repeatCount="indefinite"/></text><circle cx="806" cy="120" r="20" fill="url(#glow)" opacity="0"><animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.535;0.55;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><circle cx="806" cy="120" fill="#2c3a34" r="4"><animate attributeName="fill" values="#2c3a34;#2c3a34;#62c4a2;#4db18f;#4db18f;#2c3a34" keyTimes="0;0.535;0.541;0.555;0.96;1" dur="10.0s" repeatCount="indefinite"/><animate attributeName="r" values="4;4;8;5.6;5.6;4" keyTimes="0;0.535;0.54;0.553;0.96;1" dur="10.0s" repeatCount="indefinite"/></circle><text x="806" y="106" font-size="10.5" fill="#c6d6ce" text-anchor="middle" opacity="0" font-weight="600">ModelField<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;0.545;0.557;0.96;1" dur="10.0s" repeatCount="indefinite"/></text></svg>