{"id":1112,"date":"2026-03-14T08:01:39","date_gmt":"2026-03-14T08:01:39","guid":{"rendered":"https:\/\/cortexorigin.com\/?page_id=1112"},"modified":"2026-03-25T10:06:21","modified_gmt":"2026-03-25T10:06:21","slug":"simulation","status":"publish","type":"page","link":"https:\/\/cortexorigin.com\/index.php\/simulation\/","title":{"rendered":"Sch\u00e9ma &amp; Simulations"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Menu Cortex ORIGIN\u2122<\/title>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');\n \nbody { margin: 0; padding: 0; background: #F4F0EB; font-family: 'DM Sans', sans-serif; }<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Menu Cortex ORIGIN\u2122<\/title>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');\n \nbody { margin: 0; padding: 0; background: #F4F0EB; font-family: 'DM Sans', sans-serif; }\n \n.menu-bar {\n  width: 100%;\n  background: #0C1829;\n  padding: 0 2rem;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  position: relative;\n  z-index: 100;\n  box-sizing: border-box;\n}\n.menu-logo {\n  font-family: 'DM Sans', sans-serif; font-weight: 700; font-size: 0.95rem;\n  color: #fff; padding: 1rem 0; letter-spacing: 0.03em; white-space: nowrap;\n}\n.menu-logo span { color: #C9A96E; }\n.menu-items { display: flex; align-items: center; gap: 0; }\n \n\/* \u2500\u2500 AETZU ARROW AI BUTTON \u2500\u2500 *\/\n.menu-aetzu {\n  display: flex; align-items: center;\n  padding: 0.45rem 1rem;\n  margin-right: 0.5rem;\n  background: rgba(201,169,110,0.12);\n  border: 1px solid rgba(201,169,110,0.35);\n  border-radius: 3px;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.65rem; font-weight: 500;\n  letter-spacing: 0.08em; text-transform: uppercase;\n  color: #C9A96E;\n  text-decoration: none;\n  transition: all 0.25s;\n  white-space: nowrap;\n  gap: 0.5rem;\n}\n.menu-aetzu::before {\n  content: '\u2b21';\n  font-size: 0.75rem;\n  opacity: 0.7;\n}\n.menu-aetzu:hover {\n  background: rgba(201,169,110,0.25);\n  border-color: rgba(201,169,110,0.6);\n  color: #fff;\n}\n \n\/* \u2500\u2500 BENCHMARK BUTTON \u2500\u2500 *\/\n.menu-benchmark {\n  display: flex; align-items: center;\n  padding: 0.45rem 1rem;\n  margin-right: 0.5rem;\n  background: rgba(74,144,217,0.10);\n  border: 1px solid rgba(74,144,217,0.30);\n  border-radius: 3px;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.65rem; font-weight: 500;\n  letter-spacing: 0.08em; text-transform: uppercase;\n  color: rgba(184,212,240,0.85);\n  text-decoration: none;\n  transition: all 0.25s;\n  white-space: nowrap;\n  gap: 0.5rem;\n}\n.menu-benchmark::before {\n  content: '\u25c8';\n  font-size: 0.7rem;\n  opacity: 0.65;\n}\n.menu-benchmark:hover {\n  background: rgba(74,144,217,0.22);\n  border-color: rgba(74,144,217,0.55);\n  color: #fff;\n}\n \n.menu-item {\n  position: relative; padding: 1rem 1rem;\n  font-size: 0.78rem; font-weight: 500; color: rgba(184,212,240,0.75);\n  cursor: pointer; letter-spacing: 0.02em; transition: color 0.2s;\n  white-space: nowrap;\n}\n.menu-item:hover { color: #fff; }\n.menu-item::after {\n  content: '\u25be'; margin-left: 0.3rem; font-size: 0.6rem; opacity: 0.5;\n}\n.menu-item.no-drop::after { content: ''; }\n.menu-cta {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem; font-weight: 500;\n  letter-spacing: 0.08em; text-transform: uppercase;\n  padding: 0.5rem 1.2rem; border-radius: 2px;\n  background: rgba(201,169,110,0.15); color: #C9A96E; border: 1px solid rgba(201,169,110,0.3);\n  cursor: pointer; transition: all 0.3s; white-space: nowrap;\n}\n.menu-cta:hover { background: rgba(201,169,110,0.25); color: #fff; }\n \n.menu-dropdown {\n  display: none; position: absolute; top: 100%; left: 0;\n  background: #0C1829; border: 1px solid rgba(74,144,217,0.15);\n  border-top: 2px solid #C9A96E; border-radius: 0 0 4px 4px;\n  min-width: 320px; padding: 0.8rem 0; z-index: 200;\n  box-shadow: 0 12px 40px rgba(0,0,0,0.4);\n}\n.menu-item:hover .menu-dropdown { display: block; }\n.menu-dropdown a {\n  display: block; padding: 0.5rem 1.5rem; font-size: 0.8rem; color: rgba(184,212,240,0.6);\n  text-decoration: none; transition: all 0.2s; line-height: 1.5;\n}\n.menu-dropdown a:hover { color: #fff; background: rgba(74,144,217,0.08); }\n.menu-dropdown .drop-label {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.58rem; font-weight: 600;\n  letter-spacing: 0.15em; color: #C9A96E; text-transform: uppercase;\n  padding: 0.6rem 1.5rem 0.3rem; display: block;\n}\n.menu-dropdown .drop-sep {\n  border: none; border-top: 1px solid rgba(74,144,217,0.08);\n  margin: 0.5rem 1.5rem;\n}\n \n.menu-dropdown a.drop-highlight {\n  display: flex; align-items: center; justify-content: space-between;\n  margin: 0.4rem 0.8rem 0.2rem;\n  padding: 0.55rem 1rem;\n  background: rgba(201,169,110,0.08);\n  border: 1px solid rgba(201,169,110,0.2);\n  border-radius: 3px;\n  color: #C9A96E;\n  font-weight: 600; font-size: 0.78rem;\n  transition: all 0.2s;\n}\n.menu-dropdown a.drop-highlight:hover {\n  background: rgba(201,169,110,0.18); color: #fff; border-color: rgba(201,169,110,0.45);\n}\n.drop-highlight-arrow { font-size: 0.65rem; opacity: 0.6; margin-left: 8px; }\n \n.menu-dropdown a.drop-sim {\n  display: flex; align-items: center; justify-content: space-between;\n  margin: 0.25rem 0.8rem;\n  padding: 0.5rem 1rem;\n  background: rgba(74,144,217,0.06);\n  border: 1px solid rgba(74,144,217,0.18);\n  border-radius: 3px;\n  color: rgba(184,212,240,0.85);\n  font-size: 0.78rem;\n  transition: all 0.2s;\n}\n.menu-dropdown a.drop-sim:hover {\n  background: rgba(74,144,217,0.14); color: #fff; border-color: rgba(74,144,217,0.4);\n}\n.drop-sim-icon { font-size: 0.7rem; opacity: 0.55; margin-left: 8px; }\n \n.mega-dropdown {\n  display: none; position: absolute; top: 100%; left: -100px;\n  background: #0C1829; border: 1px solid rgba(74,144,217,0.15);\n  border-top: 2px solid #C9A96E; border-radius: 0 0 4px 4px;\n  width: 640px; padding: 1.5rem; z-index: 200;\n  box-shadow: 0 12px 40px rgba(0,0,0,0.4);\n}\n.menu-item:hover .mega-dropdown { display: block; }\n.mega-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; }\n.mega-col .drop-label { padding: 0 0 0.3rem; }\n.mega-col a {\n  display: block; padding: 0.35rem 0; font-size: 0.78rem; color: rgba(184,212,240,0.6);\n  text-decoration: none; transition: color 0.2s;\n}\n.mega-col a:hover { color: #fff; }\n.mega-col a.drop-highlight {\n  margin: 0.5rem 0 0.2rem; padding: 0.5rem 0.8rem;\n  background: rgba(201,169,110,0.08); border: 1px solid rgba(201,169,110,0.2);\n  border-radius: 3px; color: #C9A96E; font-weight: 600;\n  display: flex; align-items: center; justify-content: space-between;\n}\n.mega-col a.drop-highlight:hover {\n  background: rgba(201,169,110,0.18); color: #fff; border-color: rgba(201,169,110,0.45);\n}\n<\/style>\n<\/head>\n<body>\n \n<div class=\"menu-bar\">\n  <div class=\"menu-logo\">CORTEX <span>ORIGIN\u2122<\/span><\/div>\n  <div class=\"menu-items\">\n \n    <!-- AETZU ARROW AI -->\n    <a href=\"https:\/\/cortexorigin.com\/index.php\/aetzu-arrow-ai\/\" class=\"menu-aetzu\">\n      AETZU ARROW AI\u2122\n    <\/a>\n \n    <!-- BENCHMARK -->\n    <a href=\"https:\/\/cortexorigin.com\/index.php\/mttd-benchmark-v2-0-aetzu-arrow-ai\/\" class=\"menu-benchmark\">\n      Benchmark\n    <\/a>\n \n    <!-- 1. ARCHITECTURE -->\n    <div class=\"menu-item\">\n      Architecture\n      <div class=\"mega-dropdown\">\n        <div class=\"mega-cols\">\n          <div class=\"mega-col\">\n            <span class=\"drop-label\">Socle critique (TCB)<\/span>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/larchitecture-cortex-origin\/\">CORTEX ORIGIN\u2122 \u2014 Vue d'ensemble<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-core\/\">Cortex Core\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/omega-gouvernance-decisionnelle\/\">OMEGA\u2122 \u2014 Gouvernance<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/180-2\/\">PRISM\u2122 \u2014 Preuve<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-aegis\/\">AEGIS\u2122 \u2014 Ex\u00e9cution<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-fulcrum\/\">FULCRUM\u2122<\/a>\n            <hr class=\"drop-sep\" style=\"margin:0.5rem 0\">\n            <span class=\"drop-label\" style=\"padding:0.4rem 0 0.3rem\">S\u00e9curit\u00e9 &amp; Confinement<\/span>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/2026\/01\/02\/sentinel-securite-active-et-gouvernance-des-signaux\/\">SENTINEL\u2122 \u2014 S\u00e9curit\u00e9 active<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/wall-dome-les-4-formules-de-confinement-et-gouvernance-runtime\/\">WALL-DOME\u2122 \u2014 Confinement<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-cerbere\/\">CERB\u00c8RE\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-cerbere-decision-guard\/\">Decision Guard\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/1241-2\/\" class=\"drop-highlight\">\n              CMS CORTEX MORPHIC SHIELD\u2122\n              <span class=\"drop-highlight-arrow\">\u2197<\/span>\n            <\/a>\n          <\/div>\n          <div class=\"mega-col\">\n            <span class=\"drop-label\">Interface &amp; Orchestration<\/span>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/2026\/01\/02\/ava-cpl\/\">AVA\u2122 &amp; CPL\u2122 \u2014 Interface<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/multi-lcm-trm-engine-orchestration-gouvernee-multi-modeles-ia\/\">Multi LCM \/ TRM Engine\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/trm-contrain-nano\/\">TRM Contrain Nano\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-ecoflux\/\">EcoFlux\u2122 \u2014 Frugalit\u00e9<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/morph-gates\/\">MORPH GATES\u2122 \u2014 CI\/CD<\/a>\n            <hr class=\"drop-sep\" style=\"margin:0.5rem 0\">\n            <span class=\"drop-label\" style=\"padding:0.4rem 0 0.3rem\">Capacit\u00e9s avanc\u00e9es<\/span>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-quantum-ready\/\">Quantum-Ready\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-cyber-orion-3\/\">CYBER-ORION\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-labcode\/\">LabCode\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-chameleon\/\">CHAMELEON\u2122<\/a>\n            <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-mirror-lab\/\">MIRROR LAB\u2122<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n \n    <!-- 2. APPLICATIONS -->\n    <div class=\"menu-item\">\n      Applications\n      <div class=\"menu-dropdown\">\n        <span class=\"drop-label\">Verticales technologiques<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/imcortex-2\/\">IMCORTEX\u2122 \u0394IMC \u2014 Architecture cognitive<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/space-ai-autonomie-gouvernee\/\">Space AI \u2014 Autonomie gouvern\u00e9e<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/quantum-assurance-architecture-quantum-ready\/\">Quantum Assurance<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/wall-dome-drones-systemes-autonomes\/\">Drones &amp; Syst\u00e8mes autonomes<\/a>\n        <hr class=\"drop-sep\">\n        <span class=\"drop-label\">IAG par secteur<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-iag-pour-la-banque-la-finance-les-oiv\/\">Banque, Finance &amp; OIV<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-iag-pour-la-defense-la-securite-le-cyber\/\">D\u00e9fense &amp; Cybers\u00e9curit\u00e9<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-iag-pour-letat-le-regalien\/\">\u00c9tat &amp; R\u00e9galien<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/592-2\/\">Tous les secteurs<\/a>\n      <\/div>\n    <\/div>\n \n    <!-- 3. V\u00c9RIFICATION -->\n    <div class=\"menu-item\">\n      V\u00e9rification\n      <div class=\"menu-dropdown\">\n        <span class=\"drop-label\">CFVL \u2014 Laboratoire formel<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/689-2\/\">CFVL \u2014 Page principale<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/841-2\/\">Journal R&amp;D<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/833-2\/\">Publications &amp; \u00e9valuations<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/827-2\/\">M\u00e9thodologie<\/a>\n        <hr class=\"drop-sep\">\n        <span class=\"drop-label\">Recherche<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/604-2\/\">Cortex AGI Exp\u00e9rimental<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-2\/\">MVP CORTEX\u2122<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/814-2\/\">IA expliqu\u00e9e simplement<\/a>\n      <\/div>\n    <\/div>\n \n    <!-- 4. SECTEURS -->\n    <div class=\"menu-item\">\n      Secteurs\n      <div class=\"menu-dropdown\">\n        <span class=\"drop-label\">Audiences<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/investisseurs-partenaires\/\">Investisseurs &amp; partenaires<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/industriels-integrateurs\/\">Industriels &amp; int\u00e9grateurs<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/decideurs-publics-autorites\/\">D\u00e9cideurs publics &amp; autorit\u00e9s<\/a>\n        <hr class=\"drop-sep\">\n        <span class=\"drop-label\">Packs Applications (paC)<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-iag-pour-la-banque-la-finance-les-oiv\/\">Finance &amp; Banque<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-iag-pour-la-defense-la-securite-le-cyber\/\">D\u00e9fense &amp; Cyber<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/cortex-origin-iag-pour-letat-le-regalien\/\">\u00c9tat &amp; R\u00e9galien<\/a>\n      <\/div>\n    <\/div>\n \n    <!-- 5. CFVL -->\n    <div class=\"menu-item\">\n      CFVL\n      <div class=\"menu-dropdown\" style=\"min-width:300px\">\n        <span class=\"drop-label\">Programme de certification<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/689-2\/\">CFVL \u2014 Page principale<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/841-2\/\">Journal R&amp;D<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/833-2\/\">Publications<\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/rapport-mttd-mttb\/\">Rapport MTTD \/ MTTB<\/a>\n        <hr class=\"drop-sep\">\n        <span class=\"drop-label\">Simulations interactives<\/span>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/test\/\" class=\"drop-sim\">\n          Simulations Attaque\n          <span class=\"drop-sim-icon\">\u26a1<\/span>\n        <\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/simulation\/\" class=\"drop-sim\">\n          Sch\u00e9ma &amp; Simulations\n          <span class=\"drop-sim-icon\">\u25ce<\/span>\n        <\/a>\n        <hr class=\"drop-sep\">\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/mttd-benchmark-v2-0-aetzu-arrow-ai\/\" class=\"drop-highlight\">\n          MTTD Benchmark v2.0\n          <span class=\"drop-highlight-arrow\">\u2197<\/span>\n        <\/a>\n        <a href=\"https:\/\/cortexorigin.com\/index.php\/1043-2\/\" class=\"drop-highlight\">\n          Evaluation Dashboard\n          <span class=\"drop-highlight-arrow\">\u2197<\/span>\n        <\/a>\n      <\/div>\n    <\/div>\n \n    <!-- CTA -->\n    <a href=\"mailto:press@cortexorigin.com\" style=\"text-decoration:none\">\n      <div class=\"menu-cta\">Contact<\/div>\n    <\/a>\n \n  <\/div>\n<\/div>\n \n<\/body>\n<\/html>\n\n\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>Proto v6<\/title>\n<style>*{box-sizing:border-box;margin:0;padding:0}body{background:#f0eeeb;font-family:'JetBrains Mono',monospace;padding:1.5rem}<\/style>\n<\/head>\n<body>\n<svg viewBox=\"0 0 980 680\" style=\"width:100%;height:auto;display:block;max-width:1200px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n  <marker id=\"ac\"  markerWidth=\"5\" markerHeight=\"5\" refX=\"4\" refY=\"2.5\" orient=\"auto\"><path d=\"M0,0 L0,5 L5,2.5 z\" fill=\"#7B2800\"\/><\/marker>\n  <marker id=\"ag\"  markerWidth=\"5\" markerHeight=\"5\" refX=\"4\" refY=\"2.5\" orient=\"auto\"><path d=\"M0,0 L0,5 L5,2.5 z\" fill=\"#0F6E56\"\/><\/marker>\n  <marker id=\"aw\"  markerWidth=\"5\" markerHeight=\"5\" refX=\"4\" refY=\"2.5\" orient=\"auto\"><path d=\"M0,0 L0,5 L5,2.5 z\" fill=\"#B45309\"\/><\/marker>\n  <marker id=\"aup\" markerWidth=\"5\" markerHeight=\"5\" refX=\"1\" refY=\"2.5\" orient=\"auto\"><path d=\"M5,0 L5,5 L0,2.5 z\" fill=\"rgba(255,255,255,.6)\"\/><\/marker>\n  <marker id=\"aup2\" markerWidth=\"5\" markerHeight=\"5\" refX=\"1\" refY=\"2.5\" orient=\"auto\"><path d=\"M5,0 L5,5 L0,2.5 z\" fill=\"rgba(83,74,183,.5)\"\/><\/marker>\n \n  <!-- D\u00e9grad\u00e9 bandeau gauche EX ANTE (vert fonc\u00e9) -->\n  <linearGradient id=\"g-exante\" x1=\"0\" y1=\"1\" x2=\"0\" y2=\"0\">\n    <stop offset=\"0%\" stop-color=\"#022C22\" stop-opacity=\".95\"\/>\n    <stop offset=\"100%\" stop-color=\"#065F46\" stop-opacity=\".75\"\/>\n  <\/linearGradient>\n  <!-- D\u00e9grad\u00e9 bandeau droit M24 (violet) -->\n  <linearGradient id=\"g-m24\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n    <stop offset=\"0%\" stop-color=\"#3C3489\" stop-opacity=\".85\"\/>\n    <stop offset=\"100%\" stop-color=\"#534AB7\" stop-opacity=\".6\"\/>\n  <\/linearGradient>\n<\/defs>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     BANDEAU GAUCHE : EX ANTE (propri\u00e9t\u00e9 TCB remontante)\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<rect x=\"2\" y=\"110\" width=\"54\" height=\"536\" rx=\"5\" fill=\"url(#g-exante)\"\/>\n<text transform=\"translate(29,378) rotate(-90)\"\n  text-anchor=\"middle\" font-size=\"8.5\" fill=\"#fff\" font-weight=\"bold\" letter-spacing=\"3\">\n  PROTECTION EX ANTE\n<\/text>\n<text transform=\"translate(15,378) rotate(-90)\"\n  text-anchor=\"middle\" font-size=\"6\" fill=\"#86efac\" letter-spacing=\"1.5\" opacity=\".85\">\n  PREUVES HOL \u00b7 CLASSE \u2260 CVE \u00b7 ZERO-DAY COUVERT\n<\/text>\n<!-- Fl\u00e8ches montantes symbolisant que TCB couvre en amont -->\n<line x1=\"36\" y1=\"620\" x2=\"36\" y2=\"125\" stroke=\"rgba(255,255,255,.35)\" stroke-width=\"1\" stroke-dasharray=\"3,6\" marker-end=\"url(#aup)\"\/>\n<line x1=\"46\" y1=\"620\" x2=\"46\" y2=\"125\" stroke=\"rgba(255,255,255,.2)\"  stroke-width=\".8\" stroke-dasharray=\"2,7\" marker-end=\"url(#aup)\"\/>\n<!-- \u2131 badges par couche -->\n<text x=\"29\" y=\"160\" text-anchor=\"middle\" font-size=\"11\" fill=\"#86efac\" font-weight=\"bold\">\u2131<\/text>\n<text x=\"29\" y=\"300\" text-anchor=\"middle\" font-size=\"11\" fill=\"#86efac\" font-weight=\"bold\">\u2131<\/text>\n<text x=\"29\" y=\"430\" text-anchor=\"middle\" font-size=\"11\" fill=\"#86efac\" font-weight=\"bold\">\u2131<\/text>\n<text x=\"29\" y=\"570\" text-anchor=\"middle\" font-size=\"11\" fill=\"#86efac\" font-weight=\"bold\">\u2131<\/text>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     BANDEAU DROIT : M24 OFFLINE (propri\u00e9t\u00e9 transversale)\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<rect x=\"924\" y=\"110\" width=\"54\" height=\"536\" rx=\"5\" fill=\"url(#g-m24)\"\/>\n<text transform=\"translate(951,378) rotate(90)\"\n  text-anchor=\"middle\" font-size=\"8.5\" fill=\"#fff\" font-weight=\"bold\" letter-spacing=\"3\">\n  M24 OFFLINE\u2122\n<\/text>\n<text transform=\"translate(965,378) rotate(90)\"\n  text-anchor=\"middle\" font-size=\"6\" fill=\"#c4c2ff\" letter-spacing=\"1.5\" opacity=\".85\">\n  ISOLATION PHYSIQUE \u00b7 CBMC 13\/13 \u00b7 0 INTERFACE\n<\/text>\n<!-- Fl\u00e8ches montantes M24 \u2014 quand actif, fait dispara\u00eetre des familles enti\u00e8res -->\n<line x1=\"942\" y1=\"620\" x2=\"942\" y2=\"125\" stroke=\"rgba(196,194,255,.3)\" stroke-width=\"1\" stroke-dasharray=\"3,6\" marker-end=\"url(#aup2)\"\/>\n<!-- \u2298 badges M24 par couche -->\n<text x=\"951\" y=\"160\" text-anchor=\"middle\" font-size=\"11\" fill=\"#c4c2ff\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"951\" y=\"300\" text-anchor=\"middle\" font-size=\"11\" fill=\"#c4c2ff\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"951\" y=\"430\" text-anchor=\"middle\" font-size=\"11\" fill=\"#c4c2ff\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"951\" y=\"570\" text-anchor=\"middle\" font-size=\"9\"  fill=\"#c4c2ff\" font-style=\"italic\">actif<\/text>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     COUCHE 0 : 15 FAMILLES CWE\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<rect x=\"62\" y=\"8\" width=\"856\" height=\"100\" rx=\"5\"\n  fill=\"rgba(153,60,29,.07)\" stroke=\"#993C1D\" stroke-width=\"1.8\" stroke-dasharray=\"5,3\"\/>\n<text x=\"490\" y=\"23\" text-anchor=\"middle\" font-size=\"7\" fill=\"#7B2800\" letter-spacing=\"2\" font-weight=\"bold\">\n  15 FAMILLES D'ATTAQUE \u00b7 ~940 CWE CONNUS\n<\/text>\n \n<!-- 15 n\u0153uds espacement 57px, cx0=90 -->\n<g transform=\"translate(90,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">INJECT.<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">89\u00b778\u00b777<\/text><\/g>\n<g transform=\"translate(147,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">M\u00c9M.\/BUF<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">119\u00b7787\u00b7416<\/text><\/g>\n<g transform=\"translate(204,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">AUTH.<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">287\u00b7306\u00b7522<\/text><\/g>\n<g transform=\"translate(261,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">ACC\u00c8S<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">269\u00b7284\u00b7732<\/text><\/g>\n<g transform=\"translate(318,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">CRYPTO<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">327\u00b7320\u00b7326<\/text><\/g>\n<g transform=\"translate(375,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">CONFIG<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">16\u00b7276\u00b71188<\/text><\/g>\n<g transform=\"translate(432,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">CONCURR.<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">362\u00b7366\u00b7368<\/text><\/g>\n<g transform=\"translate(489,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">DoS\/RES<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">400\u00b7770\u00b7667<\/text><\/g>\n<g transform=\"translate(546,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">D\u00c9S\u00c9R.<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">502\u00b7915<\/text><\/g>\n<g transform=\"translate(603,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">SUPPLY<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">829\u00b71104\u00b71357<\/text><\/g>\n<g transform=\"translate(660,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">INFO EXP<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">200\u00b7918\u00b7203<\/text><\/g>\n<g transform=\"translate(717,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">SIDE-CH.<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">208\u00b7385<\/text><\/g>\n<g transform=\"translate(774,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">LOGIQUE<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">840\u00b7841\u00b7691<\/text><\/g>\n<g transform=\"translate(831,57)\"><circle r=\"16\" fill=\"#FDF0EE\" stroke=\"#993C1D\" stroke-width=\"2.2\"\/><text y=\"-3\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B2800\" font-weight=\"bold\">IA\u00b7ADV.<\/text><text y=\"6\" text-anchor=\"middle\" font-size=\"4\" fill=\"#993C1D\">20\u00b7345\u00b7754<\/text><\/g>\n<!-- F15 zero-day -->\n<g transform=\"translate(888,57)\">\n  <circle r=\"17\" fill=\"#FFF0F0\" stroke=\"#7B0000\" stroke-width=\"3\"\/>\n  <circle r=\"17\" fill=\"none\" stroke=\"#7B0000\" stroke-width=\"1\" opacity=\".3\"><animate attributeName=\"r\" from=\"17\" to=\"28\" dur=\"1.5s\" repeatCount=\"indefinite\"\/><animate attributeName=\"opacity\" from=\".3\" to=\"0\" dur=\"1.5s\" repeatCount=\"indefinite\"\/><\/circle>\n  <text y=\"-3\" text-anchor=\"middle\" font-size=\"6\" fill=\"#7B0000\" font-weight=\"bold\">ZERO<\/text>\n  <text y=\"7\"  text-anchor=\"middle\" font-size=\"6\" fill=\"#7B0000\" font-weight=\"bold\">DAY<\/text>\n<\/g>\n \n<!-- 15 fl\u00e8ches vers WALL-DOME -->\n<line x1=\"90\"  y1=\"73\" x2=\"90\"  y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"147\" y1=\"73\" x2=\"147\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"204\" y1=\"73\" x2=\"204\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"261\" y1=\"73\" x2=\"261\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"318\" y1=\"73\" x2=\"318\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"375\" y1=\"73\" x2=\"375\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"432\" y1=\"73\" x2=\"432\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"489\" y1=\"73\" x2=\"489\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"546\" y1=\"73\" x2=\"546\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"603\" y1=\"73\" x2=\"603\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"660\" y1=\"73\" x2=\"660\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"717\" y1=\"73\" x2=\"717\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"774\" y1=\"73\" x2=\"774\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"831\" y1=\"73\" x2=\"831\" y2=\"124\" stroke=\"#993C1D\" stroke-width=\"1.2\" stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n<line x1=\"888\" y1=\"74\" x2=\"888\" y2=\"124\" stroke=\"#7B0000\" stroke-width=\"2\"   stroke-dasharray=\"4,3\" marker-end=\"url(#ac)\"\/>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     COUCHE 1 : WALL-DOME \u2014 1\u00e8re ligne logicielle\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<rect x=\"62\" y=\"126\" width=\"856\" height=\"60\" rx=\"5\"\n  fill=\"rgba(234,179,8,.12)\" stroke=\"#D97706\" stroke-width=\"2.5\"\/>\n<text x=\"490\" y=\"146\" text-anchor=\"middle\" font-size=\"9\" fill=\"#92400E\" letter-spacing=\"3\" font-weight=\"bold\">WALL-DOME\u2122<\/text>\n<text x=\"490\" y=\"159\" text-anchor=\"middle\" font-size=\"6\"  fill=\"#B45309\">\n  1\u00e8re ligne \u00b7 p\u00e9rim\u00e8tre d'isolation \u00b7 h\u00e9ritage seL4 \u2191 \u00b7 CFVL 100\/100 \u00b7 15\/15 CWE \u00b7 TNR 100%\n<\/text>\n<!-- 15 \u2298 -->\n<text x=\"90\"  y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"147\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"204\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"261\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"318\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"375\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"432\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"489\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"546\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"603\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"660\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"717\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"774\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"831\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n<text x=\"888\" y=\"153\" text-anchor=\"middle\" font-size=\"14\" fill=\"#D97706\" font-weight=\"bold\">\u2298<\/text>\n \n<line x1=\"490\" y1=\"186\" x2=\"490\" y2=\"210\" stroke=\"#B45309\" stroke-width=\"1.2\" stroke-dasharray=\"3,3\" marker-end=\"url(#aw)\"\/>\n<text x=\"560\" y=\"202\" font-size=\"5.5\" fill=\"#B45309\" font-style=\"italic\">trafic filtr\u00e9 \u2192<\/text>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     COUCHE 2 : MODULES L1b\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<rect x=\"62\" y=\"212\" width=\"856\" height=\"82\" rx=\"5\"\n  fill=\"rgba(15,110,86,.07)\" stroke=\"#0F6E56\" stroke-width=\"2\"\/>\n<text x=\"490\" y=\"230\" text-anchor=\"middle\" font-size=\"7\" fill=\"#085041\" letter-spacing=\"2\" font-weight=\"bold\">\n  MODULES L1b \u2014 SP\u00c9CIALISATION PAR DOMAINE \u2014 CERTIFI\u00c9S CFVL\n<\/text>\n \n<circle cx=\"112\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"112\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">AEGIS<\/text>\n<text x=\"112\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">94,5% WP<\/text>\n \n<circle cx=\"218\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"218\" y=\"265\" text-anchor=\"middle\" font-size=\"6\"   fill=\"#085041\" font-weight=\"bold\">SENTINEL<\/text>\n<text x=\"218\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">100\/100<\/text>\n \n<circle cx=\"324\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"324\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">M09-CB<\/text>\n<text x=\"324\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">100\/100<\/text>\n \n<circle cx=\"430\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"430\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">ATLAS\u2122<\/text>\n<text x=\"430\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">97\/100<\/text>\n \n<circle cx=\"536\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"536\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">M11-TL<\/text>\n<text x=\"536\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">100\/100<\/text>\n \n<circle cx=\"642\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"642\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">M26-CPL<\/text>\n<text x=\"642\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">96\/100<\/text>\n \n<circle cx=\"748\" cy=\"268\" r=\"22\" fill=\"#E1F5EE\" stroke=\"#0F6E56\" stroke-width=\"2.5\"\/>\n<text x=\"748\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">M27-GW<\/text>\n<text x=\"748\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#0F6E56\">94\/100<\/text>\n \n<circle cx=\"858\" cy=\"268\" r=\"22\" fill=\"#EEEDFE\" stroke=\"#534AB7\" stroke-width=\"2.5\"\/>\n<text x=\"858\" y=\"265\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#3C3489\" font-weight=\"bold\">PRISM<\/text>\n<text x=\"858\" y=\"275\" text-anchor=\"middle\" font-size=\"5\"   fill=\"#534AB7\">100\/100<\/text>\n \n<line x1=\"490\" y1=\"294\" x2=\"490\" y2=\"320\" stroke=\"#0F6E56\" stroke-width=\"1.8\" marker-end=\"url(#ag)\"\/>\n<text x=\"560\" y=\"311\" font-size=\"5.5\" fill=\"#0F6E56\" font-style=\"italic\">trafic l\u00e9gitim\u00e9 \u2192<\/text>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     COUCHE 3 : TCB\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<rect x=\"62\" y=\"322\" width=\"856\" height=\"148\" rx=\"6\"\n  fill=\"#EEEDFE\" stroke=\"#534AB7\" stroke-width=\"3\"\/>\n \n<!-- seL4 n\u0153ud gauche -->\n<circle cx=\"192\" cy=\"382\" r=\"36\" fill=\"#DDDCFD\" stroke=\"#534AB7\" stroke-width=\"2.5\"\/>\n<circle cx=\"192\" cy=\"382\" r=\"20\" fill=\"#534AB7\" stroke=\"#3C3489\" stroke-width=\"2\"\/>\n<text x=\"192\" y=\"378\" text-anchor=\"middle\" font-size=\"9\"  fill=\"#fff\"   font-weight=\"bold\">seL4<\/text>\n<text x=\"192\" y=\"390\" text-anchor=\"middle\" font-size=\"7\"  fill=\"#c7d2fe\">EAL7<\/text>\n<text x=\"192\" y=\"426\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#534AB7\" font-weight=\"bold\">Isabelle\/HOL<\/text>\n<text x=\"192\" y=\"437\" text-anchor=\"middle\" font-size=\"5\"  fill=\"#7B74D4\">T1\u00b7T2\u00b7T3\u00b7T4\u00b7T6\u00b7T8<\/text>\n<text x=\"192\" y=\"447\" text-anchor=\"middle\" font-size=\"5\"  fill=\"#7B74D4\">421 ns \u00b7 7 CWE<\/text>\n<text x=\"192\" y=\"457\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#7B74D4\" opacity=\".7\">BSI-DSZ-CC-0784<\/text>\n \n<!-- TCB centre -->\n<circle cx=\"490\" cy=\"375\" r=\"33\" fill=\"#DDDCFD\" stroke=\"#534AB7\" stroke-width=\"2.5\"\/>\n<circle cx=\"490\" cy=\"375\" r=\"18\" fill=\"#534AB7\" stroke=\"#3C3489\" stroke-width=\"2\"\/>\n<text x=\"490\" y=\"371\" text-anchor=\"middle\" font-size=\"9\"  fill=\"#fff\"   font-weight=\"bold\">TCB<\/text>\n<text x=\"490\" y=\"383\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#c7d2fe\">ORIGIN\u2122<\/text>\n<text x=\"490\" y=\"420\" text-anchor=\"middle\" font-size=\"8.5\" fill=\"#3C3489\" font-weight=\"bold\" letter-spacing=\"1\">CORTEX ORIGIN\u2122<\/text>\n<text x=\"490\" y=\"432\" text-anchor=\"middle\" font-size=\"6\"  fill=\"#534AB7\">TNR 99,8% \u00b7 116 Mds \u00b7 0 crash \u00b7 100% offline<\/text>\n<text x=\"490\" y=\"444\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#7B74D4\">ANSSI \u00b7 DGA \u00b7 OIV\/SSR \u00b7 ARM64<\/text>\n<text x=\"490\" y=\"455\" text-anchor=\"middle\" font-size=\"5\"  fill=\"#7B74D4\" opacity=\".7\">France Deeptech \u00b7 Systematic \u00b7 SAFE<\/text>\n \n<!-- OMEGA+M00 n\u0153ud droit -->\n<circle cx=\"788\" cy=\"382\" r=\"36\" fill=\"#DDDCFD\" stroke=\"#534AB7\" stroke-width=\"2.5\"\/>\n<circle cx=\"788\" cy=\"382\" r=\"20\" fill=\"#534AB7\" stroke=\"#3C3489\" stroke-width=\"2\"\/>\n<text x=\"788\" y=\"377\" text-anchor=\"middle\" font-size=\"7.5\" fill=\"#fff\"   font-weight=\"bold\">PRISM<\/text>\n<text x=\"788\" y=\"388\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#c7d2fe\">+OMEGA<\/text>\n<text x=\"788\" y=\"426\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#534AB7\" font-weight=\"bold\">Audit \u00b7 Policy<\/text>\n<text x=\"788\" y=\"437\" text-anchor=\"middle\" font-size=\"5\"  fill=\"#7B74D4\">134 lemmes \u00b7 CBMC<\/text>\n<text x=\"788\" y=\"447\" text-anchor=\"middle\" font-size=\"5\"  fill=\"#7B74D4\">9 th\u00e9ories Isabelle<\/text>\n<text x=\"788\" y=\"457\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#7B74D4\" opacity=\".7\">M00 Root-of-Trust<\/text>\n \n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     L\u00c9GENDE COUCHES (\u00e9tiquettes droite entre les bandes)\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<!-- Barre color\u00e9e -->\n<rect x=\"2\" y=\"126\" width=\"3\" height=\"60\"  rx=\"2\" fill=\"#D97706\"\/>\n<rect x=\"2\" y=\"212\" width=\"3\" height=\"82\"  rx=\"2\" fill=\"#0F6E56\"\/>\n<rect x=\"2\" y=\"322\" width=\"3\" height=\"148\" rx=\"2\" fill=\"#534AB7\"\/>\n \n<!-- Note sur les bandes transversales -->\n<text x=\"490\" y=\"490\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#534AB7\" opacity=\".6\" font-style=\"italic\">\n  \u2190 EX ANTE : propri\u00e9t\u00e9 TCB remontante \u00b7 M24 OFFLINE : mode transversal \u2192\n<\/text>\n \n<!-- Annotation M24 explicite -->\n<text transform=\"translate(951,560) rotate(90)\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#c4c2ff\" opacity=\".8\">\n  Si actif \u2192 familles r\u00e9seau\/offline supprim\u00e9es\n<\/text>\n \n<!-- Annotation EX ANTE explicite -->\n<text transform=\"translate(29,540) rotate(-90)\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#86efac\" opacity=\".8\">\n  Couvre les classes \u00b7 0 CVE requis\n<\/text>\n \n<\/svg>\n<\/body>\n<\/html>\n\n\n\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>CORTEX ORIGIN\u2122 \u2014 Solar Defense v3<\/title>\n<style>\n*{box-sizing:border-box;margin:0;padding:0}\nbody{background:#f0eeeb;font-family:'JetBrains Mono',monospace;display:flex;flex-direction:column;align-items:center;padding:1.2rem;gap:.8rem}\n.hdr{width:100%;max-width:900px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}\n.hdr-title{font-size:.62rem;letter-spacing:.22em;color:#6b6966;text-transform:uppercase}\n.hdr-sub{font-size:.46rem;color:#9e9b98;margin-top:2px}\n.hdr-status{display:flex;align-items:center;gap:6px;font-size:.52rem;letter-spacing:.1em}\n.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}\n@keyframes blink{0%,100%{opacity:1}50%{opacity:.15}}\n.mode-bar{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center}\n.mbtn{font-family:'JetBrains Mono',monospace;font-size:.55rem;padding:.42rem .95rem;border-radius:4px;cursor:pointer;letter-spacing:.07em;border:1.5px solid;background:transparent;transition:all .2s}\n.mbtn-norm  {border-color:#D97706;color:#D97706}.mbtn-norm.active  {background:#D97706;color:#0d1117;box-shadow:0 0 14px rgba(217,119,6,.5)}\n.mbtn-zd    {border-color:#ef4444;color:#ef4444}.mbtn-zd.active    {background:#ef4444;color:#fff;box-shadow:0 0 14px rgba(239,68,68,.5)}\n.mbtn-exante{border-color:#10b981;color:#10b981}.mbtn-exante.active{background:#10b981;color:#0d1117;box-shadow:0 0 14px rgba(16,185,129,.5)}\n.mbtn-hybrid{border-color:#818cf8;color:#818cf8}.mbtn-hybrid.active{background:#818cf8;color:#0d1117;box-shadow:0 0 14px rgba(129,140,248,.5)}\n.mbtn-ctrl  {border-color:#9e9b98;color:#6b6966}\n.mbtn-ctrl.active{border-color:#6b6966;color:#6b6966}\n.metrics{display:flex;gap:1.2rem;flex-wrap:wrap;justify-content:center}\n.met{text-align:center;min-width:68px}\n.met-v{font-size:1.35rem;font-style:italic;font-weight:700;line-height:1;transition:color .35s}\n.met-l{font-size:.43rem;letter-spacing:.1em;color:#9e9b98;margin-top:3px;text-transform:uppercase}\n#solar{width:100%;max-width:680px;height:auto;display:block}\n.atk-card{width:100%;max-width:900px;background:#ffffff;border:.5px solid rgba(0,0,0,.1);border-radius:6px;padding:.6rem 1rem;display:flex;gap:.8rem;align-items:center;min-height:48px;transition:border-color .3s}\n.atk-icon{font-size:1.4rem;flex-shrink:0}\n.atk-name{font-size:.76rem;font-weight:700;transition:color .3s}\n.atk-sub{font-size:.47rem;color:#6b6966;line-height:1.5;margin-top:2px}\n.atk-right{margin-left:auto;text-align:right;flex-shrink:0}\n.atk-lat{font-size:1.05rem;font-style:italic;font-weight:700;transition:color .3s}\n.atk-lay{font-size:.43rem;color:#6b6966;margin-top:2px}\n.log-wrap{width:100%;max-width:900px;background:#f0eeeb;border:.5px solid rgba(0,0,0,.1);border-radius:6px;padding:.65rem 1rem;height:200px;overflow-y:auto}\n.log-wrap::-webkit-scrollbar{width:3px}.log-wrap::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:2px}\n.ll{font-size:.54rem;line-height:2;display:flex;gap:.5rem}\n.lt{color:#9e9b98;min-width:60px}.lok{color:#0F6E56;min-width:58px}.lwn{color:#B45309;min-width:58px}.lcr{color:#993C1D;min-width:58px}\n.lm{color:#6b6966}.lip{color:#534AB7;font-weight:700;letter-spacing:.02em}\n.ll-new{animation:fadein .22s ease}\n@keyframes fadein{from{opacity:0;transform:translateX(-5px)}to{opacity:1}}\n\/* L\u00e9gende couches *\/\n.legend{width:100%;max-width:900px;display:flex;gap:1.2rem;flex-wrap:wrap;justify-content:center;padding-top:.2rem}\n.leg{display:flex;align-items:center;gap:.4rem;font-size:.46rem;color:#6b6966}\n.leg-dot{width:10px;height:10px;border-radius:50%;border:2px solid;flex-shrink:0}\n<\/style>\n<\/head>\n<body>\n \n<div class=\"hdr\">\n  <div>\n    <div class=\"hdr-title\" style=\"color:#4b4845\">CORTEX ORIGIN\u2122 \u2014 Architecture solaire \u00b7 Simulation d\u00e9fensive<\/div>\n    <div class=\"hdr-sub\">Les attaques ne p\u00e9n\u00e8trent jamais la TCB \u2014 elles sont stopp\u00e9es en orbite<\/div>\n  <\/div>\n  <div class=\"hdr-status\">\n    <span class=\"dot\" id=\"sim-dot\" style=\"background:#0F6E56;animation:blink 1.2s ease-in-out infinite\"><\/span>\n    <span id=\"sim-label\" style=\"color:#10b981\">ACTIF<\/span>\n  <\/div>\n<\/div>\n \n<div class=\"mode-bar\">\n  <button class=\"mbtn mbtn-norm   active\" id=\"btn-norm\"   onclick=\"setMode('normal')\">\u26a1 Attaque standard<\/button>\n  <button class=\"mbtn mbtn-zd\"          id=\"btn-zd\"     onclick=\"setMode('zeroday')\">\ud83d\udc80 Zero-Day<\/button>\n  <button class=\"mbtn mbtn-exante\"       id=\"btn-exante\" onclick=\"setMode('exante')\">\u2131 Ex Ante<\/button>\n  <button class=\"mbtn mbtn-hybrid\"       id=\"btn-hybrid\" onclick=\"setMode('hybrid')\">\ud83e\udd16 IA + Humain<\/button>\n  <button class=\"mbtn mbtn-ctrl active\"  id=\"btn-auto\"   onclick=\"toggleAuto()\" style=\"margin-left:.4rem\">\u23f5 Auto<\/button>\n  <button class=\"mbtn mbtn-ctrl\"         onclick=\"simReset()\">\u21ba<\/button>\n<\/div>\n \n<div class=\"metrics\">\n  <div class=\"met\"><div class=\"met-v\" id=\"m-blocked\" style=\"color:#10b981\">0<\/div><div class=\"met-l\">Bloqu\u00e9es<\/div><\/div>\n  <div class=\"met\"><div class=\"met-v\" id=\"m-mode\"    style=\"color:#D97706\">STD<\/div><div class=\"met-l\">Mode<\/div><\/div>\n  <div class=\"met\"><div class=\"met-v\" id=\"m-lat\"     style=\"color:#818cf8\">\u2014<\/div><div class=\"met-l\">Latence<\/div><\/div>\n  <div class=\"met\"><div class=\"met-v\" id=\"m-layer\"   style=\"color:#6b6966\">\u2014<\/div><div class=\"met-l\">Couche<\/div><\/div>\n  <div class=\"met\"><div class=\"met-v\" id=\"m-cwe\" style=\"color:#ef4444\">~940<\/div><div class=\"met-l\">CWE couverts<\/div><\/div>\n<\/div>\n \n<!-- Compteur d'attaques\/seconde -->\n<div style=\"width:100%;max-width:900px;background:#fff;border:.5px solid rgba(0,0,0,.08);border-radius:6px;padding:.7rem 1.2rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.8rem\">\n  <div>\n    <div style=\"font-size:.48rem;letter-spacing:.2em;text-transform:uppercase;color:#9e9b98;margin-bottom:.3rem\">Capacit\u00e9 de blocage simultan\u00e9e \u00b7 ARM64 \u00b7 4 c\u0153urs<\/div>\n    <div style=\"display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap\">\n      <span id=\"atk-counter\" style=\"font-family:'JetBrains Mono',monospace;font-size:2.2rem;font-weight:700;font-style:italic;color:#534AB7;transition:color .3s;line-height:1\">0<\/span>\n      <span style=\"font-size:.9rem;color:#9e9b98;font-family:'JetBrains Mono',monospace\">attaques bloqu\u00e9es \/ seconde<\/span>\n    <\/div>\n    <div id=\"atk-counter-sub\" style=\"font-size:.48rem;color:#9e9b98;margin-top:.3rem;font-family:'JetBrains Mono',monospace;letter-spacing:.05em\">\n      Chemin L1b complet \u00b7 2,1 \u00b5s\/d\u00e9cision \u00b7 4 c\u0153urs d\u00e9di\u00e9s TCB\n    <\/div>\n  <\/div>\n  <!-- Mini breakdown -->\n  <div style=\"display:flex;gap:1.2rem;flex-wrap:wrap\">\n    <div style=\"text-align:center\">\n      <div id=\"cnt-sel4\" style=\"font-family:'JetBrains Mono',monospace;font-size:1rem;font-weight:700;color:#534AB7;font-style:italic\">9,5 M\/s<\/div>\n      <div style=\"font-size:.42rem;color:#9e9b98;text-transform:uppercase;letter-spacing:.08em;margin-top:2px\">seL4 kernel<br>421 ns\/d\u00e9cision<\/div>\n    <\/div>\n    <div style=\"text-align:center\">\n      <div id=\"cnt-l1b\" style=\"font-family:'JetBrains Mono',monospace;font-size:1rem;font-weight:700;color:#0F6E56;font-style:italic\">1,9 M\/s<\/div>\n      <div style=\"font-size:.42rem;color:#9e9b98;text-transform:uppercase;letter-spacing:.08em;margin-top:2px\">L1b complet<br>2,1 \u00b5s\/d\u00e9cision<\/div>\n    <\/div>\n    <div style=\"text-align:center\">\n      <div style=\"font-family:'JetBrains Mono',monospace;font-size:1rem;font-weight:700;color:#D97706;font-style:italic\">\u00d7100 000<\/div>\n      <div style=\"font-size:.42rem;color:#9e9b98;text-transform:uppercase;letter-spacing:.08em;margin-top:2px\">ratio TCB\/APT IA<br>421 ns vs &lt;50 ms<\/div>\n    <\/div>\n    <div style=\"text-align:center\">\n      <div style=\"font-family:'JetBrains Mono',monospace;font-size:1rem;font-weight:700;color:#993C1D;font-style:italic\">&gt;150 M pps<\/div>\n      <div style=\"font-size:.42rem;color:#9e9b98;text-transform:uppercase;letter-spacing:.08em;margin-top:2px\">DDoS record<br>\u2193 distribu\u00e9 requis<\/div>\n    <\/div>\n  <\/div>\n<\/div>\n \n<svg id=\"solar\" viewBox=\"0 0 700 700\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<rect width=\"700\" height=\"700\" fill=\"#f8f7f5\" rx=\"8\"\/>\n<defs>\n  <filter id=\"gs\"><feGaussianBlur stdDeviation=\"9\" result=\"b\"\/><feMerge><feMergeNode in=\"b\"\/><feMergeNode in=\"SourceGraphic\"\/><\/feMerge><\/filter>\n  <filter id=\"gm\"><feGaussianBlur stdDeviation=\"3\" result=\"b\"\/><feMerge><feMergeNode in=\"b\"\/><feMergeNode in=\"SourceGraphic\"\/><\/feMerge><\/filter>\n  <radialGradient id=\"tcb-g\" cx=\"50%\" cy=\"50%\" r=\"50%\">\n    <stop offset=\"0%\"  stop-color=\"#a5b4fc\"\/>\n    <stop offset=\"50%\" stop-color=\"#4f46e5\"\/>\n    <stop offset=\"100%\"stop-color=\"#1e1b4b\"\/>\n  <\/radialGradient>\n  <radialGradient id=\"halo\" cx=\"50%\" cy=\"50%\" r=\"50%\">\n    <stop offset=\"0%\"  stop-color=\"#4f46e5\" stop-opacity=\".15\"\/>\n    <stop offset=\"100%\"stop-color=\"#4f46e5\" stop-opacity=\"0\"\/>\n  <\/radialGradient>\n<\/defs>\n \n<!-- \u00c9toiles fond -->\n<circle cx=\"60\"  cy=\"55\"  r=\"1\"   fill=\"rgba(0,0,0,.06)\"\/>\n<circle cx=\"630\" cy=\"80\"  r=\"1.2\" fill=\"rgba(0,0,0,.05)\"\/>\n<circle cx=\"20\"  cy=\"390\" r=\".9\"  fill=\"rgba(0,0,0,.06)\"\/>\n<circle cx=\"675\" cy=\"330\" r=\"1\"   fill=\"rgba(0,0,0,.05)\"\/>\n<circle cx=\"140\" cy=\"655\" r=\"1.1\" fill=\"rgba(0,0,0,.05)\"\/>\n<circle cx=\"575\" cy=\"630\" r=\".9\"  fill=\"rgba(0,0,0,.06)\"\/>\n<circle cx=\"680\" cy=\"490\" r=\"1\"   fill=\"rgba(0,0,0,.04)\"\/>\n<circle cx=\"30\"  cy=\"200\" r=\".8\"  fill=\"rgba(0,0,0,.05)\"\/>\n \n<!-- \u2500\u2500 ORBITES \u2500\u2500 -->\n<!-- r=308 CWE -->\n<circle cx=\"350\" cy=\"350\" r=\"308\" fill=\"none\" stroke=\"rgba(153,60,29,.2)\"   stroke-width=\".8\" stroke-dasharray=\"3,9\"\/>\n<!-- r=220 WALL-DOME -->\n<circle cx=\"350\" cy=\"350\" r=\"220\" fill=\"none\" stroke=\"rgba(217,119,6,.3)\"   stroke-width=\".8\" stroke-dasharray=\"2,6\"\/>\n<!-- r=140 L1b -->\n<circle cx=\"350\" cy=\"350\" r=\"140\" fill=\"none\" stroke=\"rgba(15,110,86,.2)\" stroke-width=\".8\" stroke-dasharray=\"2,7\"\/>\n<!-- r=72 TCB -->\n<circle cx=\"350\" cy=\"350\" r=\"72\"  fill=\"rgba(79,70,229,.06)\" stroke=\"rgba(83,74,183,.3)\" stroke-width=\".8\"\/>\n \n<!-- \u2500\u2500 ARC EX ANTE gauche \u2500\u2500 -->\n<!-- Fond EX ANTE -->\n<rect id=\"bg-exante\" x=\"2\" y=\"170\" width=\"96\" height=\"360\" rx=\"5\" fill=\"#065F46\" opacity=\"0\" style=\"transition:opacity .3s\"\/>\n<path id=\"arc-exante\" d=\"M 96 172 A 238 238 0 0 0 96 528\" fill=\"none\" stroke=\"#065F46\" stroke-width=\"4\" opacity=\".5\" stroke-linecap=\"round\" style=\"transition:all .3s\"\/>\n<text transform=\"translate(73,350) rotate(-90)\" text-anchor=\"middle\" font-size=\"7.5\" fill=\"#065F46\" font-weight=\"bold\" letter-spacing=\"2.5\" opacity=\".9\">EX ANTE \u00b7 \u2131 HOL \u00b7 0 CVE<\/text>\n \n<!-- \u2500\u2500 ARC M24 droit \u2500\u2500 -->\n<!-- Fond M24 -->\n<rect id=\"bg-m24\" x=\"602\" y=\"170\" width=\"96\" height=\"360\" rx=\"5\" fill=\"#534AB7\" opacity=\"0\" style=\"transition:opacity .3s\"\/>\n<path id=\"arc-m24\" d=\"M 604 172 A 238 238 0 0 1 604 528\" fill=\"none\" stroke=\"#4338ca\" stroke-width=\"4\" opacity=\".5\" stroke-linecap=\"round\" style=\"transition:all .3s\"\/>\n<text id=\"txt-m24\" transform=\"translate(627,350) rotate(90)\" text-anchor=\"middle\" font-size=\"7.5\" fill=\"#3C3489\" font-weight=\"bold\" letter-spacing=\"2.5\" opacity=\".9\" style=\"transition:all .3s\">M24 OFFLINE\u2122 \u00b7 CBMC 13\/13<\/text>\n \n<!-- \u2500\u2500 WALL-DOME anneau \u2500\u2500 -->\n<circle id=\"wall-ring\" cx=\"350\" cy=\"350\" r=\"220\" fill=\"none\" stroke=\"#D97706\" stroke-width=\"3.5\" opacity=\".28\"\/>\n<!-- Rotation WALL-DOME label + orbiters -->\n<g>\n  <animateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 350 350\" to=\"360 350 350\" dur=\"50s\" repeatCount=\"indefinite\"\/>\n  <circle cx=\"350\" cy=\"130\" r=\"5\"   fill=\"#D97706\" opacity=\".55\"\/>\n  <circle cx=\"506\" cy=\"195\" r=\"3.5\" fill=\"#D97706\" opacity=\".4\"\/>\n  <circle cx=\"570\" cy=\"350\" r=\"5\"   fill=\"#D97706\" opacity=\".55\"\/>\n  <circle cx=\"506\" cy=\"505\" r=\"3.5\" fill=\"#D97706\" opacity=\".4\"\/>\n  <circle cx=\"350\" cy=\"570\" r=\"5\"   fill=\"#D97706\" opacity=\".55\"\/>\n  <circle cx=\"194\" cy=\"505\" r=\"3.5\" fill=\"#D97706\" opacity=\".4\"\/>\n  <circle cx=\"130\" cy=\"350\" r=\"5\"   fill=\"#D97706\" opacity=\".55\"\/>\n  <circle cx=\"194\" cy=\"195\" r=\"3.5\" fill=\"#D97706\" opacity=\".4\"\/>\n<\/g>\n<text x=\"350\" y=\"122\" text-anchor=\"middle\" font-size=\"7.5\" fill=\"#92400E\" font-weight=\"bold\" letter-spacing=\"2\" opacity=\".9\">WALL-DOME\u2122<\/text>\n<text x=\"350\" y=\"132\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#B45309\" opacity=\".8\">100\/100 \u00b7 15\/15 CWE \u00b7 TNR 100%<\/text>\n \n<!-- \u2500\u2500 TCB SOLEIL \u2500\u2500 -->\n<circle cx=\"350\" cy=\"350\" r=\"100\" fill=\"url(#halo)\"\/>\n<circle cx=\"350\" cy=\"350\" r=\"67\"  fill=\"url(#tcb-g)\" filter=\"url(#gs)\"\/>\n<circle cx=\"350\" cy=\"350\" r=\"67\"  fill=\"none\" stroke=\"rgba(165,180,252,.3)\" stroke-width=\"1.5\"\/>\n<!-- Rayons solaires -->\n<g opacity=\".08\" stroke=\"#818cf8\" stroke-width=\"1\">\n  <line x1=\"350\" y1=\"283\" x2=\"350\" y2=\"262\"\/>\n  <line x1=\"397\" y1=\"303\" x2=\"409\" y2=\"291\"\/>\n  <line x1=\"417\" y1=\"350\" x2=\"438\" y2=\"350\"\/>\n  <line x1=\"397\" y1=\"397\" x2=\"409\" y2=\"409\"\/>\n  <line x1=\"350\" y1=\"417\" x2=\"350\" y2=\"438\"\/>\n  <line x1=\"303\" y1=\"397\" x2=\"291\" y2=\"409\"\/>\n  <line x1=\"283\" y1=\"350\" x2=\"262\" y2=\"350\"\/>\n  <line x1=\"303\" y1=\"303\" x2=\"291\" y2=\"291\"\/>\n<\/g>\n<!-- Pulse permanent lent -->\n<circle cx=\"350\" cy=\"350\" r=\"67\" fill=\"none\" stroke=\"#818cf8\" stroke-width=\"1.2\" opacity=\".25\">\n  <animate attributeName=\"r\"       from=\"67\" to=\"94\" dur=\"3.5s\" repeatCount=\"indefinite\"\/>\n  <animate attributeName=\"opacity\" from=\".18\" to=\"0\" dur=\"3.5s\" repeatCount=\"indefinite\"\/>\n<\/circle>\n<text x=\"350\" y=\"342\" text-anchor=\"middle\" font-size=\"12\"  fill=\"#1e1b4b\" font-weight=\"bold\">TCB<\/text>\n<text x=\"350\" y=\"356\" text-anchor=\"middle\" font-size=\"8.5\" fill=\"#4338ca\">seL4 EAL7<\/text>\n<text x=\"350\" y=\"368\" text-anchor=\"middle\" font-size=\"6\"   fill=\"rgba(67,56,202,.7)\">PRISM \u00b7 OMEGA<\/text>\n<text x=\"350\" y=\"379\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"rgba(67,56,202,.5)\">421 ns \u00b7 T1..T8<\/text>\n<!-- Flashes TCB (d\u00e9clench\u00e9s par JS) \u2014 restent DANS le cercle TCB -->\n<circle id=\"tf1\" cx=\"350\" cy=\"350\" r=\"67\"  fill=\"none\" stroke=\"#818cf8\" stroke-width=\"5\"  opacity=\"0\" style=\"transition:opacity .08s\"\/>\n<circle id=\"tf2\" cx=\"350\" cy=\"350\" r=\"82\"  fill=\"none\" stroke=\"#4f46e5\" stroke-width=\"3\"  opacity=\"0\" style=\"transition:opacity .14s\"\/>\n \n<!-- \u2500\u2500 8 MODULES L1b (r=140) \u2500\u2500 -->\n<g id=\"mod-walld\"><circle cx=\"350\" cy=\"210\" r=\"26\" fill=\"#e8f5ee\" stroke=\"#0F6E56\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"350\" y=\"207\" text-anchor=\"middle\" font-size=\"7\" fill=\"#085041\" font-weight=\"bold\">WALL<\/text><text x=\"350\" y=\"217\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#0F6E56\">DOME<\/text><\/g>\n<g id=\"mod-aegis\"><circle cx=\"449\" cy=\"251\" r=\"26\" fill=\"#e8f5ee\" stroke=\"#0F6E56\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"449\" y=\"248\" text-anchor=\"middle\" font-size=\"7\" fill=\"#085041\" font-weight=\"bold\">AEGIS<\/text><text x=\"449\" y=\"258\" text-anchor=\"middle\" font-size=\"5\" fill=\"#0F6E56\">94,5%<\/text><\/g>\n<g id=\"mod-m09\"><circle cx=\"490\" cy=\"350\" r=\"26\" fill=\"#e8f5ee\" stroke=\"#0F6E56\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"490\" y=\"347\" text-anchor=\"middle\" font-size=\"7\" fill=\"#085041\" font-weight=\"bold\">M09-CB<\/text><text x=\"490\" y=\"357\" text-anchor=\"middle\" font-size=\"5\" fill=\"#0F6E56\">100\/100<\/text><\/g>\n<g id=\"mod-sent\"><circle cx=\"449\" cy=\"449\" r=\"26\" fill=\"#e8f5ee\" stroke=\"#0F6E56\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"449\" y=\"446\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#085041\" font-weight=\"bold\">SENTINEL<\/text><text x=\"449\" y=\"456\" text-anchor=\"middle\" font-size=\"5\" fill=\"#0F6E56\">100\/100<\/text><\/g>\n<g id=\"mod-atlas\"><circle cx=\"350\" cy=\"490\" r=\"26\" fill=\"#e8f5ee\" stroke=\"#0F6E56\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"350\" y=\"487\" text-anchor=\"middle\" font-size=\"7\" fill=\"#085041\" font-weight=\"bold\">ATLAS\u2122<\/text><text x=\"350\" y=\"497\" text-anchor=\"middle\" font-size=\"5\" fill=\"#22c55e\">97\/100<\/text><\/g>\n<g id=\"mod-m11\"><circle cx=\"251\" cy=\"449\" r=\"26\" fill=\"#e8f5ee\" stroke=\"#0F6E56\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"251\" y=\"446\" text-anchor=\"middle\" font-size=\"7\" fill=\"#085041\" font-weight=\"bold\">M11-TL<\/text><text x=\"251\" y=\"456\" text-anchor=\"middle\" font-size=\"5\" fill=\"#0F6E56\">100\/100<\/text><\/g>\n<g id=\"mod-prism\"><circle cx=\"210\" cy=\"350\" r=\"26\" fill=\"#eeedfe\" stroke=\"#818cf8\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"210\" y=\"347\" text-anchor=\"middle\" font-size=\"7\" fill=\"#3C3489\" font-weight=\"bold\">PRISM<\/text><text x=\"210\" y=\"357\" text-anchor=\"middle\" font-size=\"5\" fill=\"#534AB7\">100\/100<\/text><\/g>\n<g id=\"mod-m00\"><circle cx=\"251\" cy=\"251\" r=\"26\" fill=\"#eeedfe\" stroke=\"#818cf8\" stroke-width=\"2.5\" filter=\"url(#gm)\"\/><text x=\"251\" y=\"248\" text-anchor=\"middle\" font-size=\"7\" fill=\"#3C3489\" font-weight=\"bold\">M00<\/text><text x=\"251\" y=\"258\" text-anchor=\"middle\" font-size=\"5\" fill=\"#534AB7\">RoT<\/text><\/g>\n \n<!-- \u2500\u2500 15 CWE p\u00e9riph\u00e9rie (r=308) \u2500\u2500 -->\n<g id=\"cwe-INJECT\"><circle cx=\"350\"  cy=\"42\"  r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"350\"  y=\"39\"  text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">INJECT.<\/text><text x=\"350\"  y=\"49\"  text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">89\u00b778\u00b777<\/text><\/g>\n<g id=\"cwe-MEM\"   ><circle cx=\"476\"  cy=\"68\"  r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"476\"  y=\"65\"  text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">M\u00c9M.\/BUF<\/text><text x=\"476\"  y=\"75\"  text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">119\u00b7787<\/text><\/g>\n<g id=\"cwe-AUTH\"  ><circle cx=\"579\"  cy=\"141\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"579\"  y=\"138\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">AUTH.<\/text><text x=\"579\"  y=\"148\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">287\u00b7522<\/text><\/g>\n<g id=\"cwe-ACCES\" ><circle cx=\"644\"  cy=\"244\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"644\"  y=\"241\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">ACC\u00c8S<\/text><text x=\"644\"  y=\"251\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">269\u00b7732<\/text><\/g>\n<g id=\"cwe-CRYPTO\"><circle cx=\"657\"  cy=\"366\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"657\"  y=\"363\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">CRYPTO<\/text><text x=\"657\"  y=\"373\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">327\u00b7320<\/text><\/g>\n<g id=\"cwe-CONFIG\"><circle cx=\"618\"  cy=\"504\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"618\"  y=\"501\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">CONFIG<\/text><text x=\"618\"  y=\"511\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">16\u00b7276<\/text><\/g>\n<g id=\"cwe-CONC\"  ><circle cx=\"532\"  cy=\"600\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"532\"  y=\"597\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">RACE<\/text><text x=\"532\"  y=\"607\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">362\u00b7366<\/text><\/g>\n<g id=\"cwe-DOS\"   ><circle cx=\"414\"  cy=\"650\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"414\"  y=\"647\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">DoS<\/text><text x=\"414\"  y=\"657\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">400\u00b7770<\/text><\/g>\n<g id=\"cwe-DESER\" ><circle cx=\"286\"  cy=\"650\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"286\"  y=\"647\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">D\u00c9S\u00c9R.<\/text><text x=\"286\"  y=\"657\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">502\u00b7915<\/text><\/g>\n<g id=\"cwe-SC\"    ><circle cx=\"168\"  cy=\"600\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"168\"  y=\"597\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">SUPPLY<\/text><text x=\"168\"  y=\"607\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">1104\u00b7829<\/text><\/g>\n<g id=\"cwe-INFO\"  ><circle cx=\"82\"   cy=\"504\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"82\"   y=\"501\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">INFO<\/text><text x=\"82\"   y=\"511\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">918\u00b7200<\/text><\/g>\n<g id=\"cwe-SIDE\"  ><circle cx=\"43\"   cy=\"366\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"43\"   y=\"363\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">SIDE-CH<\/text><text x=\"43\"   y=\"373\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">208\u00b7385<\/text><\/g>\n<g id=\"cwe-LOG\"   ><circle cx=\"56\"   cy=\"244\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"56\"   y=\"241\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">LOGIQUE<\/text><text x=\"56\"   y=\"251\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">840\u00b7841<\/text><\/g>\n<g id=\"cwe-AI\"    ><circle cx=\"121\"  cy=\"141\" r=\"22\" fill=\"#fff0ec\" stroke=\"#ef4444\" stroke-width=\"2\"\/><text x=\"121\"  y=\"138\" text-anchor=\"middle\" font-size=\"6.5\" fill=\"#7B2800\" font-weight=\"bold\">IA\u00b7ADV.<\/text><text x=\"121\"  y=\"148\" text-anchor=\"middle\" font-size=\"4.5\" fill=\"#993C1D\">20\u00b7345<\/text><\/g>\n<g id=\"cwe-ZD\">\n  <circle cx=\"224\" cy=\"68\" r=\"24\" fill=\"#ffe8e8\" stroke=\"#dc2626\" stroke-width=\"3\"\/>\n  <circle cx=\"224\" cy=\"68\" r=\"24\" fill=\"none\" stroke=\"#dc2626\" stroke-width=\"1.5\" opacity=\".4\">\n    <animate attributeName=\"r\" from=\"24\" to=\"40\" dur=\"1.3s\" repeatCount=\"indefinite\"\/>\n    <animate attributeName=\"opacity\" from=\".4\" to=\"0\" dur=\"1.3s\" repeatCount=\"indefinite\"\/>\n  <\/circle>\n  <text x=\"224\" y=\"65\" text-anchor=\"middle\" font-size=\"7\" fill=\"#7B0000\" font-weight=\"bold\">0-DAY<\/text>\n  <text x=\"224\" y=\"75\" text-anchor=\"middle\" font-size=\"5.5\" fill=\"#993C1D\">CVE: ???<\/text>\n<\/g>\n \n<!-- COUCHE ANIMATION -->\n<g id=\"anim-g\"><\/g>\n<\/svg>\n \n<div class=\"atk-card\" id=\"atk-card\">\n  <span class=\"atk-icon\" id=\"atk-icon\">\u23f3<\/span>\n  <div>\n    <div class=\"atk-name\" id=\"atk-name\" style=\"color:#6b6966\">En attente\u2026<\/div>\n    <div class=\"atk-sub\"  id=\"atk-sub\">Simulation automatique active<\/div>\n  <\/div>\n  <div class=\"atk-right\">\n    <div class=\"atk-lat\" id=\"atk-lat\" style=\"color:#6b6966\">\u2014<\/div>\n    <div class=\"atk-lay\" id=\"atk-lay\">\u2014<\/div>\n  <\/div>\n<\/div>\n \n<div class=\"log-wrap\" id=\"log\">\n  <div class=\"ll\"><span class=\"lt\">--:--.---<\/span><span class=\"lok\">[ OK ]<\/span><span class=\"lm\">TCB seL4 EAL7 inviolable \u2014 <span class=\"lip\">T1..T8<\/span> \u2014 421 ns \u2014 les attaques s'arr\u00eatent en orbite<\/span><\/div>\n  <div class=\"ll\"><span class=\"lt\">--:--.---<\/span><span class=\"lok\">[ OK ]<\/span><span class=\"lm\">WALL-DOME\u2122 orbite r=220 \u2014 1\u00e8re ligne \u2014 <span class=\"lip\">15\/15 CWE<\/span> couverts<\/span><\/div>\n  <div class=\"ll\"><span class=\"lt\">--:--.---<\/span><span class=\"lok\">[ OK ]<\/span><span class=\"lm\">EX ANTE actif \u2014 preuves HOL remontantes \u2014 <span class=\"lip\">0 CVE requis<\/span><\/span><\/div>\n<\/div>\n \n<div class=\"legend\">\n  <div class=\"leg\"><span class=\"leg-dot\" style=\"border-color:#ef4444;background:#fff0ec\"><\/span>CWE \/ Zero-Day \u2014 orbite r=308<\/div>\n  <div class=\"leg\"><span class=\"leg-dot\" style=\"border-color:#D97706;background:#fffbe8\"><\/span>WALL-DOME\u2122 \u2014 orbite r=220 \u2014 1\u00e8re ligne<\/div>\n  <div class=\"leg\"><span class=\"leg-dot\" style=\"border-color:#10b981;background:#e8f5ee\"><\/span>Modules L1b \u2014 orbite r=140<\/div>\n  <div class=\"leg\"><span class=\"leg-dot\" style=\"border-color:#818cf8;background:#eeedfe\"><\/span>TCB seL4 \u2014 r=67 \u2014 inviolable<\/div>\n<\/div>\n \n<script>\nconst NS='http:\/\/www.w3.org\/2000\/svg', CX=350, CY=350;\nconst R_CWE=308, R_WALL=220, R_L1B=140, R_TCB=72;\n \n\/\/ Positions CWE\nconst CWE_IDS=['INJECT','MEM','AUTH','ACCES','CRYPTO','CONFIG','CONC','DOS','DESER','SC','INFO','SIDE','LOG','AI','ZD'];\nconst CWE_POS={};\nCWE_IDS.forEach((id,i)=>{ const a=(-90+i*24)*Math.PI\/180; CWE_POS[id]=[CX+R_CWE*Math.cos(a),CY+R_CWE*Math.sin(a)]; });\n \n\/\/ Point d'impact sur un anneau cible\nfunction onRing(cx,cy,r){ const dx=CX-cx,dy=CY-cy,d=Math.hypot(dx,dy); return [cx+dx*(1-r\/d),cy+dy*(1-r\/d)]; }\n \n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ CATALOGUES\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst NORMAL=[\n  {cwe:'INJECT',icon:'\ud83d\udc89',name:'Injection SQL\/OS',sub:'CWE-089\u00b7078 \u00b7 bloqu\u00e9 \u00e0 l\\'orbite WALL-DOME',\n   blocked:'WALL-DOME\u2122',mods:['walld'],lat:'~2,1 \u00b5s',layer:'L1b',color:'#f97316',stopAt:'WALL',\n   steps:[{d:0,t:'warn',m:'WALL-DOME\u2122',l:'CWE-089 SQL d\u00e9tect\u00e9 en orbite L1b \u2014 payload analys\u00e9'},\n          {d:380,t:'warn',m:'AEGIS\u2122',l:'Pattern injection confirm\u00e9 \u2014 WP goals actifs'},\n          {d:750,t:'ok',m:'WALL-DOME\u2122',l:'Bloqu\u00e9 orbite r=220 \u00b7 h\u00e9ritage seL4 \u2191 \u00b7 2,1 \u00b5s'}]},\n  {cwe:'DOS',icon:'\ud83c\udf0a',name:'DoS flood adaptatif',sub:'CWE-400\u00b7770 \u00b7 bloqu\u00e9 \u00e0 l\\'orbite L1b M09-CB',\n   blocked:'M09 CircuitBreaker',mods:['m09'],lat:'~2,1 \u00b5s',layer:'L1b',color:'#06b6d4',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'M09-CB',l:'CWE-400 saturation \u2014 circuit ouvert \u00b7 9,0 ns mean'},\n          {d:380,t:'warn',m:'AEGIS\u2122',l:'Playbook d\u00e9fensif \u2014 isolation flux suspect'},\n          {d:750,t:'ok',m:'M09-CB',l:'DoS neutralis\u00e9 \u00b7 orbite r=140 \u00b7 CFVL 100\/100'}]},\n  {cwe:'AUTH',icon:'\ud83d\udd11',name:'Brute-force SSH',sub:'CWE-307\u00b7287 \u00b7 SENTINEL orbite L1b',\n   blocked:'SENTINEL + M09-CB',mods:['sent','m09'],lat:'~2,1 \u00b5s',layer:'L1b',color:'#f59e0b',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'SENTINEL',l:'CWE-307 \u2014 8 tentatives\/3s \u00b7 anomalie en orbite'},\n          {d:380,t:'warn',m:'M09-CB',l:'Rate limiting activ\u00e9 \u00b7 9,0 ns kernel'},\n          {d:750,t:'ok',m:'SENTINEL',l:'IP bannie \u00b7 orbite r=140 \u00b7 alerte PRISM'}]},\n  {cwe:'SC',icon:'\ud83d\udd17',name:'Supply Chain compromise',sub:'CWE-1104\u00b7829 \u00b7 ATLAS\u2122 L1b',\n   blocked:'ATLAS\u2122 + OMEGA',mods:['atlas'],lat:'~2,1 \u00b5s',layer:'L1b',color:'#84cc16',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'ATLAS\u2122',l:'CWE-1104 \u2014 composant non-v\u00e9rifi\u00e9 \u00b7 audit CFVL'},\n          {d:380,t:'warn',m:'OMEGA',l:'PolicyForge \u2014 propagation bloqu\u00e9e en orbite'},\n          {d:750,t:'ok',m:'ATLAS\u2122',l:'Supply chain bloqu\u00e9e \u00b7 orbite r=140 \u00b7 97\/100'}]},\n];\n \nconst ZERODAY=[\n  {cwe:'ZD',icon:'\ud83d\udc80',name:'Zero-Day kernel (CVE inconnu)',sub:'0-DAY \u2014 p\u00e9n\u00e8tre jusqu\\'\u00e0 l\\'anneau L1b \u00b7 TCB r\u00e9pond sans CVE',\n   blocked:'seL4 EAL7 ex ante',mods:['m00'],lat:'421 ns',layer:'TCB\u2192L1b',color:'#dc2626',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'seL4 EAL7',l:'Zero-Day \u2014 aucun CVE \u00b7 franchit WALL-DOME \u00b7 T1\/T2 actif'},\n          {d:330,t:'warn',m:'M00 RoT',l:'Capability integrity \u2014 escalade impossible \u00b7 2,5 ns'},\n          {d:660,t:'ok',m:'seL4 EAL7',l:'Arr\u00eat\u00e9 orbite L1b \u00b7 classe prouv\u00e9e HOL \u00b7 421 ns \u00b7 0 CVE'}]},\n  {cwe:'MEM',icon:'\ud83d\udcbe',name:'Buffer Overflow 0-day variant',sub:'CWE-119 inconnu \u2014 classe m\u00e9moire T1\/T6',\n   blocked:'seL4 EAL7',mods:['m00'],lat:'421 ns',layer:'TCB\u2192L1b',color:'#b91c1c',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'seL4 EAL7',l:'CWE-119 variant 0-day \u2014 T1\/T6 isolation kernel'},\n          {d:330,t:'warn',m:'M00 RoT',l:'Capability integrity \u00b7 preuve HOL T1\/T6'},\n          {d:660,t:'ok',m:'seL4 EAL7',l:'Classe m\u00e9moire couverte \u00b7 421 ns \u00b7 variante = inexistante'}]},\n  {cwe:'CONC',icon:'\ud83d\udd04',name:'Race Condition 0-day TOCTOU',sub:'CWE-362 futur \u00b7 T3 IPC atomique',\n   blocked:'seL4 EAL7 T3',mods:['prism'],lat:'421 ns',layer:'TCB\u2192L1b',color:'#7c3aed',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'seL4 EAL7',l:'Race 0-day \u2014 T3 IPC atomique d\u00e9tect\u00e9 \u00b7 421 ns'},\n          {d:330,t:'warn',m:'PRISM',l:'FSM \u2014 transition etat ill\u00e9gitime \u00b7 9,3 ns'},\n          {d:660,t:'ok',m:'seL4 EAL7',l:'Race impossible par construction \u00b7 T3 \u00b7 421 ns'}]},\n];\n \nconst EXANTE=[\n  {cwe:'SIDE',icon:'\u23f1',name:'Side-Channel timing (ex ante)',sub:'CWE-208 \u00b7 TCB \u00e9met la preuve vers l\\'ext\u00e9rieur',\n   blocked:'seL4 EAL7 ex ante',mods:['prism','m00'],lat:'421 ns',layer:'TCB',color:'#0891b2',stopAt:'EXANTE',\n   steps:[{d:0,t:'warn',m:'seL4 EAL7',l:'CWE-208 \u2014 classe timing \u00b7 preuve T3 remonte vers orbite'},\n          {d:300,t:'warn',m:'M00 RoT',l:'Uniformit\u00e9 temporelle kernel \u2014 0 fuite \u00b7 421 ns constant'},\n          {d:600,t:'ok',m:'seL4 EAL7',l:'Side-channel impossible \u00b7 preuve HOL remontante \u00b7 421 ns'}]},\n  {cwe:'INFO',icon:'\ud83d\udce1',name:'Non-interference info flow (ex ante)',sub:'CWE-918 \u00b7 T8 HOL \u2014 la TCB prot\u00e8ge avant contact',\n   blocked:'seL4 T8',mods:['prism'],lat:'421 ns',layer:'TCB',color:'#7c3aed',stopAt:'EXANTE',\n   steps:[{d:0,t:'warn',m:'PRISM',l:'CWE-918 \u2014 T8 non-interference \u00b7 preuve remontante'},\n          {d:300,t:'warn',m:'seL4 EAL7',l:'Isolation information flow \u2014 domaines \u00e9tanches'},\n          {d:600,t:'ok',m:'PRISM',l:'0 octet sorti \u00b7 T8 couvre classe enti\u00e8re \u00b7 421 ns'}]},\n  {cwe:'ACCES',icon:'\u2b06',name:'Escalade privil\u00e8ge (CVE futur)',sub:'CWE-269 classe \u00b7 T2 capability \u2014 bloqu\u00e9 avant CVE assign\u00e9',\n   blocked:'seL4 T2',mods:['m00'],lat:'421 ns',layer:'TCB',color:'#059669',stopAt:'EXANTE',\n   steps:[{d:0,t:'warn',m:'seL4 EAL7',l:'Escalade \u2014 T2 capability \u00b7 preuve remonte vers orbite'},\n          {d:300,t:'warn',m:'M00 RoT',l:'Escalade impossible par construction \u00b7 0 CVE requis'},\n          {d:600,t:'ok',m:'seL4 EAL7',l:'Classe escalade bloqu\u00e9e ex ante \u00b7 T2 HOL \u00b7 421 ns'}]},\n];\n \nconst HYBRID=[\n  {cwe:['INJECT','DOS','MEM','AUTH'],icon:'\ud83e\udd16',\n   name:'APT IA \u2014 4 vecteurs simultan\u00e9s',sub:'Orchestrateur IA \u00b7 <12 ms \u00b7 mutation payload \u00b7 bloqu\u00e9s en orbite',\n   blocked:'WALL-DOME + L1b',mods:['walld','aegis','m09','m00'],lat:'421 ns',layer:'TCB+L1b',color:'#f97316',stopAt:'WALL',\n   steps:[{d:0,t:'warn',m:'seL4 EAL7',l:'APT IA \u2014 4 vecteurs \u00b7 mutation payload \u00b7 <12 ms'},\n          {d:240,t:'warn',m:'WALL-DOME\u2122',l:'Vecteurs 1+2 intercept\u00e9s orbite r=220'},\n          {d:460,t:'warn',m:'M09-CB',l:'Vecteurs 3+4 stopp\u00e9s orbite r=140'},\n          {d:680,t:'ok',m:'TCB',l:'4\/4 bloqu\u00e9s en orbite \u00b7 TCB non touch\u00e9e \u00b7 421 ns'}]},\n  {cwe:['ZD','SC','AI'],icon:'\u26a1',\n   name:'LLM \u2014 Supply chain + Zero-day',sub:'Exploit LLM combin\u00e9 \u00b7 <18 ms \u00b7 bloqu\u00e9 orbite L1b',\n   blocked:'M00 RoT + ATLAS\u2122',mods:['m00','atlas','walld'],lat:'~2,5 ns',layer:'TCB\u2192L1b',color:'#7c3aed',stopAt:'L1B',\n   steps:[{d:0,t:'warn',m:'ATLAS\u2122',l:'LLM exploit \u00b7 supply + 0-day \u00b7 <18 ms \u00b7 analyse'},\n          {d:260,t:'warn',m:'M00 RoT',l:'Boot attestation \u2014 composant non-certifi\u00e9 bloqu\u00e9'},\n          {d:500,t:'warn',m:'seL4 EAL7',l:'Zero-day kernel \u2014 classe T1\/T2 \u00b7 ex ante'},\n          {d:720,t:'ok',m:'TCB',l:'Exploit LLM arr\u00eat\u00e9 orbite L1b \u00b7 TCB inviol\u00e9e'}]},\n  {cwe:['DOS','CONC','CRYPTO','CONFIG'],icon:'\ud83c\udf0a',\n   name:'DDoS adaptatif IA \u2014 1,2M req\/s',sub:'Pattern-switch <5 ms \u00b7 botnet IA \u00b7 stopp\u00e9 WALL-DOME',\n   blocked:'M09-CB + WALL-DOME',mods:['m09','aegis','walld'],lat:'~2,1 \u00b5s',layer:'L1b',color:'#0891b2',stopAt:'WALL',\n   steps:[{d:0,t:'warn',m:'M09-CB',l:'DDoS 1,2M req\/s \u00b7 <5 ms switch \u00b7 circuit ouvert'},\n          {d:240,t:'warn',m:'AEGIS\u2122',l:'Adaptation d\u00e9fensive \u2014 614\/650 WP goals'},\n          {d:460,t:'warn',m:'WALL-DOME\u2122',l:'Vecteurs flood stopp\u00e9s orbite r=220'},\n          {d:680,t:'ok',m:'M09-CB',l:'DDoS neutralis\u00e9 \u00b7 orbite r=220\/140 \u00b7 TCB inviol\u00e9e'}]},\n];\n \n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ UTILITAIRES SVG\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction svgEl(tag,attrs,html=''){\n  const e=document.createElementNS(NS,tag);\n  Object.entries(attrs).forEach(([k,v])=>e.setAttribute(k,v));\n  if(html) e.innerHTML=html;\n  return e;\n}\nfunction clearAnim(){ document.getElementById('anim-g').innerHTML=''; }\nfunction ts(){ const n=new Date(); return `${String(n.getHours()).padStart(2,'0')}:${String(n.getMinutes()).padStart(2,'0')}.${String(n.getMilliseconds()).padStart(3,'0')}`; }\nfunction addLog(t,m,msg){\n  const cls=t==='ok'?'lok':t==='warn'?'lwn':'lcr';\n  const lbl=t==='ok'?'[ OK ]':t==='warn'?'[ WARN ]':'[ CRIT ]';\n  const d=document.createElement('div'); d.className='ll ll-new';\n  d.innerHTML=`<span class=\"lt\">${ts()}<\/span><span class=\"${cls}\">${lbl}<\/span><span class=\"lm\"><span class=\"lip\">${m}<\/span> \u2014 ${msg}<\/span>`;\n  const el=document.getElementById('log');\n  el.appendChild(d);\n  while(el.children.length>35) el.removeChild(el.firstChild);\n  el.scrollTop=el.scrollHeight;\n}\n \nfunction flashMod(id,color){\n  const g=document.getElementById('mod-'+id); if(!g) return;\n  const c=g.querySelector('circle'); if(!c) return;\n  c.style.cssText=`fill:${color}28;stroke:${color};stroke-width:4;filter:drop-shadow(0 0 9px ${color})`;\n  setTimeout(()=>c.style.cssText='',1200);\n}\n\/\/ Flash TCB : seulement une lueur interne, pas de rings vers l'ext\u00e9rieur\nfunction flashTCBinner(color){\n  const f1=document.getElementById('tf1'), f2=document.getElementById('tf2');\n  if(f1){f1.setAttribute('stroke',color);f1.style.opacity='1';setTimeout(()=>f1.style.opacity='0',160);}\n  if(f2){f2.setAttribute('stroke',color);f2.style.opacity='1';setTimeout(()=>f2.style.opacity='0',280);}\n}\nfunction flashWall(color){\n  const w=document.getElementById('wall-ring'); if(!w) return;\n  w.setAttribute('stroke',color);\n  w.style.cssText=`opacity:.9;stroke-width:6;filter:drop-shadow(0 0 14px ${color})`;\n  setTimeout(()=>{w.setAttribute('stroke','#D97706');w.style.cssText='opacity:.28;stroke-width:3.5';},600);\n}\n \nfunction activateExAnte(){\n  const arc=document.getElementById('arc-exante');\n  const txt=document.getElementById('txt-exante');\n  const bg=document.getElementById('bg-exante');\n  if(arc){arc.style.opacity='1';arc.style.strokeWidth='7';arc.setAttribute('stroke','#065F46');arc.style.filter='drop-shadow(0 0 10px #10b981)';}\n  if(txt){txt.style.opacity='1';txt.setAttribute('fill','#022C22');txt.style.fontSize='8.5px';}\n  if(bg){bg.style.opacity='.12';}\n  \/\/ Pulse sur l'arc\n  const g=document.getElementById('anim-g');\n  const pth=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','path');\n  pth.setAttribute('d','M 96 172 A 238 238 0 0 0 96 528');\n  pth.setAttribute('fill','none');pth.setAttribute('stroke','#10b981');\n  pth.setAttribute('stroke-width','10');pth.setAttribute('opacity','.8');\n  pth.innerHTML=`<animate attributeName=\"opacity\" from=\".8\" to=\"0\" dur=\"0.6s\" repeatCount=\"3\"\/>\n                 <animate attributeName=\"stroke-width\" from=\"10\" to=\"3\" dur=\"0.6s\" repeatCount=\"3\"\/>`;\n  g.appendChild(pth);\n  setTimeout(()=>{\n    if(arc){arc.style.opacity='.5';arc.style.strokeWidth='4';arc.style.filter='';arc.setAttribute('stroke','#065F46');}\n    if(txt){txt.style.opacity='.8';txt.setAttribute('fill','#065F46');txt.style.fontSize='';}\n    if(bg){bg.style.opacity='0';}\n    pth.remove();\n  },1800);\n}\n \nfunction activateM24(){\n  const arc=document.getElementById('arc-m24');\n  const txt=document.getElementById('txt-m24');\n  const bg=document.getElementById('bg-m24');\n  if(arc){arc.style.opacity='1';arc.style.strokeWidth='7';arc.setAttribute('stroke','#534AB7');arc.style.filter='drop-shadow(0 0 10px #818cf8)';}\n  if(txt){txt.style.opacity='1';txt.setAttribute('fill','#1e1b4b');txt.style.fontSize='8.5px';}\n  if(bg){bg.style.opacity='.1';}\n  const g=document.getElementById('anim-g');\n  const pth=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','path');\n  pth.setAttribute('d','M 604 172 A 238 238 0 0 1 604 528');\n  pth.setAttribute('fill','none');pth.setAttribute('stroke','#818cf8');\n  pth.setAttribute('stroke-width','10');pth.setAttribute('opacity','.8');\n  pth.innerHTML=`<animate attributeName=\"opacity\" from=\".8\" to=\"0\" dur=\"0.6s\" repeatCount=\"3\"\/>\n                 <animate attributeName=\"stroke-width\" from=\"10\" to=\"3\" dur=\"0.6s\" repeatCount=\"3\"\/>`;\n  g.appendChild(pth);\n  setTimeout(()=>{\n    if(arc){arc.style.opacity='.5';arc.style.strokeWidth='4';arc.style.filter='';arc.setAttribute('stroke','#4338ca');}\n    if(txt){txt.style.opacity='.9';txt.setAttribute('fill','#3C3489');txt.style.fontSize='';}\n    if(bg){bg.style.opacity='0';}\n    pth.remove();\n  },1800);\n}\nfunction pulseCWE(id,color){\n  const g=document.getElementById('cwe-'+id); if(!g) return;\n  const c=g.querySelector('circle:first-child'); if(!c) return;\n  c.style.cssText=`stroke:${color};stroke-width:3.5;fill:${color}25;filter:drop-shadow(0 0 10px ${color})`;\n  setTimeout(()=>c.style.cssText='',1600);\n}\n \n\/\/ Projectile : de src vers dst (dst = point d'impact sur un anneau)\nfunction shoot(x1,y1,x2,y2,color,dur,uid){\n  const g=document.getElementById('anim-g');\n  const dist=Math.hypot(x2-x1,y2-y1);\n  const pid=`pt-${uid}`;\n  \/\/ Ligne\n  g.appendChild(svgEl('line',{x1,y1,x2,y2,stroke:color,'stroke-width':'2','stroke-dasharray':'9 4',opacity:'.65'},\n    `<animate attributeName=\"stroke-dashoffset\" from=\"${dist}\" to=\"0\" dur=\"${dur}ms\" repeatCount=\"indefinite\"\/>`));\n  \/\/ Chemin\n  const ph=svgEl('path',{id:pid,d:`M${x1},${y1} L${x2},${y2}`,fill:'none',stroke:'none'});\n  g.appendChild(ph);\n  \/\/ Balle\n  g.appendChild(svgEl('circle',{r:'6.5',fill:color,opacity:'.95'},\n    `<animateMotion dur=\"${dur}ms\" repeatCount=\"indefinite\" calcMode=\"linear\"><mpath href=\"#${pid}\"\/><\/animateMotion>`));\n  \/\/ Triple pulse source\n  [0,340,680].forEach((b,i)=>{\n    g.appendChild(svgEl('circle',{cx:x1,cy:y1,r:'11',fill:'none',stroke:color,'stroke-width':String(2.5-i*.7),opacity:String(.65-i*.2)},\n      `<animate attributeName=\"r\" from=\"11\" to=\"${26+i*7}\" dur=\"1s\" begin=\"${b}ms\" repeatCount=\"indefinite\"\/>\n       <animate attributeName=\"opacity\" from=\"${.65-i*.2}\" to=\"0\" dur=\"1s\" begin=\"${b}ms\" repeatCount=\"indefinite\"\/>`));\n  });\n}\n \n\/\/ Impact sur l'anneau (explosion + \u2298 qui reste sur l'anneau, PAS au centre)\nfunction impactAt(x,y,color,label){\n  const g=document.getElementById('anim-g');\n  \/\/ Rings d'explosion sur place\n  [0,250,500].forEach(delay=>{\n    const r=svgEl('circle',{cx:x,cy:y,r:'8',fill:'none',stroke:color,'stroke-width':'3',opacity:'.9'},\n      `<animate attributeName=\"r\" from=\"8\" to=\"36\" dur=\"0.5s\" begin=\"${delay}ms\" repeatCount=\"1\"\/>\n       <animate attributeName=\"opacity\" from=\".9\" to=\"0\" dur=\"0.5s\" begin=\"${delay}ms\" repeatCount=\"1\"\/>`);\n    g.appendChild(r);\n  });\n  \/\/ \u2298 centr\u00e9 sur le point d'impact (sur l'anneau)\n  const t=svgEl('text',{x,y:String(Number(y)+10),fill:color,'font-size':'26',\n    'text-anchor':'middle','font-weight':'bold',opacity:'1'});\n  t.textContent='\u2298';\n  t.style.cssText='transition:opacity .5s';\n  setTimeout(()=>t.style.opacity='0',1300);\n  g.appendChild(t);\n  if(label){\n    const tl=svgEl('text',{x,y:String(Number(y)-13),fill:color,'font-size':'6.5',\n      'text-anchor':'middle','font-family':'monospace','letter-spacing':'1.5',opacity:'.85'});\n    tl.textContent=label;\n    tl.style.cssText='transition:opacity .5s';\n    setTimeout(()=>tl.style.opacity='0',1300);\n    g.appendChild(tl);\n  }\n}\n \n\/\/ Ondes EX ANTE : sortent du TCB vers l'ext\u00e9rieur et \"repoussent\" le projectile\nfunction exAnteWaves(targetX,targetY,color){\n  const g=document.getElementById('anim-g');\n  \/\/ Ond\u00e9 concentrique depuis TCB vers l'ext\u00e9rieur\n  [0,220,440].forEach(delay=>{\n    const w=svgEl('circle',{cx:'350',cy:'350',r:'67',fill:'none',stroke:'#10b981','stroke-width':'2.5',opacity:'.75'},\n      `<animate attributeName=\"r\" from=\"67\" to=\"295\" dur=\"0.6s\" begin=\"${delay}ms\" repeatCount=\"1\"\/>\n       <animate attributeName=\"opacity\" from=\".75\" to=\"0\" dur=\"0.6s\" begin=\"${delay}ms\" repeatCount=\"1\"\/>`);\n    g.appendChild(w);\n  });\n  \/\/ Texte \u2131 EX ANTE au centre (reste visible)\n  const t=svgEl('text',{x:'350',y:'354',fill:'#10b981','font-size':'11','text-anchor':'middle','font-weight':'bold',opacity:'0'});\n  t.textContent='\u2131 EX ANTE';\n  t.style.cssText='transition:opacity .25s';\n  g.appendChild(t);\n  setTimeout(()=>t.style.opacity='1', 180);\n  setTimeout(()=>{t.style.transition='opacity .6s';t.style.opacity='0';}, 1000);\n  \/\/ Projectile se fige et disparait au milieu du trajet\n  flashTCBinner(color);\n  \/\/ \u2298 appara\u00eet \u00e0 mi-chemin entre TCB et CWE (l'onde intercepte)\n  const midX=(CX+targetX)\/2, midY=(CY+targetY)\/2;\n  setTimeout(()=>impactAt(midX,midY,color,'EX ANTE'), 380);\n}\n \n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ MOTEUR\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction runAtk(atk){\n  clearAnim();\n  const cwes=Array.isArray(atk.cwe)?atk.cwe:[atk.cwe];\n  const c=atk.color;\n  const isHybrid=!!atk.hybrid||cwes.length>1;\n  const isExAnte=atk.stopAt==='EXANTE';\n \n  \/\/ UI\n  document.getElementById('atk-icon').textContent=atk.icon;\n  const nm=document.getElementById('atk-name'); nm.textContent=atk.name; nm.style.color=c;\n  document.getElementById('atk-sub').textContent=atk.sub;\n  const latEl=document.getElementById('atk-lat'); latEl.textContent=atk.lat;\n  latEl.style.color=atk.layer.includes('TCB')?'#818cf8':'#10b981';\n  document.getElementById('atk-lay').textContent=atk.blocked+' \u00b7 '+atk.layer;\n  document.getElementById('atk-card').style.borderColor=c+'55';\n  document.getElementById('m-lat').textContent=atk.lat;\n  document.getElementById('m-lat').style.color=atk.layer.includes('TCB')?'#818cf8':'#10b981';\n  document.getElementById('m-layer').textContent=atk.layer;\n \n  \/\/ Pulse CWE sources\n  cwes.forEach(id=>pulseCWE(id,c));\n \n  if(isExAnte){\n    \/\/ Mode EX ANTE : les projectiles partent mais les ondes TCB les repoussent avant l'anneau WALL-DOME\n    cwes.forEach((cid,i)=>{\n      const [cx,cy]=CWE_POS[cid]||[350,42];\n      \/\/ Tir partiel jusqu'\u00e0 mi-chemin\n      const mx=(CX+cx)\/2, my=(CY+cy)\/2;\n      setTimeout(()=>shoot(cx,cy,mx,my,c,400,`ex-${cid}-${i}`), i*60);\n    });\n    \/\/ Ondes depuis TCB repoussent\n    setTimeout(()=>{\n      activateExAnte();\n      const [cx,cy]=CWE_POS[cwes[0]]||[350,42];\n      exAnteWaves(cx,cy,c);\n      atk.mods.forEach((mid,j)=>setTimeout(()=>flashMod(mid,c),j*100));\n    }, 300);\n \n  } else if(isHybrid){\n    \/\/ Mode HYBRIDE : tous les projectiles simultan\u00e9ment \u2192 stopp\u00e9s sur l'anneau WALL-DOME\n    \/\/ Activer M24 si le sc\u00e9nario implique offline, ex ante si zero-day\n    if(atk.stopAt==='L1B') setTimeout(()=>{ activateExAnte(); activateM24(); }, 100);\n    else setTimeout(()=>activateM24(), 100);\n    cwes.forEach((cid,i)=>{\n      const [cx,cy]=CWE_POS[cid]||[350,42];\n      const [wx,wy]=onRing(cx,cy,R_WALL);\n      setTimeout(()=>shoot(cx,cy,wx,wy,c,480,`hy-${cid}-${i}`),i*90);\n    });\n    setTimeout(()=>{\n      flashWall(c);\n      atk.mods.forEach((mid,j)=>setTimeout(()=>flashMod(mid,c),j*100));\n      \/\/ Pulse doux TCB (sait ce qui se passe mais n'est pas touch\u00e9)\n      flashTCBinner(c);\n    }, 520);\n \n  } else {\n    \/\/ Mode NORMAL \/ ZERO-DAY\n    const [cx,cy]=CWE_POS[cwes[0]]||[350,42];\n    const stopR = atk.stopAt==='WALL'? R_WALL : R_L1B;\n    const [ix,iy]=onRing(cx,cy,stopR);\n \n    \/\/ Phase 1 : CWE \u2192 point d'impact sur l'anneau cible (pas plus loin)\n    shoot(cx,cy,ix,iy,c,520,'p1');\n \n    if(atk.stopAt==='L1B'){\n      \/\/ Zero-day franchit WALL-DOME mais s'arr\u00eate \u00e0 L1b\n      activateM24();\n      const [wx,wy]=onRing(cx,cy,R_WALL);\n      \/\/ Petit flash WALL-DOME pour montrer qu'il est pass\u00e9\n      setTimeout(()=>{\n        const w=document.getElementById('wall-ring');\n        if(w){w.setAttribute('stroke',c);w.style.opacity='.45';setTimeout(()=>{w.setAttribute('stroke','#D97706');w.style.opacity='.28';},350);}\n      }, 280);\n    }\n \n    \/\/ Flash du module protecteur\n    atk.mods.forEach((mid,j)=>setTimeout(()=>flashMod(mid,c),380+j*100));\n    \/\/ Activer les bandeaux selon le type\n    if(atk.stopAt==='L1B') setTimeout(()=>activateExAnte(),200);\n    \/\/ TCB : lueur douce int\u00e9rieure (consciente mais non touch\u00e9e)\n    setTimeout(()=>flashTCBinner(c),420);\n    if(atk.stopAt==='WALL') setTimeout(()=>flashWall(c),400);\n  }\n \n  \/\/ Logs\n  atk.steps.forEach(s=>setTimeout(()=>addLog(s.t,s.m,s.l),s.d));\n \n  \/\/ Impact visuel\n  const impactDelay=isExAnte?600:isHybrid?600:520;\n  setTimeout(()=>{\n    if(isExAnte) return; \/\/ g\u00e9r\u00e9 dans exAnteWaves\n    if(isHybrid){\n      clearAnim();\n      cwes.slice(0,3).forEach((cid,i)=>{\n        const [cx,cy]=CWE_POS[cid]||[350,42];\n        const [wx,wy]=onRing(cx,cy,R_WALL);\n        setTimeout(()=>impactAt(wx,wy,c,''), i*90);\n      });\n    } else {\n      clearAnim();\n      const [cx,cy]=CWE_POS[Array.isArray(atk.cwe)?atk.cwe[0]:atk.cwe]||[350,42];\n      const stopR=atk.stopAt==='WALL'?R_WALL:R_L1B;\n      const [ix,iy]=onRing(cx,cy,stopR);\n      const label=atk.stopAt==='L1B'&&atk.layer.includes('TCB')?'0-DAY':'BLOQU\u00c9';\n      impactAt(ix,iy,c,label);\n      if(atk.stopAt==='WALL') flashWall(c);\n    }\n    blocked++;\n    const bel=document.getElementById('m-blocked');\n    bel.textContent=blocked; bel.style.color=c;\n    setTimeout(()=>bel.style.color='#10b981',600);\n    pulseCounter();\n  }, impactDelay);\n \n  \/\/ Nettoyage\n  setTimeout(()=>{\n    clearAnim();\n    document.getElementById('atk-card').style.borderColor='#21262d';\n  }, 2000);\n}\n \n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\/\/ CONTR\u00d4LES\n\/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst MODES={normal:NORMAL,zeroday:ZERODAY,exante:EXANTE,hybrid:HYBRID};\nconst MODE_LABELS={normal:'STD',zeroday:'0-DAY',exante:'\u2131 EX ANTE',hybrid:'IA+HUM'};\nconst MODE_COLORS={normal:'#D97706',zeroday:'#ef4444',exante:'#10b981',hybrid:'#818cf8'};\nconst BTN_MAP={normal:'norm',zeroday:'zd',exante:'exante',hybrid:'hybrid'};\nlet mode='normal', autoOn=true, simTimer=null, blocked=0, simIdx=0;\n \nfunction next(){\n  if(!autoOn) return;\n  const arr=MODES[mode];\n  runAtk(arr[simIdx%arr.length]);\n  simIdx++;\n  simTimer=setTimeout(next, mode==='hybrid'?2900:2500);\n}\n \nfunction setMode(m){\n  if(simTimer) clearTimeout(simTimer);\n  mode=m; simIdx=0;\n  \/\/ Mise \u00e0 jour du compteur selon le mode\n  setTimeout(()=>startCounter(m), 50);\n  Object.keys(BTN_MAP).forEach(k=>document.getElementById('btn-'+BTN_MAP[k]).classList.remove('active'));\n  document.getElementById('btn-'+BTN_MAP[m]).classList.add('active');\n  document.getElementById('m-mode').textContent=MODE_LABELS[m];\n  document.getElementById('m-mode').style.color=MODE_COLORS[m];\n  runAtk(MODES[m][0]); simIdx=1;\n  autoOn=true;\n  document.getElementById('btn-auto').classList.add('active');\n  simTimer=setTimeout(next, mode==='hybrid'?2900:2500);\n}\n \nfunction toggleAuto(){\n  const btn=document.getElementById('btn-auto');\n  const dot=document.getElementById('sim-dot');\n  const lbl=document.getElementById('sim-label');\n  if(autoOn){\n    autoOn=false; if(simTimer)clearTimeout(simTimer);\n    btn.classList.remove('active'); btn.textContent='\u23f5 Auto';\n    dot.style.background='#374151'; dot.style.animation='none';\n    lbl.textContent='PAUSE'; lbl.style.color='#4b5563';\n  } else {\n    autoOn=true;\n    btn.classList.add('active');\n    dot.style.background='#10b981'; dot.style.animation='blink 1.2s ease-in-out infinite';\n    lbl.textContent='ACTIF'; lbl.style.color='#10b981';\n    next();\n  }\n}\n \nfunction simReset(){\n  if(simTimer)clearTimeout(simTimer);\n  autoOn=false; simIdx=0; blocked=0; clearAnim();\n  mode='normal';\n  Object.keys(BTN_MAP).forEach(k=>document.getElementById('btn-'+BTN_MAP[k]).classList.remove('active'));\n  document.getElementById('btn-norm').classList.add('active');\n  document.getElementById('m-blocked').textContent='0';\n  document.getElementById('m-mode').textContent='STD'; document.getElementById('m-mode').style.color='#D97706';\n  document.getElementById('m-lat').textContent='\u2014'; document.getElementById('m-layer').textContent='\u2014';\n  document.getElementById('atk-icon').textContent='\u23f3';\n  document.getElementById('atk-name').textContent='R\u00e9initialis\u00e9'; document.getElementById('atk-name').style.color='#6b7280';\n  document.getElementById('atk-sub').textContent='\u2014'; document.getElementById('atk-lat').textContent='\u2014'; document.getElementById('atk-lay').textContent='\u2014';\n  document.getElementById('log').innerHTML='<div class=\"ll\"><span class=\"lt\">--:--.---<\/span><span class=\"lok\">[ OK ]<\/span><span class=\"lm\">Syst\u00e8me r\u00e9initialis\u00e9 \u2014 TCB inviol\u00e9e \u2014 attaques stopp\u00e9es en orbite<\/span><\/div>';\n  tickerCount=0; startCounter('normal');\n  autoOn=true;\n  document.getElementById('btn-auto').classList.add('active');\n  document.getElementById('sim-dot').style.cssText='background:#0F6E56;animation:blink 1.2s ease-in-out infinite';\n  document.getElementById('sim-label').textContent='ACTIF'; document.getElementById('sim-label').style.color='#10b981';\n  setTimeout(next,1000);\n}\n \nsetTimeout(next,1200);\n \n\/\/ \u2500\u2500 COMPTEUR LIVE ATTAQUES\/SECONDE \u2500\u2500\n\/\/ Valeurs r\u00e9elles CFVL ARM64 4 c\u0153urs\nconst RATES = {\n  normal:  { val: 1900000, label: '1,9 M\/s',  color: '#0F6E56', sub: 'Chemin WALL-DOME L1b complet \u00b7 2,1 \u00b5s\/d\u00e9cision \u00b7 4 c\u0153urs' },\n  zeroday: { val: 9500000, label: '9,5 M\/s',  color: '#534AB7', sub: 'Chemin seL4 kernel T1..T8 \u00b7 421 ns\/d\u00e9cision \u00b7 4 c\u0153urs' },\n  exante:  { val: 9500000, label: '9,5 M\/s',  color: '#065F46', sub: 'Preuve HOL remontante \u00b7 classe enti\u00e8re \u00b7 0 CVE \u00b7 421 ns' },\n  hybrid:  { val: 1900000, label: '1,9 M\/s',  color: '#7c3aed', sub: 'Multi-vecteurs simultan\u00e9s \u00b7 L1b + seL4 \u00b7 \u00d7100 000 vs APT IA' },\n};\n \nlet ctrVal = 0, ctrTarget = 1900000, ctrTimer = null;\nlet displayVal = 0;\n \nfunction formatCount(n){\n  if(n >= 1000000) return (n\/1000000).toFixed(1).replace('.',',') + ' M';\n  if(n >= 1000)    return (n\/1000).toFixed(0) + ' K';\n  return String(n);\n}\n \nfunction updateCounter(mode){\n  const r = RATES[mode] || RATES['normal'];\n  ctrTarget = r.val;\n  const el = document.getElementById('atk-counter');\n  const sub = document.getElementById('atk-counter-sub');\n  if(el){ el.style.color = r.color; }\n  if(sub){ sub.textContent = r.sub; }\n}\n \n\/\/ Animation : compte jusqu'\u00e0 la valeur cible\nfunction animCounter(){\n  const el = document.getElementById('atk-counter');\n  if(!el) return;\n  const step = Math.ceil(ctrTarget \/ 60);\n  displayVal = Math.min(displayVal + step, ctrTarget);\n  el.textContent = formatCount(displayVal);\n  if(displayVal < ctrTarget) requestAnimationFrame(animCounter);\n}\n \n\/\/ D\u00e9marrer le compteur\nfunction startCounter(newMode){\n  displayVal = 0;\n  updateCounter(newMode);\n  requestAnimationFrame(animCounter);\n}\n \n\/\/ Initialiser\nstartCounter('normal');\n \n\/\/ Pulse du compteur \u00e0 chaque attaque bloqu\u00e9e (appel depuis runAtk)\nfunction pulseCounter(){\n  const el=document.getElementById('atk-counter');\n  if(!el) return;\n  el.style.transform='scale(1.08)';\n  el.style.transition='transform .15s ease';\n  setTimeout(()=>{el.style.transform='scale(1)';},300);\n}\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Menu Cortex ORIGIN\u2122 CORTEX ORIGIN\u2122 AETZU ARROW AI\u2122 Benchmark Architecture Socle critique (TCB) CORTEX ORIGIN\u2122 \u2014 Vue d&rsquo;ensemble Cortex Core\u2122 OMEGA\u2122 \u2014 Gouvernance PRISM\u2122 \u2014 Preuve AEGIS\u2122 \u2014 Ex\u00e9cution FULCRUM\u2122 S\u00e9curit\u00e9 &amp; Confinement SENTINEL\u2122 \u2014 S\u00e9curit\u00e9 active WALL-DOME\u2122 \u2014 Confinement CERB\u00c8RE\u2122 Decision Guard\u2122 CMS CORTEX MORPHIC SHIELD\u2122 \u2197 Interface &amp; Orchestration AVA\u2122 &amp; CPL\u2122 \u2014 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1112","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/pages\/1112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/comments?post=1112"}],"version-history":[{"count":9,"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/pages\/1112\/revisions"}],"predecessor-version":[{"id":1419,"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/pages\/1112\/revisions\/1419"}],"wp:attachment":[{"href":"https:\/\/cortexorigin.com\/index.php\/wp-json\/wp\/v2\/media?parent=1112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}