myawesomepkg 0.1.4__py3-none-any.whl → 0.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- myawesomepkg/TSAPY1/1 (A) Working with Numpy Arrays.py +1146 -0
- myawesomepkg/TSAPY1/1(B)Aggregation (1).py +319 -0
- myawesomepkg/TSAPY1/1(C) Broadcasting .py +328 -0
- myawesomepkg/TSAPY1/10-A_Load_stringr.py +77 -0
- myawesomepkg/TSAPY1/10-B_Forcats.py +70 -0
- myawesomepkg/TSAPY1/2(a) Comparison, Masking And Boolean Logic (1).py +497 -0
- myawesomepkg/TSAPY1/2(b)Fancy Indexing.py +594 -0
- myawesomepkg/TSAPY1/2(c) Sorting Arrays.py +528 -0
- myawesomepkg/TSAPY1/2(d) Structured Array.py +350 -0
- myawesomepkg/TSAPY1/3 (A) Handling Missing Data.py +1013 -0
- myawesomepkg/TSAPY1/4A_Merge_Joins.py +1209 -0
- myawesomepkg/TSAPY1/9A_Dplyr.py +85 -0
- myawesomepkg/TSAPY1/9B_Tidyr.py +71 -0
- myawesomepkg/TSAPY1/Aggregation_Groupin_Pivot_Filter_Vectorice_Time_Series.py +1999 -0
- myawesomepkg/TSAPY1/Combining_Joins.py +1209 -0
- myawesomepkg/TSAPY1/Pract3_C.py +482 -0
- myawesomepkg/TSAPY1/Pract5_Data_Visualization.py +481 -0
- myawesomepkg/TSAPY1/Practical 6.py +860 -0
- myawesomepkg/TSAPY1/Print_R.py +123 -0
- myawesomepkg/TSAPY1/R_Graph.py +32 -0
- myawesomepkg/TSAPY1/Working_Ggplot.py +53 -0
- myawesomepkg/TSAPY1/pract3A-B.py +3212 -0
- {myawesomepkg-0.1.4.dist-info → myawesomepkg-0.1.6.dist-info}/METADATA +1 -1
- myawesomepkg-0.1.6.dist-info/RECORD +47 -0
- myawesomepkg-0.1.4.dist-info/RECORD +0 -25
- {myawesomepkg-0.1.4.dist-info → myawesomepkg-0.1.6.dist-info}/WHEEL +0 -0
- {myawesomepkg-0.1.4.dist-info → myawesomepkg-0.1.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,528 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "code",
|
5
|
+
"execution_count": 1,
|
6
|
+
"id": "6a850c8f",
|
7
|
+
"metadata": {},
|
8
|
+
"outputs": [],
|
9
|
+
"source": [
|
10
|
+
"import numpy as np"
|
11
|
+
]
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"cell_type": "code",
|
15
|
+
"execution_count": 6,
|
16
|
+
"id": "70d23e09",
|
17
|
+
"metadata": {},
|
18
|
+
"outputs": [],
|
19
|
+
"source": [
|
20
|
+
"import numpy as np\n",
|
21
|
+
"def selection_sort(x):\n",
|
22
|
+
" for i in range(len(x)):\n",
|
23
|
+
" swap = i + np.argmin(x[i:])\n",
|
24
|
+
" (x[i], x[swap]) = (x[swap], x[i])\n",
|
25
|
+
" return x"
|
26
|
+
]
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"cell_type": "code",
|
30
|
+
"execution_count": 7,
|
31
|
+
"id": "96d81709",
|
32
|
+
"metadata": {},
|
33
|
+
"outputs": [
|
34
|
+
{
|
35
|
+
"data": {
|
36
|
+
"text/plain": [
|
37
|
+
"array([1, 2, 3, 4, 5])"
|
38
|
+
]
|
39
|
+
},
|
40
|
+
"execution_count": 7,
|
41
|
+
"metadata": {},
|
42
|
+
"output_type": "execute_result"
|
43
|
+
}
|
44
|
+
],
|
45
|
+
"source": [
|
46
|
+
"x = np.array([2, 1, 4, 3, 5])\n",
|
47
|
+
"selection_sort(x)\n"
|
48
|
+
]
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"cell_type": "code",
|
52
|
+
"execution_count": 8,
|
53
|
+
"id": "60299786",
|
54
|
+
"metadata": {},
|
55
|
+
"outputs": [],
|
56
|
+
"source": [
|
57
|
+
"def bogosort(x):\n",
|
58
|
+
" while np.any(x[:-1] > x[1:]):\n",
|
59
|
+
" np.random.shuffle(x)\n",
|
60
|
+
" return x"
|
61
|
+
]
|
62
|
+
},
|
63
|
+
{
|
64
|
+
"cell_type": "code",
|
65
|
+
"execution_count": 9,
|
66
|
+
"id": "23b750a7",
|
67
|
+
"metadata": {},
|
68
|
+
"outputs": [
|
69
|
+
{
|
70
|
+
"data": {
|
71
|
+
"text/plain": [
|
72
|
+
"array([1, 2, 3, 4, 5])"
|
73
|
+
]
|
74
|
+
},
|
75
|
+
"execution_count": 9,
|
76
|
+
"metadata": {},
|
77
|
+
"output_type": "execute_result"
|
78
|
+
}
|
79
|
+
],
|
80
|
+
"source": [
|
81
|
+
"x = np.array([2, 1, 4, 3, 5])\n",
|
82
|
+
"bogosort(x)"
|
83
|
+
]
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"cell_type": "code",
|
87
|
+
"execution_count": 10,
|
88
|
+
"id": "4b82614b",
|
89
|
+
"metadata": {},
|
90
|
+
"outputs": [
|
91
|
+
{
|
92
|
+
"data": {
|
93
|
+
"text/plain": [
|
94
|
+
"array([1, 2, 3, 4, 5])"
|
95
|
+
]
|
96
|
+
},
|
97
|
+
"execution_count": 10,
|
98
|
+
"metadata": {},
|
99
|
+
"output_type": "execute_result"
|
100
|
+
}
|
101
|
+
],
|
102
|
+
"source": [
|
103
|
+
"#Fast Sorting in NumPy: np.sort and np.argsort\n",
|
104
|
+
"x = np.array([2, 1, 4, 3, 5])\n",
|
105
|
+
"np.sort(x)\n"
|
106
|
+
]
|
107
|
+
},
|
108
|
+
{
|
109
|
+
"cell_type": "code",
|
110
|
+
"execution_count": 11,
|
111
|
+
"id": "c32c433b",
|
112
|
+
"metadata": {},
|
113
|
+
"outputs": [
|
114
|
+
{
|
115
|
+
"name": "stdout",
|
116
|
+
"output_type": "stream",
|
117
|
+
"text": [
|
118
|
+
"[1 2 3 4 5]\n"
|
119
|
+
]
|
120
|
+
}
|
121
|
+
],
|
122
|
+
"source": [
|
123
|
+
"x.sort()\n",
|
124
|
+
"print(x)\n"
|
125
|
+
]
|
126
|
+
},
|
127
|
+
{
|
128
|
+
"cell_type": "code",
|
129
|
+
"execution_count": 12,
|
130
|
+
"id": "428fc405",
|
131
|
+
"metadata": {},
|
132
|
+
"outputs": [
|
133
|
+
{
|
134
|
+
"name": "stdout",
|
135
|
+
"output_type": "stream",
|
136
|
+
"text": [
|
137
|
+
"[1 0 3 2 4]\n"
|
138
|
+
]
|
139
|
+
}
|
140
|
+
],
|
141
|
+
"source": [
|
142
|
+
"x = np.array([2, 1, 4, 3, 5])\n",
|
143
|
+
"i = np.argsort(x)\n",
|
144
|
+
"print(i)"
|
145
|
+
]
|
146
|
+
},
|
147
|
+
{
|
148
|
+
"cell_type": "code",
|
149
|
+
"execution_count": 13,
|
150
|
+
"id": "ee25c2c7",
|
151
|
+
"metadata": {},
|
152
|
+
"outputs": [
|
153
|
+
{
|
154
|
+
"data": {
|
155
|
+
"text/plain": [
|
156
|
+
"array([1, 2, 3, 4, 5])"
|
157
|
+
]
|
158
|
+
},
|
159
|
+
"execution_count": 13,
|
160
|
+
"metadata": {},
|
161
|
+
"output_type": "execute_result"
|
162
|
+
}
|
163
|
+
],
|
164
|
+
"source": [
|
165
|
+
"x[i]"
|
166
|
+
]
|
167
|
+
},
|
168
|
+
{
|
169
|
+
"cell_type": "code",
|
170
|
+
"execution_count": 14,
|
171
|
+
"id": "9e3ef0fd",
|
172
|
+
"metadata": {},
|
173
|
+
"outputs": [
|
174
|
+
{
|
175
|
+
"name": "stdout",
|
176
|
+
"output_type": "stream",
|
177
|
+
"text": [
|
178
|
+
"[[6 3 7 4 6 9]\n",
|
179
|
+
" [2 6 7 4 3 7]\n",
|
180
|
+
" [7 2 5 4 1 7]\n",
|
181
|
+
" [5 1 4 0 9 5]]\n"
|
182
|
+
]
|
183
|
+
}
|
184
|
+
],
|
185
|
+
"source": [
|
186
|
+
"rand = np.random.RandomState(42)\n",
|
187
|
+
"X = rand.randint(0, 10, (4, 6))\n",
|
188
|
+
"print(X)"
|
189
|
+
]
|
190
|
+
},
|
191
|
+
{
|
192
|
+
"cell_type": "code",
|
193
|
+
"execution_count": 15,
|
194
|
+
"id": "84bec266",
|
195
|
+
"metadata": {},
|
196
|
+
"outputs": [
|
197
|
+
{
|
198
|
+
"data": {
|
199
|
+
"text/plain": [
|
200
|
+
"array([[2, 1, 4, 0, 1, 5],\n",
|
201
|
+
" [5, 2, 5, 4, 3, 7],\n",
|
202
|
+
" [6, 3, 7, 4, 6, 7],\n",
|
203
|
+
" [7, 6, 7, 4, 9, 9]])"
|
204
|
+
]
|
205
|
+
},
|
206
|
+
"execution_count": 15,
|
207
|
+
"metadata": {},
|
208
|
+
"output_type": "execute_result"
|
209
|
+
}
|
210
|
+
],
|
211
|
+
"source": [
|
212
|
+
"#sort each column of X\n",
|
213
|
+
"np.sort(X, axis=0)"
|
214
|
+
]
|
215
|
+
},
|
216
|
+
{
|
217
|
+
"cell_type": "code",
|
218
|
+
"execution_count": 16,
|
219
|
+
"id": "e4104005",
|
220
|
+
"metadata": {},
|
221
|
+
"outputs": [
|
222
|
+
{
|
223
|
+
"data": {
|
224
|
+
"text/plain": [
|
225
|
+
"array([[3, 4, 6, 6, 7, 9],\n",
|
226
|
+
" [2, 3, 4, 6, 7, 7],\n",
|
227
|
+
" [1, 2, 4, 5, 7, 7],\n",
|
228
|
+
" [0, 1, 4, 5, 5, 9]])"
|
229
|
+
]
|
230
|
+
},
|
231
|
+
"execution_count": 16,
|
232
|
+
"metadata": {},
|
233
|
+
"output_type": "execute_result"
|
234
|
+
}
|
235
|
+
],
|
236
|
+
"source": [
|
237
|
+
"# sort each row of X\n",
|
238
|
+
"np.sort(X, axis=1)"
|
239
|
+
]
|
240
|
+
},
|
241
|
+
{
|
242
|
+
"cell_type": "code",
|
243
|
+
"execution_count": 17,
|
244
|
+
"id": "41eaae40",
|
245
|
+
"metadata": {},
|
246
|
+
"outputs": [
|
247
|
+
{
|
248
|
+
"data": {
|
249
|
+
"text/plain": [
|
250
|
+
"array([2, 1, 3, 4, 6, 5, 7])"
|
251
|
+
]
|
252
|
+
},
|
253
|
+
"execution_count": 17,
|
254
|
+
"metadata": {},
|
255
|
+
"output_type": "execute_result"
|
256
|
+
}
|
257
|
+
],
|
258
|
+
"source": [
|
259
|
+
"#Partial Sorts: Partitioning\n",
|
260
|
+
"x = np.array([7, 2, 3, 1, 6, 5, 4])\n",
|
261
|
+
"np.partition(x, 3)"
|
262
|
+
]
|
263
|
+
},
|
264
|
+
{
|
265
|
+
"cell_type": "code",
|
266
|
+
"execution_count": 18,
|
267
|
+
"id": "f54bfb2b",
|
268
|
+
"metadata": {},
|
269
|
+
"outputs": [
|
270
|
+
{
|
271
|
+
"data": {
|
272
|
+
"text/plain": [
|
273
|
+
"array([[3, 4, 6, 7, 6, 9],\n",
|
274
|
+
" [2, 3, 4, 7, 6, 7],\n",
|
275
|
+
" [1, 2, 4, 5, 7, 7],\n",
|
276
|
+
" [0, 1, 4, 5, 9, 5]])"
|
277
|
+
]
|
278
|
+
},
|
279
|
+
"execution_count": 18,
|
280
|
+
"metadata": {},
|
281
|
+
"output_type": "execute_result"
|
282
|
+
}
|
283
|
+
],
|
284
|
+
"source": [
|
285
|
+
"np.partition(X, 2, axis=1)\n"
|
286
|
+
]
|
287
|
+
},
|
288
|
+
{
|
289
|
+
"cell_type": "code",
|
290
|
+
"execution_count": 19,
|
291
|
+
"id": "8b159c21",
|
292
|
+
"metadata": {},
|
293
|
+
"outputs": [],
|
294
|
+
"source": [
|
295
|
+
"#Example: k-Nearest Neighbors\n",
|
296
|
+
"X = rand.rand(10, 2)"
|
297
|
+
]
|
298
|
+
},
|
299
|
+
{
|
300
|
+
"cell_type": "code",
|
301
|
+
"execution_count": 20,
|
302
|
+
"id": "14c5d229",
|
303
|
+
"metadata": {},
|
304
|
+
"outputs": [
|
305
|
+
{
|
306
|
+
"data": {
|
307
|
+
"image/png": "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\n",
|
308
|
+
"text/plain": [
|
309
|
+
"<Figure size 640x480 with 1 Axes>"
|
310
|
+
]
|
311
|
+
},
|
312
|
+
"metadata": {},
|
313
|
+
"output_type": "display_data"
|
314
|
+
}
|
315
|
+
],
|
316
|
+
"source": [
|
317
|
+
"%matplotlib inline\n",
|
318
|
+
"import matplotlib.pyplot as plt\n",
|
319
|
+
"import seaborn; seaborn.set() # Plot styling\n",
|
320
|
+
"plt.scatter(X[:, 0], X[:, 1], s=100);"
|
321
|
+
]
|
322
|
+
},
|
323
|
+
{
|
324
|
+
"cell_type": "code",
|
325
|
+
"execution_count": 21,
|
326
|
+
"id": "b57ef914",
|
327
|
+
"metadata": {},
|
328
|
+
"outputs": [],
|
329
|
+
"source": [
|
330
|
+
"dist_sq = np.sum((X[:,np.newaxis,:] - X[np.newaxis,:,:]) ** 2, axis=-1)\n"
|
331
|
+
]
|
332
|
+
},
|
333
|
+
{
|
334
|
+
"cell_type": "code",
|
335
|
+
"execution_count": 22,
|
336
|
+
"id": "38c3077b",
|
337
|
+
"metadata": {},
|
338
|
+
"outputs": [
|
339
|
+
{
|
340
|
+
"data": {
|
341
|
+
"text/plain": [
|
342
|
+
"(10, 10, 2)"
|
343
|
+
]
|
344
|
+
},
|
345
|
+
"execution_count": 22,
|
346
|
+
"metadata": {},
|
347
|
+
"output_type": "execute_result"
|
348
|
+
}
|
349
|
+
],
|
350
|
+
"source": [
|
351
|
+
"# for each pair of points, compute differences in their coordinates\n",
|
352
|
+
"differences = X[:, np.newaxis, :] - X[np.newaxis, :, :]\n",
|
353
|
+
"differences.shape"
|
354
|
+
]
|
355
|
+
},
|
356
|
+
{
|
357
|
+
"cell_type": "code",
|
358
|
+
"execution_count": 23,
|
359
|
+
"id": "6584b72b",
|
360
|
+
"metadata": {},
|
361
|
+
"outputs": [
|
362
|
+
{
|
363
|
+
"data": {
|
364
|
+
"text/plain": [
|
365
|
+
"(10, 10, 2)"
|
366
|
+
]
|
367
|
+
},
|
368
|
+
"execution_count": 23,
|
369
|
+
"metadata": {},
|
370
|
+
"output_type": "execute_result"
|
371
|
+
}
|
372
|
+
],
|
373
|
+
"source": [
|
374
|
+
"# square the coordinate differences\n",
|
375
|
+
"sq_differences = differences ** 2\n",
|
376
|
+
"sq_differences.shape"
|
377
|
+
]
|
378
|
+
},
|
379
|
+
{
|
380
|
+
"cell_type": "code",
|
381
|
+
"execution_count": 24,
|
382
|
+
"id": "d1e8cad3",
|
383
|
+
"metadata": {},
|
384
|
+
"outputs": [
|
385
|
+
{
|
386
|
+
"data": {
|
387
|
+
"text/plain": [
|
388
|
+
"(10, 10)"
|
389
|
+
]
|
390
|
+
},
|
391
|
+
"execution_count": 24,
|
392
|
+
"metadata": {},
|
393
|
+
"output_type": "execute_result"
|
394
|
+
}
|
395
|
+
],
|
396
|
+
"source": [
|
397
|
+
"# sum the coordinate differences to get the squared distance\n",
|
398
|
+
"dist_sq = sq_differences.sum(-1)\n",
|
399
|
+
"dist_sq.shape"
|
400
|
+
]
|
401
|
+
},
|
402
|
+
{
|
403
|
+
"cell_type": "code",
|
404
|
+
"execution_count": 25,
|
405
|
+
"id": "2308b5d2",
|
406
|
+
"metadata": {},
|
407
|
+
"outputs": [
|
408
|
+
{
|
409
|
+
"data": {
|
410
|
+
"text/plain": [
|
411
|
+
"array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
|
412
|
+
]
|
413
|
+
},
|
414
|
+
"execution_count": 25,
|
415
|
+
"metadata": {},
|
416
|
+
"output_type": "execute_result"
|
417
|
+
}
|
418
|
+
],
|
419
|
+
"source": [
|
420
|
+
"dist_sq.diagonal()\n"
|
421
|
+
]
|
422
|
+
},
|
423
|
+
{
|
424
|
+
"cell_type": "code",
|
425
|
+
"execution_count": 26,
|
426
|
+
"id": "d41634f0",
|
427
|
+
"metadata": {},
|
428
|
+
"outputs": [
|
429
|
+
{
|
430
|
+
"name": "stdout",
|
431
|
+
"output_type": "stream",
|
432
|
+
"text": [
|
433
|
+
"[[0 3 9 7 1 4 2 5 6 8]\n",
|
434
|
+
" [1 4 7 9 3 6 8 5 0 2]\n",
|
435
|
+
" [2 1 4 6 3 0 8 9 7 5]\n",
|
436
|
+
" [3 9 7 0 1 4 5 8 6 2]\n",
|
437
|
+
" [4 1 8 5 6 7 9 3 0 2]\n",
|
438
|
+
" [5 8 6 4 1 7 9 3 2 0]\n",
|
439
|
+
" [6 8 5 4 1 7 9 3 2 0]\n",
|
440
|
+
" [7 9 3 1 4 0 5 8 6 2]\n",
|
441
|
+
" [8 5 6 4 1 7 9 3 2 0]\n",
|
442
|
+
" [9 7 3 0 1 4 5 8 6 2]]\n"
|
443
|
+
]
|
444
|
+
}
|
445
|
+
],
|
446
|
+
"source": [
|
447
|
+
"nearest = np.argsort(dist_sq, axis=1)\n",
|
448
|
+
"print(nearest)"
|
449
|
+
]
|
450
|
+
},
|
451
|
+
{
|
452
|
+
"cell_type": "code",
|
453
|
+
"execution_count": 27,
|
454
|
+
"id": "1223b5a4",
|
455
|
+
"metadata": {},
|
456
|
+
"outputs": [],
|
457
|
+
"source": [
|
458
|
+
"K = 2\n",
|
459
|
+
"nearest_partition = np.argpartition(dist_sq, K + 1, axis=1)\n"
|
460
|
+
]
|
461
|
+
},
|
462
|
+
{
|
463
|
+
"cell_type": "code",
|
464
|
+
"execution_count": 36,
|
465
|
+
"id": "275ecd62",
|
466
|
+
"metadata": {},
|
467
|
+
"outputs": [
|
468
|
+
{
|
469
|
+
"data": {
|
470
|
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAGgCAYAAACez6weAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1UElEQVR4nO3dd1xV9RvA8c/lwmWKuHGvNEQUUcQ9E/fWMk1za2WampqalZllufOXppYjU9PcsxS13BNH4kzNDTgAkXWBe8/vD7okguPCXcDzfr18BYcznvt0uDz3nO/3OSpFURSEEEIIIWyAnbUDEEIIIYQwkMJECCGEEDZDChMhhBBC2AwpTIQQQghhM6QwEUIIIYTNkMJECCGEEDZDChMhhBBC2AwpTIQQQghhM+ytHYCxFEVBrzddTzg7O5VJ9yeeT/JtWZJvy5OcW5bk2/Iyk3M7OxUqleql1s12hYlerxAREWuSfdnb25EvnyvR0XEkJ+tNsk/xbJJvy5J8W57k3LIk35aX2Zznz++KWv1yhYncyhFCCCGEzchSYTJv3jx69er13HUiIyP58MMPqVmzJjVr1uSTTz4hLi4uK4cVQgghRA6V6cJk6dKlzJkz54XrDRs2jFu3bqWuf/DgQT7//PPMHlYIIYQQOZjRY0zCw8P5+OOPCQ4OpmzZss9d99SpUxw7dozt27dTvnx5ACZNmsSAAQMYOXIkRYoUyVzUQgghhMiRjL5icu7cOfLmzcvmzZvx9fV97ronTpygUKFCqUUJQEBAACqViuDgYOOjFUIIIUSOZvQVk6ZNm9K0adOXWjc8PJyiRYumWabRaPDw8CA0NNTYQ6eytzfNmF212i7Nf4V5Sb4tS/JteZJzy5J8W54lcm7W6cLx8fFoNJp0yx0dHdFqtZnap52dinz5XLMaWhru7s4m3Z94Psm3ZUm+LU9yblmSb8szZ87NWpg4OTmRmJiYbrlWq8XFxSVT+9TrFaKjTTOrR622w93dmejoeHS6rM+BVxSFmPgkEhJ1OGnUuDk7vHRDmdzA1PkWzyf5tjzJuWVJvi0vszl3d3d+6assZi1MPD092bVrV5pliYmJREVFZWngq6kb6eh0+iztMy4hiYNnw9gVfJv7UfGpywt5ONOsRgnqVfHExcnBFKHmCFnNtzCO5NvyJOeWJfm2PHPm3Kw35mrWrElYWBg3btxIXXb06FEAqlevbs5DW0zItYd8OPcQv+z+mwdPFCUAD6Li+WX333w49xAh1x5aKUIhhBAi+zBpYaLT6bh//z4JCQkA+Pr6Ur16dUaMGMFff/3FkSNH+Oyzz+jYsWOOmCoccu0hs9ecITFJB8DTTw4wfJ+YpGP2mjNSnAghhBAvYNLCJDQ0lPr167N9+3YAVCoV3333HSVKlKB3794MHz6chg0bMnHiRFMe1iriEpKYuyEERUlfkDxNARQF5m4IIS4hyRLhCSGEENlSlsaYfP3112m+L1GiBJcuXUqzrECBAi/VITa7OXg2DO2/V0pehgJok3QcDAkj0L+k+QITQgghsjGZ/J0JiqKwK/j2M3+u12c8IEgF7DpxG0WRR3QLIYQQGZHCJBNi4pPSzL550pE1n7J9dhdC9vyQ7mcKcD8qntiEZDNHKIQQQmRPUphkgjbx2bdwkpMSAIXrp7dx+NcJ6HXpx5QkaKUwEUIIITIihUkmOGrUz/xZnW5f4l4o5eGGD2+HsGfxu8RF30+zjpOjWdvHCCGEENmWFCaZ4ObsQCEPZzLq6apWO9Cg50yKVqwLQMLjB/y5dAgPbv6FipSma65OUpgIIYQQGZHCJBNUKhXNapR45jRhlUpFjbZjeKXW6wDokxM5svZT/j62jtdqFJc29UIIIcQzSGGSSfWqeOLooM7wqomBV7238G0xFP5d6+KBn1n27RhiYh5bJEYhhBAiu5HCJJNcnBwY0skHlYrnFiclK79GQKdPUNml3L7ZuXM7zZo14u+/L1smUCGEECIbkcIkC3zKFWD4675oHFIGwz5doBi+L1mxJt/9uAZ3d3cArl27QvPmjdi6dbPlghVCCCGyASlMssinXAFmDKlL92YVKOjhnOZnBT2c6d6sAjOG1OP1tq/x++9/UKxYcQBiY2Pp168nkyZ9SnKyTB8WQgghAFRKNmtDqtPpiYiINcm+7O3tyJfPlcjIWJM8vllRFGITkknQJuPkaI+rk326ga5hYaG88UZHLl68kLqsQYNGzJ+/mEKFCmU5Bltm6nyL55N8W57k3LIk35aX2Zznz++KWv1y10LkiokJqVQq3JwdKOjhjJuzQ4azbzw9i7J58+/UqlUnddn+/XsJDGxIcPBxS4YrhBBC2BwpTKzAwyMfv/66kZYtW6cuu3v3Dh06tOKnnxbLs3SEEELkWlKYWImzszOLFy+nR49eqcsSExMZPXo4H3zwHvHxGT+LRwghhMjJpDCxInt7e2bN+o7hw0elLlOpVKxatYJ27Vpw8+YNK0YnhBBCWJ4UJlamUqkYP/5TvvzyGyBlAK1Go+Gvv04TGNiQPXt2WTlCIYQQwnKkMLERAwe+y/z5i3BwcCAxMZE8efIQGRlJ9+5dmDlzKnq9jDgXQgiR80lhYkM6d36d5ct/xcXFlcePH1OgQAEUReHrryfz9ttv8uhRlLVDFEIIIcxKChMb06TJa6xfv4UCBQrw8OFDChUqhEajYefO3wkMbMS5cyHWDlEIIYQwGylMbFD16v5s2bKTkiVLcf/+fdzc8lCkiCfXr/9D69avsXbtamuHKIQQQpiFFCY26pVXKrBtWxCVKnkTEfGQ2NhY/PyqEx8fz3vvDWT8+NEkJiZaO0whhBDCpKQwsWGenkXZtOk3atWqQ0zMY86dC6F9+04A/PjjAjp3bktYWKiVoxRCCCFMRwoTG/dkl9jExES2bt1Ev36DyJPHnWPHjtCsWUOOHDlk7TCFEEIIk5DCJBt4skusXq9n8eKFvPVWL7y8vLl3L5xOndqwYMFcaWUvhBAi25PCJJt4ukvs/PlzqVWrNp06dUWn0/HJJ+N4551+xMTEWDlSIYQQIvOkMMlGnu4Sm/LAPz2ff/4V9vb2bNiwjtatX+PatStWjlQIIYTIHClMsqEnu8Ru3LiePXuCWLFiDYULF+HixQsEBjbmt9+2WTtMIYQQwmhSmGRTT3aJ3bv3D6ZMmcSaNZuoVasOjx9H07t3d776ahI6nc7aoQohhBAvTQqTbKxJk9fYsGErBQoU4PTpU/Tt+xbffjuXQYPeBWD27Om8+WZnHj58aOVIhRBCiJcjhUk25+dXI7VL7LVrV+nQoTXdu/di/vxFuLi4sHfvHwQGNuT06ZPWDlUIIYR4ISlMcoD/usRWJjw8jA4dWlGsWHG2b99N2bLluH37Fu3atWDFimXWDlUIIYR4LilMcghPz6Js3pzSJTY6+hGvv96BGzeus3Pnn7Ro0QqtVsuIEe8zcuRQEhISrB2uEEIIkSEpTHKQvHk9UrvEarVa+vZ9iy1bNvHTT78wbtwnqFQqli//ifbtW3D79i1rhyuEEEKkI4VJDvN0l9iRI4cyZ85Mhg8fxapV68mXLx+nT5+iWbMG7N37h7XDFUIIIdKQwiQHerpL7FdfTeLjj8fQqFETgoL24evrR0REBN26dWLOnJnSyl4IIYTNkMIkh3q6S+yPPy7g3Xf74+lZlC1bdqReUZk8eSJ9+rxFdPQjK0cshBBCSGGS4z3ZJXbDhnX06PE6yclJzJ49lxkz5qDRaPjtt620aNGEixcvWDtcIYQQuZwUJrnAk11i9+37g86d2/LgwQN69erD5s2/U7x4Ca5evULLlk3YuHGdtcMVQgiRi0lhkks83SW2bdtAbt68QfXq/gQF7aNBg8bExcUxaFBfPvlkHElJSdYOWQghRC4khUku8nSX2DZtAjl3LoSCBQuyevV6hg0bCcCCBXPp2rU94eHhVo5YCCFEbiOFSS6TUZfYI0cOYW9vz4QJE1myZAVubnk4fPgggYENOXbsqLVDFkIIkYtIYZILZdQldvv2rQC0adOOnTv/5NVXvQgLC6Vjx1YsWrRAphQLIYSwCClMcqmnu8T269eT5ct/AlKuqvz22x46dOhMcnIy48aNZsiQQcTFxVk5aiGEEDmdFCa5mKFL7FtvvZ3aJXb27OkoioKbmxsLFy7h88+/Qq1Ws3btalq3bsa1a1etHbYQQogcTAqTXM7e3p6ZM/+XrkusXq9HpVLx7rvvs27dFgoWLMT58yE0b96YnTt/s3LUQgghciopTMQzu8QmJiYCULdufXbv3o+/fwDR0Y/o2bMb33zzJTqdzpphCyGEyIGkMBGpMuoSGxPzGICiRYuxceN2+vUbCMCMGd/w1luvExkZYc2QhRBC5DBSmIg0ntUlFkCj0fD11zP47rsFODs7s2fPLgIDG3H27BkrRy2EECKnkMJEpPOsLrEGb7zRnW3bdlG6dBlu3rxBmzaBrFq1wooRCyGEyCmkMBEZ8vOrwdat6bvEGvj4VCEoaC/NmjUnISGBYcPeZfToEWi1WitGLYQQIruTwkQ8U/ny6bvEHj58MPXnHh75WL78V0aPHodKpeKnnxbRsWMr7t69Y8WohRBCZGdSmIjnerpL7BtvdEztEgtgZ2fH6NHjWLHiV/Lm9SA4+ATNmjXgwIF9VoxaCCFEdiWFiXih53WJNWjWrAVBQXvx8anKgwcP6Nq1Pd999620shdCCGEUKUzES3lel1iDMmXKsnXrTt54ozt6vZ5Jkz6hf/+3U6ccCyGEEC8ihYl4ac/rEmvg4uLC//43n2++mYmDgwNbt26iRYsmXL58yVphCyGEyEakMBFGeVGXWMM6ffsOYNOm3yhatBh//32ZFi2asGnTBmuFLYQQIpuQwkRkysCB77JgweIMu8Qa+PsHEBS0j3r1GhAbG0Pfvr0YM2YMycnJVopaCCGErZPCRGRap05dWbFiTYZdYg0KFy7MmjWbeO+9YQBMmzaNLl3ac//+fWuELIQQwsYZXZjo9XrmzJlDgwYN8PX1pV+/fty4ceOZ69+/f5+RI0dSq1YtatWqxQcffEBYWFiWgha2o3Hjps/tEgspY1MmTpzMkiU/4+bmxv79+wgMbEhw8HErRS2EEMJWGV2YzJs3j1WrVjF58mRWr16NSqVi4MCBacYYPGnEiBGEhoayZMkSlixZQlhYGO+9916WAxe240VdYg06dOjEsWPHqFChAnfv3qF9+5YsXbpIphQLIYRIZVRhkpiYyOLFixk6dCiNGjXCy8uLWbNmER4eTlBQULr1o6OjOX78OAMHDsTb2xtvb28GDRrEuXPniIyMNNmLENb3oi6xBpUqVSIoaC9t23YgKSmJMWNGMGzYu8THx1shaiGEELbGqMLk4sWLxMbGUrt27dRl7u7ueHt7c/x4+svyjo6OuLi4sHHjRmJiYoiJiWHTpk2UKVOGvHnzZj16YVMMXWJr166bYZdYA3d3dxYtWsYnn0zCzs6O1atX0qZNIDduXLd80EIIIWyKvTErG8aGFC1aNM3ywoULExoamm59R0dHvvzySyZNmoS/vz8qlYpChQqxfPly7OwyP+7W3t40Y3bVars0/xVZV6BAftat28TAgX3Zvn0r/fr1ZObMObz9dp90+R4xYiQ1alSnf//ehIT8RWBgIxYsWERgYHNrvoQcQ85vy5OcW5bk2/IskXOjChPD5XaNRpNmuaOjI48ePUq3vqIoXLp0CT8/PwYMGIBOp2PWrFkMGTKEX375BTc3N6MDtrNTkS+fq9HbPY+7u7NJ95fb5cvnyqZNG3jnnXdYtGgRw4e/T2zsI8aNGwekzXeHDm2oXv0UXbt25dixY7z5ZhcmTpzIhAkTslS8iv/I+W15knPLknxbnjlzblRh4uTkBKSMNTF8DaDVanF2Th/ktm3bWLlyJX/88UdqETJ//nyaNGnCunXr6N27t9EB6/UK0dFxRm+XEbXaDnd3Z6Kj49Hp9C/eQBhl6tTZeHjkZ8aMaXz88cfcvHmbefO+IyZGmybfbm752bTpN8aNG83SpYv57LPPOHToCPPn/0DevB7WewHZnJzflic5tyzJt+VlNufu7s4vfZXFqMLEcAvn3r17lCpVKnX5vXv38PLySrd+cHAwZcuWTXNlJG/evJQtW5br168bc+g0kpNNewLqdHqT71Ok+OijTyhQoBDjx49hwYLvefQoktmz52Fnl/bUU6sdmDp1Nn5+/owZM4IdO36jSZMGLFmygsqVfawUfc4g57flSc4tS/JteebMuVHXyr28vHBzc+Po0aOpy6Kjozl//jz+/v7p1i9atCg3btxAq9WmLouPj+f27duULl06C2GL7GTAgHdSu8SuWrWKbt26PPPBft2792TbtiBKlSrN9ev/0Lr1a6xZs8rCEQshhLAWowoTjUZDz549mT59Ort37+bixYuMGDECT09PAgMD0el03L9/n4SEBAA6duwIwPDhw7l48WLq+hqNhs6dO5v8xQjb1alTV1atWoerqyt796Z0iX1W99eqVauxc+efNGnyGvHx8QwZMohx40Y9s1eOEEKInMPo0YXDhg2ja9euTJgwge7du6NWq1m0aBEajYbQ0FDq16/P9u3bgZTZOitXrkRRFHr37k3fvn1xcHDgl19+wd3d3eQvRti2Jk2a8scff6R2iW3Xrvkzpwjnz1+AlSvXMnLkGAAWLVpIp05tCAtLP/tLCCFEzqFSslnbTZ1OT0RErEn2ZW9vR758rkRGxsr9SQsw5Pv48dN06dKBW7duUqSIJ6tWrX/uOJIdO35jyJBBREc/olChwvz440/UqVPPgpFnT3J+W57k3LIk35aX2Zznz+/60oNfZT6msLhXXnm5LrEGLVq0YufOP6lUqTL379+jc+e2zJ//nbSyF0KIHEgKE2EVL9sl1qBcufJs376Lzp1fR6fT8emn4xk8uC8xMTEWjFoIIYS5SWEirCZvXg9Wr95Ay5Zt0Gq19OvXk+XLf3rm+q6urnz//Y989dVU7O3t2bhxPa1bv8bVq39bMGohhBDmJIWJsCpnZ2cWL/6Zt956G71ez8iRQ5k1a9ozb9OoVCoGDHiHDRu2U6SIJxcvXiAwsPFzr7YIIYTIPqQwEVZnb2/PzJn/Y8SIUQBMmfIFH388Br3+2QOratWqza5d+6lduy4xMY/p06cHkydPRKfTWSpsIYQQZiCFibAJKpWKceM+5auvpgLw448LePfd/s/tXVKkSBHWrdvC4MHvATBnzky6devMw4cPLRKzEEII05PCRNiUJ7vEbtiwjh49Xn9ml1gABwcHvvjiaxYsWIyLiwv79v1BYGBDTp0KtmDUQgghTEUKE2FzOnXqyooVa3BxcWXfvud3iX1ym99+20O5cuW5ffsW7dq1eO5AWiGEELZJChNhkxo3bsrGjdteqkusQaVK3uzc+SctW7YhMTGRkSOHMmLE+6mPSBBCCGH7pDARNqtateps3bqTkiVLce3aVdq2bc65cyHP3cbdPS9Ll67g448/w87OjhUrltGuXQtu3bppoaiFEEJkhRQmwqaVL29cl1gAOzs7PvjgQ1atWk/+/Pk5c+YUgYEN+fPPPRaKWgghRGZJYSJsnrFdYg0aN25KUNA+fH39iIiIoFu3TsyePf2505CFEEJYlxQmIlswtkusQcmSpdiyZQdvvfU2iqLw1VeT6NPnLaKjH1kgaiGEEMaSwkRkG8Z2iTVwcnJi1qzvmDnzf2g0Gn7/fRvNmzfmwoXzFopcCCHEy5LCRGQrmekSa9CzZ2+2bNlBiRIluXbtKq1aNWXDhrXmDlkIIYQRpDAR2U5GXWLfeacfWq32hdv6+dUgKGgfDRs2IS4ujsGD+/HJJ2NJSkoyd9hCCCFeghQmItt6skvsxo3reeutN57bJdagQIECrF69ng8++BCABQvm0aVLO8LDw80dshBCiBeQwkRka5npEgugVqv5+OPPWLJkBW5ueThy5BDNmjXg6NEjFohaCCHEs0hhIrK9zHSJNWjTph1BQX/y6qtehIeH0alTa378cf4LB9QKIYQwDylMRI6QmS6xBuXLV+C33/bQsWNnkpOTGT9+DO+9N5DY2FgzRy2EEOJpUpiIHCMzXWIN3NzcWLBgCV98MQW1Ws26db/SunUzrl27auaohRBCPEkKE5GjZLZLLKTM9hk8eAjr12+lUKHCXLhwjubNG7Njx29mjloIIYSBFCYix8lsl1iDOnXqsXv3fmrWrEV09CN69erG119/gU6nM2PUQgghQAoTkUNltkusgadnUTZs2Eb//oMAmDlzGj16dCUi4qE5wxZCiFxPChORY2WlSyyARqNhypTpzJ27EGdnZ/74YzfNmzfmr79OmzFqIYTI3aQwETnak11iVSqVUV1iDV5//U22bdtF6dJluHnzBm3bNmfVqhVmjFoIIXIvKUxErjBgwDvMn7/I6C6xBj4+VQgK2kvz5i1JSEhg2LB3GTVquFEFjhBCiBeTwkTkGpntEmvg4ZGPZctW8dFHH6NSqVi2bDEdOrTkzp3bZoxaCGELFEXhcVwiD6LieRyXKE0YzUilZLPs6nR6IiJM0/jK3t6OfPlciYyMJTn55cYdiMyzlXyfPn2S7t278PDhQ8qVK8/q1RsoXbqMUfvYsyeId97pT1RUFAUKFGDhwqU0aNDIPAFnkq3kOzeRnFuWJfIdl5DEwbNh7Aq+zf2o+NTlhTycaVajBPWqeOLi5GCWY9uizOY8f35X1OqXuxYiV0xErvN0l9g2bQJfukusQdOmgQQF7cPHpyoPHz7k9dc78L//zZZPUULkICHXHvLh3EP8svtvHjxRlAA8iIrnl91/8+HcQ4Rck9l6piSFiciVnuwSe+9euFFdYg1Kly7Dtm1BdOvWA71ezxdffEq/fr14/DjaTFELISwl5NpDZq85Q2JSSv+ipz9yGL5PTNIxe80ZKU5MSAoTkWtlpUusgbOzM3PmfM/UqbNwcHBg27bNtGzZlMuXL5kpaiGEucUlJDF3QwiKkr4geZoCKArM3RBCXEKSJcLL8aQwEblaVrvEQsqU5D59+rN58+8ULVqMv/++TIsWTdi8eYOZohZCmNPBs2Fok3QvLEoMFECbpONgSJg5w8o1pDARuZ6hS2zPnr0z1SXWoEaNmuzatZ/69RsSGxvDgAG9mThxAsnJyWaKXAhhaoqisCs445l2Z/cs5NKhVRn+TAXsOnFbxpmZgBQmQpDSJXbGjDlpusSOHz/6pbvEGhQqVIhff93I++8PB2DevDm8/noH7t27Z+qQhRBmEBOflGb2jUFCTCQ3Tm/n7yOrOPXbt+l+rgD3o+KJTZAPIlklhYkQ/3q6S+yiRQuN7hILKUXOp59OYtGin3F1dePgwf0EBjbkxIljZopcCGEq2sSMH9bp5JYPVCoA7lz4g6vBmzNcL0ErhUlWSWEixFOy2iXWoF27DuzY8QcVKlQkNPQuHTq0YsmSH+VSrxA2zFGjfubP6nX/JvXrC3sXE3rlaLp1nBztzRJXbiKFiRAZyGqXWIOKFV9lx44/aNu2A0lJSXz00UiGDXuX+Pj0l4qFENbn5uxAIQ9nVBn8LJ9nRV6t/3bq98GbpxB59yKQMsakkIczrk5SmGSVFCZCPEPjxk3ZuHEbBQoU4PTpU7Rr15wbN64bvR83tzwsWrSMzz6bjJ2dHatXr6RNm0CuX//H9EELIbJEpVLRrEaJZ87IqRDQmQIlq6Z+f3D1eB4/vIkCNPMvgUqVUUkjjCGFiRDPYYousZDyZjdkyDDWrt1MwYIFCQn5i+bNG7F7904zRC2EyIp6VTxxdFBneNUEoFaXiTg4uad8o+jZv/xDdPER1PPxtFiMOZkUJkK8gCm6xBrUr9+QXbv2U6OGP1FRUfTo8TrTpk0xevaPEMJ8XJwcGNLJB5WKDIsTOzs7GvScgeFPqF6XxN5lw9DGGz8WTaQnhYkQL8EUXWINihUrzsaNv9G7d38URWHatCn07PkGUVGRJo5aCJFZPuUKMPx1XzQOKYNhny5QXN0L4dd6ROr3cbEx1KtXk7i4OAtGmTNJYSLESzJ0iW3Vqm2mu8QaODo6Mm3aLObM+R4nJyd27dpJYGAjzp79y8RRCyEyy6dcAWYMqUv3ZhUo6OGc5mcFPZwZ9X4/unR9M3XZgwf3adAgQJoqZpFKyWZzF3U6PRERsSbZlzyi3LJySr6Tk5MZM2ZEalEybtwnDB8+KtOD3s6ePUPfvj25efMGTk5OTJ/+LW+80T3LceaUfGcnknPLsmS+FUUhNiGZBG0yTo72uDrZo1Kp0Ov11K7tl2Ywu7d3ZfbsOYidXc777J/ZnOfP74pa/XL5yHlZE8LMTNUl1qBKFV+CgvbStGkzEhISeP/9wYwd+yGJiYmmDFsIkQUqlQo3ZwcKejjj5uyQ+kHEzs6O337bjaOjY+q658+fo1OnNtYKNduTwkSITDBVl1iDfPnys2LFGj788CMAFi/+gY4dWxMaeteUYQshzKBAgYIsXboyzbLDhw/St29PK0WUvUlhIkQWmKpLLIBareajjz5m+fLV5M3rwYkTx3jttQYcOnTAxFELIUzttdcCGTjwnTTLtm3bzKhRH1gpouxLChMhsujpLrGdOmWuS6xB8+at2LnzT7y9fXjw4D5durTj+++/k1b2Qti4L7+cird35TTLli1bwldfTbJSRNmTFCZCmMCTXWLPnMl8l1iDsmXLsX37Lrp27YZOp+Ozz8YzaFBfYmJiTBe0EMLkNm/egYuLC0DqOJTZs6ezYMFca4aVrUhhIoSJGLrElipVOktdYg1cXFyYO3chU6ZMw97enk2b1tOyZROuXPnbhFELIUzJ3d2dX3/diEqlQlEU1OqUZ+d88sk41qxZZeXosgcpTIQwofLlK7B1606TdImFlE9c/fsPZuPG3yhSxJPLly/RvHljtm3bYsKohRCmFBBQO3Ugu06XjEajAeD99weza5c8huJFpDARwsRM2SXWICCgFrt27adOnXrExDymb9+3mDx5ojRyEsJGjRkznho1agKQmJiIRuOIoij07NmN48ePWjk62yaFiRBmYMousQZFihRh7drNvPPO+wDMmTOTbt068+DBA1OELIQwsQ0btuHunvKwP0XR4+DggF6vo2PH1ly8eMHK0dkuKUyEMBNnZ2cWLVpGz5690ev1jBw5lFmzpmVpdo2DgwOTJn3FwoVLcHFxZf/+PwkMbMjJkydMFrcQwjScnJzYuHE7KpUdSUlJFCxYCLVaTVJSEs2bN+bOnVvWDtEmSWEihBkZusSOHDkayHqXWIOOHbvw++97KFeuPHfu3KZ9+5YsW7ZEphQLYWN8fKoyadKXAISG3qV+/YaoVCoSEuJp2LAOkZERVo7Q9khhIoSZqVQqxo79xGRdYg28vCqxc+eftGrVlsTEREaN+oARI94nISHBRJELIUxh8OAhNGrUBIC9e/+gf//BADx+HE39+gHyROKnSGEihIWYskusgbt7XpYsWc6ECROxs7Nj5cqfadeuBTdv3jBR1EIIU/jll3UUKFAQgKVLf2TMmHEA3L9/j4YNa8lA9idIYSKEBZm6SyykPERs2LCRrF69gfz583PmzCkCAxuyZ89uE0UthMgqe3t7tm7diVqtJjk5mWXLlqZOKb558wbNmjXM8i3enMLowkSv1zNnzhwaNGiAr68v/fr148aNZ386S0pKYsaMGTRo0IBq1arRs2dPLlyQ0cgi9zJ1l1iDRo2asGvXfqpV8yMyMpLXX+/Il19+KW92QtiI8uVfYfr0bwEICwvlwoVz9OnTH4Dz50Po3LmtNcOzGUYXJvPmzWPVqlVMnjyZ1atXo1KpGDhw4DMf0T5x4kTWrl3LF198wbp16/Dw8GDgwIE8fpy1S9hCZGcZdYkNCTmb5f2WKFGSzZt30KtXHxRFYcKECfTq1Z1Hj6KyHrQQIsveeutt2rbtAMD27VupWtWXdu06AnDo0AF5IjFGFiaJiYksXryYoUOH0qhRI7y8vJg1axbh4eEEBQWlW//WrVusXbuWKVOm0LhxY8qXL89XX32FRqMhJCTzrbqFyAlM3SXWwMnJiRkz5vDtt3NxdHTkt9+20bx5Y86fP2eCqIUQWfXjjz9RrFhxAEaPHsH48Z9Sv35DQJ5IDEYWJhcvXiQ2NpbatWunLnN3d8fb25vjx4+nW//AgQO4u7vTsGHDNOvv2bOHOnXqZCFsIXKGJ7vEPn4cbZIusQa9evXmwIEDlChRkn/+uUbr1q+xfv0ak+xbCJF5dnZ2bN++CwcHB3Q6HW3aBLJq1Xp8fKoAKU8knjJlspWjtB57Y1YOCwsDoGjRommWFy5cmNDQ0HTrX79+nZIlS7Jz504WLlxIeHg43t7ejB07lvLly2c+aHvTjNlVq+3S/FeYl+Q7YwUK5Gfduk0MGtSXbdu20q9fT2bOnMPbb/fJ0n7Vajv8/f3Zt+8g/fr14c8/9/DOO/05dSqYSZO+xMHBwTQvQKSSc9yysnO+S5UqycKFi+nbtxcREQ/p0aMre/bsJyDAj+vX/2HWrKkULJifd99939qhpmGRnCtG2Lhxo1KxYkVFp9OlWT569Gild+/e6dYfP368UqNGDaVdu3bK/v37lTNnzijvvPOOEhAQoDx48MCYQ6fS6/WZ2k4IW5eUlKQMGDBAARRAmTx5ssnO9+TkZGX8+PGp+65fv75y9+5dk+xbCJF5ffv2Tf29nD59uhIfH694enqmLvv555+tHaLFGXXFxMnJCUgZa2L4GkCr1eLs7JxufQcHBx4/fsysWbNSr5DMmjWLRo0asWHDBgYMGGB0IaXXK0RHm6YZjVpth7u7M9HR8eh0MnPB3CTfL/bNN7PImzc/M2ZMZcKECdy4cYspU6ZhZ2f8p5On8z1q1Hi8vavy7ruDOHDgAH5+fixZ8jO1a9c1wyvJneQct6yckO8ZM/7H3r37uHbtKqNHj6ZGjdocOnQCP7/KPHr0iLfffhsHB2eaN29p7VCBzOfc3d35pa+yGFWYGG7h3Lt3j1KlSqUuv3fvHl5eXunW9/T0xN7ePs1tGycnJ0qWLMnt27eNOXQaycmmPQF1Or3J9ymeTfL9fB99NIECBQry8ccf8cMPC7h//z7/+98CHB0dM7W/J/PdvHlrdu78g759e3Lx4gXat2/N559/yYAB76BSqUz5MnI1OcctK7vne9u2IKpV80arTaB9+9acO3eFvXuPUKdOdeLj43nrrW5s3vw7NWvWsnaoqcyZc6M+hnl5eeHm5sbRo/89sjk6Oprz58/j7++fbn1/f3+Sk5M5e/a/aZAJCQncunWL0qVLZyFsIXI2c3SJNShfvgK//baHTp26kJyczMcff8S77w4gNjbWJPsXQhinQIGC/PzzKiClTX3Hjq0pVqw4QUH7UgfIduzYmsuXL1k5UsswqjDRaDT07NmT6dOns3v3bi5evMiIESPw9PQkMDAQnU7H/fv3U5/V4e/vT926dfnoo484ceIEV65cYcyYMajVajp06GCWFyRETtGpU1dWrlyLq6ubybrEGri6ujJ//mK++GIKarWa9evX0Lr1a1y7dsUk+xdCGKdx46apA11PnjzBlCmTqVjxVTZv/j31icSBgQ25e/eOlSM1P6NvXA8bNoyuXbsyYcIEunfvjlqtZtGiRWg0GkJDQ6lfvz7bt29PXf9///sfAQEBvP/++3Tt2pWYmBiWLVtG/vz5TfpChMiJGjVqwoYNWylYsKBJu8RCysMFBw8ewoYN2yhUqDAXLpwnMLAxO3b8ZpL9CyGM8/nnX1G5sg8As2ZN49ChA9SoUZPly39FpVIRHx9Pw4a10jyRWFEUHscl8iAqnsdxiTniCeMqJZu9Cp1OT0SEaS4529vbkS+fK5GRsdn6/mR2IfnOvKtX/6Zbt87cvHmDwoWLpOl58CzG5DssLJQBA3pz7NgRAEaOHM3o0eNRq9Umew25gZzjlpUT8x0TE0OVKhWIjY3F2dmFs2cv4+7uzrp1q3n33YEAFCpUmL37gzl1NZpdwbe5HxWfun0hD2ea1ShBvSqeuDiZviVAZnOeP7/rSw9+zX6Tv4XIhczVJdbA07Mo69dvZeDAdwCYOXMa3bt3ISLiocmOIYR4MTc3N379deO/V0jiaNs2EIAuXboxefI3QMoTif1r+bMi6AIPnihKAB5ExfPL7r/5cO4hQq5lz99fKUyEyCbM2SUWUsaQffnlVObN+wFnZ2f+/HMPgYGNOHPmlMmOIYR4sZo1azFmzDgALl68wPjxowEYNOhdevUbCkDco3D2rxiF7qmHdBpugSQm6Zi95ky2LE6kMBEiG8mb14PVqzfQqlVbtFot/fr1ZPnyn0x6jK5du7F9+27KlCnLrVs3adu2OStX/mzSYwghnu/DD8cSEJDy+Jcff1zArl07iUtIIq5Qc0pXTelp8vj+dY6u/SzD7RVAUWDuhhDiEpIsFbZJSGEiRDbj7OzMokXL6NmzN3q9npEjhzJr1jSTDnqrXNmHoKC9NG/eEq1Wy/DhQ/jwww/QarUmO4YQ4vnWr99K3rx5AejT5y227z+HNklHlWbv4Fkh5XlzD2+f5cSWbzLcXgG0SToOhoRZKmSTkMJEiGzI3t6eGTPmMHJkyiXeKVO+YPz40ej1phsAmDevB8uWrWLs2AmoVCp+/nkJ7du34M6dzDdHFEK8PI1Gw8aNv2FnZ0diopYx77+R+jvu3+4jCpRImcET9vdh9q8YleE+VMCuE7ez1WwdKUyEyKZUKhVjx37CV19NRaVSsWjRQt55p59Jr2rY2dkxcuQYfvllLR4eHpw6dZJmzRqwb9+fJjuGEOLZKlf2YdKkKQDERIZxZsccABJiIvAoVgnDn/FH4Vd4eOdCuu0V4H5UPLEJyZYKOcukMBEimxsw4B0WLFhsli6xBk2bBhIUtI8qVXx5+PAhb7zRkTlzZmWrT2FCZFeDBr1LvfpNALhz4U8O/DKG3T8O5OqxNcB/V0lPb5/5zH0kaKUwEUJYUMeOXTLoEnvPpMcoXboMW7fupHv3nuj1eiZP/oy+fXvy+HG0SY8jhEgrLi6Olq3aoFKl/MmOCr2MoteRv7g31duMwrfFBwDEP77PzbO7MtyHk6NRj8azKilMhMghnu4S26pVIP/8849Jj+Hs7Mzs2XOZPv1bNBoN27dvoXnzxly6dNGkxxFCwPXr/zBx4gSqVfPik49HoSj/XR3ROLtT+/XJFHu1PiUrN8HFwxOAc38uSjPWTEVK0zVXJylMhBBWUK1adbZs2UGpUqW5du0qdevWJSTk7Is3NIJKpeLtt/uyefPvFCtWnKtXr9CiRRM2bVpv0uMIkRvp9Xr++GM3vXp1o1atasybN4eoqChKlSpDj/6jqdxkEACJ8dEEb/k6dTu/1imDX3VJ8VzYtzR1uQI08y+RrZ4eLoWJEDmMoUts5co+hIWF0aZNC5N2iTWoXt2foKB91K/fkLi4WAYO7MOnn44nOTn73MsWwlY8fhzNjz/Op149f7p168SOHb+hKApNmrzG8uWrOXr0FF99NhavgHYUrVgPgPCrx7j+1w4A8nm+kjpL5/qpbSQmxKFSgaODmno+nlZ7XZkhhYkQOZCnZ1G2bv2dhg0bmqVLrEGhQoX49deNvP/+cADmz/+Orl3bc++eace3CJFTXbp0kY8+GknVql6MHz+Gq1evkCePO4MGvcvhw8GsXr2B5s1boVarcXFyYEgnH2q0+RDnPIUACNm9gMcPbwHg13YUqFQoio7Tv81EBQzp7GOWZ+aYkxQmQuRQefN68Pvvv9OmzX9dYn/+eanJj2Nvb8+nn05i0aKfcXV149ChAzRr1oDjx4+a/FhC5ATJycls376VLl3a0aBBAEuW/EhsbAyvvurFN9/M5MyZC0ye/A3ly1dIt61PuQKM7OZHk17TUNnZg6Ln0Orx6JMTcXLxoGTl1wC4988JOtV0xadsAUu/vCyTwkSIHMzZ2ZklS5bTq1cf9Ho9H344jJkzp5plmm+7dh3YufNPKlZ8lbCwUDp2bM3ixT/IlGIh/vXw4UPmzJlJQIAvffr0YP/+vdjZ2dG6dTvWrdvCvn1H6dt3AG5ueZ67H59yBZg3th0fjJ8BQFLCY46u/wKApp1HoNE4AjD18w/M+4LMRAoTIXI4e3t7pk//NrVL7NdfTzZ5l1iDChUq8vvve2jfvhNJSUmMHfsh778/mLi4OJMfS4js4syZUwwb9i7VqnkxefJEbt++RYECBfjggw85ceIsS5euoEGDRkYNUHVxcmD8sL707NkHSGlN7+14kqlD6vPxxynPz7lw4Ty7du00x0syK5WSzT7O6HR6IiJiTbIve3s78uVzJTIyluRk079Ji7Qk35aVUb5//HE+H3/8EYqi0LFjZ/73vwU4Ojqa/NiKovD999/xxRefotPpqFy5CosX/0zZsuVMfixbIue4ZdlyvhMTE9myZSM//riA4ODjqct9ff3o338QHTt2wcnJySTHqlu3Bleu/I1KpWLHjj+pVs0PH59XuHfvHgULFuL8+asmOQ5kPuf587uiVr/ctRC5YiJELmKJLrGQMqX4vfeGsmbNJgoWLMi5c2dp3rwxu3btMPmxhLAlYWGhfP31ZPz8vHn33QEEBx/HwcGBLl3eYPv2Xezc+SdvvvmWyYoSgG3bgnByckJRFLp0aUtcXBzffvs9AA8e3Od//5tlsmNZghQmQuQyGXeJvW+WY9Wv35Bdu/ZTo0ZNHj2K4q233mDq1K/MchtJCGtRFIUjRw4xcGAfqlevzMyZU7l//x6enkUZO3YCp05d4Pvvf8TfP8As/UTy5cvPzz+vBuDx48d07Nia114LpHLllOnDU6dOITEx0eTHNRcpTITIhZ7uEtu2bSA3blw3y7GKFSvOxo3b6dt3AIqiMH361/Ts+QaRkRFmOZ4QlhIXF8fPPy+lSZN6tG/fkk2b1pOcnEydOvX48cefCA4OYeTIMRQuXNjssTRq1IQhQ1IGu54+fZIvv/ycH39cBqjQahMYNSr7DISVMSY2en8yJ5J8W9bL5PvatSu88UYnbt68QeHCRVi1aj0+PlXMFtPq1SsZPXo4CQkJlCpVhiVLllOlSlWzHc/S5By3LGvl+/r1f1iy5EdWrvyZR4+igJQZcF27dqNfv0GpVyqs4bXXGnD27BkANmzYxvz5c9mxYzt2dnacOXOJIkWKZGn/lhhjIoWJvIlYjOTbsl4232Fhobz5ZhfOnw8hTx53li9fTZ069cwW19mzf9G3b09u3ryOk5MT06bNplu3HmY7niXJOW5Zlsy3Xq/nzz/3sHjxQoKCdqROgy9dugz9+g2ie/e38PDIZ9YYXkZcXByVK79CbGwMzs7OHDx4nICAaiQnJ1OrVh22bMnaOC8Z/CqEMDtPz6Js2rSdOnXqmbVLrEGVKlUJCvqT114LJCEhgaFD3+Gjj0Zmq3vgIveIjn7EwoXzqFu3Bm++2ZmdO39HURSaNm3GihW/cuTIKd59932bKEoAXFxcWLt2EyqVivj4eN58sysDB74HwNGjhzl1KtjKEb6YFCZCCPLm9WDVqvW0amXeLrEG+fLlZ8WKNYwaNRaAJUt+pEOHVty9e8dsxxTCGBcvXmDMmBFUrerFhAljuXbtamqr+CNHTrJq1XoCA1uiVqutHWo6NWrUZOzYCQBcvnyR2NgY8uRJado2aFBfa4b2UqQwEUIAKffIFy1aZpEusQB2dnaMGTOeFSt+JW9eD4KDj9OsWUMOHtxvluMJ8SLJycls27aFLl3a0bBhLZYuXURcXCxeXpWYOnUWZ85cZPLkbyhX7hVrh/pCI0aMplatOgAsW7aYN998C4AbN66zZs0qa4b2QjLGRO4HW4zk27Iym29FUfjmm8nMnDkNgP79B/Hll1OxszPf55h//rlGv369OHfuLGq1mk8+mcS7776frR7VDnKOW5qp8v3gwQNWrPiJpUsXcefObSClcG7Vqi39+w+iXr0G2e5chJQmbz4+rxAVFYVGo6FQocLcuXMbd3d3Ll++manfaRljIoSwOJVKxdixn/DVV1NRqVQsWrSQwYP7odVqzXbMsmXLsW1bEK+//iY6nY6JEz9m4MA+Zmn+JoTB6dMnGTr0Hfz8KvHll59z585tChQowPDhozhx4ixLliynfv2G2bIoAdBoNGzevAM7OzsSExNJTk4CIDo6mi+//NzK0T2bXDGRTzcWI/m2LFPke+PGdQwZMoikpCQaNGjMTz+teOEDxrJCURSWLPmRTz4ZS1JSEhUrvsqSJSuoUKGi2Y5pSnKOW1Zm8q3VatmyZSOLFi0gOPhE6vJq1fzo338wHTp0NmlXVluwePEPjB37IQD58xcgIuIh9vb2XL58Ezc3N6P2JVdMhBBW9WSX2P37/zRrl1hIuVrTr99ANm7cjqdnUS5fvkSLFk3YunWz2Y4pcoe7d+/w9ddf4OfnzXvvDSQ4+AQajYauXbvx++972LlzL9269chxRQlAv34DadasBQAREQ9RqVQkJyfz/vuDrBxZxuSKiXy6sRjJt2WZMt+nT5+kR4+uPHjwgLJly/HrrxspXbqMaQJ9hvDwcAYN6sPhwwcBeP/94Ywf/yn29vZmPW5WyDluWS/Kt6FV/KJFC9m2bTM6nQ6AokWL0adPf956q7dFurLaAr1eT9WqFbl37x4qlQpFUVCpVBw5csqoh2vKFRMhhE2oVq06W7fupFSp0vzzzzXatAkkJOSsWY9ZpEgR1q7dzDvvvA/Ad9/Nplu3Tjx48MCsxxXZX2xsLMuWLaFx47p06NCKzZs3oNPpqFu3PosWLePEibOMGDE61xQlkDKYd9u2XajV6tSZdoqiMGDA21aOLD0pTIQQL6VcuVfYunUn3t4+3LsXTocOrTh06IBZj+ng4MCkSV/xww9LcXFxZf/+vTRr1oCTJ0+8eGOR6/zzzzU+/XQ81apVYtSoD7hw4RwuLi68/XY//vzzMBs3bqddu444ODhYO1SrKF26DHPmfJ9m2dmzf/Hnn3usFFHGpDARQry0p7vEduvWiW3btpj9uB06dGbHjj8oX/4V7t69Q/v2LVm2bInZeqyI7EOv17NrVxBvvfU6tWv7MX/+dzx6FEWZMmWZNOkrTp++wPTps/H2rmztUG3C66+/SadOXdMsGzr0HSDlCsrjuEQeRMXzOC7Rar9fMsZE7gdbjOTbssyZ74SEBAYP7sdvv23Fzs6OadNm06tXH5MeIyOPH0czdOi7bN+eUgx1796Tr7+egbOzs9mP/TLkHLecR4+i+PXXX1iy5AeuXLmSuvy11wLp338QTZsGmrX3Tnam1+upWbMqt27dTF3Wa9BY7Es04X5UfOqyQh7ONKtRgnpVPHFxSrnKJA/xy4AUJtmX5NuyzJ3v5ORkPvpoZGrr+rFjJzBixGiz93xQFIX//W82X331+b8D+qqxePHPlCpV2qzHfRlyjpvfhQvnWbz4B9asWUVcXMrfAnf3vHTv3pO+fftni66stiA8PJwaNSqnPqPKTq2h1dCVqOz+G1yuAhTA0UHNkE4++JQrIINfhRC2y97enunTv2XkyNEAfP31ZMaPH41eb94/yCqVimHDRvDrrxspUKAAf/11msDAhuzZs8usxxXWk5yczNatm+nUqQ2NGtXmp59SWsVXquTN/PnzCQm5xBdfTJGixAhFihThky/npn6v1yVydvfCNOsYrlokJumYveYMIdceWiQ2KUyEEJlmjS6xBg0bNiYoaB9+ftWJjIyke/cuzJw51eyFkbCc+/fvM3v2dPz9q9CvX08OHtyPWq2mbdsObNiwjQMHjjJ48GCjm4QJiEtI4vQDT0pXbZG67ObZnSTGRadbVwEUBeZuCCE2IcnssUlhIoTIsgED3mHBgsU4ODiwadN6evR43SLt5EuUKMmmTb/Tq1dfFEXh668n07t3dx49ijL7sYX5nDoVzPvvD8bPrxJffTWJu3fvULBgQUaMSGkVv3jxz9n2+TW24uDZMLRJOqo0excXj2Kpy4+sz7hVvQJok3Qc/CvU7LFJYSKEMAlLd4k1cHJyYsaMb5k9ey6Ojo7s2PEbzZs35vz5c2Y/tjAdrVbLmjWraNmyCS1aNOHXX38hMTGR6tVr8N13Czh16gLjxn1K8eIlrB1qtqcoCruCb6d+X7/HVFCllAPR967y8O6FDLdTATuP3zL7bB0pTIQQJtOoURM2bNhKwYIFOXPmFG3bBnLjxnWLHLtHj15s3bqTkiVL8c8/12jVqinr1v1qkWOLzLt79w5TpkzCz68SQ4YM4uTJYDQaDa+//ia//76H33//gzfe6I6jo6O1Q80xYuKT0sy+0Ti5UavzZ6nfH13zaYbbKcC9yHgex5n3do4UJkIIk7JGl1gDX18/goL20rhxU+Lj43n33QGMHz86deaBsA2KonDo0AH69etFjRo+zJo1nQcPHlCsWHHGj/+UU6cuMHfuQqpX97d2qDmSNlGXblmh0r4ULF0NAL3u+YVHvDbZHGGlksJECGFy5cq9wrZtQRbtEmuQP38BfvllHSNGjALgxx8X0LlzW8LCzH9vXDxfbGwsP/20mMaN69CxY2u2bt2ETqejXr0GLFr0MydOnGX48FEUKlTI2qHmaI4adYbLa3eZSLFKTahYp/tzt3d2NO/zqqQwEUKYRZEinlbpEgugVqsZN+5Tli1bRZ487hw7doRmzRpy5MghixxfpHXt2lU++WQcvr5ejB49nAsXzqe2it+79wgbNmyjXbsONv2AxpzEzdmBQh7OZDR0uHqrD6hYp1uG26mAwvmcyeNi3pb+UpgIIcwmb14PVq/eQKtWbdFqtfTv3yu1IZsltGzZmqCgP6lUyZt798Lp3LktCxfOk1b2FqDX69m9eyfdu3ehdm0/FiyYS3T0I8qWLccXX0zhzJmLTJ8+m0qVvK0daq6jUqloVqMExv4WKEDzmiXNPhtKChMhhFk5OTmxaNEyevXqg16v58MPhzFz5lSLFQflyr3C9u276dy5K8nJyUyYMJZ33+1PbKxpOkiLtB49imL+/O+oXduP7t27snt3UMofwmbN+eWXtRw+fJLBg4eQN6+HtUPN1epV8cTRQZ3hVZOMqFQpHWDrVS1q1rhAChMhhAX81yV2DJDSJXbcuFEWa4bm6urK998v4ssvv8He3p7169fSuvVrXLt25cUbi5dy/vw5Ro0ajq+vF59+Op7r1//B3T0v77zzPocPn2TlyrW89lpzeX6NjXBxcmBIJx9UKl5YnKj+/Teksw+uTuZ/MrM8K0eea2Exkm/LstV8L1q0gPHjx6AoCh06dOa77xZYdCrokSOHGTDgbe7dCydPHne++24BrVq1Mcm+bTXn5pKcnMxvv21l0aKFaQY3V6rkTf/+g+nS5Q1cXV3Ndvzclm9zCLn2kLkbQtAm6VKfjWOQ5lk5nX3wKWuZZ+VIYSIntcVIvi3LlvO9ceM6hgwZRFJSEg0aNOann1bg5pbHYscPDw9jwIDeHD16GIDhw0fx0Ucfo1ZnPFvhZdlyzk3p/v37LF++lJ9+Wszdu3eAlAHHrVu3o3//QdSpU88iXVlzS77NLS4hiYMhYew6cTv904X9S1DPpyguTikDk6UwyYAUJtmX5NuybD3fe/f+QZ8+bxEbG4Ovrx8rV6616DTRpKQkJk78mB9+mA+kNIebP38xBQoUyPQ+bT3nWXXy5AkWLVrIpk3rU3vDFCxYiLff7sPbb/ejWLHiFo0np+fb0hRFITYhmQRtMk6O9rg62acrMKUwyYAUJtmX5NuyskO+z5w5RffuXXjw4AFly5bj1183Urp0GYvGsG7dr3z44TDi4uIoWbIUixf/jK+vX6b2lR1ybqyEhAQ2bVrP4sULOXXqZOryGjX86ddvEO3bd7JaV9acmG9bZ4nCREYhCSGsxtfXz2pdYg26dHmD7dt3U7ZsOW7duknbts1ZsWKZRWOwRXfu3OarryZRvbo3Q4e+w6lTJ9FoNLzxRnd27PiD337bw+uvvymt4oXJSWEihLAqa3aJNfD2rszOnX/SokUrtFotI0a8z4cfDiMhIcGicViboigcPLifvn174u9fhdmzU1rFFy9ego8//ozTpy/y3XcL8POrYe1QRQ4mhYkQwuqs2SXWIG9eD3766RfGjfsElUrFzz8vpX37Fty+fcuicVhDTEwMS5cuolGj2nTq1IZt2zaj0+moX78hixcv5/jxv/jggw8pWLCgtUMVuYAUJkIIm2DoEtu6dTurdIkFsLOzY8SI0fzyyzry5cvH6dOnaNasAXv3/mHROCzl2rUrfPLJWKpVq8SYMSO4ePECLi6u9OnTn337jrJ+/Vbatm0vreKFRUlhIoSwGdbuEmvQtGkzgoL2UbVqNSIiIujWrRNz5szMEa3s9Xo9u3bt4M03O1O7dnUWLJhHdPQjypUrz+TJX3PmzAWmTp2Fl1cla4cqcikpTIQQNkWtVlu1S6xBqVKl2bJlB92790Sv1zN58kT69HmLx4+jLRqHqURFRfL9999Rq1Y1evR4nT17dqFSqQgMbMGqVes4dCiYQYPek1bxwupkurBMNbMYybdl5YR8v6hLrKIoxMQnoU3U4ahR4+bsYPLGXoqisHz5T4wbN4rExETKl3+FJUtWZHhFwRZzfu5cCIsX/8C6dauJi4sDUm6b9ejRiz59+lO2bDkrR5h5tpjvnM4S04XlxqEQwmb17z+YAgUKMmTIIDZtWk9ERAQ//bQCO3snDp4NY1dwBp0qa5SgXhVPXEz0TA+VSkWvXn2oXNmH/v3f5urVK7Rs2ZTZs7+jY8cuJjmGqSUlJaW2ij98+GDq8kqVKjNgQEqreBcXFytGKMSzyRUTqbYtRvJtWTkp3092ia3wqg8VAz9Cpcnz/Gd7dPLBp1zmu7hm5MGDBwwe3I/9+/8EYPDgIXz66SQcHFKKIGvn/N69e6mt4kND7wIpt8batGnPgAGDqVWrjkVaxVuKtfOdG9lkgzW9Xs+cOXNo0KABvr6+9OvXjxs3brzUtlu2bOHVV1/l9u3bxh5WCJGLNWrUhI0bt+GRrwB/Xwrhz+VjiHsUztOfqgzfJybpmL3mDCHXHpo0joIFC7J69XqGDRsJwIIFc+natT3h4eEmPY4xFEUhOPg47747AD+/Snz99WRCQ+9SsGAhRo4cw8mT5/jxx5+oXbtujipKRM5ldGEyb948Vq1axeTJk1m9ejUqlYqBAwemPjfhWe7cucPnn3+e6UCFELlbhVd9COj6Fc7uhYmNCuXgqrFE3/8nw3UVQFFg7oYQ4hKSTBqHvb09EyZMZMmSlAcPHj58kMDAhhw7dtSkx3mRhIQEVq1aQYsWjWnV6jXWrfuVpKQkatSoybx5P3Dq1HnGjp1A0aLFLBqXEFllVGGSmJjI4sWLGTp0KI0aNcLLy4tZs2YRHh5OUFDQM7fT6/WMHj2aypUrZzlgIUTudPBsGJo8Raj35tfkKVgGbWwkh1Z/zMNbIRmurwDaJB0HQ8LMEk+bNu3YseMPKlZ8lbCwUDp2bMUPP8w3+5Ti27dv8eWXn+PnV4lhw97l9OlTODo60q1bD3bu/JPffttN167dpFW8yLaMKkwuXrxIbGwstWvXTl3m7u6Ot7c3x48ff+Z28+fPJykpicGDB2c+UiFErqUoCruCU24BO7nlp263L8lfvDLJiXEcWfcZJ7fN5NH96+mmFKuAXSdum61YqFChIr///gft23ciOTmZjz4axdtvv506++Xp1/A4LpEHUfE8jks0KiZFUThwYB99+ryFv38Vvv12Bg8fPqR48RJMmDCRU6cu8L//zadateqmfHlCWIVRs3LCwlI+eRQtWjTN8sKFCxMaGprhNn/99ReLFy9m7dq1JrsPa29vmvYrhoE4LzsgR2SN5NuyclK+H8clppl94+DoSq0un3Fy+wzCrxzl7qV93L20DwA7tQMOznlwdiuIa77iuBcuy1E/O2rXqmmWDqYeHu4sWbKMefO+Y+LECSxfvpzTp8/w008rKFu2HLEJSRz4K5Sg47e4F/nfayicz5nAmiWpX7Uors+YQRQTE8Ovv/7CDz8s4NKli6nLGzZsxIABg2nZsnWu7sqak87x7MISOTfqjI6PT/ml0mg0aZY7Ojry6NGjdOvHxcUxatQoRo0aRZkyZUxSmNjZqciXzzXL+3mSu7uzSfcnnk/ybVk5Id+JSvpBm2p7DZXq9yb8StqxHXpdEtqYCLQxEUSFXebOhT9ov3cxkPJelS9fPooXL07FihWpVq0adevWJSAgIN37mrEmTBhLgwZ1eOONNwgJOUvTpg2YOOU7Dt70QJuoS7f+/ch4Vu68zLo/rzKudwDVvQqn/uzy5cvMnTuXpUuXEh2d0tDN1dWV3r17M2TIELy9vbMUa06TE87x7MacOTeqMHFycgJSxpoYvgbQarU4O6cPcvLkyZQpU4Y333wzi2H+R69XiI5Of5k0M9RqO9zdnYmOjkenk6lm5ib5tqyclG9tfMaD6yPunAMgX7FK1Or8CRF3LxJ59zKPH1wnNioMbWwESdpYFH1KYaDVagkLCyMsLIzg4GB++eWX1H05ODiQN68Hnp5FKV++HJUrV6FmzQBq1qz10j0//PwCOHnyJJ07d+HYsaOMeK8XFWt3o0LtN1DZqdOsa7iRo03U8fmPh/ng9arc+yeYH35YwJ49u1LXK1/+FQYMGET37m/h7p4XgMhI07RMyO5y0jmeXWQ25+7uzuZpsGa4hXPv3j1KlSqVuvzevXt4eXmlW3/dunVoNBr8/PwA0OlS3hzatm1L+/btmTRpkjGHT2Xq+eo6nV7mwFuQ5NuyckK+nRzUFPJw5kFUfJopwoaBrwVL+mCvcaFwmeoULvPfOAsVUNDDmYm9q3Hy5AmOHz/GuXNnuXbtCqGhoTx69IikpJSiJykpiQcP7vPgwX1CQv5i06aNqfuxt7fH3d2dIkU8KVu2HN7ePtSoUZOaNWvh7u6eJtbixYvzy6+bCezcj2snt3H5yGoiw/7Gr9UINM550r02bfxjbp/bTftF7xAblXK73NAqvl+/QTRu3BQ7u5Q39Oz+/9FccsI5nt2YM+dGFSZeXl64ublx9OjR1MIkOjqa8+fP07Nnz3Tr79y5M833Z86cYfTo0SxcuJDy5ctnIWwhRG6iUqloVqMEv+z+O3WZoig8uHUWgAIlq2S4nQI08y+Bs7Mz9eo1oF69BunWSUxM5PTpkxw7dpSQkL+4du0qoaF3iIqKQqvVApCcnExERAQRERFcuHCe7du3pm6vVqvJk8edwoWLULZsWapXr4bWoRiv1HoT98Kv8FfQ99y/fpIDK0dRo91H5C2c0gI++v4//HNqO3cu7kWfnFIcubq50/vtPvTp058yZcqaJHdCZDdGFSYajYaePXsyffp08ufPT/HixZk2bRqenp4EBgai0+mIiIggT548ODk5Ubp06TTbGwbPFitWjAIFTNuRUQiRs9Wr4sn6fddITNKhALFRd9HGRmCntidf0VfTra9SgcZeTT0fz+fuV6PREBBQm4CA2ul+lpycTEjIWY4dO8LZs2e4cuVv7t69Q2RkBAkJCUDKleCoqEiioiK5fPkiO3b89kQQdqjtNaj0auIehbN/+YcULutPcmIsEXfOp66Wp2AZyvq1wbdWcz4b2lgaoYlczejh3MOGDSM5OZkJEyaQkJBAzZo1WbRoERqNhtu3b/Paa68xZcoUOnfubI54hRC5lIuTA0M6+TB7zRlQ/ruN41H0VdQOaXt2qP79N6SzT5aemWNvb0+1an5Uq+aX7md6vZ6LFy9y9Ohh/vrrFFeu/M2dO7eJiHj433RhRY8uKeGJrRTu/ZPSWkFlp8bzldqU9WtDvmKVUKlURMYpxCYk4+Zsmuf8CJEdybNy5DkLFiP5tqycmu+Qaw+ZuyGEwxu/4e6lA1Ss8yYV66QMsE/zrJzOPviUteyVWXt7OxIVFf2+2EHco1Aibl8gKvwKsRG3iYu+R/zjB6DoKVI+AJ+mg3HOkz6+qe/UoaCHzDJ5GTn1HLdl8nRhIYR4ik+5Akx/rw7VFl4A0o4vKejhTDP/EtTzKYqLk3Xe3pw0auzs7HDLVxy3fMUpVaWZcds7ytuyyN3kN0AIke3cvnmNR5EPcXJyYvHkviiocXK0x9XJ3urjM9xdNRTO58z9yPh0Dxl8HsMMIlcrFVRC2ApplyeEyHYOHEjp8lqzZm0KeLhR0MMZN2cHqxcl8O9U35oljSpK4L8ZRLbwGoSwJilMhBDZzsGD+wGoV6++lSPJWP2qRXF0UPOyJYZKlTIu5kUziITIDaQwEUJkK3q9nkOHDIVJQytHkzHXf2cQqVS8sDgx1QwiIXIKKUyEENnKhQvniYiIwMXFBT8/232ark+5Agx/3ReNQ0or+qcLFMP3Ggc1w9/wtfgMIiFslYyyEkJkKwcPpowvCQioneUH75mbT7kCzBhSl4MhYew6cTvNE5JtYQaRELZIfhuEENnKwYMHAKhf3zZv4zzNxcmBQP+SNKtRgtiEZBK0yTYzg0gIWySFiRAi29Dr9Rw+nFKYZPTcG1umUqlwc3aQrq5CvICMMRFCZBvnzp0lKioKN7c8+PqmbxMvhMj+pDARQmQbBw6kzMapXbsO9vZywVeInEgKEyFEtmEY+Gqr04SFEFknhYkQIltITk7m8OFDANSvn73GlwghXp4UJkKIbOHs2TM8fhxN3rwe+PhUtXY4QggzkcJECJEtGMaX1KlTF7VabeVohBDmIoWJECJb+G98idzGESInk8JECGHzkpKSOHLkMCADX4XI6aQwEULYvNOnTxIXF0v+/Pnx9q5s7XCEEGYkhYkQwuYdPGgYX1IfOzt52xIiJ5PfcCGEzTMMfJVpwkLkfFKYCCFsmlar5fjxI4CMLxEiN5DCRAhh006dCiY+Pp6CBQvx6qte1g5HCGFmUpgIIWzagQP/TRNWqVRWjkYIYW5SmAghbJph4Kv0LxEid5DCRAhhsxISEjhx4hgghYkQuYUUJkIIm3XixDG0Wi2FCxfhlVcqWDscIYQFSGEihLBZhvEl9evL+BIhcgspTIQQNuu/8SUyTViI3EIKEyGETYqLi+PkyROAjC8RIjeRwkQIYZOOHz9KUlISxYoVp2zZctYORwhhIVKYCCFs0pPThGV8iRC5hxQmQgib9N/AVxlfIkRuIoWJEMLmxMTEcPr0SUDGlwiR20hhIoSwOceOHSY5OZlSpUpTqlRpa4cjhLAgKUyEEDbnwAFpQy9EbiWFiRDC5hw8+N+D+4QQuYsUJkIImxId/YgzZ04DMvBViNxIChMhhE05cuQQer2esmXLUaxYcWuHI4SwMClMhBA2xTC+RK6WCJE7SWEihLApTzZWE0LkPlKYCCFsRmRkBCEhfwFSmAiRW0lhIoSwGYcPH0JRFCpUqEiRIp7WDkcIYQVSmAghbIZMExZCSGEihLAZMvBVCCGFiRDCJjx48IALF84BUKdOfStHI4SwFilMhBA24fDhAwB4eVWiUKFCVo5GCGEtUpgIIWzCgQMyvkQIIYWJEMJG/Ne/RMaXCJGbSWEihLC68PBwLl++hEqlom7detYORwhhRVKYCCGszjC+xNvbh/z5C1g5GiGENUlhIoSwuv+mCcv4EiFyOylMhBBW919jNRlfIkRuJ4WJEMKqwsJCuXr1CnZ2dtSpU9fa4QghrEwKEyGEVRmmCVep4kvevB7WDUYIYXVSmAghrOq/acIyvkQIIYWJEMLKDFdMZOCrEAKkMBFCWNHt27e4ceM6arWa2rVlfIkQQgoTIYQVGa6WVKvmh5tbHitHI4SwBUYXJnq9njlz5tCgQQN8fX3p168fN27ceOb6f//9N4MGDaJWrVrUqVOHYcOGcffu3SwFLYTIGaQNvRDiaUYXJvPmzWPVqlVMnjyZ1atXo1KpGDhwIImJienWjYyMpG/fvri6urJ8+XJ++OEHIiMjGTBgAFqt1iQvQAiRPSmKIgNfhRDpGFWYJCYmsnjxYoYOHUqjRo3w8vJi1qxZhIeHExQUlG79Xbt2ER8fz9dff02FChXw8fFh2rRpXL16lZMnT5rsRQghsp8bN65z+/YtHBwcCAiobe1whBA2wqjC5OLFi8TGxlK79n9vIu7u7nh7e3P8+PF069epU4e5c+fi6OiY7mePHj3KRLhCiJzCcLXEz68Grq6uVo5GCGEr7I1ZOSwsDICiRYumWV64cGFCQ0PTrV+iRAlKlCiRZtmCBQtwdHSkZs2axsaayt7eNGN21Wq7NP8V5iX5tixbz/ehQymFSYMGDU32O21ttp7znEbybXmWyLlRhUl8fDwAGo0mzXJHR8eXugKybNkyVq5cybhx4yhQIHNPELWzU5Evn2k/Xbm7O5t0f+L5JN+WZYv5fnJ8SevWLUz+O21ttpjznEzybXnmzLlRhYmTkxOQMtbE8DWAVqvF2fnZQSqKwrfffsv333/P4MGD6dOnT+aiBfR6hejouExv/yS12g53d2eio+PR6fQm2ad4Nsm3Zdlyvq9c+Zu7d++i0Wjw8qpKZGSstUMyCVvOeU4k+ba8zObc3d35pa+yGFWYGG7h3Lt3j1KlSqUuv3fvHl5eXhluk5SUxLhx49i6dStjxoyhf//+xhwyQ8nJpj0BdTq9yfcpnk3ybVm2mO+9e/cC4O8fgIODo83Fl1W2mPOcTPJteebMuVE3iby8vHBzc+Po0aOpy6Kjozl//jz+/v4ZbjNmzBh+//13ZsyYYZKiRAiR/R08mNJYrW7d+laORAhha4y6YqLRaOjZsyfTp08nf/78FC9enGnTpuHp6UlgYCA6nY6IiAjy5MmDk5MT69evZ/v27YwZM4aAgADu37+fui/DOkKI3CVlfMkBAOrXl8ZqQoi0jB5WO2zYMLp27cqECRPo3r07arWaRYsWodFoCA0NpX79+mzfvh2ArVu3AjB16lTq16+f5p9hHSFE7nL58iXu37+Hk5MTNWpkfnaeECJnMuqKCYBarWb06NGMHj063c9KlCjBpUuXUr9fvHhx1qITQuQ4hufj1KxZK8MeR0KI3E0mfwshLOrQoZTbONKGXgiRESlMhBAWo9frUxuryYP7hBAZkcJECGExFy9e4OHDh7i4uODnV93a4QghbJAUJkIIizFMEw4IqJ2ug7QQQoAUJkIICzpwIOU2jkwTFkI8ixQmQgiL0Ov1HD4sA1+FEM8nhYkQwiLOnTtLVFQUbm558PX1s3Y4QggbJYWJEMIiDLdxateug7290S2UhBC5hBQmQgiLMAx8lWnCQojnkcJECGF2ycnJHD58CID69WV8iRDi2aQwEUKY3dmzZ3j8OJq8eT3w8alq7XCEEDZMChMhhNkZxpfUqVMXtVpt5WiEELZMChMhhNn9N75EbuMIIZ5PChMhhFklJSVx5MhhQAa+CiFeTAoTIYRZnT59kri4WPLnz4+3d2VrhyOEsHFSmAghzOrgQcP4kvrY2clbjhDi+eRdQghhVv89H0fGlwghXkwKEyGE2Wi1Wo4fPwJA3bpSmAghXkwKEyGE2Zw6FUx8fDwFCxbEy6uStcMRQmQDUpgIIczmwIGUacJ16zZApVJZORohRHYghYkQwmwMA1+lf4kQ4mVJYSKEMIuEhAROnDgGQP360r9ECPFypDARQphFcPBxtFothQsX4ZVXKlg7HCFENmFv7QCEeBFFUYiJT0KbqMNRo8bN2UHGK2QDhvEl9evL+BIhxMuTwkTYrLiEJA6eDWNX8G3uR8WnLi/k4UyzGiWoV8UTFycHK0Yonue/8SVyG0cI8fKkMBE2KeTaQ+ZuCEGbpOPpz9oPouL5ZfffrN93jSGdfPApV8AqMYpni4uLIzj4OCADX4UQxpExJsLmhFx7yOw1Z0hM0gGgPPVzw/eJSTpmrzlDyLWHFo1PvNjx40dJSkqiWLHilC1bztrhCCGyESlMhE2JS0hi7oYQFCV9QfI0BVAUmLshhLiEJEuEJ17Sk9OEZXyJEMIYUpgIm3LwbBjaJN0LixIDBdAm6TgYEmbOsISR/hv4KuNLhBDGkcJE2AxFUdgVfDvDn+mSk0iIicrwZypg14nbKMrLljPCnGJiYjh9+iQg40uEEMaTwa/CZsTEJ6XOvknSxhIVepmIuxeJDL3IgxtnUtfTuOajjG8rylRri8bJBQW4HxVPbEIybs4yS8fajh07THJyMqVKlaZUqdLWDkcIkc1IYSKsTlEU/vnnGn/sPcBfu7YSefcijx/c5FmjTBJjI7l8aCWXD61Ebe9I/pI+lKz8GnHxtaQwsQEHDkgbeiFE5klhIiwuISGB4OCTHDt2hOPHj3LixFEePHiQbj2XvEXIV8yLfMW8yF/Miwc3/+LKsfUkxj9KXUeXrOX+P8Hc/ycYn61TKVmyFA0bNqZ37/5Uq+ZnyZcl/nXwYMr4EilMhBCZoVKy2Y15nU5PRESsSfZlb29HvnyuREbGkpysN8k+RXphYaEcP36M4OBjnDx5nODgYJKS0s6i0Wg0+Pr6Ea8piVP+V/Ao9ipOrvky3J8+OZErwVu4fnJzmiLlaRqNhgoVKtKyZWt69+6Pp2dRk74uW2eN8zs6+hEVK5ZGr9dz+vQFihUrbpHj2gp5T7EsybflZTbn+fO7ola/3LBWuWIiTCo5OZkLF85x7NjRf6+GHOPmzRvp1itUqDABAbWpWbMWNWsGULVqNRwdHQk6fotfdv/93GPY2WuoWKsLFWt1ISEmgkuHVvLg2hHi42LSrJeYmMi5cyGcOxfCjBlTyZPHHV/fanTs2IU33uiOk5OTSV+7gCNHDqHX6ylbtlyuK0qEEKYhhYnIkqioSIKDj3P8+NF/r4qcIC4u7RUtOzs7vL19qFWrFk2aNKJy5WoUK1Yyw/4W9ap4sn7fNRJfcsqwc578BLT5gBlDVvPX6eNMnfoVR44cIjk5Od26jx9Hc+DAPg4c2MeoUR9QpEgRateux1tvvU3Dho2xs5NJalllGF8i04SFEJklhYl4aYqicPXqlX+LkJR/ly5dTLeeu3te/P1r/ns1pBbVq9fAzS3PS10CdHFyYEgnH2avOQMvaLKm+vffkM4+uDg5ULt2Xdav34per+fnn5eycOE8/v77ctptVKrUacXh4eFs2rSeTZvWo1arKVu2HE2bBtKnT395Gm4mPdlYTQghMkPGmMj9yWeKi4vj9OmTqUXIiRPHiIiISLde+fKvpBYhNWvWomLFVzO8+mBMvp9+Vs6TJ6nhe0cHNUM6++BT9tnPyomMjGD69K9Zv34tDx+mHWCr0TiiUoFWq023nbOzM5UqVaZt2w707NkbDw+P58Zriyx9fkdGRuDlVRZFUTh79jJFinia/Zi2Rt5TLEvybXmWGGMihYmc1Knu3Lmd5mpISMjZdLdEnJycqFatemoR4u8fQMGCBV9q/8bmOy4hiYMhYew6kcHThf1LUM+nKC5OL3/R79y5EKZM+YK9e/ekKUZUKhWFCxfG0dGJ8PCwDAuVfPny4+8fQNeu3WjXrgP29rZ/sdHS5/f27Vvp06cHr7xSgUOHgs1+PFsk7ymWJfm2PBn8KswmKSmJkJC/UseGHD9+lLt376Rbz9Oz6L+DVAOoWbMWPj5V0Wg0FonRxcmBQP+SNKtRgtiEZBK0yTg52uPqZJ+p569UruzD8uWr0ev1bNy4jrlzvyUk5CyKohAeHg6kFF5169anYMGCnDlzmlu3bqLX64mMjCAo6HeCgn7nnXdUFC9eggYNGtOnTz/8/GqY+qVnS/9NE5bxJUKIzJMrJrmk2n748CEnThxLvRpy+vRJ4uPj06yjVqvx8amaWoTUrFmL4sVLmOwhbLaY77i4OL79dia//PIzYWGhaX5WsGAhOnd+nWrV/NiyZSPHjh1NdzsIwMEhZVpyixat6dvXdqYlWzrfjRrV4cKFc/zww1I6dOhs9uPZIls8x3Myybflya2cDEhh8mJ6vZ7Lly+luS1z9eqVdOt5eHikGRtSrVp1XF1dzRaXref7n3+u8dVXk9i1awexsU+eYyoqVnyVd955j/btO7Nq1Qq2bNlISMhfT62Xws0tD1Wr+tKpU1e6dethtWnJlsz3gwcP8PYuB8C5c1cpVKiQWY9nq2z9HM9pJN+WJ4VJBqQwSS8m5jEnTwanFiHBwSd49Cgq3XoVK76aphApX/4Vi06RzU753rVrJzNnTuXkyWD0el3qcgcHB+rUqcdHH31MzZq1uHHjOkuXLiIoaAfXrl3JcJpy4cJFqF27Lt2796RJk9cslnNL5nvLlk30798LL69K7Nt31KzHsmXZ6RzPCSTflidjTEQ6iqJw69bN1Hbux48f4/z5EPT6tCeIi4sL1av7p96WqVGjJvny5bdS1NlPs2bNadasOYmJiSxYMJefflrMzZs3SEpKYt++P9m370/y5vWgbdv2jB37CZ999gUAhw4dYMWKZRw8uJ/Q0LsoisK9e+Fs3ryBzZs3oFarKV26DE2bNqNPnwFUrPiqlV+paUgbeiGEqcgVExuvtrVaLWfPnkkdoHr8+FHCw8PSrVeyZKk0Y0O8vX1sbuZIdsj384SFhfLNN1+yZcsmoqPTtsIvXboMffsOYNCg91LznpiYyMaNa1m79ldOnQrm0aP07fOdnJzx9vamTZv29OzZ26TFoyXz3aBBAJcuXWTx4uW0bdverMeyZdn9HM9uJN+WJ7dyMpDTC5N79+6lGaR65sypdNNXHRwcqFrVF3//WgQEpEzZLVq0mJUifnm2mO/MOnLkENOmTeHw4YNpbt+o1WqqV/dn1KiPaNKkWZptHj58wLJlS9i+fSsXL15Aq01It18Pj3zUqOHP66+/Sfv2nbJUXFoq3/fu3cPH5xVUKhUXLlwjf/5n95XJ6XLSOZ4dSL4tTwqTDOSkwkSn03Hx4oU0g1SvX/8n3XoFCxbE3/+/sSG+vtVwdna2eLxZZe18m8Pzusy6urrSvHkrxo//lNKly6Tb9vz58yxd+gN//rmHmzdvpLsdp1KpKF68OPXrN6J3737UqFHTqNgsle+NG9cxaFBfKleuwh9/HDTbcbKDnHiO2zLJt+VJYZIBcxQmERExRD3Wok3U4ahR4+bsYLIpsk+Kjn5EcPCJNINUY2Iep1lHpVLh5eWd+nC7mjVrUbZsObPEY2k5/U3keV1mixYtRo8ePRk6dCQuLi7pttXr9ezc+TurV6/k6NHDPHhwP906Dg4OvPJKBZo3b0XfvgNe+JA8S+V71KjhLFu2mMGD3+OLL74223Gyg5x+jtsaybflSWGSAVMWJtpkHSf/fsimfVe5F/lUZ9EaJahXxRMXJ4dM7VtRFP7551qaBmYXL57n6XS7ueWhRg3/1KshNWr44+6eN0uvy1blpjeR53WZ9fGpyrBhI57b6yMmJobVq1eyceO650xLdqNKFV86duxKt27d0xU8lsp3nTrVuXr1CsuWraJly9ZmO052kJvOcVsg+bY8KUwyYKrCxPAslsSklKmgz3wWSycffMq9+J55fHw8Z86cfuK5Mkd58CB9M67SpcukFiEBAbXx8qqEWq3O8uvJDnLjm4her2fTpg18992s1C6zBo6OTjRu3JRx4z7F29v7ufu5desGS5cuJijod65evUJSUlK6dQoWLETt2nXp0aMXTZs2Q6OxN3u+w8JCqVo15dlIly5dJ29eD7McJ7vIjee4NUm+LU8KkwyYojAJufaQ2WvOoLzM02tVMPx133TFSVhYKMePH+XYsZQi5K+/zqT7Y6HRaPD19UvzXJkiRYpkKfbsLLe/ibyoy2zXrm8wcuRHL/XAwH37DzB77nxOnjhMXPQDnj6T7ezsKFOmLK1bt6JHj7d55RUvE76SlCuCMfFJrF27mo9GDcHXtxpBQftMeozsKLef45Ym+bY8KUwykNXCJC4hiQ/nHiIxSffcosRABdiroX9jd87+FZx6a+bWrZvp1i1UqPC/z5VJGR9StWo1HB0dMx1rTiNvIv95fpfZigwa9B49e/bOsBnb009e1umTCb10kNsX9hIVepkkbUy6bZycnPDy8qZ163b07t0309OS4xKSOHg2jF3BKQ9WPLPzO26F7MKnXlfGjf88S7c/cwI5xy1L8m15UphkIKuFSdDxW/yy++/nrpMY/5jI0Esp/+5eJCr0MrrktFN27ezs8Pb2SdM7pFSp0jlikKq5yJtIxl7UZXbMmPEEBNQGXu5qX2JcNDfO7iTsyhESom4/Y1qyB9Wr+/P6693o0KHLS01LfrogUoA9iwYT9yicgI4TKFzO36jbnzmRnOOWJfm2PClMMpCVwkRRFMYuOML9qPh0P7t2cgt3LuwlPvo+ifHpG2GpHRx5tUIFKlSoSMWKr1KhQkXc3Nyws1Njb2+Pvb39v1+nfK9Wq1Gr7f/92g61OmVZyveGr9VPLVdbtEW8pcmbyPMZuswuW7aEGzeup/lZ3rx5admqHTEFmmPn6P7SV/scNWoGN8/PqhU/sWfPbm7cuJ6m+IGUAblFixajfv2GvP1239Qi6EkZFUTx0ffZ/eNAVCo7WgxZgb3G+bm3P3MDOcctS/JteVKYZCArhcnjuEQ+mHMg3XK9Xsf22V2yGppJqFSqZxY2/y1/2eLH7qmiyR57e3Xq1/9tr35qX88+Rtp92WNnl/ExDNs9uR+NxoH8+fMQF5eEoqiec6z08djZ2eWqq1HP6zLrkteT0r4tKVu9LXZ2z7/SoQLeal6RptVLACmDcffs2cXKlT9z9Ohh7t+/l24bBwcHypd/hcDAlvTrN4B8BTwzvP1569wezuyYg4dnRer3mJrmmBoHNTOG1M11t3XkD6VlSb4tTwqTDGSlMHkQFc+Y+Ycz/NmZnXOJCr2Mg7MbDo4pV0L0eh2KokPR61EUHeWLumGnguTkZHS6ZHQ6PcnJyej1OpKTk/9drkenM3yt+/drXerXOp0uwwe9iRczXTH27MLuyeWGfT15jCf39fRVsmcd43lXyTLa/ul4zpw5xfz5czl67CjKk1c7VHZ4eFagYu1uFC5bPcOcqYBC+ZyZMqh2hoVdXFwcq1f/wsaNazl79gwxMenHpzg6ueBaoAxFK9ajZOXXsNekPC359O/fcvv8H5Sv2YVKDXql2657swoE+pfM3P/sbEr+UFqW5NvypDDJgDmumLysOR80wM05658AFUVBr9enFin/FSy6J4oZQ2Gje6rI+W95Rts/XSjp9foMttc/td1/66XdXvfUvjKOMWVZ8lPxpC/a9Ho9er2OpKSkZ77ep7ufCiOpVKiwS/mvnR0qlR0qOzXurs5oNA44OKT802g0aDSOODqm/HNycsbJyQm9Xs/Nmze4e/c2UVFRGf7/sHd0JW+RV3gUdpXkxBhqdf6MQmX80oYBFPRw5uvBGRdEOZX8obQsybflydOFTczN2YFCHs48iIp/qXv0BoY3WVcn06RLpVKlfqrWaDQm2Wd28DIntKFgy6joyqhIyqjoelaRlHZ5RkVfRoXhi7d/XtH2vGNkHMuzi9SXoigo6EAB5YkUR2hN05QQIFkby8ObZ1K/z1e8UvowgPtR8cQmJJukmBdC5B5G/6XV6/V89913rFmzhujoaGrUqMFnn31G6dKlM1w/MjKSyZMns29fSo+Dli1bMm7cuAzbcpubSqWiWY0SL5yV8zQFaOZfIld98rMWOzs77OzscHCQP2ZPio7V8sG3+1KuYCgpV54UvQ5F0RP36B7JSVr0yQkkJ8ajS4wnKSkBXeo/LQGvepCUqCUhIZ6EhAQSEhLQarUkJmr//W8iSUlJJCcnkZSUnKZISkxKTil4FIX0c4FU2Ds4PTPuBK0UJkII4xhdmMybN49Vq1YxZcoUihQpwrRp0xg4cCBbt27N8NP/sGHD0Gq1LF26lOjoaD7++GM+//xzvvnmG5O8AGPVq+LJ+n3XXr6PiQo09mrq+XiaPTYhniWPi4bC+d1Sr/Y92SvY0eXZjzB40RiTF3n2gPFktPGxOLs+//EJTo656qKsEMIEjJqbmpiYyOLFixk6dCiNGjXCy8uLWbNmER4eTlBQULr1T506xbFjx5gyZQqVK1emTp06TJo0iU2bNhEeHm6yF2EMFycHhnTyQaVKedN+HtW//4Z09sl1swuEbTFc7cvMgLDmNUtm+mqf4fbn01vb2dk/tyhRkfLMKVPd/hRC5B5GFSYXL14kNjaW2rX/63Pg7u6Ot7c3x48fT7f+iRMnKFSoEOXLl09dFhAQgEqlIjg4OAthZ41PuQIMf90XjYM6tfh4kuF7jYOa4W/44lM29/VjELanXhVPHP89Z1+GSpXSx6Re1aKZPmZmCyK5/SmEyCyjPs6EhYUBULRo2je6woULExoamm798PDwdOtqNBo8PDwyXP9l2dtnvQlZtYqF+N/Ihhy/dJ9Ne596unA+Z5rXLEn9qsVwkU98JmMYkf2yI7NFWu5ujgztWpWZq06lDG59zrqGgntcnwDcXR3R6TI/Y6GhX7FM3f5sWK2YSX5XsxM5xy1L8m15lsi5UX914+NT/ng/PZbE0dGRR4/Sd0uNj4/PcNyJo6NjmkfBG8POTkW+fK6Z2jYj7Qu7065+OR7HJRGvTcbZ0Z48Lg7ySc+M3N2drR1CttXI35U8bk5M+ekY2sSMn4wNKVdKxvUJoPqrhbN8zHzA+D4BfP7jEUDheQ0GUm6RqhjfN4ASRT2yfOzsSs5xy5J8W545c25UYeLklDL6PjExMfVrAK1Wi7Nz+iCdnJxITExMt1yr1WZ6Vo5erxAdHZepbZ+mVtvh7u7M48cJ6HR6NCrQJSYRlZj+kfIi6wz5jo6Oz9In+NyubBFXZg2rz8G/Qtl5/NYzr/blcU35UGCKfJct4srIN6vxv7V/kZj07IJIY69mWNeqlC2cMi08t5Fz3LIk35aX2Zy7uzubp4+J4bbMvXv3KFWqVOrye/fu4eWV/rHqnp6e7Nq1K82yxMREoqKiKFKkiDGHTsPUjXRS+lTISW0pku+sc7RX07R6CZr4FSc2IZkEbTJOjva4OtmnXu0zvGmYKt/epfMxY0hdDoaEsevE7TTPnCro4Uwz/xLU8ymKi5N9rv//K+e4ZUm+Lc+cOTeqMPHy8sLNzY2jR4+mFibR0dGcP3+enj17plu/Zs2aTJ8+nRs3bqT2OTl69CgA1atn3EJbCPHyVCoVbs4OFusV4uLkQKB/SZrVKPHMgkgIIbLCqMJEo9HQs2dPpk+fTv78+SlevDjTpk3D09OTwMBAdDodERER5MmTBycnJ3x9falevTojRoxg4sSJxMXF8dlnn9GxY8csXTERQliXpQsiIUTuYfSw2mHDhtG1a1cmTJhA9+7dUavVLFq0CI1GQ2hoKPXr12f79u1AypvXd999R4kSJejduzfDhw+nYcOGTJw40dSvQwghhBA5QK56iN/T5AFQliX5tizJt+VJzi1L8m15lniIn0z+FkIIIYTNkMJECCGEEDZDChMhhBBC2AwpTIQQQghhM7Ld4FdFUdDrTReyWm0nHQMtSPJtWZJvy5OcW5bk2/Iyk3M7O9VL9zrKdoWJEEIIIXIuuZUjhBBCCJshhYkQQgghbIYUJkIIIYSwGVKYCCGEEMJmSGEihBBCCJshhYkQQgghbIYUJkIIIYSwGVKYCCGEEMJmSGEihBBCCJshhYkQQgghbIYUJkIIIYSwGVKYCCGEEMJmSGEihBBCCJuRowsTvV7PnDlzaNCgAb6+vvTr148bN248c/3IyEg+/PBDatasSc2aNfnkk0+Ii4uzYMTZm7H5/vvvvxk0aBC1atWiTp06DBs2jLt371ow4uzN2Hw/acuWLbz66qvcvn3bzFHmLMbmPCkpiRkzZtCgQQOqVatGz549uXDhggUjzt6Mzff9+/cZOXIktWrVolatWnzwwQeEhYVZMOKcZd68efTq1eu565jj72aOLkzmzZvHqlWrmDx5MqtXr0alUjFw4EASExMzXH/YsGHcunWLpUuXMmfOHA4ePMjnn39u4aizL2PyHRkZSd++fXF1dWX58uX88MMPREZGMmDAALRarRWiz36MPb8N7ty5I+d1Jhmb84kTJ7J27Vq++OIL1q1bh4eHBwMHDuTx48cWjjx7MjbfI0aMIDQ0lCVLlrBkyRLCwsJ47733LBx1zmD4O/giZvm7qeRQWq1W8fPzU1auXJm67NGjR0rVqlWVrVu3plv/5MmTSsWKFZUrV66kLtu/f7/y6quvKmFhYRaJOTszNt+//vqrUr16dSUhISF1WWhoqFKxYkXl0KFDFok5OzM23wY6nU7p3r278vbbbysVK1ZUbt26ZYlwcwRjc37z5k2lYsWKyh9//JFm/SZNmsg5/hKMzfejR4+UihUrKrt3705dtmvXLqVixYpKRESERWLOCcLCwpT+/fsr1apVU1q2bKn07Nnzmeua6+9mjr1icvHiRWJjY6ldu3bqMnd3d7y9vTl+/Hi69U+cOEGhQoUoX7586rKAgABUKhXBwcEWiTk7MzbfderUYe7cuTg6Oqb72aNHj8waa05gbL4N5s+fT1JSEoMHD7ZEmDmKsTk/cOAA7u7uNGzYMM36e/bsoU6dOhaJOTszNt+Ojo64uLiwceNGYmJiiImJYdOmTZQpU4a8efNaMvRs7dy5c+TNm5fNmzfj6+v73HXN9XfTPtNb2jjDfcWiRYumWV64cGFCQ0PTrR8eHp5uXY1Gg4eHR4bri7SMzXeJEiUoUaJEmmULFizA0dGRmjVrmi/QHMLYfAP89ddfLF68mLVr1xIeHm72GHMaY3N+/fp1SpYsyc6dO1m4cCHh4eF4e3szduzYNG/kImPG5tvR0ZEvv/ySSZMm4e/vj0qlolChQixfvhw7uxz7GdzkmjZtStOmTV9qXXP93cyx/7fi4+OBlCQ9ydHRMcMxDPHx8enWfd76Ii1j8/20ZcuWsXLlSkaOHEmBAgXMEmNOYmy+4+LiGDVqFKNGjaJMmTKWCDHHMTbnMTEx3Lx5k3nz5jFy5Ei+//577O3t6dGjBw8fPrRIzNmZsflWFIVLly7h5+fHihUr+OmnnyhevDhDhgwhJibGIjHnNub6u5ljCxMnJyeAdIOktFotzs7OGa6f0YAqrVaLi4uLeYLMQYzNt4GiKMyePZsvv/ySwYMH06dPH3OGmWMYm+/JkydTpkwZ3nzzTYvElxMZm3MHBwceP37MrFmzqF+/PlWrVmXWrFkAbNiwwfwBZ3PG5nvbtm2sXLmSadOmUaNGDQICApg/fz537txh3bp1Fok5tzHX380cW5gYLi/du3cvzfJ79+7h6emZbn1PT8906yYmJhIVFUWRIkXMF2gOYWy+IWUq5ejRo5k/fz5jxoxh5MiRZo8zpzA23+vWrePw4cP4+fnh5+fHwIEDAWjbti2ffvqp+QPOATLznmJvb5/mto2TkxMlS5aUadovwdh8BwcHU7ZsWdzc3FKX5c2bl7Jly3L9+nWzxppbmevvZo4tTLy8vHBzc+Po0aOpy6Kjozl//jz+/v7p1q9ZsyZhYWFp5sgbtq1evbr5A87mjM03wJgxY/j999+ZMWMG/fv3t1SoOYKx+d65cydbt25l48aNbNy4kcmTJwOwcOFCPvjgA4vFnZ0Zm3N/f3+Sk5M5e/Zs6rKEhARu3bpF6dKlLRJzdmZsvosWLcqNGzfS3EKIj4/n9u3bkm8zMdffzRw7+FWj0dCzZ0+mT59O/vz5KV68ONOmTcPT05PAwEB0Oh0RERHkyZMHJycnfH19qV69OiNGjGDixInExcXx2Wef0bFjR7li8hKMzff69evZvn07Y8aMISAggPv376fuy7COeDZj8/30G7NhYGGxYsVkTM9LMjbn/v7+1K1bl48++ohJkybh4eHBnDlzUKvVdOjQwdovx+YZm++OHTuyaNEihg8fnlpsz549G41GQ+fOna38anIGi/3dzPRE42wgOTlZmTp1qlK7dm2lWrVqysCBA1P7Nty6dUupWLGism7dutT1Hzx4oAwdOlSpVq2aUqtWLeWzzz5L02dDPJ8x+e7bt69SsWLFDP89+f9EPJux5/eTjhw5In1MMsHYnD9+/Fj57LPPlFq1aim+vr5K3759lb///tta4Wc7xub7ypUryuDBg5WAgACldu3ayvvvvy/neBZ89NFHafqYWOrvpkpRFMV09ZQQQgghRObl2DEmQgghhMh+pDARQgghhM2QwkQIIYQQNkMKEyGEEELYDClMhBBCCGEzpDARQgghhM2QwkQIIYQQNkMKEyGEEELYDClMhBBCCGEzpDARQgghhM2QwkQIIYQQNuP/bnrHkEG3pWUAAAAASUVORK5CYII=\n",
|
471
|
+
"text/plain": [
|
472
|
+
"<Figure size 640x480 with 1 Axes>"
|
473
|
+
]
|
474
|
+
},
|
475
|
+
"metadata": {},
|
476
|
+
"output_type": "display_data"
|
477
|
+
}
|
478
|
+
],
|
479
|
+
"source": [
|
480
|
+
"plt.scatter(X[:, 0], X[:, 1], s=100)\n",
|
481
|
+
"# draw lines from each point to its two nearest neighbors\n",
|
482
|
+
"K = 2\n",
|
483
|
+
"for i in range(X.shape[0]):\n",
|
484
|
+
" for j in nearest_partition[i, :K+1]:\n",
|
485
|
+
" # plot a line from X[i] to X[j]\n",
|
486
|
+
" # use some zip magic to make it happen:\n",
|
487
|
+
" plt.plot(*zip(X[j], X[i]), color='black')\n"
|
488
|
+
]
|
489
|
+
},
|
490
|
+
{
|
491
|
+
"cell_type": "code",
|
492
|
+
"execution_count": null,
|
493
|
+
"id": "7399452d",
|
494
|
+
"metadata": {},
|
495
|
+
"outputs": [],
|
496
|
+
"source": []
|
497
|
+
},
|
498
|
+
{
|
499
|
+
"cell_type": "code",
|
500
|
+
"execution_count": null,
|
501
|
+
"id": "a1f46daf",
|
502
|
+
"metadata": {},
|
503
|
+
"outputs": [],
|
504
|
+
"source": []
|
505
|
+
}
|
506
|
+
],
|
507
|
+
"metadata": {
|
508
|
+
"kernelspec": {
|
509
|
+
"display_name": "Python 3 (ipykernel)",
|
510
|
+
"language": "python",
|
511
|
+
"name": "python3"
|
512
|
+
},
|
513
|
+
"language_info": {
|
514
|
+
"codemirror_mode": {
|
515
|
+
"name": "ipython",
|
516
|
+
"version": 3
|
517
|
+
},
|
518
|
+
"file_extension": ".py",
|
519
|
+
"mimetype": "text/x-python",
|
520
|
+
"name": "python",
|
521
|
+
"nbconvert_exporter": "python",
|
522
|
+
"pygments_lexer": "ipython3",
|
523
|
+
"version": "3.9.13"
|
524
|
+
}
|
525
|
+
},
|
526
|
+
"nbformat": 4,
|
527
|
+
"nbformat_minor": 5
|
528
|
+
}
|