mirror of
https://github.com/Derisis13/SeismStart.git
synced 2025-12-06 19:42:49 +01:00
417 lines
92 KiB
Plaintext
417 lines
92 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "b6d8016c-6a09-4717-891b-6f091c5a944e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import tensorflow as tf\n",
|
|
"from tensorflow.keras import layers, models\n",
|
|
"\n",
|
|
"import scipy\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"import pandas as pd\n",
|
|
"from obspy import read\n",
|
|
"from datetime import datetime, timedelta\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import os\n",
|
|
"\n",
|
|
"%matplotlib inline"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "7eabca9a-7e3d-49c8-b0b4-4d360dfc51a9",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# This section is to test the autoencoder - it generates data that is somewhat similar to the real data\n",
|
|
"\n",
|
|
"# Test signal generator\n",
|
|
"\n",
|
|
"# def signal(A, t):\n",
|
|
"# return A * np.sin(30*t) * np.exp(-t) + np.random.randn(t.shape[0])/2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "ea8f0359-e795-4ab3-aa8a-b8fc2a8d153b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# A1 = 3\n",
|
|
"# t1 = np.linspace(0, 5, 40000)\n",
|
|
"# s1 = signal(A1, t1)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "6681ea57-27e9-480a-ad1f-ece1749ce3dc",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# def data_generator(n_samples):\n",
|
|
"# data = np.empty([n_samples, 40000])\n",
|
|
"# for i in range(n_samples):\n",
|
|
"# data[i] = signal(A1, t1)\n",
|
|
"\n",
|
|
"# return data\n",
|
|
"\n",
|
|
"# data = data_generator(200)\n",
|
|
"\n",
|
|
"# # normalise\n",
|
|
"# data = data / np.max(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "92594999-3a15-4e0f-aff6-8b7b31860c71",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# convenience plot function\n",
|
|
"def plot(x, y, title):\n",
|
|
" plt.figure()\n",
|
|
" plt.plot(x, y, linewidth=0.7, c='blue')\n",
|
|
" plt.title(title)\n",
|
|
" plt.savefig(title + '.png')\n",
|
|
" plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"id": "c0e83f5b-9b4e-4bfd-8de4-5b45231a709f",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"(46376,)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGzCAYAAAASZnxRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRI0lEQVR4nO3deXgURd4H8O+EkIQr4QohQDgCkVMgEIgorlwKCCquHCoiAcTlckERhVXEV1yCgq6CLIquwRU5REEBOeX04JCbgAQiIDEQDoEkYAwhqfeP3rl7Znpmuqfn+H6ep5+Z6a6uqh5g+kd1HQYhhAARERGRDsL0rgARERGFLgYiREREpBsGIkRERKQbBiJERESkGwYiREREpBsGIkRERKQbBiJERESkGwYiREREpBsGIkRERKQbBiJEFHC2bdsGg8GAbdu26V0VIvISAxGiILNw4UIYDAaH265du/Suot8pKirCiBEj0KpVK8TExKBy5cpo06YN3n33XZSUlOhdPaKgFq53BYhIG6+99hoaNWpkt79JkyY61Ma/FRUV4ejRo7j//vvRsGFDhIWF4ccff8Szzz6L3bt3Y/HixXpXkShoMRAhClK9e/dGSkqK3tUICNWrV7drKRo1ahRiYmLw3nvv4e2330bt2rV1qh1RcOOjGaIQNW3aNISFhWHz5s1W+59++mlERETg0KFDAICbN2/ilVdeQfv27RETE4NKlSrh7rvvxtatW63OO3PmDAwGA2bPno158+YhMTERFStWxH333YecnBwIITB9+nTUq1cPFSpUwEMPPYQrV65Y5dGwYUP07dsXGzduRNu2bREVFYUWLVpgxYoViq5p9+7d6NWrF2JiYlCxYkXcc889+OGHHzz+jho2bAgAuHbtmsd5EJFzBiGE0LsSRKSehQsXYtiwYfj222/Rpk0bq2MGgwE1atQAAJSUlCA1NRVXrlzBkSNHUKVKFWzYsAG9evXC9OnT8fLLLwMALl++jNatW+Oxxx5DUlISCgsL8Z///AenTp3Cnj170LZtWwBSINKoUSO0bdsWN2/exFNPPYUrV67gzTffRLt27dCtWzds27YNjz76KLKzszF37lykpaXh448/NtWvYcOGiIyMxMWLFzFq1CjUqlULGRkZOHr0KNavX497770XgNRZtWvXrti6dSu6dOkCANiyZQt69+6N9u3bo3//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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# test_filename = 'xa.s12.00.mhz.1970-03-25HR00_evid00003_trimmed_7000_sec'\n",
|
|
"\n",
|
|
"data_directory = './'\n",
|
|
"mseed_file = f'{data_directory}{test_filename}.mseed'\n",
|
|
"st = read(mseed_file)\n",
|
|
"st\n",
|
|
"\n",
|
|
"tr = st.traces[0].copy()\n",
|
|
"tr_times = tr.times()\n",
|
|
"tr_data = tr.data\n",
|
|
"\n",
|
|
"# plot(tr_times, tr_data, 'Mseed Example')\n",
|
|
"\n",
|
|
"print(tr_times.shape)\n",
|
|
"\n",
|
|
"def read_all_mseed_files(data_directory, target_length=None):\n",
|
|
" # List all files in the directory with \".mseed\" extension\n",
|
|
" mseed_files = [f for f in os.listdir(data_directory) if f.endswith('.mseed')]\n",
|
|
" \n",
|
|
" data_matrix = []\n",
|
|
" \n",
|
|
" # Loop through all the mseed files and extract time and data series\n",
|
|
" for filename in mseed_files:\n",
|
|
" st = read(os.path.join(data_directory, filename))\n",
|
|
" tr = st.traces[0].copy() \n",
|
|
" tr_data = tr.data \n",
|
|
" \n",
|
|
" if target_length is None:\n",
|
|
" target_length = len(tr_data) # Set target length to the first trace's length\n",
|
|
" \n",
|
|
" # Pad or trim the data to the target length\n",
|
|
" if len(tr_data) < target_length:\n",
|
|
" # Pad with zeros if shorter\n",
|
|
" tr_data = np.pad(tr_data, (0, target_length - len(tr_data)), mode='constant')\n",
|
|
" else:\n",
|
|
" # Trim if longer\n",
|
|
" tr_data = tr_data[:target_length]\n",
|
|
" \n",
|
|
" data_matrix.append(tr_data)\n",
|
|
" \n",
|
|
" # Convert the list to a numpy matrix\n",
|
|
" data_matrix = np.array(data_matrix)\n",
|
|
" \n",
|
|
" return data_matrix\n",
|
|
"\n",
|
|
"data = read_all_mseed_files(data_directory, 46376)\n",
|
|
"\n",
|
|
"plot(tr_times, data[3], 'Example 3')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 41,
|
|
"id": "8d5233d0-cf1a-4a93-9f90-979160f1a7ee",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"functional_6\"</span>\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1mModel: \"functional_6\"\u001b[0m\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
"┃<span style=\"font-weight: bold\"> Layer (type) </span>┃<span style=\"font-weight: bold\"> Output Shape </span>┃<span style=\"font-weight: bold\"> Param # </span>┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
"│ input_layer_7 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">InputLayer</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">46376</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ functional_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Functional</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">48,080,512</span> │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ functional_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Functional</span>) │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">46376</span>) │ <span style=\"color: #00af00; text-decoration-color: #00af00\">48,126,760</span> │\n",
|
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
|
|
"┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
|
|
"┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
|
|
"│ input_layer_7 (\u001b[38;5;33mInputLayer\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m46376\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ functional_4 (\u001b[38;5;33mFunctional\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m48,080,512\u001b[0m │\n",
|
|
"├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
|
|
"│ functional_5 (\u001b[38;5;33mFunctional\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m46376\u001b[0m) │ \u001b[38;5;34m48,126,760\u001b[0m │\n",
|
|
"└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">96,207,272</span> (367.00 MB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Total params: \u001b[0m\u001b[38;5;34m96,207,272\u001b[0m (367.00 MB)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">96,207,272</span> (367.00 MB)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m96,207,272\u001b[0m (367.00 MB)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
|
|
"</pre>\n"
|
|
],
|
|
"text/plain": [
|
|
"\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Define the input shape\n",
|
|
"input_shape = (46376,)\n",
|
|
"\n",
|
|
"# Build the encoder\n",
|
|
"def build_encoder(input_shape):\n",
|
|
" inputs = layers.Input(shape=input_shape)\n",
|
|
" encoded = layers.Dense(1024, activation='relu')(inputs) \n",
|
|
" encoded = layers.Dense(512, activation='relu')(encoded) \n",
|
|
" encoded = layers.Dense(128, activation='relu')(encoded) \n",
|
|
" return models.Model(inputs, encoded)\n",
|
|
"\n",
|
|
"# Build the decoder\n",
|
|
"def build_decoder():\n",
|
|
" encoded_inputs = layers.Input(shape=(128,))\n",
|
|
" decoded = layers.Dense(512, activation='relu')(encoded_inputs)\n",
|
|
" decoded = layers.Dense(1024, activation='relu')(decoded)\n",
|
|
" decoded = layers.Dense(46376, activation='linear')(decoded) \n",
|
|
" return models.Model(encoded_inputs, decoded)\n",
|
|
"\n",
|
|
"# Build the autoencoder\n",
|
|
"def build_autoencoder(input_shape):\n",
|
|
" encoder = build_encoder(input_shape)\n",
|
|
" decoder = build_decoder()\n",
|
|
" \n",
|
|
" autoencoder_input = layers.Input(shape=input_shape)\n",
|
|
" encoded = encoder(autoencoder_input)\n",
|
|
" reconstructed = decoder(encoded)\n",
|
|
" \n",
|
|
" autoencoder = models.Model(autoencoder_input, reconstructed)\n",
|
|
" return autoencoder\n",
|
|
"\n",
|
|
"# Create the autoencoder\n",
|
|
"autoencoder = build_autoencoder(input_shape)\n",
|
|
"\n",
|
|
"# Compile the autoencoder\n",
|
|
"autoencoder.compile(optimizer='adam', loss='mse')\n",
|
|
"\n",
|
|
"# Display architecture\n",
|
|
"autoencoder.summary()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 42,
|
|
"id": "1e032edc-7aa6-4606-a9ae-10755b729c44",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 1/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 638ms/step - loss: 1.7035e-17 - val_loss: 2.1754e-17\n",
|
|
"Epoch 2/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 609ms/step - loss: 2.0816e-17 - val_loss: 2.1793e-17\n",
|
|
"Epoch 3/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 607ms/step - loss: 1.4756e-17 - val_loss: 2.1855e-17\n",
|
|
"Epoch 4/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 610ms/step - loss: 9.2580e-18 - val_loss: 2.1905e-17\n",
|
|
"Epoch 5/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 611ms/step - loss: 2.1401e-17 - val_loss: 2.1988e-17\n",
|
|
"Epoch 6/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 634ms/step - loss: 1.5923e-17 - val_loss: 2.2044e-17\n",
|
|
"Epoch 7/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 621ms/step - loss: 1.0468e-17 - val_loss: 2.2061e-17\n",
|
|
"Epoch 8/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 631ms/step - loss: 1.0075e-17 - val_loss: 2.2054e-17\n",
|
|
"Epoch 9/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 606ms/step - loss: 1.5476e-17 - val_loss: 2.2053e-17\n",
|
|
"Epoch 10/10\n",
|
|
"\u001b[1m6/6\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m4s\u001b[0m 625ms/step - loss: 1.9096e-17 - val_loss: 2.2073e-17\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<keras.src.callbacks.history.History at 0x1f87f14b620>"
|
|
]
|
|
},
|
|
"execution_count": 42,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"autoencoder.fit(data, data, epochs=10, batch_size=10, validation_split=0.2)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 43,
|
|
"id": "fc11a70e-b56e-4595-8b2c-0de8d56b9838",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[1m3/3\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 53ms/step\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"reconstructed = autoencoder.predict(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 44,
|
|
"id": "9dccc169-5d08-420a-a962-c654cf129efd",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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dHQ08+bNY+PGjXz66aeEhYW5VNbDhw/TokULOnbsSIUKFciWLRsLFizg4sWLdO7c2ZiuZs2axpq8UqVKkS9fPovaBnOdO3dmyJAhPPXUU7zxxhvGrq1lypTRNGgsVaoUw4cP5/3336dRo0Y8/fTTBAYGsnXrVgoVKkRsbKxLZciePTvjx4+ne/fuNGnShOeee87YfTc6OpqBAwe69BnZEh4ezpQpU3jxxRepUaMGnTt3JjIyklOnTrF48WIaNGjA5MmTuXv3Ll27dqV06dKMHTsW0HdX/uOPP+jevTt79uwhNDSUVq1aERAQQLt27XjllVe4desW06dPJ1++fFaD2NQKCgpi6dKldO3albp167JkyRIWL17MO++8Y9FmxtS4ceNYvXo1devWpVevXlSoUIFr166xY8cOVqxYwbVr1zxeViEc8ll/nVQA1IIFC4zbhq59oaGhmiVbtmyqY8eOSimlDhw4oAC7y5AhQ4x5Hj16VDVu3FgByt/fX9WuXVt16dJFlStXLq1vV3iYodvq1q1bLY4lJSWpkiVLqpIlSxq7tB47dky99NJLqkCBAip79uyqcOHCqm3btmrevHmac69evar69eunChcurAICAlSRIkVU165dNV0lL168qLp3767y5s2rAgICVOXKldXMmTM1+Ri671rrlotJd8wrV66ovn37qnLlyqnQ0FAVERGh6tatq37++WfNORcuXFBt2rRRYWFhCjB2o7X3OSil1F9//aUqVaqkAgICVNmyZdWcOXMsuu8azJgxQ1WvXl0FBgaqXLlyqSZNmqjly5c7LIN5912Dn376yZhf7ty5VZcuXdSZM2c0abp27apCQ0MtymKrjNasXr1axcTEqIiICBUUFKRKliypunXrprZt26aUUmrgwIHK399fbd68WXPetm3bVLZs2dRrr71m3Ldw4UJVpUoVFRQUpKKjo9X48ePVjBkzFKBOnDhhTFesWDHVpk0bi7IAqm/fvpp91n4WDPd97Ngx1apVKxUSEqLy58+vRo0aZdGFGrPuu0rpfwb79u2roqKiVPbs2VWBAgVUixYt1LRp05z6zITwNJ1SHmgFlcZ0Oh0LFiygffv2APz000906dKFffv2WTT2ypEjBwUKFODevXsOu/TlyZPH4r+J27dvEx8fT8GCBenUqRO3bt2y2oVQCCHSQrdu3Zg3bx63bt3ydVGE8IhM8WqmevXqJCUlcenSJeNYC+YCAgIoV66cy3mHhoYSGhrK9evXWbZsGRMmTEhtcYUQQgjxUIYJRG7dusXRo0eN2ydOnGDXrl3kzp2bMmXK0KVLF1566SU+/vhjqlevzuXLl1m5ciVVqlRxq4HbsmXLUEpRtmxZjh49yltvvUW5cuWM/e2FEEIIkXoZJhDZtm0bzZo1M24PGjQIgK5duzJr1ixmzpzJBx98wODBgzl79ix58+blkUceoW3btm5dLy4ujmHDhnHmzBly587NM888w9ixY41zfAghhBAi9TJkGxEhhBBCZA6ZZhwRIYQQQmQ8EogIIYQQwmfSdRuR5ORkzp07R1hYmFvDVAshhBAi7SmluHnzJoUKFbKY6NNcug5Ezp07ZzEbpRBCCCEyhtOnT1OkSBG7adJ1IGIY8vr06dOEh4f7uDRCCCGEcEZ8fDxRUVFOTV2RrgMRw+uY8PBwCUSEEEKIDMaZZhXSWFUIIYQQPiOBiBBCCCF8RgIRIYQQQvhMum4jIoQQ6ZVSigcPHpCUlOTrogjhE9mzZ7eY8d4dEogIIYSL7t27x/nz57lz546viyKEz+h0OooUKUKOHDlSlY8EIkII4YLk5GROnDiBv78/hQoVIiAgQAZcFFmOUorLly9z5swZSpcunaqaEQlEhBDCBffu3SM5OZmoqChCQkJ8XRwhfCYyMpKTJ09y//79VAUiXm2smpSUxIgRIyhevDjBwcGULFmS999/H5nwVwiR0TkatlqIzM5TNYFerREZP348U6ZMYfbs2VSsWJFt27bRvXt3IiIieOONN7x5aSGEEEJkAF4NRP7++2+efPJJ2rRpA0B0dDQ//vgjW7Zs8eZlhRBCCJFBeLVusX79+qxcuZLDhw8D8O+//7JhwwYee+wxq+kTExOJj4/XLEIIIXzv5MmT6HQ6du3a5fQ5s2bNImfOnD4vh6mmTZsyYMAAj5bJGd26daN9+/Zpft2MwKuByNChQ+ncuTPlypUje/bsVK9enQEDBtClSxer6WNjY4mIiDAuMvOuEEJ4zunTp+nRo4ext0+xYsXo378/V69edXhuVFQU58+fp1KlSk5fr1OnTsZ/RNOL+fPn8/777/u6GMKEVwORn3/+me+//54ffviBHTt2MHv2bCZOnMjs2bOtph82bBhxcXHG5fTp094snhBCZBnHjx+nVq1aHDlyhB9//JGjR48ydepUVq5cSb169bh27ZrNc+/du4e/vz8FChQgWzbn3+gHBweTL18+TxTfY3Lnzu3UjLAi7Xg1EHnrrbeMtSKVK1fmxRdfZODAgcTGxlpNHxgYaJxpN7PMuDt9OuTK5etSCCGyur59+xIQEMBff/1FkyZNKFq0KI899hgrVqzg7NmzDB8+3Jg2Ojqa999/n5deeonw8HB69+5t9ZXIwoULKV26NEFBQTRr1ozZs2ej0+m4ceMGYPlqZvTo0VSrVo3vvvuO6OhoIiIi6Ny5Mzdv3jSmWbp0KQ0bNiRnzpzkyZOHtm3bcuzYMZfu9auvvjKWK3/+/Dz77LPGY+avZs6fP0+bNm0IDg6mePHi/PDDD0RHR/Ppp58a0+h0Or755hueeuopQkJCKF26NAsXLjQeT0pKomfPnsYeomXLluWzzz5zqcxZmVcDkTt37lh0cfP39yc5Odmbl01XtmyBh7+TQgjhE9euXWPZsmX06dOH4OBgzbECBQrQpUsXfvrpJ83QChMnTqRq1ars3LmTESNGWOR54sQJnn32Wdq3b8+///7LK6+8oglmbDl27Bi//fYbixYtYtGiRaxdu5Zx48YZj9++fZtBgwaxbds2Vq5ciZ+fH0899ZTTz41t27bxxhtvMGbMGA4dOsTSpUtp3LixzfQvvfQS586dY82aNfz6669MmzaNS5cuWaR777336NixI7t37+bxxx+nS5cuxlqk5ORkihQpwi+//ML+/fsZOXIk77zzDj///LNTZc7qvNprpl27dowdO5aiRYtSsWJFdu7cyaRJk+jRo4c3L5su6HRw/76vSyGESCuhoZCW0874+8Pt286lPXLkCEopypcvb/V4+fLluX79OpcvXza+SmnevDmDBw82pjl58qTmnK+//pqyZcvy0UcfAVC2bFn27t3L2LFj7ZYlOTmZWbNmGV+PvPjii6xcudJ43jPPPKNJP2PGDCIjI9m/f79T7VNOnTpFaGgobdu2JSwsjGLFilG9enWraQ8ePMiKFSvYunUrtWrVAuCbb76hdOnSFmm7devGc889B8CHH37I559/zpYtW2jdujXZs2fnvffeM6YtXrw4mzZt4ueff6Zjx44Oy5zVeTUQ+eKLLxgxYgR9+vTh0qVLFCpUiFdeeYWRI0d687LpRhaq+BEiy3M2KPAlVwaTNDyYbTl06BC1a9fW7KtTp47DfKOjozVtNAoWLKipgThy5AgjR45k8+bNXLlyxVgTcurUKacCkUcffZRixYpRokQJWrduTevWrY2vVKzdQ7Zs2ahRo4ZxX6lSpchl5X16lSpVjOuhoaGEh4dryv3ll18yY8YMTp06RUJCAvfu3aNatWoOyyu8/GomLCyMTz/9lP/++4+EhASOHTvGBx98QEBAgDcvK4QQwkSpUqXQ6XQcOHDA6vEDBw6QK1cuIiMjjftCQ0O9Upbs2bNrtnU6nea1S7t27bh27RrTp09n8+bNbN68GdA3mHVGWFgYO3bs4Mcff6RgwYKMHDmSqlWrGtuteKPcc+fO5c0336Rnz5789ddf7Nq1i+7duztd5qxOxigWQohMLk+ePDz66KN89dVXJCQkaI5duHCB77//nk6dOrk0ZHfZsmXZtm2bZt/WrVtTVc6rV69y6NAh3n33XVq0aGF8ZeSqbNmy0bJlSyZMmMDu3bs5efIkq1atskhXtmxZHjx4wM6dO437jh496vI1N27cSP369enTpw/Vq1enVKlSLjewzcokEPGBf/8Fk388hBDC6yZPnkxiYiIxMTGsW7eO06dPs3TpUh599FEKFy7ssG2HuVdeeYWDBw8yZMgQDh8+zM8//8ysWbMA9+cgyZUrF3ny5GHatGkcPXqUVatWMWjQIJfyWLRoEZ9//jm7du3iv//+49tvvyU5OZmyZctapC1XrhwtW7akd+/ebNmyhZ07d9K7d2+Cg4NduofSpUuzbds2li1bxuHDhxkxYkSqg7KsRAIRH9ixA65c8XUphBBZieFhWaJECTp27EjJkiXp3bs3zZo1Y9OmTeTOndul/IoXL868efOYP38+VapUYcqUKcZeM4GBgW6V0c/Pj7lz57J9+3YqVarEwIEDjY1hnZUzZ07mz59P8+bNKV++PFOnTuXHH3+kYsWKVtN/++235M+fn8aNG/PUU0/Rq1cvwsLCCAoKcvqar7zyCk8//TSdOnWibt26XL16lT59+rhU7qxMp9LxVLjx8fFEREQQFxeX4cYU0ekgMRH69oVvvgHTT3nmTOjRQ7tPCJEx3L17lxMnTlC8eHGXHlZZwdixY5k6dWqGHozyzJkzREVFsWLFClq0aOHr4qRr9n4XXHl+e7XXjBBCiMzrq6++onbt2uTJk4eNGzfy0Ucf0a9fP18XyyWrVq3i1q1bVK5cmfPnz/P2228THR1td+wR4VkSiHiRrVeMWWAYFSFEFnDkyBE++OADrl27RtGiRRk8eDDDhg3zdbFccv/+fd555x2OHz9OWFgY9evX5/vvv7foJSO8RwIRIYQQbvnkk0/45JNPfF2MVImJiSEmJsbXxcjSpLGqEEIIIXxGAhEhhBBC+IwEIkIIIYTwGQlEhBBCCOEzEogIIYQQwmckEBFCCCGEz0gg4kVuTrcghBAik+nWrRvt27d369w1a9ag0+lSPYOwq06ePIlOp2PXrl1evY4EIkIIkQV069YNnU6HTqcje/bsFC9enLfffpu7d+/6umhOS+sHcmqCB0+qX78+58+fJyIiwtdF8QoZ0EwIIbKI1q1bM3PmTO7fv8/27dvp2rUrOp2O8ePH+7poHnXv3j0CAgJ8XQyPCQgIoECBAr4uhtdIjYgQQmQRgYGBFChQgKioKNq3b0/Lli1Zvny58XhycjKxsbEUL16c4OBgqlatyrx58zR57Nu3j7Zt2xIeHk5YWBiNGjXi2LFjxvPHjBlDkSJFCAwMpFq1aixdutR4rqGqf/78+TRr1oyQkBCqVq3Kpk2bjGn+++8/2rVrR65cuQgNDaVixYr8+eefnDx5kmbNmgGQK1cudDod3bp1A6Bp06b069ePAQMGkDdvXmJiYqy+Vrhx4wY6nY41a9Y4vJ/Ro0cze/Zsfv/9d2NNkuG806dP07FjR3LmzEnu3Ll58sknOXnypDHPpKQkBg0aRM6cOcmTJw9vv/02juaXtXXfYL0maPr06URFRRESEsJTTz3FpEmTyJkzp/H46NGjqVatGt999x3R0dFERETQuXNnbt68aUyzdOlSGjZsaCxn27Ztjd/LtCSBSDqjFFy75utSCCEyu7179/L3339rag5iY2P59ttvmTp1Kvv27WPgwIG88MILrF27FoCzZ8/SuHFjAgMDWbVqFdu3b6dHjx48ePAAgM8++4yPP/6YiRMnsnv3bmJiYnjiiSc4cuSI5trDhw/nzTffZNeuXZQpU4bnnnvOmEffvn1JTExk3bp17Nmzh/Hjx5MjRw6ioqL49ddfATh06BDnz5/ns88+M+Y5e/ZsAgIC2LhxI1OnTnXqM7B3P2+++SYdO3akdevWnD9/nvPnz1O/fn3u379PTEwMYWFhrF+/no0bN5IjRw5at27NvXv3APj444+ZNWsWM2bMYMOGDVy7do0FCxbYLYut+7Zm48aNvPrqq/Tv359du3bx6KOPMnbsWIt0x44d47fffmPRokUsWrSItWvXMm7cOOPx27dvM2jQILZt28bKlSvx8/PjqaeeIjk52anPz2NUOhYXF6cAFRcX5+uiuAyUun9fqZdf1q+bH7P1yS9davvYuXOeLaMQwnUJCQlq//79KiEhQXsgJESpwMC0W0JCXCp3165dlb+/vwoNDVWBgYEKUH5+fmrevHlKKaXu3r2rQkJC1N9//605r2fPnuq5555TSik1bNgwVbx4cXXv3j2r1yhUqJAaO3asZl/t2rVVnz59lFJKnThxQgHqm2++MR7ft2+fAtSBAweUUkpVrlxZjR492mr+q1evVoC6fv26Zn+TJk1U9erVNfsM19q5c6dx3/Xr1xWgVq9e7dT9dO3aVT355JOafd99950qW7asSk5ONu5LTExUwcHBatmyZUoppQoWLKgmTJhgPH7//n1VpEgRi7xMuXLfnTp1Um3atNGk6dKli4qIiDBujxo1SoWEhKj4+HjjvrfeekvVrVvXZhkuX76sALVnzx6llPXP0JTN3wXl2vNb2oh4mas9Zy5ftn2sUCE4cADKlUtdmYQQXnD7tq9L4FCzZs2YMmUKt2/f5pNPPiFbtmw888wzABw9epQ7d+7w6KOPas65d+8e1atXB2DXrl00atTI6sy08fHxnDt3jgYNGmj2N2jQgH///Vezr0qVKsb1ggULAnDp0iXKlSvHG2+8wWuvvcZff/1Fy5YteeaZZzTpbalZs6YTn4CWvfux5d9//+Xo0aOEhYVp9t+9e5djx44RFxfH+fPnqVu3rvFYtmzZqFWrlt3XM67c96FDh3jqqac0++rUqcOiRYs0+6KjozXlLFiwIJcuXTJuHzlyhJEjR7J582auXLlirAk5deoUlSpVcvBJeI68mvEib3TfvXPH83kKIbKG0NBQSpUqRdWqVZkxYwabN2/mf//7HwC3bt0CYPHixezatcu47N+/39hOJDg42CPlMH3w6x7+oTQ8BF9++WWOHz/Oiy++yJ49e6hVqxZffPGFU/dmys9P/3gzffjfv39fk8ad+7l16xY1a9bUfEa7du3i8OHDPP/88y7nZ+DufdtjHmDpdDrNa5d27dpx7do1pk+fzubNm9m8eTOA8RVTWpFARAghsiA/Pz/eeecd3n33XRISEqhQoQKBgYGcOnWKUqVKaZaoqChAX5Oxfv16iwc6QHh4OIUKFWLjxo2a/Rs3bqRChQoulS0qKopXX32V+fPnM3jwYKZPnw5gbM+SlJTkMI/IyEgAzp8/b9xnPh6GvfsxXM/8WjVq1ODIkSPky5fP4nOKiIggIiKCggULGh/qAA8ePGD79u1u37e5smXLsnXrVs0+821Hrl69yqFDh3j33Xdp0aIF5cuX5/r16y7l4SkSiAghRBbVoUMH/P39+fLLLwkLC+PNN99k4MCBzJ49m2PHjrFjxw6++OILZs+eDUC/fv2Ij4+nc+fObNu2jSNHjvDdd99x6NAhAN566y3Gjx/PTz/9xKFDhxg6dCi7du2if//+TpdpwIABLFu2jBMnTrBjxw5Wr15N+fLlAShWrBg6nY5FixZx+fJlYy2ONcHBwTzyyCOMGzeOAwcOsHbtWt59911NGkf3Ex0dze7duzl06BBXrlzh/v37dOnShbx58/Lkk0+yfv16Tpw4wZo1a3jjjTc4c+YMAP3792fcuHH89ttvHDx4kD59+jgc+8TefZt7/fXX+fPPP5k0aRJHjhzh66+/ZsmSJcbaJWfkypWLPHnyMG3aNI4ePcqqVasYNGiQ0+d7kgQiQgiRRWXLlo1+/foxYcIEbt++zfvvv8+IESOIjY2lfPnytG7dmsWLF1O8eHEA8uTJw6pVq7h16xZNmjShZs2aTJ8+3fgK4I033mDQoEEMHjyYypUrs3TpUhYuXEjp0qWdLlNSUhJ9+/Y1Xr9MmTJ89dVXABQuXJj33nuPoUOHkj9/fvr162c3rxkzZvDgwQNq1qzJgAED+OCDDzTHHd1Pr169KFu2LLVq1SIyMpKNGzcSEhLCunXrKFq0KE8//TTly5enZ8+e3L17l/DwcAAGDx7Miy++SNeuXalXrx5hYWEWbTpcuW9zDRo0YOrUqUyaNImqVauydOlSBg4cSFBQkFOfMehrxObOncv27dupVKkSAwcO5KOPPnL6fE/SKXutZ3wsPj6eiIgI4uLijN/gjEKngwcP4LXXYPp0fT8Z02Og3WcwZw68+KL1YzodbN8ONWrotxMSwEOvbIUQTrp79y4nTpygePHiLv3hF8KbevXqxcGDB1m/fn2aXdPe74Irz2+pEfEidxqrOhsWLl4MISGu5y+EECLjmzhxorEHj+H1WdeuXX1dLLdI990M6uGrSCGEEFnQli1bmDBhAjdv3qREiRJ8/vnnvPzyy74ullskEBFCCCEymJ9//tnXRfAYeTWTSvfuQWJi6vJI7flCCCFERiWBiIuWLQPTLvEtW0JqZ2YOCoING1KXhxAibaXjdv5CpAlP/Q5IIOKi1av1w6wbrF/vmRqNCxdSn4erunaFUaPS/rpCZGSGrp13ZJhjkcUZRmD19/dPVT5ebyNy9uxZhgwZwpIlS7hz5w6lSpVi5syZ1KpVy9uXFibmz4cZM8B0KoJvv4XoaHjvPZ8VS4gMx9/fn5w5cxrn7AgJCXFpICkhMoPk5GQuX75MSEgI2bKlLpTwaiBy/fp1GjRoQLNmzViyZAmRkZEcOXKEXLlyefOyGZq3anvnzdN3+RVCpF6BAgUANBOICZHV+Pn5UbRo0VQH4l4NRMaPH09UVBQzZ8407jOM0CfcI6+lhfA9nU5HwYIFyZcvn815SoTI7AICAoyTC6aGVwORhQsXEhMTQ4cOHVi7di2FCxemT58+9OrVy2r6xMREEk0aXMTHx3uzeB61Zw9Mngxff+3e+VKzK0TG4+/vn+r340JkdV5trHr8+HGmTJlC6dKlWbZsGa+99hpvvPGGcQIlc7GxscbZCyMiIowzPmYEv/wC06b5uhSukxoWIYQQvuTVQCQ5OZkaNWrw4YcfUr16dXr37k2vXr2YOnWq1fTDhg0jLi7OuJw+fdqbxUsT6eVBn17KIYQQQpjyaiBSsGBBKpgOugGUL1+eU6dOWU0fGBhIeHi4Zklv3H2gX7kC//1n+7i7r2bOnXPvPCGEECI98Gog0qBBAw4dOqTZd/jwYYoVK+bNy6ZL7drpu8p62qOPej5PIYQQIq14NRAZOHAg//zzDx9++CFHjx7lhx9+YNq0afTt29ebl02X4uKcS+dqjcvdu66XRQghhEgvvBqI1K5dmwULFvDjjz9SqVIl3n//fT799FO6dOnizcsKIYQQIoPw+siqbdu2pW3btt6+jM85qskwHRbeGm933zUvn+F60ohVCCGEL8lcMz60bx9cu6bd5ygwkMBBCCFEZuL1GpGs7ptvbB+rVAmeey7tyiKEEEKkN1Ij4kXONCR9OHmhjKwqhBAiS5JAxEWuvBpJzRQUN254tkeMvNIRQgiRHsmrmXTGEDDkzg0dO8LcuZ7Nf9o0OHPG8npCCCGEL0gg4iGefqArBadO6V/Z7NsHhgFqDddx91VObCycPJmyLbOYCyGE8CV5NZNO2Assjh3z3nVNJjt22okTni+HEEKIrEkCkVSYMCFlfexYz+efHhuwXrkCJUr4uhRCCCEyCwlEUmHjxtTnkVbBhqdeHZk3wL1+HRISPJO3EEKIrEcCEQ+7c8dzefmyRiR7dpgyxXG6AgWgc2fvl0cIIUTmJIGIhw0f7t55hqDDk4GMwerVKeOVOOvBA9i1y3L/5cva7Xv39I1qhRBCCHdIrxkXOXrFcetWyro7NRr799s//9gxqF3btTybN3e9HLY4mjNHCCGEcIXUiLjIUSCSmAgDB7qfv7VaCFOrVrmftxBCCJHeSCDihORk+OMP/fq5c/bTfvcdfPqp69cw1H4cOpSyb8MGy3TTp7uetyfJAGhCCCE8SQIRJ+zZA088oV/39Bga5q9fkpJcO//4cc+VxdydO3D7tvfyF0IIISQQcdHFi97N35Pzy7hq8WJtYDRnDlSv7rvyCCGEyPwkEHFRamtEVqywvt+Vhq3eej1irX3KkSNpc20hhBBZkwQiaezJR28zgE+M24Z5X3Q6uHrVtzUiQgghRFqTQCSNNWEtnzDIuG3aJmTPHh8USAghhPAhCURSwVcjnyqlH3DMV9cWQgghPEUCkVT4/ffU5+FuMDN0qHPpkpPdy99UfHzq8xBCCCGskUDEgxQ6ivKfcduVIEOnc6224eZN7faxY/rXPHXravebT1LnDvM8hRBCCE+RQMTD8mO/f6+O1L/bsBawlCoFW7boF3fZCpy8OVaJEEKIrE0CkXTk+vXUnZ+Y6JlyCCGEEGlFAhErfv7ZMw91V16L6HTwzDOpu16zZqk7XwghhEhrEohY0akTrFuX+nzi4lKfB1i+inGmLcn8+TBvnmeu7+q1hRBCCGdl83UBMhJneskovN+n15lgoEsX/eBo+/dr99trQHvmjHvl8VU3ZiGEEBmf1Ii4YO5cz+fpzkN8yRLn086Z43zaKVP0X1u1cq08QgghhLskELHDMPy6J9nqNeNKQHLjhvvXd2aunOXLbR/z5KuZhATfDcwmhBAifZBAxIYHD6B48dTlUaKE5b6c3LCa9t13nc938WL3yuMJqQlEVq2Cv/9O2Y6IgP79U18mIYQQGZe0EbHBlRFJdSQzniGA4zYioxmt2d62Tf91+3bnr7d5s/NpPaV3b9i7FzZtcj+PFi0gb164fFm/ff8+HDrkmfIJIYTImNKsRmTcuHHodDoGDBiQVpdMM0U4w1tMdCqtH6kfc92VWglPNSRduTJ1QYgQQghhTZoEIlu3buXrr7+mSpUqaXG5NDFkiGfyqck2h2kWLtRu+yIQcWTlyrS5jhBCiMzF64HIrVu36NKlC9OnTydXrlzevlyamTDB+n5Hr2ZMG6v684Bt1HZ4rf/9z6WieYW9gEYpaNlSP9eNN9y/D4cPeydvIYQQvuX1QKRv3760adOGli1bOkybmJhIfHy8ZvGVS5fcO8+VcUQCuOfeNXwwqNixY7aP7dql/+qt2pcvv4SyZb2TtxBCCN/yamPVuXPnsmPHDrZu3epU+tjYWN577z1vFslproyK+iyuD2EawQ1u4F4NUVYb3fTWLV+XQAghhLd4rUbk9OnT9O/fn++//56goCCnzhk2bBhxcXHG5fTp094qnkdN4G3jenbsTzBjeDUTwh3jvoKcIxfXPFae9es9lpUQQgjhVV6rEdm+fTuXLl2iRo0axn1JSUmsW7eOyZMnk5iYiL+/v+acwMBAAgMDvVUkr8lGSuOIZ5nHFuq6dP5ftKIS+2wOduaqJ55IWU+Pw68nJbnWAyer1QAJIURW4rUakRYtWrBnzx527dplXGrVqkWXLl3YtWuXRRCSWTgKJgzHTdPl4rpL13Dlwfzpp86lu2anQuaek01ZunWDn36yPpDbkSMp68uWQaNG+nVfBxk3bsBrr/m2DEIIkZV5rUYkLCyMSpUqafaFhoaSJ08ei/3pkekD0pPDkBfjlFvn3byZsm7+8H75Zcv0hpoQ0/PsyZPHrWJpfPcd5MjxcBj5b77RN+54OG6MoUEreK93jTu2b4epU1Pm2RFCCJG2ZIh3J9Sq5esSwIgRto+lh+69FoYMgYEDPZKVeeB14YJHsiUpyf0Zh4UQQnhGmg7xvmbNmrS8XKq4+8rA2e67pq9mnGkbkpiYsn7+vOP8ExKcKkaGc/8+FCzomVc6M2dCr16pz0cIIYT7pEbEBb5uz+AsXzZQtfUZmbYRSQ1X5gBy5LprTXOEEEJ4gQQiNng76PBUD5mMYu5cX5dACCFEeiSBSDrgTFAydWoaFMSTbERy5rU1zgR8GaUmSgghhOskELHB8PBz9VWAeRuRQO4ShuVQ9abBR0E81PoyHcjIQYNOp+9aLIQQIu1IIGKD4YHavr2L55kFInPpzAUKOHVuEJmvhem6dbBgQUpNSHoPVA4e9HUJhBAia5FAxIE//khZd6YRqPlrluKcIMTJACOBEJMthQ73WmY60wizJEepyi638ndF9+7w9NOpy2P+fMt9//yTujyFEEKkDxKI+IijdiEjGcMtcjysYfF8NcJSWrOL6h7P18jGqGX37sGOHSnbztSQ7N5tua9ePdeL9Pff0K6d6+cJIYTwHglEbFi82L3zcnto8rpq7HK6JiW1Ll5077xFiyz3GQOLeG27GEMwER8Po0e7d73U+uMP62UWQgjhOxKI2LB2rXvnvYxzw5ymp+67D0dhd5k3axd++QXee89+mps303+bEyGEEPZJIOIjqQ1EWrCCv3jUI2U5fdoj2bht8WL9iKk7d6bsGz/ees2JaTud8HD96KjuSo8zEwshRFYjgUgaUeiowD7jtp+bDVEN2rKIR1mR2mIBsHGjoxSKGJY6lZd5DcXx447PadsWhg+HGjWcuoRGz56unyOEECL9kEAkDf3Ic8b1j3jLhyVxTT4usZTHNPts1SaYByK12Mpm6ji8xr177pbOffJaRwghfE8CkTSUj0vG9crsSVVe3mpjoiOZl5nu9vnffKPdbsoa6rA1laVKOxKcCCFE2pJAxEfSorHqLLpSyUbAY2uW4IKcZzq9vVksDcOEzJ4KAOrWhaFDrR9ztU1IqVKwb5/jdEIIIdwngYiXmdaCFMC9frL2gpYSHKMs1ocD7cq3PMFCt675p9mrGFPV2cGPdHYqH3cCrvnz4fZtl08DYMsWWOGZpjMcOwbbt3smLyGEENZJIOICd/5rtzWPjK0aCWePGx7wm6nLQcq7XjAHYrA96cqT/E5nftLsu0sgj/Gn3TwrsYd8TgRjzzxjfaj13bvh7l2Hp6eK9KQRQoi0JYGIl0Rwg0BsPzUd1RSU54BT13HU+8bWdWwFOu6+MgrkHtXZabF/AkOM63uowre8ZL08Ni5rur9qVfjkE7eK57StGac5ixBCZAoSiLjg7Fnn094gF2cpbPO4vQd+Yc5Q3uR1SzL+zl/YQ/xMyueodsYV/lgf+t1ZiYnun+tMjdb339s/vm2b5xu0HjyYuvsSQoiMTAIRF2zY4Fr6PHaGe7f3cD9DlMO8DYFMehqh1RvMH/qefHWybVvKetGizp1Tu7ZlA9ZvvoGmTd0vR/ny3q/pEUKI9EoCER9JTQBxj+wE4ty/0C/yndvX0ZFMIHddKmsdNtsNshzVrqxcqd02H/X1yBHLc65c0W5v3w7nz2v3vfYaHD6s3ffzz7avY840ADKfz++PPxxPCXDnjv2alDt37J8vhBCZlQQiD+l0nqse78k3jhOlQnYeUALrQ5ZOYiCDmWjcLsth+jKZwpzRpDMEBNGcABRlOUg9/takGcH73CXYpbKVs9GDxxHDgGb9+mn3R0drt3/5xfLcyEjLfZMmabenToXffnOraB4RGgrz5vnu+kIIkV5JIGLCU6N7NmWNwzSpbXfREn3VQS5uaPYP5FMmmo3aOpnX6cpsq/mcoARPM5/5PM3fNNAcK8uhVJXRFV9/rf968qTn8kxMTH1w6cn2IGfOWO6TXjpCiKxOAhEHBvEx5ZzsweKKUhzzeJ7uysGtNLuWowDMU91z166FoCCoV88z+QkhhPAOCUQc+Jg3eY0pLp3jbNdba7owx+1z7RnLuzQnpQGGebsPa+1ADPvMgwfDdg/+h86k+7AvG84mJMDjj6dsG7rh7rTsUewSxxMCCiGESA0JRFwUw1LKcpBYbIwjDtRkh9v5z+FFq/tf5Fuq8K/b+QL0Y7JxvQxWWn266H+8TDL+DgcySwsrV8KSJdaP7d/vfr7T7Uy706IF/P237eOuyKxz3AwbBp9/7utSCCHSMwlE0PZYcPTQWspj/ExHhjLeu4Uy8y1dGcNIr1/HnVqN0i4ENZ4ck8RUu3a2j1WsqP+abH/sN6cZgoZVq2CZ7QFoBTBuHPTv7+tSCCHSMwlESOkSqhRctDICua2HZ1H+o52bc7l4QyFSRlxbRyOXzjUEIMt51Om07vBWIOIKnQ4uWB953yt69NB/HTQINm2yniYz1ohEOR4ORwghJBBJjTGMZCFPpuk1Q+00LDV99dII50dfMw0sypn0lHF10DSFLlWBRgmOEWHWC8hbzMcUcVVCQsq6oyBi5syUdWvjoKRGyZIwd65n8/QU015C1gJ8IYQACUQsnDpluc9WY820VpfN3CLM7fNdLbf5xHYAebnM46loE2KvDMcoxQx6aPbFMpRBfOz29Wxp0sT2sWNOdGj68EPPlSU1jh+H9et9XQrHLl1ynEYIkTVl83UB0pMbN6BbN8v9th6eXfnWq+UxV8CJmWsd+ZkO/Ecxi/32aj1M738o46jNNqvpwol3qgxV+JcDlOc+ARbHzLsSD2U8ZynEJAY7lbcnlCrluMbkgw9S1u2NBXLc+rhzHrVihfevIYQQ3iI1IiYePLC+P73UiHhCB+bRkZ81+xQ6ypLKdxVgc7RXU41Zx79UowczUn09bzId3C4kRP/V0KjZNPC4dw+uX9ev375tmU/JkqkvS7yD+C61r5mEEMKXvBqIxMbGUrt2bcLCwsiXLx/t27fn0KG0G60zNZbRSjNUuqnkDBq/Pc0Cr+RrGphN4TW7aUPRP82dnSsnPTC0B2nRwvLYuHEpr0ZefFHf6+roUddHTE1MhH9t9M6OiIADnh9TTwgh0gWvPlHXrl1L3759+eeff1i+fDn379+nVatW3Lb2r2M604rlPMnvQMapEXmFr51KZx4EBJNgI6WeofbCdPAya4pzwhhoWHKuwWt6nk3YtHeVNRcv6rsKN2hg/bg906ZBtWrafTpdyqsdR7Ui6V1m7BUkhPAMr7YRWbp0qWZ71qxZ5MuXj+3bt9O4cWOL9ImJiSSaTA4Sn8Z/fR1NxR6D/n7SayCSm+tOpcuPtuWgozll+vIlAMn48zGDLI4bgodILtvM41GWa7aLYqVVcDpiPqMvwNWrqc/X1gPZ8KO+a5c2IEltTci9e3D/vn7SPSGESI/S9B1DXFwcALlz57Z6PDY2loiICOMSlcYDEUyebH2/YUbZpTwGpN9AxF2OakQ8IQjtJDKDmWQjpTN5eb+8d2xV7DghNT1E/vvP/XOt6dED8uf3bJ7ukMn9hBC2pFkgkpyczIABA2jQoAGVKlWymmbYsGHExcUZl9OnT6dV8exqY9ZdNT0GIlfI4/a5MTg/PGgYN20eK2anliM1n5npudm4TwIhbufl9DV99CrB09c9fNh6I1ohhEgv0qz7bt++fdm7dy8bNtgeaCswMJDAwMC0KpLb0mMgkodrbp/r6H6iSBmZqjd2Jl+xw1H7lVGMBlJe82TjvtXuwP4kuXV9UwU5x3kKgpvfR2uvbZwlbSWEEEIrTWpE+vXrx6JFi1i9ejVFihRJi0umUtZ6WqS2F5AzDUzbstju8dG8p8lrBO9zlbxuXcuRcxQ2NkS2xd6rhEdtjILviSDDVh4Z/dWGBGCZS2qCcSHMeTUQUUrRr18/FixYwKpVqyhevLg3L+eSa9fgr7+sHzP8J25aU1DKZGK39FgjkhqpvZ9PGej2uTltNLAtxDnjujd60jgafC2jP/iF8JbjxyEy0telEJmJVwORvn37MmfOHH744QfCwsK4cOECFy5cICHB+40NHfnoI4iJsZ/G9AH4GSlTiGa2QMRXKrCP61hvuGwr+PBUUOLoe7huXeqvYW26gO7d9d2Av3VyUF5DQORujYIEVMLTbj5sJpYO/oyLTMKrgciUKVOIi4ujadOmFCxY0Lj89JPlHCbpkWlPD9MHl70GmxmRrwKrnHYmuDMNOPwcjF8C+nYfrnB0z7GxKev+PGAEY1zKH6CY5Uj6ALz/PnTtCk2bWimXsr/trFWr9N12DfbulaBEeIbhZ3LUKN+WQ2QeXn81Y23pZm1CFx954QXbx0znVDF9cFVinzeLlGVYq91owSqLfQW5YHHO4yxGoWMcQwB9u48GLsw47ErwVZDzjMHxX91Nm5zLb/nDIVXWrnW6CA497Blv1KIF/P57SvBha0DjsWPh7l3rx4Qw1agRvPxySiBi/jMnhLsy5ljlHvT995YTk22goUU6R40tMzJf1YjYe81ifqwkRwnmjnH/YtoCUJutxjTFsByEozBnaGk2mBr49vVakp2OP640Vt21K2V9gZXR+zt0sF8OnQ7efVc/LL2pM2ekcamwtGGDvqYt+WEFpb2fYyFckeUDEYABA7Tbldnrk3JkNXmwPVSpeSBylNJ8zSt8weua/VXYbVwfw0i+oB+B3CWARLJxnzNEsZxW+KOd0dCdQGQ1TWnKapfP86Rt2/Tjgpw5A9Wrp+zv3l3/dckSfRpbrAUYx45B3bop21FRsHKl47I8eKCdHFBkDRKICE/LsoHIuHEp66bv0rOiHNzyyXVLcszmMWu1JTEsozuzNPvymgUz/fiSYvzHfirwE52M+weiHb/flUDEUJamrKU1Sx2kduyy7ZHwjQwBQ9u22v21a8PEibBxo/XzHn8cnn46ZdtQk/Lss/qv1mbq3bJFv5i66UQzqCefhJo1rR+Th1TmZfjZlO+x8JQsG4iYOn/e1yXwrcIuNvT0FFd7wOSzM5eNeX4lOa6pLTGvfXEmECnMGYK5QxGTAd2GMMHZ4qaKeTOq5OSUAOOWjbixYEH9V3sDEisFLVvC/PmWx27fdvxwWb8esj0cBnHHDn0jWGveest+PiLjkkBEeJoEIsJnJmL7aeWJbrqmvZvszaA8jiE8za8W558hijuE8jduTKfrJsMfefM2H3fupOybONH6uRcuWN9vbuVK+OOPlO158/Rfc+TQtxmxZ9cuywfQihWW6fY5aM999ar9B1m3btbbvQjfM/yMJjvuzCaEUyQQEenOo/zl1uy85sGL+SzDpl18TQORIUzgDT53+XqelVL2ixctX4189ZVZajfjNGvnnTyZsn7ihP3zrc1b06WL6+XIm9f2JJMAs2c7P9aKSDtKpfwMLVkCI0b4tjwic5BARPjcYUprtv8ihqa43rfV0NbF2nw0j7GEcxQ2bpvXkDTBAyOYmVDoCMG52eae4HfUw1/FDh2gQAHLNL9aVtg4xby3jaMJ8EzTv/wyXDcb+Nb0tZBpDcyjj7o+CJyzNTgifTHtvvvBB74ti8gcJBARPleaox7JJxL9BBj7qWhxzDB42gXyA2nTfTeceApwHkdzF5Vy8v79TAIsZwcnMx/bpGNH++cb9p89C//7n74dyL172loT0L8qMrh0Sf96ZqlJO17zmpe5c50rr0j/pGu38DQJRMzonBjFU2Rcpq9rJjGQt6w0Ps3JdUI91JPoPIWIYVmq88nFNZLI5vIIsuYMr15sPUwMvWdefz0l3bhxYJgm6urDNr/nXCyG6Ui1Bmn9QPvqK+jXL22vmRlJICI8TQIRM01Z4+siCC8wrwFJxo+BfMqEhyOzmjpJNH/QzmGeebmsqaUwKMtBzXYEqR+CMgR9FcQ5ClOaw+zcmbr8rtoYwuWYWY/qvXu1Q3lPnar/un275bmmtSxnzlgeT40iRWDKlNTlMWUKfPmlZ8qT1fz8c8q6BCLC0yQQMROAjNCU0WR343uWzWyAM1MRxBOF7T6whtqSy+TjVaZalOUg5QEYxCSXy2WLaSAVxF3Gj09dfoZeM5XYQwCJmmN5uGK83kAbEyt37my5T6dLWQ4csH3tGzdSvjZr5lx5z55N6d3jLnmAuq9TypA88jkKj5NAxMwQUvkXXqS5wXzsME1xTmq2f6GjRZr6pIwSlmznV2Mm3Y3rLdAPQZqdewRyV9Nz5y30/WztdUV+m/Hk5pr9wptxp31LQ9Zbrb3ZQxX6oq0msDfirT3Otlv58Uf918OHYc0a/XrFivrzK1RISffbb9pXKatWWa/JWbfO8aui27dl4EJPMO01I4SnSCBiIpw4msmrmQynKv96JJ+JvGlcL8MRm+lMH9SGhqYLeIq9VDK+QrElhNt0YQ7hD1/XjGcoj7HEYdlMAyN3ApH1NKYlVgb8AAJJBBSP8pfL+ZpyFIg884z+65Ur2v2VK6fMd2Nek2I63gnou/2aa9Ikpebm3j390PPmcua0PqqsLYsWWc7BY+rWLYiJ0Y+FktknDTSd0wgkEBGeJ4GICWemmxfpT2d+8kg+BTlPjBNDuJsGAlXYQzB3qMweSnGM6+S2m34lLZjDi7zMNwxH3/fRNMgII55CnNWcn4+LVGaPcdu8tqYn31it7TBn7+e7LIf4ixiL8hrKlI37DgMNR8fnz9cHDIZ0qx9O22M+OmuZMvbzsTbrq6ENQ9my8PzzlsdNg5NLlyyPm2vXLqXBrjX//Qd//aVvPxMc7Dg/dygFmzd7J29XOBpbRojUkkBEiIei+Y+lPOYwXV60/9LfIZRgEpy6xiPonyxPM58mD8dKScLfePwHnucsRTTBwH8UMwYJYBkofEMvzTD0zjB9DQX2Xx/FE8EkBjnM05lXM59+6jjNEZPKKGt55syp/3r9uuW4KCdPwi+/6AMJW8z/o3/wwP2H7aFD7p3njMWL4ZFHLBsQWzNpErRv751ymI+gav752ZtSQAhnSCBiwpdTw4uMo6rJHDYGkWbBiSlrD/kG/G3cbxqI5DPpXlyfjYxgDEFmjUkrs4ds3OcWocYanFiG4c8D6vKPMZ0/D3iWX8jxcKh7w/VycY2NNDSme4uPmMqrACQQRDV2WZQ32tjGRpHbRhsSZ9uIuDoa5zUrTWjKlIHChfUT7xn88EPK+qJFjvM1zBw8dSqUKJGyf8wY/ddt26BoUf26+b0ZHsbWZjq216Pp7FnbQ/SbMwRTpUo5TvvTT/D7787l6ypHgYi3riuyDglEhHDDMD50KX127lkEui0fNnStT8qoY6ZBy0YaMoZRmPuZTvRiOqHcoRn69xvP8yNP8jv/UM+YrjZb+YWO/E19zfnmgVFurhtHlg0ikYZssLimoexdmc1VrDTUAEaPtro71fLksdx35AgkJOgHXDMwH2q+cmWYOdN6nrt2QWCgft3wCubPP6FRo5TuyvHxjv/bNx/oDaBGDUhMTBmF9t69lHYkP/xgf0LApCTn5nC5eFFbi2MIlOy1a3GXaXmksarwBglETEiNiHCWeU8TexQ6gnCuRaOz7ZQCH9aSFOM/477saLuFGAKOyuw1liO18nMR0A/69hePpjo/RxyNR2I+BL2pvXv1PW2sufxwImfTtiNLlsAGyxhM06alenXtPluCgiAsDHbv1o9maxgQziAhQd/+4513tPurV7fexgX0AY3huq1ba2txDCpaDipMQoK295FSrs2c66hGZPduGa5fpI4EIkK4wZXZgXUo3se59xHO5lsSy4YDFdj/8NhRu3m5E5AY8jYox0EetdELx5NSO9X8nDn6xZz/w7dhrvx3v2qVvibl0iXrPXOsuXpV/+riwgXw80sZYbZMGX37D/MRZ/fssd5AVadL6X68a1fKWCzOOHpUP5CbIYiZOBGyZXP+fPMaEXPTp2tro1yZlddajZK9cjj7+i+tJSam/mc1MTHrzmgsgYgJqRERznK1h1VpO92B3cm3n5UamRIcB+AopanBdou8DIGJYbC2Wmy1e40AEvn4YSPVUhzDnwc0MGvkmhG8+KJ2+7PPUto1uPJgM8yvkz8/PP645fFjxyxnTTZtL6JUSg2OtZoeQ3Dk6OFcvXpKmiNHoFAh7X3odCk1PtbsedgBa906fdqXX7beE8nAvEGutWDEEJglJqbchzX//qutxSpe3HatV2KidtwYVx/0s2fbrzHzpLx54Y03XDunRw/tDNRBQfDee54tV4ah0rG4uDgFqLi4OI/nnfK2M2UJI876AVlkScXyNb3UCpo7TAdK/Utll/KOI8y4/h1djOtf8apqxFpN2im8onoz1WGeJymqFKg8XNbsf4pfjeuP8Lem3KBUOfary+Tx6sf5Kl+p1/jSY/lt3uyZfCZP1n997jnXzz17VqnevbX7Fi+2THfrluW+kBD913r1tPt371Zq7FilmjTR7v/995T1Tz9NWR8zRqlnn1WqRAn7fyujopRatsz6fSilVPnyKetKKfXzz0olJWnz6tpVu338uPW/0YbPxODuXe22wcGDSl2+bL3cX31l6wmQolgxfdqlS22nSUrSX98WUKppU8fXMj+nenX9erly+u2OHV3LIz1z5flt5duafqRlIKIjSVVnu/f+gsoii4PlN55I1fnf8oJmuyV/pSq/XFzVbL/ELOO6tUDkZaZpti2X5IeL5bFBTFTDed9hse4SoO4SYLE/O4mqIet8/S10a5k507l01gIRW0u3bkply2a5v1ChlHU/P+vnGvz3n1Jlylgenz3b9nmG9REjlNr+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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.figure()\n",
|
|
"plt.plot(tr_times, data[0], c='blue', label='Original signal', linewidth=0.7)\n",
|
|
"plt.plot(tr_times, reconstructed[0], c='red', label='Reconstructed signal', linewidth=0.7)\n",
|
|
"plt.legend(loc='best')\n",
|
|
"plt.title('Reconstruction example')\n",
|
|
"plt.savefig('Reconstruction_ex.png')\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "5ece85ed-eb24-4a24-b1c4-f0d3e16d95ca",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.12.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|