1562 lines
258 KiB
Text
1562 lines
258 KiB
Text
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:46.716891442Z",
|
||
"start_time": "2026-03-14T11:37:45.891202979Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import torch\n",
|
||
"import numpy\n",
|
||
"import pandas\n",
|
||
"from sympy.physics.control.control_plots import matplotlib\n",
|
||
"from torch.distributed.algorithms.ddp_comm_hooks.powerSGD_hook import batched_powerSGD_hook\n",
|
||
"\n"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 1
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:46.748820470Z",
|
||
"start_time": "2026-03-14T11:37:46.717673396Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "torch.randn(3,4,2)",
|
||
"id": "3e141a42d342fa96",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([[[ 1.1696, -0.5395],\n",
|
||
" [-1.2794, -1.0168],\n",
|
||
" [ 3.2351, 0.6066],\n",
|
||
" [ 1.5116, -0.1253]],\n",
|
||
"\n",
|
||
" [[-0.1823, 0.1887],\n",
|
||
" [ 0.0186, -1.5205],\n",
|
||
" [-0.3032, 0.1184],\n",
|
||
" [-0.1708, 1.2866]],\n",
|
||
"\n",
|
||
" [[ 0.1142, 0.0435],\n",
|
||
" [-0.4102, -0.4663],\n",
|
||
" [ 0.2203, 0.3123],\n",
|
||
" [ 1.9645, 1.8992]]])"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 2
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:46.795608911Z",
|
||
"start_time": "2026-03-14T11:37:46.749770547Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"X = torch.arange(12, dtype=torch.float32).reshape((3,4))\n",
|
||
"Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])\n",
|
||
"torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)"
|
||
],
|
||
"id": "8ae20ae68abbf32f",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(tensor([[ 0., 1., 2., 3.],\n",
|
||
" [ 4., 5., 6., 7.],\n",
|
||
" [ 8., 9., 10., 11.],\n",
|
||
" [ 2., 1., 4., 3.],\n",
|
||
" [ 1., 2., 3., 4.],\n",
|
||
" [ 4., 3., 2., 1.]]),\n",
|
||
" tensor([[ 0., 1., 2., 3., 2., 1., 4., 3.],\n",
|
||
" [ 4., 5., 6., 7., 1., 2., 3., 4.],\n",
|
||
" [ 8., 9., 10., 11., 4., 3., 2., 1.]]))"
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 3
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:46.812288160Z",
|
||
"start_time": "2026-03-14T11:37:46.803470930Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"a = torch.arange(3).reshape((3, 1))\n",
|
||
"b = torch.arange(2).reshape((1, 2))\n",
|
||
"a, b\n",
|
||
"a+b"
|
||
],
|
||
"id": "2960a1ded2cdd5a4",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([[0, 1],\n",
|
||
" [1, 2],\n",
|
||
" [2, 3]])"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 4
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:46.908394350Z",
|
||
"start_time": "2026-03-14T11:37:46.858309741Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "X[-1], X[1:3]\n",
|
||
"id": "69c2ec23ab6ae97c",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(tensor([ 8., 9., 10., 11.]),\n",
|
||
" tensor([[ 4., 5., 6., 7.],\n",
|
||
" [ 8., 9., 10., 11.]]))"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 5
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:46.990018992Z",
|
||
"start_time": "2026-03-14T11:37:46.944214131Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"A = X.numpy()\n",
|
||
"B = torch.tensor(A)\n",
|
||
"type(A), type(B)"
|
||
],
|
||
"id": "b8d779a1bc7e4b1a",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(numpy.ndarray, torch.Tensor)"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 6
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.097040164Z",
|
||
"start_time": "2026-03-14T11:37:46.993944041Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import os\n",
|
||
"os.makedirs(os.path.join(\"..\",\"data\"),exist_ok=True)\n",
|
||
"data_file = os.path.join(os.path.join(\"..\",\"data\",\"data.csv\"))\n",
|
||
"with open(data_file, \"w\") as f:\n",
|
||
" f.write('NumRooms,Alley,Price\\n') # 列名\n",
|
||
" f.write('NA,Pave,127500\\n') # 每行表示一个数据样本\n",
|
||
" f.write('2,NA,106000\\n')\n",
|
||
" f.write('4,NA,178100\\n')\n",
|
||
" f.write('NA,NA,140000\\n')\n",
|
||
"\n"
|
||
],
|
||
"id": "82be028b0f1dd1e3",
|
||
"outputs": [],
|
||
"execution_count": 7
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.138922799Z",
|
||
"start_time": "2026-03-14T11:37:47.109432980Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"data = pd.read_csv(data_file)\n",
|
||
"print(data)\n"
|
||
],
|
||
"id": "ddd789a2656899d1",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" NumRooms Alley Price\n",
|
||
"0 NaN Pave 127500\n",
|
||
"1 2.0 NaN 106000\n",
|
||
"2 4.0 NaN 178100\n",
|
||
"3 NaN NaN 140000\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 8
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.162491839Z",
|
||
"start_time": "2026-03-14T11:37:47.139968456Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]\n",
|
||
"\n",
|
||
"\n",
|
||
"inputs = pd.get_dummies(inputs, dummy_na=True)\n",
|
||
"print(inputs)\n",
|
||
"inputs = inputs.fillna(inputs.mean())\n",
|
||
"print(inputs)\n"
|
||
],
|
||
"id": "e98fcc3bd4f067cf",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" NumRooms Alley_Pave Alley_nan\n",
|
||
"0 NaN True False\n",
|
||
"1 2.0 False True\n",
|
||
"2 4.0 False True\n",
|
||
"3 NaN False True\n",
|
||
" NumRooms Alley_Pave Alley_nan\n",
|
||
"0 3.0 True False\n",
|
||
"1 2.0 False True\n",
|
||
"2 4.0 False True\n",
|
||
"3 3.0 False True\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 9
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.186754928Z",
|
||
"start_time": "2026-03-14T11:37:47.168374155Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"X = torch.tensor(inputs.to_numpy(dtype=float))\n",
|
||
"y = torch.tensor(outputs.to_numpy(dtype=float))\n",
|
||
"X, y\n"
|
||
],
|
||
"id": "8ff0f7b40f0e4996",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(tensor([[3., 1., 0.],\n",
|
||
" [2., 0., 1.],\n",
|
||
" [4., 0., 1.],\n",
|
||
" [3., 0., 1.]], dtype=torch.float64),\n",
|
||
" tensor([127500., 106000., 178100., 140000.], dtype=torch.float64))"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 10
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.214268957Z",
|
||
"start_time": "2026-03-14T11:37:47.192209367Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"B=torch.tensor([[1,2,3],[2,0,4],[3,4,5]])\n",
|
||
"B"
|
||
],
|
||
"id": "91a6e0da442b95a0",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([[1, 2, 3],\n",
|
||
" [2, 0, 4],\n",
|
||
" [3, 4, 5]])"
|
||
]
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 11
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.309990671Z",
|
||
"start_time": "2026-03-14T11:37:47.241157425Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "B==B.T",
|
||
"id": "297e6a678fb19be7",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([[True, True, True],\n",
|
||
" [True, True, True],\n",
|
||
" [True, True, True]])"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 12
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.535195222Z",
|
||
"start_time": "2026-03-14T11:37:47.409682869Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"X=torch.arange(24).reshape(2,3,4)\n",
|
||
"X"
|
||
],
|
||
"id": "24e864b336beb58b",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([[[ 0, 1, 2, 3],\n",
|
||
" [ 4, 5, 6, 7],\n",
|
||
" [ 8, 9, 10, 11]],\n",
|
||
"\n",
|
||
" [[12, 13, 14, 15],\n",
|
||
" [16, 17, 18, 19],\n",
|
||
" [20, 21, 22, 23]]])"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 13
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.648470258Z",
|
||
"start_time": "2026-03-14T11:37:47.558566189Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"A = torch.arange(20, dtype=torch.float32).reshape(5, 4)\n",
|
||
"B = A.clone() # 通过分配新内存,将A的一个副本分配给B\n",
|
||
"A, A + B\n",
|
||
"#A = torch.arange(20, dtype=torch.float32).reshape(5, 4)\n",
|
||
"#B = A # 通过分配新内存,将A的一个副本分配给B\n",
|
||
"id(A),id(B)"
|
||
],
|
||
"id": "ee0905479b1dbc2b",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(140539332541136, 140539333492432)"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 14
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "markdown",
|
||
"source": "Hadamard乘积",
|
||
"id": "136459f5efe765cf"
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.690032963Z",
|
||
"start_time": "2026-03-14T11:37:47.651693108Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "A*B",
|
||
"id": "f576b0df17cc0e98",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([[ 0., 1., 4., 9.],\n",
|
||
" [ 16., 25., 36., 49.],\n",
|
||
" [ 64., 81., 100., 121.],\n",
|
||
" [144., 169., 196., 225.],\n",
|
||
" [256., 289., 324., 361.]])"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 15
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.778795013Z",
|
||
"start_time": "2026-03-14T11:37:47.722390317Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"a=2\n",
|
||
"X=torch.arange(24).reshape(2,3,4)\n",
|
||
"a+X,(a*X).shape"
|
||
],
|
||
"id": "b2373af1d7f2a45",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(tensor([[[ 2, 3, 4, 5],\n",
|
||
" [ 6, 7, 8, 9],\n",
|
||
" [10, 11, 12, 13]],\n",
|
||
" \n",
|
||
" [[14, 15, 16, 17],\n",
|
||
" [18, 19, 20, 21],\n",
|
||
" [22, 23, 24, 25]]]),\n",
|
||
" torch.Size([2, 3, 4]))"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 16
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:47.852744522Z",
|
||
"start_time": "2026-03-14T11:37:47.810917322Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"print(A)\n",
|
||
"A_sum_axis0=A.sum(axis=0)\n",
|
||
"A_sum_axis1=A.sum(axis=1)\n",
|
||
"A_sum_axis0,A_sum_axis1"
|
||
],
|
||
"id": "2b50246e1ca8a3bc",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"tensor([[ 0., 1., 2., 3.],\n",
|
||
" [ 4., 5., 6., 7.],\n",
|
||
" [ 8., 9., 10., 11.],\n",
|
||
" [12., 13., 14., 15.],\n",
|
||
" [16., 17., 18., 19.]])\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(tensor([40., 45., 50., 55.]), tensor([ 6., 22., 38., 54., 70.]))"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 17
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.039859489Z",
|
||
"start_time": "2026-03-14T11:37:47.861768656Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"x=torch.arange(4,dtype=torch.float32)\n",
|
||
"torch.mv(A,x)"
|
||
],
|
||
"id": "3195464dfeb554ed",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([ 14., 38., 62., 86., 110.])"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 18
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.070161220Z",
|
||
"start_time": "2026-03-14T11:37:48.042514455Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import time\n",
|
||
"\n",
|
||
"def showtime(func):\n",
|
||
" def wrapper():\n",
|
||
" start = time.time()\n",
|
||
" result = func() # 执行原始函数\n",
|
||
" end = time.time()\n",
|
||
" print(f\"执行时间: {end - start:.6f}秒\")\n",
|
||
" return result\n",
|
||
" return wrapper # 返回包装函数\n",
|
||
"\n",
|
||
"@showtime\n",
|
||
"def fun():\n",
|
||
" print(\"I am silly\")\n",
|
||
"\n",
|
||
"fun()\n"
|
||
],
|
||
"id": "ebda8c74ead3e42b",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"I am silly\n",
|
||
"执行时间: 0.000630秒\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 19
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.092871646Z",
|
||
"start_time": "2026-03-14T11:37:48.071687740Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "torch.norm(torch.ones((4, 9)))",
|
||
"id": "3343cc0c01d0161c",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor(6.)"
|
||
]
|
||
},
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 20
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.100506481Z",
|
||
"start_time": "2026-03-14T11:37:48.094144409Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"x =torch.arange(4.0,requires_grad=True)\n",
|
||
"x.grad"
|
||
],
|
||
"id": "674e2416e9417cfe",
|
||
"outputs": [],
|
||
"execution_count": 21
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.121524857Z",
|
||
"start_time": "2026-03-14T11:37:48.101329494Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"y=2*torch.dot(x,x)\n",
|
||
"y"
|
||
],
|
||
"id": "66c0febebcf98cde",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor(28., grad_fn=<MulBackward0>)"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 22
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.148136131Z",
|
||
"start_time": "2026-03-14T11:37:48.129950999Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"y.backward()\n",
|
||
"x.grad"
|
||
],
|
||
"id": "825f2ce6c46ca4a8",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([ 0., 4., 8., 12.])"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 23
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.175519287Z",
|
||
"start_time": "2026-03-14T11:37:48.153141505Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"x.grad.zero_()\n",
|
||
"y = x.sum()\n",
|
||
"y.backward()\n",
|
||
"x.grad\n"
|
||
],
|
||
"id": "df399463515e9d3c",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([1., 1., 1., 1.])"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 24
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.190165115Z",
|
||
"start_time": "2026-03-14T11:37:48.176741284Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# 对非标量调用backward需要传入一个gradient参数,该参数指定微分函数关于self的梯度。\n",
|
||
"# 本例只想求偏导数的和,所以传递一个1的梯度是合适的\n",
|
||
"x.grad.zero_()\n",
|
||
"y = x * x\n",
|
||
"# 等价于y.backward(torch.ones(len(x)))\n",
|
||
"print(y)\n",
|
||
"y.sum().backward()\n",
|
||
"x.grad"
|
||
],
|
||
"id": "f9207619bd4b3de8",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"tensor([0., 1., 4., 9.], grad_fn=<MulBackward0>)\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([0., 2., 4., 6.])"
|
||
]
|
||
},
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 25
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.210632850Z",
|
||
"start_time": "2026-03-14T11:37:48.200923142Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "torch.ones(len(x))",
|
||
"id": "409c14c230570859",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([1., 1., 1., 1.])"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 26
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.229459200Z",
|
||
"start_time": "2026-03-14T11:37:48.218856646Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"x.grad.zero_()\n",
|
||
"y=x*x\n",
|
||
"u=y.detach()\n",
|
||
"z=u*x\n",
|
||
"z.sum().backward()\n",
|
||
"x.grad==u"
|
||
],
|
||
"id": "521b948fe0683b12",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([True, True, True, True])"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 27
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.269115256Z",
|
||
"start_time": "2026-03-14T11:37:48.244909724Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"x.grad.zero_()\n",
|
||
"y.sum().backward()\n",
|
||
"x.grad==2*x"
|
||
],
|
||
"id": "b040beecf0632315",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([True, True, True, True])"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 28
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.300440123Z",
|
||
"start_time": "2026-03-14T11:37:48.279382427Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from torch.distributions import multinomial\n",
|
||
"fair_probs=torch.ones([6])\n",
|
||
"fair_probs"
|
||
],
|
||
"id": "4e6ec763dbea5aa3",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([1., 1., 1., 1., 1., 1.])"
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 29
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.318972768Z",
|
||
"start_time": "2026-03-14T11:37:48.301409242Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "multinomial.Multinomial(1, fair_probs).sample()",
|
||
"id": "f12d5e85bc6ab595",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([0., 0., 1., 0., 0., 0.])"
|
||
]
|
||
},
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 30
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.337802576Z",
|
||
"start_time": "2026-03-14T11:37:48.320185416Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"counts = multinomial.Multinomial(10, fair_probs).sample((500,))\n",
|
||
"\n",
|
||
"cum_counts = counts.cumsum(dim=0)\n",
|
||
"cum_counts.size()"
|
||
],
|
||
"id": "b02f43376fd6f1fe",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"torch.Size([500, 6])"
|
||
]
|
||
},
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 31
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.463214605Z",
|
||
"start_time": "2026-03-14T11:37:48.358849572Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"# 假设 estimates 是你的数据张量\n",
|
||
"estimates = cum_counts / cum_counts.sum(dim=1, keepdims=True)\n",
|
||
"\n",
|
||
"# 设置图形大小 (等效于 d2l.set_figsize)\n",
|
||
"plt.figure(figsize=(6, 4.5))\n",
|
||
"\n",
|
||
"# 绘制每条概率曲线\n",
|
||
"for i in range(6):\n",
|
||
" plt.plot(estimates[:, i].numpy(),\n",
|
||
" label=f\"P(die={i + 1})\") # 使用 f-string 更简洁\n",
|
||
"\n",
|
||
"# 添加理论概率水平线\n",
|
||
"plt.axhline(y=0.167, color='black', linestyle='dashed', label='Theoretical probability')\n",
|
||
"\n",
|
||
"# 设置坐标轴标签\n",
|
||
"plt.xlabel('Groups of experiments')\n",
|
||
"plt.ylabel('Estimated probability')\n",
|
||
"\n",
|
||
"# 添加图例\n",
|
||
"plt.legend()\n",
|
||
"\n",
|
||
"# 显示图形\n",
|
||
"plt.show()\n",
|
||
"#plt.savefig('dice_probability.png', bbox_inches='tight')"
|
||
],
|
||
"id": "8b80daa4edd0b066",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 600x450 with 1 Axes>"
|
||
],
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGZCAYAAABfZuECAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAzkxJREFUeJzs3Xd8U9X7wPHPzWhW0713oZRZ9gbZU0WGAm7FjRPcuBCcOFB/7gXi+CIoCqIiW0E2hbJn6d47HWnm/f0RmlLaAlWWcN6vV17KzcnNSdrmPjnnOc+RABlBEARBEITzTHGhOyAIgiAIwuVJBCGCIAiCIFwQIggRBEEQBOGCEEGIIAiCIAgXhAhCBEEQBEG4IEQQIgiCIAjCBSGCEEEQBEEQLgjVhe7AxSosLIzy8vIL3Q1BEARB+M8xGo1kZ2eftp0IQhoQFhZGVlbWhe6GIAiCIPxnhYeHnzYQEUFIA2pGQMLDw8VoiCAIgiA0gdFoJCsr64yunyIIOYXy8nIRhAiCIAjCOSISUwVBEARBuCBEECIIgiAIwgUhghBBEARBEC4IEYQIgiAIgnBBiCBEEARBEIQLQgQhgiAIgiBcECIIEQRBEAThghBBiCAIgiAIF4QIQgRBEARBuCAuiiDk/vvvJyUlBbPZzObNm+nWrVujbceOHcu2bdsoKSmhoqKCnTt3cvPNN9drN2PGDLKzs6mqqmLlypXExcWdy5cgCIIgCMI/IF/I24QJE+Tq6mr59ttvl1u3bi1/+umncnFxsRwYGNhg+/79+8tjxoyRW7VqJTdr1kx++OGHZZvNJg8bNszd5sknn5RLSkrka665Rk5ISJAXL14sJycnyxqN5oz6ZDQaZVmWZaPReEHfG3ETN3ETN3ETt//arYnX0Avb2c2bN8vvv/+++9+SJMmZmZnyU089dcbnSExMlGfOnOn+d3Z2tvzYY4+5/+3l5SWbzWZ54sSJ5+INPKObd3CI7BsaLus8vS74L4i4iZu4iZu4idu5ujXlGnpBp2PUajVdunRh1apV7mOyLLNq1Sp69ep1RucYNGgQLVu2ZN26dQDExsYSGhpa55wmk4ktW7Y0ek4PDw+MRmOd29k29fPfmPLJMp7+7m+ue2zWWT+/IAiCIPzXXNAgJCAgAJVKRV5eXp3jeXl5hISENPo4Ly8vysvLsVqt/Pbbbzz00EPuoKPmcU0557Rp0zCZTO5bVlbWv3lZjZDc/xfbvvGcF0EQBEG4XFwUialNVV5eTseOHenWrRvPPvsss2fPpn///v/4fK+99hpeXl7uW3h4+FnsrcsrE/qgCzcDICmUZ/38giAIgvBfo7qQT15YWIjdbic4OLjO8eDgYHJzcxt9nCzLJCcnA7Br1y5at27NtGnT+Ouvv9yPO/kcwcHBJCUlNXg+q9WK1Wr9l6/m1GzVZiRJBkCh+E/GfoIgCIJwVl3Qq6HNZiMxMZHBgwe7j0mSxODBg9m0adMZn0ehUKDRaABISUkhJyenzjmNRiM9evRo0jnPBafsBMRIiCAIgiDABR4JAZg9ezbz5s1j+/btbN26lSlTpmAwGJg7dy4A8+bNIysri2eeeQaAp59+mu3bt5OcnIxGo+HKK6/klltuYfLkye5zvvvuuzz33HMcOXKElJQUXnrpJbKzs1m8ePGFeIlustM1EiJJ0mlaCoIgCMKl74IHIQsXLiQwMJCZM2cSEhJCUlISI0aMID8/H4CoqCicTqe7vcFg4KOPPiIiIgKz2czBgwe5+eabWbhwobvNG2+8gcFg4LPPPsPHx4e///6bESNGYLFYzvvrO5HsdACgECMhgiAIgoCEa62ucAKj0YjJZHKvwjlbXtn4J/YCP+w2Ky9d1/WsnVcQBEEQLhZNuYaKDMnzSHbW5ISIt10QBEEQxNXwPHLKrukYkRMiCIIgCCIIOa9ku8gJEQRBEIQaIgg5j05MsBVTMoIgCMLlTlwJzyP5hCBEFCwTBEEQLnfiSngeOZ129/9LknjrBUEQhMubuBKeR07HidMxIi9EEARBuLyJIOQ8EtMxgiAIglBLXAnPI6fjhOkYEYQIgiAIlzlxJTyPajawAxGECIIgCIK4Ep5HdadjRE6IIAiCcHkTQch55HQ4qNmqR4yECIIgCJc7cSU8j1xBiIsYCREEQRAudyIIOY+cDqdr32LE/jGCIAiCIIKQ80h2ijohgiAIglBDBCHnUd3pGPHWC4IgCJc3cSU8j5zOE6ZjlGIkRBAEQbi8iSDkPJJPLNsuckIEQRCEy5wIQs4jp9NBTewhVscIgiAIlzsRhJxHTqcTUSdEEARBEFzElfA8OnE6RoyECIIgCJc7EYScR06nozYxVYyECIIgCJc5cSU8j5z22iW6IggRBEEQLnfiSngeOetsYCfeekEQBOHyJq6E55HsOHE6RuSECIIgCJc3EYScR2IkRBAEQRBqiSvheeR0OGsGQpAk8dYLgiAIlzdxJTyPZKcTJFEnRBAEQRBABCHnVd0N7EROiCAIgnB5E0HIeVRnAzsxEiIIgiBc5sSV8DyST0hMFUGIIAiCcLkTV8LzqO50jHjrBUEQhMubuBKeR05RJ0QQBEEQ3EQQch45T9jATqlSX8CeCIIgCMKFJ4KQ80h2Otx1QsY/PosOA6+5oP0RBEEQhAtJBCHnkdNRuzoGYNyUly9cZwRBEAThAhNByHnkKtsuX+huCIIgCMJFQQQh55F8wuoYQRAEQbjciSDkPDqxWJkgCIIgXO5EEHIenbg6RhAEQRAudyIIOY9kZ/3pGLVGdwF6IgiCIAgXnghCziOnw4l00nSMwdv3wnRGEARBEC6wiyIIuf/++0lJScFsNrN582a6devWaNu77rqLdevWUVxcTHFxMStXrqzXfu7cuciyXOe2bNmyc/0yTsvZQGKq3svn/HdEEARBEC4CFzwImTBhArNnz2bGjBl07tyZXbt2sXz5cgIDAxtsP2DAAObPn8/AgQPp1asXGRkZrFixgrCwsDrtli1bRkhIiPt2ww03nI+Xc0oNJabqvfwuTGcEQRAE4QK74EHIo48+yueff85XX33FgQMHuO+++6iqquKOO+5osP3NN9/Mxx9/zK5duzh06BB33XUXCoWCwYMH12lnsVjIy8tz30pLSxvtg4eHB0ajsc7tXHCNhNStEyKmYwRBEITL1QUNQtRqNV26dGHVqlXuY7Iss2rVKnr16nVG59Dr9ajVaoqLi+scHzBgAHl5eRw8eJCPPvoIP7/GRxymTZuGyWRy37Kysv7ZCzoN2Vl/dYynj/85eS5BEARBuNhd0CAkICAAlUpFXl5eneN5eXmEhISc0TlmzZpFdnZ2nUDmjz/+4NZbb2Xw4ME89dRT9O/fn2XLlqFQNPxyX3vtNby8vNy38PDwf/6iTuHksu0AXv7B5+S5BEEQBOFip7rQHfg3nnrqKa6//noGDBiAxWJxH1+wYIH7//fu3cvu3bs5duwYAwYMYM2aNfXOY7VasVqt57y/DS3R9QoQQYggCIJwebqgIyGFhYXY7XaCg+teiIODg8nNzT3lYx977DGefvpphg0bxp49e07ZNiUlhYKCAuLi4v51n/+NhoqVeQec2YiPIAiCIFxqLmgQYrPZSExMrJNUKkkSgwcPZtOmTY0+7oknnuD5559nxIgRJCYmnvZ5wsPD8ff3Jycn56z0+59yOuvXCfESQYggCIJwmbrgq2Nmz57N3Xffza233kqrVq34+OOPMRgMzJ07F4B58+bx6quvuts/+eSTvPTSS9xxxx2kpqYSHBxMcHAwBoMBAIPBwBtvvEGPHj2Ijo5m0KBBLFmyhKNHj7J8+fIL8hprNLSBndE3AKVKfQF6IwiCIAgX1gXPCVm4cCGBgYHMnDmTkJAQkpKSGDFiBPn5+QBERUW56mscN3nyZDQaDYsWLapznhdffJEZM2bgcDho3749t912Gz4+PmRnZ7NixQqef/7585L3cSrOBlbHABj9gijNPzcrcgRBEAThYiVxcuEKAaPRiMlkwsvLi/Ly8rN23naD+nHjC+9gK6s78jFn2iTS9p9+WkkQBEEQLnZNuYZe8OmYy4krMbU25rOYKwHQep6b4miCIAiCcDETQch55HQ66tQJqQlCRE6IIAiCcDkSQch5JJ+0RNdqrgJApfa4EN0RBEEQhAtKBCHn0cmJqTVBiBgJEQRBEC5HIgg5j5wnLdG1VouREEEQBOHyJYKQ8+jkDezcOSEiCBEEQRAuQyIIOY9OLttemxMipmMEQRCEy48IQs4jp9NRpyqLGAkRBEEQLmciCDmPXKtjatfo2m2unX9FYqogCIJwORJByHnkdNQdCXHYbIBITBUEQRAuTyIIOY8cdvtJ/3YFIUqREyIIgiBchkQQch7ZbTZk+cR/uzbUU6nESIggCIJw+RFByHlUM/1S+29XECISUwVBEITLkQhCziOHre50jP14UCISUwVBEITLkQhCziOHzXZSYurx6RgxEiIIgiBchkQQch7ZrTZOXKIrElMFQRCEy5kIQs4j+0kjIXYxEiIIgiBcxkQQch457SfnhIjEVEEQBOHyJYKQ80iWZWSpdidd93SMSEwVBEEQLkMiCDnPJH0FKk87Sz587oTpGBGECIIgCJcfEYScZ06HFW2QhYzDSSckporpGEEQBOHyI4KQ88xdG0Strl2iKyqmCoIgCJchEYScZ7Wb1qlEYqogCIJwWRNByHlWUzVVpfZwByQiMVUQBEG4HIkg5DyrnY5RicRUQRAE4bLW5CDkq6++4oorrjgXfbksOKz1c0LEdIwgCIJwOWpyEOLt7c2qVas4fPgw06ZNIyws7Fz065JVMxISFBtFzwljAFB7aC5gjwRBEAThwmhyEDJ27FjCw8P5+OOPmThxIqmpqfz+++9ce+21qFSqc9HHS0pNHsjYaY8x9J7b3MeV4r0TBEEQLjP/KCeksLCQd955h44dO9KjRw+OHj3KN998Q3Z2NrNnzyYuLu5s9/OSUZOYCpy4l51IThUEQRAuO/8qMTUkJIShQ4cydOhQHA4Hv//+OwkJCezfv58pU6acpS5eWuzHC5QB9AutcP+/yAsRBEEQLjdNDkJUKhXjxo1j6dKlpKWlMX78eN59913CwsK4/fbbGTp0KBMmTOCFF144F/39z3NYre7/7xpYjSS5ttUVO+kKgiAIl5smJyLk5OSgUCiYP38+3bt3Z9euXfXarF27ltLS0rPRv0uO3VZ3J12lQsbukFCKqqmCIAjCZabJQcjUqVP54YcfsFgsjbYpKyujWbNm/6pjl6qaxNQaGqWM3QEanf4C9UgQBEEQLowmT8cMHDgQdQPFtfR6PV9++eVZ6dSlzHHSSIjWw+n6r6fXheiOIAiCIFwwTQ5CbrvtNnQ6Xb3jOp2OW2+99ax06lJmP2kkRKs+HoQYjBeiO4IgCIJwwZzxdIzRaESSJCRJwmg0Ul1d7b5PqVRy5ZVXkp+ff046eSmxn5CYCrVBiE6MhAiCIAiXmTMOQkpLS5FlGVmWOXz4cL37ZVlm+vTpZ7Vzl6J60zHukRARhAiCIAiXlzMOQgYOHIgkSaxZs4Zrr72W4uJi931Wq5W0tDRycnLOSScvJbWJqa6luWIkRBAEQbhcnXEQsm7dOgBiY2NJT08/Zx261NUEITXJOCInRBAEQbhcnVEQkpCQwN69e5FlGW9vbxISEhptu2fPnrPWuUtRTZ0Q5fEoxB2EiJEQQRAE4TJzRkFIUlISISEhFBQUkJSUhCzLSJJUr50sy2ITu9Ow21yJqQqp7nSMGAkRBEEQLjdntEQ3NjaWgoIC9/83a9aM2NjYerd/WqDs/vvvJyUlBbPZzObNm+nWrVujbe+66y7WrVtHcXExxcXFrFy5ssH2M2bMIDs7m6qqKlauXHnRbKpXk5iqOh7DiSBEEARBuFydURByYg5Ienr6KW9NNWHCBGbPns2MGTPo3Lkzu3btYvny5QQGBjbYfsCAAcyfP5+BAwfSq1cvMjIyWLFiBWFhYe42Tz75JA8//DD33XcfPXr0oLKykuXLl6PRaJrcv7OtJidEKYnEVEEQBOHyJlGzTOMURo0adcYnXLp0aZM6sHnzZrZt28ZDDz3k6pAkkZGRwfvvv8+sWbNO+3iFQkFJSQkPPvgg33zzDQDZ2dm8/fbbvP322wB4eXmRl5fH7bffzoIFC057TqPRiMlkwsvLi/Ly8ia9nkbPqfHAQ6mkxdCBTHj5Obw9nEyKLyGn1IMv1oVSXpTHW3cMPSvPJQiCIAgXSlOuoWeUwLF48eIzeuKm5oSo1Wq6dOnCa6+9Vuccq1atolevXmd0Dr1ej1qtdi8Zjo2NJTQ0lFWrVrnbmEwmtmzZQq9evRoMQjw8POqMkhiNZ39qJOmB24n09uLJ3Bwmty4mvcJV+r5mJMQvKJCPP76fyZM/OuvPLQiCIAgXozOajlEqlWd0a2pSakBAACqViry8vDrH8/LyCAkJOaNzzJo1i+zsbHfQUfO4ppxz2rRpmEwm9y0rK6tJr+NM2J2uAadr+sWiUcq08HYlqHqoXEGIzaHgnntHnvXnFQRBEISLVZP3jrmYPPXUU1x//fWMHTv2lLv6ns5rr72Gl5eX+xYeHn4We+lid7qCDWtVdZ3jHsra2TCbo/6KI0EQBEG4VJ3R0MVDDz3EZ599hsViceduNOb9998/4ycvLCzEbrcTHBxc53hwcDC5ubmnfOxjjz3G008/zZAhQ+rUJql53MnnCA4OJikpqcFzWa1WrCft6XK2OY4HIU67s85x1UlBiJeXHpOp6pz2RRAEQRAuBmcUhEydOpXvvvsOi8XC1KlTG20ny3KTghCbzUZiYiKDBw9myZIlgCsxdfDgwXzwwQeNPu6JJ57g2WefZfjw4SQmJta5LyUlhZycHAYPHsyuXbsAV45Hjx49+Pjjj8+4b2dbzUiI7KgbhEgSqJRO7A4FNodEUJC3CEIEQRCEy8IZBSEn1v/4p7VAGjN79mzmzZvH9u3b2bp1K1OmTMFgMDB37lwA5s2bR1ZWFs888wzgWn47c+ZMbrzxRlJTU92jKBUVFVRWVgLw7rvv8txzz3HkyBFSUlJ46aWXyM7OPuME23OhsSAEQK2UsTtceSHBwb4cPSr24BEEQRAufRe8vOnChQsJDAxk5syZhISEkJSUxIgRI8jPzwcgKioKp7P2wj158mQ0Gg2LFi2qc54XX3yRGTNmAPDGG29gMBj47LPP8PHx4e+//2bEiBH/Km/k36pJTJXt9YMQD6WMGdd0THCwz/ntmCAIgiBcIP8oCLnjjjuYOnUqLVq0AODIkSO8++67fPnll/+oEx9++CEffvhhg/cNHDiwzr9jY2PP6JzTp09n+vTp/6g/54LN4QAaHgmpyQux2V3TMbGdOxDWsgUb5v94XvsoCIIgCOdTk4OQGTNm8Oijj/L++++zadMmAHr16sU777xDVFTURXXhv5jUTMc4G5yOqVmm6xoJeXDeCwAUZWZxcP2m89dJQRAEQTiPmhyETJ48mbvvvpvvv//efWzp0qXs3r2b999/XwQhjaiZjpEaqE/roZRRYceQe4TmYd4UHD8e2bZ1k4MQSaHA6BuIqSjv9I0FQRAE4QJqcp0QtVrN9u3b6x1PTEwUO+ieQs1IiFpZ9y3PyytBrZTpJ20iJHM748Ns7vs0Ot0Zn1+hUNJn7O2Mm/Iqj81ZSUL/K89OxwVBEAThHGlyEPLNN98wefLkesfvuecevvvuu7PSqUtRbRCirHO8qKgclVKmmZQGgMcJQyXeIUGnPW+rCG96tQqi87BxDLv9UdofDz6ue/T1s9X1U+oTFc43111FlLfYgE8QBEFomjMauqjZCA5ctUDuuusuhg0bxubNmwHo0aMHUVFRfP311+eml5eAmmJlHqq6QUhubglqbyfOBuJB/4hTV269fUgLvpxyBU6nzJNbwurdP/yOx1kx921k+bR7FP5jn40eTosAP3pEhBH/7ufn7HkEQRCES88ZBSGdOnWq8++aAmHNmzcHXJVPCwsLadu27Vnu3qWjZiREddJ0zL696RQZjtAtuLZku4SMjERAVESD5wqKjWbSe7O4ueg3ABQKiU5+laSc1K736Fs5umMDyUlnP7nVqPHgo1FDaRHgB0CMrzd9oyP4Oy2zwfaxvt7klFdSbbc36XnC4xPw8gviwObV/7rPgiAIwsXljIKQQYMGnet+XPJqElM9TpqOsVrtbN29lzvGeLiP6VVOquwKDD7e6LyMmE21WyFLCgXXPvcEwTGRxCu1ILuW/rYPstcLQgAmPj2bz5+4iYKMY/+q/+FenkzqnMBHW3ZSbK7mnq4dmJjQuk6bq1o2bzAI6RsdwarbJ/LDvoO89tdm9hcUndFzBkY2445X56JSe7Diq3fY8PPcf/UaBEEQhIvLf3oDu/8Sm9MVLJw8EmKx2LBZqpGpHQm5NsbE3S2L0Sid7ikZL/9g7n37e6Z8+jt+4eH42E2ojgcgAC29q1FSO8rw9Yv3AaDRGbjp+Q+RpH+3Od5Ho4bxwsA+bJt8K22DAugeEVqvzWN9unHDSYEJwBN9u6NQSExMaE3Sg5OY2K7VGT3niDufQKV2BWeDb34QT9+Af/UaBEEQhIvLPwpCunTpwqxZs5g/fz6LFi2qcxMaVjMSolbUHQmxWGxYq811gpBFmwKx2RS09bG4p2Suuu9ZwuLa4BMUhsbDlwCrazRhy6ECyqtseCiceGNynyN1z1YyDu0GwDc4nLGPvIyH9sxX25wo2FPPyHhXuf5Iby92PnA7Y9vEA1BYWcWwrxZgP17/ZN51V9Enqm4uS8vjUzY1pvXvedrn9PQNoFmHXgCUFxegVKnpMuzaf9R/QRAE4eLU5CBk4sSJbNy4kdatWzN27FjUajVt27Zl0KBBlJWVnYs+XhIaywmxWu3YLNV1ElMLy5Ws3u+LUpIJbtacK667i1bdB7jvV0p6AmwlAOzLNJGaXwGAzwlBiMNu54snb2bHqp8B6DBwFMMmPfaP+n5Lx3YNHrfY7cTO/pQ/UzK495fl7uOfjRnBrR3b8b/xo1h/14008/Op87hWAf5EeBkbfb74rv0Ydf8LKBQKMg7uYvlXrsToPmMnERHf3vVag8LQG30aPYcgCIJw8WtyEPLMM88wdepUrrnmGqxWK4888gitWrVi4cKFpKenn4s+XhLcQYii7lteWVmNzVJ3JESDFYtdgUKC1t1GMuSWh+s8Rrap8LS7NuvLrYLMYteeOD6SieKcDL5//VF32y2//s/9/wn9rkStafpoyKTOCQDc9fMfRLzxEQWVrl1+5+7Yi8XumhL6JmkfAa/+HxllJlr4+/LF2BFc164lPSJdq3bWpWZwzbeL2JqZg0Ih8dW1V9Z7LwC6DLuWm57/wB107frzV/atX87RnRvQ6PTcMuMTnpj3J1M//4MHP1yMzujd5NdTI9Bby8/PDea127uiUv676SpBEASh6ZochDRv3pzffnOtyrBarRgMBgDeeecd7rnnnrPbu0uIu07ISRfe7duPYLNUo6I2v8MDGwpJRiHJePvUXyHjsCjRO8wAVCm0ZJtcUz266lzeu+8qDmxa5W6bm3KI6aPbU5STjlbvSZveQ5vU7yuiI2jh74up2sKi/YfIr6yi/QdziX7rYx7+bVWdtiaLlRc3rKPUamZHdi4bTkhSXXb4GH8cSeHOn5dhqrbQLyaS14f1r/N4rcHIkFunALD7r9+Y/+ojbF/+A06ng+9fe5T0g0lo9Z54+rimdwzefox95GXGTX2VkNgzyzOpIUmw4OmBXNMzmieva8/qV6/k68f6MWfKFRi0KgZ3CCPU759NXwmCIAhnpslBSElJCUajayg9KyuLdu1cQ/U+Pj7o9fqz27tLSE0QolTU/cadmJiM1WJGRW2lVA+sKBUyKgmkE76hF2Yew2G3gVNCb3cFIdUqA3mVrjY+zuJGnz9p9RIAOg8Z06R+39HFNQqyYO9BKq2uPpqsFp65qT13D28JuC7odw9vyapXR/LV873ZqT1Kz0+/5bE/1rrPs+Koa+3OocJi7vx5GQAP9+pCwbSH3ImqLbsPRG/0piAzhZ/ffY6DW9YiH3/fbBYz37x4H4veeYbPn7iZJR+86HpMt/50GHA11zx45tsFdIsPYN0bV9E/oTa5tm/bYG4aGMdtQ1pg+vFWVrwygpWvjGx0hKR1pA+3D2mBp05UCRYEQfinmvwJum7dOoYOHcrevXv54YcfeO+99xg0aBBDhw5l9WpRy6ExNYmpKqlu3GezuXJC1CesbNFgRSHp0SidKJQKZLvMaGk5cZFHeb98JFbP5u6REJveh4L8QgA6eeby7j09mPLZlnrPn7TmFwbe+AAx7briFxqFrbSQ+7smMH/3AdLLTEgSvH1XD+4cFs9rC3fx+W9H+PyOAYxsEwMFMnN37GFg+1Cu6xvDntQS7r/atQrmvqta0bGZf53nGtIpnFA/HTuy8/hi+y4kSWJPXqH7/iUHj/L6us083a8n3loNc8aNpMhsJrj3EADalaYysW088/ccqHNeq7mK3X/+CkB28n7CmrdBazDSsscAwuPacOVVwzFXVZGcV0n6/h0oVWqCY1qQk3wAWZaJDDTQr20IH9zfCy+9a9XN7J/3MmfFYe4cHo9eo+LekbUjKq0jfXj7vn7sLdVjqExn0YZUIvwN7EkrZskLQ2ge6sWXU65gy6EC+j/1Gza7k4gAA6N6RJGeX8HKnVlY7U46xPpxx7B4isst/Lknhx1Hiyg32xAE4fLkExSGl38w6Qd2XuiuXHAS0KRymr6+vmi1WnJycpAkiSeffJLevXtz5MgRXn75ZUpLS89NT88jo9GIyWTCy8uL8vLy0z/gDLw6tB+P9+1OWSsf/Cd0AOCmG99i/vy/iGrdiZ1v9MdHciWWzneMRgoMoktrEwvWh9CJvVylcAV4v1a3J0XdlYeUcwB4OqsFmeuT+PZ6g/u5DOPmUW11cLKbnv+Q+K5XkH10P2GxLehUcozgrb/wf5sSGd0zimuvqa266ihXoDS6RiHKShyMeOl3Ns0e1aTXPOSZZazdndPgfQpJ4paObXlhYG8ivb2wSwr+L+Fa7Ao1tx/8naDqUmLe+gSNSslNHdpQWm3hg8076p0nyEfLe8/fwRXxRkIl19Z/uXIADlM+qY4Qyn3aEGJLIcyRQZC+7g7GRaZquj6yhPSCSvexd+/pQZcWASgkiZ6tGi6bX1hWTYC3tt65/L209dp+/schBnUIpXlobVn7nclF9Hn8Vyy2+j8j4dLRqsdAEvpdiex0snfDcoKjW2C3Wklas4TKssZHLYVzL7xFO5xOBznJB07f+Az4BIUTHNOC0NhWRLbuiNEviNQ9WzmweQ0Ohx2twYhvUBjNO/XG0zeAkJh4lCo1xTkZVJWXovbQUpCZzLY/fiB1zzbAVRNKpfLAZq12P4e1uooqU8lZ6fO51JRraJODkMvBuQhCZgzqw7T+vaho7YfP+AS6dZ1KYuJRAIJj4jn8/jA8JVfC5yLnlZR7RtA7oZSFG8MYK/1GW8URAAoxEkBtn970v55l7/zAazcn0EORBMDomSv5dWtGvT50GTGWaybPcP9bbzPz8L4fkAApugJFgLVJr2nhumNsPlTAbUNakBDty+JNaUQFedK1haueR0GZmc4PLyG7qKrRc2hUSpbdOp4OV0RiDCihXDbguUuF5Kw/DdLhg7kcOKHQmSTByldGMrB9/ZolDbE7ZZKSi/hzdw5vLtqDzeGkrLLx13z3qE783z3d8JBco1ROp0xFtc09irLXEceSP/7m2atC6jyupMKCt94DxUlTb0eyy2gR5kqkffunPTw5ZxtRgQaUCgUpeU37PVNIEgYPNde1bUmJuZrFB4406fHCuaH20DL0tim06T0Uo19gg20qy4rZvPQ7tvz6PyzmygbbnC06ozeWygqczqYHvAqlim4jxmOpriJl1xY6DxtHeIsE0vYlYq4oQ2/0Qe/lg87og81iprKsGJ2nN2oPDdlH91OQeQy71YrO6EVe2hECI5rRpvdQKkoKObpzI0VZqZgrTWj1nmj0RoKimqM1GCnOySA7eT9OR9OqKzcmOCaeDgOuxuDtR2lBNkFRcbTp5Rp1Lc3PxugfREVJETaLmazDezBXmmjWoSdag5GirDQkhQLZ6eRI4npUag/a9B6KzuiDQqnEQ6tDoVSh9tCclb4CVJQWo9Zo0OhcXyxL8rKoKi8lPK4tdpuVlD3bjo/uOslLO0LO0f0U59b/vL+QmnIN/UcT2gqFgrFjx9K6tWtIfv/+/SxZsgSHQ3yza0ztdIzrwmSx1A7HW82VqE/ICdFgpdAqYT1+ffSUze77TgxAAJQaL4Jim7NSHkDe0f1cE2dlZNeIBoOQPrdchULroCrf9QFSpdZRrtbjZatE8mna9MDPG1O54Y0/AZi78jDh/gYOZJSiVim4/6rWzL67B4HeOjLmXc/iTWmMf20NzuPvgV6vJ65TL4ry88g6spf3jh3kp3GufCIfqRxnmAacEnKRBiy1dVV2PTiJtWmpJJoymb54C3ePaFUnAPlshxKnxouIsGCCvLXES8dIzq+myNiGfE1zdmVV8+5jE+p9IEuSRFiLduQeO+j+4NPoPfEY9jyfOwMIlfI4KMdxYP3vHNu9hQ8eHECslMYmulPcqRMP/DIfr4AQnMUphChLeemrv7DZnbxxRzcmX+X6G/li+SHufX8DV3ePZMkLQ3lsXAJBPjqu6xODh0rBp8sO8dw3iQzuEMqoHlG8t2QfScfqflvWqlR8OGooHUOCSAipe4Gb8vtqPtoihnbPpbhOfagsK6YkLxOfoDByUw6571MolAy66QF6XH2Tux6P0+lk6+/z8QuJIiI+wZUcbjASGBHL4JsfoueomwAwFeWxct67pOzZdtoLr4dWh91mw0Oro0XXK/DyC6K6spxKUwme3n5ICiV71y/DXGGiVc9BTHzybZxOB+YKEwc2raasIBvf4Ag8/QLJPXaQrb9/jyzLxHXug8Nuw1JVSUluBmEt2jLklkfwCawf4Lfo3Oe071XnoeNOef+A613FFG2WatSa+iOIAFXlZRzd8TfFuRmk799J1pG9OGw298jAiRRKFZEtO6BUq7BWm1Gq1OQeO0jbPsO4+v7nUSobvtT5BLlGf70DggEICI+pc7+XX+1oaGxCt0Zfj91mpawgh7R9ieSnJ2Mqzqd1z0FEtuyARu9JlamEyrJiDmxaTWF2GqbCPEryMomIT0CpUuN0OGjZvT+dhox1J97X8A0OxzfYVXtJpfagRec+9X4G1VUVOGxWTEV5qDU6HDYbBh8/zOVlHN6+nuLcdNL2JVKan4PNYuZi0uSRkDZt2vDLL78QEhLCoUOuP8L4+HgKCgoYNWoU+/btOxf9PK/OxUjItH49mTG4L9a2AeivbUurlvdx+HAW4FrlUfrtWBTHd9Bd4ezHAakt3Q2ZrC5vzr18TaCy4eHbN30nc2zbAcJjO8Lf7/Jcf/hzTw6Dp7mSPzUGPd3HjuLg35t4fNE3xBYVM3jLJha2uJJ8nR/Xpqwl3pyKMqEM2Qn5eVaCQ2tLyP90VM87n/7IV4/2ZcuhAm4c4NovaOQLy1mxI6vR1xsX5sW2d69xjxoMmvY7f+3JpceV4/nh3li8FGY22jvQwr6XZjpTg+coKrPgkxF0QiAio2htQtK7ggiHw4lSqeChTzbx65Z0MgorkWWIbtuF22Z+RuKKRfz26atodAYe+ex3DF6+LP6/FziSuJ6YhO7EtOtCUVYaIbEt6TjoGopzMtB7+1JlKiXn2AHaHl9JtH35j3QeOg7FCSubTvXh+ff/PuDPn7/GbqvmgavbMLhDKI98utk97fPB5F7u4ORETqfsHj2xO5z0e+I3ItV+7MjOpbTawsfXDHMXiWvIxvQspq/+m79SL65vRReCUqWmZfcBtO9/JV4BISStXsLW37//R+e56t5n6DjoGpQqdZ37ktYu5dePX6Z5p15c++hreBxf/m6zWji6YwPbl//I0R1/1ztfhwFX02/CPe4LSw1zhYnD2/5i6+8LyE09RFhcWwLDY/H09cfTNwC/0Ehi2nXHYbe6vyU3pMpUyrHdW2jRpe8p252p3JRDBEXFoVAq2fLbfAzefihVKqrKy6gylWAuL8PTxx+1RkdVeSnIMpGtO+EdEIynb4C7D06nk/0bV+ITFIZPUBiePrW5ZE6nk7zUQ1RXlhMcHY/ey6fR/lSUFqPRG6gsLSLryF68/IMJj0+o8/d5stS920lO2oRPUBgVpUXs/Xs5VaYSQpu1prw4H6XaA53Bi4iW7QmOaUHmoT2kH9hBu74jMPoFkpd6mPhurtV8u9b+QnbyAaLbdMFiriDryF4KM1PPysVdZ/TGJzAMS1UF1VUVyLKT4Jh4wpq3oSQ3k+LcDFp2609kq45UmUoIiIglOCb+jEdiLOYqjiSu58DmNWQc2IndZsVcXoZaq8NSVfGv+1/jnE7HbNy4kYKCAm677TZ3/oePjw9fffUVgYGB9Olz+ij5YncugpAn+nbnlaH9cLQLRDOuDc1i7yI1NQ8AvV5H+cIb3G3/dPZio9wNg9VMuYeBx5yfoFNXI1sU4ARJV5vb8LrhAQpSsvD1jyH5x5eZO9ETC0o6P76M5NQCpsyfQ0hcM4qzcvAPC+GuX5eitdn4NqgLGWFt6Z27m/4V21C2LEeuVuA8YkQKNbunZn53DmKH3J5Fs6ex+6/f6BLnT3SQJz9tTDvta+4Q68fGt69G66Him/U5THrjD76f/xnXedbdUM8pSxwlltXOvowp/xJJtlFlcdAsxEh5hZ01y0uYt2Mfnz/WG38/jzqPLcx08OSniTw/oDc+Wg0DvpzP3vxClCq1ayXRcdff/hCtx97d5J/b75+/zpZf/8dV9z5L9ysnuo8veew6ru43EOXoB5BkJxGVBWR4Brvvl2wW8n+dw4q9e4ls1RGFQkn6wSRyjh2gsjifyVe1ZkjHMLYdKWDroQL+9+RA/Ix1P0iqzA60hUbkAg3IDa/Smfj9EtqHBPFon67o1K6L5JpjaXyzcx8RAQFUdRnB3sMHiLSZKAqOIyK+HT5h0eSkHmHL/A9w5GfQzM+HFUdTz/g9aRPoj8liJfOEPY3UKgXPTuyAXK1k7upD6D0VPHRNG7z1Hkz/bgepeRU4nGdv5tc7IARJoaRlt354BYSg9/Ihde92co4dxFSYy43Pvk902851HpO2fwe71izFXGnC08efssJccpIPYCpy/R0GRbegfb+RdBg4CrVGR0VpEUbfALSGxgvrVZYVY/B2fXN1Ohz88eUb7Fi1+LQXJLVGR3y3fhi8fAiLa0t8137u85wp2VREC2sJFq0nDkmJ3l5NjsaHSm1tf0uzUvjj/57FEN3KvRlkeUkBuccOMXjU9XiERLteR2EOJlMpKg8tvsERmApzKc3PJm1fIn8u+AStwYjO6E1JbsMbVJ6OT1A4VnOlK0g5Tu/li39YFEVZaciyE3OF68uIJEl4+gYQ1aYzQVHN8QkKJ7pN53pB28mqqyowl5chyzJ6Lx+0ek/MFSaO7tjA4vdfwG61/KO+X+wUShV+oZGo1B4Y/YKwVleh8/TCUlWJp18AcZ36EBwdR1B0i0ZHhMqLC3hr0uCz1qdzGoRUVVXRtWtX9u/fX+d427Zt2bZt2yWxTPdcBCFTe3dl1vAByO0CUY9rQ3jYbeTkuEY3fAweFC242d12k7MLq+UrAPCyVvKQ+gsklYxjnzdUK0nyd9Alpoztzvas1PWjoqgMnc6f5N/eYe41rovVwlIfXp2byO3vvu4+r766mjt//w0ZmOIbT0h0T7wt5UzOW4AqtgLZpMJ5xIsqh5M/OnanmSqH5fIAnCj/8S/p+JE9+f6BNlTJWjo/s5HNrw5wJ+AC/LzPzuMfrEQX0Zbg6Bb8teATZFkmwEvLqldHkBDjR1mlFVmW8fHU4HTKVGWq0Ds1yOVqsNYtg7/kwBHGf7+kzrHBzaL59faJLI6+gsM+0chOJzkph7DbLES16gjA0T/m071rb4oDot2PS07axNfT7wXA6OXN8x/+hNkrkJjybG5IdtVIOeIVgc5uwVicydasXFIH3kahX1Sj74fDbmPFV++weem3dY7//sBohg0KxGSyM2rWMuY80o+4SNfFpNKhx5rjSVKxL9sNvkyMPEJasZUpby/mwWGRJMT4MWdtLlFDptBOp8TXVkWb0hTWh3Rgt3+LE55FxkgFDpS0kFIotvtgr/agSOuDylLJ0Z+/YPHWzbTq0peMpA0cSz5E8xAvPp/cj87N/XEoHBw+UkkX70gsCitLUw4T5KcBhYxB0tK9vesiKjvhpEVgFJZWs2RzOlnFlfy4IYV9aaX0iAzlmZFd2WvKxeSwEB/mRZXFQWZRJQfSS9GolThlmcNZZRzKLMNqd+IXEklwTDzjpr6Kh1aHB1YiyCGfANpKB/Gkkip0eFFBmj2YBX8eosJkosfVN6JS1x3JALBazGz+5VvUGi29rrmlwZ+ZtdrMoa1/snP1YtIPJOEbHI7O6M21j77uHsZP27+Dec/fXSfwbQpJoSCyZQcG3nA/zTr0AFxBzdGdGzAV5VNZWoSXrz8OUzGjDQ7atu1Am7J0dA4rhZVVeHp4oFWrcCCR7hlCqjEUrcNCx6Ij6BxWcsor8FAq0atVlJgtBOh1qFVKKlVatA4rKtlJibkaWXZdDj7dlsTP+4+QVmZiYkIr1iSncbjowiZEeuj0eGj1ePr4U11Zjm9IJKHNWmGprCB51ybKCnPdS/pVHhq8A0Iozkl3vyYBotp0Jq5Tb9r1HY5PUBiSQolCocBmqeblCd3P2vOc0yAkKSmJqVOnsnbt2jrHBw4cyHvvvUf79u2b3OGLzbkIQh7q2Zm3Rw5CaheEclxrAgNuoqjIdTEO89eTMe96d9sdznb8LrsSpwZnbaVn5EYkCRy7fMCuYL/NxrRtu+l9/2xQS9gsFpQKHca8xTwSnQ02K/aYOG7+Lo+eN9aeN6C0lBvWrKZSo+GjAYMoPej6xjGp7EfC/TJxFnrgTPPkqzIVuf1vxGKuYufqn+l5tWvu+oMHx1KQkdyk1z1w4t0svlmDp1TFwUo/WhmKcciucvV5pWbaP/AzldUNz4MHemtZ/epI2kb7AlBVbaf71F+I1Pjww/Wj3d/8AWwOB+rjOxS/uOZvfjlwlM5hIWxMz2T1HdcTavREBoo1Rj5Yuw61rZoH+/djcdxgQsxFDM3a5v5j+MOmZ9aW3VyrMdPc28Dn25K4pnULbu7SkaNeEURV5mGwu+alfzuUzLXzFyMjI8uuXZLv6tGFmOunYI521dBpU5TM1nIbHiHR7nyBkpx0Kn75FO+yXIZ17ER4XFtCzEV42aoo0Hqz1zcWhb+Frh5JeEnHq+PKAVTgSZyUCoBThprcV6cssUQezj65JRyvvutDGcgyveVEAlVFBFKIVqqbiJssR7HB2Z0Mwo5X7XU9tpu0k64k4a/4Z1sxOJ0SkiwjKRu+X5ZdicVnKqvYzGd5PdDE9+dqaRUxUgYVGPChDL1UP0egxoodmdz4xp84tX4k9BtJuytG4BsSiakwF6NfEDpPr3qPKc7JoCDjGMd2bSZ51yZK8rLc36Kvim/GK0P7kVZqotTmIN0QhNUp08lewp6cXH45mMyOnFz+zXVPoVDSfsBVlORm4VeSyXVt44n19WF4i1iMmtqRwFXJqaw9ls57mxKxOR2oFAp6RoQxLC6Gwc1j8NVpifb2qrdVRA2zzcaq5DQUkkS/mMg65z6Z3eFkc2Y2R4tKCNDryKusoqzagp9Oi49WQ7CngdyKSr5J2kebIH9Kqy2YrXZ25eYT5KknrdRElLcXIZ4Ggjz1BBr05JRXUG61svRgMkVVF1eewuVC5aHBQ6unurL8rCUCwzkIQmqKkwH07duXN954gxdffJHNmzcD0LNnT1544QWefvppli1b9u96fxE4F0HI5O6deO+qwUhtAlFe1wZvrwmUl7v+8OLCvDj02XXutvudLfhJvgqAR/d+i76Dq8aGY4cvyBIWp5Nmc37mwQ+WgCQDTpCV3N0/m+Cdv0Gl66K1LaATEe3i2LjtGBkBnYnOzeGajRvJ8/Ji4ZChLH9nAX1G38EI+2901Rzh6D4LvxbEUnHFBABS9yUy95lJ3PLix8R16uOemmiKW2d8yv2dqumm2OU+9vLyUj74+ndsdielp1idAq4luAunDUKvUfHitzv4fbtrODjE04CHUkmlzcbEhFb8tO8w93bryLMDejV4nv35hczesJ0vxo5oUv9P5HA6GfPdz6xITuH3W8bTOyqM/l/MJyk3v15brcHIiBsnc43Oys3+KoqrzNzx8zKCR99DTN8rATBaKxmZsYmfYgdgV6hQOOy0KTjI4cCWWJWuAEuyldPL4yC9pW11Aoh0mz9R6qJ6z7uuOJRdlSF0CVfQS0ps0oW+XDZgRkuQVPe8GXIoG51dUdmtDLasw1RZiBpP7D7heGnK8Fa4/kYOys1Z4RwAgAlPQovSKfIJRVZCB/sB+lYloleYkbxs7n45HSBVqEHpBCWUldnIMlXg76cmo8SMr0FFXJgrULDKKqrRuIOyxmSZZNbuLWBsZ18MWtf7mHi0kAc+2si2w66/JY1aSdtoX3oPGEB1UBc8dAYCjGqOLPuc5Rv2UVxhoWWAH1e1bM53u/ZxRXQkPjoNbw4fiMGj/ojKiQ4XFvPYsrWsOpba5CmodkEBJAQHEh/gR++ocAY2qz+qdqSohJsWLm3w9+5kSoWEWqGkT1Q4fjotUT5eFFSaWZuSRm5FJTZH7XYS7YICsDgcdAkL5rp2rbgiOuKUgcnZUmqu5v82J7Jo32EOFBShkCTahwQS4mmgoNJMnJ8PeZWVKCUF3SNC6R4Ritlmp8JqJdCgr73pdRwtLuGrnXtZcSSFvjER9IwIo8pmZ/mRFDLKTLQJCmBNSho6nYIOsX7ce2UrthwqYNGGVA5nlaGQpEZ/ZjHBnmQXVWG1u96zQG8tk69qjd3hZMG6YyTnnJ1rxaXgrAchDoejzpBWzbbwNcdO/LdK9d+vIHkugpC7urbno1HDkFoFoJzQFp12nHuFTPtYP3a+P8bdNlmOYr5zHHFlGYzJ+xNt6yJkJzh31s4Zx/7fHO6Z82ed53h4SCZeR7dBxvF8jZZtkOJa4nA4ee0PE92cSgbv3MF+nZ7VI0ey8fufad/zRq7nF+KkVH5Rd2RLSQI6nSthbNefv/LTO8/Qe8xtDJ/0GEXZaXz8yPgGs9MbolJ78PR3fxOiqeJmxSLyqpR8sCyZ979a+s/fyNO4s0t7/u+qwa5RCZXra3hRlZlhXy1gb34hG+++mS7htUtqv9u1j7sXL8dXp6XYbObBHp15c8RAACosVvYXFNE9wrVCYN7Ovdy9+A/Xa1Mo8PRQU1p96nlmlULBn3fe4D5HqdXO4fAEVod1PeVQQJDRSvdm5bQMqcLulFi/T0uzst20tOxh+9Eixv7fIaY8PpW4cG8OyC3oXvYLA33S6i0LrnHXe+vZfqSQQ5llJMT4kl5QiUGrYvqNnbh1cIsGH/PHbjNv/7SPypB29Lj6RvxDo7DbrBzYvJoWnfvWyZVQ4MCJktLcTI7u2kzX4dc1eE5nRSkGvQpPWwnK1A2sPlBAQqdB6IMiUCPjY6vC31KKSe3JYZ8oytMO0sejivbhx4iRavMR7A4nG3YXoCrW8fna/fydk4G3Qc3+9FLi/HxJLTHRIsLIomcHExtS288N+/MoL3FyRadADPqGP6tkJ8gOkKpVyOUqsCuQC+vm5Tzxx1p8dVqu7hVBhwQvygqcrN9cSL/oaPeFe1dOPquOpRHiqeeN9VvrLC8HGB4XS5iXJwA3tm9DnL8P4Sdt7OhwOlm07zCl1dVU2x18tWMPySWlmG1n71trY5QKiTg/X1JKyojw8qR/bBQhngaKzGaivL1oGxRAl7AQVh9LJbXEROewYEbGNyO91MSevAJ8dVq6hAWjOX5NyCgzcbiwhPzKSorN1UR6GWkdFEALf1/3cxZVmfHRalCeIsn01GRXHfCTl/hLMnjbkAx28LOg8Gj4sme1OdiVUkzi0UL2p5fSOtKHcH89eq2aIR3DyC6qYuuhAgxaFb1aB+Gpqw1ID2WWsWF/HvNWH0GWYVzvaDrHBbAntZg1u3LIKa5id2oxZosrsT4uzIvr+zVjRNcISissJB0rJim5iNxSM2WVVvall7pXFDYmKDAUlVpNTk6G+3qsUCjo13c45RVl7Ni5CUlSoFAosJ8wVahUqmjdqj3xLdri6elFauoRNmxy1TQ5G856ENKvX78zfvJ169adcduL1bkIQm7v3I7PRo9AivdHeX07lIpr3L80PVoGsvHt2kJg+c4Afqq6mhuSV2DsYURRfQjZJuHcXfvH2vPTbxgyayEGL9cxH72NBwZlI1nMlC79BR+DB0REIXXoAsD/fbQC7zSZmwxaVtmdHJgwHoDqAg/uqPyeIKmIn4JGcqgkDke16+I9/9VHOLhlLRq9Jw+8/zPeAcGU5GXx909zSFz+42nnWmMSujHp5S8xFefz9qQhZ+V9PBOBBj1VNhsqhYIeEaFszsjGZHGNIrTw9+Xebh3ZkJbJzw3U1lApFLx31WCMHh68u2k7BwqK2HrvLUR6e9H9k6//0by4p4eaZ/r34uGeXdyB0ddHszna91p0Ia4AYFyXAjxUMqv3+2Ayq7ildx6hPq4+m80Wxox+hRkzb6RHtxbs359Or95PUVlZTYuu/dBoNVzd15sJvSJo6SjhWK6JpOQidh4rol20L0u3pJ8ykfjRse0I99eTdKyY4nILkuT6lvfNmqPYHa6fsVKl5rrHZ7nrKwDkHDuAQqHCNzSCb2fcT0leJuZyEzaLmXZXjGDgDffjdDpY9PbT9B5zG216D/3H9RQUOBhZvJ72RckczSrnWGEZw+Ji67SpsFjxPB4AFFeZ2ZGTh0qhYFtxJl07ezG4cyjSCUGabJdAqjtlJDtocArJXqEgOdFOblE1M9ZsYENGJn+8NKLOEvHKahtv/riXBH0ow9pEo3dqwKykZoprW2YOK4+l8PuhFB7p1YXx7ervd+R0ymSVl5NrNbEmJZ0/Dqaw8VgOBq2KqEBPIgIM5JaYqbbaSTme7FtzofLUqagwn/vg5FSCDHryK2vrAkmSa+rNT6elpLq63jSVJMENCa25vn0bRrSo/Xk6nE6UCgUWu53tWbmEGD2pttlJKzOx4mgKerUapSSRX1lFQWUVnt4KurTy4+4r4zF6qpEdYLPC4TQTWrWKZuEGFNraJ5dlwC6BVYHN7kRtlOvlMZ2JvMJqVA4V/sFn9uXb4ZTZsC8PnUZJt/iG68jUSM0rZ9n2THanFJNVVEVmYSVICq4Zcxe9BoynutqCr6/rC6PdUoEkW8krqcTH2w+93rUiyWazolZ7YLVa2bN3Oy2atcTbWo6Hlz8quwVDZRFmnTclCi3Dr+2F0+k8VZfOmChW9i+diyDklg5t+XLcSKQ4P5zjW6PxGOu+b1CHUFa+MtL9b7usQdrh+iVSDAlCKjmIbFbg3O/jbnPt/34m7J5XCItrA8hM6ptLhJ+VlJQ8nrzlZRZOG4TF6MeLq3J5feZECgrKWHT319zVuT1zsvKpfGgyaqeVHtWpdM5fh0KSmRM2kZycYGS7gmWfz2Lzr9+5n69Fl77c/MJH7n8vn/s2GxfPq/Mae11zM+YKE0lrfuGKa+9kyK2PALUjKv9VXhoPjBoPskz/bglbnJ8PD/TsTLKjmptnXkvb9nF8t9mV8X9rr0w+/nApb731M/0HdkClgGXLEpk6dTS//LKFrVsPExrqx7btswkL8yc/v5SUlDx+/GEDw0d0ZsiQjoCr/syHH/xKSkoeH3+8rN6HikKh+FcfNBHx7ek8dCxlhbms//FLnA47Hlod1urTz+nrPL0IiGhGWUEOARGxdBo8huYde7Jn3TIObF6Np28gBm9fIlt1IKZ1J3pmJxHi70+iLpQjB3fTPflvrmnZHP0J0yGrk9MY3Dz6FM96Ar0dKbCaaouDY1kVHDlaRWqpCb9gBc21AXQLCcVqdfL83+sotlZxx/AWDOhau+LJZney+VA+Ww4WEBFg4Pr+zagw20g8WkhMsJHoIM96T+mwyyBLKMwq0DiRNE5kiwLZpAaFE6vGitUis+NQEUlZhcSE62nfzI9mJ4ze2OxO1KqGr5DF5RZeWZBEmJ+ex8YlkHSsiL2pJeSWmAn10xERYMCoU7NiZxZmi4NRPaJQSLBuby6JRwvx8dRQUm5h4foU9zREr9ah9OkQx5EiNVv3HCYnNxNJktBq9ZhPUVzNy+hDtcWM9Xj+TFRUMwwGI0ePHsBmcwXUarWaCePvxFJtZtkfi6iursTf1wcHarycFrw1GnIrKimoqsLb2x8fL2+OpSXTNtqHskob0UGedIsPoNJsp39CCEG+Ojo398fX8/TBbUmFhWXbM9m6t4gYRQADY6JpHejvGnVRO8DDCXYF6BxIBjuSxoFsV4DF9d7L5WpQu36G2CXkaiVUHQ8ylU4w2JH8rEhG14iDXKGGchUY7Uhah+ux6trLrdMps2FvPl+vPYyHSknH5v707xSHr6cHXlrQKBuvu+WUFciSAovTiFoyoz6eF2WSQjEpwqmUAnE6HPg5s9DlV6ApqELWSShtVhQ4kIIsSEoZ2aJAUjuRZTBM+gLrWar1dc6DEG9vb+688053sbJ9+/YxZ84cTKaG6z3815yLIOSGhNbMu+4qpGa+VI+Nx+g53n3fmF7RLHp2MDZZhVqy45TUyNtdH0KKq4KRcg+Apw+yZ0uK9xThk17Mw7+tIqvrNXQdfh0tIiu4vlMRpaUVdO/2KEa1xPY3R2CR1PiO/5pjf71JYGIBVdll6JUqpq5aT7OP3uWKks10Me0BoFj2Zl7UBCpT9YDEe5Ovpjg7vc5rGHHnE+4VBA67jS+eupXso/to1qEnA2+YTFTrTgD89umrXHVvbdDx8/89795A73KnVqvYs/cD4uNdwceGDQf49ps17Nx5jK1bD5/28d26teCP5TPx9a17wauqsmCx2Ooc/9///mLJ4s3s35+O2Wzlk08fYMiQjhQXl/PlFyuYN28NAQFebNx4AKVSUaeA3sXCW6uh7IQpL08PNaNaxhHm5cmfKRkkZucypnULRreOY07iHpyyTJXNTq+oMKrtdvx0Op4f0AudWs3faZnc/MOvZJc3HEz66rSoFYo63+QBQv10fPvEAAYk1C/c9dAnm/joV1fp77uGxzP5qtYEeGnJLq6iTaRPneH6f6u43EJuSRXRQZ4oFRJaj7M39V1cKXMwHyID9EQaXQGlEwVZUkd2pVUQ5OeF5N2Kn1ZvZtXqX9izNxFPT29KS4uQZZk+vQYz/fl3kSQJfdEKWhpzsKmDUclm9HI+ksOCWdZTqYrCrvRCJ5fi40xBIVtRSQ6KFHGk5VdiLs9DhRWN3pfAkGaYlFHoSjcS41k//+lEDiccLlCQXulHLnF42rPQKm0oHOXkFpezZuMm/tiWSnF53elTg4eaFn6+lFksFFRW4aXREOHrzcjWrZFUKo7lFyA7HVitVhxKNQVlJeRVVHJbv/50Dvand4An61IyePnPjci4Rnz8dFr8ffxpFRlJkH8QeqeVVn7eeCrAU2dB5WVxTfGVqcGuIN/qpMChwDM4Ek+VElmSqNJ7o9cWEmA+ikJrA7UTtMcDBKlpSd1nQnbKBN74HSUVTaua3ZhzGoR06dKF5cuXYzab2bp1KwDdunVDp9MxbNgwdu7871dtPBdByPi2LfluwiiqQvWYRsYSFTnJfd8N/Zvx6UN9KMaXSG0FVrsT5a4Aqqw2FFcHQdZBCAhC6tqT9O8PEJZSyLsbt/Papp3Etu/CwmUv0FxbxquzfubVmf8jODqcQ28PRoFMm/sWsfLuW2mu9cT1o5YY8+0i5JHDmd+vCsXxH/9uZ2tSI7tzIN0TD62Ob16exNFt9fdqARg39VVa9xwEuAp59bjqBpQqNTarBfmkaqSVplI+e+yG/8R+B+dau3bRLP31BSIi/Ckrq6Jrl6nuWjFN4e2tZ+jQToSF+XH7pCHo9Rqun/gGe/emMXnyldxy60A6dmx2yqDCw0OFWu26iNntDnJyivni8xV8/fUa0tJOn/D4X+Kt8SDE6Mmhwn++X4skwajuUYT46ujdJpiWEd5s3J/Hk3O24mhkYMlDpaBlhDcGrYqerYIpr7SybEcmHWMDuGtUb0JCgjhQ5IUHVXSMkNDLxSSmVNIiIgBJoeaFH9NY89dKurdvxbZduymvOnFOX0F8dBgT+rfkviEhVFY7+HptOoFBkQT7e9MsKhyb0pvM/FJ8dU7i/GyUVkscyqpg+579tAiU6dwyHFR6Yn3teGBFr3X9PjhRUFStQ09pvddUKkVikYz4aOxUSz7kWbwpKcom2k+BBxVoZBMGuW7AUJMcDFBttZ8yWfdM2lZIAShwoNAGYlJEUqaIpNjmg83Z+HyK1Wrh742rSEk5gqm8hI2b1lJZWY5GowNk4lu0w8fbl+7d+zNk0NVoj69is9ms2O21U1w10xs1VBLsPbCb5JRDqFUqAoPCCAwIISK8/uich4cr18XDVoWh4BjeuYfxqshHIdf/BdKqVO68mMTiCn4utNFcZUXptKGxVtI7Ngg/vY4yqZIgjScqiwcoZOye1VjVVtfICyA7FFi11Wh1CrILzXh7qgny0bFiRxa/bEwjPFCPxeZkxY4sthwuaPT9a6qmXkPlptzWrVsnz5kzR1Yqle5jSqVSnjt3rvzXX3816VwX681oNMqyLMtGo/GsnXNs6xaydcbjcoCnvtE2CXFhsuPXO2THr3fI1pmPydE+Xo22bR3oLz95RXcZkPdl/SC3aRPZaNtIb6Ns+/gB2b7kTtn61iOyWqFotK3ey1ee+VuSPOy+O077mtQarTxjyW73rUWXKy74z+6/cPv99xfla6/tfU6fo3Pn5qe8f87cR2RT+ULZ7lgiL/31hQv+nlzOtw7tu8trVx5y37y9fRtt6+sbID/x6Cvy77/slNeuPCQHB4c32jY6Oq7OeaOj4xptG+jnJ6+f85I8/9WH5KsHDZKPL7tr8BbgpXV/Tjl+vUPu3y6k0bYeKoW86PmR8uyHx8gPTxwst4n2P+V7kf/DffLRhdPklR89JQ/pcurf4d9/2Sn/+P16+eWZH8txzVufsu3PP2xyvw+jR914yrbzv1ktL/9tt/zLT1vlieNP/Tk45/Nf3ee97ZYHT9l2QP+RcreuV8gR4TFyu7adT9n2+QG9ZdNzU+SPrxkmK6TGfxaA7K/Tyc39fOSE4AD5hvanfh8AWadRnrbNv7015Rra5PG8rl27cvfdd9fZJ8bhcPDGG2+wffv2pp7usmE/g3l4B7WR/DFnFTSyvr/Gy0P6Ee/vh6by1JGmQpJQRLqGWJWtyrGdpi8aDyfNunY6bX9Pln30v1+y/3wYP/51KivPbIXRP7Vjx6nrudw/+SPuuvN9rr66G+Hh/qdse7GQJOmMCk9dNXI8o66+nh9/mseevYnk5TW+vcD5oFAokCRFoysPcnMz+ennr+napS/lFWXunIqGBAWGcOVI18ojh8NxytUMeXlZfPzpLMzmSnLzssnPz260bUFxMVfc8fwZvZ4qi51HPt9JsyANAztGYbY1/nlitTu59qUzL9sQNP6TM2574y2DMZWXndHmfC+/+igD+o+kffvuWCyn/tt7/sUHOXp8d13pNPMezz4/mQ4dutGze39MptJTtv3zr9r3ITMr9ZRtX/pzIy//tfGM6s0Umc0UmV2f73vyCk/bvmZ1zsWiydMxubm53HLLLaxcubLO8WHDhvH1118TEhLSyCP/O87FdMzIFs1YcvM4Kv01HOzqS6+ej7vve+22rjwwqjXb5E700h5CI9l4elkWLzw/Efnvta5GA4YiaXWk78gibPkxJCR3gp7DR4OtTwTfq5rz1MhbaNalExOee5R7Mr5BKYFzrzfGrrXz3DNX5/Lgg1eh2bmZcpvM4mJPPFpeT2qRay+UQQk2PLyrePOBF/llcd0S6yebsWQ3AFlH9vLZ4ze6j2uNnryw6hcA7BYLM4eOxm45O/ON/xXTpo3nmWcn1Dk2YfzrLFuWeIF6dGo+PgZ++3067dvXrlIoLDRxw/VvsnnzQSRJQqlUYLefvw+xYUPG4O3tQ0hIBFdfOZGc3AzW/72CdetXcuToPjq07870595Bq62t1KxUqvDwcA2Zy7JMdSNJs9sS/2bDxlXYrFaSUw6Rnn7srPV78MCrGTP6JjZv+ZOW8Ql07VK7nUVhYR4PTb2BsrKSU55DpVITEhKO2VxFm1Yd6Ny5N/7+gRQW5rFu/Qr27E2sE4RotXqqqxvfsbqGRqPF6XS6k0UvR/5+gahUasorTHh6ep0yQBOa7pzuortgwQK+/PJLHn/8cTZu3AhAnz59ePPNN5k/f/4/6/FlwHY8Wjeo1fXWfof46DFo1UhOTyxo0GDDabGgL84DrRqHfyCq42vpfeN8efjh1Xw8Zrj78cpSC8rfklFe05LuY0cxSCUxPnEnliAdgVo7Dt+6IyovPDwcJAdo1RzMLWPGzF/54rdxZFe66pC0CM4hws9Kn5+fod8VT7Fx40FGjuzCX3/tpaLC9YGu8zIy5umpHNy+glZdh6ELkel743jS9+4nffc+mnfpiEbvmlfV6HUkDOrPzmV1A9f/CqVSwRVXtKW0tBKHw0nnzs1ZvXoXmZmNf+u48cb+vPLqrXWO/e9/f120AQhAaWklw4dNZ+DABDQaNTNm3kTr1pFs3PQmACaT6wI3/rrXWbly5znvz/jrJnH/vU/XORYd1ZzoGydz842Tyc/PQa32wNfXH4fDTkFBLrv3bGfx0v8xdPA1jBg2Fg8PLR4eHuTkZlJcXMjuPdvQaHSMHX0T/foOo1/fYe5zp2eksGLVYtQqNeFh0WRkpnDw0B6Cg8OIimyGl9Gb6Og48vNzSEk9jNVmZc+e7VRXm8nOyUAhKejUqSc9uvVj5IhrAWh3wv41O3Zu4vDhffzy6/zTBiAAdruNzMxUANZvWMn6Daf++zmTAAQ47UjA5aCouDb/oeosbtwmNF2Tg5DHH38cWZb5+uuv3YXJbDYbH3/8MU8//fRpHn35ck/HOGV3pdQaPgbXtzYLHpRUVONlBG+9GrJcq1N2Fjio2UQ6KNiH/+05wE1Tr2KQzQBZtVGmvrSCrqOvZOrmjVBYgGRUgA6ypSIiOWEJW04WHP8QXL4llfz8Up6fOotxT7wDQJhv7TekK6/sSkJCDB9+NJkNG/YzcMAzRHfqwPAH7qJ5l06u4UK5kpGhwdx31V38lqLjswcep+2AK+q8xl4Tx5K0fLV7b4f/Co1GzarVL9OnT5s6xysrq7nqyhls2XKIqVNHYzZbMRp1jBnbi86dm9dpd9ut7xAVFciHH/52vrvfZBUVZpYudSWcr1ixk48/uZ8bbugPgJeXa7Rh+YqZ/PbbNlau2Mn3368nP7/0Xz+vMcCfmIR2DBk8ilCvIOKjWuFt8HbfX1CYy+x3p6PT6enXdxg9uvcjKMi1WiUnJ5NJd19V5+J64MAu/u+Dl/Dw0LimjhUSIXGxdBo5jNZXtONggAmfKjVkm7BVmYkIjSYqMpa7Jk09bV9bxrfjir5DT9vuwMHdeHn54Ovjz6uznmDDxtX/4J0RItq0wmG3kX8sDYVKid1qo3nXTijVapBlCtMzKcq8sFNuwj/XpOkYhUJBnz592LNnDxaLhebNXR+2ycnJmM2XTu3/czEd0zc6gjV3XA8Ben4JsXHdta+571v7ypX06xBCwVE9h60p9GkTzIfLj/LA8DhQqenxzCrunXwld97l+tYWFTmJxUueo3Pn5jjXpeH8MxWA5a1aoTB4MjTRlZsjhZhRhJsprbDg08A6+rxqiLn+K3cZ4q7DryM/PRlkE0vXf0BCQP355vT0QszGUJIrNOSbVZRYVSicNh5p79pjZGm6kcMlKhTH93FZ8sZ7XDX1flRqNdUVlST9sYrVX35NcWbd4c9e48cSldCGRa+8hd3y73a71HoaGPP0VFpf0ZvNPy5hxcdf4rA3rYiTt7eBCRP6cvc9w+natbaiqMViw2q1YTSe2UaNLzz/LS+/vKBJz32xueaaHjzz7AS+/WYtgwZ3YMyYnu777HYHG7alMPPt5axd9Eedx6nVHnWG/MPD/enRoyU9eyZgCPbHHNuNnPxyQn1CiNWE4GlV43HCCgcnMjmeZgr0FkoL8lny5nsc2+Eq/28uNTFg6NXERcezYvnPJB871GDffcNC6DJqJANuvQHdSdVIT6RwSqgPFOLMLSct7Si5uZm0iGtDdHQcefnZZGSkoNcZyC/IweFwEBYWiU5noH27LqhUaryObz2fnpHC/gM7Wbd+BZs2r23ye325Mfr7UVlWRsLgATTr0pE2/ftQXVFJ/rFUPP39CIqJwiswoM5jbBYLak3dz7PDm7by19fzOZa4C+sldC06U2qtBp+QYLqMGoFK7UFpbi7eQYEUpGVyLHEnxVk5OM9SDZAzcU6X6JrNZlq3bk1qauq/6OLF7VwEIT0jw1h3143gp+N/XhXcfts77vu2vzOGTi38yNutYEtVCtf0jOa3relc1T2KA5km2t33IwC7dr9PQkJMvXM7/jiKvDWLChk8T8ijqjZWY4ivHaLdmVJCp9jaqqtPztnK2z/tbbC/9707g48e6dzgfTXKLAoGjH4bXUUeG/+u3a13T7GG5ake/PHRl6z58hsSBvfnljdfRnl8SWhZXgGf3P0Q+SmuKp5+EWE8u2wRAD+9+jYb5v9IeKt4Rj58L37hYXxx/6MUZ+Wcsi8nuvG16XS5unaPmIz9B/nkroewVlYxalR3tmw5RG5uw8PhCoWC2bPv5O57hqPTuT7ozGYL14x6ie3bj+JwOJFlmR0736NFi7A6j/3tt238unQrOp2G3NwSvv/+v189+GRKpYKnnrqOuDax9B/ajdgg13tUaZdYsy2bmU98SMbhfF547h2aN2/Nql0rqLCkMHpAJ5qFtMdUpqOyQoNS6cAnoJICuwTFniiOl0R3yk5KbOUkF6Xx1+aV2Jx2uo4aSUBURJ1+VFdWojUYKM3N489585GdDo5s3k5heiYGP1+6XD2c2E4daDugr/sxZlM5mQcOcXRrIjlHkvENDSFhcH9iOrV377BbllfAkjffQ+dlpNOIIQQ3j8Xo74fDZqfKZOLolu1ICgV+EWEcS0xi5adzqS6vIMA/iICAYA4f2XfWqk5eSnxCgvH086XKZEKSFIS3jqfH2FG06tvztI+122zYrVa0BoP7WHVFJaaCQpwOB4HRUe7PFnN5Bel79uEbGsKRLds5tn0n2YePUpCW0egorCRJKFQqHLYLWyfHKzCAwOhIbBYL/hHhNOvaCbOpHFNBATEdEgiNjyM/NZ3kbYkEREUS06k9CkmBpJAIa9nw1gs17DYbhemZrgDOwwOd0UjWIVddIp3RSEFaOj/OmNXkL2uNOadByLZt23jqqadYs2bNv+njRe1cBCFdw0PYeM/N4KPlM2UhDz5YmwV+6JPxxEUYSd8O847s5PkbOlFZbcOgVbNyRxYjXlgOwBtvTOLxJ8bVO7dzaxbOP47WOVbo5cWEpcv444EW6DSuP9DXFu7i6u6urd8Bej76i3tDr5N1vmoYn3z1JF0DXN8qDh/OchfYOtFrry4kNTWfTz97sM7xBT9u5sYJr7pXM7Qb1J/RTz2CX5hrCL28qJjXR01Eo9dx5wdvEd4qHoCC1HTWfPkN42dMQ3F8nfyWRb+w8MXakaPW/foQ26k9ib/+wegnHkapVlOUkcWG7xcx4qF7aNOvD06nk8Slf9CmX28Mvj4AGA+v5a5xCZSVVXLlyBfZtOlgvdczenRPfl78LAB79qTy9bw1fPfdn/WClsBAbzp1akZkZCDHjuWydu3uBt/H/zqlWk3P60YT3iqesvwCerbsQXTzFpjDtFiUTvw87FwVXY6fxkFJsZ7yMi3pad44HbX1HpRKJw5H7Q69DSkpS2X2O6+TmrqfKVOvIjk5l6++Wo3ZbEGj1zPorlvpMHQggTH1N3Q7ncL0TNbO/ZYtPy1t9EJ0/R1X8ej0OylV+pBR6YFThkq76/fPITfeb6u5mpQdSaTvPQAShMW3QFJIrPxkDgVpGcR0bI+lqgrZ6SRj7wHsVivRHdrRY+wo0vbsY+/qv+g25mpC4ppRmJFJQWo6/hFhlOUVkLx9J+VFxRf84tiY8FbxdL3mSvJT00jetoP8lDT3CiYPnZbA6Cg6jhxC866diW7f9pTnMhUWsXvFGlKT9mCtrqb9kIEExUaz+ot5HN60DVt1NQZfH2RZRuvpSWlOrvuC6RsWwsBJN9Omfx98QxteGFGclcPGBYsoyc7F09+XyHZtiO/ZDUmhQGswoFApydx/CI1eR3VlJWqNBk8/X/KOpZK8fScVRcXovb1pO6Avem8vco4kk7prD+YyEyoPDRFtWuIXEUbO4aNoPT2xVFWBDJVlZTTr3AGvwADyU9IoSMsAWebg35sozc2nTf8+dBg+GP/IcLwCA9yfef9U5v5DHNuRREBUBE67HZ+QEIKbxaDWnrqibGVJKS/0G3nKNk1xToOQ4cOH89prr/H888+TmJhIZWXdMr5n66J9IZ2LIKRjaBBb77sVjB7Mtmbx9NO1Jc+z5t1AiL+OA+vtPPvXn/z0XO3+HN+uOcpts13fqAcMSGDN2lfrnLeyshpdThXO/+2pc3yznz/9H36GmTd35pmJHSipsND2vp/o2iKAX6YPpbzKhv/13zZaOMjT35cZf/4OgLeHg8Q1m/jwPtdeFwcLoSItma5dXNNxdrsD1fE9UTZs2O/On/j4o9954IGP65xX7+3Fw999QWhMBB20ufSIVrO5QM+OovrTG8mJO2nexbVU2FZtIWXnLhx2O62v6A2A0+FwT/ucyOl08vu7H7F27ne07N2Dez59F5C5I74Ebw/XRehoSgEd2k7GbLbg52fk1lsHkZFRwMtv3kPLWH/WH7Nxx/Uvk9xIwbaLXUhcM/TeXqTs2HVGy1prhLVsQXCzGPasWYdGp+X2d1+nWZeOAOitSloVe9d7TGZeOh5qJ0F+Me5jnp7VGIwWigsN2GzHc8ckK/nVJkxhavQmB1LaMWIiIwiL8CA6phiH00Jhocm9ZNhms7NjRzJVVRbi4kLZvv0oBw9l0alTc4x+Pvz86w72FaqIbt8WlUZD8xOWleenpHFww2ZUHh78/t4nmE9Rzdlg0HIs5QsCA+u/NrvdyVffriMru5hbbuqHrFCzfGcRx45kMHpMb6KC9XirHeSaVeRXq8g3qzDbFVicEuU21++mRunEqHbicILVqcApg/k0QVkNm8VCUUYWCqUSs6mc/NR0/v7fD2QfOtLo8LpXUCC2asspX/PJJIWCln16kHP4KGV5rqTN5t0606xLR7IPHaGiuIQ2/fu6Lm4OB4HRkUS2bV3nHDlHkgmMicJusaL1NNS5z+lwUFVmQmc0guT6ErL/rw3s+3M9NnM1qbv2/utgS5IkWvTsRmiL5sjIBMVEExYfR0iL5u4k+YtdWV4BTqcDU34hmQdcU4xGfz+KMrJISdpNdPt2BMZEUVlSyqGNW3DY7EgKibzkFLyDAklN2lNvNEOSJHxCggmMiUJr9CQwOhKzqRwPnQ6FUklpbi4qtQdbF/961l7HOQ1CTqwPcvLOumIX3cYlBAeQeP/tYFAzoySZV15Z6L6vbOEteOrVbF5excT5S0n7aqL7vtk/7+WJL12JgiqVkl9/m86wYa4PW6vVxuT7PmJ4j9aMy6uNdEtkme5fLiAtIxOdRsmjY9uxZFM6e9Nc3+bH9Iomt6SKzQdPXSFv6H131BkKjzRYiZSKmDjiMTq3Duann5+t0/7RqV/w7rtLuPHG/nz9zaMoFAquu/Y1fvppY512/W8az4LPJxGkq/1dev/T1bz74XJuevtVfENDMBUW8dqV1zFx5rN0HHHqze/M5RU4bDY8/VxTTd8/9xLblrgCKEmSePq9p+jbty0jO/m43jcHeCihwuLk8P5UOndqVud8did8dcSXvKJK3hxzE4HRkQy681ZMhYUsnP7aBUmu1Rj06L29KMnOPWU7n+Ag2g8b5M7DSdm5m88nT0VSKAiNa4apoAir2Ux5Ud3qoYExUfS75Xr6XTsOrUNJYKUW2Wan3FMmx1bEtmXLmdDzWoK1fo08s4ssO6lQF2EKtsCx7aQm7eOHhfsoLikhI8O1BNbTzxdJoaC80FVZ8667hvH4E+MaHGk7nW+/Xct9935IVZWF1lf0Rq3TcixxJ5XFpWcUfF13XR8++/xBfHw8ycwsJDk5l169WuLh8e/LrVfZJZTIaBr4SDxWDMuSlVh1vuSnpGE9nMgd13akxKqksMSMMTiYIqcneWYV9gZGYqorKln/3UJWfzEPndFIWMs4sg4c5qqpD9Bt9JU47HbyklNI3r6TXctXYwzwR+/jTVBsNGqNBg+dFq8AfypLy0CWUWs1tBvUH5vFwq4Va/ALC3UHn6eScySZiqISWvTsWv/1l5lI272XPav+5MDfmzHluz5vFErlec1PUGk09Bh7NZ1GDkVSKFAolRxYv5H8Y6koPTzIT0lDdjoJbh5LdUUFofFxlOXlk5ecQqs+PQlt2YKw+DgqS0rZuvhXijKyaN2/D/7hoXjo9djM1ZTk5FJdWYXO6ImpoBCtpycGX28CoyI5tGkrmfsOEhgTRUBUBJ5+vrTo0RWNQU/O4WS2//I7KTt3U5KTS2VJ6Xl7X86lcxqEnG5HXbGLbsNaB/qz68FJoFPxRNZ+3nvvF/d91iWTUCollv9cypVf/kTudzcQ6O2K3J+au423FtUd5fD39+Lt2Xfy5RcrWL9+HwpJouy5R9xbZvf/4n9syjh7694H3HYjox5/iOTEncx9+Gn3N6wBAxIwGLQs/OEpdDoNQ4c8x+rVrsTBWbNu54knr2XZskSuuvLFOufr0y+B9X+9itUhYXFKGNWui/r0F77j3Y9W0P/WG9iz5i/Sdu1FUijoed1ornv+yTrnOPD3JjL3HSTvWCo7f18BQKcRg9F6eeFM209hoYkePeKZ9swE2ratHcJfsvowlthujIgox8ujfjBxqMyDvw5ZOJxWQnjreMqLitF6GtyJcH99PZ9f3/kQ52lqZRiN3txy0/1YrRaqq838vWElqWmuKTOD3pO+fYcSEhzOwh/nnnJTMHB9aE/5fg7hreI5tGEzib+toDQnl57jx7Di4y8pTM+k+9iriWrXhu7jRtUb0q0oLkGWZYz+rgDC6XSSvHUHv7//Caa8Am55+2XatO5ITJknWkf9kaVqSzWHDu2hQ/tuWKzVPDH9HkrzCrh2zC0k7dqKp6cRX98ANm/5kyNH9wOub9ZNDdZatYpgyJCObNhwgKysIvr2bYPRqEOlUqLRqBgxsitFRSYStx8lJMSXJ5+6FpVKyaFDmWRnFxMZGcDGjQdZtTKJxYs3u5eTR0YG8s23j5KXV8rf6/ezZcshtm49zCOPXMM7794NuBKOJ4x/naVLt6JWq3A4nAQFedO9ezy33T4Yg0HL+nV70Wo9eOjhURgMGr777i/Wr9uHSqVgwMD2qNVKunVrgbe3AZ3Ow10Wv4bFakdzwn4vDoeDAwezsVmtdOrUnIZYrXbWbzmG1WZHq9dR5NBT7RNJkWzEeQYjKf9WfkoaxgB/LJWV5Bw9Rsae/diqqynNzUNn9GTHslWYTeUExUYTldCWwvRMqisqKMsvwGz674+Kn0tnWnzvv0jsovsvnYsgJM7Ph/2P3AUaJZOP7OTLL10XTp1GScWi2wBY8E0+Ny74lWUzhzGss2v04Y531jFv9dFGz1tj94OTaBXoGsaOf+dzUkvLzkq/a/gEB1GWX9DgH0337vH06NGS999f6j7WvHkoR45+hsPhIDrqDrKza79533PPCD759AH++CORH37ZyZcf3QVAXl4JMdF3NrjniX9kBNe/9CxqrQbv4CA+vecRco/UVgX96KPJ3HTzAH76aRO33Ta40dfRvdujRMT25robJhER7o1Wb8MnrIz95R6klLuWSi//8HN2/rGKO99/s8EchGOJSfz27sekJjWcBxITHccTj71Cm9Yd6xz/869lrP3zd55+chY6nWv6aVvi37z2+pOUlLpGBfTeXoS0aI7ZVE58z27YrVYi2rSi+9irG3yuqjIT+//aQNdraudz03btJWn5ao4lJnHv5++h9/Jq9P2QZPCp9iCqTI/yhIq9+9P3c3D/Lvp06k9wcG0C7jvvvcgvv14c9YD69m3DgoVPERpaf3QmI6OA1NR8mjULwdfXE72+7px4bm4JISGukbO33/qZN95YREHBmf3NKJUK1GoV1dWNF/vS6zUkJMRgs9lRq1Vs3XoYWZbR6TSEh/vxwYeT3SOaNfbuTWPVyiT8A7wwGDT07NmSsLCGq9kmpxWRWOaNn783IJFdASV2DU6bnR9ffoseLb3RBwRSpI8kOK4Z0R4mQrwkbBYbRqWVgoJy9uzPJC2/mopqOx27tmLf5iQO7E+jVZ8eyJICU0Ehqz6diyzLqNUqfHwMPPTQ1UyZOhqNRo1arSItLZ+dO4+xK+kYf/yxg927UzGb/93qNuHc8vMzUl5uxmY7O0moDTnnQYiPj0+dXXT379/P3LlzKSk5fQGe/4JzEYTE+HhzeOrdoFZwc9JGFi78G4BgHx3Z396ALMMnn6bz4K+rePnWLkyb0AGAq6av4I/EzNOef/WkiVwRE+nq/0vvYDmPVS0b8+dfr9GvXzuemTaPd95ZyvjrxvDTz0t5663buG/ylcx6/UemTZuHSqUk+djnREYG8n/v/cKsWYvIyam/2Zivjz/du13Bxs1rKS8vo2PHthQWFtOjRyw//DiN0hId5io1waEmFAooKCjjndmL+emnTfyxfAaHDmVx3z1f89nHi90VNQHskpMyjQ2b0km+VM4rN95MfoqrJkGPsdcQGt+cPz74jA7DBjN22qPuTPzlH37Oik/mMGTwNYwdfRMt4xPYnriBjh26o9G4qs9mZaVhMpXSsmVCnRGK9PRjBAeHodFoKSsr4cFHrqes2sRD336Gf0TD0xI2i4WUnbuJ79mtwfsB0nbv4/2b765NCO7dh3unPkvS4UR+ePc9KktK8QoK4PaZM+jfojdGqxrF8W/UW7et5/U3n8bb25fU1COu99w3gNtufoDCony2bl/P4cMNr6a6UIKDfXj44VEEBfmQmHiUqKhAbrxpAFFRgfXa7tyZTHFxBf37t0OlUuJwOHj5pQXMmHFhgqrQUD969myJWq3Ey0vP0qVbycsrrdNm4MD2XHNNdzIzXUFq9x7xDB7cAT+/xpcbn2jvXtcKtHbtos+4XzabnS1bDpOXV8r+fenEtQjl2mt7n/EU1YYN+1myeDNz5qyiuPjSGA0526MWwcE+OJ0yDofzrL5HPj4GIiMDsdsdZGcXU1ZWiUaj5u67hzNmbE9CQnxp0yaKoiIT27Yd4delWzGZzGg0avcX47PhnAYhV1xxBUuXLqWsrMy9V0yXLl3w8fFh1KhRrF+//h93/GJxLoKQCC8jxx67F5QSYzau5fffXe9ddJAnx+ZMQHbAmx8mM23FX1zbJ4aF01y71HZ7ZAk7kk+9jTXAkpvGMTLeldvgMf2ts9Lnf+v22wczZ+4UnE4nO7arqTQ1p8qch0/ADnr1as4N17/BggWu35fHHx/LG2/eAUBqah6tWt6H1VobqV9z9Q3cfddjeBqMlJQUovIoxmhogU5vo2vPNCRk/loTg4QHSHYKCvL47n+fsmSpq0ZHgH8QNruNV2Z+TNs2rm+gO5O2EBwcRlhopPt57HY77/zfdDZtWusenThR74njuPa5JwBw2h2UrdjF4M71c1b2H0ji/z56mUMH9yApFHTr0ofXXv4UhULJhk1rmD7jIYZfO5FJE+8nwCsAs7mKw85cHM19XP2wWsnYewAPvY6C1HR2/L6CfWtd71Vk29ZcOWUyGxf8hH94GJ2vGk5JTg5bfvqV4qNpdO3Qi149B2IwGIkIj8bfP4iyshIefeI2jqUcQqFQ8smHP9IizpVAnJubyeq1vzJ33vun3Ivkv8Jo1HHffSOJjg5i27YjpKcXsGXLIaqqXN/QExJi6N49ng0b9nPw4OkD/IuNj4+B6dNvYOiwTqSlFaBSKejatQW+vp7uNgUFZWi1anc9m7KySlav3kVZaSVHj+YQHu5P5y7N6dAhFp1OQ3p6Af7+RgwG7Smfu6yskvsnf8ymTQexWm00bx5Kp07N6NmrFdde27vOFJTD4eDw4WwOHMhAkiSW/rKFb7/9s8Gy/56eOiZOvIIOHWIoLzcTEuKL0UvPoYOZ/PXXXnx9PbnjzqEs/WULCxb8TViYH5WV1aSm5je4JFqn09CsWTB6veu1PfTQKBQKCa3Wg4MHM1mwYD3V1VZiY4OJiAigX7+2dOzUnLzcEpo1DyHlWC7Z2cX06t2aZs1CiIwMIDU1j9TUfFau2Elqaj4jRnRGf3yarqKiGm9vA2azBYfDyV9/7SUvrxRPTy1BQT5YrXY8PbUYDFqefW4CQ4fWjoLVBArZ2cWUlFQQEeGPzeZArVaSm1vKL0u2kJR0jKysIhISYoiJCSI3t4SjR3OwWu0MGdIBlUpJs+ahXH11NzQaV7BosdjIzi4mNjb4tL9ThYUmggJvOm27M3VOg5Ddu3ezadMmJk+e7P7hKxQKPvroI3r37k379u3/cccvFuciCAnxNJD+xGSQYPDKZaxf79rsLT7ciwOfXodsl5j+zn5e+WsTscFGjn45HoCo274nq+j05Zg/HzOC2zq1Ay6eIMTTU0dK6hf4+nqx+e9m2KyuD6iIqGKaxxcS3+Iejh511f/w9jZw+Min7hUK997zAZ9/vpyWLSPo3q03d9z20vGzOoC6eQte3pVkZObibaw7r242VzHj5UeIiW7BHbc/gofH8ZoWlRVMuvsqCgpyUSiUXDniWoYNHUNISASBAa4/2KKifO6895oGy2urtRrGP/80E/uOx8vq+oP/+bf5rPzjJ+5+9Fl8A4L4ac0Cet0yHo1e79qno9qCj9oTSYZ9+3aSvmcffW64Dq3Cg7hiI3qHChmZDEUpz9x7M7mpqadds+/hoSE0JIK0dNe01OCBVzPtqVkolXVzEZxOJwqFgorKcr5f+AUOh4N773ock6mUqY/fyrGUhgt9Cf8dkiQREuJLVFQg7dvHMH/+Ojw9tdx66yBMpioWLvy7wW/cJ04tKRQKwsL8iIkJon37GDQaNW3bRlFaWsnChX+zd28aVqu90b2DDAYtwcE+jBvXixtu7N9gnktWVhFbtx7m0MFM1GoV5eVVDBrcgb592/yj5alVVRYWLFjPwgXrMZmqUCoVjB/fl/smj6yXk3O5qKgwo1Ao6kxBVldbeWPWIo4cySYp6RhGo47+/RPo178darWSjIxC7r7r/bNW4+acBiFVVVV07NiRw4cP1zkeHx9PUlISev2ZVZKscf/99/PEE08QEhLCrl27eOihh9i2bVuDbdu0acPMmTPp0qULMTExTJkyhffee69Om+nTp/Piiy/WOXbw4EH31NGZOBdBSIBeR/ZTDwDQY/HP7NzpunAkxPiS9MFYZJvEo28k8X+bXHuLLH95BHqNkv5P/V5vr5mGRHl7se6uG/kycTcv/bnxtO3Pl65dWzB3zpsU5tW+/yqVg737f+OreUvZsrU2kTkkxJcnnhjH1EfHYLc7eGnm99z/wJWYSuLJzvQlMKiclm1zSUvxJzvTxl/rNtG395g6z5e0awt79+3g5hsnN9gfi6WaWW9NY+3x5ccnMhiMfPrRT4SHufJAnE4npWXFvDX7OXbv2c5LL36I2VzJilVLGDF8HD2790dGJtdQzWFLFvmpaXWWiZ6suqISlcbDXRgLoDQ3D5/gYCJNegLNrm+h2xL/5rVZT1FS0vjeNF5GH2a/OY/mzVuRmZXK1q3rGDniOnQ6PYeP7CM7J4Oe3fuTk5PBzFem8uTjr9G6Vd0vCG+89QzLli9q9DkE4d8ICfGlffsYWreOJCTEl0l3DCEoyKfR9kePZrNk8RYMBg05OSWUl5tp3yGW8eP7IEkShw5l4udnJDo6iKIiE3q9xl1QsCGlpRVUV9sICfHF4XDw448bycosZNjwzu7pKZOpitzcEhwOJ78u3YrD4cRudxAY6E1QsA8rV+xk9+5UCgrK6NatBaGhfgwYmICPj4E9u1PJzy9j+IjOmExVmExmtFo1np46+vdvV6cvdruDoiITZWVVHDqUxYvT/8fevWmoVEpiYoKwWGyEhfnh6+tJRkYharUSm81BQkI0w4Z3Ji4ulObNQ0lJyWPb1sOEhvkRFxeKVutBUtIxcrKLKSw0sXTpVnbtSgFcid4xMcHs3ZtGUVH5ec3VOadByN9//82bb77JkiVL6hwfPXo0Tz/9NL169Trjc02YMIGvv/6a++67jy1btjBlyhTGjx9Py5YtKSiov3y0a9euTJgwgcTERN555x1mzZrVYBBy3XXXMWRI7RC53W6nqOj0Uxo1zkUQ4qPVkD/tIQA6fDefA4ddex10ifNn67ujkS0K7nplM1/tuLjm3P8NhULBm6/PpXMnV1XEdX8vom+fYSik2vns8vIyUtOO8sOiuRw4uJtJtz1E7z6hXDMmCLtdgSTB9k3RWCxqNIZtVFvS+fabtcyduwpZlrlh4t3cc1ftjsRfzn2Xb//3MWGhkbz4wv+5pxxKS4t57/2Z7Nq9tcFplhparZ5WLRN4ecZHGAyu4e0yUwnbtv3NkMGj6rR1OBy89dGLdLznOgKja6d09q1dT0TbVngHBWI2lZO0fDV71/xF8vadaD096TV+DM26dCR5+07WzvkW/8hwOgwbhG+VB5PG34dGo6WysoJHn7ytwRwMvd7A22/Mo1XLhHr3JScf5J77x+F0OlCrPbDbbccTC9WMHH4dDz3wLCqVmr83rOL5Fx84kx+jIJwVOp2GXr1a0rZtNG3aRGKx2DB66Uk+msN33/1JWlp+g49TKhU4nTKyLCNJEgaD1v1tv3v3Fjz2+Di6do1DkiScTieHD2fzyce/s3jxZgB6925NdnYxqal57nMGBLiStQsLz7yWSlN4extcRds8VJSXm1EqFe7pwMvBOQ1CJkyYwBtvvMH777/P5s2uH3LPnj154IEHePrppzlw4IC77Z49exo7DQCbN29m27ZtPPSQ6+IsSRIZGRm8//77zJo165SPTUlJ4d13320wCBkzZgydOjX+jfRkHh4eaE7Yi8BoNJKVlXVWgxBPDzXFzz4CwNtbE/lu2x725hfSu3UQ69+8GrlawfXT1/Pjvv/20LhOZ2Ds6JvYuHktIUFhvPbKZ+77xt/Qj8DAEF6e8RF+vgH1Hms2V6LTGXA4HJSZMvDzjXHfV1lpYtyEvlitDf8h33PX4wweeDUPT72RvOPbckuShJeXDxZLNUqlisrKM/9Z+voG0KvnAB5+4Hl3kim48khCQ8LZs3cHPyyay5Gj+1EolbQfOpDmXTtxeNNW9qz+y92+qQltHdp355EHnyc2Nh6Hw86WrevYu28HCqWSstJifHz86d1rEK1btaesrISnn72biIhY+vQeTFlpMd/+72MKixr+MAfXLrQarY4jR/ZdsssDBUG4sM5bsbKG1ESrpytcplarqaqq4rrrrqszqvLVV1/h4+PDmDFjTvk8pwpCnnjiCcrKyqiurmbTpk1MmzaNjIyMRs/V0BQOcFaDEC+9lsKn6pY295j+FgPbh7Lq1ZHIZiVXTVvF8qMpZ+X5Tqdd2y5kZB6jrKyE2Jh4goJC6kyN/FOjR93IlIenY7Va66xA+fSLt/h+wecAaLU6PDy0tGnVnkm3PUxkZCw6navCot1uQ6Wqm4VfVpbPc9MfYe++81+91NPTi+sn3Mnoa26isCCXe+4fV2dTtnNBrzfw4gv/R7cufRttU1FZzqOP3+quyyEIgnCxaEoQ0uTMndjY2H/csRMFBASgUqnIy8urczwvL49WrVr94/Nu2bKF22+/nUOHDhEaGsr06dNZv3497dq1o6KiosHHvPbaa8yePdv975qRkLPJqZAaDPk06uNJlk4otzb94tahfXfi49uy6Kd5Z5xUNGzIaKY99QbpGSnc98C1zHr1cwIDQ85KDYiIiBgAdwBit9u44+5RZGTWBlfV1Waqq81s3voXm7e6Rg0S2nUhKrIZx1IP8+ZrcziWcoit2/+gbZvmzHjpdaqrL8zOmBUVJr6Y8w5zvvo/JEk6L6tHqqoqefLpO4mKasawIWPo02sQMTGuDaqsVivrN6xg/vefNbpzrCAIwn9Fk4OQ9PT0c9GPs+aPP2q3E9+zZw9btmwhLS2NCRMmMGfOnAYfY7Vasf6DAKApVCqFq1a4pe5IkofqeEa4LFF+whb2CoXijIKK2W/OQ6FQ4KH24Lv5n56y7X33PMngQaMI8A8CICoylmenvUVgoGvTp4ceeJYVqxY3esEfddVErhw5nvfen8HBQw1PtYUEu2pcpKQcRqPV8f4HL9UJQBqzZ28ie/a6knJHX9vjolsq6nSe/7or6enH+GLObL6YM5uw0EjCw2PYtv2/vwReEAShxr/bsu9fKCwsxG63Exxcdw1zcHAwubmn3h+jKcrKyjh8+DBxcXFn7Zz/hEqldAUhJ5CkE0ZCZCg/oVLoB+9+z5zPltabmjhZzbK2Sbc93GiblvEJdO3Sh4nj73QHIDX69Bp0Qh/V3HbzgxiN9TfykiSJW295kFYtE3j7jXl0aN9wwayQEFcQ8tkXb3HTrUPcIx1NcbEFIBeD7JwMEYAIgnDJuWBBiM1mIzExkcGDa0tsS5LE4MGD2bRp01l7HoPBQPPmzcnJyTlr5/wnVColJ+9k5avVovOoPx3j4aGhdesOxMbG06N743v11NS9AFAqVXWKbtXo2b0/n3z4I2++XjsKZLfbeOLpOxo85/UT7+KxKTPd539sykw+/L8FrFlx0B3A6PUGZr36BaNH3ch99zxJ8+a102fBQa4S37l5Z3c6SxAEQbj0XNBqLrNnz2bevHls376drVu3MmXKFAwGA3PnzgVg3rx5ZGVl8cwzzwCuZNY2bVxLLj08PAgPD6dDhw5UVFSQnOyqu/Hmm2+ydOlS0tLSCAsLY8aMGTgcDubPv7D7XTQ0EhJo0OOlO568KUuUW2qDkBqdO/Viw8bVDZ7Tx7vunhlRUc3JzqmbgNuzx4A6/77/4QlUm82kpB7G4XCgVLr69N38T7nphnsB6N9vBGNG30SHhG4M6D+yzuO3bF2Hw2Gnd69BTHl4OuCqZvrK64+TtGurexQlN+/sbaAnCIIgXJou2EgIwMKFC3n88ceZOXMmSUlJdOzYkREjRpCf71piGBUVRWhoqLt9WFgYSUlJJCUlERYWxhNPPEFSUhJffPGFu01ERATz58/n0KFDLFy4kKKiInr27ElhYeOFn84HtVqJdFIQ4q/X4XO82I7DIWM9vvLoxCWh3bo2vkLCx6duEPL41Jd46P5n+fmHTXTv5hpBiYqqrVr46qwnOXBgFymprkJzPyz6CoBFP3/Nt//7uM7UySMPvlAvAMnLz+a7+Z/wwoyHWLmqdhdgnU7PjBfep1/fYQCUlZVQXX36Kq+CIAjC5U3sotuAc1GsrEWLMPbPfAj5cG2hrPHzFzO4VzAPXNuSsmzwu8c1ZRIaEsH/vqkd/bjl9uFkZqXWO2e3rlfwxmtf1Dteo7Ao3z2Fcu/94zh8ZF+d+zUaLa1aJrB7z3Z3zYhnnnqToUOucbf59Iu3WLzk23rJqpIk0a5tZ1LTjjLtyVn06jnQvbx2Z9IWHn3i1jN8ZwRBEIRLyVlfoltcXHzGhY38/Rveevpy19B0TIBBT6BBB0DFCUmpJ07HAPTs0Z8ff0qtd05fn/pbmNc5/wlJqCnHd0U9kcVSza7ddUvkf/X1/+F0Oli/YSUOu73RxFJZlt2rWX786St69RyISqU+Xpl0xin7JQiCIAhwhkHIlClT3P/v7+/Pc889x/Lly90JpL169WL48OG89NJLjZxBaDgnRIe/p2vqxXRCXf+Tg5CuXfry40/z6p3T+3gQcvjIPuJbtAVcVUf/Wr+cEcPGudvt2Ln5jAtsZedk8PqbT59R2xo7k7Zw5Oh+AgNCeOLpO9wbqgmCIAjCqZxREPL111+7///HH3/khRde4MMPP3Qfe//993nggQcYMmQI77777lnv5KWgwZEQvR5fvSsIKTPXBgknByGhIRENnrMmMXX3nu388ONcCgrz2LV7KwCpqUcJD4ti4Y9zKS6pvw/P2STLMvc9cB1qtRqLpfqcPpcgCIJw6Wjy6pjhw4fz1FNP1Tv+xx9/8Prrr5+VTl2K3MXKTmDUeOBzfLvlkhM2N6rZx6am9Ln/SbU9avj6uKa+SkuLWLVmaZ37Fvzw5Vnr+5lwOh1YLOe/oJcgCILw39Xk1TFFRUWMHj263vHRo0c3aafay41KVX91jE6lwkvrWqJbXFk7guChdgUhubmZABgMnu69VU7k61sThBSfkz4LgiAIwrnU5JGQ6dOn88UXXzBgwAC2bNkCQI8ePRgxYgR33333We/gpaKh6RidWoWnVgU4KKqsXX1SMx1TWlaMf2UQBoMnAf5B9cqfBwW5li/nF1zYQmyCIAiC8E80eSRk3rx59OnTB5PJxLhx4xg3bhwmk4m+ffsyb1795EnBRa1Wgqru261VqVArXcdM1fVXx1itFgqLXBv8NTQlExLsyhXJzRXVSQVBEIT/nn9UMXXr1q3cfPPNZ7svlzSVSlnvmFHjgaSUAKiy1u6XUhOEWKwWioryiY5qXme57bVjbyMvPwu93jVFk5cvqpMKwr+l1+sJCAhAkqQL3RVBuGjJskxhYSFVVWenIOU/CkKaNWvGpEmTaNasGVOmTKGgoIARI0aQnp7O/v37z0rHLjUNBSG+Oi2S5Kq/UlFnJMSVJ2KzWqisMAEQEODa6K9b1yt48P5n3DvsFhXlY7VaEAThn5EkiUmTJjFgwIAL3RVB+M/4888/mTt37hnXEGtMk4OQfv36sWzZMjZs2EC/fv147rnnKCgooEOHDtx5552MHz/+X3XoUqVSKXHKtd+wpMBq2nSUAFfwUVmnWJlr2a5rOsZVwj4k2LU7bdcuvYHa3XPFRnGC8O9MmjSJ/v37s2DBAg4ePIjdLnZxFoTGqFQqWrVqxYQJEwCYM2fOaR5xmvM19QGvv/46zz33HO+88w4mk8l9fM2aNTz44IP/qjOXMpVKSaFfLAZtDrIkYYw6Vud+i612eeuJOSEHD+0GYOCAK/n0i7fo3KlXnceJIEQQ/jmDwcCAAQNYsGABv/3224XujiD8J9RsGDtx4kS+//77fzU10+TE1ISEBH7++ed6x/Pz8wkICPjHHbnUqVQKUKvY0Wk8h1sMqHe/1e50//+JQciGjatJTz+Gl5cPt950P3HNWwO4y6kfO3bo3HdeEC5RNdtMHDx48AL3RBD+W2r+Zv7tdb/JQUhpaWmdnW1rdOrUiaws8a28Me6cEEnCqag/AFV3JMSVE2K1WnE6nfzv+08BuH7iXQAcSznECy8+wHPT72fRz1/XO5cgCGemJglVTMEIQtPU/M3820TuJgch33//PbNmzSI4OBhZllEoFPTu3Zu33nqrTnl3oa4TE1OdCiWyve4PrqHpGIvVVcBs1ZpfycnJdN+/M2kLNpuNDRtXizLpgiAIwn9Wk4OQZ555hoMHD5KRkYGnpyf79+9n3bp1bNy4kZdffvlc9PGSoFbXjn40PBJSOx2jOSExFcDhsDNn3nvu+/+/vTuPi6r6/wf+YmAAWVQQBTfGBVTUwCS3FJfIVFJcMknti+JSYBlmWelHBf2YlmYmZolKID+Xj2uIJSCYUipogpALm4CgIIPs2zDMwPn9gVy5DBCDMIPyfj4e5+HMvWfOPffI8uZs99atyNaqJiGEEKIySgchMpkMH3zwAfr164fp06fj/fffx6BBg+Ds7MwtGyWKtGptVFaloQlo8pc1Vcjrn5ha4+If53DlahjuJ8ch6lZEK9eWEPIy8Pf3x9q1axvNk5qaCnd3d+49Y6zeR3OoSpcuXSAWi9GzZ0+11YGojtJByIYNG9ChQwc8evQIQUFBOHnyJO7fvw9dXV1s2LChNer4UuDtEyKoQt1htNo9IbXnhNRgjGGD50dY7joL5eUts0kMIeTFVbNHA2MMUqkUSUlJ2LBhAzQ1q3/WWFtbw8HBAV5eXkqVa2ZmhqCgoNaoMgBg+fLluHTpEgoLC8EYQ6dOnXjnc3Nz4e/vj02bNrVaHUjboXQQ4uHhAQMDA4Xjenp68PDwaJFKvYy4IIQxdMJDhfP1LtGV0SZkhJCGBQUFwczMDJaWlti5cyc8PT2xZs0aAMDKlStx8uRJlJaWKlWmWCzm/QHU0vT09BAcHIytW7c2mMfX1xcLFy6EkZFRq9WDtA1KByEaGhr17pBmY2ODvDx6mmtDtLQ0wZgGjFgqhsqrlzizWqNXHTsac6+5iak06ZQQtdDuoKuWpCypVAqxWIz09HTs27cPYWFhcHR0hEAgwNy5c3Hu3Dle/q5duyIwMBBlZWVISUnBggULFMqsOxzTq1cvHD9+HPn5+cjNzUVAQABEIpHyjfrU7t278e233yIysuG5bffu3UNmZiZmz57d7OuQF0OTNyvLy8vjuv4SExN5gYimpiYMDAywb9++Vqnky0BLSxNVVYBxVa1NymQCVGXrQtLJAEyvF4AU6OjoYsCAoQBA27ETogbaHXSx7cYltVx77chJqJA0/48PiUSCLl26wNraGp07d8bNmzd55/38/NCjRw9MmjQJMpkMXl5e6NZN8eGYNbS0tBASEoKIiAjY2dlBLpdj/fr1CA4OhrW1NWQyGRYsWABvb+9G6zVt2jRcuXJFqXu5ceMG7OzsnntHTtK2NTkIWbVqFTQ0NPDLL7/Aw8MDhYWF3LmKigo8ePCg0ci2vdPSEoBVaUCiUat7kQEsWxeF6AehsPqHhdsHX8JA3xAAWrVLlBDycrG3t8eUKVOwZ88eiEQiyOVyZGdnc+ctLS3h4OCAESNGcMHJ0qVLG92ozcnJCQKBAMuWLeOOubi4oKCgABMnTkRoaCgCAwNx/fr1RuvWnD2kMjMz8eqrryr9OfJiaXIQUrMHSGpqKq5du0ab+yip5tkxcug8OyisHo+pEmhBKKyejDrT8Vn3aGWlDIQQ1aqQlGPtyElqu7Yypk+fjuLiYgiFQggEAhw9ehSenp5wdHSEVMrvSbWysoJMJkNUVBR3LCEhAfn5+Q2Wb2NjAwsLCxQXF/OO6+rqon///ggNDUVJSQlKSkqUqndTSCQS6OnptXi5pG1R+tkxf/75J/daR0eHW8lRo+4XK6kmFGqBVWlAA8+GsTSezlWt0tCE9tMgJCU1Af36DgQA5OY+UXk9CSHKBwPqcunSJbi5uaGiogKZmZmorKye4J6TkwN9fX0IhULIZM3/Y8bAwABRUVFYuHChwrknT6p/PrXWcIyxsTF3DfLyUjoI6dChA7Zv34558+Zxz13gFaildJHtgpaWAFVVGgAUJ/VWaWpCV7c64q/Za+V80CmkpSersoqEkBdMaWkp9zCx2mJiYgAAgwcPRmxsLIDqZ30IhULY2tpywzEDBgxodAVKdHQ0nJyckJ2d3eAfmK01HDN06FBcvnxZ6c+RF4vSq2N27NiBN954A25ubpBKpVi2bBk8PDyQmZkJZ2fn1qjjS6FmOKZ2T0hVin71vwIt6OtXL3vWfrpbakio4kMCCSGkKXJychAVFYVx48ZxxxITExEUFARvb2+MHDkSw4cPx8GDBxt9AuqRI0eQk5ODs2fPYty4cejTpw8mTJiA3bt3c5uJlZSUIDk5udFUXv6sZ8nU1JQb5gGqH4pqY2PDC4Y6dOgAW1tbXLhwoaWbhrQxSgchM2bMwIoVK3DmzBnI5XL89ddf+Prrr7Fu3bp6u+xINS0tTbBaPSG5WQDLr54fUiXQhP7Tyag6OjXLc2llDCGk+Q4ePKjwM9nFxQWZmZkIDw/HmTNnsH//ft7k1bokEgnGjx+P9PR0nDlzBnFxcfDx8YGuri6KioqaVS9XV1fExMTg4MGDAIC//voLMTExcHR05PLMnDkT6enpSg/hkBeP0mMnxsbGSEmpXmZaVFQEY2NjJCcn48qVK/j5559bvIIvi5p9Qmp6QiprjcpU94Q8DUKe9oTUPLyOEELq4+Li0uh5Pz8/rF27FqNHj+ZWLorFYsyYMYOX7/Dhw7z3dZ+KKhaLsXjx4uev8FObNm36191Q3d3dsXnz5ha7Jmm7lO4JSUlJQd++fQFUjzHOmzcPQHUPSUFBQYtW7mVSvU/Is56QukGIwdPhmJqekAraqIwQ8hzKy8vh7OwMExMTdVdFKV26dMGZM2dw7NgxdVeFqIDSPSG+vr6wsbHBn3/+iW+++Qbnzp3Dxx9/DKFQiNWrV7dGHV8KNRNTtZ4GIfkVctRsEVQl0ISeHn9OiJQ2KiOEPKfw8HB1V0Fpubm52LFjh7qrQVRE6SDkhx9+4F5fvHgRgwYNgq2tLe7fv4/bt2+3ZN1eKppPh2PwdKfZ3Ipne7ZrVsqgr28ILS0h9/Ap2rKdEELIy+6519Omp6cjPT29JeryUhMKtVBVVXtOiAYOp2TjncEWyDUWQb80HTrazzYyoyCEEELIy65ZQchrr72GSZMmoVu3bhAI+NNKPvvssxap2MumenUMwO0ToiHAsYwC9H3fCQCgr28AbZ3qoZiqqirIZLRlOyGEkJeb0kHI2rVrsWXLFiQkJEAsFvMeZFff03VJNS0tAW+fEA0NAbdLKgAY6BtC52kQQg+uI4QQ0h4oHYS4u7tjyZIlOHToUGvU56VVs09ITRDCNATQrjX8oqdnAF3dDgBoeS4hhJD2QeklulVVVbh69Wpr1OWlVneJroaGgOv5AACBQIAuxl0BABW0URkhhJB2QOkgZNeuXfjoo49aoy4vtbqblaFOTwgAmJiYAqCeEEIIIe2D0kHId999h4EDB+L+/fsIDAzE6dOneYnU79kD7KqX5mpoCBSeQNzVxAwAbdlOCGkZ/v7+WLt2baN5UlNT4e7uzr1njGHmzJmtXbUGWVlZ4eHDh9DT01NbHYjqKB2EeHl5YdKkSUhMTERubi4KCwt5idRPKNSq0xOiCW0hvyeka9fqIIR2SyWE/BtfX18wxsAYg1QqRVJSEjZs2MDtNWRtbQ0HBwd4eXkpVa6ZmRmCgoJao8owMjKCl5cX4uPjUVZWhrS0NOzevRsdO3bk8sTFxSEyMpI2v2wnlJ6YumjRIrzzzjs4f/58a9TnpaWlpYmqSv6cEO1ac0IAwKRL9R6qNBxDCGmKoKAguLi4QEdHBw4ODti7dy9kMhm++eYbrFy5EidPnkRpaalSZYrF4laqLdCjRw/06NEDn3/+Oe7duweRSIR9+/ahR48eePfdd7l8vr6+OHDgALZt24bKyspWqw9RP6V7QvLy8pCcnNwadXmpPVsdU01DoKk4HNOVhmMIaQv09HTUkpQllUohFouRnp6Offv2ISwsDI6OjhAIBJg7dy7OnTvHy9+1a1cEBgairKwMKSkpWLBggUKZdYdjevXqhePHjyM/Px+5ubkICAiASCRSvlEB3L17F3PnzsVvv/2GlJQUXLp0Cf/5z38wY8YMrgcHAEJDQ2FsbIwJEyY06zrkxaF0T4inpyc2bdoEFxcXSCSS1qjTS0lLS4AKVndOSJ2JqV2qJ6bSPiGEqI+eng5KSk+p5doG+nNRVtb873+JRIIuXbrA2toanTt3xs2bN3nn/fz80KNHD0yaNAkymQxeXl7o1q1bA6UBWlpaCAkJQUREBOzs7CCXy7F+/XoEBwfD2toaMpkMCxYsgLe3d6P1mjZtGq5cuVLvuU6dOqGoqIjX4yGTyRATEwM7Ozv88ccfSrQAedEo3RPyySefYNq0aRCLxfjnn38QFRXFS8pasWIFUlNTIZFIEBkZiREjRjSYd/DgwTh16hRSU1PBGONNpmpumapSd58QDYEmdJ4+rC4vPwcAYGTUBQBQQcMxhBAl2dvbY8qUKfjjjz8gEokgl8uRnZ3Nnbe0tISDgwOWL1+O69evIzo6GkuXLm10AqiTkxMEAgGWLVuGO3fuID4+Hi4uLjA3N8fEiRMBAIGBgRg2bFijqW4wVKNLly7YsGED9u/fr3AuMzOz2T0u5MWhdE9IQEBAi1183rx5+P777+Hq6orr169j1apVCAkJwcCBA/HkyROF/Hp6ekhJScHJkyexa9euFilTVar3CQGezQnR5HpCcnLEMDZ69rhtGo4hRH3KyqQw0J+rtmsrY/r06SguLoZQKIRAIMDRo0fh6ekJR0dHhZ8jVlZWkMlkvD8WExISkJ+f32D5NjY2sLCwQHFxMe+4rq4u+vfvj9DQUJSUlKCkpESpegOAoaEhfv/9d9y7dw+enp4K5yUSCa2QaQeUDkI2b97cYhdfvXo1Dhw4AD8/PwCAq6sr3n77bSxZsgTffvutQv6bN29yEfU333zTImWqikBDB4wJuJ4QTS0h9PT0AQC5udmA5RAuL01MJUS9nmdIRJUuXboENzc3VFRUIDMzkxvSyMnJgb6+PoRCIWQyWbPLNzAwQFRUFBYuXKhwruaPuuYMxxgYGCA4OBjFxcWYPXs25HK5wmeMjY1p/mE78NxP0W0uoVAIW1tbbNu2jTvGGENYWBjGjBmj0jK1tbWho/NsfoahoWGzrt+Y7McjAYALQszMemNor+EAqntCaqOeEEJIU5SWltb7izomJgZA9RB2bGwsACA+Pp77GVnzx9yAAQNgZGTUYPnR0dFwcnJCdna2Qm9IjcDAQFy/fr3RemZkZHCvDQ0NERISAqlUWm+PTY2hQ4fi1Cn1zM0hqtOkOSG5ubno0qV6vkJeXh5yc3MbTE1lYmICLS0theVgYrEYZmZmStzC85e5du1aFBUVcan2N0xLEWhUT0iVlpcBANjTdTJPcsS4fuNPXt7S0vq/2QkhpClycnIQFRWFcePGcccSExMRFBQEb29vjBw5EsOHD8fBgwdRVlbWYDlHjhxBTk4Ozp49i3HjxqFPnz6YMGECdu/ejZ49ewIASkpKkJyc3GgqL6/u3TU0NMSFCxegr6+PpUuXomPHjjA1NYWpqSnviewikQg9e/ZEWFhYK7UQaSua1BPy6aefclHwp59++tI9LXfbtm34/vvvufeGhoYtHohMsB8OLS1N7FxqixVvW+HQ4Z/w32MfgrEqdOvWg5c3/+lEVUIIaa6DBw/C2dkZe/fu5Y65uLjg4MGDCA8Ph1gsxvr16/Hf//63wTIkEgnGjx+Pb7/9FmfOnOF+Nl68eBFFRUVK12n48OEYPXo0ACj04PTp0wdpaWkAgPnz5+PChQtIT09X+hrkxdKkIMTf35973VJPz83JyYFcLoepqSnvuKmpKbKyslRaZkVFBSoqKpp1zaaqqqpERUUlNAXVPSCVlVWoqqoevy0o4Pcg5Rc0vUeJENI+ubi4NHrez88Pa9euxejRoxEZGQmguld4xowZvHyHDx/mvdfQ0OC9F4vFWLx48fNXGEB4eLhC+XUJhUK4urrWu4cJefkovURXLpeja9euCseNjY3rnVzUkJpZ2vb29twxDQ0N2NvbIyIiQtlqtVqZLU3w9BuwqlZvklRajrKyZ7saUk8IIeR5lZeXw9nZGSYmJv+euQ0xNzfH1q1bce3aNXVXhaiA0hNTG4pidXR0lO5N+P7773Ho0CHcvHkTN27cwKpVq6Cvrw9fX18A1b0uGRkZWLduHYDqCHnw4MEAqieT9uzZEzY2NtyYZFPKVLenHSGorOIPaeXn53CrZfLyqSeEEPL8wsPD1V0FpdXMIyHtQ5ODkJUrVwKoXm2ybNky3rpwTU1NjB8/HvHx8Upd/MSJE+jatSs2b94MMzMzxMTEYOrUqdwGO+bm5qiq3lwDQPVzB2pmfQPAmjVrsGbNGly+fBmTJk1qUpnqJngahVTVCUJqL8utOzxDCCGEvIyaHIR8+umnAKp7QlxdXXlb7FZUVODBgwdwdXVVugJ79+7lTZyqrSawqJGWlvav44n/Vqa61cwJqWpkcq+UnqJLCCGkHWhyENKvXz8AwB9//IE5c+agoKCgter0UquZE1J3OIYQQghpb5SemPrGG2/wAhCBQAAbGxt07ty5Bav18mpoOIYQQghpb5QOQnbt2oUlS5ZUf1ggwJ9//ono6Gg8fPiQHrvcBM9Wx/CP/32zekvjoqICFdeIEEIIUQ+lV8e8++673LryGTNmoE+fPhg0aBD+7//+D19//TVvhz6iqKE5IX7+e5CXl4Mr12iHQEIIIe2D0j0hXbp04Tb+cnBwwMmTJ5GUlIRffvkFr7zySotX8GVTszNxVSU/CCkvl+DEqV+QmUk7BBJCCGkflA5CxGIxBg8eDIFAgKlTpyI0NBQAoKenx1sxQ+pX32ZlhBDSGvz9/bF27dpG86SmpsLd3Z17zxjDzJkzW7tqDbKyssLDhw+hp6entjoQ1VE6CPH19cWJEydw584d7gm1ADBq1Cil9wlpjygIIYS0BF9fXzDGwBiDVCpFUlISNmzYAE1NTQCAtbU1HBwc4OXlpVS5ZmZmCAoKao0qAwD27duH+/fvo6ysDNnZ2QgICMDAgQO583FxcYiMjMTq1atbrQ6k7VA6CNm0aROWLVuG/fv3Y+zYsdwuqZWVlfjmm29avIIvG01NWh1DCGkZQUFBMDMzg6WlJXbu3AlPT0+sWbMGQPUGkydPnkRpaem/lMInFotb9VlaUVFRcHFxgZWVFaZMmQINDQ1cuHCB9xRdX19fuLm5cQEVeXkpHYQAwOnTp/HDDz/wnjTr7++PwMDAFqvYy4r2CSGk7dPV7aCWpCypVAqxWIz09HTs27cPYWFhcHR0hEAgwNy5c3Hu3Dle/q5duyIwMBBlZWVISUmp9yFxdYdjevXqhePHjyM/Px+5ubkICAiASCRSvlGfOnDgAP766y+kpaXh1q1bWL9+PczNzdGnTx8uT2hoKIyNjWnFZTvQ5NUxv//+O+bPn889vvnLL7/Evn37UFhYCKD6AXZ//fUXhgwZ0jo1fUk0tESXENI26Op2QNC5GLVce9qMYSgvlzT78xKJBF26dIG1tTU6d+6Mmzdv8s77+fmhR48emDRpEmQyGby8vNCtW7cGy9PS0kJISAgiIiJgZ2cHuVyO9evXIzg4GNbW1pDJZFiwYAG8vb0bv69p03DlyhWF43p6enBxcUFKSgoePnzIHZfJZIiJiYGdnR3++OMPJVuBvEiaHIRMmTIFOjo63Pt169bhxIkTXBCipaXFG9cj9eNWx1AUQghpQfb29pgyZQr27NkDkUgEuVzOe2aWpaUlHBwcMGLECC44Wbp0aaNz+ZycnCAQCLBs2TLumIuLCwoKCjBx4kSEhoYiMDAQ169fb7RutXvNAcDNzQ3bt2+HgYEB4uPjMXnyZMhkMl6ezMzM5+pxIS+GJgchdZ/Z0pRnuBBFNeOeNDGVkLapvFyCaTOGqe3aypg+fTqKi4shFAohEAhw9OhReHp6wtHREVKplJfXysoKMpkMUVFR3LGEhATk5+c3WL6NjQ0sLCxQXFzMO66rq4v+/fsjNDQUJSUlvAeaNsWRI0cQGhqK7t274/PPP8eJEycwduxYXp0lEgmtkGkHlN6sjDyfp3uV0ZwQQtqw5xkSUaVLly7Bzc0NFRUVyMzM5LZJyMnJgb6+PoRCoUIPgzIMDAwQFRWFhQsXKpx78uQJADRrOKaoqAhFRUW4f/8+IiMjkZ+fj9mzZ+N///sfl8fY2BjJycnNrjt5MTQ5CKlZClb3GFEOPTuGENJSSktL6/1FHRMTAwAYPHgwYmNjAQDx8fEQCoWwtbXlhmMGDBgAIyOjBsuPjo6Gk5MTsrOzFXpDajRnOKY2DQ0NaGho8Ib7AWDo0KE4depUo+WSF59SwzF+fn5cd5muri727dvHLf+q+wVE6kf7hBBCWltOTg6ioqIwbtw4LghJTExEUFAQvL294ebmBrlcjh9++AFlZWUNlnPkyBGsWbMGZ8+excaNG/Ho0SOIRCLMmTMH27dvR0ZGhlLDMX379oWTkxMuXLiAJ0+eoFevXvjqq68gkUhw/vx5Lp9IJELPnj25fajIy6vJS3QPHTqE7OxsFBYWorCwEIcPH0ZmZib3Pjs7G/7+/q1Z15fCs2fHqLkihJCX2sGDBxWGUVxcXJCZmYnw8HCcOXMG+/fv501erUsikWD8+PFIT0/HmTNnEBcXBx8fH+jq6nIrJZVRXl4OOzs7nD9/Hvfv38fx48dRXFyM119/nRveAYD58+fjwoULSE+nx1i0B4wSPxkaGjLGGDM0NGzxsq98N51V/raEzRjZW+33SYlSe08ikYj5+/szkUik9rq0dNLV1WVpaWls9OjRaq+LMkkoFLIHDx6w119/Xe11odRwaux7R5nfoc3arIw0H+0TQghRhfLycjg7O8PExETdVVGKubk5tm7dimvXrqm7KkQFaHWMitWsjqE5IYSQ1hYeHq7uKigtOTmZVsW0I9QTomKatDqGEEIIAUBBiMrVLNGlfUIIIYS0dxSEqBgt0SWEEEKqURCiYrRZGSGEEFKNghAVo31CCCGEkGoUhKhYzXAMzQkhhBDS3lEQomJPH6JLwzGEEELaPQpCVIwmphJCVMXf3x9r165tNE9qairc3d2594wxzJw5s7Wr1iArKys8fPgQenp6aqsDUR0KQlTs2ZwQCkIIIc3n6+vLPd1cKpUiKSkJGzZsgKamJgDA2toaDg4O8PLyUqpcMzMzBAUFtUaVFZw/f14h6ImLi0NkZCRWr16tkjoQ9aIgRMW4OSGVFIQQQp5PUFAQzMzMYGlpiZ07d8LT0xNr1qwBAKxcuRInT57knnTeVGKxGBUVFa1RXZ5Vq1aBNfDHmK+vL9zc3LiAiry8KAhRMQH1hBDS5ukJhWpJypJKpRCLxUhPT8e+ffsQFhYGR0dHCAQCzJ07F+fOnePl79q1KwIDA1FWVoaUlBQsWLBAocy6PRO9evXC8ePHkZ+fj9zcXAQEBEAkEinfqLXY2Njgs88+w5IlS+o9HxoaCmNjY0yYMOG5rkPaPnp2jIrRA+wIadv0hEIUrHf/94ytoPOW3SiTyZr9eYlEgi5dusDa2hqdO3fGzZs3eef9/PzQo0cPTJo0CTKZDF5eXujWrVuD5WlpaSEkJAQRERGws7ODXC7H+vXrERwcDGtra8hkMixYsADe3t6N1mvatGm4cuUKAKBDhw44evQoPvroI4jF4nrzy2QyxMTEwM7ODn/88YeSrUBeJBSEqBg9O4YQ0hrs7e0xZcoU7NmzByKRCHK5HNnZ2dx5S0tLODg4YMSIEVxwsnTpUsTHxzdYppOTEwQCAZYtW8Ydc3FxQUFBASZOnIjQ0FAEBgbi+vXrjdYtIyODe71r1y5cu3YNgYGBjX4mMzPzuXtcSNtHQYiK1SzRpX1CCGmbymQydN6yW23XVsb06dNRXFwMoVAIgUCAo0ePwtPTE46OjpBKpby8VlZWkMlkiIqK4o4lJCQgPz+/wfJtbGxgYWGB4uJi3nFdXV30798foaGhKCkpQUlJSZPqO2PGDLzxxht49dVX/zWvRCKhFTLtAAUhKkZLdAlp+55nSESVLl26BDc3N1RUVCAzMxOVlZUAgJycHOjr60MoFEL2HPdiYGCAqKgoLFy4UOHckydPAECp4Zg33ngD/fv3R0FBAe/86dOn8ddff2HSpEncMWNjYyQnJze77uTFQEGIitGzYwghLaW0tLTeX9QxMTEAgMGDByM2NhYAEB8fD6FQCFtbW244ZsCAATAyMmqw/OjoaDg5OSE7O1uhN6SGMsMx33zzDQ4ePMg7d+fOHXz66acKk2iHDh2KU6dONVouefFREKJitE8IIaS15eTkICoqCuPGjeOCkMTERAQFBcHb2xtubm6Qy+X44YcfUFZW1mA5R44cwZo1a3D27Fls3LgRjx49gkgkwpw5c7B9+3ZkZGQoNRwjFovrnYyanp6OBw8ecO9FIhF69uyJsLAw5W6cvHBoia6K0bNjCCGqcPDgQYVhFBcXF2RmZiI8PBxnzpzB/v37eZNX65JIJBg/fjzS09Nx5swZxMXFwcfHB7q6uigqKmq1us+fPx8XLlxAenp6q12DtB2MEj8ZGhoyxhgzNDRs8bKLTzmzyt+WMPOu+mq/T0qU2nsSiUTM39+fiUQitdelpZOuri5LS0tjo0ePVntdlElCoZA9ePCAvf7662qvC6WGU2PfO8r8DqWeEBXjHmDH1FsPQsjLrby8HM7OzjAxMVF3VZRibm6OrVu34tq1a+quClEBmhOiYppPoxCaE0IIaW3h4eHqroLSkpOTaVVMO0I9ISr2dF4qPTuGEEJIu0dBiIppalJPCCGEEAK0kSBkxYoVSE1NhUQiQWRkJEaMGNFo/rlz5yIuLg4SiQT//PMPpk2bxjtf+xHXNUlVj6ZuzNOFMQAoCCGEEELUHoTMmzcP33//PTZt2oThw4cjNjYWISEh6Nq1a735x4wZg2PHjsHHxwevvvoqAgICEBAQgCFDhvDy1TziuibNnz9fFbfTKEGtKIQ2KyOEENLeqT0IWb16NQ4cOAA/Pz/ExcXB1dUVZWVlDT7i2d3dHcHBwfjuu+8QHx+PjRs3Ijo6Gh9//DEvX80jrmtS3W2Ca9PW1oahoSEvtYaa3VIB2ieEEEIIUWsQUrOFcO1d8RhjCAsLw5gxY+r9zJgxYxR20QsJCVHIP3HiRIjFYsTHx+Onn36CsbFxg/VYu3YtioqKuFT7iY8tidcTQsMxhBBC2jm1BiEmJibQ0tJS2MZXLBbDzMys3s+YmZn9a/7g4GA4OzvD3t4eX375JSZMmICgoCAIBPXf7rZt29CxY0cu9ezZ8znvrH6agtrDMa1yCUIIIeSFofbhmNZw/PhxnDt3Dnfu3MHZs2cxffp0jBw5EhMnTqw3f0VFBYqLi3mpNdSOgagnhBDS2vz9/bF27dpG86SmpsLd3Z17zxjDzJkzW7tqDbKyssLDhw+hp6entjoQ1VFrEJKTkwO5XA5TU1PecVNTU2RlZdX7maysLKXyA9XfZE+ePIGFhcXzV/o51B6OoTkhhJDnUXsVoFQqRVJSEjZs2ABNTU0AgLW1NRwcHODl5aVUuWZmZq26mvDSpUsKqxd//vln7nxcXBwiIyOxevXqVqsDaTvUGoTIZDJERUXB3t6eO6ahoQF7e3tERETU+5mIiAhefgCYPHlyg/kBoGfPnujSpQseP37cMhVvJlodQ8iLQajTQS1JWTWrAC0tLbFz5054enpizZo1AICVK1fi5MmTKC0tVapMsViMiooKpeuijP379/NWL37xxRe8876+vnBzc+MCKvLyUvu27d9//z0OHTqEmzdv4saNG1i1ahX09fXh6+sLADh06BAyMjKwbt06AMDu3bsRHh6O1atX4/fff8d7772H1157DR988AEAQF9fHx4eHjh9+jSysrLQv39/bN++Hffv30dISIja7hMANDVpYiohbZ1QpwPWn7iulmtvmTcKMqmkyflrVgECwL59+zB79mw4Ojpi+/btmDt3rsJTdLt27QofHx+8+eabyMrKwvr16xXKZIxh1qxZOHv2LACgV69e2LlzJ9566y1UVVXhr7/+gru7O9LS0pp9n2VlZQpz+2oLDQ2FsbExJkyYgD/++KPZ1yFtn9rnhJw4cQKff/45Nm/ejJiYGAwbNgxTp07lHi9tbm6O7t27c/kjIiKwYMECfPDBB4iNjcXcuXMxa9Ys3L17FwBQWVkJa2trBAYGIjExET4+PoiKioKdnV2rR/f/pnZPCMUghJCWJpFIoK2tDWtra3Tu3Bk3b97knffz80Pv3r0xadIkzJ07FytWrEC3bt0aLE9LSwshISEoLi6GnZ0dxo4di5KSEgQHB0MoFAIAFixYoDCnrm4aN24cr9yFCxfiyZMnuH37NrZu3YoOHfi9QDKZDDExMbCzs2uhliFtldp7QgBg79692Lt3b73nJk2apHDs1KlTOHXqVL35y8vLMXXq1BatX0upCUIqK2lpDCFtlUwqwZZ5o9R27eayt7fHlClTsGfPHohEIsjlcu6POQCwtLSEg4MDRowYwQUnS5cuRXx8fINlOjk5QSAQYNmyZdwxFxcXFBQUYOLEiQgNDUVgYCCuX2+856j2tgdHjx5FWloaMjMzYW1tjW+//RYDBw7EO++8w/tMZmYmRCKRUm1AXjxtIghpL2pWx9B0EELatucJBlRp+vTpKC4uhlAohEAgwNGjR+Hp6QlHR0dIpVJeXisrK24eXo2EhATk5+c3WL6NjQ0sLCwUVgzq6uqif//+CA0NRUlJCUpKSppc5wMHDnCv79y5g8ePH+OPP/5Av379kJKSwp2TSCS0QqYdoCBEhTQF9PA6QkjLuXTpEtzc3FBRUYHMzExUVlYCqF55qK+vD6FQCJlM1uzyDQwMEBUVpTC3BACePHkCoHo4xtvbu9Fypk2bhitXrtR7rqYXxcLCgheEGBsbIzk5ublVJy8ICkJUqGavMloZQwhpCaWlpfX+oo6JiQEADB48GLGxsQCA+Ph4bpfqmuGYAQMGwMjIqMHyo6Oj4eTkhOzs7Ab3T1J2OKauYcOGAYDC6sWhQ4c2OOxOXh4UhKhQzbNjaI8QQkhrysnJQVRUFMaNG8cFIYmJiQgKCoK3tzfc3Nwgl8vxww8/oKysrMFyjhw5gjVr1uDs2bPYuHEjHj16BJFIhDlz5mD79u3IyMhQajimX79+WLBgAc6fP4/c3FxYW1tj165dCA8Px+3bt7l8IpEIPXv2VHhEB3n5qH11THtSMzGVhmMIIa3t4MGDCsMoLi4uyMzMRHh4OM6cOYP9+/fzJq/WJZFIMH78eKSnp+PMmTOIi4uDj48PdHV1UVRUpHSdKioq8Oabb+LChQuIj4/Hzp07cfr0acyYMYOXb/78+bhw4QLS09OVvgZ58TBK/GRoaMgYY8zQ0LBFy7Xs0ZFV/raE5f5vodrvkRIlSmAikYj5+/szkUik9rq0dNLV1WVpaWls9OjRaq+LMkkoFLIHDx6w119/Xe11odRwaux7R5nfodQTokI0HEMIUZXy8nI4OzvDxMRE3VVRirm5ObZu3Ypr166puypEBWhOiArRcAwhRJXCw8PVXQWlJScn06qYdoR6QlSI2yeE9iojhBBCKAhRJdonhBBCCHmGghAV0no6J0Qmp64QQgghhIIQFdIWVjd3BQUhhBBCCAUhqqStpQkAqJBXqrkmhBBCiPpREKJCOtQTQgghhHAoCFGhZz0hFIQQQgghFISokLZWdXNLZTQcQwhpff7+/li7dm2jeVJTU+Hu7s69Z4xh5syZrV21BnXp0gVisRg9e/ZUWx2I6lAQokI0MZUQ0lJ8fX3BGANjDFKpFElJSdiwYQM0Nat7XK2treHg4AAvLy+lyjUzM0NQUFBrVJkzevRoXLx4ESUlJSgsLER4eDh0dXUBALm5ufD398emTZtatQ6kbaAdU1WoZjhGJqMghJC2TE9HPT8ay6RypfIHBQXBxcUFOjo6cHBwwN69eyGTyfDNN99g5cqVOHnyJEpLS5UqUywWK5VfWaNHj0ZwcDC2bduGlStXQi6Xw8bGBlW1dnH09fVFVFQU1qxZg/z8/FatD1EvCkJU6NnEVBqOIaSt0tPRQvFpZ7Vc2/Adf6UCEalUygUN+/btw+zZs+Ho6Ijt27dj7ty5Ck/R7dq1K3x8fPDmm28iKysL69evVyiTMYZZs2bh7NmzAIBevXph586deOutt1BVVYW//voL7u7uSEtLa9Y97tq1C15eXvj222+5Y4mJibw89+7dQ2ZmJmbPno1ffvmlWdchLwYajlEhIU1MJYS0IolEAm1tbVhbW6Nz5864efMm77yfnx969+6NSZMmYe7cuVixYgW6devWYHlaWloICQlBcXEx7OzsMHbsWJSUlCA4OBhCoRAAsGDBAhQXFzeaxo0bB6A6CBo9ejSys7Nx9epVZGVl4fLlyxg7dqzCtW/cuAE7O7sWbB3SFlFPiArRxFRC2r4yqRyG7/ir7drNZW9vjylTpmDPnj0QiUSQy+XIzs7mzltaWsLBwQEjRozggpOlS5ciPj6+wTKdnJwgEAiwbNky7piLiwsKCgowceJEhIaGIjAwENevX2+0bhkZGQCAfv36AQA8PT3x+eefIyYmBs7Ozrh48SKGDh2K+/fvc5/JzMzEq6++qnxDkBcKBSEqVBOEUE8IIW3b8wQDqjR9+nQUFxdDKBRCIBDg6NGj8PT0hKOjI6RSKS+vlZUVZDIZoqKiuGMJCQmNzrmwsbGBhYUFiouLecd1dXXRv39/hIaGoqSkBCUlJU2qr+Dp87O8vb3h5+cHAIiJiYG9vT2WLFmCdevWcXklEgn09PSaVC55cVEQokK0OoYQ0pIuXboENzc3VFRUIDMzE5WV1b2sOTk50NfXh1AohEwma3b5BgYGiIqKUphbAgBPnjwBUD0c4+3t3Wg506ZNw5UrV/D48WMA1XM+aouLi4O5uTnvmLGxMXcN8vKiIESFdGrmhNBwDCGkBZSWliI5OVnheExMDABg8ODBiI2NBQDEx8dDKBTC1taWG44ZMGAAjIyMGiw/OjoaTk5OyM7OVugNqaHMcMyDBw+QkZGBgQMH8s4PGDBAYVnw0KFDcfny5UbLJS8+mpiqQtQTQghRhZycHERFRXETQoHqFShBQUHw9vbGyJEjMXz4cBw8eBBlZWUNlnPkyBHk5OTg7NmzGDduHPr06YMJEyZg9+7d3GZiJSUlSE5ObjSVl5dzZe7YsQOffPIJ3nnnHfTv3x+bN2/GoEGD4OPjw+Xp0KEDbG1tceHChVZoHdKWUBCiQjX7hEhpnxBCSCs7ePCgwjCKi4sLMjMzER4ejjNnzmD//v28yat1SSQSjB8/Hunp6Thz5gzi4uLg4+MDXV1dFBUVNateu3fvxrZt27Br1y7ExsbC3t4ekydPRkpKCpdn5syZSE9Px5UrV5p1DfJiYZT4ydDQkDHGmKGhYYuW+6PbGFb52xK2Yf4wtd8jJUqUwEQiEfP392cikUjtdWnppKury9LS0tjo0aPVXhdlU0REBJs/f77a60Gp4dTY944yv0OpJ0SFaHUMIURVysvL4ezsDBMTE3VXRSldunTBmTNncOzYMXVXhagATUxVIR0hbVZGCFGd8PBwdVdBabm5udixY4e6q0FUhHpCVIjrCaHVMYQQQggFIaqkXdMTQhNTCSGEEApCVOnZnBDqCSGEEEIoCFEhmphKCCGEPENBiApp08RUQgghhENBiArRxFRCCCHkGQpCVKgmCJFSTwghpJVNmDABjDF06tRJ3VVRCmMMM2fObLHyUlNT4e7u3mLlKePSpUvYtWvXc5XRlP/HRYsW8Z6G7OHhgVu3bnHvfX198euvvz5XPVoLBSEq9Gx1DPWEEEKajzHWaPLw8FB3Ff9V3V+UNczMzBQeZkcad/z4cQwYMKDB8+7u7li8eDH3viWCo5ZCm5WpEE1MJYS0BDMzM+61k5MTNm/ezHsybUlJCV577TV1VA1CoRAymazZnxeLxS1Ym9bxvPfY0srLy3kPCayruc/5UQXqCVEh2jGVENISxGIxlwoLC8EY4x0rLS3l8tra2uLvv/9GaWkprl69qvAXs6OjI6KioiCRSJCcnIyNGzdCU1OTO9+7d28EBASguLgYhYWFOH78OLp168adr+nRWLp0KVJSUrhfhp06dcKBAweQnZ2NwsJCXLx4EdbW1gCqhw88PT0xbNgwrvdm0aJFABSHY3r27ImjR48iNzcXJSUl+PvvvzFy5EgAQL9+/RAQEICsrCwUFxfjxo0bsLe3V6ota4YqNm7cyNX1559/hlAo5PJcunQJe/bswa5du/DkyROEhIQAAMaPH4/r16+jvLwcmZmZ2LZtG6/tAEBLSwt79uxBQUEBnjx5gs2bN/POv//++/j7779RVFSEx48f48iRI+jatatCPceOHYvY2FhIJBJERERgyJAh3Lm6wzEN3WPN64kTJ2LVqlVc2/fp0wdJSUn47LPPeJ+zsbEBYwz9+/dvYmsqj4IQFaKeEEKIqn399df47LPP8Nprr0Eul+OXX37hzo0bNw7+/v7YvXs3Bg8ejA8//BCLFy/Gf/7zHwCAhoYGzp49C2NjY0yYMAGTJ09Gv379cPz4cd41LCws8M4772DOnDkYNmwYAODkyZPo1q0bpk2bBltbW0RHR+PixYswMjLC8ePH8d133+HOnTswMzODmZmZQpkAoK+vj/DwcPTs2ROOjo6wsbHB9u3bIRBU/yw1MDDA+fPnYW9vj1dffRXBwcE4d+4cevfurVQb2dvbw8rKChMnTsT8+fMxZ84chSGtRYsWoaKiAmPHjoWrqyt69OiB8+fP4++//4aNjQ3c3NywdOlSrF+/XuFzcrkcI0eOhLu7O1avXo1ly5Zx54VCITZs2AAbGxvMmjULffr0gZ+fn0Idd+zYgc8++wwjRozAkydPcO7cOWhpKT+Y4e7ujmvXrmH//v1c26enp+OXX36Bi4sLL6+LiwvCw8ORnJys9HWUofan8bW11FpP0c0+uoBV/raEDezVSe33SIkSpZfjKbqLFi1i+fn5CscnTJjAGGPsjTfe4I5NmzaNMcaYjo4OA8BCQ0PZV199xfvcwoULWUZGBgPA3nzzTSaTyVivXr2481ZWVowxxl577TUGgHl4eDCpVMpMTEy4PGPHjmUFBQVMW1ubV3ZSUhJbvnw597lbt24p1JsxxmbOnMkAsOXLl7PCwkJmZGTU5Pa4ffs2++ijj7j3qampzN3dvcH8vr6+LCcnh3Xo0IE79uGHH7KioiKmoaHBALBLly6xqKgo3ue2bNnC4uLieMfc3NwUPnf37l1enm3btikcq51sbW0ZY4zp6+vz/h/nzZvH5TEyMmKlpaXs3XffrfdroG7b+vr6sl9//ZV7f+nSJbZr1y7edbt3785kMhkbMWIEA8C0tLRYdnY2c3Z2Vvp754V7iu6KFSuQmpoKiUSCyMhIjBgxotH8c+fORVxcHCQSCf755x9MmzZNIc+mTZuQmZmJsrIyhIaGwsLCorWq32TaWrRtOyFEtf755x/u9ePHjwGAG06xsbHBxo0bUVxczKUDBw6gR48e6NChA6ysrPDw4UM8evSIKyMuLg75+fmwsrLijqWlpSEnJ4d7b2NjAwMDA+Tm5vLK7tu3r1Jd+8OGDcOtW7caHGrQ19fHjh07cO/ePeTn56O4uBhWVlYwNzdv8jUAcMMcNSIiImBoaMjrUYmKiuJ9xsrKChEREbxjV69ehaGhIXr16sUdi4yM5OWJiIiApaUl15szfPhwBAYGIi0tDUVFRdxDB+veQ+1r5efnIyEhgfd/8LweP36M33//HUuWLAEAzJgxAzo6Ojh58mSLXaM+ag9C5s2bh++//x6bNm3C8OHDERsbi5CQkHrHxABgzJgxOHbsGHx8fPDqq68iICAAAQEBvPGxL774Ap988glcXV0xatQolJaWIiQkBDo6Oqq6rXppC2nbdkKIatWeQMkYAwDecIaHhweGDRvGpVdeeQUWFhaNTnSsq/YclJpyHz9+zCt32LBhGDhwoFJPyK0dGNTnu+++w+zZs7Fu3TrY2dlh2LBhuH37NrS1tZt8jaaqe48tQU9PDyEhISgqKsLChQsxYsQIzJ49GwBa5R7+zcGDB/Hee+9BV1cXLi4uOH78+L/+HzwvtQchq1evxoEDB+Dn54e4uDi4urqirKyMi8bqcnd3R3BwML777jvEx8dj48aNiI6Oxscff8zlWbVqFbZs2YLAwEDcvn0bzs7O6NGjB2bNmqWiu1LUWV+bJqYSQtqU6OhoDBw4EMnJyQqJMYa4uDj07t2b95e9lZUVjIyMcO/evUbLNTMzg1wuVyg3NzcXAFBRUaEwibOuf/75B8OGDYORkVG958eOHQs/Pz8EBATgzp07yMrKQp8+fZRuBxsbG+jq6nLvR48ejeLiYjx8+LDBz8TFxWHMmDEK9SkqKuL1HI0aNYqXZ/To0UhKSkJVVRUGDRoEExMTfPXVV7hy5QoSEhJ4k37rfq5G586dMWDAAMTFxSl1nzUaavvz58+jtLQUbm5umDp1Km/+UGtRaxAiFApha2uLsLAw7hhjDGFhYQr/uTXGjBnDyw8AISEhXP6+ffuie/fuvDxFRUW4fv16g2Vqa2vD0NCQl1ranZ/ncK8pCCGEtAWbN2+Gs7MzNm7ciMGDB2PQoEFwcnLCf//7XwBAWFgYbt++jSNHjuDVV1/FiBEj4O/vj8uXLysMT9QWFhaGiIgIBAQEYPLkyRCJRBgzZgy2bNkCW1tbAMCDBw/Qt29f2NjYoEuXLvX+5X/s2DFkZWUhICAAr7/+Ovr27Ys5c+Zwv5CTkpIwZ84c2NjYwNraGkePHuV6eZShra0NHx8fWFlZYdq0adi0aRN+/PFHrueoPj/99BN69+6NPXv2YODAgXB0dMSmTZvw/fff8z5nbm6OnTt3YsCAAXjvvfewcuVK7N69GwCQnp4OqVSKlStXom/fvpgxYwY2bNhQ7/U2btyIN954A0OGDIGfnx9ycnIQEBCg9L0C1W0/atQoiEQidOnSBRoaGgCAqqoq+Pn5Ydu2bUhKSlIYSmoNag1CTExMoKWlpbAuXCwW89bB12ZmZtZo/pp/lSlz7dq1KCoq4lJGRkaz7qcxNYHH5duPUVha0eLlE0KIsi5cuIDp06fjrbfewt9//43IyEh8+umnSEtL4/LMnDkT+fn5+PPPPxEWFoaUlBQ4OTn9a9kODg74888/4evri8TERPzvf/+DSCTifjafPn0awcHBuHTpEnJycjB//nyFMmQyGd566y1kZ2fj/PnzuH37Nr766itUVlYPaa9evRr5+fm4du0azp07h5CQEERHRyvdDhcvXkRSUhL+/PNPHD9+HIGBgfD09Gz0M5mZmXBwcMDIkSMRGxuLffv2wcfHB1u2bOHl8/f3R4cOHXDjxg3s3bsXu3fvxv79+wEAOTk5WLx4Md59913cu3cPX331FT7//PN6r/fVV19h9+7diIqKgpmZGWbMmNHsvUq+++47VFZW4t69e8jJyeHNP/Hx8YGOjg58fX2bVXZzqG1Wd/fu3RljjI0ePZp3/Ntvv2WRkZH1fkYqlbL33ntPYUZyVlYWA8DGjBnDGGPMzMyMl+f48ePsf//7X71lamtrM0NDQy716NGjxVfHaAo0mKZAQ21tTYkSJcX0MqyOofR8qe7Kkfaexo0bx6RSKevWrVuj+VpqdYxad0zNycmBXC6Hqakp77ipqSmysrLq/UxWVlaj+Wv+rVuGqakpYmJi6i2zoqICFRWt2ztRWcVatXxCCCGkubS1tdG1a1d4enri5MmTyM7OVsl11TocI5PJEBUVxdvhTkNDA/b29gpLn2pEREQo7Ig3efJkLn9qaioeP37My2NoaIhRo0Y1WCYhhBDSns2fPx9paWno3LkzvvjiC5VeW61dP/PmzWMSiYQ5OzuzQYMGsX379rG8vDyuK+jQoUNs69atXP4xY8awiooKtnr1ajZw4EBuo5whQ4Zweb744guWl5fHZsyYwYYOHcp+/fVXlpyczG3Q82+ptTYro0SJUttKNBxDiVLz0ksxHAMAJ06cQNeuXbF582aYmZkhJiYGU6dO5bqCzM3NUVX1bDVJREQEFixYgC1btmDr1q1ISkrCrFmzcPfuXS7P9u3boa+vj/3796Nz5864cuUKpk6dCqlUqvL7I4QQQkjD1B5RtbVEPSGUKLWPZG5uzvz9/Vn//v3VXhdKlF6k1L9/f+bv78/Mzc0Vzr1w27YTQog61GycNWjQIDXXhJAXS833TO3t+ptD7cMxhBCiLqWlpbh8+TLmzZsHAIiPj4dcLldzrQhpu7S0tDBo0CDMmzcPly9fRllZ2fOV10L1IoSQF1LNpkxN2YCLEFLt8uXLLbKhmQaqx2VILYaGhigqKkLHjh1RXFys7uoQQlRAT08PJiYm3BbWhBBFjDHk5OQ02gOizO9Q6gkhhBAAZWVlSE9PV3c1CGlXaGIqIYQQQtSCghBCCCGEqAUFIYQQQghRC5oT0ghDQ0N1V4EQQgh5oSjzu5OCkHrUNGBGRoaaa0IIIYS8mAwNDf91dQwt0W1Ajx49WnR5rqGhITIyMtCzZ09a9ttCqE1bHrVpy6L2bHnUpi2vNdrU0NAQmZmZ/5qPekIa0JTGa47i4mL6xmlh1KYtj9q0ZVF7tjxq05bXkm3a1HJoYiohhBBC1IKCEEIIIYSoBQUhKiKVSuHp6QmpVKruqrw0qE1bHrVpy6L2bHnUpi1PnW1KE1MJIYQQohbUE0IIIYQQtaAghBBCCCFqQUEIIYQQQtSCghBCCCGEqAUFISqyYsUKpKamQiKRIDIyEiNGjFB3ldokOzs7BAYGIiMjA4wxzJw5UyHPpk2bkJmZibKyMoSGhsLCwoJ33sjICIcPH0ZhYSHy8/Nx8OBB6Ovrq+oW2pSvvvoKN27cQFFREcRiMX799VcMGDCAl0dHRwc//vgjcnJyUFxcjFOnTqFbt268PL1798Zvv/2G0tJSiMVibN++HZqamqq8lTbD1dUVsbGxKCwsRGFhIa5du4apU6dy56k9n9+XX34Jxhh27drFHaN2VY6HhwcYY7wUFxfHnW9L7ckotW6aN28eKy8vZ4sXL2ZWVlbM29ub5eXlsa5du6q9bm0tTZ06lf33v/9ls2bNYowxNnPmTN75L774guXn5zNHR0f2yiuvsICAAJacnMx0dHS4POfPn2e3bt1iI0eOZGPHjmWJiYnsyJEjar83daSgoCC2aNEiNnjwYGZtbc1+++039uDBA6anp8fl+emnn1haWhqbNGkSGz58OLt27Rq7cuUKd14gELB//vmHXbhwgdnY2LCpU6ey7Oxs9vXXX6v9/tSRpk+fzqZNm8YsLCyYpaUl27JlC5NKpWzw4MHUni2QXnvtNZaSksJiYmLYrl27uOPUrsolDw8Pdvv2bWZqasqlLl26tMX2VH9jvewpMjKS7dmzh3uvoaHBHj16xL788ku1160tp/qCkMzMTPbZZ59x7zt27MgkEglzcnJiANigQYMYY4zZ2tpyeaZMmcIqKytZ9+7d1X5P6k4mJiaMMcbs7Oy49pNKpeydd97h8gwcOJAxxtioUaMYUB0YyuVy1q1bNy7Phx9+yAoKCphQKFT7PbWFlJuby5YsWULt+ZxJX1+fJSQkMHt7e3bp0iUuCKF2VT55eHiwW7du1XuuLbUnDce0MqFQCFtbW4SFhXHHGGMICwvDmDFj1FizF0/fvn3RvXt3XlsWFRXh+vXrXFuOGTMG+fn5iIqK4vKEhYWhqqoKo0aNUnmd25pOnToBAPLy8gAAtra20NbW5rVpQkIC0tLSeG16+/ZtZGdnc3lCQkLQqVMnDBkyRIW1b3sEAgGcnJygr6+PiIgIas/ntHfvXvz++++4ePEi7zi1a/NYWloiIyMDycnJOHz4MHr37g2gbbUnPcCulZmYmEBLSwtisZh3XCwWY9CgQWqq1YvJzMwMAOpty5pzZmZmvG8aAKisrEReXh6Xp73S0NDADz/8gCtXruDu3bsAqttLKpWisLCQl7dum9bX5jXn2qOhQ4ciIiICurq6KCkpwezZsxEXF4dhw4ZRezaTk5MThg8fXu98Ofo6Vd7169exePFiJCQkoHv37vDw8MBff/2FoUOHtqn2pCCEkHZi7969GDp0KMaNG6fuqrzwEhISMGzYMHTq1Alz587FoUOHMGHCBHVX64XVq1cv7N69G5MnT6bt2FtIcHAw9/r27du4fv060tLSMG/ePEgkEjXWjI+GY1pZTk4O5HI5TE1NecdNTU2RlZWlplq9mGraq7G2zMrKUpjhrampCWNj43bd3nv27MH06dMxadIkZGRkcMezsrKgo6PDDdPUqNum9bV5zbn2SCaTITk5GdHR0Vi3bh1iY2Ph7u5O7dlMtra2MDU1RXR0NGQyGWQyGSZOnIhPPvkEMpkMYrGY2vU5FRYWIjExERYWFm3u61TtE2he9hQZGcm8vLy49xoaGuzhw4c0MfVfUkMTU1evXs29NzQ0rHdi6vDhw7k8kydPbtcTU/fs2cMePXrELCwsFM7VTFCbM2cOd2zAgAH1TlCrvZpr+fLlrKCggGlra6v9/tpCunjxIvP19aX2bGYyMDBgQ4YM4aUbN24wf39/NmTIEGrXFkj6+vosNzeXrVy5sq21p/ob52VP8+bNYxKJhDk7O7NBgwaxffv2sby8PN6sY0rVSV9fn9nY2DAbGxvGGGOrVq1iNjY2rHfv3gyoXqKbl5fHZsyYwYYOHcp+/fXXepfoRkVFsREjRrDXX3+dJSQktNslunv37mX5+fls/PjxvKV6urq6XJ6ffvqJPXjwgE2cOJENHz6cXb16lV29epU7X7NULzg4mFlbW7O33nqLicXidrv0cevWrczOzo6JRCI2dOhQtnXrVlZZWcnefPNNas8WTLVXx1C7Kp927NjBxo8fz0QiERszZgy7cOECy87OZiYmJm2tPdXfWO0hffTRR+zBgwesvLycRUZGspEjR6q9Tm0xTZgwgdXH19eXy7Np0yb2+PFjJpFIWGhoKLO0tOSVYWRkxI4cOcKKiopYQUEB8/HxYfr6+mq/N3WkhixatIjLo6Ojw3788UeWm5vLSkpK2OnTp5mpqSmvHHNzc/b777+z0tJSlp2dzXbs2ME0NTXVfn/qSAcPHmSpqamsvLycicViFhoaygUg1J4tl+oGIdSuyqVjx46xjIwMVl5ezh4+fMiOHTvG+vXr1+baU+PpC0IIIYQQlaKJqYQQQghRCwpCCCGEEKIWFIQQQgghRC0oCCGEEEKIWlAQQgghhBC1oCCEEEIIIWpBQQghhBBC1IKCEEIIIYSoBQUhhBC1mDlzJpKSkiCXy7Fr1y51V0dpixYtQn5+vrqrQcgLT+3by1Ki1J6Tqakp++GHH1hSUhKTSCQsKyuLXblyhbm6urIOHTqovX6tlbKysti2bdtY9+7dmYGBgdrro2zS1dXlPdxLnanuFueUKL0oSQuEELXp27cvrl69ioKCAqxbtw63b9+GVCrFK6+8gg8++AAZGRk4d+5cvZ/V0tKCXC5XcY1bhr6+PkxNTRESEoLHjx+ruzpK09LSQnl5OcrLy9VdFUJeeGqPhChRaq8pKCiIpaenMz09vX/Nyxhjrq6u7OzZs6ykpIR5eHgwAMzV1ZXdv3+fSaVSFh8fz95//33uMyKRiDHGmI2NDXesU6dOjDHGJkyYwIBnDw10cHBgsbGxTCKRsIiICDZkyBDuM+bm5iwwMJDl5eWxkpISdufOHTZt2rQG69q5c2d26NAhlpeXx0pLS9n58+eZhYUF73q11dSlburUqRM7cOAAy87OZoWFhezixYvM2tqaAWAmJibs8ePHbO3atVz+MWPGMKlUyt544w0GgHl4eLBbt26xDz74gKWnp7PS0lJ2/Phx1rFjR951li5dyu7du8ckEgmLi4tjbm5uCm04b948dvnyZSaRSNiiRYvYokWLWH5+Ppev5louLi4sLS2NFRcXs7179zKBQMDWrFnDHj9+zMRiMVu3bl2T77F2ue+//z5LTU1lBQUF7NixY1zvka+vr0J7ikQi1rlzZ3b48GGWnZ3NysrKWGJiIlu8eLHav+YpUaqT1F4BSpTaZTI2NmaVlZXsyy+/bFJ+xhjLyspiixcvZn379mW9e/dms2bNYlKplLm5uTFLS0v26aefMplMxiZOnMgA5YKQu3fvsjfffJMNHTqUBQYGspSUFKalpcUAsHPnzrGQkBA2dOhQ1rdvX/b2228zOzu7BusaEBDA7t69y8aNG8esra1ZUFAQS0xMZFpaWkwoFDJLS0vGGGOzZ89mpqamTCgU1lvOhQsX2NmzZ5mtrS2zsLBgO3bsYE+ePGFGRkYMAJs2bRqTSqXM1taWGRgYsPv377OdO3dyn/fw8GDFxcUsLCyM2djYMDs7O5aYmMgOHz7M5VmwYAHLyMhgs2fPZn369GGzZ89mOTk5zNnZmdeGKSkpXB4zM7N6g5CioiJ24sQJZmVlxaZPn87Ky8tZUFAQ2717NxswYABbvHgxY4zxnqL9b/dYU+6pU6fYkCFD2Lhx41hmZibbsmULA8A6duzIrl69yry9vZmpqSkzNTVlAoGA7dmzh0VHRzNbW1smEomYvb09mz59utq/7ilRqpPUXgFKlNplGjlyJGOMsVmzZvGOP3nyhBUXF7Pi4mL2zTffcMcZY+z777/n5b1y5Qrz9vbmHTt+/Dj77bffGKBcEDJv3jwuj5GRESstLWXvvvsuA8BiY2PZxo0bm3RfFhYWjDHGxowZwx0zNjZmpaWlbO7cufXWob40duxYVlBQwLS1tXnHk5KS2PLly7n3P/74I4uPj2eHDx9msbGxvPweHh5MJpOxHj16cMemTJnC5HI599jypKQk9t577/Gu8Z///IddvXqV14affPIJL099QUhJSQlvfktQUBBLSUlhGhoa3LG4uDgu8GzKPdZX7rfffssiIiK49/XNCTl79izz8fFR+9c5JUqNJZoTQkgbM3LkSAgEAhw5cgQ6Ojq8czdv3uS9t7Kywv79+3nHrl69Cnd3d6WvGxERwb3Oz89HQkICrKysAABeXl74+eef8dZbbyEsLAynT5/G7du36y3HysoKMpkM169f547l5eXxymsKGxsbGBgYIDc3l3e8Q4cO6N+/P/f+888/x507d/Duu+/C1tYWFRUVvPzp6enIzMzk3aempiYGDhyI4uJiWFhYwMfHBwcOHODyaGlpobCwkFdO3bavz4MHD1BSUsK9F4vFqKysBGOMd6xbt25K3WPdch8/fsyV0ZCff/4Zp0+fxvDhw3HhwgUEBATw/o8JaQsoCCFETe7fv4+qqioMHDiQdzw1NRUAIJFIFD5TWlqq1DWqqqoAABoaGtwxoVCobFXh4+ODkJAQvP3223jrrbewdu1afPbZZ/jxxx+VLqupDAwM8PjxY0ycOFHhXEFBAfe6f//+6NGjBwQCAfr06YM7d+4odQ0AWL58OS9oAoDKykre+6a0vUwm471njNV7TCAQcNdvyj02VkZDgoODIRKJ4ODggMmTJ+PixYvYu3cv1qxZ86/3QYiq0D4hhKhJXl4eQkND8fHHH0NPT69ZZcTFxWHs2LG8Y2PHjsW9e/cAAE+ePAEAdO/enTs/bNiwessaPXo097pz584YMGAA4uLiuGOPHj2Ct7c33nnnHezcuRPLly9vsE5CoRCjRo3ijhkbG2PgwIFcvZoiOjoaZmZmkMvlSE5O5qWangOhUIjDhw/j+PHj2LBhAw4ePIiuXbvyyjE3N+fd/+jRo1FZWYmEhARkZ2cjIyMD/fr1U7jGgwcPmlzX5mrKPTZFRUUFNDU1FY7n5OTA398f//d//4dVq1bhgw8+aMnqE/LcqCeEEDVasWIFrl69ips3b8LT0xP//PMPqqqqMGLECAwaNAhRUVGNfn7Hjh04ceIEbt26hbCwMMyYMQNz5szBm2++CQAoLy9HREQEvvrqK6SmpqJbt27YsmVLvWVt3LgRubm5EIvF+Prrr5GTk4OAgAAAwK5duxAUFITExEQYGRlh0qRJvACltvv37yMgIAAHDhzAhx9+iOLiYnzzzTfIyMjA2bNnm9w2YWFhiIiIQEBAAL744gskJiaiR48eePvtt/Hrr78iKioKX3/9NTp16oRPPvkEJSUlcHBwwC+//IIZM2Zw5ZSXl+PQoUP4/PPP0bFjR3h5eeHEiRMQi8UAAA8PD3h5eaGwsBDBwcHQ0dHBa6+9BiMjo1bfRK0p99gUDx48wKhRoyASiVBSUoK8vDx4enoiKioKd+/ehY6ODqZPn97g/xkh6qT2iSmUKLXnZGZmxry8vFhycjKTSqWsqKiIRUZGss8++4y3WRljjM2cOVPh840t0QXABg0axK5evcpKS0tZdHQ0e/PNN+udmPr222+z27dvs/LychYZGcleeeUVrgwvLy9uMzWxWMwOHTrEjI2NG7ynmiW6+fn5rLS0lAUFBXFLdIGmTUwFwAwMDNju3bvZo0ePmFQqZWlpaez//b//x3r16sUmTJjAKioq2NixY7n8IpGIFRQUMFdXVwY8W97q6urKHj16xMrKytiJEydY586dedeZP38+i46OZuXl5Sw3N5ddvnyZmzBc3+ReoP6Jqbdu3eLl8fX1Zb/++ivvWN1JpI3dY0Pluru7s9TUVO69paUlu3btGistLeWW6P7nP/9hd+/eZaWlpSwnJ4f9+uuvrE+fPmr/eqdEqXbSePqCENJOTZgwAZcvX0bnzp0VJmO+6Dw8PDBr1iy8+uqr6q4KIaQeNCeEEEIIIWpBQQghhBBC1IKGYwghhBCiFtQTQgghhBC1oCCEEEIIIWpBQQghhBBC1IKCEEIIIYSoBQUhhBBCCFELCkIIIYQQohYUhBBCCCFELSgIIYQQQoha/H/yihLfOpmOngAAAABJRU5ErkJggg=="
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data",
|
||
"jetTransient": {
|
||
"display_id": null
|
||
}
|
||
}
|
||
],
|
||
"execution_count": 32
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.474923890Z",
|
||
"start_time": "2026-03-14T11:37:48.467148045Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"class Timer:\n",
|
||
" \"\"\"记录多次运行时间\"\"\"\n",
|
||
" def __init__(self):\n",
|
||
" self.times = []\n",
|
||
" self.start()\n",
|
||
" def start(self):\n",
|
||
" \"\"\"启动计时器\"\"\"\n",
|
||
" self.tik = time.time()\n",
|
||
" def stop(self):\n",
|
||
" \"\"\"停止计时器并将时间记录在列表中\"\"\"\n",
|
||
" self.times.append(time.time() - self.tik)\n",
|
||
" return self.times[-1]\n",
|
||
" def avg(self):\n",
|
||
" \"\"\"返回平均时间\"\"\"\n",
|
||
" return sum(self.times) / len(self.times)\n",
|
||
" def sum(self):\n",
|
||
" \"\"\"返回时间总和\"\"\"\n",
|
||
" return sum(self.times)\n",
|
||
" def cumsum(self):\n",
|
||
" \"\"\"返回累计时间\"\"\"\n",
|
||
" return np.array(self.times).cumsum().tolist()"
|
||
],
|
||
"id": "4bdbb4999907154a",
|
||
"outputs": [],
|
||
"execution_count": 33
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.638326094Z",
|
||
"start_time": "2026-03-14T11:37:48.475453591Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"n = 10000\n",
|
||
"a = torch.ones([n])\n",
|
||
"b = torch.ones([n])\n",
|
||
"c=torch.zeros(n)\n",
|
||
"timer = Timer()\n",
|
||
"for i in range(n):\n",
|
||
" c[i]=a[i]+b[i]\n",
|
||
"f'{timer.stop():.5f} sec'"
|
||
],
|
||
"id": "c6f71622e2cc578a",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'0.05042 sec'"
|
||
]
|
||
},
|
||
"execution_count": 34,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 34
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.678544906Z",
|
||
"start_time": "2026-03-14T11:37:48.640377978Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"timer.start()\n",
|
||
"d=a+b\n",
|
||
"f'{timer.stop():.5f} sec'"
|
||
],
|
||
"id": "2578c79b1214a79f",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'0.00046 sec'"
|
||
]
|
||
},
|
||
"execution_count": 35,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 35
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.687129040Z",
|
||
"start_time": "2026-03-14T11:37:48.680082631Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import math\n",
|
||
"def normal(x, mu, sigma):\n",
|
||
" p = 1 / math.sqrt(2 * math.pi * sigma**2)\n",
|
||
" return p * np.exp(-0.5 / sigma**2 * (x - mu)**2)"
|
||
],
|
||
"id": "fd17fdbe38a5f79",
|
||
"outputs": [],
|
||
"execution_count": 36
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.705878968Z",
|
||
"start_time": "2026-03-14T11:37:48.687875003Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from matplotlib_inline import backend_inline\n",
|
||
"def use_svg_display(): #@save\n",
|
||
" \"\"\"使用svg格式在Jupyter中显示绘图\"\"\"\n",
|
||
" backend_inline.set_matplotlib_formats('svg')\n",
|
||
"def set_figsize(figsize=(3.5, 2.5)): #@save\n",
|
||
" \"\"\"设置matplotlib的图表大小\"\"\"\n",
|
||
" use_svg_display()\n",
|
||
" plt.rcParams['figure.figsize'] = figsize\n",
|
||
"def set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend):\n",
|
||
" \"\"\"设置matplotlib的轴\"\"\"\n",
|
||
" axes.set_xlabel(xlabel)\n",
|
||
" axes.set_ylabel(ylabel)\n",
|
||
" axes.set_xscale(xscale)\n",
|
||
" axes.set_yscale(yscale)\n",
|
||
" axes.set_xlim(xlim)\n",
|
||
" axes.set_ylim(ylim)\n",
|
||
" if legend:\n",
|
||
" axes.legend(legend)\n",
|
||
" axes.grid()\n",
|
||
"def plot(X, Y=None, xlabel=None, ylabel=None, legend=None, xlim=None,\n",
|
||
"ylim=None, xscale='linear', yscale='linear',\n",
|
||
"fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5, 2.5), axes=None):\n",
|
||
" \"\"\"绘制数据点\"\"\"\n",
|
||
" if legend is None:\n",
|
||
" legend = []\n",
|
||
" set_figsize(figsize)\n",
|
||
" axes = axes if axes else plt.gca()\n",
|
||
" # 如果X有一个轴,输出True\n",
|
||
" def has_one_axis(X):\n",
|
||
" return (hasattr(X, \"ndim\") and X.ndim == 1 or isinstance(X, list)\n",
|
||
"and not hasattr(X[0], \"__len__\"))\n",
|
||
" if has_one_axis(X):\n",
|
||
" X = [X]\n",
|
||
" if Y is None:\n",
|
||
" X, Y = [[]] * len(X), X\n",
|
||
" elif has_one_axis(Y):\n",
|
||
" Y = [Y]\n",
|
||
" if len(X) != len(Y):\n",
|
||
" X = X * len(Y)\n",
|
||
" axes.cla()\n",
|
||
" for x, y, fmt in zip(X, Y, fmts):\n",
|
||
" if len(x):\n",
|
||
" axes.plot(x, y, fmt)\n",
|
||
" else:\n",
|
||
" axes.plot(y, fmt)\n",
|
||
" set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)"
|
||
],
|
||
"id": "82158a69cba14da0",
|
||
"outputs": [],
|
||
"execution_count": 37
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.820167717Z",
|
||
"start_time": "2026-03-14T11:37:48.707125239Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# 再次使用numpy进行可视化\n",
|
||
"x = np.arange(-7, 7, 0.01)\n",
|
||
"# 均值和标准差对\n",
|
||
"params = [(0, 1), (0, 2), (3, 1)]\n",
|
||
"plot(x, [normal(x, mu, sigma) for mu, sigma in params], xlabel='x',\n",
|
||
"ylabel='p(x)', figsize=(4.5, 2.5),\n",
|
||
"legend=[f'mean {mu}, std {sigma}' for mu, sigma in params])"
|
||
],
|
||
"id": "f69ac10ebc3d13d8",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 450x250 with 1 Axes>"
|
||
],
|
||
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"302.08125pt\" height=\"183.35625pt\" viewBox=\"0 0 302.08125 183.35625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-14T19:37:48.782465</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.10.8, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 183.35625 \nL 302.08125 183.35625 \nL 302.08125 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 43.78125 145.8 \nL 294.88125 145.8 \nL 294.88125 7.2 \nL 43.78125 7.2 \nz\n\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <path d=\"M 71.511736 145.8 \nL 71.511736 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"me49776c533\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#me49776c533\" x=\"71.511736\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- −6 -->\n <g style=\"fill: #ffffff\" transform=\"translate(64.140642 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \nL 4684 2272 \nL 4684 1741 \nL 678 1741 \nL 678 2272 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-36\" transform=\"translate(83.789062 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_3\">\n <path d=\"M 104.145435 145.8 \nL 104.145435 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#me49776c533\" x=\"104.145435\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- −4 -->\n <g style=\"fill: #ffffff\" transform=\"translate(96.774342 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-34\" transform=\"translate(83.789062 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_5\">\n <path d=\"M 136.779135 145.8 \nL 136.779135 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#me49776c533\" x=\"136.779135\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- −2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(129.408041 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(83.789062 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_7\">\n <path d=\"M 169.412834 145.8 \nL 169.412834 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#me49776c533\" x=\"169.412834\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(166.231584 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_9\">\n <path d=\"M 202.046534 145.8 \nL 202.046534 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#me49776c533\" x=\"202.046534\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(198.865284 160.398438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-32\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_6\">\n <g id=\"line2d_11\">\n <path d=\"M 234.680233 145.8 \nL 234.680233 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <g>\n <use xlink:href=\"#me49776c533\" x=\"234.680233\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- 4 -->\n <g style=\"fill: #ffffff\" transform=\"translate(231.498983 160.398438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-34\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_7\">\n <g id=\"line2d_13\">\n <path d=\"M 267.313932 145.8 \nL 267.313932 7.2 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#me49776c533\" x=\"267.313932\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 6 -->\n <g style=\"fill: #ffffff\" transform=\"translate(264.132682 160.398438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-36\"/>\n </g>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- x -->\n <g style=\"fill: #ffffff\" transform=\"translate(166.371875 174.076563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \nL 2247 1797 \nL 3578 0 \nL 2900 0 \nL 1881 1375 \nL 863 0 \nL 184 0 \nL 1544 1831 \nL 300 3500 \nL 978 3500 \nL 1906 2253 \nL 2834 3500 \nL 3513 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-78\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_15\">\n <path d=\"M 43.78125 139.5 \nL 294.88125 139.5 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_16\">\n <defs>\n <path id=\"m04b79169fb\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m04b79169fb\" x=\"43.78125\" y=\"139.5\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 0.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 143.299219) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2e\" d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" transform=\"translate(63.623047 0)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(95.410156 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_17\">\n <path d=\"M 43.78125 107.916484 \nL 294.88125 107.916484 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m04b79169fb\" x=\"43.78125\" y=\"107.916484\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 0.1 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 111.715702) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" transform=\"translate(63.623047 0)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(95.410156 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_19\">\n <path d=\"M 43.78125 76.332967 \nL 294.88125 76.332967 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_20\">\n <g>\n <use xlink:href=\"#m04b79169fb\" x=\"43.78125\" y=\"76.332967\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 0.2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 80.132186) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" transform=\"translate(63.623047 0)\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(95.410156 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_21\">\n <path d=\"M 43.78125 44.749451 \nL 294.88125 44.749451 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_22\">\n <g>\n <use xlink:href=\"#m04b79169fb\" x=\"43.78125\" y=\"44.749451\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- 0.3 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 48.54867) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \nQ 3050 2419 3304 2112 \nQ 3559 1806 3559 1356 \nQ 3559 666 3084 287 \nQ 2609 -91 1734 -91 \nQ 1441 -91 1130 -33 \nQ 819 25 488 141 \nL 488 750 \nQ 750 597 1062 519 \nQ 1375 441 1716 441 \nQ 2309 441 2620 675 \nQ 2931 909 2931 1356 \nQ 2931 1769 2642 2001 \nQ 2353 2234 1838 2234 \nL 1294 2234 \nL 1294 2753 \nL 1863 2753 \nQ 2328 2753 2575 2939 \nQ 2822 3125 2822 3475 \nQ 2822 3834 2567 4026 \nQ 2313 4219 1838 4219 \nQ 1578 4219 1281 4162 \nQ 984 4106 628 3988 \nL 628 4550 \nQ 988 4650 1302 4700 \nQ 1616 4750 1894 4750 \nQ 2613 4750 3031 4423 \nQ 3450 4097 3450 3541 \nQ 3450 3153 3228 2886 \nQ 3006 2619 2597 2516 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" transform=\"translate(63.623047 0)\"/>\n <use xlink:href=\"#DejaVuSans-33\" transform=\"translate(95.410156 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_23\">\n <path d=\"M 43.78125 13.165935 \nL 294.88125 13.165935 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_24\">\n <g>\n <use xlink:href=\"#m04b79169fb\" x=\"43.78125\" y=\"13.165935\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_13\">\n <!-- 0.4 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 16.965154) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" transform=\"translate(63.623047 0)\"/>\n <use xlink:href=\"#DejaVuSans-34\" transform=\"translate(95.410156 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"text_14\">\n <!-- p(x) -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 86.535156) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-70\" d=\"M 1159 525 \nL 1159 -1331 \nL 581 -1331 \nL 581 3500 \nL 1159 3500 \nL 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nz\nM 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-28\" d=\"M 1984 4856 \nQ 1566 4138 1362 3434 \nQ 1159 2731 1159 2009 \nQ 1159 1288 1364 580 \nQ 1569 -128 1984 -844 \nL 1484 -844 \nQ 1016 -109 783 600 \nQ 550 1309 550 2009 \nQ 550 2706 781 3412 \nQ 1013 4119 1484 4856 \nL 1984 4856 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-29\" d=\"M 513 4856 \nL 1013 4856 \nQ 1481 4119 1714 3412 \nQ 1947 2706 1947 2009 \nQ 1947 1309 1714 600 \nQ 1481 -109 1013 -844 \nL 513 -844 \nQ 928 -128 1133 580 \nQ 1338 1288 1338 2009 \nQ 1338 2731 1133 3434 \nQ 928 4138 513 4856 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-70\"/>\n <use xlink:href=\"#DejaVuSans-28\" transform=\"translate(63.476562 0)\"/>\n <use xlink:href=\"#DejaVuSans-78\" transform=\"translate(102.490234 0)\"/>\n <use xlink:href=\"#DejaVuSans-29\" transform=\"translate(161.669922 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_25\">\n <path d=\"M 55.194886 139.5 \nL 108.061479 139.392742 \nL 113.44604 139.148719 \nL 117.035747 138.770771 \nL 119.809611 138.25954 \nL 122.09397 137.619981 \nL 124.051992 136.856558 \nL 125.846846 135.932618 \nL 127.478531 134.864093 \nL 129.110215 133.53546 \nL 130.7419 131.902404 \nL 132.373585 129.918522 \nL 133.842102 127.79423 \nL 135.473787 125.01546 \nL 137.105472 121.755388 \nL 138.737157 117.977866 \nL 140.368842 113.655911 \nL 142.163695 108.255858 \nL 144.121717 101.596938 \nL 146.242908 93.525729 \nL 148.690435 83.248545 \nL 151.790637 69.178196 \nL 157.827871 41.57206 \nL 159.949061 33.006718 \nL 161.743915 26.675681 \nL 163.212431 22.276554 \nL 164.517779 19.044317 \nL 165.659959 16.789011 \nL 166.63897 15.307609 \nL 167.454812 14.403942 \nL 168.270655 13.808322 \nL 168.923329 13.556687 \nL 169.576003 13.5063 \nL 170.228677 13.657402 \nL 170.881351 14.009268 \nL 171.697193 14.728769 \nL 172.513036 15.753897 \nL 173.492047 17.376612 \nL 174.634226 19.788832 \nL 175.776406 22.726997 \nL 177.081754 26.675681 \nL 178.713439 32.392617 \nL 180.671461 40.191426 \nL 183.118988 50.957567 \nL 192.256424 92.210802 \nL 194.540783 101.006788 \nL 196.498805 107.731288 \nL 198.456827 113.655911 \nL 200.25168 118.379758 \nL 201.883365 122.104146 \nL 203.51505 125.314336 \nL 205.146735 128.047227 \nL 206.77842 130.345625 \nL 208.410105 132.255577 \nL 210.04179 133.824084 \nL 211.673475 135.097239 \nL 213.468328 136.208702 \nL 215.42635 137.136646 \nL 217.547541 137.875773 \nL 219.8319 138.435791 \nL 222.605764 138.879679 \nL 226.032303 139.193999 \nL 230.927358 139.396705 \nL 239.412119 139.487295 \nL 277.104042 139.5 \nL 283.467614 139.5 \nL 283.467614 139.5 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_26\">\n <path d=\"M 55.194886 139.362188 \nL 65.63767 139.098708 \nL 72.980253 138.699787 \nL 78.69115 138.178279 \nL 83.586205 137.516853 \nL 87.991754 136.697191 \nL 91.907798 135.745999 \nL 95.497505 134.654637 \nL 98.924044 133.387507 \nL 102.187413 131.951607 \nL 105.450783 130.271147 \nL 108.714153 128.328848 \nL 111.977523 126.112322 \nL 115.240893 123.615644 \nL 118.504263 120.840886 \nL 121.930802 117.640793 \nL 125.683677 113.829699 \nL 130.089226 109.01843 \nL 136.126461 102.052696 \nL 144.448054 92.482389 \nL 148.364098 88.331596 \nL 151.627468 85.194678 \nL 154.401333 82.824913 \nL 157.012028 80.888277 \nL 159.296387 79.455574 \nL 161.580746 78.288522 \nL 163.701937 77.457339 \nL 165.659959 76.915213 \nL 167.617981 76.595215 \nL 169.576003 76.500787 \nL 171.534025 76.632947 \nL 173.492047 76.99027 \nL 175.450069 77.568916 \nL 177.571259 78.438306 \nL 179.69245 79.54932 \nL 181.976809 81.000265 \nL 184.424336 82.824913 \nL 187.035032 85.047175 \nL 189.972065 87.839952 \nL 193.398603 91.412502 \nL 197.804153 96.3499 \nL 212.978823 113.657453 \nL 216.894867 117.640793 \nL 220.484574 120.986092 \nL 223.911112 123.877929 \nL 227.174482 126.346542 \nL 230.437852 128.535259 \nL 233.701222 130.450724 \nL 236.964592 132.105883 \nL 240.227962 133.51842 \nL 243.6545 134.763387 \nL 247.244207 135.834289 \nL 251.160251 136.766392 \nL 255.402632 137.542786 \nL 260.134519 138.178279 \nL 265.682247 138.687887 \nL 272.372156 139.065638 \nL 281.020086 139.318239 \nL 283.467614 139.359757 \nL 283.467614 139.359757 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"line2d_27\">\n <path d=\"M 55.194886 139.5 \nL 157.012028 139.392742 \nL 162.396589 139.148719 \nL 165.986296 138.770771 \nL 168.76016 138.25954 \nL 171.044519 137.619981 \nL 173.002541 136.856558 \nL 174.797395 135.932618 \nL 176.42908 134.864093 \nL 178.060765 133.53546 \nL 179.69245 131.902404 \nL 181.324135 129.918522 \nL 182.792651 127.79423 \nL 184.424336 125.01546 \nL 186.056021 121.755388 \nL 187.687706 117.977866 \nL 189.319391 113.655911 \nL 191.114244 108.255858 \nL 193.072266 101.596938 \nL 195.193457 93.525729 \nL 197.640984 83.248545 \nL 200.741186 69.178196 \nL 206.77842 41.57206 \nL 208.899611 33.006718 \nL 210.694464 26.675681 \nL 212.16298 22.276554 \nL 213.468328 19.044317 \nL 214.610508 16.789011 \nL 215.589519 15.307609 \nL 216.405361 14.403942 \nL 217.221204 13.808322 \nL 217.873878 13.556687 \nL 218.526552 13.5063 \nL 219.179226 13.657402 \nL 219.8319 14.009268 \nL 220.647742 14.728769 \nL 221.463585 15.753897 \nL 222.442596 17.376612 \nL 223.584775 19.788832 \nL 224.726955 22.726997 \nL 226.032303 26.675681 \nL 227.663988 32.392617 \nL 229.62201 40.191426 \nL 232.069537 50.957567 \nL 241.206973 92.210802 \nL 243.491332 101.006788 \nL 245.449354 107.731288 \nL 247.407376 113.655911 \nL 249.202229 118.379758 \nL 250.833914 122.104146 \nL 252.465599 125.314336 \nL 254.097284 128.047227 \nL 255.728969 130.345625 \nL 257.360654 132.255577 \nL 258.992339 133.824084 \nL 260.624024 135.097239 \nL 262.418878 136.208702 \nL 264.376899 137.136646 \nL 266.49809 137.875773 \nL 268.782449 138.435791 \nL 271.556313 138.879679 \nL 274.982852 139.193999 \nL 279.877907 139.396705 \nL 283.467614 139.456009 \nL 283.467614 139.456009 \n\" clip-path=\"url(#p81920ab880)\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 43.78125 145.8 \nL 43.78125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 294.88125 145.8 \nL 294.88125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 43.78125 145.8 \nL 294.88125 145.8 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 43.78125 7.2 \nL 294.88125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"legend_1\">\n <g id=\"patch_7\">\n <path d=\"M 50.78125 59.234375 \nL 152.05625 59.234375 \nQ 154.05625 59.234375 154.05625 57.234375 \nL 154.05625 14.2 \nQ 154.05625 12.2 152.05625 12.2 \nL 50.78125 12.2 \nQ 48.78125 12.2 48.78125 14.2 \nL 48.78125 57.234375 \nQ 48.78125 59.234375 50.78125 59.234375 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"line2d_28\">\n <path d=\"M 52.78125 20.298438 \nL 62.78125 20.298438 \nL 72.78125 20.298438 \n\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"text_15\">\n <!-- mean 0, std 1 -->\n <g style=\"fill: #ffffff\" transform=\"translate(80.78125 23.798438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-6d\" d=\"M 3328 2828 \nQ 3544 3216 3844 3400 \nQ 4144 3584 4550 3584 \nQ 5097 3584 5394 3201 \nQ 5691 2819 5691 2113 \nL 5691 0 \nL 5113 0 \nL 5113 2094 \nQ 5113 2597 4934 2840 \nQ 4756 3084 4391 3084 \nQ 3944 3084 3684 2787 \nQ 3425 2491 3425 1978 \nL 3425 0 \nL 2847 0 \nL 2847 2094 \nQ 2847 2600 2669 2842 \nQ 2491 3084 2119 3084 \nQ 1678 3084 1418 2786 \nQ 1159 2488 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1356 3278 1631 3431 \nQ 1906 3584 2284 3584 \nQ 2666 3584 2933 3390 \nQ 3200 3197 3328 2828 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \nL 3513 0 \nL 2938 0 \nL 2938 2094 \nQ 2938 2591 2744 2837 \nQ 2550 3084 2163 3084 \nQ 1697 3084 1428 2787 \nQ 1159 2491 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1366 3272 1645 3428 \nQ 1925 3584 2291 3584 \nQ 2894 3584 3203 3211 \nQ 3513 2838 3513 2113 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-2c\" d=\"M 750 794 \nL 1409 794 \nL 1409 256 \nL 897 -744 \nL 494 -744 \nL 750 256 \nL 750 794 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \nL 2834 2853 \nQ 2591 2978 2328 3040 \nQ 2066 3103 1784 3103 \nQ 1356 3103 1142 2972 \nQ 928 2841 928 2578 \nQ 928 2378 1081 2264 \nQ 1234 2150 1697 2047 \nL 1894 2003 \nQ 2506 1872 2764 1633 \nQ 3022 1394 3022 966 \nQ 3022 478 2636 193 \nQ 2250 -91 1575 -91 \nQ 1294 -91 989 -36 \nQ 684 19 347 128 \nL 347 722 \nQ 666 556 975 473 \nQ 1284 391 1588 391 \nQ 1994 391 2212 530 \nQ 2431 669 2431 922 \nQ 2431 1156 2273 1281 \nQ 2116 1406 1581 1522 \nL 1381 1569 \nQ 847 1681 609 1914 \nQ 372 2147 372 2553 \nQ 372 3047 722 3315 \nQ 1072 3584 1716 3584 \nQ 2034 3584 2315 3537 \nQ 2597 3491 2834 3397 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-64\" d=\"M 2906 2969 \nL 2906 4863 \nL 3481 4863 \nL 3481 0 \nL 2906 0 \nL 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nz\nM 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-6d\"/>\n <use xlink:href=\"#DejaVuSans-65\" transform=\"translate(97.412109 0)\"/>\n <use xlink:href=\"#DejaVuSans-61\" transform=\"translate(158.935547 0)\"/>\n <use xlink:href=\"#DejaVuSans-6e\" transform=\"translate(220.214844 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(283.59375 0)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(315.380859 0)\"/>\n <use xlink:href=\"#DejaVuSans-2c\" transform=\"translate(379.003906 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(410.791016 0)\"/>\n <use xlink:href=\"#DejaVuSans-73\" transform=\"translate(442.578125 0)\"/>\n <use xlink:href=\"#DejaVuSans-74\" transform=\"translate(494.677734 0)\"/>\n <use xlink:href=\"#DejaVuSans-64\" transform=\"translate(533.886719 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(597.363281 0)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(629.150391 0)\"/>\n </g>\n </g>\n <g id=\"line2d_29\">\n <path d=\"M 52.78125 34.976563 \nL 62.78125 34.976563 \nL 72.78125 34.976563 \n\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_16\">\n <!-- mean 0, std 2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(80.78125 38.476563) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-6d\"/>\n <use xlink:href=\"#DejaVuSans-65\" transform=\"translate(97.412109 0)\"/>\n <use xlink:href=\"#DejaVuSans-61\" transform=\"translate(158.935547 0)\"/>\n <use xlink:href=\"#DejaVuSans-6e\" transform=\"translate(220.214844 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(283.59375 0)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(315.380859 0)\"/>\n <use xlink:href=\"#DejaVuSans-2c\" transform=\"translate(379.003906 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(410.791016 0)\"/>\n <use xlink:href=\"#DejaVuSans-73\" transform=\"translate(442.578125 0)\"/>\n <use xlink:href=\"#DejaVuSans-74\" transform=\"translate(494.677734 0)\"/>\n <use xlink:href=\"#DejaVuSans-64\" transform=\"translate(533.886719 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(597.363281 0)\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(629.150391 0)\"/>\n </g>\n </g>\n <g id=\"line2d_30\">\n <path d=\"M 52.78125 49.654688 \nL 62.78125 49.654688 \nL 72.78125 49.654688 \n\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_17\">\n <!-- mean 3, std 1 -->\n <g style=\"fill: #ffffff\" transform=\"translate(80.78125 53.154688) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-6d\"/>\n <use xlink:href=\"#DejaVuSans-65\" transform=\"translate(97.412109 0)\"/>\n <use xlink:href=\"#DejaVuSans-61\" transform=\"translate(158.935547 0)\"/>\n <use xlink:href=\"#DejaVuSans-6e\" transform=\"translate(220.214844 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(283.59375 0)\"/>\n <use xlink:href=\"#DejaVuSans-33\" transform=\"translate(315.380859 0)\"/>\n <use xlink:href=\"#DejaVuSans-2c\" transform=\"translate(379.003906 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(410.791016 0)\"/>\n <use xlink:href=\"#DejaVuSans-73\" transform=\"translate(442.578125 0)\"/>\n <use xlink:href=\"#DejaVuSans-74\" transform=\"translate(494.677734 0)\"/>\n <use xlink:href=\"#DejaVuSans-64\" transform=\"translate(533.886719 0)\"/>\n <use xlink:href=\"#DejaVuSans-20\" transform=\"translate(597.363281 0)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(629.150391 0)\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p81920ab880\">\n <rect x=\"43.78125\" y=\"7.2\" width=\"251.1\" height=\"138.6\"/>\n </clipPath>\n </defs>\n</svg>\n"
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data",
|
||
"jetTransient": {
|
||
"display_id": null
|
||
}
|
||
}
|
||
],
|
||
"execution_count": 38
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:48.849464685Z",
|
||
"start_time": "2026-03-14T11:37:48.839470354Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"#注意一下matmul做向量乘上矩阵的时候不用考虑转置的情况\n",
|
||
"def synthetic_data(w, b, num_examples): #@save\n",
|
||
" \"\"\"生成y=Xw+b+噪声\"\"\"\n",
|
||
" X = torch.normal(0, 1, (num_examples, len(w)))\n",
|
||
" y = torch.matmul(X, w) + b\n",
|
||
" y += torch.normal(0, 0.01, y.shape)\n",
|
||
" return X, y.reshape((-1, 1))\n"
|
||
],
|
||
"id": "7ed837bdd2b3a26d",
|
||
"outputs": [],
|
||
"execution_count": 39
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.046153840Z",
|
||
"start_time": "2026-03-14T11:37:48.850521592Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"true_w = torch.tensor([2, -3.4])\n",
|
||
"true_b = 4.2\n",
|
||
"features, labels = synthetic_data(true_w, true_b, 1000)"
|
||
],
|
||
"id": "5ec2e204a6fd5cb2",
|
||
"outputs": [],
|
||
"execution_count": 40
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.114421568Z",
|
||
"start_time": "2026-03-14T11:37:49.049220234Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"set_figsize()\n",
|
||
"plt.scatter(features[:, (1)].detach().numpy(), labels.detach().numpy(), 1)"
|
||
],
|
||
"id": "38213d46b3d9900d",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<matplotlib.collections.PathCollection at 0x7fd1dc5d8050>"
|
||
]
|
||
},
|
||
"execution_count": 41,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 350x250 with 1 Axes>"
|
||
],
|
||
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"231.442187pt\" height=\"169.678125pt\" viewBox=\"0 0 231.442187 169.678125\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-14T19:37:49.085396</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.10.8, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 169.678125 \nL 231.442187 169.678125 \nL 231.442187 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 28.942188 145.8 \nL 224.242188 145.8 \nL 224.242188 7.2 \nL 28.942188 7.2 \nz\n\"/>\n </g>\n <g id=\"PathCollection_1\">\n <defs>\n <path id=\"mec311cd7aa\" d=\"M 0 0.5 \nC 0.132602 0.5 0.25979 0.447317 0.353553 0.353553 \nC 0.447317 0.25979 0.5 0.132602 0.5 0 \nC 0.5 -0.132602 0.447317 -0.25979 0.353553 -0.353553 \nC 0.25979 -0.447317 0.132602 -0.5 0 -0.5 \nC -0.132602 -0.5 -0.25979 -0.447317 -0.353553 -0.353553 \nC -0.447317 -0.25979 -0.5 -0.132602 -0.5 0 \nC -0.5 0.132602 -0.447317 0.25979 -0.353553 0.353553 \nC -0.25979 0.447317 -0.132602 0.5 0 0.5 \nz\n\" style=\"stroke: #8dd3c7\"/>\n </defs>\n <g clip-path=\"url(#p1de2f470cd)\">\n <use xlink:href=\"#mec311cd7aa\" x=\"134.486182\" y=\"94.084937\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.877044\" y=\"104.463934\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.666573\" y=\"76.987414\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.296119\" y=\"56.031343\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.760197\" y=\"78.583035\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.557872\" y=\"63.64687\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.714432\" y=\"82.836413\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.272401\" y=\"82.090179\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"89.042918\" y=\"55.266539\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.665828\" y=\"100.420188\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.287651\" y=\"75.376865\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.513179\" y=\"66.434633\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.160009\" y=\"63.938541\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.307909\" y=\"72.202839\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.388936\" y=\"79.87903\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.666158\" y=\"77.090934\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.250946\" y=\"96.440363\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.189483\" y=\"73.420853\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.363667\" y=\"89.033501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.190873\" y=\"60.254906\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"164.292747\" y=\"113.054745\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.368881\" y=\"70.704503\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.893779\" y=\"91.117069\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.03537\" y=\"65.83542\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.000828\" y=\"80.690169\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.778645\" y=\"59.16982\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.858739\" y=\"46.54678\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.947025\" y=\"46.113625\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.639989\" y=\"58.233359\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.911666\" y=\"84.808361\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.842757\" y=\"93.841377\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.867182\" y=\"77.10774\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.251223\" y=\"69.874289\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"151.951752\" y=\"98.776648\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.093747\" y=\"108.903597\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.448246\" y=\"48.492243\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.677829\" y=\"84.874478\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.662461\" y=\"76.379855\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.448021\" y=\"62.301539\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.172528\" y=\"85.437286\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.746906\" y=\"68.720125\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"63.306568\" y=\"35.947374\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.241682\" y=\"94.236909\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.900655\" y=\"86.870001\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.323177\" y=\"85.48894\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.363226\" y=\"60.887399\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.211021\" y=\"85.269282\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.680607\" y=\"67.414326\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.671886\" y=\"81.17676\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.090892\" y=\"48.874717\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"168.523951\" y=\"131.288064\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.357411\" y=\"100.792491\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.21883\" y=\"71.418421\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"88.313156\" y=\"56.985008\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.56587\" y=\"79.356101\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"75.684849\" y=\"51.266239\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.3216\" y=\"81.679719\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"145.006569\" y=\"93.247983\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"69.630546\" y=\"50.619178\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.358709\" y=\"78.796968\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.846534\" y=\"45.60277\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.728712\" y=\"88.825089\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.302325\" y=\"104.556454\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.961677\" y=\"70.025017\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.70714\" y=\"67.46783\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.795937\" y=\"67.552037\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.090748\" y=\"74.454928\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"150.361826\" y=\"72.796757\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.451743\" y=\"67.350811\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.856601\" y=\"68.708746\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.711885\" y=\"58.594977\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.921952\" y=\"88.126304\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.258199\" y=\"69.41293\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"161.357237\" y=\"89.143934\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"159.925784\" y=\"109.847847\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.027087\" y=\"63.785289\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"145.117134\" y=\"96.741255\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.499691\" y=\"77.966083\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"81.192895\" y=\"48.564461\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"57.360152\" y=\"48.639501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"63.092725\" y=\"35.878288\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.587329\" y=\"78.161883\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"176.871653\" y=\"107.836791\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.224707\" y=\"52.543133\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.730488\" y=\"106.536443\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"174.656896\" y=\"114.137027\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"65.045468\" y=\"37.292129\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.214915\" y=\"80.186992\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.36177\" y=\"64.413807\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.813186\" y=\"85.186614\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.848874\" y=\"75.977884\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.970034\" y=\"107.885798\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.746884\" y=\"81.535454\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.613679\" y=\"76.461388\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.320364\" y=\"53.503938\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.356766\" y=\"77.784932\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.486248\" y=\"89.812576\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.055983\" y=\"70.80364\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"162.80673\" y=\"99.915552\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"86.126205\" y=\"44.47927\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.925742\" y=\"57.876665\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.706868\" y=\"100.479383\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.780125\" y=\"71.784502\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"161.763418\" y=\"108.551355\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.849998\" y=\"88.408113\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.722662\" y=\"88.934578\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.188638\" y=\"68.965294\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.158839\" y=\"39.134244\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.280642\" y=\"89.951621\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.126105\" y=\"49.972944\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.33396\" y=\"101.570552\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.274787\" y=\"60.368236\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"77.678696\" y=\"45.092969\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.051649\" y=\"62.533201\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.747747\" y=\"86.686437\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.553451\" y=\"77.403381\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.895762\" y=\"93.903468\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.094059\" y=\"74.20695\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.018658\" y=\"71.954893\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"161.982658\" y=\"102.180413\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.255125\" y=\"67.583038\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.142654\" y=\"84.535643\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"79.369449\" y=\"46.637518\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"58.811174\" y=\"25.549341\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.825581\" y=\"91.180169\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.466753\" y=\"62.002519\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.990772\" y=\"84.065046\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"185.537231\" y=\"115.65051\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.937041\" y=\"84.623878\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.492266\" y=\"114.1257\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.336328\" y=\"59.485807\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.225029\" y=\"87.713718\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.965418\" y=\"104.980294\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.973369\" y=\"96.628245\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.095183\" y=\"79.133846\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.676438\" y=\"87.481191\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.793202\" y=\"94.130418\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.018089\" y=\"85.578163\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.176171\" y=\"97.567096\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.959712\" y=\"94.891393\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.774732\" y=\"84.214464\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.048589\" y=\"44.01043\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"168.386337\" y=\"101.861281\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.08005\" y=\"62.316354\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.95915\" y=\"88.066806\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.437146\" y=\"86.095294\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.140374\" y=\"58.544361\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.616219\" y=\"74.294634\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.571123\" y=\"74.002153\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.863199\" y=\"66.102253\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.943547\" y=\"64.915784\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.172659\" y=\"80.189521\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"151.407656\" y=\"99.600916\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.905931\" y=\"73.756316\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.260439\" y=\"61.250501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.388473\" y=\"57.115904\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.822156\" y=\"64.989266\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.155258\" y=\"66.024957\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"44.45553\" y=\"64.83819\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"77.733392\" y=\"56.024961\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.444009\" y=\"89.008475\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.985967\" y=\"95.512855\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.257559\" y=\"90.651367\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.997601\" y=\"69.545411\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.045909\" y=\"79.918521\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"150.436249\" y=\"90.858041\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.101104\" y=\"63.489931\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"84.772971\" y=\"59.940609\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.567076\" y=\"73.215914\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.880065\" y=\"84.751895\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.094749\" y=\"87.172437\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.87697\" y=\"78.948878\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"177.508245\" y=\"117.397767\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.941011\" y=\"74.364587\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.474009\" y=\"91.798267\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.936171\" y=\"49.975387\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.355266\" y=\"71.886737\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.801207\" y=\"100.745464\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.005473\" y=\"75.299767\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.3346\" y=\"104.918706\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.564881\" y=\"82.303083\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"83.653889\" y=\"47.056991\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"52.916066\" y=\"47.312652\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"187.027818\" y=\"119.364194\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.812974\" y=\"63.342512\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.482444\" y=\"70.811376\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.673711\" y=\"71.790747\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.54091\" y=\"76.053569\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.283502\" y=\"69.897932\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.856618\" y=\"78.05113\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.356577\" y=\"82.517276\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.118224\" y=\"72.109394\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.668317\" y=\"105.248696\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"190.418832\" y=\"120.338722\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"182.486942\" y=\"92.665147\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.148287\" y=\"52.210581\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.393627\" y=\"56.26124\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"162.607618\" y=\"96.080551\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.049584\" y=\"68.074745\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.141534\" y=\"65.703771\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.699261\" y=\"35.928377\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.472713\" y=\"99.157166\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.250265\" y=\"72.658004\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.032686\" y=\"80.431634\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.513244\" y=\"50.661587\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.208511\" y=\"95.293238\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.367067\" y=\"101.043698\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.821094\" y=\"49.255974\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"72.451203\" y=\"37.048713\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.838475\" y=\"63.482369\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.568649\" y=\"71.126901\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.8412\" y=\"72.925318\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.680071\" y=\"83.320837\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.87119\" y=\"65.789762\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.400165\" y=\"84.129502\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.604623\" y=\"76.333373\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.803176\" y=\"73.246331\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.103836\" y=\"63.126753\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.803017\" y=\"96.832278\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.079163\" y=\"81.252837\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.437582\" y=\"82.064096\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.392647\" y=\"64.362116\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.297339\" y=\"69.024932\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.872024\" y=\"83.800851\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.639683\" y=\"88.473552\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"74.369639\" y=\"55.983557\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.158001\" y=\"102.399078\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"183.455716\" y=\"112.780141\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.568975\" y=\"68.701294\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.355461\" y=\"70.723329\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.726033\" y=\"85.012236\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"39.550259\" y=\"41.838109\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.912829\" y=\"90.131588\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.139047\" y=\"58.821688\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.91038\" y=\"86.181114\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.108357\" y=\"76.318795\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.873264\" y=\"60.240706\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"150.829292\" y=\"83.726678\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.748048\" y=\"71.890645\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.448838\" y=\"45.875148\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.154737\" y=\"84.876176\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.487372\" y=\"90.404609\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.153724\" y=\"73.557396\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"81.308897\" y=\"57.754409\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.333231\" y=\"84.393744\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.977912\" y=\"69.571742\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"183.258015\" y=\"118.851442\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.483802\" y=\"70.955734\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.934375\" y=\"76.855811\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.227801\" y=\"65.134617\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"164.52684\" y=\"103.647476\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.424658\" y=\"64.355102\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.221235\" y=\"77.560808\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.774276\" y=\"66.794709\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"193.085248\" y=\"117.886025\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"176.489382\" y=\"119.042501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.244572\" y=\"71.097026\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.695043\" y=\"58.261121\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.3834\" y=\"93.990672\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.823236\" y=\"68.569022\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.577396\" y=\"64.117781\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.183519\" y=\"60.745085\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"204.132099\" y=\"117.345864\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"156.751612\" y=\"85.736475\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.051324\" y=\"90.797984\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.943777\" y=\"100.085049\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.149675\" y=\"63.744904\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"59.843559\" y=\"43.864086\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.561993\" y=\"97.105916\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.54113\" y=\"77.693206\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"64.641959\" y=\"37.735167\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"75.002409\" y=\"65.87351\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.616984\" y=\"101.991956\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.601933\" y=\"83.451813\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.951135\" y=\"79.55655\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.839797\" y=\"69.410227\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.890167\" y=\"94.752488\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"88.24391\" y=\"59.229069\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.460932\" y=\"69.775464\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.567119\" y=\"54.881199\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.244054\" y=\"110.856169\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.688519\" y=\"92.599708\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.672894\" y=\"75.392246\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"54.328502\" y=\"20.875375\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.675069\" y=\"62.88337\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.30904\" y=\"49.25381\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.348377\" y=\"78.486072\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.45884\" y=\"88.224345\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.352916\" y=\"100.523833\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"84.087684\" y=\"38.20723\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.448035\" y=\"50.312966\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.761417\" y=\"105.656711\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"69.02701\" y=\"48.403559\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.880426\" y=\"66.55605\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"154.316656\" y=\"88.98539\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.141799\" y=\"86.445704\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.445001\" y=\"72.924561\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.237073\" y=\"81.154801\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"69.485267\" y=\"30.337804\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.116437\" y=\"77.312319\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"206.771533\" y=\"139.5\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.834561\" y=\"78.236588\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.903926\" y=\"49.206972\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.851025\" y=\"94.951548\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"84.065055\" y=\"43.953309\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"44.298539\" y=\"39.181323\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.321729\" y=\"96.874711\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.749738\" y=\"59.337444\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.316544\" y=\"84.755935\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"175.397614\" y=\"106.163453\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.679851\" y=\"84.791291\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.166492\" y=\"79.007476\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.840622\" y=\"87.41648\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.870248\" y=\"78.729174\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.507508\" y=\"102.280245\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.898927\" y=\"93.79432\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.520431\" y=\"91.566533\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.89608\" y=\"69.611191\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.347238\" y=\"80.655884\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.576043\" y=\"48.097707\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.025414\" y=\"100.686236\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.531915\" y=\"61.425817\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"171.531064\" y=\"108.432925\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.578766\" y=\"57.31676\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.142973\" y=\"103.652823\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.937009\" y=\"71.304764\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.472801\" y=\"55.558212\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.554572\" y=\"80.690924\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"89.746649\" y=\"51.138983\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"70.968092\" y=\"47.170083\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.510733\" y=\"48.94063\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.54662\" y=\"64.949661\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.984906\" y=\"99.519856\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"162.468652\" y=\"105.837088\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"62.341529\" y=\"62.268061\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.952877\" y=\"87.210286\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.545425\" y=\"90.25467\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.428812\" y=\"104.477483\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"88.25644\" y=\"62.277759\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.674433\" y=\"78.785743\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.810804\" y=\"79.486168\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.359988\" y=\"47.407511\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.490606\" y=\"95.074606\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.761557\" y=\"81.545063\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.349732\" y=\"65.791378\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.043262\" y=\"66.500646\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"68.272823\" y=\"35.417633\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.686556\" y=\"47.149672\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.741945\" y=\"86.058392\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"73.500931\" y=\"42.232525\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.346483\" y=\"99.315804\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.83833\" y=\"78.512788\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"142.084736\" y=\"82.118654\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.288178\" y=\"87.622019\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.057437\" y=\"86.235629\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.04344\" y=\"84.787494\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.840994\" y=\"67.573417\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.999394\" y=\"64.509095\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.729514\" y=\"78.786607\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.928217\" y=\"89.336522\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.773574\" y=\"99.382354\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.215119\" y=\"54.740477\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"159.535629\" y=\"108.688175\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.83454\" y=\"73.189554\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.850738\" y=\"78.520334\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"83.373756\" y=\"59.45964\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.955751\" y=\"101.812664\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.879076\" y=\"68.443543\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.470004\" y=\"77.358928\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.663362\" y=\"90.627496\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"142.126919\" y=\"81.56781\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"215.364915\" y=\"134.318054\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.672736\" y=\"94.242575\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.70198\" y=\"66.473723\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.663264\" y=\"67.755223\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.044856\" y=\"109.840784\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.747914\" y=\"89.057806\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.431764\" y=\"63.738135\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.300199\" y=\"87.899381\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.618547\" y=\"42.537597\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"62.918289\" y=\"53.337938\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"84.767882\" y=\"49.12491\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.114401\" y=\"83.215687\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.448669\" y=\"71.436064\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.71273\" y=\"99.896412\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"76.667183\" y=\"52.108237\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.915347\" y=\"85.220919\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"176.824327\" y=\"123.919458\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.972341\" y=\"60.400067\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.98895\" y=\"76.627806\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.157325\" y=\"61.144546\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.994406\" y=\"88.470053\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"59.816549\" y=\"56.565754\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.361224\" y=\"83.362904\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"173.225502\" y=\"100.891752\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"164.399914\" y=\"111.585859\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.187365\" y=\"63.631461\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.118736\" y=\"92.174723\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"154.621734\" y=\"95.979254\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.915967\" y=\"91.696435\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.504341\" y=\"116.675791\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.26214\" y=\"88.632794\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"169.328513\" y=\"103.520104\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.322211\" y=\"70.243754\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.500507\" y=\"74.124058\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.722917\" y=\"56.775582\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.482111\" y=\"83.607011\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"78.283986\" y=\"48.070309\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.880906\" y=\"80.556113\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.746025\" y=\"72.190039\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.500378\" y=\"69.220817\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.312562\" y=\"66.95212\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.553769\" y=\"45.844662\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.496324\" y=\"71.308642\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"185.073343\" y=\"117.493752\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.955469\" y=\"103.717138\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.771927\" y=\"73.463296\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.041406\" y=\"72.890549\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.280999\" y=\"80.925307\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"189.177981\" y=\"109.774506\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.213026\" y=\"52.234195\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.315066\" y=\"75.725883\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.257585\" y=\"58.558823\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"178.257513\" y=\"124.205283\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.27909\" y=\"65.097501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.878559\" y=\"69.76656\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.136014\" y=\"67.332369\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"174.761664\" y=\"114.410991\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"182.120947\" y=\"131.286955\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.342299\" y=\"90.271158\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"63.223074\" y=\"45.147271\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.221036\" y=\"59.502287\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.725607\" y=\"95.920172\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.027719\" y=\"77.463026\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.075962\" y=\"83.938133\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.64412\" y=\"103.298884\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.057176\" y=\"63.304357\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.498861\" y=\"64.082418\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.343406\" y=\"117.315943\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"168.915073\" y=\"107.247499\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.04375\" y=\"92.871638\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.068842\" y=\"63.416379\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.651098\" y=\"48.544954\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.452282\" y=\"85.046143\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.032922\" y=\"75.147735\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.181939\" y=\"58.791906\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.637231\" y=\"87.445103\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.221696\" y=\"66.831383\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.983141\" y=\"81.959921\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.856247\" y=\"79.442782\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.858194\" y=\"79.140226\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.566752\" y=\"79.283415\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.365253\" y=\"74.136387\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.329928\" y=\"103.04673\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.010223\" y=\"70.698541\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.319697\" y=\"84.292905\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.545943\" y=\"73.512517\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.964974\" y=\"74.872438\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.513909\" y=\"73.524716\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.526121\" y=\"74.369379\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.997617\" y=\"93.426932\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.972711\" y=\"105.562084\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.44084\" y=\"91.236299\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.040883\" y=\"106.842253\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.532766\" y=\"61.187061\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"171.461542\" y=\"115.544476\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.875215\" y=\"86.141824\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.051477\" y=\"76.684463\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"76.606349\" y=\"51.820229\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.331431\" y=\"100.565868\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.348824\" y=\"69.718348\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.097684\" y=\"72.932249\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.474166\" y=\"91.94661\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.967325\" y=\"94.251737\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.172939\" y=\"102.030167\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.042851\" y=\"88.427896\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"76.034556\" y=\"52.38429\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.544749\" y=\"86.967531\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.399679\" y=\"57.698606\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.441659\" y=\"71.640712\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.746371\" y=\"84.368223\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.898949\" y=\"77.697792\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.397772\" y=\"77.614983\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.955422\" y=\"60.354217\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.954069\" y=\"87.04703\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.930208\" y=\"58.806793\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.804441\" y=\"76.042957\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.817596\" y=\"56.055452\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.143401\" y=\"73.406894\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.199943\" y=\"73.526474\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.471719\" y=\"68.554926\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"69.54462\" y=\"48.812383\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.61208\" y=\"67.799459\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"176.615085\" y=\"96.473303\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"185.225331\" y=\"121.478049\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.969605\" y=\"52.503418\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.862222\" y=\"57.209013\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.509124\" y=\"74.090234\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.967418\" y=\"76.480431\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.920002\" y=\"59.045734\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.933296\" y=\"75.506066\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.824604\" y=\"116.116707\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.145886\" y=\"82.88431\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.245257\" y=\"58.732234\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"168.992625\" y=\"107.755485\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"88.445101\" y=\"41.645869\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"151.184438\" y=\"102.749348\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.519997\" y=\"78.76388\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"45.661212\" y=\"41.068448\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.429899\" y=\"99.427193\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.853853\" y=\"51.27743\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"60.304981\" y=\"50.424529\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"51.106893\" y=\"31.852267\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"74.264025\" y=\"55.492584\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.391433\" y=\"63.439142\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.668769\" y=\"55.642064\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"75.778771\" y=\"65.968158\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.836255\" y=\"39.887524\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"203.823763\" y=\"123.26766\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.033754\" y=\"93.568333\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.982663\" y=\"65.804138\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.544641\" y=\"85.210877\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.615194\" y=\"82.01895\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.56392\" y=\"70.701552\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"76.322968\" y=\"66.334689\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"77.607697\" y=\"48.576176\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.474695\" y=\"88.512235\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.436481\" y=\"102.99379\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.373954\" y=\"74.446098\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"81.162004\" y=\"52.469685\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.069093\" y=\"77.719858\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.444795\" y=\"73.371701\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.014892\" y=\"84.407046\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.069138\" y=\"108.515773\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.549018\" y=\"66.511046\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.261843\" y=\"85.74844\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.83377\" y=\"81.569387\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"69.653479\" y=\"43.648035\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.084899\" y=\"91.922726\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.456101\" y=\"60.312837\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"163.434061\" y=\"114.608517\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.53538\" y=\"62.558354\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.166572\" y=\"65.182097\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.532563\" y=\"65.591934\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.688283\" y=\"52.201174\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.920414\" y=\"66.850354\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.900615\" y=\"77.858636\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.577586\" y=\"84.562399\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"91.870984\" y=\"56.202075\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.821695\" y=\"90.476938\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"151.232476\" y=\"88.286501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"172.238575\" y=\"123.345182\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.411189\" y=\"108.566091\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"88.02086\" y=\"53.637402\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.794092\" y=\"71.613726\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.835199\" y=\"58.673906\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.973601\" y=\"69.957424\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"58.443418\" y=\"51.644245\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.603373\" y=\"55.567639\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.910788\" y=\"74.421039\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.845387\" y=\"98.568874\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"142.223862\" y=\"107.014976\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.287118\" y=\"81.297865\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.966404\" y=\"74.736369\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.353417\" y=\"97.063544\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.83517\" y=\"68.439203\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.301852\" y=\"102.148383\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.988317\" y=\"75.214658\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.962999\" y=\"103.722687\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"91.002057\" y=\"47.786556\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.190931\" y=\"65.634059\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.879814\" y=\"80.384854\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.411566\" y=\"78.824218\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.575171\" y=\"108.039074\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.104885\" y=\"93.034278\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.213835\" y=\"65.295716\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.741475\" y=\"93.586601\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.814745\" y=\"92.287353\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"59.480986\" y=\"45.577406\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.96233\" y=\"75.41748\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"164.151273\" y=\"108.725326\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.47748\" y=\"98.911992\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.273118\" y=\"64.239352\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.390712\" y=\"97.703801\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.149899\" y=\"58.295125\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.492459\" y=\"71.523513\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.730801\" y=\"58.608179\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.081579\" y=\"80.321289\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.089102\" y=\"56.395734\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.00241\" y=\"55.747822\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.012653\" y=\"79.170413\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.777607\" y=\"83.210494\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.12672\" y=\"56.141198\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.424436\" y=\"78.030538\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.029456\" y=\"74.60183\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"81.188154\" y=\"56.263712\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.472458\" y=\"94.518008\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"72.425175\" y=\"49.481298\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"98.300048\" y=\"41.823445\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.372653\" y=\"67.796025\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.305088\" y=\"88.292237\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.008098\" y=\"57.848511\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.026504\" y=\"82.215929\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.098486\" y=\"54.897762\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.177316\" y=\"96.850887\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.288419\" y=\"88.35859\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.53636\" y=\"97.952429\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"89.829019\" y=\"51.661876\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.287378\" y=\"80.938202\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.042554\" y=\"80.840873\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.946068\" y=\"71.885258\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.957207\" y=\"102.678099\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.838244\" y=\"94.412196\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.091595\" y=\"67.046501\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.583041\" y=\"76.552347\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"37.81946\" y=\"55.95624\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.545699\" y=\"66.304585\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"71.022439\" y=\"59.585623\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.339668\" y=\"62.401119\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.867514\" y=\"93.228802\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.835559\" y=\"83.473627\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.966132\" y=\"106.612832\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.446354\" y=\"60.820193\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.07271\" y=\"64.842054\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.228297\" y=\"51.133313\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.264767\" y=\"53.964367\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.872437\" y=\"81.919451\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.108035\" y=\"66.932065\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.185473\" y=\"70.657681\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.961813\" y=\"66.827485\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.715015\" y=\"107.314884\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.480213\" y=\"83.100804\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.822981\" y=\"53.721706\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.230814\" y=\"90.219835\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"198.533801\" y=\"118.600222\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.585712\" y=\"54.849818\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.427429\" y=\"86.602859\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.478237\" y=\"56.335843\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.65756\" y=\"77.347142\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.185967\" y=\"72.862645\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.973327\" y=\"61.782868\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.089781\" y=\"56.194568\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.331033\" y=\"63.332466\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"77.581149\" y=\"54.368978\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.34537\" y=\"83.580919\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"142.17665\" y=\"95.112253\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.465249\" y=\"62.788619\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.517552\" y=\"72.342965\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.788008\" y=\"74.787449\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.102799\" y=\"74.098624\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.876297\" y=\"91.134337\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.875039\" y=\"64.986912\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"171.099498\" y=\"113.80116\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.957794\" y=\"57.495031\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.885134\" y=\"67.764358\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.804603\" y=\"94.466855\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.363599\" y=\"76.349542\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"69.850107\" y=\"50.18079\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.19362\" y=\"71.397962\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"66.982627\" y=\"13.5\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.138665\" y=\"63.476578\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.908423\" y=\"81.728724\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.073652\" y=\"81.588555\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.126341\" y=\"85.265993\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.757553\" y=\"62.153632\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.947697\" y=\"68.684254\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.44047\" y=\"77.835388\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.104792\" y=\"75.674748\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.003327\" y=\"74.121743\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"91.118247\" y=\"58.968313\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.738279\" y=\"86.723278\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.563742\" y=\"67.371311\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.013915\" y=\"77.395913\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"150.367426\" y=\"94.716578\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"162.427495\" y=\"117.304236\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.314723\" y=\"52.086326\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.191445\" y=\"65.480393\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.981296\" y=\"62.995851\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.857845\" y=\"62.190517\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.40117\" y=\"59.005312\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.945343\" y=\"93.647591\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"149.658119\" y=\"85.168852\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.902684\" y=\"71.67016\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.600545\" y=\"73.592538\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.908371\" y=\"84.740331\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"77.346214\" y=\"50.269076\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.014297\" y=\"58.47531\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"174.559559\" y=\"115.120649\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.771885\" y=\"75.296239\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"145.04934\" y=\"108.194747\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.139653\" y=\"75.603199\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"154.096435\" y=\"98.529041\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.964117\" y=\"100.390356\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"187.348164\" y=\"120.970443\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.211165\" y=\"85.669643\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.126517\" y=\"84.115948\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"133.904549\" y=\"100.288822\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.412351\" y=\"61.087882\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.314441\" y=\"82.274477\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.851575\" y=\"60.500989\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.177765\" y=\"78.480931\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.892985\" y=\"103.79023\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.182968\" y=\"108.475156\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.889458\" y=\"72.348342\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.250627\" y=\"75.94173\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.379233\" y=\"74.916499\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.429121\" y=\"50.131374\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.960567\" y=\"82.936678\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.252988\" y=\"59.964146\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.574985\" y=\"79.640382\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"165.913144\" y=\"112.631773\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.413036\" y=\"101.234202\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.602173\" y=\"65.448901\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.580745\" y=\"86.389713\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.734949\" y=\"79.325504\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"88.246254\" y=\"40.226969\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.275702\" y=\"60.244277\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.344884\" y=\"95.947576\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.693757\" y=\"74.216915\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.608464\" y=\"103.907726\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.752733\" y=\"100.645169\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.095956\" y=\"67.626738\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.956597\" y=\"75.967989\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.857471\" y=\"98.245591\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.164465\" y=\"105.997813\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.865328\" y=\"84.099443\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"117.499462\" y=\"65.005055\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.884827\" y=\"74.334764\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.241845\" y=\"71.355341\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.455631\" y=\"72.375892\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.679983\" y=\"103.650667\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.430001\" y=\"49.577687\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.090194\" y=\"94.082391\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.712387\" y=\"61.459242\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.051278\" y=\"86.124349\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"145.409469\" y=\"80.963849\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.684939\" y=\"64.840443\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.263079\" y=\"88.261993\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.156714\" y=\"74.594902\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.828741\" y=\"55.454931\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.468324\" y=\"66.998896\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.145815\" y=\"67.096377\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"145.794256\" y=\"87.515157\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.692767\" y=\"80.588965\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"167.822015\" y=\"101.059524\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.490686\" y=\"70.762905\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"82.182648\" y=\"55.426705\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.488981\" y=\"63.502484\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.257925\" y=\"82.601048\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.197942\" y=\"46.100727\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.587906\" y=\"115.520293\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.246514\" y=\"75.933664\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.18199\" y=\"62.617725\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.897619\" y=\"61.611383\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.379465\" y=\"81.331817\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.132495\" y=\"78.71294\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.181184\" y=\"80.841378\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"41.333219\" y=\"29.14088\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.008312\" y=\"79.288503\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"72.645176\" y=\"48.395984\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.947887\" y=\"61.801596\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"164.275676\" y=\"94.641726\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.511067\" y=\"72.508301\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"133.14963\" y=\"83.240457\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"57.583024\" y=\"27.327049\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.651891\" y=\"103.720387\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"153.431572\" y=\"72.745506\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.53933\" y=\"71.872828\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"154.862006\" y=\"96.141319\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.929398\" y=\"84.579841\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.499799\" y=\"78.197158\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"176.483601\" y=\"112.94237\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.370743\" y=\"116.419674\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.455624\" y=\"82.378551\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.376\" y=\"70.704818\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.201662\" y=\"111.638477\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"78.315012\" y=\"50.34213\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.406008\" y=\"93.98271\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"115.695328\" y=\"78.185381\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.242992\" y=\"50.975489\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.933401\" y=\"73.189561\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.213012\" y=\"91.910841\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.532412\" y=\"78.682934\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"133.607219\" y=\"89.258648\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.728854\" y=\"60.51578\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"169.574437\" y=\"97.206269\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.778285\" y=\"84.822009\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.280419\" y=\"75.407099\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.448391\" y=\"81.836941\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.553905\" y=\"53.101394\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"79.815177\" y=\"41.121625\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.76087\" y=\"89.9466\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"63.820766\" y=\"55.836689\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.210789\" y=\"80.722618\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"133.309079\" y=\"81.651668\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.072708\" y=\"77.729348\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"103.053625\" y=\"57.30962\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.341655\" y=\"67.962345\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"143.442024\" y=\"108.276725\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.960558\" y=\"60.664788\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.947359\" y=\"79.314169\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.961342\" y=\"56.505762\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.399653\" y=\"66.110552\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.047329\" y=\"73.412555\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"180.300415\" y=\"110.03998\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"201.79468\" y=\"123.197977\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.471873\" y=\"83.419251\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.647551\" y=\"65.397492\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.600754\" y=\"71.292834\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"156.36413\" y=\"109.097308\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"144.567411\" y=\"86.902145\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.066794\" y=\"90.368555\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.209412\" y=\"65.192796\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"84.487944\" y=\"64.374457\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.299899\" y=\"87.31519\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.672755\" y=\"87.011342\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"158.597872\" y=\"88.440019\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"142.653525\" y=\"82.205308\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.553207\" y=\"89.745847\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"54.853291\" y=\"26.560831\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.304003\" y=\"79.303173\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.374474\" y=\"74.710197\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.855807\" y=\"76.409139\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"89.792955\" y=\"57.422162\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.598877\" y=\"68.803437\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.393039\" y=\"70.117131\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.627816\" y=\"78.165247\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"72.077669\" y=\"65.557793\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.865499\" y=\"43.660953\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"93.949188\" y=\"54.541163\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"166.710007\" y=\"100.723761\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.759488\" y=\"90.433157\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"172.094596\" y=\"117.216268\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.362014\" y=\"72.004362\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"165.191209\" y=\"87.933241\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"178.254858\" y=\"95.35977\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.192207\" y=\"108.178671\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.54504\" y=\"90.780903\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.437094\" y=\"62.096686\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"59.247718\" y=\"66.079202\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"160.184615\" y=\"107.2102\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.09687\" y=\"40.683343\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.875403\" y=\"97.164754\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"106.47872\" y=\"53.838313\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"123.129794\" y=\"85.379486\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.77682\" y=\"68.887459\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.850183\" y=\"78.39915\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.395558\" y=\"63.906126\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"111.926658\" y=\"73.376689\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.568254\" y=\"80.404369\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"156.146791\" y=\"93.276697\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.817428\" y=\"86.483078\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"155.447478\" y=\"107.468515\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"114.285794\" y=\"57.688449\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.194778\" y=\"56.374183\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"89.663047\" y=\"55.681395\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.917692\" y=\"76.21896\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.385472\" y=\"61.608164\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.56279\" y=\"73.300602\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"112.383755\" y=\"58.934325\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.733436\" y=\"64.714308\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.646673\" y=\"56.868239\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.691035\" y=\"79.246922\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"105.612338\" y=\"56.929234\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.992666\" y=\"96.810588\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.450464\" y=\"66.426207\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"137.178373\" y=\"91.902883\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"159.354326\" y=\"102.141261\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"76.239547\" y=\"25.057825\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"151.053279\" y=\"90.039664\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"156.616412\" y=\"88.798994\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.66352\" y=\"55.642506\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.576246\" y=\"88.146114\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"140.633774\" y=\"78.28065\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"48.889318\" y=\"30.106787\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"81.560874\" y=\"61.878375\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.809227\" y=\"75.463708\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"191.36256\" y=\"111.499418\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.272221\" y=\"70.482303\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.432988\" y=\"112.725059\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"159.33877\" y=\"114.404645\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.650099\" y=\"81.099036\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"173.095873\" y=\"91.570849\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.602082\" y=\"82.30855\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.075749\" y=\"108.06513\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"133.829284\" y=\"75.380254\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.041333\" y=\"71.093839\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.279065\" y=\"77.008518\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.382908\" y=\"75.065195\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.587166\" y=\"74.319198\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"100.565013\" y=\"80.654329\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.065505\" y=\"69.76225\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.679034\" y=\"89.205792\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"131.227547\" y=\"77.277426\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"161.225478\" y=\"97.75391\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"172.191396\" y=\"127.722166\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.336441\" y=\"70.341353\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"62.152065\" y=\"35.811476\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.445655\" y=\"97.51412\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.201237\" y=\"68.897708\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"110.282131\" y=\"54.530616\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.256434\" y=\"75.993865\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"156.387821\" y=\"82.882684\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"175.691335\" y=\"104.742713\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.615404\" y=\"75.683467\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"104.664583\" y=\"49.55063\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.190293\" y=\"83.221441\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.030629\" y=\"85.422202\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"85.649137\" y=\"48.633249\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.486471\" y=\"77.549692\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"154.962229\" y=\"99.706918\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"87.388204\" y=\"64.579141\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"70.963212\" y=\"37.060352\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.416231\" y=\"102.766769\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"118.658827\" y=\"72.265484\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.48625\" y=\"69.82412\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.862714\" y=\"66.270456\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"135.612716\" y=\"94.795686\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"129.917618\" y=\"75.964877\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"113.217342\" y=\"66.380085\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.061996\" y=\"101.432673\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"170.584067\" y=\"115.410247\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.10845\" y=\"69.135788\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.53796\" y=\"69.692813\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.862117\" y=\"70.081229\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"161.03119\" y=\"79.652315\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.661965\" y=\"77.604287\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.700647\" y=\"70.288779\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.214306\" y=\"57.470323\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"165.276538\" y=\"107.183254\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.914943\" y=\"63.380006\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"147.784777\" y=\"83.700498\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"77.857212\" y=\"54.833009\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"138.75193\" y=\"98.84428\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"164.840374\" y=\"119.629788\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.694441\" y=\"100.520821\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"108.105603\" y=\"84.163032\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"122.978249\" y=\"76.347959\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"71.84199\" y=\"51.648217\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"99.050237\" y=\"66.341086\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"71.921314\" y=\"56.622601\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"146.262122\" y=\"88.070295\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"67.81933\" y=\"48.831116\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"79.388676\" y=\"54.933847\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"126.312985\" y=\"85.270943\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.795152\" y=\"60.011913\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"80.187016\" y=\"66.051986\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"125.775694\" y=\"84.855017\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"154.021177\" y=\"87.722903\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"192.753981\" y=\"118.977101\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.510978\" y=\"65.310938\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.032595\" y=\"85.881417\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.064506\" y=\"69.918694\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.00498\" y=\"82.836538\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"177.493231\" y=\"102.358703\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"132.933572\" y=\"83.296708\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.464206\" y=\"84.377026\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.919775\" y=\"87.251704\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"152.113528\" y=\"114.300664\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"134.342339\" y=\"85.622958\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.788074\" y=\"92.036932\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"130.305074\" y=\"92.210212\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"101.618381\" y=\"67.204428\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"119.955369\" y=\"69.899632\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.512054\" y=\"78.961472\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.514911\" y=\"57.818246\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.426427\" y=\"64.468367\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"124.496841\" y=\"78.664776\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"95.880846\" y=\"59.115032\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"107.439262\" y=\"67.766308\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"139.819447\" y=\"96.37153\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"148.878694\" y=\"77.847569\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"127.511818\" y=\"80.203807\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"120.092441\" y=\"72.894894\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"90.605276\" y=\"51.200269\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"91.362278\" y=\"46.224409\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"157.349252\" y=\"87.434429\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"178.205975\" y=\"120.406142\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"97.527634\" y=\"66.321827\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"91.801924\" y=\"62.839824\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"121.762819\" y=\"79.156095\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.802629\" y=\"80.685319\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"109.624565\" y=\"62.571601\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.475188\" y=\"85.009644\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"94.120393\" y=\"54.784689\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.729207\" y=\"79.702102\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"54.326399\" y=\"52.009631\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"141.104836\" y=\"81.900733\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"102.205232\" y=\"48.345409\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"116.921523\" y=\"85.170621\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"186.274323\" y=\"122.3065\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"151.079687\" y=\"93.884511\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"96.882391\" y=\"45.703877\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.695585\" y=\"59.508849\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"92.059045\" y=\"52.474441\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"128.057412\" y=\"96.861517\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"133.763167\" y=\"74.442279\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"76.703558\" y=\"59.777053\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"65.867653\" y=\"64.797272\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n <use xlink:href=\"#mec311cd7aa\" x=\"136.042372\" y=\"85.651175\" style=\"fill: #8dd3c7; stroke: #8dd3c7\"/>\n </g>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <defs>\n <path id=\"md85c1990c5\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#md85c1990c5\" x=\"62.042159\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- −2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(54.671065 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \nL 4684 2272 \nL 4684 1741 \nL 678 1741 \nL 678 2272 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(83.789062 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_2\">\n <g>\n <use xlink:href=\"#md85c1990c5\" x=\"120.648171\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(117.466921 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_3\">\n <g>\n <use xlink:href=\"#md85c1990c5\" x=\"179.254183\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(176.072933 160.398438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-32\"/>\n </g>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_4\">\n <defs>\n <path id=\"mb73fb19b2f\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mb73fb19b2f\" x=\"28.942188\" y=\"122.384532\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- −5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(7.2 126.183751) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-35\" d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-35\" transform=\"translate(83.789062 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_5\">\n <g>\n <use xlink:href=\"#mb73fb19b2f\" x=\"28.942188\" y=\"97.169635\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(15.579688 100.968854) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#mb73fb19b2f\" x=\"28.942188\" y=\"71.954739\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- 5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(15.579688 75.753958) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-35\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_7\">\n <g>\n <use xlink:href=\"#mb73fb19b2f\" x=\"28.942188\" y=\"46.739842\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 10 -->\n <g style=\"fill: #ffffff\" transform=\"translate(9.217188 50.539061) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#mb73fb19b2f\" x=\"28.942188\" y=\"21.524946\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 15 -->\n <g style=\"fill: #ffffff\" transform=\"translate(9.217188 25.324165) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-35\" transform=\"translate(63.623047 0)\"/>\n </g>\n </g>\n </g>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 28.942188 145.8 \nL 28.942188 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 224.242188 145.8 \nL 224.242188 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 28.942188 145.8 \nL 224.242188 145.8 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 28.942188 7.2 \nL 224.242188 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p1de2f470cd\">\n <rect x=\"28.942188\" y=\"7.2\" width=\"195.3\" height=\"138.6\"/>\n </clipPath>\n </defs>\n</svg>\n"
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data",
|
||
"jetTransient": {
|
||
"display_id": null
|
||
}
|
||
}
|
||
],
|
||
"execution_count": 41
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.133683224Z",
|
||
"start_time": "2026-03-14T11:37:49.125021829Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"w=torch.normal(0,0.01,size=(2,1),requires_grad=True)\n",
|
||
"b=torch.zeros(1,requires_grad=True)\n",
|
||
"def linreg(X, w, b):\n",
|
||
" return torch.matmul(X,w)+b\n",
|
||
"def squared_loss(y_hat,y):\n",
|
||
" return (y_hat-y.reshape(y_hat.shape))**2/2\n",
|
||
"def sgd(params,lr,batch_size):\n",
|
||
" with torch.no_grad():\n",
|
||
" for param in params:\n",
|
||
" param-=lr*param.grad/batch_size\n",
|
||
" param.grad.zero_()\n",
|
||
"lr = 0.03\n",
|
||
"num_epochs =20\n",
|
||
"net = linreg\n",
|
||
"loss = squared_loss"
|
||
],
|
||
"id": "12166e1bc3ddd695",
|
||
"outputs": [],
|
||
"execution_count": 42
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.152287703Z",
|
||
"start_time": "2026-03-14T11:37:49.134387652Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import random\n",
|
||
"def data_iter(batch_size, features, labels):\n",
|
||
" num_examples = len(features)\n",
|
||
" indices = list(range(num_examples))\n",
|
||
" # 这些样本是随机读取的,没有特定的顺序\n",
|
||
" random.shuffle(indices)\n",
|
||
" for i in range(0, num_examples, batch_size):\n",
|
||
" batch_indices = torch.tensor(\n",
|
||
" indices[i: min(i + batch_size, num_examples)])\n",
|
||
" yield features[batch_indices], labels[batch_indices]"
|
||
],
|
||
"id": "f3b7ee9f326bc687",
|
||
"outputs": [],
|
||
"execution_count": 43
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.183095346Z",
|
||
"start_time": "2026-03-14T11:37:49.153518090Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"batch_size =10\n",
|
||
"for X,y in data_iter(batch_size, features, labels):\n",
|
||
" print(X,'\\n',y)\n",
|
||
" break"
|
||
],
|
||
"id": "f386e12d65afff2e",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"tensor([[-0.3577, 0.6754],\n",
|
||
" [-0.1904, -0.6314],\n",
|
||
" [-1.5305, -0.2903],\n",
|
||
" [ 2.0532, -0.3528],\n",
|
||
" [ 0.4056, -0.7645],\n",
|
||
" [-0.7985, 1.3492],\n",
|
||
" [-0.4550, 0.1608],\n",
|
||
" [ 1.1672, -0.5057],\n",
|
||
" [ 0.3912, -2.4489],\n",
|
||
" [ 1.9930, 1.6857]]) \n",
|
||
" tensor([[ 1.1766],\n",
|
||
" [ 5.9634],\n",
|
||
" [ 2.1265],\n",
|
||
" [ 9.5015],\n",
|
||
" [ 7.6220],\n",
|
||
" [-1.9910],\n",
|
||
" [ 2.7378],\n",
|
||
" [ 8.2718],\n",
|
||
" [13.2983],\n",
|
||
" [ 2.4553]])\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 44
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.350363398Z",
|
||
"start_time": "2026-03-14T11:37:49.184018282Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"for epoch in range(num_epochs):\n",
|
||
" for X, y in data_iter(batch_size, features, labels):\n",
|
||
" l=loss(net(X, w, b), y)\n",
|
||
" l.sum().backward()\n",
|
||
" sgd([w,b],lr,batch_size)\n",
|
||
" with torch.no_grad():\n",
|
||
" train_l =loss(net(features, w, b), labels)\n",
|
||
" print(f'epoch {epoch+1}, train loss: {float(train_l.mean()):3f}')"
|
||
],
|
||
"id": "8888ab6adcec36f1",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"epoch 1, train loss: 0.052015\n",
|
||
"epoch 2, train loss: 0.000228\n",
|
||
"epoch 3, train loss: 0.000049\n",
|
||
"epoch 4, train loss: 0.000048\n",
|
||
"epoch 5, train loss: 0.000048\n",
|
||
"epoch 6, train loss: 0.000048\n",
|
||
"epoch 7, train loss: 0.000048\n",
|
||
"epoch 8, train loss: 0.000048\n",
|
||
"epoch 9, train loss: 0.000048\n",
|
||
"epoch 10, train loss: 0.000048\n",
|
||
"epoch 11, train loss: 0.000048\n",
|
||
"epoch 12, train loss: 0.000048\n",
|
||
"epoch 13, train loss: 0.000048\n",
|
||
"epoch 14, train loss: 0.000048\n",
|
||
"epoch 15, train loss: 0.000048\n",
|
||
"epoch 16, train loss: 0.000048\n",
|
||
"epoch 17, train loss: 0.000048\n",
|
||
"epoch 18, train loss: 0.000048\n",
|
||
"epoch 19, train loss: 0.000048\n",
|
||
"epoch 20, train loss: 0.000048\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 45
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.378897333Z",
|
||
"start_time": "2026-03-14T11:37:49.353047845Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"print(f'w的估计误差: {true_w - w.reshape(true_w.shape)}')\n",
|
||
"print(f'b的估计误差: {true_b - b}')"
|
||
],
|
||
"id": "8199439fa7f26309",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"w的估计误差: tensor([-0.0004, 0.0002], grad_fn=<SubBackward0>)\n",
|
||
"b的估计误差: tensor([-0.0005], grad_fn=<RsubBackward1>)\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 46
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:40:57.656654704Z",
|
||
"start_time": "2026-03-14T11:40:57.637331612Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from torch.utils import data\n",
|
||
"true_w = torch.tensor([2,-3.4])\n",
|
||
"true_b = 4.2\n",
|
||
"features,labels=synthetic_data(true_w, true_b, 1000)\n",
|
||
"def load_array(data_arrays,batch_size,is_train=True):\n",
|
||
" dataset = data.TensorDataset(*data_arrays)\n",
|
||
" return data.DataLoader(dataset,batch_size,shuffle=is_train)\n",
|
||
"batch_size = 10\n",
|
||
"data_iter = load_array((features,labels),batch_size)"
|
||
],
|
||
"id": "560d537dcbb5a335",
|
||
"outputs": [],
|
||
"execution_count": 51
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:40:58.976005043Z",
|
||
"start_time": "2026-03-14T11:40:58.927183259Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from torch import nn\n",
|
||
"net = nn.Sequential(nn.Linear(2, 1))\n",
|
||
"net[0].weight.data.normal_(0,0.001)\n",
|
||
"net[0].bias.data.fill_(0)"
|
||
],
|
||
"id": "c54fe059d6fd20de",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"tensor([0.])"
|
||
]
|
||
},
|
||
"execution_count": 52,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 52
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:41:52.186040634Z",
|
||
"start_time": "2026-03-14T11:41:52.126046372Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"loss = nn.MSELoss()\n",
|
||
"trainer = torch.optim.SGD(net.parameters(), lr=0.01)\n",
|
||
"num_epochs = 3\n",
|
||
"for epoch in range(num_epochs):\n",
|
||
" for X, y in data_iter:\n",
|
||
" l = loss(net(X) ,y)\n",
|
||
" trainer.zero_grad()\n",
|
||
" l.backward()\n",
|
||
" trainer.step()\n",
|
||
" l = loss(net(features), labels)\n",
|
||
" print(f'epoch {epoch + 1}, loss {l:f}')\n"
|
||
],
|
||
"id": "e8a44851125b7cc6",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"epoch 1, loss 0.000091\n",
|
||
"epoch 2, loss 0.000091\n",
|
||
"epoch 3, loss 0.000091\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 63
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2026-03-14T11:37:49.859894220Z",
|
||
"start_time": "2026-03-14T11:37:49.844955750Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "",
|
||
"id": "bd4e8a65ccd03177",
|
||
"outputs": [],
|
||
"execution_count": 49
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|