<!DOCTYPE html>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1"
    />
    <title>Apache Druid</title>
    <meta name="description" content="Apache Druid console" />
    <link rel="shortcut icon" href="favicon.png" />
    <style>
      body {
        background: #24283b;
      }
      #browser-update {
        background-color: #d9822b;
        border-radius: 3px;
        color: #ffffff;
        font-family: sans-serif;
        font-size: 13px;
        line-height: 1.2;
        padding: 13px;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        text-align: center;
        z-index: 11;
      }
      #browser-update a {
        color: white;
        font-weight: bold;
      }
    </style>
  </head>
  <body class="bp4-dark mouse-mode">
    <div class="app-container"></div>
    <div id="browser-update" style="display: none">
      You are using an unsupported browser. The web console will not work properly.
      <a href="https://browser-update.org/update.html">Update to a supported browser.</a>
    </div>
    <script>
      function showUpdate() {
        document.getElementById('browser-update').style.display = 'block';
      }
      if (!('Proxy' in window)) showUpdate();
      window.onerror = function (message, source, lineno, colno, error) {
        if (error instanceof SyntaxError || message === 'Syntax error') {
          showUpdate();
        }
        return false;
      };
    </script>
    <script src="console-config.js"></script>
    <script src="public/web-console-27.0.0.js"></script>
  </body>
</html>
