summaryrefslogtreecommitdiff
path: root/IQ/Lab/LoadIQ.ipynb
blob: de1e45aaededce3318daf924e0745e14821faf5b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "511d71f5",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Matplotlib is building the font cache; this may take a moment.\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pylab as pylab\n",
    "import matplotlib.pyplot as plot\n",
    "import scipy.fftpack\n",
    "from scipy.signal import butter,filtfilt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74f26874",
   "metadata": {},
   "source": [
    "# Load data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "206500c0",
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: '../tests/out.s8'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[5], line 10\u001b[0m\n\u001b[1;32m      3\u001b[0m FILE_IN_S8\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m../tests/out.s8\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m      4\u001b[0m \u001b[38;5;66;03m#FILE_IN_U8=\"../../siggen/out.u8\"\u001b[39;00m\n\u001b[1;32m      5\u001b[0m \u001b[38;5;66;03m#FILE_IN_S16=\"/Users/jackyjack/Projects/C/siggen/out.s16\"\u001b[39;00m\n\u001b[1;32m      6\u001b[0m \u001b[38;5;66;03m#FILE_IN_U16=\"/Users/jackyjack/Projects/C/siggen/out.u16\"\u001b[39;00m\n\u001b[1;32m      7\u001b[0m \u001b[38;5;66;03m#FILE_IN2=\"../prog/c/siggen/out.bit16\"\u001b[39;00m\n\u001b[1;32m      8\u001b[0m \u001b[38;5;66;03m#sample1 = np.fromfile(FILE_IN1, np.int16, count=SAMPLE_TOTAL).astype(np.float32).view(np.complex64)\u001b[39;00m\n\u001b[1;32m      9\u001b[0m \u001b[38;5;66;03m#sample_u8 = np.fromfile(FILE_IN_U8, np.uint8, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m sample_s8 \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mfromfile(FILE_IN_S8, np\u001b[38;5;241m.\u001b[39mint8, count\u001b[38;5;241m=\u001b[39mSAMPLE_TOTAL\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m)\u001b[38;5;241m.\u001b[39mastype(np\u001b[38;5;241m.\u001b[39mfloat32)\u001b[38;5;241m.\u001b[39mview(np\u001b[38;5;241m.\u001b[39mcomplex64)\n\u001b[1;32m     11\u001b[0m \u001b[38;5;66;03m#sample_s16 = np.fromfile(FILE_IN_S16, np.int16, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\u001b[39;00m\n\u001b[1;32m     12\u001b[0m \u001b[38;5;66;03m#sample_u16 = np.fromfile(FILE_IN_U16, np.uint16, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\u001b[39;00m\n\u001b[1;32m     13\u001b[0m \u001b[38;5;66;03m#print(\"Sample num %d\\n\"%(len(sample_u8)))\u001b[39;00m\n\u001b[1;32m     14\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSample num \u001b[39m\u001b[38;5;132;01m%d\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m%\u001b[39m(\u001b[38;5;28mlen\u001b[39m(sample_s8)))\n",
      "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../tests/out.s8'"
     ]
    }
   ],
   "source": [
    "SAMPLE_TOTAL=128\n",
    "\n",
    "FILE_IN_S8=\"../tests/out.s8\"\n",
    "#FILE_IN_U8=\"../../siggen/out.u8\"\n",
    "#FILE_IN_S16=\"/Users/jackyjack/Projects/C/siggen/out.s16\"\n",
    "#FILE_IN_U16=\"/Users/jackyjack/Projects/C/siggen/out.u16\"\n",
    "#FILE_IN2=\"../prog/c/siggen/out.bit16\"\n",
    "#sample1 = np.fromfile(FILE_IN1, np.int16, count=SAMPLE_TOTAL).astype(np.float32).view(np.complex64)\n",
    "#sample_u8 = np.fromfile(FILE_IN_U8, np.uint8, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\n",
    "sample_s8 = np.fromfile(FILE_IN_S8, np.int8, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\n",
    "#sample_s16 = np.fromfile(FILE_IN_S16, np.int16, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\n",
    "#sample_u16 = np.fromfile(FILE_IN_U16, np.uint16, count=SAMPLE_TOTAL*2).astype(np.float32).view(np.complex64)\n",
    "#print(\"Sample num %d\\n\"%(len(sample_u8)))\n",
    "print(\"Sample num %d\\n\"%(len(sample_s8)))\n",
    "#print(\"Sample num %d\\n\"%(len(sample_s16)))\n",
    "#print(\"Sample num %d\\n\"%(len(sample_u16)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c71575e1",
   "metadata": {},
   "source": [
    "# Do fft"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "483d0e14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#signed 8\n",
    "xf = np.linspace(0.0,1.0/(SAMPLE_TOTAL*2),SAMPLE_TOTAL)\n",
    "plot.plot(xf,sample_s8)\n",
    "plot.title(\"SIgnal s8\")\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4f4c53bf-31d8-4ef0-9017-be25ae5a513d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEICAYAAABWJCMKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABDxElEQVR4nO29eXRc13ng+ftqAQqFfSc2EiRILSRly7I2UkpOlrYt20lsZ5XjOHbktJJuO92ZznTG7sxM0qfHp9OeLHMynaRjR7KVxI7iTpxESRwvY8eJaVILJcsyQVIiQCwFAiSWwlaowlJVd/6oekAJBAjU+u577/7OwQFQ9V69Dxf33u/e736LKKUwGAwGg/fw2S2AwWAwGOzBKACDwWDwKEYBGAwGg0cxCsBgMBg8ilEABoPB4FGMAjAYDAaPYhSAwXWIyPtE5CsVeM73ichEuZ9jMJQLowAMjkREHhaRsyKyKCJREfmWiNwHoJT6rFLqrXbLuBci8ksiMiIiSyJyXkQetlsmg7cwCsDgOESkAfh74P8FWoAe4D8Da3bKlQ8i8gDwm8CPA43AE8Bfi4jfVsEMnsIoAIMTuQ1AKfXnSqmUUiqhlPqKUuoVABH5oIicsS4WkbeKyKvZ3cIfiMg/i8jP514rIr8lIvPZFfnbc+79ORG5JCLLInJVRH5hPwKKSL+IKBEJ5Lz2Deu5QD8wqJR6UWXC8f8EaAM6imsag2H/GAVgcCKvASkReUpE3i4izbtdKCJtwF8CHwNagVeB09sueyD7ehvwCeAJEZHse9PADwENwM8Bvysi95Tgb/hHwC8iD2RX/Y8BLwPXS/DZBsO+MArA4DiUUkvAw4ACPgXMiMgzItK5w+XvILPS/oJSKgn8HjdPsmNKqU8ppVLAU0AX0Jl91j8opYZVhn8GvgJ8Twn+jGXgr4AzZExXvw48rkxyLkMFMQrA4EiUUpeUUh9USvUCJ4Fu4P/Z4dJuIJJznwK2e+5cz3k/nv2xDiC7w3g2e9C8QEahtJXgT/h5Mqv+E0AV8DPA34tIdwk+22DYF0YBGByPUuoy8BkyimA7U0Cv9UvWtNO7w3U3ISLVZFbpvwV0KqWagC8Ccqv7sqxkv4dzXjuQ8/Mbgb9TSr2mlEorpb6UlXW7ecpgKBtGARgch4jcISK/IiK92d/7gPcCz+5w+T8Ad4nIu7MHsh/m9RPxragCqoEZIJk9HN6Xe6lSaga4BvyMiPhF5DFgIOeSF4B3isgRyfAWMofbF/Ypm8FQNEYBGJzIMpmD2+dEZIXMxH8B+JXtFyqlZoGfIHO4OwccB86zD5dRpdQy8O+AzwPzwE8Dz+Qh578G/mP2uSeAsznv/QnwNPANYInM2cQvZHczBkNFEHPmZPASIuIjcwbwPqXUP9ktj8FgJ2YHYHA9IvI2EWnK2vT/Exkb/k7mIoPBUxgFYPACp4BhYBb4YeDdSqmEvSIZDPZjTEAGg8HgUcwOwGAwGDxKYO9Lyk9bW5vq7++3WwyDwWBwFC+++OKsUqq90Pu1UAD9/f2cP3/ebjEMBoPBUYjIWDH3GxOQwWAweBSjAAwGg8GjGAVgMBgMHsUoAIPBYPAoRgEYDAaDRzEKwGAwGDyKUQAGg8HgURytABLrKX7jmUEW4xt2i+IYrs7E+MJLE5gUIPvn65dv8NL4vN1iOIb1ZJrPPTfOzPKeGbcNNrOnAhCRPhH5JxG5JCKDIvLvs6//hohcE5GXs1/vyLnnYyIyJCKvisjbyiX8hclFPvfcOO/91LNEV9bL9RjXMDi5yI/94Vn+w+e/w3/+u4tGCeyDp86O8thnzvPoHz3L1y/fsFsc7VndSPFv/uxF/tNff5ef+qNzXF9ctVskwy3Yzw4gCfyKUupO4EHgwyJyPPve7yql7s5+fREg+96jZApgPAL8gYj4yyA79/W38MmffTPDMzHe+8lnmY2ZFcduvDKxwE9/6jlqgn4eva+Pz5wd5X//mwuk00YJ7MYff/Mqv/7MIP/qzk5uP1DPL/zpi3x5cHs9eYPF6kaKx//0Rb52eZp//T2HmV5e46c+eY5rCybx6m5cnFxiZS1p2/P3VABKqSml1EvZn5eBS0DPLW55F/C0UmpNKTUCDAH3l0LYnfi+2zt48oP3MRZd4Vc+/51yPcbRrG6keOwzL1AfCvAXv3CK//qjd/Fvvm+Azz43zueeH7dbPC05NzzH//UPl3jnXV384c/cw5/9/AOc6G7kI597iYn5+N4f4EE+8aVX+eaVGT7xY2/g1955nD/90P1EV9b5t599yew2dyCVVjz+p+f58Odesk2GvM4ARKQfeBPwXPalj4jIKyLypIg0Z1/rASI5t02wg8IQkcdF5LyInJ+Zmclf8hweOtrGL/3AMf75tRleu7Fc1Ge5kb/59jVmY+t84sffQF9LGBHhV992O2/sa+LJMyNmF7ADf/zNq7TWVvHbP/lGgn4fjTVBfv9995BW8Cfnikq/4koWExs8/cI477m7h5+8rw+ANx1s5n975A6+E1ng/Jg5Q9nOVy9eZ2I+waPZ9rKDfSsAEakD/gr4ZaXUEvCHZIpc3w1MAb9tXbrD7TfNMEqpTyql7lVK3dveXnAyu03ee/9BqgM+njwzUvRnuQmlFE9+a4Q7uxo4daR183UR4bGH+rk6u8I3Xpu2UUL9uDoT42uXp/mZBw8RCm5ZL3uaanjk5AH+/PlxW7ftOvL5FyLE11M89vDh173+o/f00FgT5IlvmnG5nSfOjNDbXMNbjh+wTYZ9KQARCZKZ/D+rlPoCgFLqhlIqpZRKA59iy8wzAeSqtF5gsnQi70xLbRU/ek8vX/j2NebMWcAm37wyy2s3Ynzo4cOIvF43v+OuLroaQzxhlObr+PS3Rqny+/iZBw/d9N6HHj7M8mqS/3k+ssOd3iSZSvOZs6M8cLiFkz2Nr3svXBXgpx84yFcuXicSNaYzi1cmFnhhdJ4Pnu7H79tpzVwZ9uMFJMATwCWl1O/kvN6Vc9l7gAvZn58BHhWRahE5DBwDni+dyLvz2EP9my5ohgxPfmuEtrpqfviNXTe9F/T7+NlT/XxraI7L15dskE4/FuMb/OWLE/zI3d2011ff9P49B5t508EmPn121JjOsnx58AbXFhJ8aNvq3+JnTx3CJ8Jnzo5WVjCNefLMCHXVAX7KRvMP7G8H8BDwfuAHtrl8fkJEvisirwDfD/wvAEqpQeDzwEXgS8CHlVKp8oj/eo511vO9t7XzJ8+OsZFKV+KRWjM8E+Mbr87w/gcPUR3Y2RHrvff3URP08+kzo5UVTlOefmGcxEaKxx7aeTIDeOyhw4zNxfn6ZWM6A/j0t0Y42BLmB+/s3PH9rsYa3nFXF3/xQoSYMZ0xvbTK378yxU/c20t9KGirLPvxAjqjlBKl1BtyXT6VUu9XSt2Vff1HlFJTOfd8XCk1oJS6XSn1j+X9E17Po/f1MbO8xnciC5V8rJb8fxczfuu3WmU0hat45OQBvnrphlnRAl+5eIM39jZyvLth12vefvIADaEAX71o4gJmY2ucH5vnJ+/tvaUp49H7+oitJXl2eK6C0unJP706TTKtePS+g3aL4uxI4J04daQVEThrOhpnh+c42lHHgcbQLa976Ggb0ZV1XvW4B9XKWpLvRBZ46GjbLa8L+H08eKSVs1dnKySZvjx7NTPO9mqzew41Ux3wmXFJZly21VVzW2ed3aK4TwE011ZxvKuBcx7vaBupNC+MRjk90Lrntaey13i9zV4YjZJMK04P3HoyAzg90EokmvD8wea54TnqqgPcte3wdzuhoJ97+5s5d9XbfUwpxbnhOU4PtN7klGEHrlMAkNkFvDg+z+pGRY4etOSViQXi66nXuX7uRk9TDYdaw55fnZ0bniPoF958qHnPa09llYTXJ7Rzw3Pcf7iFgH/vqeTUkVYuTS15Om3L8MwK08trm4suu3GlAjh9tJX1ZJqXPBx8cnYoMzE9uA8FAJkV7XNX50h6+PD87PAcbzrYTE3V3plLbuuso7W2ytO7pqnFBFdnV/a1y4Qtpfmsh5XmueGM2XC/bVZuXKkA7utvwe8TT69ozw7Pcbyrgebaqn1df2qgjeW1JIOT3nQHXYxvcGFycd8DU0Q4NdDK2eFZz6Y5sJTfflezb+htpLbKz9lh756dnB2eo6ephoMtYbtFAVyqAOpDQe7qafTs9nx1I8WL4/N5bTMfPNICeNek8dzIHEqxL5OZxamBVm4srTEyu1JGyfTl3PAcTeEgdx7Y3WMql6Dfx32HWzy7a0qnFc9enePBI3rY/8GlCgAyW6zvRBY86Xf80vg868l0XtvMjvoQxzrqPLtrOjs8Ryjo4+6DTfu+xzos9mKbKaU4OzzHg4db8eURyXp6oJXhmRVuLHkvTfTl68vMxze0Mf+AqxVAG8m04oXRqN2iVJxzw3P4fcL9h1vyuu/0QCsvjERZT3rvHODc8Bz39bfsGjC3E/2tYboaQ55c0UaiCa4tJDh9NL/JzFKaXmwzy/SlywEwuFgBvPlQMwGf8MKI9xTAC6NRTnQ35B1l+OCRVhIbKQYnF8skmZ4sxjd49cYyD+SpMEWEB4+08rwHFxnWwuqBw/lNZnd2NVAfCniyzc6PznOwJUx3U43domziWgVQU+XnaEed5w41lVIMTi7t6Ze9E1YiL6+12eBURuHd1duU970nexqZWV5jetlbJo0Lk4vUBDNjLB/8PuFEd4Pn+hhk2uyu3vzHZTlxrQIAONHd6LmOFokmWF5NcqI7/47W21xDY03Qc212Mfv3nrhF+ofdsO7xWpsNTi5xR1d9QZksT3Q3cnlqyVMux4vxDSbmEwX1sXLiagVwsqeB2dga0x46cLLMNyd78u9oIpnV2UWPmYAGJ5c40BCire7m7J97YeUMGrzmnTZLpxWXJpc4WcAiAzJ9cy2Z5qqHvKesXWahbVYuXK0ArFXwBQ9NaBcmF/H7hNs66wu6/0R3A5euL3sqm+qFa4sFr8waQkEOtYY9tQMYj8ZZXksW3Gab49JDSnPwWuG7zHLiagVwZ1dmErQa3wsMTi5xrKPudZWs8uFEdyPryTTDM7ESS6YnifUUwzOxogam12zag5sms8JWs0faaqkO+DzWZoscaAjRWsAus5y4WgHUh4L0e2x1Nji5dMtUxnuxadP2iNK8fH2JtILjRWzNT3Q3Mh6Ns5jYKKFk+jI4uUjAJ9x2oLBslgG/jzu6GjzlbTY4uaTd6h9crgAATvQ0btrf3M700iozy2tF2RmPtNcRCnpndWb9nYWcmVhYA/uih9rsWGd9XjET2zmZ3TV5IY3G5i6zAM+8cuN+BdDdQCSaYDHu/tXZYBHeLBZ+n3BnV4Nnzk0GJxdprAnSU4RvtmUK8cKKNuNmXPiZicWJ7kaWV5NEookSSaYvl7K7TLMDsIHNwemBXYA1ARVjAoLsQfDkkicqhFlb82Jys7TXV9NRX+2JXdP08hqzsfUSKADLfdYL41LPA2DwhALwzvZ8cHKJQ63houuMnuhuZHktSWTe3cVONlJpLl9fLsnAzBwEe2Eyy/yNhR4AW9x+IBND4AWlebEEu8xy4XoF0FZXzYGGkCc62mARvtm5nOz2RkTw8EyM9WR6MwK6GE72NDI0HSOx7u4iRJZzQLG7zFDQz7GOOo8ozSVO9hS3yywXrlcAkFmdud3neGl1g/FovOiBCXDbgToCPnF9m5XSN/tEdwNplfEqcjODk0scbqulrjpQ9Gcd727ggssXGcnNXaZ+B8DgEQVw+4F6RmZXXB3cdOVGxm//jgOFBYDlUh3wc7itlivT7o4FeG16mSq/j/7W2qI/6/ZsTnwvtNntBQYZbueOA/XMLK+xEHdvicixaJz1ZLpkbVZqPKEAjnXWkUwrxubcG3o+NL0MwLGO0nS0Y511DLl8Mhu6EeNIe+2+6tnuRV9zDVUBn6vbbC2ZYmwuzrHOwvz/t2P1VTe3mbUwK1WblRpPKICj7ZmOZv0z3MiVGzGqAz56mktz0HS0vY6xuRXWku61aQ/NxBjIM5vlbgT8Po601bp6MhudjZNKq7wzgO6G9TlubjNrYTbQbhSAbQx0ZLb4ru5oMzEG2usKys64EwMddaQVri13uLqRYjwa52gJB+bRjjquZAe8G7HGT6kUQE9TDaGgz9Vms6HpGD1NNdSW4MykHHhCAYSrAvQ01bi6o125ESvZwAT3b8+vzqygVGm35kc76piYT7jWE+jK9DIipVvN+nzCQLu7TY1Xpku3yywHnlAA4G6bdnw9ybWFBMdK2NGOtNci4l6zmbVSL7XSVArXJtIbmo7R1xwuONHgThzrcO+4TKcVwzOxko7LUuMZBXC0vY7hmRgpF0a3Dk9nzDSlnMxCQT8HW8IMuXQyG56O4RM43Fa8B5CF1f5uVgCl7GOQabNrCwlW1pIl/VwduLaQYHUjXfI2KyWeUQDHOutYS6a5Nu++3CNDM1kPoBJ7Ghxtr2PItTuAGIdaa4tKaLad/rYwfp+4cteUTGUKuJR6NXs0a2p0o9K0djZmB6ABlhZ24yHdlRsxAj7hUAn82XM52lnHyOyKK0v3lWM1Wx3wc6gl7EqTRmQ+wXoyXXJ7tps9gcphZiw1eyoAEekTkX8SkUsiMigi/z77eouIfFVErmS/N+fc8zERGRKRV0XkbeX8A/aL5Qrqxo42NB2jv62WYAn82XM52l7HeirNeNRdOYE2UmlGZlfKMjDd6glUrtXsodYwQb+40kFjaDpGW101TeEqu0XZlf3MGEngV5RSdwIPAh8WkePAR4GvKaWOAV/L/k72vUeBE8AjwB+ISOn22QXSGA7SXl/t2o5WSndGi2Od7lSaY3NxkmlVlq350Y46xuYy0Z9uwlJqpd4BBLOR2G7rY5AxMx7tKO2uvNTsqQCUUlNKqZeyPy8Dl4Ae4F3AU9nLngLenf35XcDTSqk1pdQIMATcX2K5C8KNHgdryRRj0dJFZ+Yy0J7pvG5TmkNl3Jq7Nep8aDrGgYYQDUVmmt0JN3roKaUYmo6VLDK/XORlMxCRfuBNwHNAp1JqCjJKAujIXtYDRHJum8i+tv2zHheR8yJyfmZmpgDR8+doVgG4qQpRqaMzc6kPBTnQEGLYZYPTmmzKEZ3pVlNjOc5MLNwYdT69vMbyalJr+z/koQBEpA74K+CXlVK3SuG3UyjqTTOuUuqTSql7lVL3tre371eMojjWUUdsLcn1pdWKPK8SlDo6czvHOutcuAMoX3SmFXXupjazVrNlUwCd9a6LOneCBxDsUwGISJDM5P9ZpdQXsi/fEJGu7PtdwHT29QmgL+f2XmCyNOIWx4ALPQ6GpmMljc7czkA2fsJNu6ZS5gDajhV17qY+NrW4Snw9VdYdALhvXILeHkCwPy8gAZ4ALimlfifnrWeAD2R//gDwtzmvPyoi1SJyGDgGPF86kQvnSFvmnzE65x6vlvFonM76UEmjM3M50l5LfD3FzPJaWT7fDsbn4hxqCZft84+017rqDMDyAjvUWp4262/LfO6Yy8ZlTdBPe3213aLckv3sAB4C3g/8gIi8nP16B/CbwFtE5ArwluzvKKUGgc8DF4EvAR9WSmlh3Ouor6Y64GPcRYMzMh+nr6V8peas2AK3KM3FxAZLq8myttnBlrBr2gsgklUAfc3lUQDhqgAd9dWMusgEFInG6W2u0bIKWC57GkGVUmfY2a4P8IO73PNx4ONFyFUWfD7hUKu7BudENM6DR1rL9vnWSnlsboX7D7eU7TmVotyTGUB/ay2LiQ0W4uta+4Dvl8h8AhHoLmNN2/7WWsZcFG8SmU/QV8ZdZqnwTCSwxaFW92zP15IpppZWy9rReppr8PvENdvzTQVQxjazTCVuarPuxkzBm3JxqDXsmnGplCISjXPQKAD96G8NMzYXJ+2CpHCTC6soVd7JLOj30dtcw6hLBmdkvvwKoL/NMpu5pM2y5oxy0t9Wy42lNeLrzk8KtxDfILaWLHublQLPKYBDrbWsJdPcWHa+K+iWOaO8HS2za3LLajZBQyhAY03pA5osDra4bAcwHy+7OcPaNbkh7UglFhmlwnMKwCoA7obBWamO1t8aZnRuxRWuoJWYzEJBP12NIVfsAFY3UtxYWivrmQlsjcvRWReMy2gm43C526wUeE4BbNlnnT84I9EEQb/Q2RAq63MOtdayvJpkPr5R1udUgkg0XpGBebAl7IpFxrWF7GRWRq8pgINuGpebCzNjAtKOrsYQQb+4whMoMh+np6mmZHWAd6PfJYNTKcXEfKIiA7PfJWazShyaAzSEgrTUVrnCEygSjdMUDlJfhrxJpcZzCiDg99HX7A6Pg4lo+c0ZsBUL4PQJbWZ5jbVkujJt1hZmNrZGzOGVriLzlTNnuMUTKDKfcIT5BzyoAMDqaM6ezCDT0Xor0NH6WmoQcb5XSyUP57bOmpzdZhPROFUBHx0ViGjtb611xRlAZmGmv/kHPKsAMttzJx9qxtaSRFfWK+JrXB3w091Y43ilOV6BIDALt8QCROYzLqC+MpsZIdNmk4sJR2cFTactM6PZAWjLodYwsbUkcyvrdotSMFu22cqsNA5lPYGcjOWdUQn/7K0UGs5us/EKHZpDpo8ptfV/ciI3lldZT6WNCUhn3LA9r0RKg1zcEAsQicbpqK8uW+K8XOqqA7TVVTHmcJNGJFqZQ3PIPWty8ri0vKaMAtAWa3vuZHvj5uFchTpaf2uY6Mo6S6vOdQWtRAxALodaaxmLOncyW1rdYDGxUbFFhhtidCoVnFkqPKkAepvD+ARHu5xFonFqq/w0hyvjamatzsYdPTgTFR2YTnc2qJQLqEVzOEh9KODsHcB8HJFMDi0n4EkFUBXw0dNc4+j0sxPZ1Wyl0s1aOdudWrVpI5VmarGyh3P9rbVMLa6yuuHMQ81KR7SKCP2ttYw4Wmkm6KwPUR0ov5mxFHhSAUCmU1tugU4kEq2MC6iFNQk4tc2mFlZJq8qG51u28wmHttmEDRGtfS01TDh5Z17m+hylxrMK4GBL2LHeBkqpine02uoArbVVjm0zOxJ0WS66jm2zaJz66vImzttOX0uYifmEY7P1TlTQa6oUeFYB9LVkIjUT687bns+trBNfT1W8o/W2hB27mh2vsNssOH/XFJlP0FtBMyNk2mw9lWbagSVIrfocvQ7xAAIPKwDLF9yJE5p1OFfpghN9zTWbz3YakWicgE/oaqycAmjPliB1cpsdrLA5w9qhOVFpWvU5nFAIxsKzCsDJHa3SLqAWfS1hri0kSDlwex6ZT9BdgcR5uYgIvc01jjQBbZoZK7zLtLy0nKg0neYCCl5WANmO7US3RqujVbriUF9zmI2U4vqS84rpRGzKz9LXEnZkkZOZ2BqrG5VJnJdLT3Mm75QT28xJhWAsPKsA2uqqqAn6N1fTTmJiPk5rbRW11YGKPteaQJ24OpuwYTULzvU224porazSrA746awPOXLXVKn6HKXEswpga3vuzMFpx0HT5qGmw9osvp5kNrZuy8qsr6WG5dUkiw4rprPpAmqH0mypcabSrFB9jlLiWQUAma2aE3cAGdts5c0Z3U2Z7bnT2mxivnJJ4LbjVE+gLTOjPQsNJ8YCVKo+RynxtAI42JLpaE5KC51KK67ZlG62KuCjqyHkuMFpl9cU5DgbOK7NErTVVVNTVfmI1r6WMFNLq6wn0xV/djFUqj5HKfG0AuhtrmF5Lcliwjnb86nFBMm0si3YJLNrctZkNl7hnDa5ONXbzM6I1r6WTFroyQXn7DSt+hxOigIGjyuAPgdGalqy2uVr3OfACOpINEFN0E9rbVXFn91YE6QhFHBem83H7etjliuog5SmnbvMYvC2AnCgfTZiQ36WXPqaw9xYXnVU1SZrNVvJiNZcnLZrSqbSTC6s2rrLBKctzOw7NC8GbyuA7CTqJJ/jiWgcn2QOZO2gr6UGpeCagw6CIzbnZ+lrDjvqDGBqcZVUWtm2yOhsCBH0i6PGpV3BmcXiaQVQHwrSFA46anBG5hN0NdYQ9Nvzr7M6uFMGp1L212jNuDU6J8GZ3atZv0/oaXKWK2il63OUCk8rALACdZy1mrXDndFiy2zmjDZbiG8QW0va22YtYdaTaWZizkhwpkNEa1+Ls1xBK12fo1TsqQBE5EkRmRaRCzmv/YaIXBORl7Nf78h572MiMiQir4rI28oleKlwWv7xSpc13E5HfTVVAZ9j2syazOw8nHNaAF0kmsDvE7oa7Yto7XXcwsx5LqCwvx3AZ4BHdnj9d5VSd2e/vgggIseBR4ET2Xv+QES0Lo3jpPzjqxspbiyt2WrP9vmEXgdtz3Uo0u00V9DIfJyuxhABm8yMkFHY0ZV1VtaStsmwX+yoz1Eq9vwPK6X+BYju8/PeBTytlFpTSo0AQ8D9RchXdpyUf3xi3p78LNtxkiuonTEAFr2bGS6d0WZ2H5pDTt4pByhNu+pzlIJiVPxHROSVrImoOftaDxDJuWYi+9pNiMjjInJeRM7PzMwUIUZxOGl1poM5A5yVqyUyH6c5HKSuwonzcgkF/XTUVzvHBDSfsL+PNTvHFdSpMQBQuAL4Q2AAuBuYAn47+/pOJyA72laUUp9USt2rlLq3vb29QDGKxwo6cUJa6AkNVrOQGZwL8Q2WV/WPoI5okp/FKbEAifUUM8trWuwywRneZk51AYUCFYBS6oZSKqWUSgOfYsvMMwH05VzaC0wWJ2J5sfKPO2FwRuYTVAV8tNdV2yqHkwJ1JuYTWmzN+xxSGGZCAw8ggOZwkNoqvyN2TXbV5ygFBSkAEenK+fU9gOUh9AzwqIhUi8hh4BjwfHEilhcn5R+3XEB9Nqeb3Symo/ngTGcT5/VqcDjX1xJmajHBRkrvBGfWQshujxYRyTpo6N3HwL76HKVgT4lF5M+B7wPaRGQC+HXg+0TkbjLmnVHgFwCUUoMi8nngIpAEPqyU0j5ngFNs2naU6NsJyzyg++C8sbzKeiqtR5s1h0lnE5wdaq21W5xdsasQzE70OiSC2q76HKVgTwWglHrvDi8/cYvrPw58vBihKk1fc5hnr87ZLcaeRKIJ7u5rslsMGmuC1FcHtB+cdifOy6W3ZcsTSG8FECcUtN/MCBkldHZ4FqWU1gFWkfk4d/U02i1GQXg+EhickX98MbHBYmJDi9WsiNDrgGI6EU0OzWFLCem+04zMx+lt1iOi9WBLmPh6iujKut2i7Iqd9TlKgVEAOCP/uE6TGViHmnpPZuPROCLQ3WR/jdauxhoCPtG+zSLRhC3V5nbCCWlH7K7PUSxGAeCM/ON21mjdiYPZCGqdq6lF5uMcaAhRHbA/GN3vE7qbarSezMD+VCO5OKGamk5nJoVgFADO8DnWyZ4NmTZLbKSYjem7PZ+I6uECatHXoveuaTG+wfJqUps+ZrlVaj0uNQnOLBSjANjKP66zK2hkPk59KECjJulmnRCqH5mPa+ECatHXrLdboy4uoBa11QFaa6u0bjO763MUi1EAOCP/uA75WXLRPcPlWjLF9SX7qlrtRF9LmNmYvgnOtvIm6TOZ9Wqed8ru+hzF4kypy4Du+ccj8wm9BqbmCmByYRWl9NqaWyaNCU3PAXRzNICss4HmCzMnRgBbGAWQRef845mqVnrtAGqq/LTVVWu7OtNyMtP8UDMyH88WsdfDzAiZNptcSJDSNF27TofmhWAUQBad84/PxNZY3Uhr19F0jqDeqmqlz+pM91iASFSvXSZk2mwjpbi+tGq3KDehQ32OYjEKIIvOh5oRDW2zYJXT1K+9IGPPrvL76Ky3PwbAorW2ipqgX99dk2a7TND7rEmX+hzFYBRAls0EZxqmhd70NdZtcLbUMLmwSlLDBGcT0QQ9GiTOyyWT4EzPXVM6rTKZUzXcZYKerqA61E4uFqMAsmwVhtFvdbaVblavjnawJUwqrZha1G97nklpoN/KrE/TBGczsTXWk/qZGbubavAJWjpoWDLp5GiQL0YBZNE5/3hkPk57fTU1VfZHtOayFaqvYZtpUghmO32aRlBvmhk1U5pBv4+uRj0jqHWpz1EMRgFk0Tn/uE75WXKxJtgJzWzasbUk83E9Eudtp7e5hthakoW4XtXUdKidvBu9muad0qU+RzEYBZBDJv+4XpMZ6Otq1tUYwu8T7eyzOtdo1TXtiNXvezSMaNW1nKaOh+b5YhRADtYBnU7b82QqzdSiXhGtFgG/j67GkHaDU1evKdDXbBaZj9PZUE0oqJeZETJtdmNpjdUNvWpL6eg2my9GAeSgY/7xqcVVUmmlbUfT8VBzs0i3hkqzL6cwjE7olmokl4OtmTa7plG6dp3qcxSDUQA56Jh/fNM2q2lHy+ya9GkvyExmddUBmjRJnJdLfShIczio3Q5ARxdQCx1jAXSMNC8EowBy0NE+q3tH62sOM7Os1/bcOpzToarVTvS16LVr2kilmVrU09EA9EyhoVt9jkIxCiAHy29cp44WmY/j9wldjfpEtOay6Qmk0YpW10Nzi0xaaH12TZMLCdJK30VGe101VQGfVjtN3epzFIpRADnomH88Ek3Q3RQioGm62a3VmR6DUymVdZvVd2D2ttRwbT5BWpMEZ1tVrfRsM59PtHMF1a0+R6HoOavYiG75x3V3NdMth9LcyjqJjZS2h+aQ2QGsp9LcWNYjgtoJKQ10yzul86F5PhgFsA3d8o/rvpptr6smFPRpk0NJ5xgAi82zJk3abDwaJ+gXDjToaWYEq5ymTgsz57uAglEAN6FT/vHEeorZ2JrWHU1EsrUU9JjMNl1AdVYA1lmTJjbtSDROd1MNfo0jWvuawywmNlhatT+CWsf6HIViFMA2dMo/PuGArTlkd02arM62EufpqzR7mmsQ0cfZIDKv9y4TcmopaNBmutbnKASjALahk8/x+OZkpndH0ylUPxKN01ZXRbgqYLcou1Id8HOgQZ8I6oloXOtdJujlbKBzpHm+GAWwDZ3yjzulo/U1h1leTbKoQYKzTBpovRUmZF1BNZjMVtaSzK2sa99mOi3MdK3PUQhGAWxDp/zjkfkEoaD+6WZ18gTK5GfRf2D2alIYxopH0PnQHKAxHKQ+FNCizXStz1EIRgFsQ6f845arma4RrRa6RGqm0orJBX0jWnPpaw5zfWmVtaS9EdS6R5rnokveKV3rcxSCUQA7oEvQSUTj/Cy5bFVTs7fNphYTJNNK+9UsZNpMKZhcsNfZYDMGwAlKU5O8U7rW5yiEPRWAiDwpItMiciHntRYR+aqIXMl+b85572MiMiQir4rI28oleDnR4VBTKZU5nHNAR2sIBWmsCdp+bqJ7RGsu1v9VhzYLV/lpqa2yVY79kEmhYX+6dt1TjeTDfnYAnwEe2fbaR4GvKaWOAV/L/o6IHAceBU5k7/kDEXHcPkmH/OOLiQ2W15KO6Wg6BOpEHJSgSxez2bhDzIyQabPVjTQzsTXbZNC5Pkch7KkAlFL/AkS3vfwu4Knsz08B7855/Wml1JpSagQYAu4vjaiVQ4f849Zk6pSDJh1C9SeicXwCXU36RrRadDaEqPL77G+zef1dQC0OauAKqnt9jnwp9AygUyk1BZD93pF9vQeI5Fw3kX3tJkTkcRE5LyLnZ2ZmChSjPFja3c7t+bhDXEAtrGLndiY4G4/G6WqsIahp4rxc/D6hp7nGVlfQTOI8Z7jNQm4xHQ3GpUPabC9KPVJ22kfuOCMopT6plLpXKXVve3t7icUojq1i5/Z1NCck6Mqlr7mG9aS923On5WfptTnv1Hx8g5X1lGP6WK8GsQBO8praD4UqgBsi0gWQ/T6dfX0C6Mu5rheYLFw8e9Ah/3gkGqexJkhDyBnpZns1sGk7LUOj3YVhNiczBzgaAISCftrrq21VmrrX58iXQhXAM8AHsj9/APjbnNcfFZFqETkMHAOeL07EyqND/vHIfMIR7owWdhc7X91IMb285qiVWV9zmPn4BrG1pC3Pt/5XB1ud1Gb2OhvoXp8jX/bjBvrnwDngdhGZEJEPAb8JvEVErgBvyf6OUmoQ+DxwEfgS8GGllD61AvPA7kNNJ+RnyWWrmpo9g9MpEa252G3TdmJKA7tdtHWvz5Ev+/ECeq9SqkspFVRK9SqlnlBKzSmlflApdSz7PZpz/ceVUgNKqduVUv9YXvHLh51ujem0yhTpdlBHCwX9dDZU23ZwvnVm4hylabezQWQ+TkttFbXV+ibO205fc5ipxVWSqbQtz9e9Pke+uGMfUwbszD8+vbzGeiq9aVd3CnaG6k840DvD7liAiEMCDXPpa6khlVZMLVY+gtoJ9TnyxSiAXbAz/7iTwvNzsVxB7SAyn6A64KO9Xu/Eebk0h4PUVQfsa7No3HmLDBvHpVPqc+SDUQC7YGdHs0oFOq2j9TXXMLWYYMOG7fn4XJze5hpHRLRaZKqp2eNskEorri04z5xhp9nMKfU58sEogF3Yyj9e+dWZtQPoaXLWDqC3JUxawaQNEdROzc9i16HmjaVVNlLOi2jtagzh94ktbeaU+hz5YBTALtiZfzwSTdDZUE0o6Kw0SrYqTYfFAFhkzk0SFU9wFnHgmQlAwO+juylk08LMGfU58sEogFtg16FmZD7uKHdGC7sKw2QO65OOXJn1tdSQ2Egxt7Je0edGHOg2a2GXi7ZT6nPkg1EAt8Cu/OMTDl3NdjXWEPBJxZWm9TynTmZQ+bOmSDSOSKYCntOwdk2Vxin1OfLBKIBbYEf+8fVkmqmlVcd5Z8BWgrNKK03LO8OJh3NbxXQq22aR+ThdDSGqAs6bAvpaapiNrZFYr1yMqZPqc+SD8/77FcSO/OOTCwmUcp4LqEVfc7jiHhpOKgSzna0I6sq22UQ04chFBuQka6ygGchp9Tn2i1EAt8COWACnZQHdTl9LTcWzqEbm4zSEAjTWOCNxXi611QHa6qoqrgDGHWpmhK2xUcmFhtPqc+wXowBuwVaulsptz7fqADizo/U2h5lbWWelggnOxqPOdAG16K3woeZaMsWN5VVHHpqDPecmTqvPsV+MArgFduQfH4/GCfqFAw3OTDe7tT2vrNJ04gGwRSYtdOXaa2I+Y2Z0apu11VVRE/RX9NzE6Quz3TAK4BbYkX98fC6zmvX7nOlq1ldhm3YqrZiIJjjUWluR55WDvuYaJhcSpCpUTc2KNHdqm9kRQT0eXaG1tsox9Tn2i1EAe1Dp/OOjc3H6HTowIderpTKDc2oxwXoqTb+Dctpvp68lTDKtmFqsTD8bnVsBcHybVXIHMDob55CD22s3jALYg0qG6iulGJtbcXRHa63Nbs8rpDTHHL6ahcpHUI/NxamvDtBSW1WR55WDvuaMs0GlXLTH5lYcvTDbDaMA9qCS+cdnYmvE11MccrCdUUQ4WEGlaa1mnaw0Kx1BPTq3wsFWZ0e09rWEWV5Lspgof7r21Y0Uk4urjqqctl+MAtiDSuYf31zNtjl7pZEpplOZyWxsLk5VwOfYQ3PIROP6pHLnJmMONzNCroNG+XdN1v/F6W22E0YB7EElfY4tBeD0jtabzaFUie352NwKh1rC+Bx6aA4Q9PvoaqyM0kym0kSizrdnH7RhXDq9zXbCKIA9qKTP8djcSiadggPzs+TS1xJmZT3FfLz82/Oxubij7f8Wlco7NbmwSjKtHL/IqKTZbOvQ3NltthNGAexBJfOPj87F6WmqcWR+llwq5QqqlGJ0bsXR3iwWlco864YzE4D6UJCmcLBCC7NMpHlT2F0uoGAUwJ5UMv+40z2ALCrlCjq9vMbqRtrxZyaQabPM31PeBGdjlj3bDW3WXBlX0NG5Ffrbah19aL4bRgHsg0rkH1dKMTLrDlezrXKa5R2co7PO92e3sEwa5Y6gHptdIRT00eGg2sm7Uam8U24xM+6EUQD7oBL5xxfiGyyvJl2xA6irDtAcDpZdaW4ezrU4f3BunjWVuc1G5+IcanHHajaTrj1BuowR1BupNNcWEo52zb4VRgHsg0rkH7e25m5ZaWTy25RZAURXCPiE7ibnuoBabOZQKnebucTMCJka1OupNNPL5UvXfm0+k6LDLW22HaMA9kEl8o+PuSA8P5dKKIDRbN6kgN/53bi9rprqgK+sbo3ptGIsGneF/R9y0rWXcVxuegC5pM224/yRUwEqEQswOpsp0eeWbIN9zWGulTnBmZtWsz6fleCsfKbG60urrCfTrmkzy9vMSm5XDtwcAwBGAeyLSsQCjM2t0NUQIhT0l+0ZlaSvpYaNlOLGUnkiqJVSjM06P6I1l3LnnXKbP3tPcw0i5d8BhKv8tNc5/9B8J4wC2AeVyD8+OrfiGvs/lF9pRlfWWV5zx6G5RbljAdy2mq0O+OmsL6+LtuUB5IZD850wCmAfWAnOLDt9ORiZXaG/zR0DE7YmmbEybc9HZt21moVMmy2tJplfWS/L54/MrlCVTTvhFg62VmBcukRh7oRRAPtkoKOWoelYWT57LrbGfHyDgfa6sny+HfQ2h6kK+BiaKU+bWf+Lox3uaTPr/1/ONjvSXuvYYkM7MdBex9BMrCx5p9aSKcbmVlzVx7ZTlAIQkVER+a6IvCwi57OvtYjIV0XkSvZ7c2lEtZejHfWMR+NlidR042Tm9wlH2sqnNIemY4SCPsfnTcrF+v+Xs80GXNTHAI511LEQ32CuDLum0dk4aeWucbmdUuwAvl8pdbdS6t7s7x8FvqaUOgZ8Lfu74znaUUdabR2klZIr2QF/rLO+5J9tJ0c76rgyvVyWz74yHWOgvc7RWUC309NUQ03Qz5UbpVcAqxspIvNxjrlsMiun0rT6rlEA+fEu4Knsz08B7y7DMyrO0ez2vByDc2g6RrjKT3ej8wOacjnWUc/EfKIsAXRD0zHXDUyfTzKmxjKYgIZnYigXrmatv+dKGRTA0HQMEVxlmt1OsQpAAV8RkRdF5PHsa51KqSmA7PeOnW4UkcdF5LyInJ+ZmSlSjPJzpL0Wn5RnpWFNZm7zNDjaUYdSmcmnlKysJbm2kHDdahYyC42hG6XfNVn99liHu3aZXY0haqv8DJdlBxCjrznsGtfsnShWATyklLoHeDvwYRH53v3eqJT6pFLqXqXUve3t7UWKUX5CQT99LeHyKQAXrjKOdWb+plIrgKszGTOc21azkDEDTi6uEltLlvRzh6Zj+ARXeZpBxkOvXKbG4emYKxcZuRSlAJRSk9nv08BfA/cDN0SkCyD7fbpYIXXhWEddyRXA0uoG15dWOdrpvo7W35rxOCm12WzLNuuu1SxsmRtKvaIdmo7R31pLdcB9q9mjHfUlH5fJVJqrM+72AIIiFICI1IpIvfUz8FbgAvAM8IHsZR8A/rZYIXVhoKOOq7OxkhaItwa6G3cAVQEfh1pLv2samo4R8IlrAppysXZNpW6zKy70ALI42lHHjaU1llZLV4EuMp9gPZU2CuAWdAJnROQ7wPPAPyilvgT8JvAWEbkCvCX7uys41lHPRkqVNCeQWz2ALI62l357fmU6xuG2WoIuSAK3nUMtYYJ+Kemh5kYqzejsimvNGcfK4Al05Yb7PYAAAoXeqJS6Crxxh9fngB8sRihdyfU4OFKiFfvwdIwqv28zsZXbONZZx9cvT7OeTJes1OXwdIzbD7hTYQb8Pg6XOH5ibG6FZFq5djLbdAW9EeOeg6UJO7I8sdzaZhbuW0KVkXL4HF/JRme6IaXxThztqCOZViUL119Lphidc+9qFjJtNlTCXZNbPYAs+lpKH3U+dCPGgYYQ9SH31QHOxZ2zTpmoqw7Q1Rgq6QGdG6Mzc7EmnVIpTSs6081tVuqoc+sQfqDDPXmTcilH1PnQTGzzPMbNGAWQJxmXs9J0NLdGZ+ZypD0z6ZSqzazzBLeuZmEr6txKeFcsQzMxeppqCFcVbPHVnmOd9SU7a0qnVWZh5kLHjO0YBZAnRzvqGJ6JlaQOqVujM3MJVwXoba4pmQKwojMtxeJGjpU4utWNUdPbOdpeV7Ko86mlVeLrKbMDMNzM7Z31xNdTJSlCcXkqs2K5zaUeQBa3d9bz6vWlknzW5allDrW4OzrzSHstAZ+UpM02UmmuTMe4zeWT2e0HMlHnr5UgivryVKbd3T4uwSiAvDnR3QjA4GTxg3NwcolQ0McRl9YbtTjR3cDwzEpJbNqDU4uc6GksgVT6Uh3wc7SjriR9bHgmxnoyzUmXt1mpx6UI3NnVUPRn6Y5RAHly24E6Aj5hcHKx6M8anFzkjgMNrvUAsjje3Ugqrbh8vbjV2WJ8g0g0wYlu9w/ME92NpZnMri1lP8/dbdbbXENDKFCycXm4tZa6aveemVi4e+YpA9bq7MK14gZnOq24OLnk+oEJW5PPhWvFDc7BqcXs57l7NQuZNptZXmO6yJrKFyYXqQn6OdzmbhOQiHC8u4ELJVCaF64tcdwD4xKMAiiIUqzOIvNxlteSrt+aQ2Z11lgTLLrNLk56YzULW39jsW02OLnEHV31rqoCthsnuhu5PLVUVKqWhfg61xYSnlhkgFEABXGyp4HZWHGrs0EPTWYiwonuBi4WuT0fnFziQEOItrrqEkmmL8c3FUDhbZZOKy5NLnHSI5PZyZ4G1pJprhbhPmstMk72uH9cglEABWGtDi4UMTgHJxfx+8QTngaQUXSXri+zUcTq7MK1RU8oTID6UJD+1nBRpsbxaGaX6ZU22xyXRZgarTFtdgCGXbmzKzNpDxYxOAcnlzjWUedqd8ZcTnQ3sp5MF1wbILGeYngm5pnJDLKmxqliFhnWLtMbk9mRtlqqA76izGaDk0t0NYZoqa0qoWT6YhRAAVirs2I62oVrS54ZmJBj0y5QaV6+vkRaZTyKvMLx7gYi0QSLicLSHA9OLhLwCbcdcPcBsEXA7+OOroaizGaDHnHMsDAKoEBO9BS+OpteWmU2tuapjnakvY5QsPDV2aDHbLPApoPAxSLa7FhnvSuLwOzGye4GBieXUCr/SP34epKrMzFPLcyMAiiQE9bqLJ7/6mxrMvNOR/P7hDu7Ggo+NxmcXKSxJkhPkzvTZu/EiSIOgpVSDE5658zE4kR3I8urSSLRRN73XppaJq284ZhhYRRAgWxGHhawC7AGtHWW4BVOdDdwaXKpoDxK1tZcxP3ujBZtddV0NlQXtGuaXl5jNrbuqckMilOalpea2yPNczEKoEBOZjvadyfy72ivTCxyuK3W9bnGt3Oyu5HltSSjedYGWEumuHx92VM7JouT3Y28MrGQ932vZPul19rs9gP1BHzCKwV4Ar0ysUhzOEh3Y6gMkumJUQAF0lpXzZH2Wp69OpfXfem04rmRKPf1l6ZykZO473ALAM9ejeZ137fHF1hPprmvv6UcYmnNfYdbGJ5ZYXo5v5iTZ6/OURXwcZfHFEAo6OcNvY15j0uAZ0fmuK+/xVO7TKMAiuD0QCvPj0Tz8m2/OLXEYmKD0wNtZZRMT4601dLZUM3Z4dm87js7PIdP4P7D3lMApwdaATg3nN+EdnZ4jnsPNXvGzTiX0wNtvDKxyHIeReIj0TiRaGKzvb2CUQBFcHqgjZX11OZ2ez9YA/mUxzoaZCKCTw+08ezVuby8NM4Nz3JXTyONNd4ymUHmrKk+FMhLAURX1rk0teS5yczi9EArqbTihdH97zSt9j191FsLM6MAiuDBI5kBls928+zwLAPttXQ2eMfOmMupgVZmY+v7LnYSX0/ycmSBUx7cMUHGe+rBI62cy6OPPXfVWmR4s83uOdRMVcCXl9I8d3WOtroqV1fn2wmjAIqgpbaKOw7U79uksZFK8/xI1JOrf4tTWaV5dmh/bXZ+dJ6NlPJ8m43NxZnYZxGis8NzhKsytnAvEgr6uedgE2f3qQCUUpwdnuXBI62esv+DUQBFc3qgjfOj86wl9y528t1ri6yspzxp/7foawnT11Kz78F5dniOgE88eWhucfpofucAZ4dnuf9wC0GX15m4FacH2rg4tcRCfH3Pa6/OrnBjac2T49K7PaREnB5oZS2Z5tvjC3teaw1gy3TkVU4faeO5kSipfcQDnLs6x5sONrm6oPle3NZRT2tt1b7MQNNLqwzPrHjW/m9xeqAVpfbncbZp//dgmxkFUCT3H2nBJ+xrRXt2eJY7DtR7JtHUbpwaaGUxscGlqVsHOC2tbvDdiYVNs5FX8VnnAMN7H55bSuLUEe+tZnN5Q28TNUE/5/Zhnj03PEdXY4hDreEKSKYXRgEUSUMoyF09jZy5MnPL6xLrKc6Pzntym7kdy57/zSu3HpzPDs+RVt49zMzl1EArU4uZ1f2tOHNlloZQwDMVrXajKuDjvsMtfHNo9pZKM5lKc+7qHKcGvGf/B6MASsIjJ7t4aXyBy9d3X9F+4dsTrCXTPHLyQAUl05POhhBvOtjEX7wwfsu0EJ97fpy2umruOdRUOeE05V/d2UnAJ/z58+O7XrMY3+DvX5nirScOeKIC2F68/eQBrs6s8PzI7magLw/eILqyziMnvDkujQIoAe+9v49Q0MeTZ0Z2fD+dVjx5ZoSTPQ2ePszM5bGHDjM6F+frl6d3fH9oOsY3Xp3h/Q8e8lQ2y9040BjiHXd18RcvRHYNcHr6hXESGykee+hwhaXTk/e8qYfmcJAnv7XzuAR48lsjHGwJ84N3dlZQMn0wCqAENIWr+LF7evmblyeZja3d9P6/XJlheGaFxx467Mlt5k68/eQBuhtDPLGL0vz0t0aoCvh434MHKyyZvjz28GFia0n+5/mJm95LptI8dXaUU0daPW/+sQgF/fz0Awf5ysUbjM/d7EL7cmSBF8fm+eDpfs/umIwCKBGPPXyY9WSazz578xb9iTMjdNRX80Nv6LZBMj0J+H184HQ/567O3ZS5cX5lnb96aYL33N3jifq/++XuvibefKiZT58ducmD6h8vXGdycZUPPWxW/7n87Kl+Aj7h02dvXmg8cWaE+uoAP3lfnw2S6UHZFICIPCIir4rIkIh8tFzP0YWB9jq+//Z2/vTZUeLryc3XL00t8c0rs/zsqUNUBYy+zeXR+w5SE/Tzx98ced1B3WefG2N1I83PPdxvn3Ca8qGHDxOJJvjy4PXN11JpxRNnRuhvDfMDd3TYKJ1+dDaE+KE3dPP5FyKviwmYmI/zxe9O8VP39VFX7V0X47LMSCLiB34feDtwHHiviBwvx7N04vHvHWA2ts47f+8Mz49E+fz5CD/1R+eorw7w3vuNKWM7jeEgP/3AQf7629f4xT97kZHZFf6Pv7nAb33lNb7/9nbuOGBMGdt56/FODrfV8stPv8x///oVLl9f4if+x1lejizw+PcO4POoKeNWfOjhw6wm07zz987wz6/N8PevTPKu//4tAj7hA6f77RbPVqSQ0ml7fqjIKeA3lFJvy/7+MQCl1H/d6fp7771XnT9/vuRy2MGZK7N89AuvMDGfqUh0f38Lv/ljd3Gk3Vs5RvZLMpXmj8+M8DtffY31ZBoR+ODpfv7j2273dPDXrZhZXuM3nhnkH747BUBTOMiv//Bx3n13jzlj2oUXx6L86l++sulGe1dPI5/48TdwZ5ezFxki8qJS6t6C7y+TAvhx4BGl1M9nf38/8IBS6iM51zwOPA5w8ODBN4+NjZVcDruIryf5w28M09VYw6P39ZlV2T64OhPjiTMj/Og9Pbz5kPfSPhfClwev89zVKP/2+wfMWck+WN1I8cffvEpNVYAPnDpEwAWpMnRVAD8BvG2bArhfKfVLO13vph2AwWAwVIpiFUC5VOAEkHu03gtMlulZBoPBYCiAcimAF4BjInJYRKqAR4FnyvQsg8FgMBRAWU7ZlFJJEfkI8GXADzyplBosx7MMBoPBUBhlc7NQSn0R+GK5Pt9gMBgMxeH8Y3CDwWAwFIRRAAaDweBRjAIwGAwGj2IUgMFgMHiUsgSC5S2EyAxQTChwG7B37Td70FU2XeUCI1uhGNkKw8myHVJKtRf64VoogGIRkfPFRMOVE11l01UuMLIVipGtMLwsmzEBGQwGg0cxCsBgMBg8ilsUwCftFuAW6CqbrnKBka1QjGyF4VnZXHEGYDAYDIb8ccsOwGAwGAx5YhSAwWAweBWllO1fwCPAq8AQ8NEd3hfg97LvvwLcs9e9QAvwVeBK9ntzznsfy17/KpnCNVrIBvQDCeDl7Nf/sEG2nwAGgTRw77bP21e7VVIuTdrs/wYuZ6//a6BJo762o2yatNt/yV77MvAVoFujdttRNh3aLef9/xVQQFsh7aaUsl8BkEkXPQwcAaqA7wDHt13zDuAfs431IPDcXvcCn7AaDfgo8N+yPx/PXlcNHM7e79dEtn7ggs3tdidwO/ANXj/R7qvdbJBLhzZ7KxDI/vzfNOtru8mmQ7s15Nz/78hOppq0226y2d5u2ff7yKTbHyOrAPJpN+tLBxPQ/cCQUuqqUmodeBp417Zr3gX8icrwLNAkIl173Psu4Knsz08B7855/Wml1JpSaoSMtrxfE9nyoSyyKaUuKaVe3eF5+223SsuVD+WS7StKqWT2/mfJVMCzPsvWvnYL2fKhXLIt5dxfS2Y1a32W3e22m2z5UK75A+B3gV/dJlc+7QbocQbQA0Ryfp/Ivrafa251b6dSagog+70jj+fZJRvAYRH5toj8s4h8zy5ylVO2Yp5nh1ygV5s9RmZFt9/n2SUbaNBuIvJxEYkA7wP+zzyeZ5dsYHO7iciPANeUUt8p4HmvQwcFIDu8tl3b7nbNfu4t5Hn5XFtK2aaAg0qpNwH/AficiDRoItt+7/Fsm4nIrwFJ4LN5PM8u2bRoN6XUryml+rJyfSSP59klm63tJiJh4Nd4vULK53mvQwcFsJ8C8rtdc6t7b2S3UmS/T+fxPFtky27d5rI/v0jGhndbhWXbjf3eU1G5dGkzEfkA8EPA+5RS1qDToa/tKJsu7ZbD54Afy+N5tsimQbsNkLHvf0dERrOvvyQiB/L4e7ZQ+zjMKOcXmbKUV7N/lHXYcWLbNe/k9Qclz+91Lxnvh9yD1k9kfz7B6w9KrrL7AVOlZWu3ZCFz+HMNaKmkbDn3foPXH7buq91skMv2NiPjrXERaN/2WTr0td1k06HdjuXc/0vAX2rUbrvJZnu7bbt/lK1D4H232+b9t3qzUl9kTsJfI6NNfy372i8Cv5j9WYDfz77/XV4/Adx0b/b1VuBrZFwtv5b7TyKzhRom4yr1dl1kI7PKGMz+E18CftgG2d5DZiWxBtwAvpxvu1VSLk3abIiM7fVltrkGatDXdpRNk3b7K+ACGffHvwN6NGq3HWXTod22ff4or3cD3Xe7KaVMKgiDwWDwKjqcARgMBoPBBowCMBgMBo9iFIDBYDB4FKMADAaDwaMYBWAwGAwexSgAg8Fg8ChGARgMBoNH+f8Bc7w+Ls42aXAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# unsigned 8\n",
    "xf = np.linspace(0.0,1.0/(SAMPLE_TOTAL*2),SAMPLE_TOTAL)\n",
    "plot.plot(xf,sample_u8)\n",
    "plot.title(\"Signal u8\")\n",
    "plot.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a7ecc2a6",
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'sample_u16' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "Input \u001b[0;32mIn [12]\u001b[0m, in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m xf \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mlinspace(\u001b[38;5;241m0.0\u001b[39m,\u001b[38;5;241m1.0\u001b[39m\u001b[38;5;241m/\u001b[39m(SAMPLE_TOTAL),SAMPLE_TOTAL)\n\u001b[0;32m----> 2\u001b[0m plot\u001b[38;5;241m.\u001b[39mplot(xf,\u001b[43msample_u16\u001b[49m)\n\u001b[1;32m      3\u001b[0m plot\u001b[38;5;241m.\u001b[39mtitle(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSignal u16\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m      4\u001b[0m plot\u001b[38;5;241m.\u001b[39mshow()\n",
      "\u001b[0;31mNameError\u001b[0m: name 'sample_u16' is not defined"
     ]
    }
   ],
   "source": [
    "xf = np.linspace(0.0,1.0/(SAMPLE_TOTAL),SAMPLE_TOTAL)\n",
    "plot.plot(xf,sample_u16)\n",
    "plot.title(\"Signal u16\")\n",
    "plot.show()\n",
    "\n",
    "xf = np.linspace(0.0,1.0/(SAMPLE_TOTAL),SAMPLE_TOTAL)\n",
    "plot.plot(xf,sample_s16)\n",
    "plot.title(\"SIgnal s16\")\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "4380a177",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "yfft = scipy.fftpack.fft(sample_u8)\n",
    "xf = np.linspace(0.0, 1.0/(2.0*(1.0/SAMPLE_TOTAL)), SAMPLE_TOTAL//2)\n",
    "#print(len(yfft))\n",
    "#print(len(yfft))\n",
    "plot.plot(xf,2.0/SAMPLE_TOTAL * np.abs(yfft[:SAMPLE_TOTAL//2]))\n",
    "plot.title(\"FFT u8\")\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "277dc29e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "yfft = scipy.fftpack.fft(sample_s8)\n",
    "xf = np.linspace(0.0, 1.0/(2.0*(1.0/SAMPLE_TOTAL)), SAMPLE_TOTAL//2)\n",
    "#print(len(yfft))\n",
    "#print(len(yfft))\n",
    "plot.plot(xf,2.0/SAMPLE_TOTAL * np.abs(yfft[:SAMPLE_TOTAL//2]))\n",
    "plot.title(\"FFT s8\")\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "bf8c57a6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "128\n",
      "128\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "yfft = scipy.fftpack.fft(sample_s16)\n",
    "xf = np.linspace(0.0, 1.0/(2.0*(1.0/SAMPLE_TOTAL)), SAMPLE_TOTAL//2)\n",
    "#print(len(yfft))\n",
    "#print(len(yfft))\n",
    "plot.plot(xf,2.0/SAMPLE_TOTAL * np.abs(yfft[:SAMPLE_TOTAL//2]))\n",
    "plot.title(\"FFT s16\")\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "fd3589e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "128\n",
      "128\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "yfft = scipy.fftpack.fft(sample_u16)\n",
    "xf = np.linspace(0.0, 1.0/(2.0*(1.0/SAMPLE_TOTAL)), SAMPLE_TOTAL//2)\n",
    "#print(len(yfft))\n",
    "#print(len(yfft))\n",
    "plot.plot(xf,2.0/SAMPLE_TOTAL * np.abs(yfft[:SAMPLE_TOTAL//2]))\n",
    "plot.title(\"FFT u16\")\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8a347970",
   "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.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}