CINXE.COM
Apache Cassandra | Apache Cassandra Documentation
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <title>Apache Cassandra | Apache Cassandra Documentation</title> <link rel="stylesheet" href="../assets/css/site.css"> <meta name="description" content="Open Source NoSQL Database Manage massive amounts of data, fast, without losing sleep"> <meta name="keywords" content="Home, apache cassandra"> <link rel="schema.dcterms" href="https://purl.org/dc/terms/"> <meta name="dcterms.subject" content="_"> <meta name="dcterms.identifier" content="master"> <meta name="generator" content="Antora 2.3.4"> <link rel="icon" href="../assets/img/favicon.ico" type="image/x-icon"> <script> const script = document.createElement("script"); const domain = window.location.hostname; script.type = "text/javascript"; script.src = "../assets/js/vendor/plausible.js"; script.setAttribute("data-domain",domain); script.setAttribute("defer",'true'); script.setAttribute("async",'true'); document.getElementsByTagName("head")[0].appendChild(script); </script> <script src="../assets/js/vendor/jquery.js"></script> </head> <body class="homepage home"> <div class="container mx-auto relative"> <meta property="og:type" content="website" /> <meta property="og:description" content="" /> <meta property="og:url" content="/" /> <meta property="og:site_name" content="Apache Cassandra" /> <header id="top-nav"> <div class="inner relative"> <div class="header-social-icons text-right"> <a href="https://bsky.app/profile/cassandra.apache.org" target="_blank" styles="margin-left: 20px;"><img src="../assets/img/bluesky.png" alt="bluesky icon" width="24"></a> <a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank" styles="margin-left: 20px;"><img src="../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a> <a href="https://www.youtube.com/c/PlanetCassandra" target="_blank" styles="margin-left: 20px;"><img src="../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a> </div> <div class="cf"> <div class="logo left"><a href="/"><img src="../assets/img/logo-white-r.png" alt="cassandra logo"></a></div> <div class="mobile-nav-icon right"> <img class="toggle-icon" src="../assets/img/hamburger-nav.svg"> </div> <ul class="main-nav nav-links right flex flex-vert-center flex-space-between"> <li> <a class="nav-link hide-mobile">Get Started</a> <ul class="sub-menu bg-white"> <li class="pa-micro"> <a href="/_/cassandra-basics.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-basics.png" alt="cassandra basics icon"> </div> <div class="sub-nav-text teal py-small"> Cassandra Basics </div> </a> </li> <li class="pa-micro"> <a href="/_/quickstart.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-rocket.png" alt="cassandra basics icon"> </div> <div class="sub-nav-text teal py-small"> Quickstart </div> </a> </li> <li class="pa-micro"> <a href="/_/ecosystem.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-ecosystem.png" alt="cassandra basics icon"> </div> <div class="sub-nav-text teal py-small"> Ecosystem </div> </a> </li> </ul> </li> <li><a class="nav-link" href="/doc/latest/">Documentation</a></li> <li> <a class="nav-link" href="/_/community.html">Community</a> <ul class="sub-menu bg-white"> <li class="pa-micro"> <a href="/_/community.html#code-of-conduct"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-welcome.png" alt="welcome icon"> </div> <div class="sub-nav-text teal py-small"> Welcome </div> </a> </li> <li class="pa-micro hide-mobile"> <a href="/_/community.html#discussions"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-discussions.png" alt="discussions icon"> </div> <div class="sub-nav-text teal py-small"> Discussions </div> </a> </li> <li class="pa-micro hide-mobile"> <a href="/_/community.html#project-governance"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-governance.png" alt="Governance icon"> </div> <div class="sub-nav-text teal py-small"> Governance </div> </a> </li> <li class="pa-micro hide-mobile"> <a href="/_/community.html#how-to-contribute"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-contribute.png" alt="Contribute icon"> </div> <div class="sub-nav-text teal py-small"> Contribute </div> </a> </li> <li class="pa-micro hide-mobile"> <a href="/_/community.html#meet-the-community"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-community.png" alt="Meet the Community icon"> </div> <div class="sub-nav-text teal py-small"> Meet the Community </div> </a> </li> <li class="pa-micro hide-mobile"> <a href="/_/cassandra-catalyst-program.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-catalyst.png" alt="Catalyst icon"> </div> <div class="sub-nav-text teal py-small"> Catalyst Program </div> </a> </li> <li class="pa-micro hide-mobile"> <a href="/_/events.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-events.png" alt="Events icon"> </div> <div class="sub-nav-text teal py-small"> Events </div> </a> </li> </ul> </li> <li> <a class="nav-link hide-mobile">Learn</a> <ul class="sub-menu bg-white"> <li class="pa-micro"> <a href="/_/Apache-Cassandra-5.0-Moving-Toward-an-AI-Driven-Future.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-basics.png" alt="Basics icon"> </div> <div class="sub-nav-text teal py-small"> Cassandra 5.0 </div> </a> </li> <li class="pa-micro"> <a href="/_/case-studies.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-case-study.png" alt="Case Studies icon"> </div> <div class="sub-nav-text teal py-small"> Case Studies </div> </a> </li> <li class="pa-micro"> <a href="/_/resources.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-resources.png" alt="Resources icon"> </div> <div class="sub-nav-text teal py-small"> Resources </div> </a> </li> <li class="pa-micro"> <a href="/_/blog.html"> <div class="sub-nav-icon"> <img src="../assets/img/sub-menu-blog.png" alt="Blog icon"> </div> <div class="sub-nav-text teal py-small"> Blog </div> </a> </li> </ul> </li> <li><a class="nav-link btn btn--filled" href="/_/download.html">Download Now</a></li> </ul> </div> </div> </header> <div class="main-content"> <div class="openblock hero hero--home grad"> <div class="content"> <div class="openblock eye"> <div class="content"> </div> </div> <div class="openblock home-hero-content text-center flex flex-center flex-column relative z2 pa-xlarge"> <div class="content"> <h1 class="discrete">Open Source NoSQL Database</h1> <h2 class="discrete">Manage massive amounts of data, fast, without losing sleep</h2> <div class="paragraph btn btn--filled"> <p><a href="cassandra-basics.html" class="page">Learn More</a></p> </div> <div class="paragraph btn btn--filled"> <p><a href="Apache-Cassandra-5.0-Moving-Toward-an-AI-Driven-Future.html" class="page">Cassandra 5.0</a></p> </div> <div class="paragraph btn btn--filled"> <p><a href="quickstart.html" class="page">Quickstart</a></p> </div> </div> </div> </div> </div> <div class="openblock arrow"> <div class="content"> <div class="openblock home-banner"> <div class="content"> <div class="openblock home-hero-content text-center pa-large"> <div class="content"> <h3 class="discrete">Talks and Keynotes videos from the Cassandra Summit are published!</h3> <div class="paragraph btn btn--grad"> <p><a href="https://events.linuxfoundation.org/cassandra-summit/program/schedule/" target="_blank" rel="noopener">Watch all the videos</a></p> </div> </div> </div> </div> </div> </div> </div> <div class="openblock home-features grad grad--two flex-center relative"> <div class="content"> <div class="openblock inner text-center py-xxlarge"> <div class="content"> <h2 class="discrete">What is Apache Cassandra<span class="image"><img src="_images/registered.svg" alt="Registered" width="24" height="24"></span>?</h2> <h3 class="discrete">Apache Cassandra is an open source NoSQL distributed database trusted by thousands of companies for scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data.</h3> <div class="openblock features-wrapper cf"> <div class="content"> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/hybrid.png" alt="hybrid"></span></p> </div> <h3 class="discrete">Hybrid</h3> <div class="paragraph"> <p>Masterless architecture and low latency means Cassandra will withstand an entire data center outage with no data loss—across public or private clouds and on-premises.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/fault.png" alt="fault"></span></p> </div> <h3 class="discrete">Fault Tolerant</h3> <div class="paragraph"> <p>Cassandra’s support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages. Failed nodes can be replaced with no downtime.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/scalable.png" alt="scalable"></span></p> </div> <h3 class="discrete">Focus on Quality</h3> <div class="paragraph"> <p>To ensure reliability and stability, Cassandra is tested on clusters as large as 1,000 nodes and with hundreds of real world use cases and schemas tested with replay, fuzz, property-based, fault-injection, and performance tests.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/performant.png" alt="performant"></span></p> </div> <h3 class="discrete">Performant</h3> <div class="paragraph"> <p>Cassandra <a href="http://vldb.org/pvldb/vol5/p1724_tilmannrabl_vldb2012.pdf" target="_blank" rel="noopener">consistently outperforms</a> popular NoSQL alternatives in benchmarks and real applications, primarily because of fundamental architectural choices.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/control.png" alt="control"></span></p> </div> <h3 class="discrete">You’re In Control</h3> <div class="paragraph"> <p>Choose between synchronous or asynchronous replication for each update. Highly available asynchronous operations are optimized with features like Hinted Handoff and Read Repair.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/cloud_native.png" alt="cloud native"></span></p> </div> <h3 class="discrete">Security and Observability</h3> <div class="paragraph"> <p>The audit logging feature for operators tracks the DML, DDL, and DCL activity with minimal impact to normal workload performance, while the fqltool allows the capture and replay of production workloads for analysis.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/decentral.png" alt="decentral"></span></p> </div> <h3 class="discrete">Distributed</h3> <div class="paragraph"> <p>Cassandra is suitable for applications that can’t afford to lose data, even when an entire data center goes down. There are no single points of failure. There are no network bottlenecks. Every node in the cluster is identical.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/scalable.png" alt="scalable"></span></p> </div> <h3 class="discrete">Scalable</h3> <div class="paragraph"> <p>Read and write throughput both increase linearly as new machines are added, with no downtime or interruption to applications.</p> </div> </div> </div> <div class="openblock feature text-center ma-small my-large pa-small"> <div class="content"> <div class="paragraph"> <p><span class="image"><img src="_images/Icons/elastic.png" alt="elastic"></span></p> </div> <h3 class="discrete">Elastic</h3> <div class="paragraph"> <p>Cassandra streams data between nodes during scaling operations such as adding a new node or datacenter during peak traffic times. Zero Copy Streaming makes this up to 5x faster without vnodes for a more elastic architecture particularly in cloud and Kubernetes environments.</p> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="openblock users-section arrow"> <div class="content"> <div class="openblock inner text-center py-xxlarge z2"> <div class="content"> <h2 class="discrete">Cassandra Users</h2> <div class="paragraph"> <p>Cassandra is used by thousands of companies with large active data sets.</p> </div> <div class="openblock users-section-flex py-medium"> <div class="content"> <div class="openblock w100 home-quotes full-800 pb-medium"> <div class="content"> <div class="openblock home-quote hidden pa-large text-center"> <div class="content"> <div class="paragraph"> <p>"Netflix uses Apache Cassandra heavily to satisfy its ever-growing persistence needs on its mission to entertain the world. We have been experimenting and partially using the 4.0 beta in our environments and its features like Audit Logging and backpressure."</p> </div> <div class="paragraph"> <p>*– Vinay Chella, Netflix Engineering Manager *</p> </div> </div> </div> <div class="openblock home-quote hidden pa-large text-left"> <div class="content"> <div class="paragraph"> <p>“Humankind is at a pivotal point in history, that requires us to work together to find new innovative ways to process the petabytes of data we create every day, and the WitFoo R&D team has found a friend in Cassandra through our endeavors to meet big-data needs in cybersecurity operations.”</p> </div> <div class="paragraph"> <p>*– Charles Herring, CTO of WitFoo *</p> </div> </div> </div> <div class="openblock home-quote hidden pa-large text-left"> <div class="content"> <div class="paragraph"> <p>"Since 2016, application engineers at Bloomberg have turned to Cassandra because it’s easy to use, easy to scale, and always available. We serve up more than 20 billion requests per day on a nearly 1 PB dataset across a fleet of 1,700+ Cassandra nodes."</p> </div> <div class="paragraph"> <p><strong>– Isaac Reath, Software Engineering Team Lead, NoSQL Infrastructure at Bloomberg</strong></p> </div> </div> </div> <div class="openblock home-quote hidden pa-large text-left"> <div class="content"> <div class="paragraph"> <p>"We needed something that would handle really high write throughput and keep scaling on the write throughput. That forced us to look at distributed stores, and Apache Cassandra was the option that fitted what we needed."</p> </div> <div class="paragraph"> <p><strong>– Elliott Sims Senior Systems Administrator, Backblaze</strong></p> </div> </div> </div> </div> </div> </div> </div> <div class="paragraph btn btn--grad"> <p><a href="case-studies.html" class="page">Read Case Studies</a></p> </div> </div> </div> </div> </div> <div class="openblock home-case-study quote grad py-large"> <div class="content"> <div class="openblock inner text-center inner--narrow py-large z2"> <div class="content"> <h2 class="discrete">Cassandra Ecosystem</h2> <div class="paragraph"> <p>Our ecosystem includes a range of third-party Cassandra projects, tools, products, and services that may be useful to end users.</p> </div> <div class="paragraph btn btn--filled"> <p><a href="ecosystem.html" class="page">Go to Ecosystem</a></p> </div> </div> </div> </div> </div> <div class="openblock home-community arrow flex flex-center"> <div class="content"> <div class="openblock inner text-center py-large"> <div class="content"> <h2 class="discrete">Community Spotlight</h2> <div class="paragraph w50 mx-auto"> <p>Here’s what the Cassandra community has been doing to advance the world’s premier open source NoSQL database.</p> </div> <div class="openblock cf text-left ma-large pa-large"> <div class="content"> <div class="openblock float50 full-800"> <div class="content"> <h3 class="discrete">Behind the scenes of an Apache Cassandra Release</h3> <div class="paragraph"> <p>Formalizing how we balance the need to evolve and provide cutting-edge features with long-term stability. The simple rules we use to decide when to merge and why we’ll be supporting three GA releases going forward, but why we’ve decided to support four releases for the next cycle.</p> </div> <div class="paragraph btn btn--alt my-small"> <p><a href="blog/Behind-the-scenes-of-an-Apache-Cassandra-Release.html" class="page">Read More</a></p> </div> </div> </div> <div class="openblock float50 full-800 flex flex-center pa-medium""> <div class="content"> <div class="imageblock adoc"> <div class="content"> <img src="_images/blog/behind-the-scenes-of-an-apache-cassandra-release-unsplash-lajos-szabo.jpg" alt="Behind the scenes of an Apache Cassandra Release"> </div> </div> </div> </div> </div> </div> <div class="openblock cf text-left ma-large pa-large"> <div class="content"> <div class="openblock float50 full-800 right"> <div class="content"> <h3 class="discrete">Tightening Security for Apache Cassandra: Part 1</h3> <div class="paragraph"> <p>The growth in ecommerce has demanded a greater focus on data security. This is the start of a mini-series by Maulin Vasavada on how to customize SSL/TLS configurations to tighten security in Cassandra 4.0+.</p> </div> <div class="paragraph btn btn--alt my-small"> <p><a href="blog/Tightening-Security-for-Apache-Cassandra-Part-1.html" class="page">Read More</a></p> </div> </div> </div> <div class="openblock float50 full-800 flex flex-center right pa-medium""> <div class="content"> <div class="imageblock adoc"> <div class="content"> <img src="_images/blog/tighten-security-p1-unsplash.jpg" alt="Tightening Security for Apache Cassandra: Part 1"> </div> </div> </div> </div> </div> </div> <div class="openblock cf text-left ma-large pa-large"> <div class="content"> <div class="openblock float50 full-800"> <div class="content"> <h3 class="discrete">Inside Cassandra: an interview with Marcel Birkner at Instana</h3> <div class="paragraph"> <p>A new series that we’ve dubbed "Inside Cassandra" where we interview engineers and devs in the community either about their use of Apache Cassandra to power their businesses or how they contribute to the project. The first installation features an interview with Marcel Birkner, Site Reliability Engineer at Instana, and how they use Apache Cassandra to store and process metric data at scale and benefit from Cassandra’s fault tolerance, and have learned the importance of dog-fooding.</p> </div> <div class="paragraph btn btn--alt my-small"> <p><a href="blog/Inside-Cassandra-an-interview-with-Marcel-Birkner-at-Instana.html" class="page">Read More</a></p> </div> </div> </div> <div class="openblock float50 full-800 flex flex-center pa-medium""> <div class="content"> <div class="imageblock adoc"> <div class="content"> <img src="_images/blog/inside-Cassandra-Marcel-Birkner/image2.png" alt="Inside Cassandra: Marcel Birkner"> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="openblock home-community arrow flex flex-center"> <div class="content"> <div class="openblock inner text-center py-large"> <div class="content"> <h2 class="discrete">Upcoming ASF Events</h2> <div class="paragraph"> <p>Join the Cassandra community at the next ASF event.</p> </div> <div class="openblock"> <div class="content"> <script src="https://www.apachecon.com/event-images/snippet.js"></script> <a class="acevent" data-format="wide" data-width="480"></a> </div> </div> </div> </div> </div> </div> </div> <footer class="grad grad--two flex-center pb-xlarge"> <div class="inner text-center z2 relative"> <h2 class="white py-small">Get started with Cassandra, fast.</h2> <a id="footer-cta" href="/_/quickstart.html" class="btn btn--filled ma-medium">Quickstart Guide</a> </div> <div class="inner flex flex-distribute-items mt-xlarge z2 relative"> <div class="col-2"> <div id="footer-logo" class="logo logo--footer mb-medium"><img src="../assets/img/logo-white-r.png" alt="Cassandra Logo"></div> <p>Apache Cassandra<img src="../assets/img/registered.svg" alt="®" style="width:18px;"> powers mission-critical deployments with improved performance and unparalleled levels of scale in the cloud.</p> <div class="footer-social-icons"> <a href="https://bsky.app/profile/cassandra.apache.org" target="_blank"><img src="../assets/img/bluesky.png" alt="bluesky icon" width="24"></a> <a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank"><img src="../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a> <a href="https://www.youtube.com/c/PlanetCassandra" target="_blank"><img src="../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a> </div> </div> <div class="col-2 flex flex-center"> <ul class="columns-2"> <li class="mb-small"><a href="/">Home</a></li> <li class="mb-small"><a href="/_/cassandra-basics.html">Cassandra Basics</a></li> <li class="mb-small"><a href="/_/quickstart.html">Quickstart</a></li> <li class="mb-small"><a href="/_/ecosystem.html">Ecosystem</a></li> <li class="mb-small"><a href="/doc/latest/">Documentation</a></li> <li class="mb-small"><a href="/_/community.html">Community</a></li> <li class="mb-small"><a href="/_/case-studies.html">Case Studies</a></li> <li class="mb-small"><a href="/_/resources.html">Resources</a></li> <li class="mb-small"><a href="/_/blog.html">Blog</a></li> </ul> </div> </div> </footer> <div class="lower-footer bg-white pa-medium"> <div class="flex flex-row flex-vert-center"> <div class="pr-medium"><img src="../assets/img//feather-small.png" alt="ASF" width="20"></div> <div class="pr-medium"><a href="http://www.apache.org/" target="_blank">Foundation</a></div> <div class="pr-medium"><a href="https://www.apache.org/events/current-event.html" target="_blank">Events</a></div> <div class="pr-medium"><a href="https://www.apache.org/licenses/" target="_blank">License</a></div> <div class="pr-medium"><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks</a></div> <div class="pr-medium"><a href="https://www.apache.org/security" target="_blank">Security</a></div> <div class="pr-medium"><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy</a></div> <div class="pr-medium"><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></div> </div> <p class="my-medium">© 2009-<script>document.write(new Date().getFullYear())</script> <a href="https://apache.org" target="_blank">The Apache Software Foundation</a> under the terms of the Apache License 2.0. Apache, the Apache feather logo, Apache Cassandra, Cassandra, and the Cassandra logo, are either registered trademarks or trademarks of The Apache Software Foundation.</p> </div> <div id="fade" class="hidden"></div> <div id="modal" class="hidden"> <div id="close-modal" class="cursor-pointer"><svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></div> <div id="mod-content" class="vid-mod-content resp-container"></div> </div> <script> jQuery(function(){ var windowW = $(window).width(); $(document) .on('click','.mobile-nav-icon',function(){ $('.main-nav').fadeIn(); }) .on('click','.main-nav',function(){ if(windowW <= 1000){ $(this).fadeOut(); } }) .on('click','#version-toggle',function(){ $(this).toggleClass('active'); $(this).next().fadeToggle(); }) .on('click','#mobile-docs-nav-burger', function(){ $(this).toggleClass('active'); $('.docs-nav').toggleClass('active'); }); var url = window.location.pathname; var isQuickstart = url.includes('quickstart.html'); if(isQuickstart){ var footerCTA = document.getElementById('footer-cta'); footerCTA.innerHTML = 'Get latest updates'; footerCTA.setAttribute('href', '/_/blog.html'); } }); </script> </div> </body> <script> jQuery(function(){ var quotes = $('.home-quotes').find('.home-quote').length; var arr = []; function shuffle(array) { array.sort(() => Math.random() - 0.5); } var i = 0; for(i; i < quotes; i++){ arr.push(i); } shuffle(arr); $('.home-quote').eq(arr[0]).removeClass('hidden'); }); </script> </html>