{"id":11906,"date":"2022-06-27T02:07:50","date_gmt":"2022-06-27T00:07:50","guid":{"rendered":"https:\/\/www.cubro.com\/?page_id=11906"},"modified":"2026-06-18T11:53:59","modified_gmt":"2026-06-18T09:53:59","slug":"deduplication","status":"publish","type":"page","link":"https:\/\/www.cubro.com\/en\/solutions\/deduplication\/","title":{"rendered":"Deduplication"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.cubro.com\/en\/solutions\/packet-slicing-data-masking\/#solution-challenge-anchor\"><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.cubro.com\/en\/solutions\/visibility-sdn-nfv-networks\/#solution-challenge-anchor\"><\/a><\/p>\n\n\n<nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav>\n\n\n\n<div class=\"nv-cv-m wp-block-getwid-section\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-getwid-advanced-heading\"><h1 class=\"wp-block-getwid-advanced-heading__content\">Deduplication<\/h1><\/div>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div class=\"nv-cv-m wp-block-getwid-section hide-on-mobile hide-on-tablet\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-getwid-section\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-columns ticss-3d17cdb7 is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-Z1T9FzN wp-block-lazyblock-linked-box\"><a href=\"#solution-challenge-anchor\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/solutions_challenge.png\" alt=\"Cubro Network Visibility icon of solution - challenge\" \/><p class=\"linked-title\">CHALLENGE<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-yroWB wp-block-lazyblock-linked-box\"><a href=\"#solution-solution-anchor\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/solutions_solution_green.png\" alt=\"Cubro Network Visibility icon of solutions in green\" \/><p class=\"linked-title\">SOLUTION<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-2mRLeJ wp-block-lazyblock-linked-box\"><a href=\"#solution-benefits-anchor\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/solutions_benefit.png\" alt=\"Cubro Network Visibility icon of solution - benefit\" \/><p class=\"linked-title\">BENEFITS<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-PVYti wp-block-lazyblock-linked-box\"><a href=\"#solution-products-in-it-anchor\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/solution_prod-in-solution.png\" alt=\"Cubro Network Visibility icon of products in solution\" \/><p class=\"linked-title\">PRODUCTS<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-ynlPy wp-block-lazyblock-linked-box\"><a href=\"#solution-resources-anchor\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/solutions_additional-resources.png\" alt=\"Cubro Network Visibility icon for additional resources\" \/><p class=\"linked-title\">RESOURCES<\/p><\/div><\/div><\/a><\/div><\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div id=\"solution-challenge-anchor\" class=\"nv-cv-d nv-cv-m wp-block-getwid-section alignfull\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-columns are-vertically-aligned-center solution-highlight-box is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center ticss-88e99919 is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<div class=\"wp-block-getwid-advanced-heading\"><h2 class=\"wp-block-getwid-advanced-heading__content\">Improving Performance and Extending Tool Lifespan<\/h2><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">Tapping multiple points across a network can result in the same packet being copied several times, particularly with East\/West traffic and traffic from SPAN ports. This can negatively affect the performance of various tools as they not only need to process the same traffic multiple times, but in many cases further expend processing resources performing deduplication themselves. In instances where packet data is being recording to storage or a ring buffer, duplicate packets simply consume space without additional benefit. In some cases, the duplicate packets could even cause false positives or skew reporting.<\/p>\n<\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div id=\"solution-solution-anchor\" class=\"nv-cv-d nv-cv-m wp-block-getwid-section alignfull\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<h2 class=\"wp-block-heading\">Advanced Deduplication with Advanced Network Packet Broker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cubro provides advanced, hardware-driven deduplication options tailored to user-selectable parameters, ensuring duplicate packets are eliminated before traffic is forwarded to your monitoring and security tools. This gives enterprise customers the flexibility to scale port density and bandwidth without over-provisioning budgets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By offloading this resource-intensive task at the packet broker level, you reclaim critical processing power on downstream tools, allowing them to operate at peak efficiency.<\/p>\n\n\n\n<div class=\"wp-block-getwid-advanced-heading\"><h3 class=\"wp-block-getwid-advanced-heading__content\">High-Performance Packet Deduplication<\/h3><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Our advanced Network Packet Brokers (NPBs) deliver line-rate deduplication across high-speed 1\/10\/25\/40\/100Gbps links. This powerful feature eliminates redundant data streams at the ingress stage, protecting analytics, forensics, and monitoring equipment from severe traffic overloads.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">How the Deduplication Engine Works<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Full-Packet Inspection:<\/strong> When the deduplication function is enabled, the packet broker calculates a highly accurate cryptographic checksum (hash-key) utilizing the entire network packet.<\/li>\n\n\n\n<li><strong>Zero False Positives:<\/strong> Evaluating every single bit ensures the resulting hash represents the absolute maximum uniqueness of each packet. This prevents distinct packets that vary by only a single payload bit or deep header field from being erroneously discarded &#8211; a common issue with algorithms that only inspect a subset of the data.<\/li>\n\n\n\n<li><strong>Line-Rate MD5 Hashing:<\/strong> The underlying hardware architecture generates a precise 16-byte MD5 hash-key for every single packet passing through the system.<\/li>\n\n\n\n<li><strong>Stateful Memory Verification:<\/strong> These hash-keys are stored dynamically in high-speed onboard memory. Every incoming packet is checked against the active memory cache in real time.<\/li>\n\n\n\n<li><strong>Intelligent Drop Logic:<\/strong> If an arriving packet\u2019s hash matches an existing record within your user-defined time window, the duplicate packet is instantly dropped. Only unique traffic is permitted to traverse the output ports.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-gallery aligncenter has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication.png\"><img decoding=\"async\" width=\"1242\" height=\"1280\" data-id=\"15118\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication-1242x1280.png\" alt=\"\" class=\"wp-image-15118\" srcset=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication-1242x1280.png 1242w, https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication-466x480.png 466w, https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication-233x240.png 233w, https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication-768x791.png 768w, https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication-1491x1536.png 1491w, https:\/\/www.cubro.com\/en\/wp-content\/uploads\/graphics_solutions_deduplication.png 1942w\" sizes=\"(max-width: 1242px) 100vw, 1242px\" \/><\/a><\/figure>\n<\/figure>\n<\/div>\n<\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>The Result:<\/strong> Your monitoring fabric receives clean, deduplicated, and highly optimized traffic streams &#8211; maximizing tool ROI, lowering data ingestion costs, and preventing false-positive analysis errors.<\/p>\n<\/blockquote>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div id=\"solution-benefits-anchor\" class=\"nv-cv-d nv-cv-m wp-block-getwid-section alignfull\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<h2 class=\"wp-block-heading\">Benefits of Cubro Deduplication Solution<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Improved efficiency of monitoring and analytic tools.&nbsp;<\/li>\n\n\n\n<li>Maintain accuracy of tool reporting&nbsp;<\/li>\n\n\n\n<li>Offload function from tools to conserve processing resources<\/li>\n<\/ul>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div class=\"nv-cv-d nv-cv-m wp-block-getwid-section alignfull\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-getwid-advanced-heading\"><h2 class=\"wp-block-getwid-advanced-heading__content\">Network Visibility &amp; Tool Cost Calculator<\/h2><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Calculate how Cubro Network Packet Brokers eliminate duplicate ingress traffic, reduce downstream tool load, and lower your annual monitoring spend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maintaining comprehensive network visibility across high-throughput enterprise and telco environments is essential, but scaling it is increasingly expensive. As core network links upgrade from 10G to 400G, aggregating traffic from multiple TAPs and SPAN ports inevitably introduces packet replication. When these duplicate packets reach your downstream security and performance monitoring tools, those systems waste processing cycles analyzing the same data multiple times. This forced over-provisioning means you are paying for excess tool capacity and licenses just to process redundant traffic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cubro Network Packet Brokers solve this at the ingress layer using hardware-accelerated, line-rate deduplication. By removing duplicate packets, stripping unnecessary protocol headers, and slicing irrelevant payloads before delivery, Cubro outputs a highly optimized egress stream directly to your security and monitoring stack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Use the calculator below to input your aggregate ingress bandwidth, estimate your current packet duplication rate, and see exactly how much tool capacity and budget you can recover.<\/p>\n\n\n\n<!-- ============================================================\n     Cubro NPB Estimator - gescopte Inline-Variante fuer WordPress\n     Alles liegt unter #cubro-npb. Kein Style\/JS leakt auf die Seite.\n     Einfach diesen kompletten Block in einen \"Custom HTML\"-Block einfuegen.\n     ============================================================ -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Open+Sans:wght@400;600;700&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n#cubro-npb {\n  \/* CSS-Variablen liegen jetzt am Container statt an :root -> sie vererben nur nach innen *\/\n  --bg-primary: #0a0e17;\n  --bg-panel:   #0f1524;\n  --bg-card:    #141927;\n  --bg-card2:   #1a2035;\n  --border:     #334155;\n  --border-accent: #0ea5e9;\n  --cyan:       #00d4ff;\n  --cyan-dim:   #38bdf8;\n  --cyan-glow:  rgba(0,212,255,0.18);\n  --green:      #34d399;\n  --amber:      #fbbf24;\n  --text-primary:   #f1f5f9;\n  --text-secondary: #94a3b8;\n  --text-muted:     #64748b;\n  --red:        #fb7185;\n  --font: 'Open Sans', 'Segoe UI', system-ui, sans-serif;\n  --font-mono: 'Courier New', 'Lucida Console', monospace;\n\n  \/* frueher auf html,body -> jetzt nur am Container *\/\n  box-sizing: border-box;\n  background: var(--bg-primary);\n  color: var(--text-primary);\n  font-family: var(--font);\n  font-size: 14px;\n  line-height: 1.5;\n  overflow: hidden;\n  border: 1px solid var(--border);\n  max-width: 100%;\n}\n\n\/* Reset greift nur noch innerhalb des Containers *\/\n#cubro-npb *, #cubro-npb *::before, #cubro-npb *::after {\n  box-sizing: border-box; margin: 0; padding: 0;\n}\n\n\/* \u2500\u2500 HEADER \u2500\u2500 *\/\n#cubro-npb .header {\n  background: var(--bg-panel);\n  border-bottom: 1px solid var(--border);\n  padding: 14px 28px;\n  display: flex; align-items: center; justify-content: space-between;\n  position: relative;\n}\n#cubro-npb .header::after {\n  content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px;\n  background: linear-gradient(90deg, transparent, var(--cyan), transparent);\n  opacity: 0.45;\n}\n#cubro-npb .logo { display: flex; align-items: center; gap: 12px; }\n#cubro-npb .logo-mark svg { width: 38px; height: 38px; }\n#cubro-npb .logo-text {\n  font-size: 16px; letter-spacing: 0.18em; font-weight: 700;\n  color: #f1f5f9; text-transform: uppercase; font-family: var(--font);\n}\n#cubro-npb .logo-sub {\n  font-size: 10px; letter-spacing: 0.2em; color: #94a3b8;\n  text-transform: uppercase; margin-top: 2px;\n}\n#cubro-npb .header-right { display: flex; align-items: center; gap: 20px; }\n#cubro-npb .status-dot {\n  display: flex; align-items: center; gap: 6px;\n  font-size: 11px; letter-spacing: 0.08em; color: #94a3b8; text-transform: uppercase;\n  font-weight: 600;\n}\n#cubro-npb .dot {\n  width: 7px; height: 7px; border-radius: 50%;\n  background: var(--green); box-shadow: 0 0 7px var(--green);\n  animation: cubroPulse 2s infinite;\n}\n@keyframes cubroPulse { 0%,100%{opacity:1;} 50%{opacity:0.35;} }\n#cubro-npb .tag {\n  font-size: 10px; letter-spacing: 0.12em; color: var(--cyan-dim);\n  border: 1px solid var(--border); padding: 3px 9px;\n  text-transform: uppercase; font-weight: 600;\n}\n\n\/* \u2500\u2500 LAYOUT \u2500\u2500 feste Container-Hoehe statt 100vh \u2500\u2500 *\/\n#cubro-npb .workspace {\n  display: grid; grid-template-columns: 430px 1fr;\n  height: 700px; min-height: 600px;\n}\n\n\/* \u2500\u2500 LEFT PANEL \u2500\u2500 *\/\n#cubro-npb .left-panel {\n  background: var(--bg-panel);\n  border-right: 1px solid var(--border);\n  overflow-y: auto; display: flex; flex-direction: column;\n}\n#cubro-npb .panel-title {\n  padding: 14px 24px; font-size: 10px; letter-spacing: 0.28em;\n  text-transform: uppercase; color: #cbd5e1;\n  border-bottom: 1px solid var(--border);\n  background: rgba(0,0,0,0.25);\n  display: flex; align-items: center; gap: 9px;\n  font-weight: 700;\n}\n#cubro-npb .panel-title::before {\n  content: ''; display: block; width: 3px; height: 14px; background: var(--cyan);\n}\n#cubro-npb .inputs-body { padding: 22px; display: flex; flex-direction: column; gap: 26px; flex: 1; }\n\n#cubro-npb .input-group { display: flex; flex-direction: column; gap: 11px; }\n#cubro-npb .input-label {\n  font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase;\n  color: #cbd5e1;\n  display: flex; justify-content: space-between; align-items: center;\n  font-weight: 700;\n}\n#cubro-npb .input-label span { color: var(--cyan); font-size: 12px; letter-spacing: 0.08em; font-weight: 700; }\n\n#cubro-npb .slider-row { display: flex; align-items: center; gap: 12px; }\n#cubro-npb input[type=range] {\n  flex: 1; -webkit-appearance: none; appearance: none;\n  height: 4px; background: var(--border); outline: none; cursor: pointer;\n  border-radius: 0;\n}\n#cubro-npb input[type=range]::-webkit-slider-thumb {\n  -webkit-appearance: none; width: 15px; height: 15px;\n  background: var(--cyan); border: 2px solid var(--bg-primary); cursor: pointer;\n}\n#cubro-npb input[type=range]::-moz-range-thumb {\n  width: 15px; height: 15px;\n  background: var(--cyan); border: 2px solid var(--bg-primary);\n  cursor: pointer; border-radius: 0;\n}\n#cubro-npb input[type=range]:focus::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--cyan-glow); }\n\n#cubro-npb .number-input {\n  width: 90px; background: var(--bg-card2);\n  border: 1.5px solid var(--border);\n  color: var(--cyan); font-family: var(--font-mono); font-size: 13px;\n  padding: 6px 10px; outline: none; text-align: right;\n  transition: border-color 0.2s;\n}\n#cubro-npb .number-input:focus { border-color: var(--cyan); background: #1e2840; }\n\n#cubro-npb .range-labels {\n  display: flex; justify-content: space-between;\n  font-size: 10px; color: #94a3b8;\n  letter-spacing: 0.08em; font-weight: 600;\n}\n\n#cubro-npb .cost-input-row { display: flex; align-items: center; }\n#cubro-npb .input-prefix {\n  background: var(--bg-card2); border: 1.5px solid var(--border); border-right: none;\n  padding: 8px 12px; font-size: 13px; color: #cbd5e1; font-family: var(--font); font-weight: 600;\n}\n#cubro-npb .cost-field {\n  flex: 1; background: var(--bg-card2); border: 1.5px solid var(--border);\n  color: var(--cyan); font-family: var(--font-mono); font-size: 13px;\n  padding: 8px 12px; outline: none; transition: border-color 0.2s;\n}\n#cubro-npb .cost-field:focus { border-color: var(--cyan); }\n#cubro-npb .input-suffix {\n  background: var(--bg-card2); border: 1.5px solid var(--border); border-left: none;\n  padding: 8px 12px; font-size: 10px; color: #94a3b8; white-space: nowrap;\n  font-weight: 600;\n}\n\n#cubro-npb .divider { height: 1px; background: var(--border); }\n\n#cubro-npb .preset-label {\n  font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;\n  color: #cbd5e1; margin-bottom: 10px; font-weight: 700;\n}\n#cubro-npb .presets { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }\n#cubro-npb .preset-btn {\n  background: var(--bg-card); border: 1.5px solid var(--border);\n  color: #94a3b8; font-family: var(--font); font-size: 10px;\n  letter-spacing: 0.08em; text-transform: uppercase;\n  padding: 10px 10px; cursor: pointer; text-align: left;\n  transition: all 0.15s; display: flex; flex-direction: column; gap: 4px;\n}\n#cubro-npb .preset-btn:hover { border-color: var(--cyan-dim); color: #f1f5f9; background: var(--bg-card2); }\n#cubro-npb .preset-btn.active { border-color: var(--cyan); color: var(--cyan); background: rgba(0,212,255,0.06); }\n#cubro-npb .preset-name { font-size: 11px; color: inherit; font-weight: 700; }\n#cubro-npb .preset-desc { font-size: 10px; color: #64748b; font-weight: 400; }\n#cubro-npb .preset-btn.active .preset-desc { color: #38bdf8; }\n#cubro-npb .preset-btn:hover .preset-desc { color: #94a3b8; }\n\n\/* \u2500\u2500 RIGHT PANEL \u2500\u2500 *\/\n#cubro-npb .right-panel { background: var(--bg-primary); overflow-y: auto; display: flex; flex-direction: column; }\n\n#cubro-npb .kpi-row { display: grid; grid-template-columns: repeat(3,1fr); border-bottom: 1px solid var(--border); }\n#cubro-npb .kpi-card {\n  padding: 20px 22px; border-right: 1px solid var(--border);\n  position: relative; overflow: hidden;\n}\n#cubro-npb .kpi-card:last-child { border-right: none; }\n#cubro-npb .kpi-card::before {\n  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;\n}\n#cubro-npb .kpi-card.cyan::before  { background: linear-gradient(90deg, transparent, var(--cyan), transparent); }\n#cubro-npb .kpi-card.green::before { background: linear-gradient(90deg, transparent, var(--green), transparent); }\n#cubro-npb .kpi-card.amber::before { background: linear-gradient(90deg, transparent, var(--amber), transparent); }\n\n#cubro-npb .kpi-label {\n  font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;\n  color: #94a3b8; margin-bottom: 10px; font-weight: 700;\n}\n#cubro-npb .kpi-value { font-size: 30px; font-weight: 700; line-height: 1; transition: color 0.3s; }\n#cubro-npb .kpi-card.cyan  .kpi-value { color: var(--cyan);  text-shadow: 0 0 20px rgba(0,212,255,0.4); }\n#cubro-npb .kpi-card.green .kpi-value { color: var(--green); text-shadow: 0 0 20px rgba(52,211,153,0.35); }\n#cubro-npb .kpi-card.amber .kpi-value { color: var(--amber); text-shadow: 0 0 20px rgba(251,191,36,0.35); }\n#cubro-npb .kpi-unit  { font-size: 11px; color: #94a3b8; margin-top: 6px; font-weight: 600; }\n#cubro-npb .kpi-delta { font-size: 10px; margin-top: 7px; color: #64748b; letter-spacing: 0.04em; font-weight: 600; }\n\n#cubro-npb .viz-row {\n  display: grid; grid-template-columns: 1fr 1fr;\n  flex: 1; border-bottom: 1px solid var(--border);\n}\n#cubro-npb .viz-panel {\n  padding: 20px 22px; border-right: 1px solid var(--border);\n  display: flex; flex-direction: column; gap: 14px;\n}\n#cubro-npb .viz-panel:last-child { border-right: none; }\n#cubro-npb .viz-title {\n  font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;\n  color: #cbd5e1;\n  display: flex; align-items: center; gap: 8px; font-weight: 700;\n}\n#cubro-npb .viz-title::before { content: ''; display: block; width: 2px; height: 12px; background: var(--cyan); }\n\n#cubro-npb .donut-wrap { display: flex; align-items: center; justify-content: center; flex: 1; min-height: 200px; position: relative; }\n#cubro-npb .donut-center { position: absolute; text-align: center; }\n#cubro-npb .donut-pct { font-size: 30px; font-weight: 700; color: var(--cyan); text-shadow: 0 0 20px rgba(0,212,255,0.5); }\n#cubro-npb .donut-pct-label { font-size: 9px; letter-spacing: 0.2em; color: #94a3b8; text-transform: uppercase; margin-top: 3px; font-weight: 700; }\n\n#cubro-npb .bar-section { display: flex; flex-direction: column; gap: 16px; }\n#cubro-npb .bar-item { display: flex; flex-direction: column; gap: 6px; }\n#cubro-npb .bar-meta { display: flex; justify-content: space-between; font-size: 10px; }\n#cubro-npb .bar-meta-label { color: #94a3b8; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; }\n#cubro-npb .bar-meta-val   { color: #f1f5f9; font-size: 11px; font-weight: 700; }\n#cubro-npb .bar-track { height: 6px; background: #1e293b; position: relative; overflow: hidden; border: 1px solid var(--border); }\n#cubro-npb .bar-fill { height: 100%; transition: width 0.6s cubic-bezier(0.25,0.8,0.25,1); position: relative; }\n#cubro-npb .bar-fill::after { content: ''; position: absolute; right: 0; top: 0; bottom: 0; width: 3px; opacity: 0.9; }\n#cubro-npb .bar-fill.raw      { background: linear-gradient(90deg, #1e3a5f, var(--cyan-dim)); }\n#cubro-npb .bar-fill.raw::after      { background: var(--cyan-dim); box-shadow: 0 0 6px var(--cyan-dim); }\n#cubro-npb .bar-fill.filtered { background: linear-gradient(90deg, #0d2e1a, var(--green)); }\n#cubro-npb .bar-fill.filtered::after { background: var(--green); box-shadow: 0 0 6px var(--green); }\n#cubro-npb .bar-fill.dup      { background: linear-gradient(90deg, #2e1a1a, var(--red)); }\n#cubro-npb .bar-fill.dup::after      { background: var(--red); box-shadow: 0 0 6px var(--red); }\n\n#cubro-npb .chart-wrap { flex: 1; min-height: 180px; position: relative; }\n\n#cubro-npb .footer-strip { display: grid; grid-template-columns: repeat(4,1fr); border-top: 1px solid var(--border); }\n#cubro-npb .foot-metric { padding: 14px 20px; border-right: 1px solid var(--border); }\n#cubro-npb .foot-metric:last-child { border-right: none; }\n#cubro-npb .foot-label { font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: #94a3b8; margin-bottom: 5px; font-weight: 700; }\n#cubro-npb .foot-val { font-size: 15px; color: #f1f5f9; font-weight: 700; transition: color 0.3s; }\n#cubro-npb .foot-val.accent { color: var(--cyan); }\n\n@keyframes cubroFlash { 0%{opacity:0.3;} 50%{opacity:1;} 100%{opacity:1;} }\n#cubro-npb .flash { animation: cubroFlash 0.4s ease; }\n\n\/* Scrollbar nur noch innerhalb des Tools *\/\n#cubro-npb ::-webkit-scrollbar { width: 4px; }\n#cubro-npb ::-webkit-scrollbar-track { background: var(--bg-panel); }\n#cubro-npb ::-webkit-scrollbar-thumb { background: var(--border); }\n#cubro-npb ::-webkit-scrollbar-thumb:hover { background: #475569; }\n\n#cubro-npb .legend-dot { width: 10px; height: 3px; display: inline-block; }\n\n\/* \u2500\u2500 Responsiv: schmale Spalten stapeln statt brechen \u2500\u2500 *\/\n@media (max-width: 820px) {\n  #cubro-npb .workspace { grid-template-columns: 1fr; height: auto; min-height: 0; }\n  #cubro-npb .left-panel { border-right: none; border-bottom: 1px solid var(--border); }\n  #cubro-npb .right-panel { overflow: visible; }\n  #cubro-npb .kpi-row { grid-template-columns: 1fr; }\n  #cubro-npb .kpi-card { border-right: none; border-bottom: 1px solid var(--border); }\n  #cubro-npb .viz-row { grid-template-columns: 1fr; }\n  #cubro-npb .viz-panel { border-right: none; border-bottom: 1px solid var(--border); }\n  #cubro-npb .footer-strip { grid-template-columns: 1fr 1fr; }\n}\n<\/style>\n\n<div id=\"cubro-npb\">\n\n  <header class=\"header\">\n    <div class=\"logo\">\n      <div class=\"logo-mark\">\n        <svg viewBox=\"0 0 80 92\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n          <polygon points=\"40,2 6,21 40,46\" fill=\"#e8404a\" stroke=\"#111\" stroke-width=\"1.5\" stroke-linejoin=\"round\"><\/polygon>\n          <polygon points=\"40,2 74,21 40,46\" fill=\"#f0a070\" stroke=\"#111\" stroke-width=\"1.5\" stroke-linejoin=\"round\"><\/polygon>\n          <polygon points=\"74,21 40,46 74,71\" fill=\"#5dc4a8\" stroke=\"#111\" stroke-width=\"1.5\" stroke-linejoin=\"round\"><\/polygon>\n          <polygon points=\"74,71 40,46 40,90\" fill=\"#3a9e8a\" stroke=\"#111\" stroke-width=\"1.5\" stroke-linejoin=\"round\"><\/polygon>\n          <polygon points=\"6,21 40,46 6,71\" fill=\"#2a5ba8\" stroke=\"#111\" stroke-width=\"1.5\" stroke-linejoin=\"round\"><\/polygon>\n          <polygon points=\"6,71 40,46 40,90\" fill=\"#28aacc\" stroke=\"#111\" stroke-width=\"1.5\" stroke-linejoin=\"round\"><\/polygon>\n        <\/svg>\n      <\/div>\n      <div>\n        <div class=\"logo-text\">CUBRO<\/div>\n        <div class=\"logo-sub\">Network Packet Broker<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"header-right\">\n      <div class=\"status-dot\"><div class=\"dot\"><\/div>Live Calculation<\/div>\n      <div class=\"tag\">NPB Estimator v2.4<\/div>\n    <\/div>\n  <\/header>\n\n  <div class=\"workspace\">\n\n    <!-- LEFT -->\n    <div class=\"left-panel\">\n      <div class=\"panel-title\">Configuration Parameters<\/div>\n      <div class=\"inputs-body\">\n\n        <div class=\"input-group\">\n          <div class=\"input-label\">\n            Total Aggregated Ingress Traffic\n            <span id=\"ingressDisplay\">100 Gbps<\/span>\n          <\/div>\n          <div class=\"slider-row\">\n            <input type=\"range\" id=\"ingressSlider\" min=\"10\" max=\"800\" step=\"5\" value=\"100\">\n            <input type=\"number\" id=\"ingressInput\" class=\"number-input\" min=\"10\" max=\"800\" value=\"100\">\n          <\/div>\n          <div class=\"range-labels\"><span>10 Gbps<\/span><span>800 Gbps<\/span><\/div>\n        <\/div>\n\n        <div class=\"divider\"><\/div>\n\n        <div class=\"input-group\">\n          <div class=\"input-label\">\n            Estimated Redundant \/ Duplicate Traffic\n            <span id=\"dupDisplay\">30%<\/span>\n          <\/div>\n          <div class=\"slider-row\">\n            <input type=\"range\" id=\"dupSlider\" min=\"0\" max=\"60\" step=\"1\" value=\"30\">\n            <input type=\"number\" id=\"dupInput\" class=\"number-input\" min=\"0\" max=\"60\" value=\"30\">\n          <\/div>\n          <div class=\"range-labels\"><span>0%<\/span><span>60%<\/span><\/div>\n        <\/div>\n\n        <div class=\"divider\"><\/div>\n\n        <div class=\"input-group\">\n          <div class=\"input-label\">Downstream Tool Cost<\/div>\n          <div class=\"cost-input-row\">\n            <span class=\"input-prefix\">$<\/span>\n            <input type=\"number\" id=\"costInput\" class=\"cost-field\" min=\"100\" max=\"50000\" step=\"100\" value=\"4000\" placeholder=\"4000\">\n            <span class=\"input-suffix\">\/ Gbps \/ year<\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"divider\"><\/div>\n\n        <div>\n          <div class=\"preset-label\">Quick-load Scenarios<\/div>\n          <div class=\"presets\">\n            <button class=\"preset-btn\" type=\"button\">\n              <span class=\"preset-name\">Edge PoP<\/span>\n              <span class=\"preset-desc\">50G \u00b7 15% dup<\/span>\n            <\/button>\n            <button class=\"preset-btn\" type=\"button\">\n              <span class=\"preset-name\">Core WAN<\/span>\n              <span class=\"preset-desc\">200G \u00b7 35% dup<\/span>\n            <\/button>\n            <button class=\"preset-btn\" type=\"button\">\n              <span class=\"preset-name\">Tier-1 DC<\/span>\n              <span class=\"preset-desc\">400G \u00b7 30% dup<\/span>\n            <\/button>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n\n    <!-- RIGHT -->\n    <div class=\"right-panel\">\n\n      <div class=\"kpi-row\">\n        <div class=\"kpi-card cyan\">\n          <div class=\"kpi-label\">Bandwidth Saved \/ Shaved Off<\/div>\n          <div class=\"kpi-value\" id=\"kpiBwSaved\">30.0<\/div>\n          <div class=\"kpi-unit\">Gbps eliminated<\/div>\n          <div class=\"kpi-delta\" id=\"kpiSavedPct\">30.0% of ingress traffic<\/div>\n        <\/div>\n        <div class=\"kpi-card green\">\n          <div class=\"kpi-label\">Optimized Egress Stream<\/div>\n          <div class=\"kpi-value\" id=\"kpiEgress\">70.0<\/div>\n          <div class=\"kpi-unit\">Gbps to monitoring tools<\/div>\n          <div class=\"kpi-delta\" id=\"kpiEgressPct\">70.0% of original volume<\/div>\n        <\/div>\n        <div class=\"kpi-card amber\">\n          <div class=\"kpi-label\">Annual Tool Cost Savings<\/div>\n          <div class=\"kpi-value\" id=\"kpiSavings\">$150M<\/div>\n          <div class=\"kpi-unit\">USD per year<\/div>\n          <div class=\"kpi-delta\" id=\"kpiSavingsRaw\">$150,000,000 exact<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"viz-row\">\n\n        <div class=\"viz-panel\">\n          <div class=\"viz-title\">Traffic Composition Breakdown<\/div>\n          <div class=\"donut-wrap\">\n            <svg id=\"donutSvg\" width=\"200\" height=\"200\" viewBox=\"0 0 200 200\">\n              <circle cx=\"100\" cy=\"100\" r=\"75\" fill=\"none\" stroke=\"#1e293b\" stroke-width=\"18\"><\/circle>\n              <circle id=\"donutDup\" cx=\"100\" cy=\"100\" r=\"75\" fill=\"none\" stroke=\"#fb7185\" stroke-width=\"18\" stroke-dasharray=\"471.24\" stroke-dashoffset=\"471.24\" transform=\"rotate(-90 100 100)\" style=\"transition:stroke-dashoffset 0.7s cubic-bezier(0.25,0.8,0.25,1)\"><\/circle>\n              <circle id=\"donutClean\" cx=\"100\" cy=\"100\" r=\"75\" fill=\"none\" stroke=\"#00d4ff\" stroke-width=\"18\" stroke-dasharray=\"471.24\" stroke-dashoffset=\"471.24\" transform=\"rotate(-90 100 100)\" style=\"transition:stroke-dashoffset 0.7s cubic-bezier(0.25,0.8,0.25,1)\"><\/circle>\n            <\/svg>\n            <div class=\"donut-center\">\n              <div class=\"donut-pct\" id=\"donutPct\">70%<\/div>\n              <div class=\"donut-pct-label\">Clean traffic<\/div>\n            <\/div>\n          <\/div>\n          <div style=\"display:flex;gap:18px;font-size:10px;color:#94a3b8;letter-spacing:0.08em;justify-content:center;font-weight:600;\">\n            <span style=\"display:flex;align-items:center;gap:6px;\"><span class=\"legend-dot\" style=\"background:var(--cyan);\"><\/span>Clean<\/span>\n            <span style=\"display:flex;align-items:center;gap:6px;\"><span class=\"legend-dot\" style=\"background:var(--red);\"><\/span>Duplicate<\/span>\n            <span style=\"display:flex;align-items:center;gap:6px;\"><span class=\"legend-dot\" style=\"background:#1e293b;border:1px solid #334155;\"><\/span>Total<\/span>\n          <\/div>\n        <\/div>\n\n        <div class=\"viz-panel\">\n          <div class=\"viz-title\">Traffic Volume Analysis<\/div>\n          <div class=\"bar-section\" style=\"flex:1;justify-content:center;\">\n            <div class=\"bar-item\">\n              <div class=\"bar-meta\">\n                <span class=\"bar-meta-label\">Raw Ingress<\/span>\n                <span class=\"bar-meta-val\" id=\"barRawVal\">100.0 Gbps<\/span>\n              <\/div>\n              <div class=\"bar-track\"><div class=\"bar-fill raw\" id=\"barRaw\" style=\"width:100%\"><\/div><\/div>\n            <\/div>\n            <div class=\"bar-item\">\n              <div class=\"bar-meta\">\n                <span class=\"bar-meta-label\">Deduplicated Egress<\/span>\n                <span class=\"bar-meta-val\" id=\"barEgressVal\">70.0 Gbps<\/span>\n              <\/div>\n              <div class=\"bar-track\"><div class=\"bar-fill filtered\" id=\"barEgress\" style=\"width:70%\"><\/div><\/div>\n            <\/div>\n            <div class=\"bar-item\">\n              <div class=\"bar-meta\">\n                <span class=\"bar-meta-label\">Eliminated (Duplicate)<\/span>\n                <span class=\"bar-meta-val\" id=\"barDupVal\">30.0 Gbps<\/span>\n              <\/div>\n              <div class=\"bar-track\"><div class=\"bar-fill dup\" id=\"barDup\" style=\"width:30%\"><\/div><\/div>\n            <\/div>\n          <\/div>\n          <div class=\"chart-wrap\">\n            <canvas id=\"trendChart\"><\/canvas>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n      <div class=\"footer-strip\">\n        <div class=\"foot-metric\">\n          <div class=\"foot-label\">Monthly Savings<\/div>\n          <div class=\"foot-val accent\" id=\"footMonthly\">$12.5M<\/div>\n        <\/div>\n        <div class=\"foot-metric\">\n          <div class=\"foot-label\">Tool Reduction Factor<\/div>\n          <div class=\"foot-val accent\" id=\"footFactor\">1.43\u00d7<\/div>\n        <\/div>\n        <div class=\"foot-metric\">\n          <div class=\"foot-label\">Effective Monitoring BW<\/div>\n          <div class=\"foot-val\" id=\"footMonBW\">70.0 Gbps<\/div>\n        <\/div>\n        <div class=\"foot-metric\">\n          <div class=\"foot-label\">Est. 3-Year TCO Savings<\/div>\n          <div class=\"foot-val accent\" id=\"footTCO\">$450M<\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  \/\/ Chart.js nur laden, falls noch nicht vorhanden (kein Doppel-Load mit Theme\/Plugins)\n  function ensureChart(cb){\n    if (window.Chart) { cb(); return; }\n    if (!document.querySelector('script[data-cubro-chartjs]')) {\n      var s = document.createElement('script');\n      s.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js';\n      s.setAttribute('data-cubro-chartjs','');\n      document.head.appendChild(s);\n    }\n    var iv = setInterval(function(){ if (window.Chart) { clearInterval(iv); cb(); } }, 50);\n    setTimeout(function(){ clearInterval(iv); }, 10000);\n  }\n\n  function boot(){\n    var root = document.getElementById('cubro-npb');\n    if (!root) return;\n    \/\/ alle Lookups laufen ueber den Container -> keine Kollision mit Theme-IDs\n    var $ = function(id){ return root.querySelector('#' + id); };\n\n    var state = { ingress: 100, dup: 30, costPerGbps: 4000 };\n    var PRESETS = [\n      { ingress: 10,  dup: 15, cost: 5000 },\n      { ingress: 200, dup: 35, cost: 6500 },\n      { ingress: 400, dup: 30, cost: 7500 }\n    ];\n\n    var ingressSlider = $('ingressSlider');\n    var ingressInput  = $('ingressInput');\n    var dupSlider     = $('dupSlider');\n    var dupInput      = $('dupInput');\n    var costInput     = $('costInput');\n\n    var ctx = $('trendChart').getContext('2d');\n    var INGRESS_RANGE = Array.from({length:9}, function(_,i){ return 10 + i*49; });\n    var chart = new Chart(ctx, {\n      type: 'line',\n      data: {\n        labels: INGRESS_RANGE.map(function(v){ return v+'G'; }),\n        datasets: [\n          { label:'Raw Ingress', data: INGRESS_RANGE, borderColor:'#38bdf8', backgroundColor:'rgba(56,189,248,0.08)', borderWidth:1.5, pointRadius:0, fill:true, tension:0.3 },\n          { label:'Egress After Dedup', data:[], borderColor:'#34d399', backgroundColor:'rgba(52,211,153,0.08)', borderWidth:1.5, pointRadius:0, fill:true, tension:0.3 }\n        ]\n      },\n      options: {\n        responsive:true, maintainAspectRatio:false,\n        animation:{duration:500},\n        plugins:{\n          legend:{ labels:{ color:'#94a3b8', font:{family:\"'Open Sans',sans-serif\",size:10}, boxWidth:10, padding:12 } },\n          tooltip:{ backgroundColor:'#0f1524', borderColor:'#334155', borderWidth:1, titleColor:'#00d4ff', bodyColor:'#f1f5f9', titleFont:{family:\"'Open Sans',sans-serif\",size:10}, bodyFont:{family:\"'Open Sans',sans-serif\",size:10} }\n        },\n        scales:{\n          x:{ grid:{color:'#1e293b'}, ticks:{color:'#94a3b8', font:{family:\"'Open Sans',sans-serif\",size:9}} },\n          y:{ grid:{color:'#1e293b'}, ticks:{color:'#94a3b8', font:{family:\"'Open Sans',sans-serif\",size:9}, callback:function(v){ return v+'G'; }} }\n        }\n      }\n    });\n\n    var CIRC = 2 * Math.PI * 75;\n    function updateDonut(cleanPct, dupPct) {\n      var cleanDash = (cleanPct\/100)*CIRC, dupDash = (dupPct\/100)*CIRC;\n      var dc = $('donutClean'), dd = $('donutDup');\n      dc.setAttribute('stroke-dasharray', cleanDash + ' ' + (CIRC-cleanDash));\n      dc.setAttribute('stroke-dashoffset', 0);\n      dd.setAttribute('stroke-dasharray', dupDash + ' ' + (CIRC-dupDash));\n      dd.setAttribute('stroke-dashoffset', -cleanDash);\n      $('donutPct').textContent = Math.round(cleanPct)+'%';\n    }\n\n    var fmt = function(n,d){ if(d===undefined)d=1; return n.toFixed(d); };\n    function fmtMoney(n) {\n      if(n>=1e9) return '$'+(n\/1e9).toFixed(2)+'B';\n      if(n>=1e6) return '$'+(n\/1e6).toFixed(1)+'M';\n      if(n>=1e3) return '$'+(n\/1e3).toFixed(0)+'K';\n      return '$'+n.toFixed(0);\n    }\n    function fmtExact(n){ return '$'+n.toLocaleString('en-US',{maximumFractionDigits:0})+' exact'; }\n    function flash(id){ var el=$(id); el.classList.remove('flash'); void el.offsetWidth; el.classList.add('flash'); }\n\n    function calculate() {\n      var ingress = state.ingress, dup = state.dup, costPerGbps = state.costPerGbps;\n      var dupGbps = ingress*(dup\/100), cleanGbps = ingress-dupGbps;\n      var annualSave = dupGbps*costPerGbps, cleanPct = (cleanGbps\/ingress)*100;\n      var factor = ingress\/cleanGbps;\n\n      $('kpiBwSaved').textContent  = fmt(dupGbps);\n      $('kpiEgress').textContent   = fmt(cleanGbps);\n      $('kpiSavings').textContent  = fmtMoney(annualSave);\n      $('kpiSavedPct').textContent = fmt(dup,0)+'% of ingress traffic';\n      $('kpiEgressPct').textContent= fmt(cleanPct,0)+'% of original volume';\n      $('kpiSavingsRaw').textContent= fmtExact(annualSave);\n      ['kpiBwSaved','kpiEgress','kpiSavings'].forEach(flash);\n\n      $('barRawVal').textContent   = fmt(ingress)+' Gbps';\n      $('barEgressVal').textContent= fmt(cleanGbps)+' Gbps';\n      $('barDupVal').textContent   = fmt(dupGbps)+' Gbps';\n      $('barRaw').style.width    = '100%';\n      $('barEgress').style.width = fmt(cleanPct,1)+'%';\n      $('barDup').style.width    = fmt(dup,1)+'%';\n\n      updateDonut(cleanPct, dup);\n\n      $('footMonthly').textContent = fmtMoney(annualSave\/12);\n      $('footFactor').textContent  = fmt(factor,2)+'\u00d7';\n      $('footMonBW').textContent   = fmt(cleanGbps)+' Gbps';\n      $('footTCO').textContent     = fmtMoney(annualSave*3);\n      $('ingressDisplay').textContent = ingress+' Gbps';\n      $('dupDisplay').textContent     = dup+'%';\n\n      chart.data.datasets[1].data = INGRESS_RANGE.map(function(v){ return +(v*(1-dup\/100)).toFixed(2); });\n      chart.data.datasets[0].pointRadius = INGRESS_RANGE.map(function(v){ return v===ingress?5:0; });\n      chart.data.datasets[0].pointBackgroundColor='#38bdf8';\n      chart.data.datasets[1].pointRadius = INGRESS_RANGE.map(function(v){ return v===ingress?5:0; });\n      chart.data.datasets[1].pointBackgroundColor='#34d399';\n      chart.update();\n    }\n\n    function clearActive(){ root.querySelectorAll('.preset-btn').forEach(function(b){ b.classList.remove('active'); }); }\n    function loadPreset(i){\n      var p = PRESETS[i];\n      state.ingress=p.ingress; state.dup=p.dup; state.costPerGbps=4000;\n      ingressSlider.value=p.ingress; ingressInput.value=p.ingress;\n      dupSlider.value=p.dup; dupInput.value=p.dup;\n      costInput.value=4000;\n      clearActive();\n      root.querySelectorAll('.preset-btn')[i].classList.add('active');\n      calculate();\n    }\n\n    ingressSlider.addEventListener('input',function(){ state.ingress=+ingressSlider.value; ingressInput.value=state.ingress; clearActive(); calculate(); });\n    ingressInput.addEventListener('input',function(){ var v=Math.min(800,Math.max(10,+ingressInput.value||10)); state.ingress=v; ingressSlider.value=v; clearActive(); calculate(); });\n    dupSlider.addEventListener('input',function(){ state.dup=+dupSlider.value; dupInput.value=state.dup; clearActive(); calculate(); });\n    dupInput.addEventListener('input',function(){ var v=Math.min(60,Math.max(0,+dupInput.value||0)); state.dup=v; dupSlider.value=v; clearActive(); calculate(); });\n    costInput.addEventListener('input',function(){ state.costPerGbps=Math.max(0,+costInput.value||0); clearActive(); calculate(); });\n\n    \/\/ Presets ohne inline-onclick verdrahten\n    root.querySelectorAll('.preset-btn').forEach(function(btn, i){\n      btn.addEventListener('click', function(){ loadPreset(i); });\n    });\n\n    calculate();\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function(){ ensureChart(boot); });\n  } else {\n    ensureChart(boot);\n  }\n})();\n<\/script>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div class=\"nv-cv-d nv-cv-m wp-block-getwid-section alignfull alignfull getwid-margin-top-normal getwid-margin-bottom-normal\"><div class=\"wp-block-getwid-section__wrapper getwid-padding-top-normal getwid-padding-bottom-normal\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background has-background\" style=\"background-color:#a9d4d8\"><\/div><div class=\"wp-block-getwid-section__foreground\" style=\"opacity:0.4;background-color:var(--nv-site-bg)\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-getwid-advanced-heading\"><h2 class=\"wp-block-getwid-advanced-heading__content\">Data Deduplication<\/h2><\/div>\n\n\n\n<div class=\"wp-block-getwid-advanced-heading\"><h3 class=\"wp-block-getwid-advanced-heading__content\">See how Cubro eliminates redundancy at the Ingress<\/h3><\/div>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Deduplication must be enabled on the Ingress inside the CPU.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Within the GHC Function, go inside a CPU Policy and navigate to the Ingress by clicking on the desired group. Inside, you can enable Deduplication in the Advanced Features. Once your selection is confirmed, the deduplication runs automatically; no further configuration is required to deduplicate your traffic.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"nv-iframe-embed\"><iframe loading=\"lazy\" title=\"Deduplication with Cubro Advanced Network Packet Broker\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/5aEl7uWHrQU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/div><\/figure>\n<\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div id=\"solution-products-in-it-anchor\" class=\"nv-cv-d nv-cv-m wp-block-getwid-section\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-getwid-advanced-heading\"><h2 class=\"wp-block-getwid-advanced-heading__content\">Products in this Solution<\/h2><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-column border-soft-lightgray is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-23k6Tc wp-block-lazyblock-linked-box\"><a href=\"https:\/\/www.cubro.com\/en\/products\/network-packet-brokers\/exa48800\/\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/Icon-ProductsNPB-EXA48800.png\" alt=\"Cubro Network Visibility icon of Network Packet Broker EXA48800\" \/><p class=\"linked-title\">EXA48800<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column border-soft-lightgray is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-1SE3pM wp-block-lazyblock-linked-box\"><a href=\"https:\/\/www.cubro.com\/en\/products\/network-packet-brokers\/exa48200\/\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/products-npb-exa48200.png\" alt=\"Cubro Network Visibility icon with a real image for Network Packet Broker EXA48200\" \/><p class=\"linked-title\">EXA48200<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div id=\"solution-resources-anchor\" class=\"nv-cv-d nv-cv-m wp-block-getwid-section\"><div class=\"wp-block-getwid-section__wrapper\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\">\n<div class=\"wp-block-getwid-advanced-heading\"><h2 class=\"wp-block-getwid-advanced-heading__content\">Additional Resources<\/h2><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-column border-soft-lightgray is-layout-flow wp-block-column-is-layout-flow\"><div class=\"lazyblock-linked-box-Z1sGAFK wp-block-lazyblock-linked-box\"><a href=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/CUB-EXA48200-EXA48800-Deduplication-AN.pdf\" target=\"_blank\"><div class=\"linked_box max-height-120\" style=\"text-align:center;\"><div class=\"default-content\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/resources_application-notes.png\" alt=\"Cubro Network Visibility icon of Application Notes\" \/><p class=\"linked-title\">EXA48200 &amp; EXA48800 Deduplication<\/p><\/div><\/div><\/a><\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div>\n\n\n\n<div class=\"nv-cv-d nv-cv-m nv-cv-d nv-cv-m wp-block-getwid-section alignfull ticss-463d19d6 alignfull\" style=\"margin-top:60px;margin-bottom:30px\"><div class=\"wp-block-getwid-section__wrapper\" style=\"padding-top:4px;padding-bottom:0px\"><div class=\"wp-block-getwid-section__inner-wrapper\"><div class=\"wp-block-getwid-section__background-holder\"><div class=\"wp-block-getwid-section__background has-background has-nv-dark-bg-background-color\"><\/div><div class=\"wp-block-getwid-section__foreground\"><\/div><\/div><div class=\"wp-block-getwid-section__content\"><div class=\"wp-block-getwid-section__inner-content\"><div class=\"wp-block-image is-style-default ticss-b2896e02\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/CNV-Logo_just-symbol_divider.png\" alt=\"\" width=\"30\" height=\"48\"\/><\/figure>\n<\/div><\/div><\/div><\/div><\/div><\/div>\n\n\n<p class=\"newsletter-headline\">Newsletter - Stay up to date with Cubro Bytes<\/p><div class=\"zweispaltig\"><div class=\"spalte\" style=\"margin-top:30px;padding-left:30px;padding-right:30px;\">\r\n\t\t\t<div style=\"padding-bottom:15px; text-align:center;\">\r\n\t\t\t  <img decoding=\"async\" src=\"https:\/\/www.cubro.com\/en\/wp-content\/uploads\/icon_newsletter.png\" \r\n\t\t\t       width=\"200\" \r\n\t\t\t       style=\"padding-bottom:10px;\">\r\n\t\t\t<\/div>\r\n\r\n\t\t\t<p style=\"font-size:20px;\">Our newsletter provides thought leadership content about the industry. It is concise and has interesting content to keep you updated with what\u2019s new at Cubro and in the industry. You can unsubscribe anytime with a single click.<\/p>\r\n\t\t\t<\/div><div class=\"spalte\"><!-- Begin Brevo Form -->\r\n<!-- START - We recommend to place the below code in head tag of your website html  -->\r\n<style>\r\n  @font-face {\r\n    font-display: block;\r\n    font-family: Roboto;\r\n    src: url(https:\/\/assets.brevo.com\/font\/Roboto\/Latin\/normal\/normal\/7529907e9eaf8ebb5220c5f9850e3811.woff2) format(\"woff2\"), url(https:\/\/assets.brevo.com\/font\/Roboto\/Latin\/normal\/normal\/25c678feafdc175a70922a116c9be3e7.woff) format(\"woff\")\r\n  }\r\n\r\n  @font-face {\r\n    font-display: fallback;\r\n    font-family: Roboto;\r\n    font-weight: 600;\r\n    src: url(https:\/\/assets.brevo.com\/font\/Roboto\/Latin\/medium\/normal\/6e9caeeafb1f3491be3e32744bc30440.woff2) format(\"woff2\"), url(https:\/\/assets.brevo.com\/font\/Roboto\/Latin\/medium\/normal\/71501f0d8d5aa95960f6475d5487d4c2.woff) format(\"woff\")\r\n  }\r\n\r\n  @font-face {\r\n    font-display: fallback;\r\n    font-family: Roboto;\r\n    font-weight: 700;\r\n    src: url(https:\/\/assets.brevo.com\/font\/Roboto\/Latin\/bold\/normal\/3ef7cf158f310cf752d5ad08cd0e7e60.woff2) format(\"woff2\"), url(https:\/\/assets.brevo.com\/font\/Roboto\/Latin\/bold\/normal\/ece3a1d82f18b60bcce0211725c476aa.woff) format(\"woff\")\r\n  }\r\n\r\n  #sib-container input:-ms-input-placeholder {\r\n    text-align: left;\r\n    font-family: Helvetica, sans-serif;\r\n    color: #c0ccda;\r\n  }\r\n\r\n  #sib-container input::placeholder {\r\n    text-align: left;\r\n    font-family: Helvetica, sans-serif;\r\n    color: #c0ccda;\r\n  }\r\n\r\n  #sib-container textarea::placeholder {\r\n    text-align: left;\r\n    font-family: Helvetica, sans-serif;\r\n    color: #c0ccda;\r\n  }\r\n\r\n  #sib-container a {\r\n    text-decoration: underline;\r\n    color: #2BB2FC;\r\n  }\r\n\r\n  label.entry__label {\r\n  \tmargin-bottom:1px;\r\n  }\r\n\r\n  .sib-form {\r\n  \tpadding-left:0!important;\r\n  \tpadding-right:0!important;\r\n  }\r\n\r\n  #sib-container {\r\n  \tpadding:0!important;\r\n  }\r\n\r\n  .recaptcha-text {\r\n  \tfont-size:12px!important;\r\n  }\r\n\r\n  .recaptcha-text a {\r\n    color: #d8522c!important;\r\n    text-decoration: underline;\r\n  }\r\n\r\n  button {\r\n    font-size:16px;\r\n    text-align:left;\r\n    font-weight:700;\r\n    font-family:Helvetica, sans-serif;\r\n    color:#FFFFFF;\r\n    background-color:#84a6ad;\r\n    border-radius:3px;\r\n    border-width:8px;\r\n  }\r\n\r\n  button:hover {\r\n    color:#FFFFFF;\r\n    background-color:#333333;\r\n  }\r\n\r\n  \/* --- Brevo Formular: 2-spaltiges Layout f\u00fcr die ersten 4 Felder --- *\/\r\n\r\n  \/* Grid auf die direkten Kinder des <form> anwenden (die Wrapper mit padding) *\/\r\n  #sib-container #sib-form {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    column-gap: 16px;\r\n    row-gap: 0; \/* da die Wrapper schon padding haben *\/\r\n  }\r\n\r\n  \/* Alle Wrapper-Blocks standardm\u00e4\u00dfig: eine Spalte *\/\r\n  #sib-container #sib-form > div {\r\n    grid-column: span 1;\r\n  }\r\n\r\n  \/* 5. Block = Email (vollbreit) *\/\r\n  #sib-container #sib-form > div:nth-of-type(5) {\r\n    grid-column: 1 \/ -1;\r\n  }\r\n\r\n  \/* 6. Block = Button (vollbreit) *\/\r\n  #sib-container #sib-form > div:nth-of-type(6) {\r\n    grid-column: 1 \/ -1;\r\n  }\r\n\r\n  \/* Hidden Inputs am Ende: vollbreit und ohne Layout-Effekt *\/\r\n  #sib-container #sib-form > input {\r\n    grid-column: 1 \/ -1;\r\n  }\r\n\r\n  \/* Mobile: alles untereinander *\/\r\n  @media (max-width: 640px) {\r\n    #sib-container #sib-form {\r\n      grid-template-columns: 1fr;\r\n    }\r\n    #sib-container #sib-form > div,\r\n    #sib-container #sib-form > div:nth-of-type(5),\r\n    #sib-container #sib-form > div:nth-of-type(6) {\r\n      grid-column: 1 \/ -1;\r\n    }\r\n  }\r\n\r\n\r\n<\/style>\r\n<link rel=\"stylesheet\" href=\"https:\/\/sibforms.com\/forms\/end-form\/build\/sib-styles.css\">\r\n<!--  END - We recommend to place the above code in head tag of your website html -->\r\n\r\n<!-- START - We recommend to place the below code where you want the form in your website html  -->\r\n<div class=\"sib-form\" style=\"text-align: center; background-color: #ffffff;\">\r\n  <div id=\"sib-form-container\" class=\"sib-form-container\">\r\n    <div id=\"error-message\" class=\"sib-form-message-panel\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;max-width:540px;\">\r\n      <div class=\"sib-form-message-panel__text sib-form-message-panel__text--center\">\r\n        <svg viewBox=\"0 0 512 512\" class=\"sib-icon sib-notification__icon\">\r\n          <path d=\"M256 40c118.621 0 216 96.075 216 216 0 119.291-96.61 216-216 216-119.244 0-216-96.562-216-216 0-119.203 96.602-216 216-216m0-32C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm-11.49 120h22.979c6.823 0 12.274 5.682 11.99 12.5l-7 168c-.268 6.428-5.556 11.5-11.99 11.5h-8.979c-6.433 0-11.722-5.073-11.99-11.5l-7-168c-.283-6.818 5.167-12.5 11.99-12.5zM256 340c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28z\" \/>\r\n        <\/svg>\r\n        <span class=\"sib-form-message-panel__inner-text\">\r\n                          Deine Anmeldung konnte nicht gespeichert werden. Bitte versuche es erneut.\r\n                      <\/span>\r\n      <\/div>\r\n    <\/div>\r\n    <div><\/div>\r\n    <div id=\"success-message\" class=\"sib-form-message-panel\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#085229; background-color:#e7faf0; border-radius:3px; border-color:#13ce66;max-width:540px;\">\r\n      <div class=\"sib-form-message-panel__text sib-form-message-panel__text--center\">\r\n        <svg viewBox=\"0 0 512 512\" class=\"sib-icon sib-notification__icon\">\r\n          <path d=\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 464c-118.664 0-216-96.055-216-216 0-118.663 96.055-216 216-216 118.664 0 216 96.055 216 216 0 118.663-96.055 216-216 216zm141.63-274.961L217.15 376.071c-4.705 4.667-12.303 4.637-16.97-.068l-85.878-86.572c-4.667-4.705-4.637-12.303.068-16.97l8.52-8.451c4.705-4.667 12.303-4.637 16.97.068l68.976 69.533 163.441-162.13c4.705-4.667 12.303-4.637 16.97.068l8.451 8.52c4.668 4.705 4.637 12.303-.068 16.97z\" \/>\r\n        <\/svg>\r\n        <span class=\"sib-form-message-panel__inner-text\">\r\n                          Deine Anmeldung war erfolgreich.\r\n                      <\/span>\r\n      <\/div>\r\n    <\/div>\r\n    <div><\/div>\r\n    <div id=\"sib-container\" class=\"sib-container--large sib-container--vertical\" style=\"text-align:center; background-color:rgba(255,255,255,1); max-width:800px; direction:ltr\">\r\n      <form id=\"sib-form\" method=\"POST\" action=\"https:\/\/24bf8055.sibforms.com\/serve\/MUIFAJW5hHXD-knlsGlqSNUcW_X6H-wyIG1XBfBHC1n-r5oWiLIKRNXRDNGHx0jhUUIpnWTh-6f1BKAE6jFyyE4DZupZc0qg-pyk2DusTzZA-sd2kmqr439RPzb-vYZRTRcXHsAxYa16e-8CaDLXh2IKxteM8S8ICusLl-WDN0JwkdZsIhe032CYNNlX8zi1nT5UbXdwGO0854j7\" data-type=\"subscription\">\r\n        <div style=\"padding: 8px 0;\">\r\n          <div class=\"sib-input sib-form-block\">\r\n            <div class=\"form__entry entry_block\">\r\n              <div class=\"form__label-row \">\r\n                <label class=\"entry__label\" style=\"font-weight: 500; text-align:left; font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#3c4858;\" for=\"FIRSTNAME\" data-required=\"*\">First Name<\/label>\r\n\r\n                <div class=\"entry__field\">\r\n                  <input class=\"input \" maxlength=\"200\" type=\"text\" id=\"FIRSTNAME\" name=\"FIRSTNAME\" autocomplete=\"off\" data-required=\"true\" required \/>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\r\n              <\/label>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"padding: 8px 0;\">\r\n          <div class=\"sib-input sib-form-block\">\r\n            <div class=\"form__entry entry_block\">\r\n              <div class=\"form__label-row \">\r\n                <label class=\"entry__label\" style=\"font-weight: 500; text-align:left; font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#3c4858;\" for=\"LASTNAME\" data-required=\"*\">Last Name<\/label>\r\n\r\n                <div class=\"entry__field\">\r\n                  <input class=\"input \" maxlength=\"200\" type=\"text\" id=\"LASTNAME\" name=\"LASTNAME\" autocomplete=\"off\" data-required=\"true\" required \/>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\r\n              <\/label>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"padding: 8px 0;\">\r\n          <div class=\"sib-input sib-form-block\">\r\n            <div class=\"form__entry entry_block\">\r\n              <div class=\"form__label-row \">\r\n                <label class=\"entry__label\" style=\"font-weight: 500; text-align:left; font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#3c4858;\" for=\"COMPANY\">Company<\/label>\r\n\r\n                <div class=\"entry__field\">\r\n                  <input class=\"input \" maxlength=\"200\" type=\"text\" id=\"COMPANY\" name=\"COMPANY\" autocomplete=\"off\" \/>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\r\n              <\/label>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"padding: 8px 0;\">\r\n          <div class=\"sib-input sib-form-block\">\r\n            <div class=\"form__entry entry_block\">\r\n              <div class=\"form__label-row \">\r\n                <label class=\"entry__label\" style=\"font-weight: 500; text-align:left; font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#3c4858;\" for=\"COUNTRY\">Country<\/label>\r\n\r\n                <div class=\"entry__field\">\r\n                  <input class=\"input \" maxlength=\"200\" type=\"text\" id=\"COUNTRY\" name=\"COUNTRY\" autocomplete=\"off\" \/>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\r\n              <\/label>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"padding: 8px 0;\">\r\n          <div class=\"sib-input sib-form-block\">\r\n            <div class=\"form__entry entry_block\">\r\n              <div class=\"form__label-row \">\r\n                <label class=\"entry__label\" style=\"font-weight: 500; text-align:left; font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#3c4858;\" for=\"EMAIL\" data-required=\"*\">Email<\/label>\r\n\r\n                <div class=\"entry__field\">\r\n                  <input class=\"input \" type=\"text\" id=\"EMAIL\" name=\"EMAIL\" autocomplete=\"off\" data-required=\"true\" required \/>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\r\n              <\/label>\r\n\t\t\t\t<p class=\"recaptcha-text\">This site is protected by reCAPTCHA and the Google <a href=\"https:\/\/policies.google.com\/privacy\" target=\"_blank\" rel=\"noopener\">Privacy Policy<\/a> and <a href=\"https:\/\/policies.google.com\/terms\" target=\"_blank\" rel=\"noopener\">Terms of Service<\/a> apply.\r\n\t\t\t\t<\/p>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"padding: 8px 0;\">\r\n          <div class=\"sib-form-block\" style=\"text-align: left\">\r\n            <button class=\"sib-form-block__button sib-form-block__button-with-loader\" form=\"sib-form\" type=\"submit\">\r\n              <svg class=\"icon clickable__icon progress-indicator__icon sib-hide-loader-icon\" viewBox=\"0 0 512 512\" style=\"\">\r\n                <path d=\"M460.116 373.846l-20.823-12.022c-5.541-3.199-7.54-10.159-4.663-15.874 30.137-59.886 28.343-131.652-5.386-189.946-33.641-58.394-94.896-95.833-161.827-99.676C261.028 55.961 256 50.751 256 44.352V20.309c0-6.904 5.808-12.337 12.703-11.982 83.556 4.306 160.163 50.864 202.11 123.677 42.063 72.696 44.079 162.316 6.031 236.832-3.14 6.148-10.75 8.461-16.728 5.01z\" \/>\r\n              <\/svg>\r\n              Subscribe here\r\n            <\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <input type=\"text\" name=\"email_address_check\" value=\"\" class=\"input--hidden\">\r\n        <input type=\"hidden\" name=\"locale\" value=\"de\">\r\n      <\/form>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n<!-- END - We recommend to place the above code where you want the form in your website html  -->\r\n\r\n<!-- START - We recommend to place the below code in footer or bottom of your website html  -->\r\n<script>\r\n  window.REQUIRED_CODE_ERROR_MESSAGE = 'Please select a country code.';\r\n  window.LOCALE = 'de';\r\n  window.EMAIL_INVALID_MESSAGE = window.SMS_INVALID_MESSAGE = \"The information you entered is invalid. Please check the field format and try again.\";\r\n\r\n  window.REQUIRED_ERROR_MESSAGE = \"This field must not be empty. \";\r\n\r\n  window.GENERIC_INVALID_MESSAGE = \"This field cannot be empty. The information you entered is invalid. Please check the field format and try again.\";\r\n\r\n  window.translation = {\r\n    common: {\r\n      selectedList: '{quantity} Liste ausgew\u00e4hlt',\r\n      selectedLists: '{quantity} Listen ausgew\u00e4hlt',\r\n      selectedOption: '{quantity} ausgew\u00e4hlt',\r\n      selectedOptions: '{quantity} ausgew\u00e4hlt',\r\n    }\r\n  };\r\n\r\n  var AUTOHIDE = Boolean(0);\r\n<\/script>\r\n\r\n<script defer src=\"https:\/\/sibforms.com\/forms\/end-form\/build\/main.js\"><\/script>\r\n\r\n<!-- END - We recommend to place the above code in footer or bottom of your website html  -->\r\n<!-- End Brevo Form --><p style=\"font-size:12px;padding-left:16px;\">Your e-mail address is only used to send you our newsletter and information about the activities of Cubro Network Visibility. You can always use the unsubscribe link included in the newsletter.<\/p><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":11843,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_searchwp_excluded":"","_uag_custom_page_level_css":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-11906","page","type-page","status-publish","hentry"],"acf":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"neve-blog":false},"uagb_author_info":{"display_name":"s.bernhardt","author_link":"https:\/\/www.cubro.com\/en\/blog\/author\/s-bernhardt\/"},"uagb_comment_info":0,"uagb_excerpt":null,"_links":{"self":[{"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/pages\/11906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/comments?post=11906"}],"version-history":[{"count":16,"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/pages\/11906\/revisions"}],"predecessor-version":[{"id":30437,"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/pages\/11906\/revisions\/30437"}],"up":[{"embeddable":true,"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/pages\/11843"}],"wp:attachment":[{"href":"https:\/\/www.cubro.com\/en\/wp-json\/wp\/v2\/media?parent=11906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}