diff --git a/notebooks/aviation/aviation_update.ipynb b/notebooks/aviation/aviation_update.ipynb
new file mode 100644
index 00000000..5ff0fc49
--- /dev/null
+++ b/notebooks/aviation/aviation_update.ipynb
@@ -0,0 +1,1883 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Aviation Trends\n",
+ "\n",
+ "\n",
+ "There are four international airports in Syria - Damascus International Airport (DAM), Aleppo International Airport (ALP), Bassel Al-Assad International Airport (LTK) and Qamishli International Airport (KAC). DAM and ALP are bigger than the other two.This notebook analyses trends of flights in DAM, ALP and LTK airports.\n",
+ "\n",
+ "## Data \n",
+ "\n",
+ "The dataset used for this update is from [Aviation Stack](https://aviationstack.com/documentation).This data is purchased through their API subscription. The data was validated in Lebanon using FlightRadar and the resulting flight details were a close match although not entirely identical. The validation exercise for Syria is still ongoing. \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Define a function to get a range of dates for the desirable date range"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "from datetime import datetime, timedelta\n",
+ "\n",
+ "\n",
+ "def daterange(start_date, end_date):\n",
+ " for n in range(int((end_date - start_date).days) + 1):\n",
+ " yield (start_date + timedelta(n)).strftime(\"%Y-%m-%d\")\n",
+ "\n",
+ "\n",
+ "# Define the start and end dates\n",
+ "start_date = datetime(2024, 1, 1)\n",
+ "end_date = datetime(2024, 10, 15)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 106,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "# Define empty dataset to concat all the arrivals and departures\n",
+ "departures = pd.DataFrame()\n",
+ "arrivals = pd.DataFrame()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 107,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "289it [14:50, 3.08s/it]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# run the API to collect arrivals and departures\n",
+ "import requests\n",
+ "import urllib3\n",
+ "from tqdm import tqdm\n",
+ "\n",
+ "# Suppress only the InsecureRequestWarning from urllib3\n",
+ "urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n",
+ "\n",
+ "# arr_iata_values = ['LOS', 'KWI', 'SHJ']\n",
+ "# arr_iata_values = ','.join(arr_iata_values)\n",
+ "\n",
+ "for one_day in tqdm(daterange(start_date, end_date)):\n",
+ " params = {\n",
+ " \"access_key\": \"12925396bddce38222e47eed53e76e6c\",\n",
+ " \"dep_iata\": \"LTK\",\n",
+ " #'arr_iata': 'LTK',\n",
+ " \"limit\": \"100\",\n",
+ " # To get the next 100 flights we need to change the offset\n",
+ " #\"offset\": \"100\",\n",
+ " \"flight_date\": one_day,\n",
+ " }\n",
+ "\n",
+ " api_result = requests.get(\n",
+ " \"https://api.aviationstack.com/v1/flights\", params, verify=False\n",
+ " )\n",
+ "\n",
+ " api_response = api_result.json()\n",
+ "\n",
+ " df = pd.DataFrame(api_response[\"data\"])\n",
+ "\n",
+ " departures = pd.concat([departures, df])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 108,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "flight_date\n",
+ "2024-01-02 2\n",
+ "2024-01-03 2\n",
+ "2024-06-30 1\n",
+ "2024-07-30 1\n",
+ "2024-08-20 1\n",
+ " ..\n",
+ "2024-05-05 1\n",
+ "2024-04-28 1\n",
+ "2024-04-23 1\n",
+ "2024-04-21 1\n",
+ "2024-10-15 1\n",
+ "Name: count, Length: 74, dtype: int64"
+ ]
+ },
+ "execution_count": 108,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check if the number of flights per day are 100. If they are exactly 100 we need to rerun the API to get the next 100 flight.\n",
+ "departures['flight_date'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 104,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "flight_date\n",
+ "2024-01-02 2\n",
+ "2024-01-03 2\n",
+ "2024-08-20 2\n",
+ "2024-05-05 1\n",
+ "2024-04-14 1\n",
+ " ..\n",
+ "2024-06-30 1\n",
+ "2024-06-25 1\n",
+ "2024-06-23 1\n",
+ "2024-06-18 1\n",
+ "2024-06-11 1\n",
+ "Name: count, Length: 70, dtype: int64"
+ ]
+ },
+ "execution_count": 104,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Check if the number of flights per day are 100. If they are exactly 100 we need to rerun the API to get the next 100 flight.\n",
+ "arrivals.sort_values(by='flight_date', ascending=False)['flight_date'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 109,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "departures.to_csv(\"../../data/aviation/aviationstack_ltk_01012024_15102024_dep.csv\")\n",
+ "#arrivals.to_csv('../../data/aviation/aviationstack_ltk_01012024_14102024_arr.csv')\n",
+ "\n",
+ "# arrivals.to_csv('../../data/aviation/aviationstack_bey_26082024_01012024_arr.csv')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "source": [
+ "Functions to clean the database and explode columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 110,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "import ast\n",
+ "\n",
+ "\n",
+ "def safe_literal_eval(value):\n",
+ " if isinstance(value, str):\n",
+ " try:\n",
+ " return ast.literal_eval(value)\n",
+ " except (ValueError, SyntaxError):\n",
+ " return value\n",
+ " return value\n",
+ "\n",
+ "\n",
+ "def explode(flights):\n",
+ " flights[\"arrival\"] = flights[\"arrival\"].apply(safe_literal_eval)\n",
+ " flights[\"departure\"] = flights[\"departure\"].apply(safe_literal_eval)\n",
+ "\n",
+ " fr1 = pd.json_normalize(flights[\"arrival\"]).add_suffix(\"_arr\")\n",
+ " fr2 = pd.json_normalize(flights[\"departure\"]).add_suffix(\"_dep\")\n",
+ "\n",
+ " flights_exploded = pd.concat(\n",
+ " [flights.drop(columns=[\"arrival\", \"departure\"]), fr1, fr2], axis=1\n",
+ " )\n",
+ "\n",
+ " return flights_exploded"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "from bokeh.plotting import figure, show\n",
+ "from bokeh.io import output_notebook\n",
+ "from bokeh.models import (\n",
+ " ColumnDataSource,\n",
+ " DatetimeTickFormatter,\n",
+ " FixedTicker,\n",
+ " HoverTool,\n",
+ " Label,\n",
+ " Span,\n",
+ " Panel,\n",
+ " Tabs,\n",
+ " TabPanel\n",
+ ")\n",
+ "from bokeh.palettes import Spectral6\n",
+ "\n",
+ "\n",
+ "def get_area_plot(\n",
+ " df, title, source_text, acled_events_daily, reindex_freq=\"D\", events_dict={}\n",
+ "):\n",
+ " complete_date_range = pd.date_range(\n",
+ " start=df[\"flight_date\"].min(), end=df[\"flight_date\"].max(), freq=reindex_freq\n",
+ " )\n",
+ " # Pivot the data to have flight_status as columns\n",
+ " df_pivot = df.pivot_table(\n",
+ " index=\"flight_date\", columns=\"flight_status\", values=\"iata_arr\", aggfunc=\"sum\"\n",
+ " )\n",
+ " df_reindexed = df_pivot.reindex(complete_date_range).fillna(0)\n",
+ " df_reindexed = df_reindexed.reset_index().rename(columns={\"index\": \"flight_date\"})\n",
+ "\n",
+ " df[\"total_flights\"] = df.groupby(\"flight_date\")[\"iata_arr\"].transform(\"sum\")\n",
+ " if acled_events_daily['nrEvents'].max()<500:\n",
+ " max_flight = acled_events_daily[\"nrEvents\"].max() + 50\n",
+ " else:\n",
+ " max_flight = acled_events_daily[\"nrEvents\"].max() + 200\n",
+ "\n",
+ " # Create a ColumnDataSource\n",
+ " source = ColumnDataSource(df_reindexed)\n",
+ "\n",
+ " # Create a Bokeh figure\n",
+ " p = figure(\n",
+ " x_axis_type=\"datetime\",\n",
+ " height=600,\n",
+ " width=800,\n",
+ " title=title,\n",
+ " toolbar_location='above',\n",
+ " tools=\"pan,box_zoom,reset,save\",\n",
+ " x_axis_label=\"Flight Date\",\n",
+ " y_axis_label=\"Nr Flights\",\n",
+ " )\n",
+ "\n",
+ " # Create a stacked area plot using varea_stack\n",
+ " status_list = list(df[\"flight_status\"].unique())\n",
+ " colors = Spectral6[\n",
+ " : len(status_list)\n",
+ " ] # Adjust the color palette to the number of flight statuses\n",
+ "\n",
+ " p.varea_stack(\n",
+ " stackers=status_list,\n",
+ " x=\"flight_date\",\n",
+ " color=colors,\n",
+ " source=source,\n",
+ " legend_label=status_list,\n",
+ " )\n",
+ " p.line(\n",
+ " x=acled_events_daily[\"event_date\"],\n",
+ " y=acled_events_daily[\"nrEvents\"],\n",
+ " line_width=2,\n",
+ " line_color=\"black\",\n",
+ " legend_label=\"Number of Conflict Events w/o Protests\",\n",
+ " )\n",
+ "\n",
+ " # Customize the plot\n",
+ " p.y_range.start = 0\n",
+ " p.y_range.end = max_flight\n",
+ "\n",
+ " # Format x-axis to show only the first day of each month\n",
+ " p.xaxis.formatter = DatetimeTickFormatter(months=\"%b %Y\", days=\"%d %b %Y\")\n",
+ "\n",
+ " # Limit the number of ticks by using FixedTicker\n",
+ " date_range = pd.date_range(\n",
+ " start=df[\"flight_date\"].min(), end=df[\"flight_date\"].max(), freq=\"W\"\n",
+ " )\n",
+ " ticks = [pd.to_datetime(date).timestamp() * 1000 for date in date_range]\n",
+ "\n",
+ " # complete_date_range = pd.date_range(start=df['flight_date'].min(), end=df['flight_date'].max())\n",
+ "\n",
+ " # Only keep a few ticks for clarity\n",
+ " p.xaxis.ticker = FixedTicker(\n",
+ " ticks=ticks[::2]\n",
+ " ) # Adjust the slicing (e.g., [::2], [::3]) for more or fewer ticks\n",
+ "\n",
+ " # Rotate x-axis labels for better readability\n",
+ " p.xaxis.major_label_orientation = 1.2\n",
+ "\n",
+ " # Enable clickable legend\n",
+ " p.legend.click_policy = \"mute\"\n",
+ "\n",
+ " hover = p.select(dict(type=HoverTool))\n",
+ " hover.tooltips = [\n",
+ " (\"Flight Date\", \"@flight_date{%F}\"),\n",
+ " (\"Status\", \"$name\"),\n",
+ " (\"Value\", \"@$name\"),\n",
+ " ]\n",
+ " hover.formatters = {\"@flight_date\": \"datetime\"}\n",
+ "\n",
+ " # p.legend.title = 'Flight Status'\n",
+ " p.legend.location = \"top_left\"\n",
+ " p.legend.orientation = \"horizontal\"\n",
+ "\n",
+ " source_label = Label(\n",
+ " x=0,\n",
+ " y=0,\n",
+ " x_units=\"screen\",\n",
+ " y_units=\"screen\",\n",
+ " text=source_text,\n",
+ " text_font_size=\"10pt\",\n",
+ " text_color=\"gray\",\n",
+ " )\n",
+ "\n",
+ " # Add the label to the plot\n",
+ " p.add_layout(source_label, \"below\")\n",
+ "\n",
+ " if events_dict:\n",
+ " used_y_positions = []\n",
+ "\n",
+ " for index, (event_date, label) in enumerate(events_dict.items()):\n",
+ " # Convert event_date to a timestamp in milliseconds (as expected by Bokeh for datetime axes)\n",
+ " event_date_dt = pd.to_datetime(event_date)\n",
+ " event_timestamp = event_date_dt.timestamp() * 1000\n",
+ "\n",
+ " # Create a vertical line (Span) at the event date\n",
+ " span = Span(\n",
+ " location=event_timestamp,\n",
+ " dimension=\"height\",\n",
+ " line_color='#C6C6C6',\n",
+ " line_width=2,\n",
+ " line_dash=(4, 4)\n",
+ " )\n",
+ " p.renderers.append(span)\n",
+ "\n",
+ " # Determine a base y position for the label\n",
+ " base_y = max_flight - (max_flight/5) # Adjust for visibility above the plot\n",
+ " y_position = base_y # Default position\n",
+ "\n",
+ " # Adjust y_position if it overlaps with previous labels\n",
+ " while y_position in used_y_positions:\n",
+ " y_position -= base_y / 10 # Move down until it's free\n",
+ "\n",
+ " used_y_positions.append(y_position) # Store the used position\n",
+ "\n",
+ " # Add a label near the vertical line, aligned to the left\n",
+ " event_label = Label(\n",
+ " x=event_timestamp,\n",
+ " y=y_position,\n",
+ " x_offset=-5, # Offset to move the label to the left of the line\n",
+ " text=label,\n",
+ " text_align=\"right\", # Align the text to the right so it stays to the left of the line\n",
+ " text_color=\"black\",\n",
+ " text_font_size=\"10pt\",\n",
+ " background_fill_color=\"grey\",\n",
+ " background_fill_alpha=0.2,\n",
+ " )\n",
+ " p.add_layout(event_label)\n",
+ "\n",
+ " return p\n",
+ " # Show the plot\n",
+ " # show(p)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 136,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "departures = pd.concat(\n",
+ " [\n",
+ " pd.read_csv(\"../../data/aviation/aviationstack_dam_01012024_14102024_dep.csv\"),\n",
+ " pd.read_csv('../../data/aviation/aviationstack_alp_01012024_15102024_dep.csv'),\n",
+ " pd.read_csv('../../data/aviation/aviationstack_ltk_01012024_15102024_dep.csv')\n",
+ " ]\n",
+ ")\n",
+ "departures.drop(columns=\"Unnamed: 0\", inplace=True)\n",
+ "departures.drop_duplicates(inplace=True)\n",
+ "departures.reset_index(drop=True, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 137,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "departures_exploded = explode(departures)\n",
+ "# departures_exploded = departures_exploded[~(departures_exploded['airport_arr']==departures_exploded['airport_dep'])]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 138,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "The following dates are not available in the data. The reasons are unknown.: DatetimeIndex(['2024-01-28', '2024-01-29', '2024-01-30', '2024-04-29',\n",
+ " '2024-04-30', '2024-06-07', '2024-06-08', '2024-06-09'],\n",
+ " dtype='datetime64[ns]', freq=None)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "\n",
+ "df = departures\n",
+ "# Assuming df is your DataFrame and 'flight_date' is the column with the dates\n",
+ "df[\"flight_date\"] = pd.to_datetime(\n",
+ " df[\"flight_date\"]\n",
+ ") # Ensure 'flight_date' is in datetime format\n",
+ "\n",
+ "# Generate the complete date range from the minimum to the maximum date\n",
+ "complete_date_range = pd.date_range(\n",
+ " start=df[\"flight_date\"].min(), end=df[\"flight_date\"].max()\n",
+ ")\n",
+ "\n",
+ "# Find missing dates by comparing the complete date range with the dates in the DataFrame\n",
+ "missing_dates = complete_date_range.difference(df[\"flight_date\"])\n",
+ "\n",
+ "if missing_dates.empty:\n",
+ " print(\"All dates are present.\")\n",
+ "else:\n",
+ " print(\n",
+ " f\"The following dates are not available in the data. The reasons are unknown.: {missing_dates}\"\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Analysing Number of Departures from Beirut International Airport in 2024"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 139,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Data is available from 2024-01-01 00:00:00 to 2024-10-15 00:00:00\n"
+ ]
+ }
+ ],
+ "source": [
+ "beginning = departures[\"flight_date\"].min()\n",
+ "end = departures[\"flight_date\"].max()\n",
+ "print(f\"Data is available from {beginning} to {end}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "source": [
+ "Conduct a duplication check for flights. If the flight is taking off from the same place, to the same place at the same time and has two entries, it is a duplicate flight"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 140,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "There were 4497 flights before duplication check\n",
+ "There are 4464 flights after duplication check. 33 flights were duplicated\n"
+ ]
+ }
+ ],
+ "source": [
+ "before = departures_exploded.shape[0]\n",
+ "print(f\"There were {before} flights before duplication check\")\n",
+ "# check for duplicate flights i.e., flights scheduled to take off at the exact same time from the same place to the same destination\n",
+ "departures_exploded = departures_exploded.drop_duplicates(\n",
+ " subset=[\"flight_date\", \"scheduled_arr\", \"iata_arr\", \"iata_dep\", \"scheduled_dep\"]\n",
+ ")\n",
+ "\n",
+ "after = departures_exploded.shape[0]\n",
+ "print(\n",
+ " f\"There are {after} flights after duplication check. {before-after} flights were duplicated\"\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Flight Status Legend\n",
+ "- Scheduled: A flight that we have a schedule or flight plan for that hasn’t departed or has been canceled.\n",
+ "- Active: A flight that either left the gate or the runway and is on its way to its destination.\n",
+ "- Landed or Arrived: A flight that landed on the runway or arrived at the gate at the destination.\n",
+ "- Canceled: A flight that one or more data sources have indicated is canceled.\n",
+ "- Redirected: The flight is being redirected to another airport.\n",
+ "- Diverted: A flight that has landed or arrived at the gate of an airport where it wasn’t scheduled to arrive.\n",
+ "- Unknown: We were unable to detect the final arrival status."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 116,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "acled_events_daily = pd.read_csv(\n",
+ " \"../../data/conflict/acled_daily_20240101_20241014.csv\"\n",
+ ")\n",
+ "acled_events_daily[\"event_date\"] = acled_events_daily[\"event_date\"].apply(\n",
+ " lambda x: pd.to_datetime(x)\n",
+ ")\n",
+ "acled_events_daily = acled_events_daily[acled_events_daily[\"event_date\"] > \"2024-01-01\"]\n",
+ "acled_events_daily.drop(columns=[\"Unnamed: 0\"], inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "acled_events_daily = (\n",
+ " acled_events_daily.groupby([pd.Grouper(key=\"event_date\", freq=\"D\")])[\n",
+ " [\"nrFatalities\", \"nrEvents\"]\n",
+ " ]\n",
+ " .sum()\n",
+ " .reset_index()\n",
+ ")\n",
+ "acled_events_weekly = (\n",
+ " acled_events_daily.groupby([pd.Grouper(key=\"event_date\", freq=\"W\")])[\n",
+ " [\"nrFatalities\", \"nrEvents\"]\n",
+ " ]\n",
+ " .sum()\n",
+ " .reset_index()\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 141,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " flight_date | \n",
+ " scheduled_arr | \n",
+ " iata_arr | \n",
+ " iata_dep | \n",
+ " scheduled_dep | \n",
+ " flight_status | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "Empty DataFrame\n",
+ "Columns: [flight_date, scheduled_arr, iata_arr, iata_dep, scheduled_dep, flight_status]\n",
+ "Index: []"
+ ]
+ },
+ "execution_count": 141,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Test to see if any flight has more than one flight status assoctaed with it.\n",
+ "duplicate_status_test = (\n",
+ " departures_exploded.groupby(\n",
+ " [\"flight_date\", \"scheduled_arr\", \"iata_arr\", \"iata_dep\", \"scheduled_dep\"]\n",
+ " )[[\"flight_status\"]]\n",
+ " .count()\n",
+ " .reset_index()\n",
+ ")\n",
+ "duplicate_status_test[duplicate_status_test[\"flight_status\"] > 1]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "#missing_dates\n",
+ "\n",
+ "events = {\n",
+ " \"2024-06-09\":\"Airline data\\nnot available\",\n",
+ " \"2024-08-25\":\"Israeli strikes in\\nSouthern Lebanon\",\n",
+ " \"2024-09-23\":\"Start of the Israel-Hezboullah\\nConflict\",\n",
+ " }"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 142,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ "
\n",
+ "
Loading BokehJS ...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"d3a7cafd-1eb4-47cd-9b47-31c548dc9f2c\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"d3a7cafd-1eb4-47cd-9b47-31c548dc9f2c\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"57487c6f-8790-4acf-9379-690f53be804e\":{\"version\":\"3.4.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2353\",\"attributes\":{\"width\":800,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2354\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2355\",\"attributes\":{\"start\":0,\"end\":127}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2363\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2364\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2356\",\"attributes\":{\"text\":\"Daily Departures from DAM, ALP and LTK\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2414\",\"attributes\":{\"name\":\"cancelled\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2350\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2351\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2352\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAPoAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEAAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAAA==\"},\"shape\":[289],\"dtype\":\"int32\",\"order\":\"little\"}],[\"flight_date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABAHyXMeEIAAACFd8x4QgAAwOrJzHhCAACAUBzNeEIAAEC2bs14QgAAABzBzXhCAADAgRPOeEIAAIDnZc54QgAAQE24znhCAAAAswrPeEIAAMAYXc94QgAAgH6vz3hCAABA5AHQeEIAAABKVNB4QgAAwK+m0HhCAACAFfnQeEIAAEB7S9F4QgAAAOGd0XhCAADARvDReEIAAICsQtJ4QgAAQBKV0nhCAAAAeOfSeEIAAMDdOdN4QgAAgEOM03hCAABAqd7TeEIAAAAPMdR4QgAAwHSD1HhCAACA2tXUeEIAAEBAKNV4QgAAAKZ61XhCAADAC83VeEIAAIBxH9Z4QgAAQNdx1nhCAAAAPcTWeEIAAMCiFtd4QgAAgAhp13hCAABAbrvXeEIAAADUDdh4QgAAwDlg2HhCAACAn7LYeEIAAEAFBdl4QgAAAGtX2XhCAADA0KnZeEIAAIA2/Nl4QgAAQJxO2nhCAAAAAqHaeEIAAMBn89p4QgAAgM1F23hCAABAM5jbeEIAAACZ6tt4QgAAwP483HhCAACAZI/ceEIAAEDK4dx4QgAAADA03XhCAADAlYbdeEIAAID72N14QgAAQGEr3nhCAAAAx33eeEIAAMAs0N54QgAAgJIi33hCAABA+HTfeEIAAABex994QgAAwMMZ4HhCAACAKWzgeEIAAECPvuB4QgAAAPUQ4XhCAADAWmPheEIAAIDAteF4QgAAQCYI4nhCAAAAjFrieEIAAMDxrOJ4QgAAgFf/4nhCAABAvVHjeEIAAAAjpON4QgAAwIj243hCAACA7kjkeEIAAEBUm+R4QgAAALrt5HhCAADAH0DleEIAAICFkuV4QgAAQOvk5XhCAAAAUTfmeEIAAMC2ieZ4QgAAgBzc5nhCAABAgi7neEIAAADogOd4QgAAwE3T53hCAACAsyXoeEIAAEAZeOh4QgAAAH/K6HhCAADA5BzpeEIAAIBKb+l4QgAAQLDB6XhCAAAAFhTqeEIAAMB7Zup4QgAAgOG46nhCAABARwvreEIAAACtXet4QgAAwBKw63hCAACAeALseEIAAEDeVOx4QgAAAESn7HhCAADAqfnseEIAAIAPTO14QgAAQHWe7XhCAAAA2/DteEIAAMBAQ+54QgAAgKaV7nhCAABADOjueEIAAAByOu94QgAAwNeM73hCAACAPd/veEIAAECjMfB4QgAAAAmE8HhCAADAbtbweEIAAIDUKPF4QgAAQDp78XhCAAAAoM3xeEIAAMAFIPJ4QgAAgGty8nhCAABA0cTyeEIAAAA3F/N4QgAAwJxp83hCAACAArzzeEIAAEBoDvR4QgAAAM5g9HhCAADAM7P0eEIAAICZBfV4QgAAQP9X9XhCAAAAZar1eEIAAMDK/PV4QgAAgDBP9nhCAABAlqH2eEIAAAD88/Z4QgAAwGFG93hCAACAx5j3eEIAAEAt6/d4QgAAAJM9+HhCAADA+I/4eEIAAIBe4vh4QgAAQMQ0+XhCAAAAKof5eEIAAMCP2fl4QgAAgPUr+nhCAABAW376eEIAAADB0Pp4QgAAwCYj+3hCAACAjHX7eEIAAEDyx/t4QgAAAFga/HhCAADAvWz8eEIAAIAjv/x4QgAAQIkR/XhCAAAA72P9eEIAAMBUtv14QgAAgLoI/nhCAABAIFv+eEIAAACGrf54QgAAwOv//nhCAACAUVL/eEIAAEC3pP94QgAAAB33/3hCAADAgkkAeUIAAIDomwB5QgAAQE7uAHlCAAAAtEABeUIAAMAZkwF5QgAAgH/lAXlCAABA5TcCeUIAAABLigJ5QgAAwLDcAnlCAACAFi8DeUIAAEB8gQN5QgAAAOLTA3lCAADARyYEeUIAAICteAR5QgAAQBPLBHlCAAAAeR0FeUIAAMDebwV5QgAAgETCBXlCAABAqhQGeUIAAAAQZwZ5QgAAwHW5BnlCAACA2wsHeUIAAEBBXgd5QgAAAKewB3lCAADADAMIeUIAAIByVQh5QgAAQNinCHlCAAAAPvoIeUIAAMCjTAl5QgAAgAmfCXlCAABAb/EJeUIAAADVQwp5QgAAwDqWCnlCAACAoOgKeUIAAEAGOwt5QgAAAGyNC3lCAADA0d8LeUIAAIA3Mgx5QgAAQJ2EDHlCAAAAA9cMeUIAAMBoKQ15QgAAgM57DXlCAABANM4NeUIAAACaIA55QgAAwP9yDnlCAACAZcUOeUIAAEDLFw95QgAAADFqD3lCAADAlrwPeUIAAID8DhB5QgAAQGJhEHlCAAAAyLMQeUIAAMAtBhF5QgAAgJNYEXlCAABA+aoReUIAAABf/RF5QgAAwMRPEnlCAACAKqISeUIAAECQ9BJ5QgAAAPZGE3lCAADAW5kTeUIAAIDB6xN5QgAAQCc+FHlCAAAAjZAUeUIAAMDy4hR5QgAAgFg1FXlCAABAvocVeUIAAAAk2hV5QgAAwIksFnlCAACA734WeUIAAEBV0RZ5QgAAALsjF3lCAADAIHYXeUIAAICGyBd5QgAAQOwaGHlCAAAAUm0YeUIAAMC3vxh5QgAAgB0SGXlCAABAg2QZeUIAAADpthl5QgAAwE4JGnlCAACAtFsaeUIAAEAarhp5QgAAAIAAG3lCAADA5VIbeUIAAIBLpRt5QgAAQLH3G3lCAAAAF0oceUIAAMB8nBx5QgAAgOLuHHlCAABASEEdeUIAAACukx15QgAAwBPmHXlCAACAeTgeeUIAAEDfih55QgAAAEXdHnlCAADAqi8feUIAAIAQgh95QgAAQHbUH3lCAAAA3CYgeUIAAMBBeSB5QgAAgKfLIHlCAABADR4heUIAAABzcCF5QgAAwNjCIXlCAACAPhUieUIAAECkZyJ5QgAAAAq6InlCAADAbwwjeUIAAIDVXiN5QgAAQDuxI3lCAAAAoQMkeUIAAMAGViR5QgAAgGyoJHlCAABA0vokeUIAAAA4TSV5QgAAwJ2fJXlCAACAA/IleUIAAEBpRCZ5QgAAAM+WJnlCAADANOkmeUIAAICaOyd5QgAAQACOJ3lCAAAAZuAneUIAAMDLMih5QgAAgDGFKHlCAABAl9coeUI=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"active\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAQQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAACEAAAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAAAUQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAEEAAAAAAAAAAQAAAAAAAABhAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAABBAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAAAAAAAAAAAACEAAAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAUQAAAAAAAABBAAAAAAAAACEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAKEAAAAAAAAAQQAAAAAAAACBAAAAAAAAAEEAAAAAAAAAcQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAIQAAAAAAAAABAAAAAAAAAEEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAYQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAYQAAAAAAAACBAAAAAAAAAFEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAYQAAAAAAAAAhAAAAAAAAAGEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABRAAAAAAAAACEAAAAAAAAAgQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAcQAAAAAAAABBAAAAAAAAAIEAAAAAAAAAQQAAAAAAAABxAAAAAAAAAFEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAQQAAAAAAAABxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhAAAAAAAAAFEAAAAAAAAAUQAAAAAAAABRAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAAJEAAAAAAAAAgQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAgQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABhAAAAAAAAA8D8AAAAAAADwPwAAAAAAABxAAAAAAAAACEAAAAAAAAAYQAAAAAAAAAhAAAAAAAAAFEAAAAAAAAAiQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAHEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAGEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAHEAAAAAAAAAUQAAAAAAAACBAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAUQAAAAAAAABBAAAAAAAAACEAAAAAAAADwPwAAAAAAABBAAAAAAAAAEEAAAAAAAAAgQAAAAAAAAAhAAAAAAAAAJkAAAAAAAAAmQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAGEAAAAAAAAAUQAAAAAAAACBAAAAAAAAAEEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAiQAAAAAAAABxAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAUQAAAAAAAAPA/AAAAAAAAGEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABRAAAAAAAAACEAAAAAAAAAiQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAIEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAcQAAAAAAAAAhAAAAAAAAAHEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAFEAAAAAAAAAQQAAAAAAAABxAAAAAAAAAGEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAHEAAAAAAAAAQQAAAAAAAACBAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"cancelled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"diverted\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"landed\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAACEAAAAAAAAAkQAAAAAAAABhAAAAAAAAAEEAAAAAAAAAYQAAAAAAAAABAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAIEAAAAAAAAAUQAAAAAAAABxAAAAAAAAAJEAAAAAAAAAYQAAAAAAAABRAAAAAAAAAHEAAAAAAAAAgQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAgQAAAAAAAABxAAAAAAAAAIkAAAAAAAAAgQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAAUQAAAAAAAABxAAAAAAAAAFEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAHEAAAAAAAADwPwAAAAAAAABAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAABAAAAAAAAAHEAAAAAAAAAcQAAAAAAAABhAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAGEAAAAAAAAAcQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAIkAAAAAAAAAUQAAAAAAAAAhAAAAAAAAAIEAAAAAAAAAcQAAAAAAAABRAAAAAAAAAHEAAAAAAAAAiQAAAAAAAABBAAAAAAAAAHEAAAAAAAAAYQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAgQAAAAAAAABxAAAAAAAAAGEAAAAAAAAAgQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAgQAAAAAAAABBAAAAAAAAAIEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAEEAAAAAAAAAYQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAcQAAAAAAAABhAAAAAAAAAEEAAAAAAAAAIQAAAAAAAABxAAAAAAAAAGEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAJkAAAAAAAAAYQAAAAAAAABBAAAAAAAAACEAAAAAAAAAYQAAAAAAAAAhAAAAAAAAAFEAAAAAAAAAgQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAYQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAHEAAAAAAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAYQAAAAAAAABxAAAAAAAAAEEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAYQAAAAAAAACBAAAAAAAAAHEAAAAAAAAAUQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAgQAAAAAAAABBAAAAAAAAAIEAAAAAAAAAgQAAAAAAAABhAAAAAAAAAIEAAAAAAAAAiQAAAAAAAACRAAAAAAAAAHEAAAAAAAAAgQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAHEAAAAAAAAAUQAAAAAAAACBAAAAAAAAAHEAAAAAAAAAgQAAAAAAAAABAAAAAAAAAFEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAiQAAAAAAAABxAAAAAAAAAEEAAAAAAAAAYQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAiQAAAAAAAAC5AAAAAAAAAJEAAAAAAAAAcQAAAAAAAACJAAAAAAAAAFEAAAAAAAAAgQAAAAAAAABhAAAAAAAAAIkAAAAAAAAAcQAAAAAAAABRAAAAAAAAAJkAAAAAAAAAUQAAAAAAAACBAAAAAAAAAHEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAEEAAAAAAAAAiQAAAAAAAABhAAAAAAAAAIkAAAAAAAAAQQAAAAAAAABxAAAAAAAAAIkAAAAAAAAAgQAAAAAAAACBAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAIkAAAAAAAAAiQAAAAAAAABhAAAAAAAAAIkAAAAAAAAAYQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAiQAAAAAAAACJAAAAAAAAAFEAAAAAAAAAmQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAiQAAAAAAAACRAAAAAAAAAKkAAAAAAAAAiQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAUQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAIQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAYQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAGEAAAAAAAAAgQAAAAAAAABhAAAAAAAAAHEAAAAAAAAAiQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAUQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAUQAAAAAAAACJAAAAAAAAAJEAAAAAAAAAUQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAYQAAAAAAAAPA/AAAAAAAAIEAAAAAAAAAiQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAiQAAAAAAAABhAAAAAAAAAIEAAAAAAAAAkQAAAAAAAACpAAAAAAAAAIEAAAAAAAAAgQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAcQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAcQAAAAAAAABRAAAAAAAAAIkAAAAAAAAAcQAAAAAAAACZAAAAAAAAAHEAAAAAAAAAoQAAAAAAAACZAAAAAAAAAHEAAAAAAAAAUQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAkQAAAAAAAACJAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAHEAAAAAAAAAYQAAAAAAAABxAAAAAAAAAJkAAAAAAAAAiQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAgQAAAAAAAABRAAAAAAAAA8D8=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"scheduled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAIkAAAAAAAADwPwAAAAAAABBAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAYQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAABBAAAAAAAAAAAAAAAAAAADwPwAAAAAAABRAAAAAAAAAHEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAEEAAAAAAAAAAQAAAAAAAAABAAAAAAAAACEAAAAAAAAAUQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAYQAAAAAAAABRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAHEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAGEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAgQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABxAAAAAAAAACEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAhAAAAAAAAAFEAAAAAAAAAYQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAUQAAAAAAAABRAAAAAAAAA8D8AAAAAAAAAQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAhAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAHEAAAAAAAAAcQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAACEAAAAAAAAAkQAAAAAAAABBAAAAAAAAACEAAAAAAAAAQQAAAAAAAABRAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABxAAAAAAAAACEAAAAAAAAAUQAAAAAAAABRAAAAAAAAACEAAAAAAAAAAQAAAAAAAABhAAAAAAAAAIEAAAAAAAAAkQAAAAAAAABhAAAAAAAAAIEAAAAAAAAAcQAAAAAAAABBAAAAAAAAACEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAEEAAAAAAAAAiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAAJEAAAAAAAAAUQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAQQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAgQAAAAAAAACBAAAAAAAAACEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAAQAAAAAAAACBAAAAAAAAAIkAAAAAAAADwPwAAAAAAAABAAAAAAAAAEEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAcQAAAAAAAAABAAAAAAAAAEEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAAEAAAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAAHEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAHEAAAAAAAAAYQAAAAAAAAPA/AAAAAAAAFEAAAAAAAAAYQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAAAAAAAAAAAAUQAAAAAAAABxAAAAAAAAAEEAAAAAAAADwPwAAAAAAABBAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABRAAAAAAAAAKEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAIEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAYQAAAAAAAABRAAAAAAAAAEEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAUQAAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAABRAAAAAAAAA8D8AAAAAAAAAQAAAAAAAABxAAAAAAAAAGEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAFEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAFEAAAAAAAAAcQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAYQAAAAAAAACRAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAQQAAAAAAAACRAAAAAAAAAIkAAAAAAAAAYQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAIkAAAAAAAAAUQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAQQAAAAAAAABhAAAAAAAAA8D8AAAAAAAAgQAAAAAAAABxAAAAAAAAAEEAAAAAAAADwPwAAAAAAAABAAAAAAAAAGEAAAAAAAADwPwAAAAAAAChAAAAAAAAAFEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAHEAAAAAAAAAcQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAUQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAABBAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"unknown\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAACEAAAAAAAADwPwAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAEEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAEAAAAAAAADwPwAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAADwPwAAAAAAABBAAAAAAAAAAEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAABBAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAQQAAAAAAAABhAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAEEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAIQAAAAAAAABBAAAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAEEAAAAAAAADwPwAAAAAAAABAAAAAAAAACEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAUQAAAAAAAABBAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2415\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2416\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2411\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2396\",\"attributes\":{\"fields\":[]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2397\",\"attributes\":{\"fields\":[\"cancelled\"]}}},\"fill_color\":\"#3288bd\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2412\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2396\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2397\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2413\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2396\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2397\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2425\",\"attributes\":{\"name\":\"landed\",\"data_source\":{\"id\":\"p2350\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2426\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2427\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2422\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2398\",\"attributes\":{\"fields\":[\"cancelled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2399\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\"]}}},\"fill_color\":\"#99d594\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2423\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2398\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2399\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2424\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2398\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2399\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2435\",\"attributes\":{\"name\":\"scheduled\",\"data_source\":{\"id\":\"p2350\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2436\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2437\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2432\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2400\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2401\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\"]}}},\"fill_color\":\"#e6f598\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2433\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2400\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2401\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2434\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2400\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2401\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2445\",\"attributes\":{\"name\":\"active\",\"data_source\":{\"id\":\"p2350\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2446\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2447\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2442\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2402\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2403\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\",\"active\"]}}},\"fill_color\":\"#fee08b\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2443\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2402\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2403\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2444\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2402\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2403\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2455\",\"attributes\":{\"name\":\"unknown\",\"data_source\":{\"id\":\"p2350\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2456\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2457\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2452\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2404\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\",\"active\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2405\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\",\"active\",\"unknown\"]}}},\"fill_color\":\"#fc8d59\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2453\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2404\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2405\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2454\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2404\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2405\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2465\",\"attributes\":{\"name\":\"diverted\",\"data_source\":{\"id\":\"p2350\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2466\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2467\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2462\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2406\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\",\"active\",\"unknown\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2407\",\"attributes\":{\"fields\":[\"cancelled\",\"landed\",\"scheduled\",\"active\",\"unknown\",\"diverted\"]}}},\"fill_color\":\"#d53e4f\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2463\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2406\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2407\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2464\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2406\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2407\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2475\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2469\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2470\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2471\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAhXfMeEIAAMDqycx4QgAAgFAczXhCAABAtm7NeEIAAAAcwc14QgAAwIETznhCAACA52XOeEIAAEBNuM54QgAAALMKz3hCAADAGF3PeEIAAIB+r894QgAAQOQB0HhCAAAASlTQeEIAAMCvptB4QgAAgBX50HhCAABAe0vReEIAAADhndF4QgAAwEbw0XhCAACArELSeEIAAEASldJ4QgAAAHjn0nhCAADA3TnTeEIAAIBDjNN4QgAAQKne03hCAAAADzHUeEIAAMB0g9R4QgAAgNrV1HhCAABAQCjVeEIAAACmetV4QgAAwAvN1XhCAACAcR/WeEIAAEDXcdZ4QgAAAD3E1nhCAADAohbXeEIAAIAIadd4QgAAQG6713hCAAAA1A3YeEIAAMA5YNh4QgAAgJ+y2HhCAABABQXZeEIAAABrV9l4QgAAwNCp2XhCAACANvzZeEIAAECcTtp4QgAAAAKh2nhCAADAZ/PaeEIAAIDNRdt4QgAAQDOY23hCAAAAmerbeEIAAMD+PNx4QgAAgGSP3HhCAABAyuHceEIAAAAwNN14QgAAwJWG3XhCAACA+9jdeEIAAEBhK954QgAAAMd93nhCAADALNDeeEIAAICSIt94QgAAQPh033hCAAAAXsffeEIAAMDDGeB4QgAAgCls4HhCAABAj77geEIAAAD1EOF4QgAAwFpj4XhCAACAwLXheEIAAEAmCOJ4QgAAAIxa4nhCAADA8azieEIAAIBX/+J4QgAAQL1R43hCAAAAI6TjeEIAAMCI9uN4QgAAgO5I5HhCAABAVJvkeEIAAAC67eR4QgAAwB9A5XhCAACAhZLleEIAAEDr5OV4QgAAAFE35nhCAADAtonmeEIAAIAc3OZ4QgAAQIIu53hCAAAA6IDneEIAAMBN0+d4QgAAgLMl6HhCAABAGXjoeEIAAAB/yuh4QgAAwOQc6XhCAACASm/peEIAAECwwel4QgAAABYU6nhCAADAe2bqeEIAAIDhuOp4QgAAQEcL63hCAAAArV3reEIAAMASsOt4QgAAgHgC7HhCAABA3lTseEIAAABEp+x4QgAAwKn57HhCAACAD0zteEIAAEB1nu14QgAAANvw7XhCAADAQEPueEIAAICmle54QgAAQAzo7nhCAAAAcjrveEIAAMDXjO94QgAAgD3f73hCAABAozHweEIAAAAJhPB4QgAAwG7W8HhCAACA1CjxeEIAAEA6e/F4QgAAAKDN8XhCAADABSDyeEIAAIBrcvJ4QgAAQNHE8nhCAAAANxfzeEIAAMCcafN4QgAAgAK883hCAABAaA70eEIAAADOYPR4QgAAwDOz9HhCAACAmQX1eEIAAED/V/V4QgAAAGWq9XhCAADAyvz1eEIAAIAwT/Z4QgAAQJah9nhCAAAA/PP2eEIAAMBhRvd4QgAAgMeY93hCAABALev3eEIAAACTPfh4QgAAwPiP+HhCAACAXuL4eEIAAEDENPl4QgAAACqH+XhCAADAj9n5eEIAAID1K/p4QgAAQFt++nhCAAAAwdD6eEIAAMAmI/t4QgAAgIx1+3hCAABA8sf7eEIAAABYGvx4QgAAwL1s/HhCAACAI7/8eEIAAECJEf14QgAAAO9j/XhCAADAVLb9eEIAAIC6CP54QgAAQCBb/nhCAAAAhq3+eEIAAMDr//54QgAAgFFS/3hCAABAt6T/eEIAAAAd9/94QgAAwIJJAHlCAACA6JsAeUIAAEBO7gB5QgAAALRAAXlCAADAGZMBeUIAAIB/5QF5QgAAQOU3AnlCAAAAS4oCeUIAAMCw3AJ5QgAAgBYvA3lCAABAfIEDeUIAAADi0wN5QgAAwEcmBHlCAACArXgEeUIAAEATywR5QgAAAHkdBXlCAADA3m8FeUIAAIBEwgV5QgAAQKoUBnlCAAAAEGcGeUIAAMB1uQZ5QgAAgNsLB3lCAABAQV4HeUIAAACnsAd5QgAAwAwDCHlCAACAclUIeUIAAEDYpwh5QgAAAD76CHlCAADAo0wJeUIAAIAJnwl5QgAAQG/xCXlCAAAA1UMKeUIAAMA6lgp5QgAAgKDoCnlCAABABjsLeUIAAABsjQt5QgAAwNHfC3lCAACANzIMeUIAAECdhAx5QgAAAAPXDHlCAADAaCkNeUIAAIDOew15QgAAQDTODXlCAAAAmiAOeUIAAMD/cg55QgAAgGXFDnlCAABAyxcPeUIAAAAxag95QgAAwJa8D3lCAACA/A4QeUIAAEBiYRB5QgAAAMizEHlCAADALQYReUIAAICTWBF5QgAAQPmqEXlCAAAAX/0ReUIAAMDETxJ5QgAAgCqiEnlCAABAkPQSeUIAAAD2RhN5QgAAwFuZE3lCAACAwesTeUIAAEAnPhR5QgAAAI2QFHlCAADA8uIUeUIAAIBYNRV5QgAAQL6HFXlCAAAAJNoVeUIAAMCJLBZ5QgAAgO9+FnlCAABAVdEWeUIAAAC7Ixd5QgAAwCB2F3lCAACAhsgXeUIAAEDsGhh5QgAAAFJtGHlCAADAt78YeUIAAIAdEhl5QgAAQINkGXlCAAAA6bYZeUIAAMBOCRp5QgAAgLRbGnlCAABAGq4aeUIAAACAABt5QgAAwOVSG3lCAACAS6UbeUIAAECx9xt5QgAAABdKHHlCAADAfJwceUIAAIDi7hx5QgAAQEhBHXlCAAAArpMdeUIAAMAT5h15QgAAgHk4HnlCAABA34oeeUIAAABF3R55QgAAwKovH3lCAACAEIIfeUIAAEB21B95QgAAANwmIHlCAADAQXkgeUIAAICnyyB5QgAAQA0eIXlCAAAAc3AheUIAAMDYwiF5QgAAgD4VInlCAABApGcieUIAAAAKuiJ5QgAAwG8MI3lCAACA1V4jeUIAAEA7sSN5QgAAAKEDJHlCAADABlYkeUIAAIBsqCR5QgAAQNL6JHlCAAAAOE0leUI=\"},\"shape\":[277],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"IQAAABUAAAAtAAAAKAAAADQAAABDAAAANwAAAC8AAAAeAAAAIAAAACgAAAAoAAAAOQAAADsAAAAhAAAALwAAACgAAAAbAAAAJQAAADIAAAAmAAAAFgAAABoAAAAWAAAAEgAAACsAAAArAAAAEgAAADkAAAAeAAAAFQAAACQAAAAhAAAAJQAAACAAAAAvAAAAJgAAACQAAAAiAAAALAAAADQAAAAtAAAAIgAAABwAAAATAAAAGQAAACkAAAAtAAAAFAAAACsAAAAeAAAAJAAAAB4AAAArAAAAMwAAACkAAAA9AAAAJwAAABwAAAAeAAAAMQAAADAAAAAxAAAAQAAAACYAAAAeAAAAJwAAACgAAAAvAAAAIAAAACEAAAAeAAAAIgAAACgAAAAsAAAAOAAAACsAAAA3AAAAIgAAACMAAAAnAAAAJwAAAC4AAAAfAAAAJwAAACcAAAApAAAAMAAAACwAAAAsAAAAMQAAAC4AAAAlAAAALQAAAC4AAAAzAAAAHwAAAC4AAAAfAAAAGwAAABMAAAApAAAALQAAACEAAAAuAAAALQAAABwAAAAlAAAAKQAAACoAAAAfAAAAJwAAACIAAAAiAAAAIAAAACsAAAA2AAAALwAAACUAAAAiAAAAJAAAAB4AAAAqAAAAJQAAADYAAAAkAAAAJQAAACsAAAAhAAAAKgAAADYAAAAaAAAAFAAAACMAAAAgAAAAFAAAAC0AAAAoAAAAMQAAABUAAAAmAAAANQAAACcAAAAhAAAAKwAAACoAAAAxAAAAKAAAACUAAAARAAAAKQAAACgAAAApAAAAGwAAACMAAAAcAAAAHwAAACsAAAAsAAAAMAAAACoAAAApAAAAMwAAACoAAAAnAAAAGAAAACAAAAAXAAAAHQAAAB0AAAAbAAAAKQAAACEAAAAjAAAALgAAACwAAAAhAAAAKgAAACcAAAA0AAAAMgAAACcAAAAXAAAAKQAAAC4AAAAwAAAAKgAAABcAAAAlAAAANgAAAC4AAAAjAAAAJQAAACEAAAAyAAAANQAAACsAAAAxAAAAKQAAAC0AAAA0AAAAOQAAAB0AAAAuAAAAMAAAACkAAAA1AAAATQAAAEAAAAAsAAAAJAAAACIAAAAmAAAAKwAAAC8AAAAeAAAAIwAAAC0AAAAoAAAAMAAAAEkAAAA6AAAAKAAAACoAAAAiAAAALwAAACYAAAAmAAAAHgAAAC0AAAAeAAAALAAAABoAAAAhAAAALwAAAC0AAAArAAAAFgAAABsAAAAbAAAAHQAAACUAAAAjAAAAKAAAACoAAAAgAAAAIAAAACMAAAAuAAAAMAAAACkAAAAjAAAAKQAAACIAAAAdAAAAIwAAADMAAAAwAAAAJgAAACkAAAAWAAAALAAAACgAAAArAAAAHgAAAC4AAAAiAAAAJgAAAB0AAAAXAAAAKgAAADUAAAA2AAAAMwAAABkAAAAoAAAAHwAAAA==\"},\"shape\":[277],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2476\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2477\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2472\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2473\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2474\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2482\",\"attributes\":{\"location\":1717891200000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2484\",\"attributes\":{\"location\":1724544000000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2486\",\"attributes\":{\"location\":1727049600000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2362\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p2387\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p2388\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p2389\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p2394\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2395\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2382\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2383\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2384\"},\"axis_label\":\"Nr Flights\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2385\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p2365\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"FixedTicker\",\"id\":\"p2480\",\"attributes\":{\"ticks\":[1704585600000.0,1705795200000.0,1707004800000.0,1708214400000.0,1709424000000.0,1710633600000.0,1711843200000.0,1713052800000.0,1714262400000.0,1715472000000.0,1716681600000.0,1717891200000.0,1719100800000.0,1720310400000.0,1721520000000.0,1722729600000.0,1723939200000.0,1725148800000.0,1726358400000.0,1727568000000.0,1728777600000.0],\"minor_ticks\":[]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p2479\",\"attributes\":{\"days\":\"%d %b %Y\",\"months\":\"%b %Y\"}},\"axis_label\":\"Flight Date\",\"major_label_orientation\":1.2,\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2380\"}}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2481\",\"attributes\":{\"text\":\"Source: Flight data from AviationStack and conflict events from ACLED\",\"text_color\":\"gray\",\"text_font_size\":\"10pt\",\"x\":0,\"y\":0,\"x_units\":\"screen\",\"y_units\":\"screen\"}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2381\",\"attributes\":{\"axis\":{\"id\":\"p2365\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2386\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p2382\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p2417\",\"attributes\":{\"location\":\"top_left\",\"orientation\":\"horizontal\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2418\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"cancelled\"},\"renderers\":[{\"id\":\"p2414\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2428\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"landed\"},\"renderers\":[{\"id\":\"p2425\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2438\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"scheduled\"},\"renderers\":[{\"id\":\"p2435\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2448\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"active\"},\"renderers\":[{\"id\":\"p2445\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2458\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"unknown\"},\"renderers\":[{\"id\":\"p2455\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2468\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"diverted\"},\"renderers\":[{\"id\":\"p2465\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2478\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Number of Conflict Events w/o Protests\"},\"renderers\":[{\"id\":\"p2475\"}]}}]}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2483\",\"attributes\":{\"text\":\"Airline data\\nnot available\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1717891200000.0,\"y\":101.6,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2485\",\"attributes\":{\"text\":\"Israeli strikes in\\nSouthern Lebanon\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1724544000000.0,\"y\":91.44,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2487\",\"attributes\":{\"text\":\"Start of the Israel-Hezboullah\\nConflict\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1727049600000.0,\"y\":81.28,\"x_offset\":-5}}]}}]}};\n const render_items = [{\"docid\":\"57487c6f-8790-4acf-9379-690f53be804e\",\"roots\":{\"p2353\":\"a7f03ebe-70bd-4539-a437-bf1bc39ed8a1\"},\"root_ids\":[\"p2353\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
+ "application/vnd.bokehjs_exec.v0+json": ""
+ },
+ "metadata": {
+ "application/vnd.bokehjs_exec.v0+json": {
+ "id": "p2353"
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "output_notebook() # Display plots inline in a Jupyter notebook\n",
+ "\n",
+ "complete_date_range = pd.date_range(\n",
+ " start=df[\"flight_date\"].min(), end=df[\"flight_date\"].max()\n",
+ ")\n",
+ "df = (\n",
+ " departures_exploded.groupby([\"flight_date\", \"flight_status\"])\n",
+ " .count()[[\"iata_arr\"]]\n",
+ " .reset_index()\n",
+ ")\n",
+ "df[\"flight_date\"] = df[\"flight_date\"].apply(lambda x: pd.to_datetime(x))\n",
+ "\n",
+ "show(\n",
+ " get_area_plot(\n",
+ " df,\n",
+ " \"Daily Departures from DAM, ALP and LTK\",\n",
+ " \"Source: Flight data from AviationStack and conflict events from ACLED\",\n",
+ " acled_events_daily,\n",
+ " events_dict=events,\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Findings\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "iata_mapping = {\n",
+ " \"BEY\": \"Beirut\",\n",
+ " \"ADA\": \"Adana\",\n",
+ " \"ADD\": \"Addis Ababa\",\n",
+ " \"AMM\": \"Amman\",\n",
+ " \"AUH\": \"Abu Dhabi\",\n",
+ " \"BAH\": \"Bahrain\",\n",
+ " \"BER\": \"Berlin\",\n",
+ " \"BGW\": \"Baghdad\",\n",
+ " \"CAI\": \"Cairo\",\n",
+ " \"CDG\": \"Paris (Charles de Gaulle)\",\n",
+ " \"DOH\": \"Doha\",\n",
+ " \"DUS\": \"Düsseldorf\",\n",
+ " \"DXB\": \"Dubai\",\n",
+ " \"FCO\": \"Rome (Fiumicino)\",\n",
+ " \"FRA\": \"Frankfurt\",\n",
+ " \"GVA\": \"Geneva\",\n",
+ " \"IST\": \"Istanbul\",\n",
+ " \"JED\": \"Jeddah\",\n",
+ " \"KAC\": \"Kuwait City\",\n",
+ " \"KWI\": \"Kuwait City\",\n",
+ " \"LCA\": \"Larnaca\",\n",
+ " \"LHR\": \"London (Heathrow)\",\n",
+ " \"LXR\": \"Luxor\",\n",
+ " \"MAD\": \"Madrid\",\n",
+ " \"NJF\": \"Najaf\",\n",
+ " \"ORY\": \"Paris (Orly)\",\n",
+ " \"ATH\": \"Athens\",\n",
+ " \"AYT\": \"Antalya\",\n",
+ " \"BRU\": \"Brussels\",\n",
+ " \"BSR\": \"Basra\",\n",
+ " \"CMF\": \"Chambéry\",\n",
+ " \"CPH\": \"Copenhagen\",\n",
+ " \"DMM\": \"Dammam\",\n",
+ " \"EBL\": \"Erbil\",\n",
+ " \"ESB\": \"Ankara\",\n",
+ " \"IKA\": \"Tehran\",\n",
+ " \"ACC\": \"Accra\",\n",
+ " \"ADJ\": \"Amman\",\n",
+ " \"ALP\": \"Aleppo\",\n",
+ " \"BRE\": \"Bremen\",\n",
+ " \"DAM\": \"Damascus\",\n",
+ " \"ISU\": \"Sulaymaniyah\",\n",
+ " \"AKT\": \"Akrotiri\",\n",
+ " \"EVN\": \"Yerevan\",\n",
+ " \"ARN\": \"Stockholm\",\n",
+ " \"BZZ\": \"Brize Norton\",\n",
+ " \"AZI\": \"Abu Dhabi (Al Bateen)\",\n",
+ " \"ADB\": \"Izmir\",\n",
+ " \"HAM\": \"Hamburg\",\n",
+ " \"HKG\": \"Hong Kong\",\n",
+ " \"FIH\": \"Kinshasa\",\n",
+ " \"CMB\": \"Colombo\",\n",
+ " \"NCE\": \"Nice\",\n",
+ " \"MFM\": \"Macau\",\n",
+ " \"MNL\": \"Manila\",\n",
+ " \"OTP\": \"Bucharest\",\n",
+ " \"RUH\": \"Riyadh\",\n",
+ " \"LOS\": \"Lagos\",\n",
+ " \"MLA\": \"Malta\",\n",
+ " \"MRS\": \"Marseille\",\n",
+ " \"PSA\": \"Pisa\",\n",
+ " \"ISL\": \"Istanbul (Sabiha Gökçen)\",\n",
+ " \"ALG\": \"Algiers\",\n",
+ " \"SAW\": \"Istanbul (Sabiha Gökçen)\",\n",
+ " \"SHJ\": \"Sharjah\",\n",
+ " \"SSH\": \"Sharm El Sheikh\",\n",
+ " \"DWC\": \"Dubai (Al Maktoum)\",\n",
+ " \"PFO\": \"Paphos\",\n",
+ " \"MCT\": \"Muscat\",\n",
+ " \"CIA\": \"Rome (Ciampino)\",\n",
+ " \"LBG\": \"Paris (Le Bourget)\",\n",
+ " \"LEJ\": \"Leipzig\",\n",
+ " \"BIA\": \"Bastia\",\n",
+ " \"BUD\": \"Budapest\",\n",
+ " \"CHQ\": \"Chania\",\n",
+ " \"HAN\": \"Hanoi\",\n",
+ " \"AMS\": \"Amsterdam\",\n",
+ " \"VIY\": \"Vigo\",\n",
+ " \"PNH\": \"Phnom Penh\",\n",
+ " \"BRI\": \"Bari\",\n",
+ " \"EIN\": \"Eindhoven\",\n",
+ " \"NBO\": \"Nairobi\",\n",
+ " \"CEQ\": \"Cannes\",\n",
+ " \"LYS\": \"Lyon\",\n",
+ " \"KTM\": \"Kathmandu\",\n",
+ " \"SIR\": \"Sion\",\n",
+ " \"BEG\": \"Belgrade\",\n",
+ " \"INI\": \"Niš\",\n",
+ " \"RMS\": \"Ramstein\",\n",
+ " \"ISB\": \"Islamabad\",\n",
+ " \"ZAZ\": \"Zaragoza\",\n",
+ " \"HRG\": \"Hurghada\",\n",
+ " \"KGS\": \"Kos\",\n",
+ " \"MED\": \"Medina\",\n",
+ " \"MHD\": \"Mashhad\",\n",
+ " \"HER\": \"Heraklion\",\n",
+ " \"ASW\": \"Aswan\",\n",
+ " \"DUB\": \"Dublin\",\n",
+ " \"HBE\": \"Alexandria\",\n",
+ " \"ABJ\": \"Abidjan\",\n",
+ " \"CTA\": \"Catania\",\n",
+ " \"BOJ\": \"Burgas\",\n",
+ " \"LDE\": \"Lourdes\",\n",
+ " \"DEL\": \"Delhi\",\n",
+ " \"LAD\": \"Luanda\",\n",
+ " \"BJZ\": \"Badajoz\",\n",
+ " \"MIR\": \"Monastir\",\n",
+ " \"MXP\": \"Milan (Malpensa)\",\n",
+ " \"HYD\": \"Hyderabad\",\n",
+ " \"KRK\": \"Krakow\",\n",
+ " \"BJV\": \"Bodrum\",\n",
+ " \"GYD\": \"Baku\",\n",
+ " \"TLV\": \"Tel Aviv\",\n",
+ " \"WAW\": \"Warsaw\",\n",
+ " \"DLM\": \"Dalaman\",\n",
+ " \"IBZ\": \"Ibiza\",\n",
+ " \"BLQ\": \"Bologna\",\n",
+ " \"FAB\": \"Farnborough\",\n",
+ " \"FLR\": \"Florence\",\n",
+ " \"BRQ\": \"Brno\",\n",
+ " \"BJY\": \"Belgrade (Batajnica)\",\n",
+ " \"GOT\": \"Gothenburg\",\n",
+ " \"DBB\": \"Dabaa\",\n",
+ " \"CGN\": \"Cologne\",\n",
+ " \"FOG\": \"Foggia\",\n",
+ " \"FJR\": \"Fujairah\",\n",
+ " \"CFU\": \"Corfu\",\n",
+ " \"ABV\": \"Abuja\",\n",
+ " \"COV\": \"Coventry\",\n",
+ " \"BUS\": \"Batumi\",\n",
+ " \"ZRH\": \"Zurich\",\n",
+ " \"UAB\": \"Incirlik\",\n",
+ " \"ULH\": \"Al Ula\",\n",
+ " \"TBS\": \"Tbilisi\",\n",
+ " \"STN\": \"London (Stansted)\",\n",
+ " \"XJD\": \"Al Udeid\",\n",
+ " \"TEB\": \"Teterboro\",\n",
+ " \"SPX\": \"Spangdahlem\",\n",
+ " \"VAR\": \"Varna\",\n",
+ " \"LIN\": \"Milan (Linate)\",\n",
+ " \"TMP\": \"Tampere\",\n",
+ " \"VCE\": \"Venice\",\n",
+ " \"LTN\": \"London (Luton)\",\n",
+ " \"SKG\": \"Thessaloniki\",\n",
+ " \"TRN\": \"Turin\",\n",
+ " \"TUN\": \"Tunis\",\n",
+ " \"THR\": \"Tehran\",\n",
+ " \"OSR\": \"Ostrava\",\n",
+ " \"SOF\": \"Sofia\",\n",
+ " \"TRS\": \"Trieste\",\n",
+ " \"LIS\": \"Lisbon\",\n",
+ " \"JMK\": \"Mykonos\",\n",
+ " \"RHO\": \"Rhodes\",\n",
+ " \"KYE\": \"Kiryat Shmona\",\n",
+ " \"RKE\": \"Roskilde\",\n",
+ " \"RIX\": \"Riga\",\n",
+ " \"TIV\": \"Tivat\",\n",
+ " \"NAP\": \"Naples\",\n",
+ " \"OLB\": \"Olbia\",\n",
+ " \"MUH\": \"Marsa Matruh\",\n",
+ " \"VIE\": \"Vienna\",\n",
+ " \"SZX\": \"Shenzhen\",\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "departures_exploded[\"airportcity\"] = departures_exploded[\"iata_arr\"].map(iata_mapping)\n",
+ "most_changed_departures = (\n",
+ " pd.DataFrame(\n",
+ " departures_exploded[\n",
+ " departures_exploded[\"flight_status\"].isin(\n",
+ " [\"scheduled\", \"cancelled\", \"diverted\"]\n",
+ " )\n",
+ " ][\"airportcity\"]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")\n",
+ "most_cancelled_departures = (\n",
+ " pd.DataFrame(\n",
+ " departures_exploded[departures_exploded[\"flight_status\"].isin([\"cancelled\"])][\n",
+ " \"airportcity\"\n",
+ " ]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")\n",
+ "most_scheduled_departures = (\n",
+ " pd.DataFrame(\n",
+ " departures_exploded[departures_exploded[\"flight_status\"].isin([\"scheduled\"])][\n",
+ " \"airportcity\"\n",
+ " ]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")\n",
+ "most_diverted_departures = (\n",
+ " pd.DataFrame(\n",
+ " departures_exploded[departures_exploded[\"flight_status\"].isin([\"diverted\"])][\n",
+ " \"airportcity\"\n",
+ " ]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 144,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ "
\n",
+ "
Loading BokehJS ...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"bc395ff1-f9d1-479f-b033-226f2e6f530e\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"bc395ff1-f9d1-479f-b033-226f2e6f530e\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"0264de37-93b3-4774-a248-62cd8d8ee244\":{\"version\":\"3.4.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p2692\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p2691\",\"attributes\":{\"width\":800,\"text\":\"Top 10 Destinations with Changes in Departures from DAM, ALP and LTK in 2024
\"}},{\"type\":\"object\",\"name\":\"Tabs\",\"id\":\"p2690\",\"attributes\":{\"tabs\":[{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p2545\",\"attributes\":{\"title\":\"Most Changed Departures\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p2544\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2501\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2503\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p2511\",\"attributes\":{\"factors\":[\"Basra\",\"Tehran\",\"Doha\",\"Dubai\",\"Beirut\",\"Baghdad\",\"Kuwait City\",\"Sharjah\",\"Erbil\",\"Najaf\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2512\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p2513\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2504\",\"attributes\":{\"text\":\"Most Changed Departures in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2531\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2498\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2499\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2500\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CQAAAAcAAAAIAAAABgAAAAUAAAAEAAAAAwAAAAIAAAABAAAAAAAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Basra\",\"Tehran\",\"Doha\",\"Dubai\",\"Beirut\",\"Baghdad\",\"Kuwait City\",\"Sharjah\",\"Erbil\",\"Najaf\"],\"shape\":[10],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"EgAAABUAAAAVAAAAHAAAAC4AAABLAAAAgwAAAI4AAADWAAAA9AAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2532\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2533\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2528\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2529\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2530\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2540\",\"attributes\":{\"data_source\":{\"id\":\"p2498\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2541\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2542\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2537\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2538\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2539\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2510\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2524\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p2519\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p2520\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p2521\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2522\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2514\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2515\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2516\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2517\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2518\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p2514\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2523\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p2519\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p2543\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p2593\",\"attributes\":{\"title\":\"Most Cancelled Departures\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p2592\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2549\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2551\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p2559\",\"attributes\":{\"factors\":[\"Sharjah\",\"Kuwait City\",\"Doha\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2560\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p2561\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2552\",\"attributes\":{\"text\":\"Most Cancelled Departures in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2579\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2546\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2547\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2548\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AgAAAAEAAAAAAAAA\"},\"shape\":[3],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Sharjah\",\"Kuwait City\",\"Doha\"],\"shape\":[3],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAUAAAAHAAAA\"},\"shape\":[3],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2580\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2581\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2576\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2577\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2578\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2588\",\"attributes\":{\"data_source\":{\"id\":\"p2546\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2589\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2590\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2585\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2586\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2587\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2558\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2572\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p2567\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p2568\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p2569\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2570\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2562\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2563\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2564\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2565\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2566\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p2562\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2571\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p2567\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p2591\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p2641\",\"attributes\":{\"title\":\"Most Scheduled Departures\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p2640\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2597\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2599\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p2607\",\"attributes\":{\"factors\":[\"Doha\",\"Basra\",\"Tehran\",\"Dubai\",\"Beirut\",\"Baghdad\",\"Kuwait City\",\"Sharjah\",\"Erbil\",\"Najaf\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2608\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p2609\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2600\",\"attributes\":{\"text\":\"Most Scheduled Departures in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2627\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2594\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2595\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2596\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CQAAAAgAAAAHAAAABgAAAAUAAAAEAAAAAwAAAAIAAAABAAAAAAAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Doha\",\"Basra\",\"Tehran\",\"Dubai\",\"Beirut\",\"Baghdad\",\"Kuwait City\",\"Sharjah\",\"Erbil\",\"Najaf\"],\"shape\":[10],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"DgAAABIAAAAUAAAAGwAAAC4AAABHAAAAeAAAAI0AAADVAAAA8wAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2628\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2629\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2624\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2625\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2626\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2636\",\"attributes\":{\"data_source\":{\"id\":\"p2594\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2637\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2638\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2633\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2634\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2635\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2606\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2620\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p2615\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p2616\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p2617\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2618\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2610\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2611\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2612\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2613\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2614\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p2610\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2619\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p2615\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p2639\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p2689\",\"attributes\":{\"title\":\"Most Diverted Departures\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p2688\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2645\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2647\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p2655\",\"attributes\":{\"factors\":[\"Erbil\",\"Tehran\",\"Dubai\",\"Najaf\",\"Muscat\",\"Baghdad\",\"Kuwait City\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2656\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p2657\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2648\",\"attributes\":{\"text\":\"Most Diverted Departures in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2675\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2642\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2643\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2644\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAAAAAA==\"},\"shape\":[7],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Erbil\",\"Tehran\",\"Dubai\",\"Najaf\",\"Muscat\",\"Baghdad\",\"Kuwait City\"],\"shape\":[7],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAEAAAABAAAAAQAAAAEAAAAEAAAABgAAAA==\"},\"shape\":[7],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2676\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2677\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2672\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2673\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p2674\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2684\",\"attributes\":{\"data_source\":{\"id\":\"p2642\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2685\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2686\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2681\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2682\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p2683\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2654\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2668\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p2663\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p2664\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p2665\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2666\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2658\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2659\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2660\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2661\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2662\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p2658\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2667\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p2663\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p2687\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}}]}}]}}]}};\n const render_items = [{\"docid\":\"0264de37-93b3-4774-a248-62cd8d8ee244\",\"roots\":{\"p2692\":\"e51c413c-7160-41ba-9c8c-71bc70944e10\"},\"root_ids\":[\"p2692\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
+ "application/vnd.bokehjs_exec.v0+json": ""
+ },
+ "metadata": {
+ "application/vnd.bokehjs_exec.v0+json": {
+ "id": "p2692"
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "output_notebook()\n",
+ "from bokeh.layouts import column\n",
+ "from bokeh.models import Div\n",
+ "\n",
+ "# Example datasets stored in a dictionary\n",
+ "datasets = {\n",
+ " \"Most Changed Departures\": most_changed_departures,\n",
+ " \"Most Cancelled Departures\": most_cancelled_departures,\n",
+ " \"Most Scheduled Departures\": most_scheduled_departures,\n",
+ " \"Most Diverted Departures\": most_diverted_departures\n",
+ "}\n",
+ "\n",
+ "# Initialize an empty list to store the tabs\n",
+ "# List of colors to use for each dataset\n",
+ "colors = [\"lightblue\", \"orange\", \"#023436\", \"#00BFB3\"]\n",
+ "\n",
+ "# Initialize an empty list to store the tabs\n",
+ "tabs = []\n",
+ "\n",
+ "# Loop through each dataset and its corresponding color\n",
+ "for (title, data), color in zip(datasets.items(), colors):\n",
+ " # Convert data to ColumnDataSource for Bokeh plotting\n",
+ " source = ColumnDataSource(data)\n",
+ "\n",
+ " # Create a figure for each dataset\n",
+ " p = figure(y_range=data['airportcity'], width=600, height=400, title=title + \" in 2024\", tools=\"save\", toolbar_location=\"above\")\n",
+ " p.hbar(y='airportcity', right='count', height=0.5, color=color, alpha=0.7, source=source)\n",
+ "\n",
+ " # Add text inside the bars (5 points inside the bar)\n",
+ " p.text(x='count', y='airportcity', text='count', source=source, \n",
+ " x_offset=-5, # This places the text 5 units inside the bar\n",
+ " y_offset=-3, # Vertical alignment\n",
+ " text_align='right', text_baseline='middle', text_color=\"black\", text_font_size=\"10pt\")\n",
+ "\n",
+ " # Customize plot (optional)\n",
+ " p.xaxis.visible = False\n",
+ " p.ygrid.visible = False\n",
+ " p.xgrid.visible = False\n",
+ " p.yaxis.major_tick_line_color = None # No major ticks\n",
+ " p.yaxis.minor_tick_line_color = None # No minor ticks\n",
+ " p.yaxis.axis_line_color = None \n",
+ " p.outline_line_color = None\n",
+ "\n",
+ " subtitle = Div(text=f\"Source: AviationStack. Acessed October 7th 2024.
\", width=600)\n",
+ "\n",
+ " layout = column(p, subtitle)\n",
+ "\n",
+ " # Create a panel with the plot and the corresponding title\n",
+ " tab = TabPanel(child=layout, title=title)\n",
+ "\n",
+ " # Append the panel to the list of tabs\n",
+ " tabs.append(tab)\n",
+ "\n",
+ "# Arrange the tabs in a Tabs layout\n",
+ "tabs_layout = Tabs(tabs=tabs)\n",
+ "\n",
+ "main_title = Div(text=\"Top 10 Destinations with Changes in Departures from DAM, ALP and LTK in 2024
\", width=800)\n",
+ "\n",
+ "# Use column layout to stack the title on top of the tabs\n",
+ "layout = column(main_title, tabs_layout)\n",
+ "\n",
+ "# Show the tabs\n",
+ "show(layout)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Findings \n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 146,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ "
\n",
+ "
Loading BokehJS ...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"aa633006-0c31-45cc-936c-75075a8b02cb\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"aa633006-0c31-45cc-936c-75075a8b02cb\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"b2f14604-7e57-461e-9a66-852734272349\":{\"version\":\"3.4.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p2852\",\"attributes\":{\"width\":800,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2853\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p2854\",\"attributes\":{\"start\":0,\"end\":408}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2862\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p2863\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p2855\",\"attributes\":{\"text\":\"Weekly Departures from DAM, ALP, LTK\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2913\",\"attributes\":{\"name\":\"active\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2849\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2850\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2851\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAA\"},\"shape\":[42],\"dtype\":\"int32\",\"order\":\"little\"}],[\"flight_date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AADAgRPOeEIAAABKVNB4QgAAQBKV0nhCAACA2tXUeEIAAMCiFtd4QgAAAGtX2XhCAABAM5jbeEIAAID72N14QgAAwMMZ4HhCAAAAjFrieEIAAEBUm+R4QgAAgBzc5nhCAADA5BzpeEIAAACtXet4QgAAQHWe7XhCAACAPd/veEIAAMAFIPJ4QgAAAM5g9HhCAABAlqH2eEIAAIBe4vh4QgAAwCYj+3hCAAAA72P9eEIAAEC3pP94QgAAgH/lAXlCAADARyYEeUIAAAAQZwZ5QgAAQNinCHlCAACAoOgKeUIAAMBoKQ15QgAAADFqD3lCAABA+aoReUIAAIDB6xN5QgAAwIksFnlCAAAAUm0YeUIAAEAarhp5QgAAgOLuHHlCAADAqi8feUIAAABzcCF5QgAAQDuxI3lCAACAA/IleUIAAMDLMih5QgAAAJRzKnlC\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"active\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAMUAAAAAAAAAxQAAAAAAAACJAAAAAAAAAMEAAAAAAAAAgQAAAAAAAADBAAAAAAAAAMUAAAAAAAAAyQAAAAAAAADFAAAAAAAAAJEAAAAAAAAAiQAAAAAAAACpAAAAAAAAALEAAAAAAAAA9QAAAAAAAgEdAAAAAAAAAO0AAAAAAAIBBQAAAAAAAADhAAAAAAAAAQEAAAAAAAABBQAAAAAAAAEFAAAAAAACAQUAAAAAAAAAmQAAAAAAAAEFAAAAAAAAAPUAAAAAAAABAQAAAAAAAADtAAAAAAAAAQ0AAAAAAAABEQAAAAAAAAENAAAAAAAAAO0AAAAAAAABHQAAAAAAAAEFAAAAAAACAQUAAAAAAAABEQAAAAAAAAD1AAAAAAAAAO0AAAAAAAIBAQAAAAAAAAEFAAAAAAAAAQUAAAAAAAABAQAAAAAAAACBA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"cancelled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"diverted\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"landed\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAACAQUAAAAAAAIBHQAAAAAAAAEdAAAAAAACAQkAAAAAAAAA6QAAAAAAAADxAAAAAAACAQ0AAAAAAAABFQAAAAAAAgEVAAAAAAAAASEAAAAAAAIBIQAAAAAAAAENAAAAAAACAQEAAAAAAAIBGQAAAAAAAAD5AAAAAAAAAP0AAAAAAAAA+QAAAAAAAADZAAAAAAACAR0AAAAAAAIBJQAAAAAAAgEtAAAAAAAAASUAAAAAAAAAwQAAAAAAAAEVAAAAAAAAAUEAAAAAAAIBJQAAAAAAAgEhAAAAAAACASEAAAAAAAIBIQAAAAAAAAExAAAAAAABAUEAAAAAAAIBCQAAAAAAAAElAAAAAAAAARkAAAAAAAIBIQAAAAAAAgEhAAAAAAACAT0AAAAAAAIBLQAAAAAAAAE5AAAAAAAAASEAAAAAAAIBKQAAAAAAAABhA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"scheduled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAPUAAAAAAAAAuQAAAAAAAADhAAAAAAAAANkAAAAAAAAAqQAAAAAAAAEFAAAAAAAAAN0AAAAAAAAA1QAAAAAAAADVAAAAAAAAANkAAAAAAAAA1QAAAAAAAADhAAAAAAAAAN0AAAAAAAAA+QAAAAAAAAD9AAAAAAAAAR0AAAAAAAIBIQAAAAAAAADdAAAAAAACAQEAAAAAAAAA/QAAAAAAAAD9AAAAAAAAAO0AAAAAAAAA4QAAAAAAAADxAAAAAAAAAOUAAAAAAAAA5QAAAAAAAAENAAAAAAAAAO0AAAAAAAAA2QAAAAAAAADpAAAAAAAAAOUAAAAAAAIBCQAAAAAAAAERAAAAAAACAQEAAAAAAAAA9QAAAAAAAgEBAAAAAAAAAOUAAAAAAAAAqQAAAAAAAACZAAAAAAAAAMUAAAAAAAAA0QAAAAAAAABBA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"unknown\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAEEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAIQAAAAAAAABRAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAAcQAAAAAAAABhAAAAAAAAAJkAAAAAAAAAQQAAAAAAAACRAAAAAAAAAHEAAAAAAAAAYQAAAAAAAACRAAAAAAAAAMEAAAAAAAAAQQAAAAAAAADJAAAAAAAAAKkAAAAAAAAAyQAAAAAAAACBAAAAAAAAALEAAAAAAAAAuQAAAAAAAACJAAAAAAAAALkAAAAAAAAAzQAAAAAAAACRAAAAAAAAAMkAAAAAAAAAmQAAAAAAAACZAAAAAAAAAKkAAAAAAAAAiQAAAAAAAACBAAAAAAAAALEAAAAAAAAAiQAAAAAAAAPA/\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2914\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2915\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2910\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2895\",\"attributes\":{\"fields\":[]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2896\",\"attributes\":{\"fields\":[\"active\"]}}},\"fill_color\":\"#3288bd\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2911\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2895\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2896\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2912\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2895\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2896\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2924\",\"attributes\":{\"name\":\"cancelled\",\"data_source\":{\"id\":\"p2849\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2925\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2926\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2921\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2897\",\"attributes\":{\"fields\":[\"active\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2898\",\"attributes\":{\"fields\":[\"active\",\"cancelled\"]}}},\"fill_color\":\"#99d594\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2922\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2897\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2898\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2923\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2897\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2898\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2934\",\"attributes\":{\"name\":\"landed\",\"data_source\":{\"id\":\"p2849\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2935\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2936\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2931\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2899\",\"attributes\":{\"fields\":[\"active\",\"cancelled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2900\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\"]}}},\"fill_color\":\"#e6f598\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2932\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2899\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2900\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2933\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2899\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2900\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2944\",\"attributes\":{\"name\":\"scheduled\",\"data_source\":{\"id\":\"p2849\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2945\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2946\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2941\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2901\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2902\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\"]}}},\"fill_color\":\"#fee08b\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2942\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2901\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2902\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2943\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2901\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2902\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2954\",\"attributes\":{\"name\":\"unknown\",\"data_source\":{\"id\":\"p2849\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2955\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2956\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2951\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2903\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2904\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\",\"unknown\"]}}},\"fill_color\":\"#fc8d59\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2952\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2903\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2904\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2953\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2903\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2904\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2964\",\"attributes\":{\"name\":\"diverted\",\"data_source\":{\"id\":\"p2849\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2965\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2966\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2961\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2905\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\",\"unknown\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p2906\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\",\"unknown\",\"diverted\"]}}},\"fill_color\":\"#d53e4f\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2962\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2905\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2906\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p2963\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2905\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p2906\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2974\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2968\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2969\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2970\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AADAgRPOeEIAAABKVNB4QgAAQBKV0nhCAACA2tXUeEIAAMCiFtd4QgAAAGtX2XhCAABAM5jbeEIAAID72N14QgAAwMMZ4HhCAAAAjFrieEIAAEBUm+R4QgAAgBzc5nhCAADA5BzpeEIAAACtXet4QgAAQHWe7XhCAACAPd/veEIAAMAFIPJ4QgAAAM5g9HhCAABAlqH2eEIAAIBe4vh4QgAAwCYj+3hCAAAA72P9eEIAAEC3pP94QgAAgH/lAXlCAADARyYEeUIAAAAQZwZ5QgAAQNinCHlCAACAoOgKeUIAAMBoKQ15QgAAADFqD3lCAABA+aoReUIAAIDB6xN5QgAAwIksFnlCAAAAUm0YeUIAAEAarhp5QgAAgOLuHHlCAADAqi8feUIAAABzcCF5QgAAQDuxI3lCAACAA/IleUI=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AgEAAC0BAAAlAQAA1AAAAOgAAAAbAQAA7QAAAP0AAAAoAQAAMwEAAA0BAAAjAQAAHgEAADEBAADyAAAADgEAABsBAAAOAQAADwEAAPEAAAANAQAACQEAAAABAAAPAQAA2QAAADIBAAAGAQAAJAEAAFQBAABmAQAAEAEAAFMBAAASAQAADAEAANkAAAAUAQAAEQEAAAIBAAAJAQAAyQAAAA==\"},\"shape\":[40],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2975\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2976\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2971\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2972\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2973\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2981\",\"attributes\":{\"location\":1717891200000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2983\",\"attributes\":{\"location\":1724544000000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p2985\",\"attributes\":{\"location\":1727049600000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p2861\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p2886\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p2887\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p2888\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p2893\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p2894\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p2881\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p2882\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p2883\"},\"axis_label\":\"Nr Flights\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2884\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p2864\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"FixedTicker\",\"id\":\"p2979\",\"attributes\":{\"ticks\":[1704585600000.0,1705795200000.0,1707004800000.0,1708214400000.0,1709424000000.0,1710633600000.0,1711843200000.0,1713052800000.0,1714262400000.0,1715472000000.0,1716681600000.0,1717891200000.0,1719100800000.0,1720310400000.0,1721520000000.0,1722729600000.0,1723939200000.0,1725148800000.0,1726358400000.0,1727568000000.0,1728777600000.0],\"minor_ticks\":[]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p2978\",\"attributes\":{\"days\":\"%d %b %Y\",\"months\":\"%b %Y\"}},\"axis_label\":\"Flight Date\",\"major_label_orientation\":1.2,\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p2879\"}}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2980\",\"attributes\":{\"text\":\"Source: Flight data from AviationStack and conflict events from ACLED\",\"text_color\":\"gray\",\"text_font_size\":\"10pt\",\"x\":0,\"y\":0,\"x_units\":\"screen\",\"y_units\":\"screen\"}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2880\",\"attributes\":{\"axis\":{\"id\":\"p2864\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p2885\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p2881\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p2916\",\"attributes\":{\"location\":\"top_left\",\"orientation\":\"horizontal\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2917\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"active\"},\"renderers\":[{\"id\":\"p2913\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2927\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"cancelled\"},\"renderers\":[{\"id\":\"p2924\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2937\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"landed\"},\"renderers\":[{\"id\":\"p2934\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2947\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"scheduled\"},\"renderers\":[{\"id\":\"p2944\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2957\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"unknown\"},\"renderers\":[{\"id\":\"p2954\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2967\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"diverted\"},\"renderers\":[{\"id\":\"p2964\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2977\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Number of Conflict Events w/o Protests\"},\"renderers\":[{\"id\":\"p2974\"}]}}]}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2982\",\"attributes\":{\"text\":\"Airline data\\nnot available\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1717891200000.0,\"y\":326.4,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2984\",\"attributes\":{\"text\":\"Israeli strikes in\\nSouthern Lebanon\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1724544000000.0,\"y\":293.76,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p2986\",\"attributes\":{\"text\":\"Start of the Israel-Hezboullah\\nConflict\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1727049600000.0,\"y\":261.12,\"x_offset\":-5}}]}}]}};\n const render_items = [{\"docid\":\"b2f14604-7e57-461e-9a66-852734272349\",\"roots\":{\"p2852\":\"b7530573-e520-4c11-b824-c475662c05e3\"},\"root_ids\":[\"p2852\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
+ "application/vnd.bokehjs_exec.v0+json": ""
+ },
+ "metadata": {
+ "application/vnd.bokehjs_exec.v0+json": {
+ "id": "p2852"
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "output_notebook() # Display plots inline in a Jupyter notebook\n",
+ "\n",
+ "departures_exploded[\"flight_date\"] = departures_exploded[\"flight_date\"].apply(\n",
+ " lambda x: pd.to_datetime(x)\n",
+ ")\n",
+ "df = (\n",
+ " departures_exploded.groupby(\n",
+ " [pd.Grouper(key=\"flight_date\", freq=\"W\"), \"flight_status\"]\n",
+ " )\n",
+ " .count()[[\"iata_arr\"]]\n",
+ " .reset_index()\n",
+ ")\n",
+ "\n",
+ "show(\n",
+ " get_area_plot(\n",
+ " df,\n",
+ " \"Weekly Departures from DAM, ALP, LTK\",\n",
+ " \"Source: Flight data from AviationStack and conflict events from ACLED\",\n",
+ " acled_events_weekly,\n",
+ " reindex_freq=\"W\",\n",
+ " events_dict=events,\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 147,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "arrivals = pd.concat(\n",
+ " [\n",
+ " pd.read_csv(\"../../data/aviation/aviationstack_dam_01012024_14102024_arr.csv\"),\n",
+ " pd.read_csv(\"../../data/aviation/aviationstack_alp_01012024_14102024_arr.csv\"),\n",
+ " pd.read_csv('../../data/aviation/aviationstack_ltk_01012024_14102024_arr.csv')\n",
+ " ]\n",
+ ")\n",
+ "arrivals.drop(columns=\"Unnamed: 0\", inplace=True)\n",
+ "arrivals.drop_duplicates(inplace=True)\n",
+ "arrivals.reset_index(drop=True, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 148,
+ "metadata": {
+ "tags": [
+ "remove-cell",
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Flights for the following dates are missing in the data, reasons are unknown.: DatetimeIndex(['2024-01-29', '2024-01-30', '2024-04-29', '2024-04-30',\n",
+ " '2024-06-07', '2024-06-08', '2024-06-09'],\n",
+ " dtype='datetime64[ns]', freq=None)\n"
+ ]
+ }
+ ],
+ "source": [
+ "import pandas as pd\n",
+ "\n",
+ "df = arrivals\n",
+ "# Assuming df is your DataFrame and 'flight_date' is the column with the dates\n",
+ "df[\"flight_date\"] = pd.to_datetime(\n",
+ " df[\"flight_date\"]\n",
+ ") # Ensure 'flight_date' is in datetime format\n",
+ "\n",
+ "# Generate the complete date range from the minimum to the maximum date\n",
+ "complete_date_range = pd.date_range(\n",
+ " start=df[\"flight_date\"].min(), end=df[\"flight_date\"].max()\n",
+ ")\n",
+ "\n",
+ "# Find missing dates by comparing the complete date range with the dates in the DataFrame\n",
+ "missing_dates = complete_date_range.difference(df[\"flight_date\"])\n",
+ "\n",
+ "if missing_dates.empty:\n",
+ " print(\"All dates are present.\")\n",
+ "else:\n",
+ " print(\n",
+ " f\"Flights for the following dates are missing in the data, reasons are unknown.: {missing_dates}\"\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 149,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "arrivals_exploded = explode(arrivals)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 150,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "There were 4415 flights before duplication check\n",
+ "There are 4396 flights after duplication check. 19 flights were duplicated\n"
+ ]
+ }
+ ],
+ "source": [
+ "before = arrivals_exploded.shape[0]\n",
+ "print(f\"There were {before} flights before duplication check\")\n",
+ "# check for duplicate flights i.e., flights scheduled to take off at the exact same time from the same place to the same destination\n",
+ "arrivals_exploded = arrivals_exploded.drop_duplicates(\n",
+ " subset=[\"flight_date\", \"scheduled_arr\", \"iata_arr\", \"iata_dep\", \"scheduled_dep\"]\n",
+ ")\n",
+ "\n",
+ "after = arrivals_exploded.shape[0]\n",
+ "print(\n",
+ " f\"There are {after} flights after duplication check. {before-after} flights were duplicated\"\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 151,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " flight_date | \n",
+ " scheduled_arr | \n",
+ " iata_arr | \n",
+ " iata_dep | \n",
+ " scheduled_dep | \n",
+ " flight_status | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "Empty DataFrame\n",
+ "Columns: [flight_date, scheduled_arr, iata_arr, iata_dep, scheduled_dep, flight_status]\n",
+ "Index: []"
+ ]
+ },
+ "execution_count": 151,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Test to see if any flight has more than one flight status assoctaed with it.\n",
+ "duplicate_status_test = (\n",
+ " arrivals_exploded.groupby(\n",
+ " [\"flight_date\", \"scheduled_arr\", \"iata_arr\", \"iata_dep\", \"scheduled_dep\"]\n",
+ " )[[\"flight_status\"]]\n",
+ " .count()\n",
+ " .reset_index()\n",
+ ")\n",
+ "duplicate_status_test[duplicate_status_test[\"flight_status\"] > 1]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 153,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ "
\n",
+ "
Loading BokehJS ...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"a358eed5-f7fe-4f55-8761-b60829eece95\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"a358eed5-f7fe-4f55-8761-b60829eece95\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"e4c41684-aeed-4ef8-990b-6927003875e9\":{\"version\":\"3.4.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3148\",\"attributes\":{\"width\":800,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3149\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3150\",\"attributes\":{\"start\":0,\"end\":127}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3158\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3159\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3151\",\"attributes\":{\"text\":\"Daily Arrivals to DAM, ALP and LTK\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3209\",\"attributes\":{\"name\":\"active\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3145\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3146\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3147\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAPoAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEAAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAAA==\"},\"shape\":[289],\"dtype\":\"int32\",\"order\":\"little\"}],[\"flight_date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABAHyXMeEIAAACFd8x4QgAAwOrJzHhCAACAUBzNeEIAAEC2bs14QgAAABzBzXhCAADAgRPOeEIAAIDnZc54QgAAQE24znhCAAAAswrPeEIAAMAYXc94QgAAgH6vz3hCAABA5AHQeEIAAABKVNB4QgAAwK+m0HhCAACAFfnQeEIAAEB7S9F4QgAAAOGd0XhCAADARvDReEIAAICsQtJ4QgAAQBKV0nhCAAAAeOfSeEIAAMDdOdN4QgAAgEOM03hCAABAqd7TeEIAAAAPMdR4QgAAwHSD1HhCAACA2tXUeEIAAEBAKNV4QgAAAKZ61XhCAADAC83VeEIAAIBxH9Z4QgAAQNdx1nhCAAAAPcTWeEIAAMCiFtd4QgAAgAhp13hCAABAbrvXeEIAAADUDdh4QgAAwDlg2HhCAACAn7LYeEIAAEAFBdl4QgAAAGtX2XhCAADA0KnZeEIAAIA2/Nl4QgAAQJxO2nhCAAAAAqHaeEIAAMBn89p4QgAAgM1F23hCAABAM5jbeEIAAACZ6tt4QgAAwP483HhCAACAZI/ceEIAAEDK4dx4QgAAADA03XhCAADAlYbdeEIAAID72N14QgAAQGEr3nhCAAAAx33eeEIAAMAs0N54QgAAgJIi33hCAABA+HTfeEIAAABex994QgAAwMMZ4HhCAACAKWzgeEIAAECPvuB4QgAAAPUQ4XhCAADAWmPheEIAAIDAteF4QgAAQCYI4nhCAAAAjFrieEIAAMDxrOJ4QgAAgFf/4nhCAABAvVHjeEIAAAAjpON4QgAAwIj243hCAACA7kjkeEIAAEBUm+R4QgAAALrt5HhCAADAH0DleEIAAICFkuV4QgAAQOvk5XhCAAAAUTfmeEIAAMC2ieZ4QgAAgBzc5nhCAABAgi7neEIAAADogOd4QgAAwE3T53hCAACAsyXoeEIAAEAZeOh4QgAAAH/K6HhCAADA5BzpeEIAAIBKb+l4QgAAQLDB6XhCAAAAFhTqeEIAAMB7Zup4QgAAgOG46nhCAABARwvreEIAAACtXet4QgAAwBKw63hCAACAeALseEIAAEDeVOx4QgAAAESn7HhCAADAqfnseEIAAIAPTO14QgAAQHWe7XhCAAAA2/DteEIAAMBAQ+54QgAAgKaV7nhCAABADOjueEIAAAByOu94QgAAwNeM73hCAACAPd/veEIAAECjMfB4QgAAAAmE8HhCAADAbtbweEIAAIDUKPF4QgAAQDp78XhCAAAAoM3xeEIAAMAFIPJ4QgAAgGty8nhCAABA0cTyeEIAAAA3F/N4QgAAwJxp83hCAACAArzzeEIAAEBoDvR4QgAAAM5g9HhCAADAM7P0eEIAAICZBfV4QgAAQP9X9XhCAAAAZar1eEIAAMDK/PV4QgAAgDBP9nhCAABAlqH2eEIAAAD88/Z4QgAAwGFG93hCAACAx5j3eEIAAEAt6/d4QgAAAJM9+HhCAADA+I/4eEIAAIBe4vh4QgAAQMQ0+XhCAAAAKof5eEIAAMCP2fl4QgAAgPUr+nhCAABAW376eEIAAADB0Pp4QgAAwCYj+3hCAACAjHX7eEIAAEDyx/t4QgAAAFga/HhCAADAvWz8eEIAAIAjv/x4QgAAQIkR/XhCAAAA72P9eEIAAMBUtv14QgAAgLoI/nhCAABAIFv+eEIAAACGrf54QgAAwOv//nhCAACAUVL/eEIAAEC3pP94QgAAAB33/3hCAADAgkkAeUIAAIDomwB5QgAAQE7uAHlCAAAAtEABeUIAAMAZkwF5QgAAgH/lAXlCAABA5TcCeUIAAABLigJ5QgAAwLDcAnlCAACAFi8DeUIAAEB8gQN5QgAAAOLTA3lCAADARyYEeUIAAICteAR5QgAAQBPLBHlCAAAAeR0FeUIAAMDebwV5QgAAgETCBXlCAABAqhQGeUIAAAAQZwZ5QgAAwHW5BnlCAACA2wsHeUIAAEBBXgd5QgAAAKewB3lCAADADAMIeUIAAIByVQh5QgAAQNinCHlCAAAAPvoIeUIAAMCjTAl5QgAAgAmfCXlCAABAb/EJeUIAAADVQwp5QgAAwDqWCnlCAACAoOgKeUIAAEAGOwt5QgAAAGyNC3lCAADA0d8LeUIAAIA3Mgx5QgAAQJ2EDHlCAAAAA9cMeUIAAMBoKQ15QgAAgM57DXlCAABANM4NeUIAAACaIA55QgAAwP9yDnlCAACAZcUOeUIAAEDLFw95QgAAADFqD3lCAADAlrwPeUIAAID8DhB5QgAAQGJhEHlCAAAAyLMQeUIAAMAtBhF5QgAAgJNYEXlCAABA+aoReUIAAABf/RF5QgAAwMRPEnlCAACAKqISeUIAAECQ9BJ5QgAAAPZGE3lCAADAW5kTeUIAAIDB6xN5QgAAQCc+FHlCAAAAjZAUeUIAAMDy4hR5QgAAgFg1FXlCAABAvocVeUIAAAAk2hV5QgAAwIksFnlCAACA734WeUIAAEBV0RZ5QgAAALsjF3lCAADAIHYXeUIAAICGyBd5QgAAQOwaGHlCAAAAUm0YeUIAAMC3vxh5QgAAgB0SGXlCAABAg2QZeUIAAADpthl5QgAAwE4JGnlCAACAtFsaeUIAAEAarhp5QgAAAIAAG3lCAADA5VIbeUIAAIBLpRt5QgAAQLH3G3lCAAAAF0oceUIAAMB8nBx5QgAAgOLuHHlCAABASEEdeUIAAACukx15QgAAwBPmHXlCAACAeTgeeUIAAEDfih55QgAAAEXdHnlCAADAqi8feUIAAIAQgh95QgAAQHbUH3lCAAAA3CYgeUIAAMBBeSB5QgAAgKfLIHlCAABADR4heUIAAABzcCF5QgAAwNjCIXlCAACAPhUieUIAAECkZyJ5QgAAAAq6InlCAADAbwwjeUIAAIDVXiN5QgAAQDuxI3lCAAAAoQMkeUIAAMAGViR5QgAAgGyoJHlCAABA0vokeUIAAAA4TSV5QgAAwJ2fJXlCAACAA/IleUIAAEBpRCZ5QgAAAM+WJnlCAADANOkmeUIAAICaOyd5QgAAQACOJ3lCAAAAZuAneUIAAMDLMih5QgAAgDGFKHlCAABAl9coeUI=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"active\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAEAAAAAAAAAYQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAACEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAUQAAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAABRAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAEEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAABAAAAAAAAACEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAIQAAAAAAAAABAAAAAAAAAFEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAABBAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAGEAAAAAAAAAIQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABhAAAAAAAAAEEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAACEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAQQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAIQAAAAAAAABRAAAAAAAAACEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAACEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAFEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAQQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAEEAAAAAAAAAQQAAAAAAAABRAAAAAAAAACEAAAAAAAAAQQAAAAAAAABRAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAQQAAAAAAAAABAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAABBAAAAAAAAAFEAAAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAQQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAGEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAEEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAhAAAAAAAAACEAAAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAACEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAQQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAUQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAUQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAACEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAABAAAAAAAAAAEA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"cancelled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"diverted\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"landed\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAACEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAIQAAAAAAAAAAAAAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAhAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAAAAAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAACEAAAAAAAAAAAAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAEAAAAAAAADwPwAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABRAAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAAAAAAAAAAAAAAAAACEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAUQAAAAAAAAAAAAAAAAAAACEAAAAAAAAAIQAAAAAAAABRAAAAAAAAACEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAIQAAAAAAAAABAAAAAAAAACEAAAAAAAADwPwAAAAAAABBAAAAAAAAAFEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAABBAAAAAAAAACEAAAAAAAAAQQAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAACEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAAQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAQQAAAAAAAABhAAAAAAAAACEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAUQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAAQAAAAAAAABhAAAAAAAAACEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAEAAAAAAAADwPwAAAAAAABRAAAAAAAAACEAAAAAAAAAYQAAAAAAAAAhAAAAAAAAAHEAAAAAAAAAIQAAAAAAAABhAAAAAAAAAEEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAQQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAAFEAAAAAAAAAIQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAIQAAAAAAAABxAAAAAAAAACEAAAAAAAAAUQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAIQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAUQAAAAAAAABRAAAAAAAAAAEAAAAAAAAAYQAAAAAAAABBAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAGEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAYQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAYQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAIQAAAAAAAABxAAAAAAAAAFEAAAAAAAADwPwAAAAAAABBAAAAAAAAAEEAAAAAAAAAAQAAAAAAAABBAAAAAAAAAEEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAACEAAAAAAAADwPwAAAAAAAPA/AAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAACEAAAAAAAAAUQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAQQAAAAAAAABhAAAAAAAAACEAAAAAAAAAIQAAAAAAAAAhAAAAAAAAAEEAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAcQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"scheduled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAJEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAJEAAAAAAAAAiQAAAAAAAACBAAAAAAAAAHEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAGEAAAAAAAAAiQAAAAAAAACBAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACRAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAcQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAoQAAAAAAAABhAAAAAAAAAKEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAAAAAAAAAmQAAAAAAAAChAAAAAAAAAJEAAAAAAAAAiQAAAAAAAACRAAAAAAAAAHEAAAAAAAAAkQAAAAAAAACJAAAAAAAAAJEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACJAAAAAAAAAJkAAAAAAAAAYQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACZAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACZAAAAAAAAAJEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAiQAAAAAAAACJAAAAAAAAAKEAAAAAAAAAgQAAAAAAAABhAAAAAAAAAIEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAkQAAAAAAAACBAAAAAAAAAGEAAAAAAAAAcQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAYQAAAAAAAABxAAAAAAAAAHEAAAAAAAAAYQAAAAAAAABxAAAAAAAAAJEAAAAAAAAAYQAAAAAAAABBAAAAAAAAAIEAAAAAAAAAQQAAAAAAAABBAAAAAAAAAGEAAAAAAAAAoQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACZAAAAAAAAAIEAAAAAAAAAqQAAAAAAAACRAAAAAAAAALEAAAAAAAAAoQAAAAAAAACJAAAAAAAAAJEAAAAAAAAAgQAAAAAAAACRAAAAAAAAAIkAAAAAAAAAmQAAAAAAAACpAAAAAAAAAMEAAAAAAAAAcQAAAAAAAABhAAAAAAAAAJEAAAAAAAAAoQAAAAAAAAChAAAAAAAAAKkAAAAAAAAAsQAAAAAAAACJAAAAAAAAAFEAAAAAAAAAsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQAAAAAAAACpAAAAAAAAAJEAAAAAAAAAgQAAAAAAAACZAAAAAAAAAIkAAAAAAAAAmQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJkAAAAAAAAAmQAAAAAAAACxAAAAAAAAAJkAAAAAAAAAkQAAAAAAAACJAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAmQAAAAAAAACJAAAAAAAAAJkAAAAAAAAAoQAAAAAAAACZAAAAAAAAAKEAAAAAAAAAqQAAAAAAAACZAAAAAAAAAJEAAAAAAAAAmQAAAAAAAACJAAAAAAAAAJkAAAAAAAAAmQAAAAAAAAC5AAAAAAAAACEAAAAAAAAAkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAKkAAAAAAAAAoQAAAAAAAACZAAAAAAAAAKEAAAAAAAAAmQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAqQAAAAAAAACBAAAAAAAAAJkAAAAAAAAAgQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAcQAAAAAAAACxAAAAAAAAAIkAAAAAAAAAkQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAiQAAAAAAAACpAAAAAAAAAM0AAAAAAAAAcQAAAAAAAAChAAAAAAAAAKEAAAAAAAAAkQAAAAAAAACJAAAAAAAAAIkAAAAAAAAAqQAAAAAAAACBAAAAAAAAAJEAAAAAAAAAiQAAAAAAAACZAAAAAAAAAIkAAAAAAAAAiQAAAAAAAACxAAAAAAAAAIkAAAAAAAAAkQAAAAAAAACBAAAAAAAAAJEAAAAAAAAAgQAAAAAAAACZAAAAAAAAALEAAAAAAAAAkQAAAAAAAACJAAAAAAAAAJEAAAAAAAAAmQAAAAAAAABxAAAAAAAAAIEAAAAAAAAAsQAAAAAAAACBAAAAAAAAAIEAAAAAAAAAgQAAAAAAAACZAAAAAAAAAIkAAAAAAAAAkQAAAAAAAADFAAAAAAAAAKkAAAAAAAAAqQAAAAAAAACJAAAAAAAAAJkAAAAAAAAAYQAAAAAAAACZAAAAAAAAAMUAAAAAAAAAoQAAAAAAAAChAAAAAAAAAJkAAAAAAAAAmQAAAAAAAABhAAAAAAAAAKkAAAAAAAAAqQAAAAAAAAChAAAAAAAAAJEAAAAAAAAAoQAAAAAAAACRAAAAAAAAAIkAAAAAAAAAqQAAAAAAAAC5AAAAAAAAAIkAAAAAAAAAoQAAAAAAAACxAAAAAAAAAKkAAAAAAAAAgQAAAAAAAAChAAAAAAAAALkAAAAAAAAAmQAAAAAAAACxAAAAAAAAAJkAAAAAAAAAkQAAAAAAAABRAAAAAAAAAKEAAAAAAAAAsQAAAAAAAACJAAAAAAAAAJEAAAAAAAAAgQAAAAAAAACBAAAAAAAAAEEAAAAAAAAAkQAAAAAAAAChAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACZAAAAAAAAAIEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAJkAAAAAAAAAYQAAAAAAAACJAAAAAAAAAIEAAAAAAAAAcQAAAAAAAABRAAAAAAAAAJEAAAAAAAAAkQAAAAAAAABhAAAAAAAAAHEAAAAAAAAAkQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAkQAAAAAAAACRAAAAAAAAAJEAAAAAAAAAUQAAAAAAAACBAAAAAAAAAJEAAAAAAAAAgQAAAAAAAACRAAAAAAAAAMUA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}],[\"unknown\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAhAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAAAQQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAQAAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAADwPwAAAAAAAABAAAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAAAAAAAAAAAACEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAUQAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAFEAAAAAAAAAQQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAADwPwAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAPA/AAAAAAAAEEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAEAAAAAAAADwPwAAAAAAAAhAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAUQAAAAAAAAAhAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAACEAAAAAAAAAIQAAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAIQAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAA8D8AAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAA8D8AAAAAAADwPwAAAAAAAAhAAAAAAAAA8D8AAAAAAAAIQAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAhAAAAAAAAACEAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAQAAAAAAAABRAAAAAAAAACEAAAAAAAADwPwAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAhAAAAAAAAA8D8AAAAAAADwPwAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAA=\"},\"shape\":[289],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3210\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3211\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3206\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3191\",\"attributes\":{\"fields\":[]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3192\",\"attributes\":{\"fields\":[\"active\"]}}},\"fill_color\":\"#3288bd\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3207\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3191\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3192\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3208\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3191\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3192\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3220\",\"attributes\":{\"name\":\"scheduled\",\"data_source\":{\"id\":\"p3145\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3221\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3222\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3217\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3193\",\"attributes\":{\"fields\":[\"active\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3194\",\"attributes\":{\"fields\":[\"active\",\"scheduled\"]}}},\"fill_color\":\"#99d594\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3218\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3193\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3194\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3219\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3193\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3194\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3230\",\"attributes\":{\"name\":\"cancelled\",\"data_source\":{\"id\":\"p3145\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3231\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3232\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3227\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3195\",\"attributes\":{\"fields\":[\"active\",\"scheduled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3196\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\"]}}},\"fill_color\":\"#e6f598\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3228\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3195\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3196\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3229\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3195\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3196\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3240\",\"attributes\":{\"name\":\"landed\",\"data_source\":{\"id\":\"p3145\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3241\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3242\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3237\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3197\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3198\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\",\"landed\"]}}},\"fill_color\":\"#fee08b\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3238\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3197\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3198\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3239\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3197\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3198\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3250\",\"attributes\":{\"name\":\"unknown\",\"data_source\":{\"id\":\"p3145\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3251\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3252\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3247\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3199\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\",\"landed\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3200\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\",\"landed\",\"unknown\"]}}},\"fill_color\":\"#fc8d59\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3248\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3199\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3200\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3249\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3199\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3200\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3260\",\"attributes\":{\"name\":\"diverted\",\"data_source\":{\"id\":\"p3145\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3261\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3262\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3257\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3201\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\",\"landed\",\"unknown\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3202\",\"attributes\":{\"fields\":[\"active\",\"scheduled\",\"cancelled\",\"landed\",\"unknown\",\"diverted\"]}}},\"fill_color\":\"#d53e4f\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3258\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3201\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3202\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3259\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3201\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3202\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3270\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3264\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3265\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3266\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAhXfMeEIAAMDqycx4QgAAgFAczXhCAABAtm7NeEIAAAAcwc14QgAAwIETznhCAACA52XOeEIAAEBNuM54QgAAALMKz3hCAADAGF3PeEIAAIB+r894QgAAQOQB0HhCAAAASlTQeEIAAMCvptB4QgAAgBX50HhCAABAe0vReEIAAADhndF4QgAAwEbw0XhCAACArELSeEIAAEASldJ4QgAAAHjn0nhCAADA3TnTeEIAAIBDjNN4QgAAQKne03hCAAAADzHUeEIAAMB0g9R4QgAAgNrV1HhCAABAQCjVeEIAAACmetV4QgAAwAvN1XhCAACAcR/WeEIAAEDXcdZ4QgAAAD3E1nhCAADAohbXeEIAAIAIadd4QgAAQG6713hCAAAA1A3YeEIAAMA5YNh4QgAAgJ+y2HhCAABABQXZeEIAAABrV9l4QgAAwNCp2XhCAACANvzZeEIAAECcTtp4QgAAAAKh2nhCAADAZ/PaeEIAAIDNRdt4QgAAQDOY23hCAAAAmerbeEIAAMD+PNx4QgAAgGSP3HhCAABAyuHceEIAAAAwNN14QgAAwJWG3XhCAACA+9jdeEIAAEBhK954QgAAAMd93nhCAADALNDeeEIAAICSIt94QgAAQPh033hCAAAAXsffeEIAAMDDGeB4QgAAgCls4HhCAABAj77geEIAAAD1EOF4QgAAwFpj4XhCAACAwLXheEIAAEAmCOJ4QgAAAIxa4nhCAADA8azieEIAAIBX/+J4QgAAQL1R43hCAAAAI6TjeEIAAMCI9uN4QgAAgO5I5HhCAABAVJvkeEIAAAC67eR4QgAAwB9A5XhCAACAhZLleEIAAEDr5OV4QgAAAFE35nhCAADAtonmeEIAAIAc3OZ4QgAAQIIu53hCAAAA6IDneEIAAMBN0+d4QgAAgLMl6HhCAABAGXjoeEIAAAB/yuh4QgAAwOQc6XhCAACASm/peEIAAECwwel4QgAAABYU6nhCAADAe2bqeEIAAIDhuOp4QgAAQEcL63hCAAAArV3reEIAAMASsOt4QgAAgHgC7HhCAABA3lTseEIAAABEp+x4QgAAwKn57HhCAACAD0zteEIAAEB1nu14QgAAANvw7XhCAADAQEPueEIAAICmle54QgAAQAzo7nhCAAAAcjrveEIAAMDXjO94QgAAgD3f73hCAABAozHweEIAAAAJhPB4QgAAwG7W8HhCAACA1CjxeEIAAEA6e/F4QgAAAKDN8XhCAADABSDyeEIAAIBrcvJ4QgAAQNHE8nhCAAAANxfzeEIAAMCcafN4QgAAgAK883hCAABAaA70eEIAAADOYPR4QgAAwDOz9HhCAACAmQX1eEIAAED/V/V4QgAAAGWq9XhCAADAyvz1eEIAAIAwT/Z4QgAAQJah9nhCAAAA/PP2eEIAAMBhRvd4QgAAgMeY93hCAABALev3eEIAAACTPfh4QgAAwPiP+HhCAACAXuL4eEIAAEDENPl4QgAAACqH+XhCAADAj9n5eEIAAID1K/p4QgAAQFt++nhCAAAAwdD6eEIAAMAmI/t4QgAAgIx1+3hCAABA8sf7eEIAAABYGvx4QgAAwL1s/HhCAACAI7/8eEIAAECJEf14QgAAAO9j/XhCAADAVLb9eEIAAIC6CP54QgAAQCBb/nhCAAAAhq3+eEIAAMDr//54QgAAgFFS/3hCAABAt6T/eEIAAAAd9/94QgAAwIJJAHlCAACA6JsAeUIAAEBO7gB5QgAAALRAAXlCAADAGZMBeUIAAIB/5QF5QgAAQOU3AnlCAAAAS4oCeUIAAMCw3AJ5QgAAgBYvA3lCAABAfIEDeUIAAADi0wN5QgAAwEcmBHlCAACArXgEeUIAAEATywR5QgAAAHkdBXlCAADA3m8FeUIAAIBEwgV5QgAAQKoUBnlCAAAAEGcGeUIAAMB1uQZ5QgAAgNsLB3lCAABAQV4HeUIAAACnsAd5QgAAwAwDCHlCAACAclUIeUIAAEDYpwh5QgAAAD76CHlCAADAo0wJeUIAAIAJnwl5QgAAQG/xCXlCAAAA1UMKeUIAAMA6lgp5QgAAgKDoCnlCAABABjsLeUIAAABsjQt5QgAAwNHfC3lCAACANzIMeUIAAECdhAx5QgAAAAPXDHlCAADAaCkNeUIAAIDOew15QgAAQDTODXlCAAAAmiAOeUIAAMD/cg55QgAAgGXFDnlCAABAyxcPeUIAAAAxag95QgAAwJa8D3lCAACA/A4QeUIAAEBiYRB5QgAAAMizEHlCAADALQYReUIAAICTWBF5QgAAQPmqEXlCAAAAX/0ReUIAAMDETxJ5QgAAgCqiEnlCAABAkPQSeUIAAAD2RhN5QgAAwFuZE3lCAACAwesTeUIAAEAnPhR5QgAAAI2QFHlCAADA8uIUeUIAAIBYNRV5QgAAQL6HFXlCAAAAJNoVeUIAAMCJLBZ5QgAAgO9+FnlCAABAVdEWeUIAAAC7Ixd5QgAAwCB2F3lCAACAhsgXeUIAAEDsGhh5QgAAAFJtGHlCAADAt78YeUIAAIAdEhl5QgAAQINkGXlCAAAA6bYZeUIAAMBOCRp5QgAAgLRbGnlCAABAGq4aeUIAAACAABt5QgAAwOVSG3lCAACAS6UbeUIAAECx9xt5QgAAABdKHHlCAADAfJwceUIAAIDi7hx5QgAAQEhBHXlCAAAArpMdeUIAAMAT5h15QgAAgHk4HnlCAABA34oeeUIAAABF3R55QgAAwKovH3lCAACAEIIfeUIAAEB21B95QgAAANwmIHlCAADAQXkgeUIAAICnyyB5QgAAQA0eIXlCAAAAc3AheUIAAMDYwiF5QgAAgD4VInlCAABApGcieUIAAAAKuiJ5QgAAwG8MI3lCAACA1V4jeUIAAEA7sSN5QgAAAKEDJHlCAADABlYkeUIAAIBsqCR5QgAAQNL6JHlCAAAAOE0leUI=\"},\"shape\":[277],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"IQAAABUAAAAtAAAAKAAAADQAAABDAAAANwAAAC8AAAAeAAAAIAAAACgAAAAoAAAAOQAAADsAAAAhAAAALwAAACgAAAAbAAAAJQAAADIAAAAmAAAAFgAAABoAAAAWAAAAEgAAACsAAAArAAAAEgAAADkAAAAeAAAAFQAAACQAAAAhAAAAJQAAACAAAAAvAAAAJgAAACQAAAAiAAAALAAAADQAAAAtAAAAIgAAABwAAAATAAAAGQAAACkAAAAtAAAAFAAAACsAAAAeAAAAJAAAAB4AAAArAAAAMwAAACkAAAA9AAAAJwAAABwAAAAeAAAAMQAAADAAAAAxAAAAQAAAACYAAAAeAAAAJwAAACgAAAAvAAAAIAAAACEAAAAeAAAAIgAAACgAAAAsAAAAOAAAACsAAAA3AAAAIgAAACMAAAAnAAAAJwAAAC4AAAAfAAAAJwAAACcAAAApAAAAMAAAACwAAAAsAAAAMQAAAC4AAAAlAAAALQAAAC4AAAAzAAAAHwAAAC4AAAAfAAAAGwAAABMAAAApAAAALQAAACEAAAAuAAAALQAAABwAAAAlAAAAKQAAACoAAAAfAAAAJwAAACIAAAAiAAAAIAAAACsAAAA2AAAALwAAACUAAAAiAAAAJAAAAB4AAAAqAAAAJQAAADYAAAAkAAAAJQAAACsAAAAhAAAAKgAAADYAAAAaAAAAFAAAACMAAAAgAAAAFAAAAC0AAAAoAAAAMQAAABUAAAAmAAAANQAAACcAAAAhAAAAKwAAACoAAAAxAAAAKAAAACUAAAARAAAAKQAAACgAAAApAAAAGwAAACMAAAAcAAAAHwAAACsAAAAsAAAAMAAAACoAAAApAAAAMwAAACoAAAAnAAAAGAAAACAAAAAXAAAAHQAAAB0AAAAbAAAAKQAAACEAAAAjAAAALgAAACwAAAAhAAAAKgAAACcAAAA0AAAAMgAAACcAAAAXAAAAKQAAAC4AAAAwAAAAKgAAABcAAAAlAAAANgAAAC4AAAAjAAAAJQAAACEAAAAyAAAANQAAACsAAAAxAAAAKQAAAC0AAAA0AAAAOQAAAB0AAAAuAAAAMAAAACkAAAA1AAAATQAAAEAAAAAsAAAAJAAAACIAAAAmAAAAKwAAAC8AAAAeAAAAIwAAAC0AAAAoAAAAMAAAAEkAAAA6AAAAKAAAACoAAAAiAAAALwAAACYAAAAmAAAAHgAAAC0AAAAeAAAALAAAABoAAAAhAAAALwAAAC0AAAArAAAAFgAAABsAAAAbAAAAHQAAACUAAAAjAAAAKAAAACoAAAAgAAAAIAAAACMAAAAuAAAAMAAAACkAAAAjAAAAKQAAACIAAAAdAAAAIwAAADMAAAAwAAAAJgAAACkAAAAWAAAALAAAACgAAAArAAAAHgAAAC4AAAAiAAAAJgAAAB0AAAAXAAAAKgAAADUAAAA2AAAAMwAAABkAAAAoAAAAHwAAAA==\"},\"shape\":[277],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3271\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3272\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3267\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3268\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3269\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p3277\",\"attributes\":{\"location\":1717891200000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p3279\",\"attributes\":{\"location\":1724544000000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p3281\",\"attributes\":{\"location\":1727049600000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3157\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p3182\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p3183\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p3184\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p3189\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3190\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3177\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3178\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3179\"},\"axis_label\":\"Nr Flights\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3180\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p3160\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"FixedTicker\",\"id\":\"p3275\",\"attributes\":{\"ticks\":[1704585600000.0,1705795200000.0,1707004800000.0,1708214400000.0,1709424000000.0,1710633600000.0,1711843200000.0,1713052800000.0,1714262400000.0,1715472000000.0,1716681600000.0,1717891200000.0,1719100800000.0,1720310400000.0,1721520000000.0,1722729600000.0,1723939200000.0,1725148800000.0,1726358400000.0,1727568000000.0,1728777600000.0],\"minor_ticks\":[]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p3274\",\"attributes\":{\"days\":\"%d %b %Y\",\"months\":\"%b %Y\"}},\"axis_label\":\"Flight Date\",\"major_label_orientation\":1.2,\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3175\"}}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3276\",\"attributes\":{\"text\":\"Source: Flight data from AviationStack and conflict events from ACLED\",\"text_color\":\"gray\",\"text_font_size\":\"10pt\",\"x\":0,\"y\":0,\"x_units\":\"screen\",\"y_units\":\"screen\"}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3176\",\"attributes\":{\"axis\":{\"id\":\"p3160\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3181\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p3177\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p3212\",\"attributes\":{\"location\":\"top_left\",\"orientation\":\"horizontal\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3213\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"active\"},\"renderers\":[{\"id\":\"p3209\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3223\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"scheduled\"},\"renderers\":[{\"id\":\"p3220\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3233\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"cancelled\"},\"renderers\":[{\"id\":\"p3230\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3243\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"landed\"},\"renderers\":[{\"id\":\"p3240\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3253\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"unknown\"},\"renderers\":[{\"id\":\"p3250\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3263\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"diverted\"},\"renderers\":[{\"id\":\"p3260\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3273\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Number of Conflict Events w/o Protests\"},\"renderers\":[{\"id\":\"p3270\"}]}}]}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3278\",\"attributes\":{\"text\":\"Airline data\\nnot available\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1717891200000.0,\"y\":101.6,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3280\",\"attributes\":{\"text\":\"Israeli strikes in\\nSouthern Lebanon\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1724544000000.0,\"y\":91.44,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3282\",\"attributes\":{\"text\":\"Start of the Israel-Hezboullah\\nConflict\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1727049600000.0,\"y\":81.28,\"x_offset\":-5}}]}}]}};\n const render_items = [{\"docid\":\"e4c41684-aeed-4ef8-990b-6927003875e9\",\"roots\":{\"p3148\":\"afb72e1d-6033-4a6d-88e7-7500edf37e44\"},\"root_ids\":[\"p3148\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
+ "application/vnd.bokehjs_exec.v0+json": ""
+ },
+ "metadata": {
+ "application/vnd.bokehjs_exec.v0+json": {
+ "id": "p3148"
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "output_notebook() # Display plots inline in a Jupyter notebook\n",
+ "\n",
+ "df = df = (\n",
+ " arrivals_exploded.groupby([\"flight_date\", \"flight_status\"])\n",
+ " .count()[[\"iata_arr\"]]\n",
+ " .reset_index()\n",
+ ")\n",
+ "df[\"flight_date\"] = df[\"flight_date\"].apply(lambda x: pd.to_datetime(x))\n",
+ "\n",
+ "show(\n",
+ " get_area_plot(\n",
+ " df,\n",
+ " \"Daily Arrivals to DAM, ALP and LTK\",\n",
+ " \"Source: Flight data from AviationStack and conflict events from ACLED\",\n",
+ " acled_events_daily,\n",
+ " events_dict=events,\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Findings\n",
+ "\n",
+ "- Cross verifying AviationStack with FlightRadar data for 14th October shows one missing flight to Moscow and an additional flight to KWI in the early hours. Data Lab team to conduct further validation exercises to understand this discrepancy. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 154,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ "
\n",
+ "
Loading BokehJS ...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"fbbfb89f-c3b8-4f7f-b0f8-c9800ef9c952\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"fbbfb89f-c3b8-4f7f-b0f8-c9800ef9c952\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"c14152c2-9c80-4151-bd78-fb040b3857aa\":{\"version\":\"3.4.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3296\",\"attributes\":{\"width\":800,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3297\"},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3298\",\"attributes\":{\"start\":0,\"end\":408}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3306\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3307\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3299\",\"attributes\":{\"text\":\"Weekly Arrivals to DAM, ALP, LTK\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3357\",\"attributes\":{\"name\":\"active\",\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3293\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3294\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3295\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAA\"},\"shape\":[42],\"dtype\":\"int32\",\"order\":\"little\"}],[\"flight_date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AADAgRPOeEIAAABKVNB4QgAAQBKV0nhCAACA2tXUeEIAAMCiFtd4QgAAAGtX2XhCAABAM5jbeEIAAID72N14QgAAwMMZ4HhCAAAAjFrieEIAAEBUm+R4QgAAgBzc5nhCAADA5BzpeEIAAACtXet4QgAAQHWe7XhCAACAPd/veEIAAMAFIPJ4QgAAAM5g9HhCAABAlqH2eEIAAIBe4vh4QgAAwCYj+3hCAAAA72P9eEIAAEC3pP94QgAAgH/lAXlCAADARyYEeUIAAAAQZwZ5QgAAQNinCHlCAACAoOgKeUIAAMBoKQ15QgAAADFqD3lCAABA+aoReUIAAIDB6xN5QgAAwIksFnlCAAAAUm0YeUIAAEAarhp5QgAAgOLuHHlCAADAqi8feUIAAABzcCF5QgAAQDuxI3lCAACAA/IleUIAAMDLMih5QgAAAJRzKnlC\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"active\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAKkAAAAAAAAAsQAAAAAAAACBAAAAAAAAAIEAAAAAAAADwPwAAAAAAACJAAAAAAAAAHEAAAAAAAAAmQAAAAAAAACZAAAAAAAAAIEAAAAAAAAAsQAAAAAAAACpAAAAAAAAAJEAAAAAAAAA0QAAAAAAAAChAAAAAAAAAOUAAAAAAAAAmQAAAAAAAACxAAAAAAAAALkAAAAAAAAAxQAAAAAAAADFAAAAAAAAAOEAAAAAAAAAUQAAAAAAAACZAAAAAAAAAOEAAAAAAAAA8QAAAAAAAACpAAAAAAAAAM0AAAAAAAAA3QAAAAAAAADRAAAAAAAAAN0AAAAAAAAAxQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAsQAAAAAAAACRAAAAAAAAANUAAAAAAAAAsQAAAAAAAACZAAAAAAAAAHEAAAAAAAAAcQAAAAAAAABBA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"cancelled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAEAAAAAAAADwPwAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAADwPwAAAAAAAAhAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAPA/AAAAAAAAAAAAAAAAAAAiQAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"diverted\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAACEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAYQAAAAAAAACZAAAAAAAAAFEAAAAAAAAAUQAAAAAAAAPA/\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"landed\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAIEAAAAAAAAAYQAAAAAAAAChAAAAAAAAAJkAAAAAAAADwPwAAAAAAABRAAAAAAAAAJEAAAAAAAAAIQAAAAAAAABxAAAAAAAAAJkAAAAAAAAAkQAAAAAAAACBAAAAAAAAAKEAAAAAAAAAqQAAAAAAAACZAAAAAAAAAJkAAAAAAAAAwQAAAAAAAACJAAAAAAAAANEAAAAAAAAA0QAAAAAAAADVAAAAAAAAAN0AAAAAAAAAgQAAAAAAAADZAAAAAAAAAPkAAAAAAAAA6QAAAAAAAADdAAAAAAAAAPkAAAAAAAAA4QAAAAAAAAD1AAAAAAAAAOkAAAAAAAAA1QAAAAAAAADlAAAAAAAAAMUAAAAAAAAAxQAAAAAAAAC5AAAAAAAAAOEAAAAAAAAAwQAAAAAAAADVAAAAAAAAAOkAAAAAAAAA2QAAAAAAAAAhA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"scheduled\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAACATUAAAAAAAIBMQAAAAAAAAEtAAAAAAAAAS0AAAAAAAIBHQAAAAAAAAE9AAAAAAAAATUAAAAAAAABPQAAAAAAAAE5AAAAAAAAATUAAAAAAAIBKQAAAAAAAgEhAAAAAAAAARUAAAAAAAIBSQAAAAAAAQFJAAAAAAAAAUkAAAAAAAMBTQAAAAAAAgEpAAAAAAABAUkAAAAAAAMBSQAAAAAAAwFNAAAAAAABAU0AAAAAAAIBDQAAAAAAAgFJAAAAAAAAAUEAAAAAAAEBQQAAAAAAAgFRAAAAAAABAUUAAAAAAAABRQAAAAAAAAFJAAAAAAACAUEAAAAAAAMBTQAAAAAAAAFRAAAAAAADAU0AAAAAAAABVQAAAAAAAgFNAAAAAAABAUEAAAAAAAIBPQAAAAAAAAEtAAAAAAACATUAAAAAAAIBOQAAAAAAAADtA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}],[\"unknown\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAIEAAAAAAAAAQQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAIQAAAAAAAABhAAAAAAAAAGEAAAAAAAAAQQAAAAAAAAPA/AAAAAAAACEAAAAAAAAAAQAAAAAAAABRAAAAAAAAAHEAAAAAAAADwPwAAAAAAADBAAAAAAAAAJEAAAAAAAAAgQAAAAAAAABBAAAAAAAAAJEAAAAAAAAAkQAAAAAAAACJAAAAAAAAAHEAAAAAAAAAIQAAAAAAAADFAAAAAAAAAKkAAAAAAAAAcQAAAAAAAABBAAAAAAAAAJEAAAAAAAAAoQAAAAAAAACBAAAAAAAAALkAAAAAAAAAyQAAAAAAAACJAAAAAAAAAKkAAAAAAAAAiQAAAAAAAACZAAAAAAAAAJEAAAAAAAAAkQAAAAAAAAChAAAAAAAAAMUAAAAAAAAAwQAAAAAAAAABA\"},\"shape\":[42],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3358\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3359\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3354\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3339\",\"attributes\":{\"fields\":[]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3340\",\"attributes\":{\"fields\":[\"active\"]}}},\"fill_color\":\"#3288bd\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3355\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3339\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3340\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3356\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3339\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3340\"}},\"fill_color\":\"#3288bd\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#3288bd\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3368\",\"attributes\":{\"name\":\"cancelled\",\"data_source\":{\"id\":\"p3293\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3369\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3370\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3365\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3341\",\"attributes\":{\"fields\":[\"active\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3342\",\"attributes\":{\"fields\":[\"active\",\"cancelled\"]}}},\"fill_color\":\"#99d594\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3366\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3341\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3342\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3367\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3341\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3342\"}},\"fill_color\":\"#99d594\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#99d594\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3378\",\"attributes\":{\"name\":\"landed\",\"data_source\":{\"id\":\"p3293\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3379\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3380\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3375\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3343\",\"attributes\":{\"fields\":[\"active\",\"cancelled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3344\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\"]}}},\"fill_color\":\"#e6f598\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3376\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3343\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3344\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3377\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3343\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3344\"}},\"fill_color\":\"#e6f598\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#e6f598\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3388\",\"attributes\":{\"name\":\"scheduled\",\"data_source\":{\"id\":\"p3293\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3389\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3390\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3385\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3345\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3346\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\"]}}},\"fill_color\":\"#fee08b\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3386\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3345\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3346\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3387\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3345\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3346\"}},\"fill_color\":\"#fee08b\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fee08b\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3398\",\"attributes\":{\"name\":\"unknown\",\"data_source\":{\"id\":\"p3293\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3399\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3400\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3395\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3347\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3348\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\",\"unknown\"]}}},\"fill_color\":\"#fc8d59\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3396\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3347\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3348\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3397\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3347\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3348\"}},\"fill_color\":\"#fc8d59\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#fc8d59\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3408\",\"attributes\":{\"name\":\"diverted\",\"data_source\":{\"id\":\"p3293\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3409\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3410\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3405\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3349\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\",\"unknown\"]}}},\"y2\":{\"type\":\"expr\",\"expr\":{\"type\":\"object\",\"name\":\"Stack\",\"id\":\"p3350\",\"attributes\":{\"fields\":[\"active\",\"cancelled\",\"landed\",\"scheduled\",\"unknown\",\"diverted\"]}}},\"fill_color\":\"#d53e4f\",\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3406\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3349\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3350\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.1,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"VArea\",\"id\":\"p3407\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"flight_date\"},\"y1\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3349\"}},\"y2\":{\"type\":\"expr\",\"expr\":{\"id\":\"p3350\"}},\"fill_color\":\"#d53e4f\",\"fill_alpha\":0.2,\"hatch_color\":{\"type\":\"value\",\"value\":\"#d53e4f\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3418\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3412\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3413\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3414\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AADAgRPOeEIAAABKVNB4QgAAQBKV0nhCAACA2tXUeEIAAMCiFtd4QgAAAGtX2XhCAABAM5jbeEIAAID72N14QgAAwMMZ4HhCAAAAjFrieEIAAEBUm+R4QgAAgBzc5nhCAADA5BzpeEIAAACtXet4QgAAQHWe7XhCAACAPd/veEIAAMAFIPJ4QgAAAM5g9HhCAABAlqH2eEIAAIBe4vh4QgAAwCYj+3hCAAAA72P9eEIAAEC3pP94QgAAgH/lAXlCAADARyYEeUIAAAAQZwZ5QgAAQNinCHlCAACAoOgKeUIAAMBoKQ15QgAAADFqD3lCAABA+aoReUIAAIDB6xN5QgAAwIksFnlCAAAAUm0YeUIAAEAarhp5QgAAgOLuHHlCAADAqi8feUIAAABzcCF5QgAAQDuxI3lCAACAA/IleUI=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AgEAAC0BAAAlAQAA1AAAAOgAAAAbAQAA7QAAAP0AAAAoAQAAMwEAAA0BAAAjAQAAHgEAADEBAADyAAAADgEAABsBAAAOAQAADwEAAPEAAAANAQAACQEAAAABAAAPAQAA2QAAADIBAAAGAQAAJAEAAFQBAABmAQAAEAEAAFMBAAASAQAADAEAANkAAAAUAQAAEQEAAAIBAAAJAQAAyQAAAA==\"},\"shape\":[40],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3419\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3420\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3415\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3416\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p3417\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p3425\",\"attributes\":{\"location\":1717891200000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p3427\",\"attributes\":{\"location\":1724544000000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}},{\"type\":\"object\",\"name\":\"Span\",\"id\":\"p3429\",\"attributes\":{\"location\":1727049600000.0,\"dimension\":\"height\",\"line_color\":\"#C6C6C6\",\"line_width\":2,\"line_dash\":[4,4]}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3305\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p3330\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p3331\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p3332\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p3337\"},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3338\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3325\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3326\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3327\"},\"axis_label\":\"Nr Flights\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3328\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p3308\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"FixedTicker\",\"id\":\"p3423\",\"attributes\":{\"ticks\":[1704585600000.0,1705795200000.0,1707004800000.0,1708214400000.0,1709424000000.0,1710633600000.0,1711843200000.0,1713052800000.0,1714262400000.0,1715472000000.0,1716681600000.0,1717891200000.0,1719100800000.0,1720310400000.0,1721520000000.0,1722729600000.0,1723939200000.0,1725148800000.0,1726358400000.0,1727568000000.0,1728777600000.0],\"minor_ticks\":[]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p3422\",\"attributes\":{\"days\":\"%d %b %Y\",\"months\":\"%b %Y\"}},\"axis_label\":\"Flight Date\",\"major_label_orientation\":1.2,\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3323\"}}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3424\",\"attributes\":{\"text\":\"Source: Flight data from AviationStack and conflict events from ACLED\",\"text_color\":\"gray\",\"text_font_size\":\"10pt\",\"x\":0,\"y\":0,\"x_units\":\"screen\",\"y_units\":\"screen\"}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3324\",\"attributes\":{\"axis\":{\"id\":\"p3308\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3329\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p3325\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p3360\",\"attributes\":{\"location\":\"top_left\",\"orientation\":\"horizontal\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3361\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"active\"},\"renderers\":[{\"id\":\"p3357\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3371\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"cancelled\"},\"renderers\":[{\"id\":\"p3368\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3381\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"landed\"},\"renderers\":[{\"id\":\"p3378\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3391\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"scheduled\"},\"renderers\":[{\"id\":\"p3388\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3401\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"unknown\"},\"renderers\":[{\"id\":\"p3398\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3411\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"diverted\"},\"renderers\":[{\"id\":\"p3408\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p3421\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Number of Conflict Events w/o Protests\"},\"renderers\":[{\"id\":\"p3418\"}]}}]}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3426\",\"attributes\":{\"text\":\"Airline data\\nnot available\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1717891200000.0,\"y\":326.4,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3428\",\"attributes\":{\"text\":\"Israeli strikes in\\nSouthern Lebanon\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1724544000000.0,\"y\":293.76,\"x_offset\":-5}},{\"type\":\"object\",\"name\":\"Label\",\"id\":\"p3430\",\"attributes\":{\"text\":\"Start of the Israel-Hezboullah\\nConflict\",\"text_color\":\"black\",\"text_font_size\":\"10pt\",\"text_align\":\"right\",\"background_fill_color\":\"grey\",\"background_fill_alpha\":0.2,\"x\":1727049600000.0,\"y\":261.12,\"x_offset\":-5}}]}}]}};\n const render_items = [{\"docid\":\"c14152c2-9c80-4151-bd78-fb040b3857aa\",\"roots\":{\"p3296\":\"de8169b5-d229-4561-93f5-8befdadb3fea\"},\"root_ids\":[\"p3296\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
+ "application/vnd.bokehjs_exec.v0+json": ""
+ },
+ "metadata": {
+ "application/vnd.bokehjs_exec.v0+json": {
+ "id": "p3296"
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "output_notebook() # Display plots inline in a Jupyter notebook\n",
+ "\n",
+ "arrivals_exploded[\"flight_date\"] = arrivals_exploded[\"flight_date\"].apply(\n",
+ " lambda x: pd.to_datetime(x)\n",
+ ")\n",
+ "df = (\n",
+ " arrivals_exploded.groupby(\n",
+ " [pd.Grouper(key=\"flight_date\", freq=\"W\"), \"flight_status\"]\n",
+ " )\n",
+ " .count()[[\"iata_arr\"]]\n",
+ " .reset_index()\n",
+ ")\n",
+ "\n",
+ "show(\n",
+ " get_area_plot(\n",
+ " df,\n",
+ " \"Weekly Arrivals to DAM, ALP, LTK\",\n",
+ " \"Source: Flight data from AviationStack and conflict events from ACLED\",\n",
+ " acled_events_weekly,\n",
+ " reindex_freq=\"W\",\n",
+ " events_dict=events,\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Findings\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 155,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "arrivals_exploded[\"airportcity\"] = arrivals_exploded[\"iata_dep\"].map(iata_mapping)\n",
+ "most_changed_arrivals = (\n",
+ " pd.DataFrame(\n",
+ " arrivals_exploded[\n",
+ " arrivals_exploded[\"flight_status\"].isin(\n",
+ " [\"scheduled\", \"cancelled\", \"diverted\"]\n",
+ " )\n",
+ " ][\"airportcity\"]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")\n",
+ "most_cancelled_arrivals = (\n",
+ " pd.DataFrame(\n",
+ " arrivals_exploded[arrivals_exploded[\"flight_status\"].isin([\"cancelled\"])][\n",
+ " \"airportcity\"\n",
+ " ]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")\n",
+ "most_scheduled_arrivals = (\n",
+ " pd.DataFrame(\n",
+ " arrivals_exploded[arrivals_exploded[\"flight_status\"].isin([\"scheduled\"])][\n",
+ " \"airportcity\"\n",
+ " ]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")\n",
+ "most_diverted_arrivals = (\n",
+ " pd.DataFrame(\n",
+ " arrivals_exploded[arrivals_exploded[\"flight_status\"].isin([\"diverted\"])][\n",
+ " \"airportcity\"\n",
+ " ]\n",
+ " .value_counts()\n",
+ " .head(10)\n",
+ " )\n",
+ " .reset_index()\n",
+ " .sort_values(by=\"count\", ascending=True)\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 156,
+ "metadata": {
+ "tags": [
+ "remove-input"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ "
\n",
+ "
Loading BokehJS ...\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"\\n\"+\n \"
\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"- re-rerun `output_notebook()` to attempt to load from CDN again, or
\\n\"+\n \"- use INLINE resources instead, as so:
\\n\"+\n \"
\\n\"+\n \"
\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"dd1ea9af-1f22-4ef7-8932-6e4b4535c40b\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.4.1.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"dd1ea9af-1f22-4ef7-8932-6e4b4535c40b\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));",
+ "application/vnd.bokehjs_load.v0+json": ""
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/javascript": "(function(root) {\n function embed_document(root) {\n const docs_json = {\"355d3c5a-40d3-4622-a62e-81b418eba6a5\":{\"version\":\"3.4.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p3635\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p3634\",\"attributes\":{\"width\":800,\"text\":\"Top 10 Destinations with Changes in Arrivals to BEY in 2024
\"}},{\"type\":\"object\",\"name\":\"Tabs\",\"id\":\"p3633\",\"attributes\":{\"tabs\":[{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p3488\",\"attributes\":{\"title\":\"Most Changed Arrivals\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p3487\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3444\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3446\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p3454\",\"attributes\":{\"factors\":[\"Beirut\",\"Tehran\",\"Abu Dhabi\",\"Dubai\",\"Doha\",\"Erbil\",\"Najaf\",\"Baghdad\",\"Sharjah\",\"Kuwait City\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3455\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p3456\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3447\",\"attributes\":{\"text\":\"Most Changed Arrivals in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3474\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3441\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3442\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3443\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CQAAAAgAAAAHAAAABgAAAAUAAAAEAAAAAwAAAAIAAAABAAAAAAAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Beirut\",\"Tehran\",\"Abu Dhabi\",\"Dubai\",\"Doha\",\"Erbil\",\"Najaf\",\"Baghdad\",\"Sharjah\",\"Kuwait City\"],\"shape\":[10],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"PQAAAFsAAABdAAAAawAAAH8AAADoAAAA9QAAACMBAADUAQAADQMAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3475\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3476\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3471\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3472\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3473\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"lightblue\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3483\",\"attributes\":{\"data_source\":{\"id\":\"p3441\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3484\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3485\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3480\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3481\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3482\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3453\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3467\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p3462\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p3463\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p3464\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3465\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3457\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3458\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3459\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3460\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3461\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p3457\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3466\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p3462\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p3486\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p3536\",\"attributes\":{\"title\":\"Most Cancelled Arrivals\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p3535\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3492\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3494\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p3502\",\"attributes\":{\"factors\":[\"Abu Dhabi\",\"Dubai\",\"Kuwait City\",\"Cairo\",\"Erbil\",\"Doha\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3503\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p3504\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3495\",\"attributes\":{\"text\":\"Most Cancelled Arrivals in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3522\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3489\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3490\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3491\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BQAAAAQAAAADAAAAAgAAAAEAAAAAAAAA\"},\"shape\":[6],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Abu Dhabi\",\"Dubai\",\"Kuwait City\",\"Cairo\",\"Erbil\",\"Doha\"],\"shape\":[6],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAIAAAAFAAAABgAAAAgAAAAJAAAA\"},\"shape\":[6],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3523\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3524\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3519\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3520\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3521\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3531\",\"attributes\":{\"data_source\":{\"id\":\"p3489\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3532\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3533\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3528\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3529\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3530\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3501\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3515\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p3510\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p3511\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p3512\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3513\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3505\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3506\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3507\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3508\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3509\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p3505\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3514\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p3510\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p3534\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p3584\",\"attributes\":{\"title\":\"Most Scheduled Arrivals\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p3583\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3540\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3542\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p3550\",\"attributes\":{\"factors\":[\"Beirut\",\"Tehran\",\"Abu Dhabi\",\"Dubai\",\"Doha\",\"Erbil\",\"Najaf\",\"Baghdad\",\"Sharjah\",\"Kuwait City\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3551\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p3552\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3543\",\"attributes\":{\"text\":\"Most Scheduled Arrivals in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3570\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3537\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3538\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3539\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CQAAAAgAAAAHAAAABgAAAAUAAAAEAAAAAwAAAAIAAAABAAAAAAAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Beirut\",\"Tehran\",\"Abu Dhabi\",\"Dubai\",\"Doha\",\"Erbil\",\"Najaf\",\"Baghdad\",\"Sharjah\",\"Kuwait City\"],\"shape\":[10],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"PAAAAFYAAABYAAAAaAAAAHYAAADfAAAA6wAAABcBAADKAQAABAMAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3571\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3572\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3567\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3568\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3569\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#023436\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3579\",\"attributes\":{\"data_source\":{\"id\":\"p3537\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3580\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3581\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3576\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3577\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3578\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3549\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3563\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p3558\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p3559\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p3560\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3561\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3553\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3554\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3555\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3556\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3557\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p3553\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3562\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p3558\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p3582\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"p3632\",\"attributes\":{\"title\":\"Most Diverted Arrivals\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p3631\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p3588\",\"attributes\":{\"height\":400,\"x_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p3590\"},\"y_range\":{\"type\":\"object\",\"name\":\"FactorRange\",\"id\":\"p3598\",\"attributes\":{\"factors\":[\"Dubai\",\"Beirut\",\"Cairo\",\"Muscat\",\"Kuwait City\",\"Abu Dhabi\",\"Tehran\",\"Najaf\",\"Sharjah\",\"Baghdad\"]}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p3599\"},\"y_scale\":{\"type\":\"object\",\"name\":\"CategoricalScale\",\"id\":\"p3600\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p3591\",\"attributes\":{\"text\":\"Most Diverted Arrivals in 2024\"}},\"outline_line_color\":null,\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3618\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p3585\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p3586\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p3587\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BwAAAAgAAAAJAAAABgAAAAQAAAAFAAAAAwAAAAEAAAACAAAAAAAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}],[\"airportcity\",{\"type\":\"ndarray\",\"array\":[\"Dubai\",\"Beirut\",\"Cairo\",\"Muscat\",\"Kuwait City\",\"Abu Dhabi\",\"Tehran\",\"Najaf\",\"Sharjah\",\"Baghdad\"],\"shape\":[10],\"dtype\":\"object\",\"order\":\"little\"}],[\"count\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AQAAAAEAAAABAAAAAgAAAAQAAAAEAAAABQAAAAoAAAAKAAAADAAAAA==\"},\"shape\":[10],\"dtype\":\"int32\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3619\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3620\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3615\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.7},\"fill_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.7},\"hatch_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.7}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3616\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"HBar\",\"id\":\"p3617\",\"attributes\":{\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"height\":{\"type\":\"value\",\"value\":0.5},\"right\":{\"type\":\"field\",\"field\":\"count\"},\"line_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#00BFB3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p3627\",\"attributes\":{\"data_source\":{\"id\":\"p3585\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p3628\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p3629\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3624\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3625\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.1},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Text\",\"id\":\"p3626\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"count\"},\"y\":{\"type\":\"field\",\"field\":\"airportcity\"},\"text\":{\"type\":\"field\",\"field\":\"count\"},\"x_offset\":{\"type\":\"value\",\"value\":-5},\"y_offset\":{\"type\":\"value\",\"value\":-3},\"text_color\":{\"type\":\"value\",\"value\":\"black\"},\"text_alpha\":{\"type\":\"value\",\"value\":0.2},\"text_font_size\":{\"type\":\"value\",\"value\":\"10pt\"},\"text_align\":{\"type\":\"value\",\"value\":\"right\"},\"text_baseline\":{\"type\":\"value\",\"value\":\"middle\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p3597\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p3611\"}]}},\"toolbar_location\":\"above\",\"left\":[{\"type\":\"object\",\"name\":\"CategoricalAxis\",\"id\":\"p3606\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"CategoricalTicker\",\"id\":\"p3607\"},\"formatter\":{\"type\":\"object\",\"name\":\"CategoricalTickFormatter\",\"id\":\"p3608\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3609\"},\"axis_line_color\":null,\"major_tick_line_color\":null,\"minor_tick_line_color\":null}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p3601\",\"attributes\":{\"visible\":false,\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p3602\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p3603\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p3604\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3605\",\"attributes\":{\"visible\":false,\"axis\":{\"id\":\"p3601\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p3610\",\"attributes\":{\"visible\":false,\"dimension\":1,\"axis\":{\"id\":\"p3606\"}}}]}},{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p3630\",\"attributes\":{\"width\":600,\"text\":\"Source: AviationStack. Acessed October 7th 2024.
\"}}]}}}}]}}]}}]}};\n const render_items = [{\"docid\":\"355d3c5a-40d3-4622-a62e-81b418eba6a5\",\"roots\":{\"p3635\":\"bd585686-6b40-4874-9535-fd8640ce8994\"},\"root_ids\":[\"p3635\"]}];\n void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n let attempts = 0;\n const timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);",
+ "application/vnd.bokehjs_exec.v0+json": ""
+ },
+ "metadata": {
+ "application/vnd.bokehjs_exec.v0+json": {
+ "id": "p3635"
+ }
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "output_notebook()\n",
+ "from bokeh.layouts import column\n",
+ "from bokeh.models import Div\n",
+ "\n",
+ "# Example datasets stored in a dictionary\n",
+ "datasets = {\n",
+ " \"Most Changed Arrivals\": most_changed_arrivals,\n",
+ " \"Most Cancelled Arrivals\": most_cancelled_arrivals,\n",
+ " \"Most Scheduled Arrivals\": most_scheduled_arrivals,\n",
+ " \"Most Diverted Arrivals\": most_diverted_arrivals\n",
+ "}\n",
+ "\n",
+ "# Initialize an empty list to store the tabs\n",
+ "# List of colors to use for each dataset\n",
+ "colors = [\"lightblue\", \"orange\", \"#023436\", \"#00BFB3\"]\n",
+ "\n",
+ "# Initialize an empty list to store the tabs\n",
+ "tabs = []\n",
+ "\n",
+ "# Loop through each dataset and its corresponding color\n",
+ "for (title, data), color in zip(datasets.items(), colors):\n",
+ " # Convert data to ColumnDataSource for Bokeh plotting\n",
+ " source = ColumnDataSource(data)\n",
+ "\n",
+ " # Create a figure for each dataset\n",
+ " p = figure(y_range=data['airportcity'], width=600, height=400, title=title + \" in 2024\", tools=\"save\", toolbar_location=\"above\")\n",
+ " p.hbar(y='airportcity', right='count', height=0.5, color=color, alpha=0.7, source=source)\n",
+ "\n",
+ " # Add text inside the bars (5 points inside the bar)\n",
+ " p.text(x='count', y='airportcity', text='count', source=source, \n",
+ " x_offset=-5, # This places the text 5 units inside the bar\n",
+ " y_offset=-3, # Vertical alignment\n",
+ " text_align='right', text_baseline='middle', text_color=\"black\", text_font_size=\"10pt\")\n",
+ "\n",
+ " # Customize plot (optional)\n",
+ " p.xaxis.visible = False\n",
+ " p.ygrid.visible = False\n",
+ " p.xgrid.visible = False\n",
+ " p.yaxis.major_tick_line_color = None # No major ticks\n",
+ " p.yaxis.minor_tick_line_color = None # No minor ticks\n",
+ " p.yaxis.axis_line_color = None \n",
+ " p.outline_line_color = None\n",
+ "\n",
+ " subtitle = Div(text=f\"Source: AviationStack. Acessed October 7th 2024.
\", width=600)\n",
+ "\n",
+ " layout = column(p, subtitle)\n",
+ "\n",
+ " # Create a panel with the plot and the corresponding title\n",
+ " tab = TabPanel(child=layout, title=title)\n",
+ " \n",
+ " # Append the panel to the list of tabs\n",
+ " tabs.append(tab)\n",
+ "\n",
+ "# Arrange the tabs in a Tabs layout\n",
+ "tabs_layout = Tabs(tabs=tabs)\n",
+ "\n",
+ "main_title = Div(text=\"Top 10 Destinations with Changes in Arrivals to BEY in 2024
\", width=800)\n",
+ "\n",
+ "# Use column layout to stack the title on top of the tabs\n",
+ "layout = column(main_title, tabs_layout)\n",
+ "\n",
+ "# Show the tabs\n",
+ "show(layout)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Findings\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 157,
+ "metadata": {
+ "tags": [
+ "remove-cell"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "arrivals_exploded.to_csv(\n",
+ " \"../../data/aviation/processed_arrivals_bey_20240101_20241014.csv\"\n",
+ ")\n",
+ "departures_exploded.to_csv(\n",
+ " \"../../data/aviation/processed_departures_bey_20240101_20241014.csv\"\n",
+ ")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "data-goods",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}