{ "cells": [ { "cell_type": "code", "execution_count": 129, "id": "d7039aa5", "metadata": {}, "outputs": [], "source": [ "import os" ] }, { "cell_type": "code", "execution_count": 130, "id": "c8b8ae88", "metadata": {}, "outputs": [], "source": [ "os.chdir(r\"C:\\Users\\yozhan\\cryptocurrency\")" ] }, { "cell_type": "code", "execution_count": 131, "id": "96eb10e5", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABzCklEQVR4nO3de3xU9Z0//tfcJ5lMJvdMQkIIN7kEEEFR1GLl0mqVdt2Wtl77XXdX10tN1Wqtu1vaXwutu15aae3adauVWmy7YrVbFbCKUlQggBJArgFyJSQkk/tcz++PM58zM8lMMveZTF7PxyOPkpmTmXOGynnn/Xm/3x+VJEkSiIiIiNKIOtUnQERERDQcAxQiIiJKOwxQiIiIKO0wQCEiIqK0wwCFiIiI0g4DFCIiIko7DFCIiIgo7TBAISIiorSjTfUJRMPj8aClpQVmsxkqlSrVp0NERERhkCQJvb29KC8vh1o9eo5kXAYoLS0tqKysTPVpEBERURQaGxtRUVEx6jHjMkAxm80A5AvMzc1N8dkQERFROHp6elBZWancx0czLgMUsayTm5vLAIWIiGicCac8g0WyRERElHYYoBAREVHaYYBCREREaYcBChEREaUdBihERESUdhigEBERUdphgEJERERphwEKERERpR0GKERERJR2GKAQERFR2mGAQkRERGmHAQoRERGlHQYoREREGea9o+ew5WBbqk8jJgxQiIiIMojL7cGdG+twx8Y6nOkcSPXpRI0BChERUQbpt7sx4HBDkoBth8+m+nSixgCFiIgog/TancqfGaAQERFRWugdcil/3tVwHrZB5yhHpy8GKERERBmkz+4LUFweCduPnkvh2USPAQoREVEG6fPLoADAtkPjc5mHAQoREVEG6RmSl3TMRi0A4J0j7XC6Pak8pagwQCEiIsogYolnSXUBCk169A65sLvhfIrPKnIMUIiIiDKIWOLJzdLh6lklAICt47CbhwEKERFRBhFdPLlGHVbMKQUgtxtLkpTK04oYAxQiIqIMIpZ4cgxaXDmjCHqtGo3nB3HiXH+KzywyEQcozc3NuPnmm1FYWIjs7GxceOGFqKurU56XJAlr165FeXk5srKycNVVV+HgwYMBr2G323HvvfeiqKgIJpMJq1evRlNTU+xXQ0RENMGJDEqOUYtsvRbVhSYAQJttKJWnFbGIApSuri5cfvnl0Ol0eOONN3Do0CE8/vjjyMvLU4557LHH8MQTT2DDhg3YvXs3rFYrVq5cid7eXuWY2tpabN68GZs2bcKOHTvQ19eH6667Dm63O24XRkRENBH1eSfJ5hjkLh6TQQMA6He4Qv5MOtJGcvBPfvITVFZW4te//rXy2JQpU5Q/S5KEp556Co8++ihuuOEGAMALL7yA0tJSvPTSS7jjjjtgs9nw3HPP4cUXX8SKFSsAABs3bkRlZSW2bduGz33uc3G4LCIioolJZFBEm7HJG6j028dXgBJRBuW1117D4sWL8ZWvfAUlJSVYuHAhfvWrXynPNzQ0oK2tDatWrVIeMxgMWLZsGXbu3AkAqKurg9PpDDimvLwcNTU1yjHD2e129PT0BHwRERHRSKIGRQlQ9BMgQDl58iSeeeYZzJgxA2+99RbuvPNOfPOb38RvfvMbAEBbWxsAoLS0NODnSktLlefa2tqg1+uRn58f8pjh1q9fD4vFonxVVlZGctpEREQThmgzzjHoAPhlUBzjq4wiogDF4/Hgoosuwrp167Bw4ULccccd+Kd/+ic888wzAcepVKqA7yVJGvHYcKMd88gjj8BmsylfjY2NkZw2ERHRhNEzbIknR9SgZHIGpaysDHPmzAl4bPbs2Thz5gwAwGq1AsCITEh7e7uSVbFarXA4HOjq6gp5zHAGgwG5ubkBX0RERDTS8CLZbO//9mVygHL55ZfjyJEjAY8dPXoUVVVVAIDq6mpYrVZs3bpVed7hcGD79u1YunQpAGDRokXQ6XQBx7S2tqK+vl45hoiIiCLndHsw5JT33fFlUMZnDUpEXTzf+ta3sHTpUqxbtw5r1qzBrl278Oyzz+LZZ58FIC/t1NbWYt26dZgxYwZmzJiBdevWITs7GzfeeCMAwGKx4Pbbb8cDDzyAwsJCFBQU4MEHH8S8efOUrh4iIiKKnP9OxkqbsV60GY+vGpSIApSLL74YmzdvxiOPPIIf/OAHqK6uxlNPPYWbbrpJOeahhx7C4OAg7rrrLnR1dWHJkiXYsmULzGazcsyTTz4JrVaLNWvWYHBwEMuXL8fzzz8PjUYTvysjIiKaYMQyTpZOA61GXiTJHqcZFJU03obzA+jp6YHFYoHNZmM9ChERkdehlh5c+7P3UWw2YPej8qrEXw604q7f7sXFU/LxhztTW0oRyf2be/EQERFlCGUGisG3QOIb1Da+lngYoBAREWWI3iG5g0cUyAL+NSjja4mHAQoREVGGUHYyNgbLoDBAISIiohRQdjL2W+LJ4RIPERERpZJvo0Cd8pjIoAw63XB7xk9fDAMUIiKiDDF8iiwAZOt9IzzGUx0KAxQiIqIM0TdsHx4AMGjV0Krlve7GUx0KAxQiIqIMEawGRaVSjctWYwYoREREGaLXPrIGBfBrNWYGhYiIiJJNLPH4txkD47PVmAEKERFRhuj1Fsn6T5IF/AKUcbRhIAMUIiKiDBGsSBYATAYu8RAREVGKBJskCwAmvTbg+fGAAQoREVGGCNbF4/89MyhERESUVA6XB3aXB0CQLh7WoBAREVEq+C/fDM+gZLMGhYiIiFJBFMhm6zXQeCfHCjl6LvEQERFRCvQMjdyHR+ASDxER0QT1cWM3/u3VevR6A4Vk67MHbzEGxmeb8cirICIiooh4PBJqX96Pho5+zJtkwZqLK5N+Dr4psroRz4kMCtuMiYiIJpC/ftqOho5+AED3oCMl5xBqiizgC1AGHAxQiIiIJozndjQof+5L0Y7BoabIAr5BbdzNmIiIaII42GLDByc7le9TVechdjIOXiQr16BwiYeIiGiCENkT0dmbqgAl1E7GACfJEhERTSjtPUN4/eMWAMD1C8oBpC5L0ass8YQukh1wuOHxSEk9r2gxQCEiIorSix+ehtMtYVFVPpZOKwQgBwGpoLQZB1vi0fseG3COjzoUBihERERReqO+DQBw29IpKW/l7R1liceoU6d8CSpSDFCIiIiidL5fbimeWZrjm9aasgAl9CRZlUqV8vOLFAMUIiKiKEiShJ5BOSjINepSXog62iRZYPy1GjNAISIiisKg0w2Xt+DUkqVTAoCUzUEZK0AZZ63GDFCIiIiiYPNmTzRqFbL1mpRnUJQaFMPILh758fE1TZYBChERURR6BuUbfa5R663xkDMUg0433Clo5R1tkiwAZOvH1348DFCIiIii0OMtSrVkyRkLk19xan+SsxR2lxsOtwdA8C4eAH5FsqxBISIiyli2AW+BrDdAMWjV0Hp7eZO9zCOyJ0DgzBN/Od4MD7t4iIiIMtjwDEoqW3lF/YlJr4FGDDwZRjk31qAQERFlLptfi7GQY0hNJ0+391zysvUhj+EcFCIioglAKZLN8i2pmFK0jNI1IA+My8sO3sEDIOVt0JFigEJERBQFscQjalAApGzcfZd3om2BabQMihw8sc2YiIgog422xJPsDIoYuZ/PJR4iIqKJTYy5t/hnUPSpCQLEEs/oGRTOQSEiIsp4oy/xJLfOo2tAFMmGrkHJUZZ4WINCRESUsWx+k2SFVM0aCacGhZNkiYiIJoCgSzwpWkYJpwYl1XsFRYoBChERURREgBJsiSeda1A46p6IiChDuT0Seu1iiSdIF0+SW3nP949dg6LMaHG4IEnJ38wwUgxQiIiIIuS/903goLbkF8lKkoTucDIo3hoUSZJ3XE53DFCIiIgiJGagGHVqGLQa5fFUFMn22l1weeSMyGg1KNl6DVTebXrGQ6EsAxQiIqIIDd8oUEhFDYro4MnWa2DUaUIep1KplCzKwDioQ2GAQkREFKGeIFNkgdR08YTTwSNk6+UAhhkUIiKiDGQL0sEDpKaVt9s7pC3fFLpAVhhPrcYMUIiIiCI09hJP8pZQIsmgiPMbD9NkGaAQERFFyLdRoDbg8RxvjYfD7YHD5UnKuYQzA0XgEg8REVEG6/GOuR+ZQfEVqQ4kaRZKJBkUs7dmRmSA0llEAcratWuhUqkCvqxWq/K8JElYu3YtysvLkZWVhauuugoHDx4MeA273Y57770XRUVFMJlMWL16NZqamuJzNURElPHae4bwg9cPobl7MGXnEGyjQADQatQwaOVba7KyFGKjwHAClJJcAwCgvcee0HOKh4gzKHPnzkVra6vydeDAAeW5xx57DE888QQ2bNiA3bt3w2q1YuXKlejt7VWOqa2txebNm7Fp0ybs2LEDfX19uO666+B2p/96GBERpd66vxzG//ytAb/54FTKzsEWoosHSH4dim+jwLGLZEvNRgDA2Z6hhJ5TPGjHPmTYD2i1AVkTQZIkPPXUU3j00Udxww03AABeeOEFlJaW4qWXXsIdd9wBm82G5557Di+++CJWrFgBANi4cSMqKyuxbds2fO5zn4vxcoiIKJMNOtzYcugsAMA2kLplimAbBQomgwbn+5OXQTnvrUHJCyODYrXIGZTxEKBEnEE5duwYysvLUV1dja997Ws4efIkAKChoQFtbW1YtWqVcqzBYMCyZcuwc+dOAEBdXR2cTmfAMeXl5aipqVGOISIiCuXtT88qHSipLPTs8Y669x9zL4hhaMlq5fVlUMJZ4pEzKG3jYIknogzKkiVL8Jvf/AYzZ87E2bNn8cMf/hBLly7FwYMH0dbWBgAoLS0N+JnS0lKcPn0aANDW1ga9Xo/8/PwRx4ifD8Zut8Nu932YPT09kZw2ERFliNc/blH+nMpW2VBzUIDkzxoRXTzh1KCIJZ72cZBBiShAueaaa5Q/z5s3D5dddhmmTZuGF154AZdeeikAeZSuP0mSRjw23FjHrF+/Ht///vcjOVUiIsowPUNOvHPknPJ9KoeNhZokCyR3mqwkSUqRbDgZFKtFDlA6+x2wu9wB+wilm5jajE0mE+bNm4djx44pdSnDMyHt7e1KVsVqtcLhcKCrqyvkMcE88sgjsNlsyldjY2Msp01EROPQW/VtcLg8yoZ36ZBBCVaDkswMSs+QC27vRoF52WMXyeZn66DXyLf+c73pvcwTU4Bit9tx+PBhlJWVobq6GlarFVu3blWedzgc2L59O5YuXQoAWLRoEXQ6XcAxra2tqK+vV44JxmAwIDc3N+CLiIgmlte8yztXTC8CkLoMypDTDbt3CFuwJR4xC6U/CQFUuBsFCiqVSmk1TvdC2YiWeB588EFcf/31mDx5Mtrb2/HDH/4QPT09uO2226BSqVBbW4t169ZhxowZmDFjBtatW4fs7GzceOONAACLxYLbb78dDzzwAAoLC1FQUIAHH3wQ8+bNU7p6iIiIhuvos2PniU4AwNcunoz3j3WgP0mD0Ibr9RbIqlSA2RCkSDaJSzznI6g/EUpzjWjqGsTZNC+UjShAaWpqwte//nV0dHSguLgYl156KT788ENUVVUBAB566CEMDg7irrvuQldXF5YsWYItW7bAbDYrr/Hkk09Cq9VizZo1GBwcxPLly/H8889Do0nfdTAiIkqtvxxohdsjYX6FBXPL5Sz6QBL3u/EnlndyDFqo1SPrJ5O5xNMdwZh7wSo6eWwZlEHZtGnTqM+rVCqsXbsWa9euDXmM0WjE008/jaeffjqStyYiogns/WMdAIBr55UhW1lCcYXViBFvoTYKFJKaQemXzyWc+hNBWeLpTe8AhXvxEBFR2hMFndVFJmXOiEcChpzJ2ZDP32gdPID/JNnEByiRzEARRAblbJpnUBigEBFR2uvslwOUohw9snQapZMnFXUoo3XwAECOyPAkYQkq2hoUAGlfg8IAhYiI0l5nn3wjLjQZoFarkK0TQUDyA5TRpsgCvkmyyVjiiaYGxRegMINCREQUtQGHS5l5UmSW6yeyk7whn7+xlniSWSR7vl9kUMKvQSkdJ23GDFCIiCitieyJQauGSS9nTkQQMJCCJZ7RNgoEkl2DIp9LfhQZlH6HG71DqdtwcSwMUIiIKK119In6E4PSsZPtDVRSsWGg6OIJNqQNSM0clIIIalBMBq0yvyWd61AYoBARUVpT6k9yfDdhUeeRinH3YxfJejMoDjckSUrouYgalEgyKADGxTRZBihERJTWfB08BuUxZRZKKjIog2MUyXrPze2RlJH4ieDx+DYKjKSLB/BtGsgAhYiIKEodSgePXwYliXUewylLPKHmoOh9gUsil3l6I9wo0F+pOf1bjRmgEBFRWhM1KIV+GRRRLJuMDfmGG2uJR61WKTUyiQygRP2JKcyNAv2VMoNCREQUG1GDUuRXg5KtT30XT6giWSA5hbJKi3GE9ScAUGpmDQoREVFMgtWg5KRoDookSb5BbSGWeIDknF9L9yCAyOtPAF8NShsDFCIiougE6+JJVZFs94BTqfvIN42WQUn8+W3afQYAcOnUgoh/tsQ7C6WdNShERETRUWpQTP41KKlpMz7nPZe8bB0M2tB1H4ked3+4tQd/O94JtQq4bemUiH/e6jfu3uNJbCt0tBigEBFRAEmSsPdMF+7//X7M/fc38cvtJ1J2Lm6PpNRa+NegJHMYmj+xq3Kx33JTMIked/8/OxoAANfUlKEiPzviny82G6BSAS6PpBTbppvgTdxERDQhHW/vQ+3L+1Df3KM89tdP23HnsmkpOZ/uAQfEL/j+G+KJLp5kF8kqAYp59ADF5DesLRHn8Kf9LQCAf7iiOqrX0GnUKDQZ0NFnR5ttKKC+J10wg0JERIqXd59BfXMPDFo1LqmWaxu6U/gbdqffZnhaje+WlarNAiMOUBKQQdn44Wk43B5cWJmHRVX5Ub+O2DSwvTc9C2UZoBARkaLZ2xny0Odn4fur5wIAzvenbkO5YDNQACBHFKEmOYPivy/QaMxGOUCJ92Z8Q043Nn54GgBwe5TZE0HUobTZ0rNQlgEKEREpWrrl36Yn5RmV9tWuAUfC95QJJdgUWcA3ByVdMyjis4t3cPdmfRs6+x0otxhxTY01ptcSnTzp2mrMAIWIiBStNjmDUmbJUsanuz2+2R/J1ikyFsMCAlOKBrWJLp6ximRFS7SY4RIvh1rl2qDP1VgDlryiIYqOu/rTs0iWAQoREQEAnG4P2r0ZgrI8I4w6jVKMmqo6FGWK7LAMipgzMuBwJ7VNNtwMirj5i/OPFzGcbVJeVsyvJUb1i9H96YYBChERAQDae+2QJECnUaHIO3NEjFE/n6LfskUGYngNiihCBYABZ/KWecINUMTMFlGzEi+JCFC6GaAQEVE6a/Xe/KwWI9RqFQAE1KGkwrnekVNkAcCgVcN7ihhI0iwUp9ujzAwZM0Dxy6DEs35H1AiVxyFAyfP+3TKDQkREaa3FJt/8yiy+m58vg5Kam5iSQTEFBgQqlSrpw9rO9zsgSYBGrRpz/xvR5eNwe9Abp/OTl+C8f0d5xphfT1niSdNBbQxQiIgIgC+DUm7x3fwKvIWyqa5BKTaPDAiSPe5eLO8UmvTQiPRNCEadRpkmG686lLM9Q/BIgF6jVpbgYiGKoJlBISKitNbqzaBYg2ZQUhWgBM+gAMnfMDDc+hNBLPPEqw5FLO+U5fmW4GLhXySbjvvxMEAhIiIAvgLMcr/lg1TWoAw63Mqo+OE1KIAvg5KsYW0RBygmUYcSnwDF1wIe+/IO4AtQPBLQl+R27XAwQCEiIgC+DErwGpTkBygi86DXqpXlEn8mJYOSpCWeMGegCKIOpSNOSzzNSgAZe4EsIC9DGbRyGGAbSL9lHgYoREQEIPhv6AVKBiX5NzCxD09xjgEq1cgljWQPaxMZlOFD40IRrdHxqkFRMlyW+AQoQHrXoTBAISIi2F1u5Td9/9/Q803yDSwV00aV+pMgyzuAb8PAvrTNoMR3mmxrHFuMBWUWCjMoRESUjtq8yzsGrRr53t+qgdTWoHSG2IdHEBsGJmsOSrQ1KPEqkm0OUiMUq7ys9J2FwgCFiIgCBoD5L6cUmHxLPMneMLAjxBRZQdkwMEltxh0Rd/HEtwalJc41KACQq0yTTb9ZKAxQiIgoZIdIKjcM7PBOkS0KEaCIfYKSXYMSboBSpNSgxJ5B6bO7lM8/Xl08AGtQiIgozQXr4AEAg9Y3cCzZdSiidqMoRA1KMifJDjrcykTY8AMUUYMS++cmhujlGrUwG3VjHB0+3zRZBihERJSGgs1AEcRv2eeTXIei1KCMUSQ7kIQiWVFHYtCqYQ7S8hyMWOLpHnDC6fbE9P7xbjEW8tJ4R2MGKEREFDKDAvjVoSQ5g9IxyhRZwLfEk4xBbe1+yzvBWp6DycvSKSPxY50jI/5+4h6gZLOLh4iI0pjIoASrb8hP0SwUcdMMtTGfWOJJxqj7SOtPAECtVinBXaydPKNluGKRGySDYht04n/rmvDRyc64vlekGKAQEZEvgxLkBpiqDIq4aeZlB6+5SOZmgZHOQBF84+5j++yalQAy3hkU+fy6/QKU4+19eOAPH+P+338c1/eKFAMUIqIJbsDhUoKBYDfAVNSg2F1uDDrlwEP8lj+csllgEpZ4osmgAP7j7mPLoIghbZPivMQjimR7/AIUka2J93tFigEKEdEEJ2agmPQa5BpHFoAq4+6TmEERAZNKhZBFqTnKEk8SMihRBiiiwDfWDEqLLbFFst1+waey3Bfn5aRIMUAhIprg2pTlnaygBaD5puRPkxW/0ecadVCrgxelZosi2STWoISayRKKKPDtiGHcvccj+RUxxzdoEBmUfodb6TRKVEFupBigEBFNcC0hhrQJvhqU5BXJjlV/AvhqUOwuD1wxtvGORSzRRLzEY449g9LZ74DD5YFKBVjjHKD4L5+Jz1xpaY7ze0WKAQoR0QSnbEIXogAzFTUo4mZpCVF/Avi6eIDEj7uPugbFFHsNilhyKTUbodPE97atUatg9i7ric88ESP1o8EAhYhoglPG3IeoOUhFF49oMR4tQNFr1dBp5OWfRI67lyQp+i6eONSgjPX3E6vhs1C4xENERGlBDCErzQ0RoPi1ono8ydkwMJwMCuC3YWACC2V7hlxwuOQlpMiLZGPfj6e5O7EBg38nz6DDrQyVC5VRSxYGKEREE5wofs0PUe8hZmW4PRJ6k7RhYLgBiikJhbItfvvgGHWaiH5W7MfT0e+IejfoRLf95mWJANShZGtMeg1ys8Ib6Z8oDFCIiCY4sVFcXoiJrXqtWmnpTVYdSjhLPIDfNNkELvHUN9sAALPLciP+WdHF43B5xtzU8P1j5/D73Y0jHj/V0Q8AqMhPbAbFNuBUWs7LQ3R0JVNqwyMiIko5XwYleIACAPkmHfrsLpzvd6C6yJTwc+oJd4knCRsGHvAGKPMrLBH/bJZeA5Neg36HGx19jpA7EdsGnPjHF/bA7vJgQWUeLrCaleeOnO0FAFxQag76s7GyiBqUQaffDJTULu8AzKAQEU1oHo8UVkuvUoeSpAxKOOcEJGfDwE+a5ABlXkVeVD8fTh3K/+5tgt1b5yICIgDos7vQ1CUHDTMTFaD47ccjWs4npXhIG8AAhYgoJU539uOy9W/j5+8cT+l59A65IOpeR8tWiGFtse7KG66wa1ASPE3W6fbgUGsPAGD+pMgzKIBfHUqITh5JkvDbj04r3x9q6VH+fNSbPSkxG5S/g3jLC1jiScyeP9FggEJElALvfNqOVtsQHt9yRKlxSIXuQfmmmaXTjFoA6tvROEk1KGKSbJhFsolqMz56thcOlwdmoxZVhdlRvYaSQQkxTfajhvM4ca5f+f5Qq+//D0favMs71sRkT4BhGZQEdwxFggEKEVEKiLS9RwL+7U/1SWvfHa7LW4waqoNHEAHK+SRNk1WWeLJGzxqIGpSxClCjVe9XfxJt0aiSQekNHtz99qMzAIALK/MAAIdbe5WOHyVASdDyDuA3B8VviaecSzxERBOTCFAAYN+Zbvx+z8jujWQQGRHLKAWyAFBgGrmpXKJIkq8uxjJG4CS6iwYSNElW1J/URLm8A/g6eYJlUDr67HizvhUA8L3r50CnUXlrQeRMhljiSWwGxVdfpEyR5RIPEdHE1NQ9AAC4fHohAODHb36atPoOf7ZwMyhJrEEZcnqUwWhjD2qL3xwUu8uNP+1vRu+QL0ukdPBMyov6dQuVGpSRAcof65rgdEtYUJmHhZPzMa04B4CvDiWZSzyNXYMYcsqfe7z3/IlGTAHK+vXroVKpUFtbqzwmSRLWrl2L8vJyZGVl4aqrrsLBgwcDfs5ut+Pee+9FUVERTCYTVq9ejaamplhOhYhoXBEZlO9eOxuzrGZ0Dzjxn1uOJP08wmkx9n8+GTUoInuiUauUGpNQTMok2dgDlFf2NuO+TfvxrZf3A5ADlsOiQDaKFmOhxCzf7Nt7AgMUSZLwknd556ZLJgMA5pTLs1YOtfSgo8+Ozn4HVCpgRknil3hEUFiUY4h4IF0iRB2g7N69G88++yzmz58f8Phjjz2GJ554Ahs2bMDu3bthtVqxcuVK9Pb2KsfU1tZi8+bN2LRpE3bs2IG+vj5cd911cLsTu9kTEVE66B1yKoPIqgpN+O61swEAWw6eTfq5KAPRwq5BSV6AkpelG7Puw6TUoMR+/zjdKWe1th1uR32zDUfb+uB0S8jL1sU0JE1kI8QeN0KLbQhnzg9Ap1HhugVlAIA53mFwh1ptSvakqiAbWWMEarEYnqVKh/oTIMoApa+vDzfddBN+9atfIT8/X3lckiQ89dRTePTRR3HDDTegpqYGL7zwAgYGBvDSSy8BAGw2G5577jk8/vjjWLFiBRYuXIiNGzfiwIED2LZtW3yuiogojYnt7POydcgxaDGrTP7tuLPfDpfbk9Rz6R5jzL0glimSGaCMtbwD+GpjQnXIRMJ/M8Sfv3McnzR3AwDmTYq+QBbwBSjtvUMBxdCt3v8fWC1GZU8hJYPS2qMEKImafyJk6zXKpotAetSfAFEGKHfffTe+8IUvYMWKFQGPNzQ0oK2tDatWrVIeMxgMWLZsGXbu3AkAqKurg9PpDDimvLwcNTU1yjHD2e129PT0BHwREY1XTeflG5P4rbzQZIBaBUgS0JnkOpTuMLtlCsWOxgPOhAdRImgaq8UYAKzem2nbsOxENPyXr96ob8Or+5oBxLa8A8gzTFQqwOmWAv5+RSGs/8wRkUFpPD+IutNdAIBZCaw/AQCVShUQDKZDizEQRYCyadMm7N27F+vXrx/xXFtbGwCgtLQ04PHS0lLluba2Nuj1+oDMy/Bjhlu/fj0sFovyVVlZGelpExGlDZFBqciT52po1Cpll9yzPbHfaCPRNRDexNa8bD3U3l+yE70fT7hTZAHAmiuyE3a4Y2zVFstduUY5m7H7lBwgzIuhgwcAdBo1inNG/v22Kh0zviWVvGy9singtsPykt/MBAcoAIYFKONwiaexsRH33XcfNm7cCKMx9AUMT4VJkjRmemy0Yx555BHYbDblq7ExNe14RETx0NQl1zr41zWEKqRMtO4wi2Q1alXS6lAiWeIpNhugUavg9khBu2QiIQKvby6fEfB4tCPu/QWrQxF/Hr7vjdiUUIy+T3QGBRgeoIzDDEpdXR3a29uxaNEiaLVaaLVabN++HT/72c+g1WqVzMnwTEh7e7vynNVqhcPhQFdXV8hjhjMYDMjNzQ34IiIar0QHT2CAIv+G3d6b7AAl/GyFqEPpDDGyPV4iCVA0apXy2Q0vQo2UCNYun16E5bNKAMhLW+VxaLkVmZ42m2/+TUuQDArgq0MBAL1GjarCxG/O6L+TdVkatBgDEQYoy5cvx4EDB7B//37la/Hixbjpppuwf/9+TJ06FVarFVu3blV+xuFwYPv27Vi6dCkAYNGiRdDpdAHHtLa2or6+XjmGiCiT+QIU3+j0klwRoCR7iUe+KeeNkUEBfAPHYs1UjCWSAAUASpWbf/SfnSRJynJXgUmPb62cCZNegy/ML4upQFYQN/22niAZlGFFqXPKfBmTqcUm6DSJH1nm/1lPSpMMijaSg81mM2pqagIeM5lMKCwsVB6vra3FunXrMGPGDMyYMQPr1q1DdnY2brzxRgCAxWLB7bffjgceeACFhYUoKCjAgw8+iHnz5o0ouiUiykTKEk+B70ZQbPbVUiSLy+1B75A8P2S8ZlAA+ea/vzEwOxGpniGXUsOSl61Daa4R+/59FfTa+AQHpUGXeLwb8w2r+ZhT5qt5ScbyDuD7rHUaFYq89TKpFlGAEo6HHnoIg4ODuOuuu9DV1YUlS5Zgy5YtMJt9H/KTTz4JrVaLNWvWYHBwEMuXL8fzzz8PjSb1g2GIiBKpz+5SflP3/01VWeJJYg2KCAQA3462oykaY9O7eIk0QFHqO2IoMBYtxtl6DQxa+V4Ur+AE8MugeAMUu8ut7G48vK23Ij8LZoMWvXZXUgpkAd9nbbUYoVbHnjGKh5gDlHfffTfge5VKhbVr12Lt2rUhf8ZoNOLpp5/G008/HevbExGNK83e5R1Llg5mo+8GLAKUc0lc4hEtxmaDFtowlhFEq3GiMyjK8LhwAxTvEs/ZGJZ4wp2oGy1lGcobRIlAxahTj8heqdUqXDqtEFsPncWS6oKEnM9w4hzSZQYKkIAMChERhRasgwfw3cDOJjGDIopC80zhBQIFYoknwV08PUqbcXjBQqhJrZFQApQwP4tIlfnNa5EkCS3d8rmWW7KC1rg89vfz0Xj1AObHoYMoHJdNK0SJ2YAvzC9LyvuFgwEKEVESBevgAXxFsh19dng8UlLS7N3KRoHhBQLKrrxpViSr3PxjWuKJ7LOIlMjyDDjc6LW7QtafCPkmvbJBYzLMsubio+8uj0tBcLxwN2MioiTyZVCyAx4vypGnjbo8UsIHoQldES6lFCUhgyJJUuQ1KH5dPJIU3bC2RC/xZOk1yvW02YZCdvCkUjoFJwADFCKipAqVQdFp1Cjw3hyTVSgb7pA2oVAUySawBqXf4YbL200TboAisk92l0fJCkVKBCgFCcxalPktRYkZKOkycyQdMUAhIkqiYDNQhGJzcmehRDKkDfC1GffZXRhyJmb3eZE90WvVMOrCu0UZdRqlgDfaOpTz/ZF9FtEQtTJn0zSDkm4YoBARJZGyD0/+yBtTSW5yZ6FEMqQNkLt9xK63iVrmsfktO0Wy5OArMo4uQOlOQgZFLEUFZFDSZN+bdMQAhYgoSfrtLmUfm0nBAhSl1ThJSzzKTsbhZQ1UKpVSKHs+Qcs83YPy64a7vCOUxdjJE2mwFg2r3zRZcZ7p1NabbhigEBElicie5Bq1yDWOvAGX5iZ3R+PuKFprxTJPR4KGtfVEWCArKDf/KKfJii6eggQGKCKIOnmuT1nKYgYlNAYoRERJEqqDR0j2jsa+GpTwb8qJLpS1RZjVEazDBqFFypdBSVwNiliG+qTJBgDIMQQPVEnGAIWIKElCdfAIJakqko0gGChSpskmJoiKtMVYiGVYm7xRoMgmJTKDIv+9D3oLjNnBMzoGKERESSKWeMpD7Bbr29E4uUWykcz+EEWkiSqSFUFTbsQ1KL5JrZHqd7jhdMutzYlc4hFZHqEsTXYNTlcMUIiIkkQsi4h24uFK/HY0jnbgWLjsLjcGHPJv8pEsa4glno4EZ1AiXWqxWuTzimaJR2wUaNCqkaVP3Ka1uVlaZOl8r1/ODMqoGKAQESWJWBYRE1mHE4GLw+VBz6Aroeci2nnVKkRUByGKZM8nqs046iUeORvRO+RCnz2yzy4ZQ9oAuQvKf1mHM1BGxwCFiChJxLKIaNUdzqjTINcob5GW6DqUbr9AIJJ9f5Rx9wkuko00QMkxaGE2yJ9dpMs8IthKZIuxUOq3zMMOntExQCEiShJxUy8MkUEBkrercVeUN+VEbxgYbYACAKWW6Ia1ibqXggTtZOzPP4PCGSijY4BCRBnPNuDEoCMxo9nDJUkSzilLPMEzKIB/oWxyMiiR1nr45qA4ElInE20NChD9sLZkZlCsFmZQwsUAhYgy2rleO5b++G3c/sLulJ5Hn90Fh8sDYPQMin+hbCKJIW2RzhsRGRSHyxNxrUc4Ysmg+HY1jmxYmzLmPskBCjMoo2OAQkQZ7XBrD/odbuw80am0+aaCWN7J1muQrdeGPE6ZhZLoJR7vskYkLcYAkKXXINvb6RJtHYptwIkvP7MTv/5bQ8Dj3QMOJUCJ9LyAwFHykTivtFsnfolHBFF52bqEdgxlAgYoRJTR/OsR3j3SnrLz6PSOhh8tewIkb0djUXdhieKmLK4h2lko24+dw57TXXh8y9GAXZG3HDoLSQJmWc1KO3MkfOPuR//sDjTZ8PN3jsPlljNaSrCW4C4eAJhXYYFBq8biqoKEv9d4xwCFiDKa/1LJu0fOpew8OvpG7+ARkrWjcXcUQ9qEWAtlW72ZrD67C+986gsa36xvAwBcU1MW1euGW4Py6KsH8B9vHcGr+1sAxPZZRKrMkoVdj67Af92yKOHvNd4xQCGijNbul0HZebwDdldqimU7wiiQBRKzo3GwYtZuZYkn8gxKUYwZFP8A4rWP5SChd8iJHcc6AADXzLNG9bqifme0DqghpxsHW3oAAO8dlQPW8/3RF+ZGw5KlgyaC1u6JigEKEWU0/0xEv8ONPae6UnIeol4j1JA2wddmHPsSj93lxhd+9j7+4fndcHsCgxQxnMwSRdagIMb9ePyXYN7+tB29Q0789dN2ONweTC02YUZJTlSvKz67zn67snwzXH2zTfks/na8Ax6P5CuSTcISD4WPAQoRZTQRoIhMQarqUMTNfKwaFJFBGXC4Y+6SOdHej4MtPXjnyDn89qPTyuO2QSdOnOuTzyeKm7Jv3H20GRRfsbLD5cGWg2fxxgGxvGOFShVddqHQpIdGrYIkhT63/Y3dyp87+x043NajtBknY4mHwscAhYgymshE/N3CCgCpq0PpGGOKrGAyaGHydne0x5hFEYW5APAfbx1Rlo3WvnYQHX0OVBVmY1FVfsSvWxjjhoFiiWfF7FIAwMt7GvHuUTlwjLb+BADUahWKvcFTqAzUx022gO+3HjoLu7f9OxlFshQ+BihElLEkSVIyKDdcNAlqFXCsvS8l7cbKPjwhNgr0F69CWf8N/XqHXFj/l8P48yct2LyvGWoV8MSaC2HURd7qKupoolnicbo9ysC6O5ZNBQDsajiPIacHFflZmFueG/Fr+htrR+iPvRmUq2eVAPDVwOg0KiUwpPTAAIWIMpZt0KkMR5tekqNkC1KxzCOWHIrC+C3d12ocY4DSK7/nzNIcqFTAK/ua8fAfPwEA3HXV9KiyJ0BsGwbKOzUDeo0aiybno2aSLyCJZXlHKBmlTft8vwNnzg8AAO7+7DQAwMlz/QDk5Z1Y35viiwEKEWUscYO3ZOlg1Glw1QXyb83vfJr8ZR5fDUoYGRRlWFtsSzwd3iWeK2cU48ZLJgOQC4VrJuXim8tnRP26YpkqmhoU0WJcajFArVZh9YJy5bnPx7C8I5SMspfRx03dAICpRSZcNDkfpbm+vwvWn6QfBihElLHENFZxI1o2sxgAsPNER8guj0RwuT3KMLCximQBX7tsrK3GIoNSlGPAQ5+bhRKzAdl6DZ5ccyH02uj/+fdlUOwjuoPGIupPyrxj3lcvmASzQYsZJTlYWJkX9TkJvjbtkcGdWN65sDIPKpUKV84oVp7LT8JGgRSZ0POWiYjGOVEoKW74c8pyYdSpMeBwo7l7EFWFpqSchxilrlaF95u6CKhibTXu8OscsmTr8MZ9V8LlkZR23GgVmvRQqwCPJL9HJK/XpgQo8s9YLUa8/cAyGHQaqOMwG0TZyyhYBsUboCzwBkJXzijCH+uaADCDko6YQSGijCWWeMRv1Wq1CpMLsgEApzsHknYeIpNR4G2DHctYhZ7hEl08orOlMMcQc3ACAFqNWtlTpiXCguMWb4ux/6Z5JbnGqDYHDEYJ7oZlUCRJUjp4RIBy+fQi5Xl28KQfBihElLGUDIrfTVlkTU539iftPJR9eMZoMRbitaOxCIzCWVaKVHmevETT0h1ZlkfJoMQhUAomVAalqWsQ5/sd0GlUmF1mBiAvfc0uk4t0k7FRIEWGAQoRZaxzwzIoAFDlzaCcSmIGRUyRDTdQiEeRrCRJSmA01nj9aJQpAUroDMonTd34weuHAjpqlBoU78/Hm8igdPQF1seIAW1zynJh0Praib9+SSUA4NKphQk5H4oea1CIKGOJG6P/skZVkcigJHGJJ4IOHsCXBegZcmHI6Y5qVknPoAtOt+R930RkULxLPLbgAcrmfU14+H8PwOHywKhT46HPzwIwsgYl3gpzDEp9TGefXcme7R9WfyLccmkV1iyujOozpsRiBoWIMpZoNS3JHZlBSe4ST3j78Ai5WVqlyybaTh4xDM1s1AZkDOJlUogMitsjYf1fDuNbL3+szKCpOy3vf+Rye5Sg0ZqgAEWjVimBoP8SmVIgW5EXcLxKpWJwkqYYoBBRRpKnyIouHl+AMsVbg3Lm/AA8EbbIRqujN7KlFpVKNerAsXCIuSvFCVjeAXxtwsNrUB5781P813snAQA3LJwEAPikyeYNTuzwSPLU1qIw63GiMbwLyu2RlB2MF1RaEva+FF8MUIgoI8nLI/Jv8GLJBJCXJrRqFewuz4hOj0TpVPbhCX+ppXSUgWPh6Iiw7iVSYomnddgSz5ZDZwEAP/jiXPznVxbAbNRi0OnGp229Sv1Jaa4xLi3FoQwvMj5zfgCDTjcMWjWqi6LbKZmSjwEKEWUkMajLbNQiy2+PFa1GjYp8+bf/ZNWhRDJFVoi1UFbUvSSiQBYAyr0ZlI4+B4acbgCA3eVWRsl/bq4VarUKF3prPvad6VKCmUTVnwgigyI6eT5tlbMnF1jNYbV5U3pggEJEGUncnEqCbM43Ocmtxso+PBFkM0pi3I+nM8EBSl62Dlne2g2RGTnTOQC3R0KOQauc/8LJ8n4/+850KwWyVktiOniEYm8GRWTIDrf1AgBmWc0JfV+KLwYoRJSRzgbp4BGmFCav1Tjadt9YdzQ+l+AlHpVK5Vvm8RbKnjjXBwCYVmxSNt67aHIeAGDvmS6/MfeJzaD4sk+BGZRZ1th2SqbkYoBCRBlp1AyKt5PnTBIClH6HW6mFiSRYiHVH40Qv8QC+YW3NSoAiZ6SmFfvqPBZWyhmUU50DOOQtVE38Eo8I7uSA6FORQSljBmU8YYBCRBnprLJRYLAMirzEcyoJSzxiqSVLp0G2PvzRU7HWoPiWeBI3wr18WCfPiXZvBqXEF6BYsnWYVix/3h81dAJIbgald8ip1MUwgzK+MEAhoowkfnsuDpJBqSr0ZVAkKbGtxkr9iTmyQCHWHY19dS+Jz6CI4lffEk9gp4yoQxFd3YmuQRFB6bk+u5I9Kc01oID77YwrDFCIKCMpGwUGyaBUFmRDpQJ67S6c97YAJ4rSwRPh3A/RidLZ71AGnkUiGUs8Zd4alObuQUiSpCzxTC8J3CX6Im+AovxcgjMoRTl6qFTy/JO/He8AwOzJeMQAhYgyklgaKQ2SQTHqNMpuvKfPJ7YOJdIpskJ+th5ab0usCDbCNeBwYcAht/4mqkgWCJwme7bHjj67Cxq1CpMLhgUoVXnKn7VqVUKDJkBuJRczZ947eg4AlE0BafxggEJEGUeeIhs6gwL4lnkS3WospshGmkFRq1VRF8qKzQkNWjVyDInbcs23xDOE4976k6qCbGVMvzCjxKycR2muMSmzSMQSmdiDZzYLZMcdBihElHH67L4MQrAuHsCvULYjORmUaDIZ0RbK+i/viHbfRBBLNQMON/aekffbmVo8clKrRq1SRswnag+e4cT+S6LuhUs84w8DFCLKOCLjkGPQwhQigzBZFMrGaYnn+b814Id/PoR+u0t5rKPPju3eJYZQgdJois3RzUKJZjBcNIw6jbKUsuOYXOsxvST4KHlRhyKyLolW6re9gU6jwtRi0yhHUzpKXO6PiChFRpuBIsSz1djp9uCH/3cYLo+EHcc78N+3LYZJr8XN//0RGjr6UWYx4tr5ZRG/rsgCjBWguNwebDl0FpdPK4IlW5eUAlmhPC8Lnf0OJYMyLUQgcPOlVWizDeHWy6Yk/JyAwB2sp5eYodPw9/HxhgEKEWWc0VqMhXgOa2uzDcHlXUv4tK0XX9zwNxSbDfi0rRfFZgNe+qdLAzYsDJcIsM6Nsanhk9uO4ufvnMDqBeX42dcX+u39k/i22jKLEQeabcr1TwuRQSnNNeI/vrIg4ecj+AenszniflxigEJEGactjJHqoki2s9+B3iEnzEZd1O/X1CXPASkxG1BsNuBgSw86+x0oNOnx0j8uQXVRdMsL4exo3GYbwnM7GgAAbx1sQ5/dlZQZKMLwJZtpabJbsH9xNCfIjk/MeRFRxmkNY1M6s1Gn1E/EuquxGPU+s9SMP9x5Gb6yqAKzrGZs/MclmFEa/c3Rt2Fg6AzKU9uOKqP07S4Pth5qw7kodk+OltiPB5ADIkt29IFePPlnUFggOz4xg0JEGUfZNTd39Bt0ZUE2OvsdaDw/gJpJlqjfr9mbQZmUl4VsvTZuSxliWag9RAbleHsvfr+nEQCwbGYxth89h9f2t2DQKXcwJbpIFgjMoISqP0kF/y0OOANlfGIGhYgyTlvP2BkUQA5QAKCxK9YMivzzk/Lj26EiCj07+uxwe0aO5H/szSPwSMDKOaX4t+vmAADeP9aBk96JrsVJXuIJVX+SCmUWI74wrwxfWVQxai0SpS9mUIgo4ygZlDFmblR6A4rG84MxvZ9Y4pkU5xbaQpM8st0jAZ399oBC27rT57Hl0FmoVcDDn78A00tyMKcsF4dae5Sun6Qs8fgFgdODzEBJFZVKhZ/fdFGqT4NiEFEG5ZlnnsH8+fORm5uL3NxcXHbZZXjjjTeU5yVJwtq1a1FeXo6srCxcddVVOHjwYMBr2O123HvvvSgqKoLJZMLq1avR1NQUn6shognP5fYoNRhj7fkStwyKWOKJcwZFq1Erha4i6BL+sEf+d/PvL6rA9BK5zmX1heUBxyRjiafYbFBG8qdTBoXGv4gClIqKCvz4xz/Gnj17sGfPHlx99dX44he/qAQhjz32GJ544gls2LABu3fvhtVqxcqVK9Hb26u8Rm1tLTZv3oxNmzZhx44d6Ovrw3XXXQe32x3fKyOiCamjzwG3R4ImjD1fKvO9AUoMw9o8Hgkt3XLwEO8MCuDXDj3sHE92yMs4V8woUh67foEvQFGr5P18Ek2jVmHJ1AJYsnRYUBF9HQ/RcBEFKNdffz2uvfZazJw5EzNnzsSPfvQj5OTk4MMPP4QkSXjqqafw6KOP4oYbbkBNTQ1eeOEFDAwM4KWXXgIA2Gw2PPfcc3j88cexYsUKLFy4EBs3bsSBAwewbdu2hFwgESWHJEn4f7/eha8/+yHsrtT9wtFq87X8jrXny2QlgzIIT5Aaj3Cc67PD4fZArUrMGHffnkGBAYrYQ0hcAyAHSIur5ImtBSYD1EnY8wYAfvMPS/DBI1cjLwkBEU0cURfJut1ubNq0Cf39/bjsssvQ0NCAtrY2rFq1SjnGYDBg2bJl2LlzJwCgrq4OTqcz4Jjy8nLU1NQoxwRjt9vR09MT8EVE6eVsjx3vHDmHD0524rcfnknheYRXfwIAZXlGqFWAw+VbFoqUmIFizTUmZFpplXdnYP9NDQcdbmU2ipiIK4hlnmhG60dLo1YhW8+SRoqviP9rOnDgAHJycmAwGHDnnXdi8+bNmDNnDtra2gAApaWlAceXlpYqz7W1tUGv1yM/Pz/kMcGsX78eFotF+aqsrIz0tIkowfzrOJ7+6zH0DDlTch6tYQxpE3QaNcosolA2umUeUSBbkZ89xpHRmVIkv+4pvwyKWO4xG7XIGzZ3ZM3iStx2WRW+/fkLEnI+RMkScYBywQUXYP/+/fjwww/xL//yL7jttttw6NAh5fnhO2dKkjTmbppjHfPII4/AZrMpX42NjZGeNhElmP8NvmvAiV+9dzIl5yGKSf3nYIymssAboERZKJuoAllBLOH4Z1DEn6cUmkb822nUafD9L9bgsxeUJOR8iJIl4gBFr9dj+vTpWLx4MdavX48FCxbgpz/9KaxWKwCMyIS0t7crWRWr1QqHw4Gurq6QxwRjMBiUziHxRUTppakrsNX2v99vQHvP6HvIJIKYgRJOBgXwL5SNrtVYmYGSoF16xRLO2R47Bh1ybY+oRxE7MhNlopgXTCVJgt1uR3V1NaxWK7Zu3ao853A4sH37dixduhQAsGjRIuh0uoBjWltbUV9frxxDROOTyKB89eJKLJych0GnG0+9fSzp5xHOmHt/SqtxtEs8Cc6g5GXrkGuU6zvE0s7p8yKDwgCFMldEAcp3v/tdvP/++zh16hQOHDiARx99FO+++y5uuukmqFQq1NbWYt26ddi8eTPq6+vxjW98A9nZ2bjxxhsBABaLBbfffjseeOABvP3229i3bx9uvvlmzJs3DytWrEjIBRJRcoglkskF2XjkmtkAgJd3N46Y35FovjH34WVQQrXxhitRQ9oElUqFqsLAQlmRQakqTJ/R8kTxFlHZ9dmzZ3HLLbegtbUVFosF8+fPx5tvvomVK1cCAB566CEMDg7irrvuQldXF5YsWYItW7bAbPZtlvXkk09Cq9VizZo1GBwcxPLly/H8889Do9HE98qIKKnEEkllQRYWVRVgltWMT9t6cbDFlpD222AkSYp8icdbgyKWqCJ9v6YEZ1AAudX4QLNNCUyUAKWAGRTKXBEFKM8999yoz6tUKqxduxZr164NeYzRaMTTTz+Np59+OpK3JqI05nJ7lMBA1HRMLTbh07begO6TROsacMLhknf2LRljo0BBnG+rbRBOtyeiVuHuAScGvHUhicqgAH6zUM73w+HyoMmbrZpSxAwKZS5uFkhEMWu1DcHtkaDX+kazi+LOUx39o/1onM9DzmYUmvQwaMPLyhabDTBo1fBIQEt3ZFkUsbxTlGOAUZe4LLBviWcAzd2D8EiAUadO6qwTomRjgEJEMRMFphX5Wcr0UiVA6UxegBLJkDZBpVKhIspNA5OxvAP4lnJOdw4odShVBSNbjIkyCQMUIoqZKJCt9BtWJpYfkhmgtEZYICtEUih79GwvBhwuAH5D2hK4vAP4Psvm7kEcb+8DwBZjynwMUIgoZiLzUOGXSRATUJu7BpW6kERTOngiLMoNd1fjlz46g1VPvofVG/6GQYc74S3GQonZAKNODbdHwgcnOgGwxZgyHwMUIoqZKNqs9OsqKc4xwKTXwCNFP6U1Um0RjLn3F86uxrsazuPf/1QPADje3oefvPlpwoe0CSqVStmTZ6c3QJnMFmPKcAxQiChmjd5Mgv8Sj//8jmQVyopOonDH3Au+cffBa1Baugdx12/r4PJIuLAyDwDw/M5TSjYj0QEK4OvkGXTKXUPMoFCmY4BCRDETmQdxoxeqvbUTDckKUJQMSmQBg9jorylIBmXI6cY/v7gHHX0OzC7LxUv/tAS3XlYFAOgZkmtREr3EA/gCFOX7AmZQKLMxQCGimAw53WjvtQMYuaOvMr8jSbNQYq1B6ex3oN/uCnhu875m1Df3oMCkx7O3LEK2XotHrpmNqX4zSJIToPjeT6tWoTwvOcPviFKFAQoRxUR0spj0GuRn6wKeS2YnT5/dhV5vcBFpgGLJ0sGSJZ/78HqZk+fkrpm/WzhJCWSy9Bo8+dULodeoUV1kQq4x8LoTwT+DUpGfBW0EA+WIxqOIJskSEQ3nW97JHjGXI5mzUET2xGzQIscQ+T9tlQVZsDU70Xh+ELOsvh3TQ+21s6AyD9vuX4YsfXK26Zjil0HhHjw0ETAEJxrnTnf24/m/NcDlTk4r73CisHT48g6Q3FbjaJd3hFCdPM3d8uuWBymEnVyYjeIkTXMtsxih9Q7BG16PQpSJGKAQjWNDTjdufu4jrH39EN6ob0vJOTT5TZEdzr/VONrdgsMlWn6jDlBCzEJpSfBuxeHSatTKOTKDQhMBl3iIxrFfvHNcGZJ27GxvSs5BjHuvDLKzrmg1PtTag9Od/ZhekhO393W5Pdh2uB1v1rfikyYbTno7hSKdIitUBhl3P+R045y3ADgZhbBjuWRKARo6+nHxlPxUnwpRwjFAIRqnGjr68cvtJ5Xvk7lrsD/fmPvgN/DqIjlAiVercVe/A7/54DR+t+uMMvdEmFyQjS8vqojqdUWA1eSXQRHLRkadekQBcCqsu2EeHvjcTJSY2cFDmY8BCtE4JEkS/v1P9XC4PcjL1qF7wInTCV5CCcW3UWDwuoh4txrf87u9+NtxeUBagUmPLy+qwGXTCjF/kgWFOdHXg1T67ccjSRJUKlXA8k46bMynUasYnNCEwQCFaBx6o74N7x/rgF6jxo9vmIc7N+5VdrlNpj67C10DTgAjh7QJ8Ww1liQJB5psAIAffHEuvnpxJQza+HTRiBqTAYcb5/sdKMwxoMkboAQrkCWixGKRLNE49PiWIwCAO6+ahs/MLAYAdA84YfMGC8kisid52TqYQ8wCiec02e4BpzK99SuL4hecAIBRp0FprpyBEZ1J6VIgSzQRMUAhGmfae4dw4lw/VCrg9iuqka3XKq2up88nN4tywjvErLoodFeJWOJp6R6E3eWO6f0avFmYMosxIfNHhrcaM0AhSh0GKETjTN2pLgDABaVmZfrplCSPlBeOnZUDlBmjdOcE7Gp8PvhmfOESmw4mag7I8FbjZi7xEKUMAxSicWbPaTlAWezXajrZu3FcsutQjnszKKO1D8dzV2PRqTRaxiYWSoCiZFBCD2kjosRigEI0zigBSlWB8liqMijHlQyKedTjphbLAYVYEoqWCHCmJGhQmf8sFEmSlAxKsCF0RJRYDFCIxpFBhxsHm+UulkVVvgxKVZHIoCQvQHG5PUrh61gD2EQAc7w9tgBFZIgSNUnVf4mno88Bh8sDlQoojXL4GxFFjwEK0Tiyv7EbLo8Ea64x4Lf6Ku+NNRmb8glnzg/A4fbAqFOPWUQqAphjMQQokiQpAVGil3haugeVOpQSswF6Lf+pJEo2/ldHNI7UnT4PAFg0JT9gcJhY8mjvtWPA4UrKuYhsyLTiHKjVow8xm1EqBygn2vsgSVJU79fl12I8OchY/Xiw5hqh06jgdEvY611KYwcPUWowQCEaR3z1J4F7sViydUpHT6I35RNENmS0Dh5hSqEJGrUKvXYXzvbYo3q/UwluMQbkSa0iIPnwpBwMskCWKDUYoBCNEx6PhDpvgHLxlIIRzye7UPZE+9gdPIJeq1aWoaKtQ0l0i7Eglnl2Ncjj9JlBIUoNBihE48TR9l70DrmQrddglnVk18zkwuS2Gh9TApTRO3gEXx1KdLsuJ7rFWBB7ConlpHTYxZhoImKAQjRO7PEOaFs4OQ9azcj/dJOZQfF4JKVlOJwMiv9xsWZQEtViLAzfU6jcwgCFKBUYoBCNE3VB5p/4E4WjyQhQWmyDGHC4odOowl5yEYWy0XbynEpwi7FQOWxXZtagEKUGAxSiCETbgRIPu0/JRZv+E2T9iV2Dk7Efj8iCTCk0QRckmxPM9GJ5KehEmAGKJEnweCTlz4luMRYqh3UIcYmHKDUYoBCF6dV9zbjgX9/E24fPJv29j7f3oalrEFq1CgsnBw9QRCajuWsQDpcn4ecD+LIi4ZhWIgcWnf0OnO93jHps75ATy/7jXXzlvz6Ay+1B14ATvQluMRb8Xz/HoEWuUZvQ9yOi4BigEIXB45Hw5LajcLg9eOtgW9Lf/7WPWwAAn5lZjBxD8BtmcY4B2d5N+cSI9kQRAcr04vADlGy9VumIGasO5f8+acWZ8wOoO92FP9Q1KdmTRLYYC/nZOpi871GeZwyYN0NEycMAhSgMO090KrUdpzqSu9+NJEl43RugrF5QHvI4lUql/Paf6ImySgdPaXgdPIKvDmX0Tp4/1jUpf35y61Ecbu0BkPgWY0D+HMUyD1uMiVKHAQpRGH770Wnlzydj3JF3OEmS0N4zhCGnO+jz9c09aOjoh1Gnxso5paO+lriBn47zOfqTJCmqDIr/8aNlUE519GPP6S6oVfJk1/ZeO57adgxA4utPBNFqzAJZotRhgEI0hrM9Q9hyyFd30tFnR++QM26v/0Z9Gy5Z9zZqvvcWrv3p+3jklU9wpM2XYXjt42YAwPLZpTCFWN4Rqoti3/NGaOkexAs7T2HQERg4neuzwzbohFrl26U4XCKDMlqA8r975ezJlTOK8ci1swDInzmQ+BZjYeHkPADAgoq8pLwfEY3EAIVoDL/f3Qi3R8LiqnwU5RgAxHeZ58OT8sRSl0fCodYe/G5XI7727AdoPD8Aj0fCnz9pBQBcPz/08o4wu0xechFLIrF4YutRfO+1g/j+6wcDHhfBU2VBNoy6yOpBxpqF4vFIeGWvHJB9eVEFrp9fjjllucrziW4xFu5cNg3b7l+GryyuSMr7EdFIDFCIRuH2SNi0uxEAcNOlk1FdJKf+T3bEnqEQmrvkgtZvrZiJX958EeaW56JrwIl/frEO7x07h1bbEMwGLa66oHjM15pbLt/MP23rVVp0oyUm0m7a3Yi9Z+QZLE63B4+9eQQAsChEN9FoRKtxq20oaBbqw5OdaO4ehNmoxco5pVCrVfjONbOU55O1xKNRqzC9JIcFskQpxACFaBTbj7ajuXsQedk6XFNTptwgG+JY4yE6bhZUWvD5mjL86tbFKMrR43BrD+767V4AwOdqrGFlK6qLcmDUqTHgcON0jJsG+m/q96+b6+Fye/D028dwoNkGS5YOD/sFDuGyZOtQbJazUCfOjfwMRXHs6gXlyvVeOaMIdyybijWLK8LamJCIMgMDFKJR/PbDMwCAL19UAaNOo9R4xDVA8WZQ/Aszn7l5EXQaFQa89R+jde/406hVuMAqZ1EOtUS/zCNJEtp6hgDIG/0dau3BI68cwIZ3jgMAfvR3NSjNNUb12iLIOHY2sJOnd8iJv9TLy1lfXuRbWlGpVHjkmtl47MsLoFYzo0E0UTBAIQqhuXsQ7xxpBwB8fclkAL4lhlNxClBsg0702r2b0vl1jFw8pQDfX10DACgxG7B0WmHYrylqNg612mI6LzHs7RFvpuQPdU3wSMCXLizHdWHUw4QiApSjwwKUD050YsjpQXWRCRdW5kX9+kSUGTgikSiEl3edgUcCLptaiGne9lgRoJzs6IckSTHXKIjsSaFJP2IA2Y1LJmNSfhbKLcagmwOGMsdbKBtLBkVkT/Kzdbj1sil4dX8LPm7sRpnFiO9/sSbq1wWA2d4A6nBrYIByyFvYu6gqn7UfRMQAhSgYp9sTUBwrVBVmQ6UCeodc6Ox3KF090WrqkutEQu33smzm2IWxw80pFxmU6AMUUX9SmmuERq3Ck2sW4PGtR/HPV06FJUsX9esOPz//IE8EVP5dO0Q0cXGJhyiItw+fRXuvHUU5eqyaY1UeN+o0KLfIwUQ8lnlEgWw8J5ZeYM2FSiUHGWJ+SKTO2uQMiqgzmVqcg5/feBEWxGHpZWapGWoVcL7fEVCIKwIqEcAQ0cTGAIUoiN9+JBfHrllcCb028D8T/2WeWIklnngGKDkGrTLQLNp5KGe9SzzWKAthR2PUaZQlM3F+tkEnmryfxWwrAxQiYoBCNMLpzn68f6wDKhXw9Usmj3g+nq3GSgYlxBJPtOYodR7RBSiiBqU0N7YlrFCGL0OJ85yUlwVLdmxLSESUGRigEA3z0i45e/KZGcXKpnH+lAAlyByPSCViiQfwTZSNtlBWqUGxxD+DAvh1GnnPT6k/4fIOEXkxQCEa5i8H5FkcwbIngF+rcRx2DFaWeOKdQYmxUFYs8ZSaExSgDDs/pf6EBbJE5MUAhciP3eVWaiEWVQUf5e6/xBPLOPlBhxud/Q4AQEXeyExNLOaUWQDI01pD7ZI8GqUGJUEZFNFqfKqzH/12l7LEwwwKEQkMUIj8NJ4fhCQB2XoNinL0QY+pyM+CVq2C3eVBq/dGHg2xvGM2aJGbFd+O/9JcAwpMerg90oiBaGNxuT1K909JgmpQinIMKM01QJKAA802HDsr723EDAoRCQxQiPycOS8v21QVmkIOC9Nq1JhcKGc8Ymk19p+BEu/BZCqVakSdR7g6+hzwSPLY/CJTYgIUwBeMvP5xCxxuD8xGLSrivNRFROMXAxQiP6c65KBhSuHoSy7VhbG3GieqQFaItg5FdPCUmA0J3ftGLPO89nELADlg4QRZIhIYoBD5OePdAXjyWAFKHDp5ElUgK1xQKnfyRLrEoxTIJmAGij8RQPUOyXsRzebyDhH5YYBC5Ed05ohBZ6FM9254d7Al+g35Ep1BEed4IsIgqj3BM1CE4fUmLJAlIn8MUIj8nO6UMyhVQeaf+Lt0qry78N4zXej37kYcqURnUKYWy0HWuV47bIPOsH+uLYFTZP1VFZqQ7bdBIgtkichfRAHK+vXrcfHFF8NsNqOkpARf+tKXcOTIkYBjJEnC2rVrUV5ejqysLFx11VU4ePBgwDF2ux333nsvioqKYDKZsHr1ajQ1NcV+NUQxcLk9SuFqVdHoGZSqwmxU5GfB6Zawq+F8VO+X6AyK2ahTsiAnz/WFPO5Akw17z3Qp34shbSUJDlA0ahVmWeVlKK1ahRmlOQl9PyIaXyIKULZv3467774bH374IbZu3QqXy4VVq1ahv9+XQn7sscfwxBNPYMOGDdi9ezesVitWrlyJ3l7fOnhtbS02b96MTZs2YceOHejr68N1110HtzvyeQ1E8dJqG4LTLUGvUY+ZPVCpVLhyRhEA4P1jHRG/l9PtUWo9EpVBAaDseXO8fWSAcq7Xjm+9vB/Xb9iBNb/8AGe82aNE7sMznFjWmV6SA4NWM8bRRDSRRBSgvPnmm/jGN76BuXPnYsGCBfj1r3+NM2fOoK6uDoCcPXnqqafw6KOP4oYbbkBNTQ1eeOEFDAwM4KWXXgIA2Gw2PPfcc3j88cexYsUKLFy4EBs3bsSBAwewbdu2+F8hUZjE8k5lQRY0YXSvXDG9GACw4/i5iN+rzTYEjwToteqEtvKKAGV4HcrmfU1Y/vi72LyvGQDg8kjYcqgNQPKKZAHfZyiCPSIiIaYaFJtNLhAsKCgAADQ0NKCtrQ2rVq1SjjEYDFi2bBl27twJAKirq4PT6Qw4pry8HDU1Ncoxw9ntdvT09AR8UWaRJAkNHf041NKDQy09OHa2N6YprdEQBbJVYxTICkunFUKlAo6e7VNu6uFqFDNQ8rIS2so7zVuHcsJviae5exAP/P5j9Ay5MLc8Vxnpv+3wWQBy8AQAVktii2QB4PM1Vvzlm1figVUXJPy9iGh8iXp8pSRJuP/++3HFFVegpqYGANDWJv8GVlpaGnBsaWkpTp8+rRyj1+uRn58/4hjx88OtX78e3//+96M9VRoHfvPBaXzvtcBapW8snYK1q+cm7RxEi3HVGC3GQr5Jj3mTLPikyYYdxzrw94sqwn4vpUA2QfUnwvQSucbDP0DZ1dAJjwTMLc/Fn+6+HC3dQ/jdrjPYfaoLbbYh9HjbfhNdgyKwe4eIgok6g3LPPffgk08+we9+97sRzw0ftiRJ0pgDmEY75pFHHoHNZlO+Ghsboz1tSlNiecGSpVNGzG/e1wyn25O0cxBTYcfq4PEnliZ2HB+7DqVnyIndp85jV8N51J2Wi1ITPTl1WomcQTnTOaB8lntOye992dRCZSruBaVmuD0SXt4t/7eVpdPAbIjv+H0iokhE9S/Qvffei9deew3vvfceKip8vzVarVYAcpakrKxMeby9vV3JqlitVjgcDnR1dQVkUdrb27F06dKg72cwGGAwJD7dTKnhcnuw70w3AODlOy7FjBIzlqzbho4+Bz482YkrZxQn5TyUDMoYHTz+rphejJ+/cwI7jneEDLIPNNmw8cPTeO3jFgwO27gv0RkUa64R2XoNBhxunO4cwPSSHCU4WjzF99/f8tklOHK2F5t2n5F/zmLkVFciSqmIMiiSJOGee+7BK6+8gr/+9a+orq4OeL66uhpWqxVbt25VHnM4HNi+fbsSfCxatAg6nS7gmNbWVtTX14cMUCizfdrWiwGHG2ajFjNLzNCoVVg5Rw5236gPvuwXrSNtvegLMrdEkqSwZ6D4u6gqD1k6Dc712nEkyMTWb/5uH67fsAMv72nEoNONMosRU4tNmFpswsLJebhuQXn0FxMGlUrlVyjbB9ugUznPRVUFynEr5si/QLTafGPuiYhSKaIMyt13342XXnoJf/rTn2A2m5WaEYvFgqwsecOz2tparFu3DjNmzMCMGTOwbt06ZGdn48Ybb1SOvf322/HAAw+gsLAQBQUFePDBBzFv3jysWLEi/ldIaW/3KXmOyEWT85WC0WtqrPjdrjPYcrAN/98Xa8LqqhnLe0fP4db/2YWrZ5Xgf75xccBz53rtGHS6oVYBFfnhBygGrQZLphbg3SPnsONYB2ZZffUU3QMOZZ+ZL15YjpsvrcLiqvykZyamFZtwoNmG4+190GvVkCR5r6FivyDkwoo8FOXo0dHnACBnUIiIUimiDMozzzwDm82Gq666CmVlZcrXyy+/rBzz0EMPoba2FnfddRcWL16M5uZmbNmyBWazWTnmySefxJe+9CWsWbMGl19+ObKzs/H6669Do+EchIloj1hyqPItOVw2rRCWLB06+hzYcyq6QWjDbfxQLtT+66ftIwaXnfJmT8rzsqDXRlaadcV0uQ7lvWHzUPY1dgMAphaZ8NOvLcTFUwpSsmzin0Gp89af+GdPAECtVmH5LF9xezJajImIRhPxEk+wr2984xvKMSqVCmvXrkVrayuGhoawfft2pctHMBqNePrpp9HZ2YmBgQG8/vrrqKysjMsF0fgiSZJy01w8xXfT1GnUWDFbvmHGY5mns8+Ov37arnz/u11nAp4Pdw+eYESNzO6G83C4fEW9oq7mwsl5Eb9mPPnvybPntBzs+defCGKZB2CAQkSpx714KKWauwfR1jMErVqFCyvzAp77fI1ch/LWwbaYZ6K89nELXB4JOd7OlD/UNWHIr2BVTFEdaxfjYGaW5qDQpMeg041PmrqVx/d5x8dfNHlkMJBM00SA0t6H/d6szsVBApQrphfB4M0eJXqjQCKisTBAoZQSLa9zy3ORpQ9c4rtyRhFMeg1abUP42O/GH40/1sl7Pd2/cibKLUZ0DzjxRn2r8rwvgxJ5gKJSqXDpNHnzwJ0nOgEAHo+E/d4MysIUZ1CqCrOhVgF9dheGnB7kZeswtWjkvjdZeg2+cfkUVORnYUl1YQrOlIjIhwEKpZRYchheEwEARp0Gn51VAgB482D0yzyHW3twsKUHOo0Kf7dwkjI59aWPfMs8viFtkS/xAPJMEQDYeUKuQzl+rg+9dhey9RpcUGoe7UcTzqDVYLJfZ9Iiv2Lk4R65ZjZ2PHx1QAEtEVEqMEChlBIZlGBLDgBwTY08T2fbobNRv8f/erMny2eVIt+kx5qLK6FRq7D7VBc+bevB+8fO4YR3M71wp8gOd5k3g7L3TDeGnG7s9Rb+zq+wQKtJ/X9molAWABaF+KyJiNJJ6v/lpAmrZ8hvJkeIm6a48Z8414/uAUfE7+F0e/DqfnlDvC97R9GX5hqx0luA+6Wf/w23PLcL/Q43zAZtVEWygNypU5prgMPlwd7TXUqBbKrrTwRRhwIAF08Zma0iIko3DFAoZfae7oIkAZMLslFiDt41UmDSo9o72VW07Ubi3SPn0NHnQKFJj2UX+CbS3nSpvMwz5PQgx6DFbZdV4bV7r4BRF12ru0qlUpZ5PjjZib1pUiArTPdmUPQaNeZNsqT4bIiIxsbNNighXt3XjPK8LFxSHfq39bog80+CWTg5Dw0d/dh3phufvaAk7HPweCT87O1jAIC/X1QBnd9SyxXTi/CTv58HALhufjlMcdh3Zum0Iry6vwVvHWzDMe+SUapbjIVLqgug16qxfFZJ1EEYEVEyMUChuDt2the1L++H2aDF7n9dEfSG2Nw9qBSpjhbEAMDCyfl4ZW+z0rYbrv870IoDzTaY9Br882emBjynUqnw1YsnR/R6YxHLUUfP+upZinLSo9h0SpEJH3zn6rgEYkREycAlHoq7+hYbAKDX7sKOYyN3+R10uHHHi3vQ2e/AnLJcfPHCSaO+3kXeLMT+M91hz0NxuDz4zy1HAAB3LJuWlEChsiA7YHfihcPmuqRaYY6B2RMiGjcYoFDcfdrm2zRv+BRYSZLwnVc+QX1zDwpMejx766IR80+Gu6DUjGy9Br12F44PG1Efyu92ncHpzgEU5Rhw+xXVY/9AnIg6FAC4aIylKyIiCo0BCsXdUb8AZdvhs3C6fePfn9vRgD/tb4FWrcIvbroorI35tBo15lfIhZ2ifXc0fXaXUnty34oZSV3WEMs8ALCwkgEKEVG0GKBMMB6PhG2HzuIPexrxhz2N+GNdE5q7B+P6Hke8AYpKBdgGnfjAO121pXsQj70lL7v8+/VzcOnU8KeVim4Y0b4biiRJ+Mkbn6Kz34HqIhO+dnFy93i6fHoR9Fo1Ck16zCpL7YA2IqLxjBVzE8yfD7Tim7/bF/DYtGITtn5rWcjpopHoGXKixTYEAPjCvDL8+ZNWvFHfhs/MLMZT247C4fLgkuoC3HJpVUSvu9AboOwdpVBWkiT855YjeNG7a/F3r50d0LmTDKW5RvzvnUuRpVcn/b2JiDIJ/wWdYHYcOwdADko+e0ExsvUanDjXjw9Odsbl9cXyTpnFiK96sxdbD7XhcGuPsh/Od66ZBZUqsmBI7GdzrL0PtkFn0GOe/utx/PydEwCA76+ei5V+u/Mm07wKC6aXMHtCRBQLBigTzB5vDcd3r52NX/+/S5Tpqr/96HRcXl9Mhp1ZasalUwthydKho8+BO16sg0cCPj/XGtXwsqIcg7KfzMdBBra9+MEpPLH1KADg0Wtn47alU6K+BiIiSj0GKBNIZ58dJ8/Ju/Yu8naY3LhEngWy5eBZtPcMxfweov5kltUMnUatZDHOnB+ARq3Ctz9/QdSvLdqNg9Wh/HL7SQBA7YoZ+KdhM0+IiGj8YYAygYjJrTNKcpCXrQcAzLLmYlFVPlweCb/f0xjze4gAZaZ3B99raqzKc1+9uDJg07pIhapDaeoaQHP3ILRq1YiBbEREND4xQJlAlNHywzbmu/ESOYvyu12NcIc5CC0YSZKUJZ4LrHKAcsWMIpRZjLBk6VC7fEbUrw34d/J0BZznrobzAICaSRZk61n3TUSUCRigTCCi/mRRVeBo+S/ML4MlS4fm7kG8d/Rc1K9/rteO7gEn1Cpgunf3XINWg//75pXYdv8ylOQG3xAwXLPLzLBk6dAz5AoYe//RSTlAWTLGyHwiIho/GKBMEENONw40ySPoLx6WQTHqNHEplhUTZKcUmQJGqheY9Cg2xz5qXqtR47PeHYm3Hj6rPL7rlDdAmcoAhYgoUzBAmSAONNvgcHsCumH8fd27zPPOkXMYcLiieo+jYnmnNHEttstny0W3bx9uBwC09wyhoaMfKtXIzBAREY1fDFAmiD2nvPUnVflBZ5BML8lBsdkAt0fC4dbeEc+H49NhBbKJsOyCYmjVKhxv70NDR7+SPZltzYUlS5ew9yUiouRigDJB1J2Wb+TDC2T91ZTnAgAOencjjpTIoMyyJi5AyTXqlBH5bx8+q9SfXML6EyKijMIAZQLweCSlQHbxlNA38rnl8oZ8B5t7In4Pt0dSApSZCQxQAGDF7BIAwNZDZ5UOHhbIEhFlFgYoE8DJjj50Dzhh1Kkx15slCaZmkvxcfRQZlMbzAxhyeqDXqjGl0BT1uYZD1KHsOd2ltDUzg0JElFkYoCTQoMONNtuQ8uVye1JyHqL+ZEFF3qgb2IkMytGzvXC4wj9XSZLwX+/Je+DMLM2BJg6bDo6msiAbs6xmZRbK9JIcFObE3iVERETpg1OtEqTx/ACu/en76LX7OmJmlubgL9+8Etok73IrRsOL8fahVORnwZKlg23QiaNne1EzyTLma0uShO+/fgi/29UIlQq457PT43HKY1oxu1QpymX2hIgo8zCDkiC/39OIXrsLKhWg9WYUjp7tw9uftif9XD5plpdsFlTmjXqcSqVSlnnCKZSVJAnr3/gUz+88BQB47O/n4/M1ZTGda7hW+O1UzPoTIqLMwwAlATweCf9b1wQA+NnXFuL4umtx57JpAIDffnQmqecy5HQrxavzK8bOiIhlnvowCmUf33IUz74nb9K37u/m4SuLK2M408jMn2TBtGITcgxaLJ1WlLT3JSKi5GCAkgAfnOxEi20IZqNW2c1X7Hfz3tFzONM5kLRzOdTaA7dHQlGOAdYwRs2LItqxCmV/9vYxbHjnOABg7fVzlF2Rk0WtVuGPdy7Flm99Ji5TaomIKL0wQEkAkT25fkG5MvJ9cmE2PjNTHtP+0q74ZVG2HTqLzfuaQj4vxtvPr7AEHdA2nKg7OewNbIL55fYTeGLrUQDAd6+dhW9cXh3pacdFvkmP8ryslLw3ERElFgOUOOsdcuIv9a0AoOxvI9zkzTL8YU9jRF0yoXT22XHnxjp86+WP8VKIpaMD3vqTcApeAaC60ASTXoMhpwcnz/WNeP5P+5vx4zc+BQA8uGom/vkz06I8eyIiotAYoMTZGwfaMOT0YGqxCQuHFaUun1WC0lwDOvsdeOtgW8zvtfXQWbi8WY7vvVaPPd6x7/6UDEqYAYparcKcUZZ5XtnbDAD4f5dPwT1Xz4jqvImIiMbCACXO/uhd3vnyoooRSypajRpfvVjOosSya7DwRr0c5ORn6+B0S7hz41602gaV5wccLhxrlwtk54VRICuMVih7qFV+7PoF5VGfNxER0VgYoMTR6U558zqVCvi7hZOCHvO1iyuhVgEfnjyP0539Ub+XbdCJnSc6AAAv3r4Es6xmdPTZcceLdbC73ACAQy098EhAaa4BpWEUyApzQ+zJc67XjnO9dqhUid1vh4iIiAFKHL26rwUAcMX0IpRZghdvludlKYPF3olhJsrbh8/C6ZYwszQHNZMs+NWti5GfrcMnTTb8fo+cxfnEu7wzb1JeRK8t6lUONvfA41coe9ibPakuMiFbzxl/RESUOAxQwvRmfSv+7dV6nOoInvWQJAmvfSzXZ3zxwuDZE+GqC+TN7t49ei7q8xHLO2IwWmVBNmpXzAQA/PLdE3C4PEqBbDjzT/xNL8mBXqtGr92FU35ZHrG8M6cs9H4+RERE8cAAJQxDTje+/YdP8OKHp7Hqqffws7ePKcsowqHWHpw41w+9Vo3PzS0N8Uqyqy6Q240/ONGJIad71GOD6be78J43uLmmxqo8/tWLK1GUY0Bz9yBe3deMT5q6AURWfwIAOo0aF3oLfD9q8BXeHmqRA5TZDFCIiCjBGKCE4d0j7ei1u6BWAQ6XB09sPYprfvo+mrp8A9de+1he3rn6ghKYjbpRX++CUjPKLEbYXR58cLIz4vN550g77C4PphRmB9SCGHUa3PGZqQCAn759DCe92Z55YXbw+LtsaiEAYOcJ3/kpGZRRdkQmIiKKBwYoYRDBxz9eORVPf30his0GnDzXj+9urockSfB4JPz5Y3n2yeoLx+5uUalUShZl+5HIl3n8l3eGdwrduGQy8rN1aO4ehCQB5RYjiqLY6XfpNDlA+eBEJyRJwqDDrcxFmcsMChERJRgDlDH02V14+7BczLp6QTmuX1CO399xGfQaNd47eg5v1rdh75kuNHcPIsegxdWzSsJ63WUzvXUoRyIrlB1yupXiWv/lHcFk0OIfr5yqfB/p8o5w4eQ8GLRqdPTZcby9D0fO9sIjAUU5eo6WJyKihGOAMoath9pgd3kwtciktN9WF5lw5zI5CPjBnw9h0+5GAMCqOaXKaPuxXD69EFq1Cqc6B0IW3gbzp/3NGHC4UZGfFbL49ZbLqpBrlLts5lfkhf3a/gxaDS6eIncb7TzRGVB/Es7IfCIiolgwQBnDa/vl5Z3rFpQH3Jjv+ux0VBZkodU2pAxnuz6M5R3BbNRh8ZR8AOFnUSRJwnM7GgAAt102JWSgkGvU4ftfnIsFFRZ8KcQ8lnBc5rfMc6hV7ghi/QkRESUDA5RRdPU78P4xeRja6mGTU406Db6/eq7yfX62DldML4ro9UW78Tth1qHsON6Bo2f7YNJr8NVLKkc99u8WVuBP91yBSTFspicClA8bOnGwhS3GRESUPAxQRvGX+la4PBLmlOVieknOiOevnlWKVXPkluLrF5RDp4ns4/ysN0D58GR47cb//b6cPfnK4krkjtEpFA/zJllg0mvQPeDEvjPdABigEBFRcjBAGcWfvMs7o3XmPL5mAX74pRo8+LkLIn79maU5SruxGFsv2Aac+PEbn2Lncfnx4+292H70HFQqeaO+ZNBp1MrUWwAwaNWoLjIl5b2JiGhiY4ASwu93N2JXw3moVcB188tCHmc26nDzpVVRZTRUKhWWz5azKG/Vnw147qm3j+KX20/gxv/+CPdt2oenth0DAKycXYqqwuQFCWKZB5D339FGmCUiIiKKBu82QdSd7sK/vloPALhv+UxU5Gcn7L2u8Y6q33KoDS63BwDg9kj48yetyjF/2t+ifH/7FdUJO5dglk7z1dWwQJaIiJKFAcowbbYh3LmxDg63B5+fa8W9V09P6PstqS5AfrYOXQNO7PKOlf/wZCfO9dphydLhf//lMtRMkgODCyvzApZckmF2Wa7Sssz6EyIiShYGKH6GnG7csbEO53rtuKDUjMfXLIBandiZH1qNGiu9hbZiQuzr3sm119RYsaiqAH+6+wr89h+X4H++cXHSZ5Bo1Cp8Y+kUTMrLwvLZo+8xREREFC8MUPy8d/QcPm7shiVLh2dvXQSTQZuU9xXLPG8dbMOQ060EKqK1WaNW4fLpRSgw6ZNyPsPdv+oC/O07V6M8hpZlIiKiSCTnDjxOrJprxS9vvgg5Bl1SC1GXTi+E2aBFe68dP337GGyDTpSYDVgytXDsHyYiIspAzKAM8/maMlwxI7KBa7EyaDVKN89/bT8BAPjC/DJoEry8RERElK4YoKSJz3uXeTyS/P3wybVEREQTScQBynvvvYfrr78e5eXy3jSvvvpqwPOSJGHt2rUoLy9HVlYWrrrqKhw8eDDgGLvdjnvvvRdFRUUwmUxYvXo1mpqaYrqQ8W7ZzGJkeTcanFyQjQsr81J7QkRERCkUcYDS39+PBQsWYMOGDUGff+yxx/DEE09gw4YN2L17N6xWK1auXIne3l7lmNraWmzevBmbNm3Cjh070NfXh+uuuw5u99jj3jNVlt63zPPFC8u5YzAREU1oKkmSpKh/WKXC5s2b8aUvfQmAnD0pLy9HbW0tHn74YQBytqS0tBQ/+clPcMcdd8Bms6G4uBgvvvgivvrVrwIAWlpaUFlZib/85S/43Oc+N+b79vT0wGKxwGazITc3c2ZzdPTZ8ZcDrVizuBJGbzaFiIgoU0Ry/45rDUpDQwPa2tqwatUq5TGDwYBly5Zh586dAIC6ujo4nc6AY8rLy1FTU6McM5zdbkdPT0/AVyYqyjHg1sumMDghIqIJL64BSlubPL+jtDRwoFdpaanyXFtbG/R6PfLz80MeM9z69ethsViUr8rKynieNhEREaWZhHTxDK+fkCRpzJqK0Y555JFHYLPZlK/Gxsa4nSsRERGln7gGKFarFQBGZELa29uVrIrVaoXD4UBXV1fIY4YzGAzIzc0N+CIiIqLMFdcApbq6GlarFVu3blUeczgc2L59O5YuXQoAWLRoEXQ6XcAxra2tqK+vV44hIiKiiS3iUfd9fX04fvy48n1DQwP279+PgoICTJ48GbW1tVi3bh1mzJiBGTNmYN26dcjOzsaNN94IALBYLLj99tvxwAMPoLCwEAUFBXjwwQcxb948rFixIn5XRkRERONWxAHKnj178NnPflb5/v777wcA3HbbbXj++efx0EMPYXBwEHfddRe6urqwZMkSbNmyBWazWfmZJ598ElqtFmvWrMHg4CCWL1+O559/HhoNu1eIiIgoxjkoqZKpc1CIiIgyWcrmoBARERHFAwMUIiIiSjsMUIiIiCjtMEAhIiKitMMAhYiIiNIOAxQiIiJKOxHPQUkHojM6U3c1JiIiykTivh3OhJNxGaD09vYCAHc1JiIiGod6e3thsVhGPWZcDmrzeDxoaWmB2Wwec5fkSPX09KCyshKNjY0Tbggcr53XzmufOHjtvPZUXLskSejt7UV5eTnU6tGrTMZlBkWtVqOioiKh7zGRd03mtfPaJxpeO699oknltY+VORFYJEtERERphwEKERERpR0GKMMYDAZ873vfg8FgSPWpJB2vndc+0fDaee0TzXi69nFZJEtERESZjRkUIiIiSjsMUIiIiCjtMEAhIiKitMMAhYiIiNIOAxQ/v/jFL1BdXQ2j0YhFixbh/fffT/Upxd369etx8cUXw2w2o6SkBF/60pdw5MiRgGMkScLatWtRXl6OrKwsXHXVVTh48GCKzjhx1q9fD5VKhdraWuWxTL725uZm3HzzzSgsLER2djYuvPBC1NXVKc9n6rW7XC7867/+K6qrq5GVlYWpU6fiBz/4ATwej3JMplz7e++9h+uvvx7l5eVQqVR49dVXA54P5zrtdjvuvfdeFBUVwWQyYfXq1WhqakriVURvtOt3Op14+OGHMW/ePJhMJpSXl+PWW29FS0tLwGuM1+sf6+/e3x133AGVSoWnnnoq4PF0u3YGKF4vv/wyamtr8eijj2Lfvn248sorcc011+DMmTOpPrW42r59O+6++258+OGH2Lp1K1wuF1atWoX+/n7lmMceewxPPPEENmzYgN27d8NqtWLlypXKHkiZYPfu3Xj22Wcxf/78gMcz9dq7urpw+eWXQ6fT4Y033sChQ4fw+OOPIy8vTzkmU6/9Jz/5CX75y19iw4YNOHz4MB577DH8x3/8B55++mnlmEy59v7+fixYsAAbNmwI+nw411lbW4vNmzdj06ZN2LFjB/r6+nDdddfB7XYn6zKiNtr1DwwMYO/evfi3f/s37N27F6+88gqOHj2K1atXBxw3Xq9/rL974dVXX8VHH32E8vLyEc+l3bVLJEmSJF1yySXSnXfeGfDYrFmzpO985zspOqPkaG9vlwBI27dvlyRJkjwej2S1WqUf//jHyjFDQ0OSxWKRfvnLX6bqNOOqt7dXmjFjhrR161Zp2bJl0n333SdJUmZf+8MPPyxdccUVIZ/P5Gv/whe+IP3DP/xDwGM33HCDdPPNN0uSlLnXDkDavHmz8n0419nd3S3pdDpp06ZNyjHNzc2SWq2W3nzzzaSdezwMv/5gdu3aJQGQTp8+LUlS5lx/qGtvamqSJk2aJNXX10tVVVXSk08+qTyXjtfODAoAh8OBuro6rFq1KuDxVatWYefOnSk6q+Sw2WwAgIKCAgBAQ0MD2traAj4Lg8GAZcuWZcxncffdd+MLX/gCVqxYEfB4Jl/7a6+9hsWLF+MrX/kKSkpKsHDhQvzqV79Sns/ka7/iiivw9ttv4+jRowCAjz/+GDt27MC1114LILOv3V8411lXVwen0xlwTHl5OWpqajLqsxBsNhtUKpWSSczk6/d4PLjlllvw7W9/G3Pnzh3xfDpe+7jcLDDeOjo64Ha7UVpaGvB4aWkp2traUnRWiSdJEu6//35cccUVqKmpAQDleoN9FqdPn076Ocbbpk2bsHfvXuzevXvEc5l87SdPnsQzzzyD+++/H9/97nexa9cufPOb34TBYMCtt96a0df+8MMPw2azYdasWdBoNHC73fjRj36Er3/96wAy++/dXzjX2dbWBr1ej/z8/BHHZNq/hUNDQ/jOd76DG2+8Udk0L5Ov/yc/+Qm0Wi2++c1vBn0+Ha+dAYoflUoV8L0kSSMeyyT33HMPPvnkE+zYsWPEc5n4WTQ2NuK+++7Dli1bYDQaQx6Xidfu8XiwePFirFu3DgCwcOFCHDx4EM888wxuvfVW5bhMvPaXX34ZGzduxEsvvYS5c+di//79qK2tRXl5OW677TbluEy89mCiuc5M+yycTie+9rWvwePx4Be/+MWYx4/366+rq8NPf/pT7N27N+LrSOW1c4kHQFFRETQazYgosb29fcRvG5ni3nvvxWuvvYZ33nkHFRUVyuNWqxUAMvKzqKurQ3t7OxYtWgStVgutVovt27fjZz/7GbRarXJ9mXjtZWVlmDNnTsBjs2fPVorAM/nv/dvf/ja+853v4Gtf+xrmzZuHW265Bd/61rewfv16AJl97f7CuU6r1QqHw4Gurq6Qx4x3TqcTa9asQUNDA7Zu3apkT4DMvf73338f7e3tmDx5svJv3+nTp/HAAw9gypQpANLz2hmgANDr9Vi0aBG2bt0a8PjWrVuxdOnSFJ1VYkiShHvuuQevvPIK/vrXv6K6ujrg+erqalit1oDPwuFwYPv27eP+s1i+fDkOHDiA/fv3K1+LFy/GTTfdhP3792Pq1KkZe+2XX375iHbyo0ePoqqqCkBm/70PDAxArQ78p06j0Shtxpl87f7Cuc5FixZBp9MFHNPa2or6+vqM+CxEcHLs2DFs27YNhYWFAc9n6vXfcsst+OSTTwL+7SsvL8e3v/1tvPXWWwDS9NpTUpqbhjZt2iTpdDrpueeekw4dOiTV1tZKJpNJOnXqVKpPLa7+5V/+RbJYLNK7774rtba2Kl8DAwPKMT/+8Y8li8UivfLKK9KBAwekr3/961JZWZnU09OTwjNPDP8uHknK3GvftWuXpNVqpR/96EfSsWPHpN/+9rdSdna2tHHjRuWYTL322267TZo0aZL05z//WWpoaJBeeeUVqaioSHrooYeUYzLl2nt7e6V9+/ZJ+/btkwBITzzxhLRv3z6lSyWc67zzzjuliooKadu2bdLevXulq6++WlqwYIHkcrlSdVlhG+36nU6ntHr1aqmiokLav39/wL9/drtdeY3xev1j/d0PN7yLR5LS79oZoPj5+c9/LlVVVUl6vV666KKLlNbbTAIg6Nevf/1r5RiPxyN973vfk6xWq2QwGKTPfOYz0oEDB1J30gk0PEDJ5Gt//fXXpZqaGslgMEizZs2Snn322YDnM/Xae3p6pPvuu0+aPHmyZDQapalTp0qPPvpowE0pU679nXfeCfrf92233SZJUnjXOTg4KN1zzz1SQUGBlJWVJV133XXSmTNnUnA1kRvt+hsaGkL++/fOO+8orzFer3+sv/vhggUo6XbtKkmSpGRkaoiIiIjCxRoUIiIiSjsMUIiIiCjtMEAhIiKitMMAhYiIiNIOAxQiIiJKOwxQiIiIKO0wQCEiIqK0wwCFiIiI0g4DFCIiIko7DFCIiIgo7TBAISIiorTDAIWIiIjSzv8PqSLcgFXDvMoAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", " \n", "df = pd.read_csv(r'.\\tutorial\\airline-passengers.csv')\n", "timeseries = df[[\"Passengers\"]].values.astype('float32')\n", " \n", "plt.plot(timeseries)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 132, "id": "2acd50a6", "metadata": {}, "outputs": [], "source": [ "# train-test split for time series\n", "train_size = int(len(timeseries) * 0.67)\n", "test_size = len(timeseries) - train_size\n", "train, test = timeseries[:train_size], timeseries[train_size:]" ] }, { "cell_type": "code", "execution_count": 134, "id": "60fd0305", "metadata": {}, "outputs": [], "source": [ "import torch\n", " \n", "def create_dataset(dataset, lookback):\n", " \"\"\"Transform a time series into a prediction dataset\n", " \n", " Args:\n", " dataset: A numpy array of time series, first dimension is the time steps\n", " lookback: Size of window for prediction\n", " \"\"\"\n", " X, y = [], []\n", " for i in range(len(dataset)-lookback):\n", " feature = dataset[i:i+lookback]\n", " target = dataset[i+1:i+lookback+1]\n", " X.append(feature)\n", " y.append(target)\n", " return torch.tensor(X), torch.tensor(y)" ] }, { "cell_type": "code", "execution_count": 135, "id": "23267d31", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([92, 4, 1]) torch.Size([92, 4, 1])\n", "torch.Size([44, 4, 1]) torch.Size([44, 4, 1])\n" ] } ], "source": [ "lookback = 4\n", "X_train, y_train = create_dataset(train, lookback=lookback)\n", "X_test, y_test = create_dataset(test, lookback=lookback)\n", "print(X_train.shape, y_train.shape)\n", "print(X_test.shape, y_test.shape)\n", "\n", "# window sample, time steps, features" ] }, { "cell_type": "code", "execution_count": 88, "id": "851a3cf6", "metadata": {}, "outputs": [], "source": [ "import torch.nn as nn\n", " \n", "class AirModel(nn.Module):\n", " def __init__(self):\n", " super().__init__()\n", " \n", " #input_size: how many features (currently only 1, the time series from previous days)\n", " #if more features are used (for example, text features, sentiment scores, then input_size should be larger)\n", " \n", " self.lstm = nn.LSTM(input_size=1, hidden_size=50, num_layers=1, batch_first=True)\n", " self.linear = nn.Linear(50, 1)\n", " def forward(self, x):\n", " x, _ = self.lstm(x)\n", " x = x[:, -1:, :]\n", " x = self.linear(x)\n", " return x" ] }, { "cell_type": "code", "execution_count": 118, "id": "79e4d8ef", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor([[[-0.0012]],\n", "\n", " [[-0.0018]],\n", "\n", " [[-0.0031]],\n", "\n", " [[-0.0038]],\n", "\n", " [[-0.0051]],\n", "\n", " [[-0.0065]],\n", "\n", " [[-0.0060]],\n", "\n", " [[-0.0040]],\n", "\n", " [[-0.0023]],\n", "\n", " [[-0.0014]],\n", "\n", " [[-0.0009]],\n", "\n", " [[-0.0018]],\n", "\n", " [[-0.0021]],\n", "\n", " [[-0.0023]],\n", "\n", " [[-0.0033]],\n", "\n", " [[-0.0039]],\n", "\n", " [[-0.0053]],\n", "\n", " [[-0.0070]],\n", "\n", " [[-0.0065]],\n", "\n", " [[-0.0045]],\n", "\n", " [[-0.0026]],\n", "\n", " [[-0.0019]],\n", "\n", " [[-0.0017]],\n", "\n", " [[-0.0027]],\n", "\n", " [[-0.0037]],\n", "\n", " [[-0.0042]],\n", "\n", " [[-0.0051]],\n", "\n", " [[-0.0052]],\n", "\n", " [[-0.0061]],\n", "\n", " [[-0.0077]],\n", "\n", " [[-0.0078]],\n", "\n", " [[-0.0066]],\n", "\n", " [[-0.0052]],\n", "\n", " [[-0.0047]],\n", "\n", " [[-0.0047]],\n", "\n", " [[-0.0052]],\n", "\n", " [[-0.0052]],\n", "\n", " [[-0.0055]],\n", "\n", " [[-0.0059]],\n", "\n", " [[-0.0060]],\n", "\n", " [[-0.0067]],\n", "\n", " [[-0.0081]],\n", "\n", " [[-0.0082]],\n", "\n", " [[-0.0077]]])\n", "Epoch 0: train RMSE 228.7690, test RMSE 427.9561\n", "tensor([[[50.4324]],\n", "\n", " [[50.4324]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4324]],\n", "\n", " [[50.4324]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4324]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4324]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]],\n", "\n", " [[50.4325]]])\n", "Epoch 100: train RMSE 181.4632, test RMSE 378.4374\n", "tensor([[[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]],\n", "\n", " [[92.6640]]])\n", "Epoch 200: train RMSE 143.4834, test RMSE 337.1845\n", "tensor([[[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]],\n", "\n", " [[129.8640]]])\n", "Epoch 300: train RMSE 112.5672, test RMSE 301.0714\n", "tensor([[[162.2529]],\n", "\n", " [[162.2538]],\n", "\n", " [[162.2569]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2566]],\n", "\n", " [[162.2527]],\n", "\n", " [[162.2373]],\n", "\n", " [[162.2506]],\n", "\n", " [[162.2515]],\n", "\n", " [[162.2447]],\n", "\n", " [[162.2545]],\n", "\n", " [[162.2529]],\n", "\n", " [[162.2546]],\n", "\n", " [[162.2570]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2566]],\n", "\n", " [[162.2542]],\n", "\n", " [[162.2406]],\n", "\n", " [[162.2509]],\n", "\n", " [[162.2543]],\n", "\n", " [[162.2519]],\n", "\n", " [[162.2566]],\n", "\n", " [[162.2564]],\n", "\n", " [[162.2568]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2566]],\n", "\n", " [[162.2545]],\n", "\n", " [[162.2566]],\n", "\n", " [[162.2568]],\n", "\n", " [[162.2562]],\n", "\n", " [[162.2568]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2572]],\n", "\n", " [[162.2571]],\n", "\n", " [[162.2562]]])\n", "Epoch 400: train RMSE 89.2713, test RMSE 269.8669\n", "tensor([[[201.3871]],\n", "\n", " [[201.3872]],\n", "\n", " [[201.3869]],\n", "\n", " [[201.3852]],\n", "\n", " [[201.3850]],\n", "\n", " [[201.3872]],\n", "\n", " [[201.3871]],\n", "\n", " [[201.3839]],\n", "\n", " [[201.3868]],\n", "\n", " [[201.3869]],\n", "\n", " [[201.3856]],\n", "\n", " [[201.3873]],\n", "\n", " [[201.3871]],\n", "\n", " [[201.3873]],\n", "\n", " [[201.3865]],\n", "\n", " [[201.3827]],\n", "\n", " [[201.3805]],\n", "\n", " [[201.3872]],\n", "\n", " [[201.3872]],\n", "\n", " [[201.3847]],\n", "\n", " [[201.3868]],\n", "\n", " [[201.3873]],\n", "\n", " [[201.3870]],\n", "\n", " [[201.3871]],\n", "\n", " [[201.3872]],\n", "\n", " [[201.3869]],\n", "\n", " [[201.3847]],\n", "\n", " [[201.3647]],\n", "\n", " [[201.3580]],\n", "\n", " [[201.3856]],\n", "\n", " [[201.3871]],\n", "\n", " [[201.3873]],\n", "\n", " [[201.3872]],\n", "\n", " [[201.3869]],\n", "\n", " [[201.3873]],\n", "\n", " [[201.3869]],\n", "\n", " [[201.3854]],\n", "\n", " [[201.3847]],\n", "\n", " [[201.3716]],\n", "\n", " [[201.2177]],\n", "\n", " [[201.2737]],\n", "\n", " [[201.3791]],\n", "\n", " [[201.3857]],\n", "\n", " [[201.3873]]])\n", "Epoch 500: train RMSE 64.1818, test RMSE 232.6155\n", "tensor([[[232.6318]],\n", "\n", " [[232.6325]],\n", "\n", " [[232.6356]],\n", "\n", " [[232.6352]],\n", "\n", " [[232.6351]],\n", "\n", " [[232.6352]],\n", "\n", " [[232.6317]],\n", "\n", " [[232.6163]],\n", "\n", " [[232.6300]],\n", "\n", " [[232.6307]],\n", "\n", " [[232.6248]],\n", "\n", " [[232.6331]],\n", "\n", " [[232.6318]],\n", "\n", " [[232.6332]],\n", "\n", " [[232.6357]],\n", "\n", " [[232.6333]],\n", "\n", " [[232.6311]],\n", "\n", " [[232.6353]],\n", "\n", " [[232.6329]],\n", "\n", " [[232.6204]],\n", "\n", " [[232.6302]],\n", "\n", " [[232.6330]],\n", "\n", " [[232.6310]],\n", "\n", " [[232.6352]],\n", "\n", " [[232.6349]],\n", "\n", " [[232.6355]],\n", "\n", " [[232.6349]],\n", "\n", " [[232.6084]],\n", "\n", " [[232.5952]],\n", "\n", " [[232.6360]],\n", "\n", " [[232.6354]],\n", "\n", " [[232.6331]],\n", "\n", " [[232.6352]],\n", "\n", " [[232.6355]],\n", "\n", " [[232.6348]],\n", "\n", " [[232.6355]],\n", "\n", " [[232.6354]],\n", "\n", " [[232.6349]],\n", "\n", " [[232.6194]],\n", "\n", " [[232.1827]],\n", "\n", " [[231.7498]],\n", "\n", " [[232.6103]],\n", "\n", " [[232.6358]],\n", "\n", " [[232.6348]]])\n", "Epoch 600: train RMSE 48.7359, test RMSE 203.4003\n", "tensor([[[258.6310]],\n", "\n", " [[258.6370]],\n", "\n", " [[258.5089]],\n", "\n", " [[256.5044]],\n", "\n", " [[254.4674]],\n", "\n", " [[258.5114]],\n", "\n", " [[258.6435]],\n", "\n", " [[258.4124]],\n", "\n", " [[258.6083]],\n", "\n", " [[258.6182]],\n", "\n", " [[258.5289]],\n", "\n", " [[258.6393]],\n", "\n", " [[258.6316]],\n", "\n", " [[258.6404]],\n", "\n", " [[258.3229]],\n", "\n", " [[252.8670]],\n", "\n", " [[249.3321]],\n", "\n", " [[258.3755]],\n", "\n", " [[258.6475]],\n", "\n", " [[258.4840]],\n", "\n", " [[258.6111]],\n", "\n", " [[258.6389]],\n", "\n", " [[258.6241]],\n", "\n", " [[258.5998]],\n", "\n", " [[258.6241]],\n", "\n", " [[258.5168]],\n", "\n", " [[255.3947]],\n", "\n", " [[245.0602]],\n", "\n", " [[240.5204]],\n", "\n", " [[250.2531]],\n", "\n", " [[258.4299]],\n", "\n", " [[258.6466]],\n", "\n", " [[258.6041]],\n", "\n", " [[258.5453]],\n", "\n", " [[258.6284]],\n", "\n", " [[258.5254]],\n", "\n", " [[256.7263]],\n", "\n", " [[253.8458]],\n", "\n", " [[246.5973]],\n", "\n", " [[231.1909]],\n", "\n", " [[228.0801]],\n", "\n", " [[242.8239]],\n", "\n", " [[252.2021]],\n", "\n", " [[258.5918]]])\n", "Epoch 700: train RMSE 38.5931, test RMSE 184.8632\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "tensor([[[281.4232]],\n", "\n", " [[281.4534]],\n", "\n", " [[281.4724]],\n", "\n", " [[280.6501]],\n", "\n", " [[277.5331]],\n", "\n", " [[281.3636]],\n", "\n", " [[281.4219]],\n", "\n", " [[280.3969]],\n", "\n", " [[281.3496]],\n", "\n", " [[281.3743]],\n", "\n", " [[281.0114]],\n", "\n", " [[281.4743]],\n", "\n", " [[281.4233]],\n", "\n", " [[281.4751]],\n", "\n", " [[281.4134]],\n", "\n", " [[276.6275]],\n", "\n", " [[257.9320]],\n", "\n", " [[281.1812]],\n", "\n", " [[281.4659]],\n", "\n", " [[280.6869]],\n", "\n", " [[281.3572]],\n", "\n", " [[281.4681]],\n", "\n", " [[281.3878]],\n", "\n", " [[281.4991]],\n", "\n", " [[281.5027]],\n", "\n", " [[281.4759]],\n", "\n", " [[280.1986]],\n", "\n", " [[252.8920]],\n", "\n", " [[252.1630]],\n", "\n", " [[272.4238]],\n", "\n", " [[281.1440]],\n", "\n", " [[281.4727]],\n", "\n", " [[281.5000]],\n", "\n", " [[281.4819]],\n", "\n", " [[281.5016]],\n", "\n", " [[281.4789]],\n", "\n", " [[280.8569]],\n", "\n", " [[277.1184]],\n", "\n", " [[253.5120]],\n", "\n", " [[251.3479]],\n", "\n", " [[251.6234]],\n", "\n", " [[254.7992]],\n", "\n", " [[273.3949]],\n", "\n", " [[281.3973]]])\n", "Epoch 800: train RMSE 31.9550, test RMSE 166.8788\n", "tensor([[[299.8352]],\n", "\n", " [[299.9460]],\n", "\n", " [[300.1405]],\n", "\n", " [[299.9311]],\n", "\n", " [[297.0992]],\n", "\n", " [[299.9551]],\n", "\n", " [[299.8713]],\n", "\n", " [[296.2292]],\n", "\n", " [[299.5913]],\n", "\n", " [[299.6616]],\n", "\n", " [[298.3669]],\n", "\n", " [[300.0138]],\n", "\n", " [[299.8394]],\n", "\n", " [[300.0195]],\n", "\n", " [[300.1320]],\n", "\n", " [[298.3716]],\n", "\n", " [[270.7987]],\n", "\n", " [[299.7739]],\n", "\n", " [[300.0239]],\n", "\n", " [[297.2111]],\n", "\n", " [[299.6178]],\n", "\n", " [[299.9912]],\n", "\n", " [[299.7152]],\n", "\n", " [[300.1365]],\n", "\n", " [[300.1306]],\n", "\n", " [[300.1431]],\n", "\n", " [[299.7983]],\n", "\n", " [[263.8959]],\n", "\n", " [[262.4266]],\n", "\n", " [[288.9276]],\n", "\n", " [[299.7431]],\n", "\n", " [[300.0281]],\n", "\n", " [[300.1385]],\n", "\n", " [[300.1429]],\n", "\n", " [[300.1252]],\n", "\n", " [[300.1435]],\n", "\n", " [[299.9888]],\n", "\n", " [[297.1056]],\n", "\n", " [[264.2359]],\n", "\n", " [[261.5515]],\n", "\n", " [[261.5928]],\n", "\n", " [[263.8435]],\n", "\n", " [[290.9286]],\n", "\n", " [[299.9625]]])\n", "Epoch 900: train RMSE 28.2284, test RMSE 153.0004\n", "tensor([[[312.2986]],\n", "\n", " [[313.4939]],\n", "\n", " [[315.6353]],\n", "\n", " [[315.6471]],\n", "\n", " [[314.8463]],\n", "\n", " [[315.5657]],\n", "\n", " [[312.0290]],\n", "\n", " [[293.1197]],\n", "\n", " [[311.3262]],\n", "\n", " [[310.9773]],\n", "\n", " [[302.3938]],\n", "\n", " [[314.4212]],\n", "\n", " [[312.3008]],\n", "\n", " [[314.2525]],\n", "\n", " [[315.6678]],\n", "\n", " [[315.1327]],\n", "\n", " [[288.0857]],\n", "\n", " [[315.3658]],\n", "\n", " [[313.7476]],\n", "\n", " [[296.4247]],\n", "\n", " [[311.3743]],\n", "\n", " [[314.0227]],\n", "\n", " [[311.1655]],\n", "\n", " [[315.5533]],\n", "\n", " [[315.4160]],\n", "\n", " [[315.6258]],\n", "\n", " [[315.6116]],\n", "\n", " [[279.3812]],\n", "\n", " [[276.2369]],\n", "\n", " [[307.1260]],\n", "\n", " [[315.4768]],\n", "\n", " [[314.0126]],\n", "\n", " [[315.5368]],\n", "\n", " [[315.6112]],\n", "\n", " [[315.3417]],\n", "\n", " [[315.6216]],\n", "\n", " [[315.6633]],\n", "\n", " [[314.8694]],\n", "\n", " [[282.3835]],\n", "\n", " [[275.9885]],\n", "\n", " [[276.0133]],\n", "\n", " [[281.3693]],\n", "\n", " [[308.0851]],\n", "\n", " [[315.4827]]])\n", "Epoch 1000: train RMSE 25.9597, test RMSE 140.5347\n", "tensor([[[323.0609]],\n", "\n", " [[325.5734]],\n", "\n", " [[329.1922]],\n", "\n", " [[329.1146]],\n", "\n", " [[319.9876]],\n", "\n", " [[328.8931]],\n", "\n", " [[322.0001]],\n", "\n", " [[299.6956]],\n", "\n", " [[324.5836]],\n", "\n", " [[322.0504]],\n", "\n", " [[311.1375]],\n", "\n", " [[327.6912]],\n", "\n", " [[322.9869]],\n", "\n", " [[326.8055]],\n", "\n", " [[329.2500]],\n", "\n", " [[325.8585]],\n", "\n", " [[290.3801]],\n", "\n", " [[328.5338]],\n", "\n", " [[325.1087]],\n", "\n", " [[302.3760]],\n", "\n", " [[324.4730]],\n", "\n", " [[326.5415]],\n", "\n", " [[321.3731]],\n", "\n", " [[329.0725]],\n", "\n", " [[328.6210]],\n", "\n", " [[329.1256]],\n", "\n", " [[328.9944]],\n", "\n", " [[288.3742]],\n", "\n", " [[288.2372]],\n", "\n", " [[309.8529]],\n", "\n", " [[328.7433]],\n", "\n", " [[325.6342]],\n", "\n", " [[328.9789]],\n", "\n", " [[329.0888]],\n", "\n", " [[328.4774]],\n", "\n", " [[329.1184]],\n", "\n", " [[329.1863]],\n", "\n", " [[319.8259]],\n", "\n", " [[288.6379]],\n", "\n", " [[288.2098]],\n", "\n", " [[288.2114]],\n", "\n", " [[289.5757]],\n", "\n", " [[311.4052]],\n", "\n", " [[328.7657]]])\n", "Epoch 1100: train RMSE 24.0243, test RMSE 132.1029\n", "tensor([[[325.4258]],\n", "\n", " [[332.0546]],\n", "\n", " [[341.0415]],\n", "\n", " [[341.3593]],\n", "\n", " [[341.1063]],\n", "\n", " [[340.8051]],\n", "\n", " [[320.7944]],\n", "\n", " [[287.7719]],\n", "\n", " [[334.3028]],\n", "\n", " [[325.5056]],\n", "\n", " [[305.6215]],\n", "\n", " [[338.4916]],\n", "\n", " [[324.9830]],\n", "\n", " [[335.0066]],\n", "\n", " [[341.2027]],\n", "\n", " [[341.2115]],\n", "\n", " [[313.8710]],\n", "\n", " [[340.7979]],\n", "\n", " [[328.6182]],\n", "\n", " [[289.5952]],\n", "\n", " [[333.6617]],\n", "\n", " [[335.0242]],\n", "\n", " [[321.5692]],\n", "\n", " [[340.7895]],\n", "\n", " [[339.0093]],\n", "\n", " [[340.7475]],\n", "\n", " [[341.3665]],\n", "\n", " [[303.2320]],\n", "\n", " [[299.1797]],\n", "\n", " [[334.4112]],\n", "\n", " [[340.9278]],\n", "\n", " [[329.8522]],\n", "\n", " [[340.3894]],\n", "\n", " [[340.6034]],\n", "\n", " [[338.3283]],\n", "\n", " [[340.7307]],\n", "\n", " [[341.3496]],\n", "\n", " [[341.1299]],\n", "\n", " [[305.8877]],\n", "\n", " [[298.6038]],\n", "\n", " [[298.8094]],\n", "\n", " [[304.5373]],\n", "\n", " [[335.4910]],\n", "\n", " [[340.2916]]])\n", "Epoch 1200: train RMSE 22.2515, test RMSE 122.5578\n", "tensor([[[323.1248]],\n", "\n", " [[336.1339]],\n", "\n", " [[350.7639]],\n", "\n", " [[351.2997]],\n", "\n", " [[348.2127]],\n", "\n", " [[350.2936]],\n", "\n", " [[313.8488]],\n", "\n", " [[280.4513]],\n", "\n", " [[345.4886]],\n", "\n", " [[328.9623]],\n", "\n", " [[303.7200]],\n", "\n", " [[348.5858]],\n", "\n", " [[321.8971]],\n", "\n", " [[340.8570]],\n", "\n", " [[351.0170]],\n", "\n", " [[350.3127]],\n", "\n", " [[313.7906]],\n", "\n", " [[350.2854]],\n", "\n", " [[326.6451]],\n", "\n", " [[279.2889]],\n", "\n", " [[344.6915]],\n", "\n", " [[342.1884]],\n", "\n", " [[317.5403]],\n", "\n", " [[350.5110]],\n", "\n", " [[345.9901]],\n", "\n", " [[349.9582]],\n", "\n", " [[351.2907]],\n", "\n", " [[308.7087]],\n", "\n", " [[308.1973]],\n", "\n", " [[336.4799]],\n", "\n", " [[350.4586]],\n", "\n", " [[327.9339]],\n", "\n", " [[349.4435]],\n", "\n", " [[349.6335]],\n", "\n", " [[344.6489]],\n", "\n", " [[349.9239]],\n", "\n", " [[351.2904]],\n", "\n", " [[348.2583]],\n", "\n", " [[309.2283]],\n", "\n", " [[306.8817]],\n", "\n", " [[307.4395]],\n", "\n", " [[310.3213]],\n", "\n", " [[338.6329]],\n", "\n", " [[349.1894]]])\n", "Epoch 1300: train RMSE 21.1470, test RMSE 117.8128\n", "tensor([[[321.4128]],\n", "\n", " [[340.1192]],\n", "\n", " [[357.7347]],\n", "\n", " [[358.3875]],\n", "\n", " [[358.4850]],\n", "\n", " [[356.3625]],\n", "\n", " [[305.8342]],\n", "\n", " [[270.4346]],\n", "\n", " [[352.6382]],\n", "\n", " [[331.9883]],\n", "\n", " [[300.5768]],\n", "\n", " [[355.6447]],\n", "\n", " [[319.7238]],\n", "\n", " [[345.9510]],\n", "\n", " [[358.0197]],\n", "\n", " [[358.4455]],\n", "\n", " [[342.2151]],\n", "\n", " [[357.4119]],\n", "\n", " [[321.3933]],\n", "\n", " [[267.3593]],\n", "\n", " [[351.9567]],\n", "\n", " [[348.0384]],\n", "\n", " [[314.4241]],\n", "\n", " [[357.5087]],\n", "\n", " [[350.6832]],\n", "\n", " [[356.4415]],\n", "\n", " [[358.4444]],\n", "\n", " [[329.5710]],\n", "\n", " [[316.3170]],\n", "\n", " [[355.3794]],\n", "\n", " [[357.3728]],\n", "\n", " [[324.6180]],\n", "\n", " [[356.0043]],\n", "\n", " [[355.9265]],\n", "\n", " [[348.2473]],\n", "\n", " [[356.4155]],\n", "\n", " [[358.3451]],\n", "\n", " [[358.4858]],\n", "\n", " [[332.5454]],\n", "\n", " [[314.4287]],\n", "\n", " [[315.1498]],\n", "\n", " [[322.4406]],\n", "\n", " [[356.2007]],\n", "\n", " [[354.6702]]])\n", "Epoch 1400: train RMSE 19.9694, test RMSE 111.2106\n", "tensor([[[320.6290]],\n", "\n", " [[341.9129]],\n", "\n", " [[364.2052]],\n", "\n", " [[365.1134]],\n", "\n", " [[365.2629]],\n", "\n", " [[361.1532]],\n", "\n", " [[303.4877]],\n", "\n", " [[266.3618]],\n", "\n", " [[358.9599]],\n", "\n", " [[332.9533]],\n", "\n", " [[296.8156]],\n", "\n", " [[362.0406]],\n", "\n", " [[318.4531]],\n", "\n", " [[349.0608]],\n", "\n", " [[364.5945]],\n", "\n", " [[365.3213]],\n", "\n", " [[359.0888]],\n", "\n", " [[364.1607]],\n", "\n", " [[320.9427]],\n", "\n", " [[263.4470]],\n", "\n", " [[357.9925]],\n", "\n", " [[352.0781]],\n", "\n", " [[312.1034]],\n", "\n", " [[363.9633]],\n", "\n", " [[355.3518]],\n", "\n", " [[362.4746]],\n", "\n", " [[365.2130]],\n", "\n", " [[348.5535]],\n", "\n", " [[323.0168]],\n", "\n", " [[363.5680]],\n", "\n", " [[363.5049]],\n", "\n", " [[324.8150]],\n", "\n", " [[361.8594]],\n", "\n", " [[361.8212]],\n", "\n", " [[352.4064]],\n", "\n", " [[362.4395]],\n", "\n", " [[365.0429]],\n", "\n", " [[365.2815]],\n", "\n", " [[356.9838]],\n", "\n", " [[322.5648]],\n", "\n", " [[322.6508]],\n", "\n", " [[336.1275]],\n", "\n", " [[363.9718]],\n", "\n", " [[356.7561]]])\n", "Epoch 1500: train RMSE 19.7063, test RMSE 105.4241\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "tensor([[[323.0790]],\n", "\n", " [[346.4754]],\n", "\n", " [[369.0224]],\n", "\n", " [[369.9098]],\n", "\n", " [[370.0675]],\n", "\n", " [[365.8755]],\n", "\n", " [[304.4727]],\n", "\n", " [[267.3923]],\n", "\n", " [[363.0748]],\n", "\n", " [[337.0964]],\n", "\n", " [[299.6556]],\n", "\n", " [[366.7579]],\n", "\n", " [[320.8776]],\n", "\n", " [[353.8323]],\n", "\n", " [[369.3964]],\n", "\n", " [[370.0785]],\n", "\n", " [[360.8098]],\n", "\n", " [[368.8663]],\n", "\n", " [[322.5965]],\n", "\n", " [[264.4662]],\n", "\n", " [[362.4104]],\n", "\n", " [[356.9080]],\n", "\n", " [[314.5428]],\n", "\n", " [[368.7957]],\n", "\n", " [[359.4282]],\n", "\n", " [[367.1651]],\n", "\n", " [[370.0035]],\n", "\n", " [[347.1830]],\n", "\n", " [[327.2666]],\n", "\n", " [[367.7557]],\n", "\n", " [[366.7428]],\n", "\n", " [[326.6451]],\n", "\n", " [[366.6502]],\n", "\n", " [[366.4575]],\n", "\n", " [[356.1996]],\n", "\n", " [[367.1345]],\n", "\n", " [[369.8420]],\n", "\n", " [[370.0779]],\n", "\n", " [[357.8181]],\n", "\n", " [[326.6190]],\n", "\n", " [[326.7762]],\n", "\n", " [[339.2241]],\n", "\n", " [[368.4189]],\n", "\n", " [[359.8281]]])\n", "Epoch 1600: train RMSE 19.1708, test RMSE 103.0042\n", "tensor([[[324.2080]],\n", "\n", " [[351.1406]],\n", "\n", " [[372.8341]],\n", "\n", " [[373.5854]],\n", "\n", " [[373.7448]],\n", "\n", " [[368.1801]],\n", "\n", " [[302.2035]],\n", "\n", " [[271.1681]],\n", "\n", " [[367.5332]],\n", "\n", " [[341.6802]],\n", "\n", " [[304.9462]],\n", "\n", " [[370.9966]],\n", "\n", " [[322.0482]],\n", "\n", " [[358.4019]],\n", "\n", " [[373.1455]],\n", "\n", " [[373.8082]],\n", "\n", " [[363.3910]],\n", "\n", " [[372.0632]],\n", "\n", " [[320.8694]],\n", "\n", " [[266.4071]],\n", "\n", " [[367.0332]],\n", "\n", " [[361.4368]],\n", "\n", " [[316.4135]],\n", "\n", " [[372.7304]],\n", "\n", " [[361.2025]],\n", "\n", " [[370.4224]],\n", "\n", " [[373.6984]],\n", "\n", " [[349.9727]],\n", "\n", " [[330.7964]],\n", "\n", " [[371.8557]],\n", "\n", " [[369.8109]],\n", "\n", " [[325.0490]],\n", "\n", " [[370.3917]],\n", "\n", " [[369.5234]],\n", "\n", " [[357.3053]],\n", "\n", " [[370.4297]],\n", "\n", " [[373.5047]],\n", "\n", " [[373.7672]],\n", "\n", " [[361.0004]],\n", "\n", " [[330.3163]],\n", "\n", " [[330.4319]],\n", "\n", " [[341.7298]],\n", "\n", " [[372.3135]],\n", "\n", " [[360.7712]]])\n", "Epoch 1700: train RMSE 18.7204, test RMSE 100.7978\n", "tensor([[[320.2809]],\n", "\n", " [[351.8071]],\n", "\n", " [[375.6293]],\n", "\n", " [[376.5197]],\n", "\n", " [[376.6650]],\n", "\n", " [[365.4309]],\n", "\n", " [[295.4686]],\n", "\n", " [[265.2063]],\n", "\n", " [[364.9206]],\n", "\n", " [[338.9723]],\n", "\n", " [[300.6101]],\n", "\n", " [[372.2890]],\n", "\n", " [[318.8668]],\n", "\n", " [[359.6123]],\n", "\n", " [[376.0028]],\n", "\n", " [[376.9704]],\n", "\n", " [[376.8601]],\n", "\n", " [[373.9664]],\n", "\n", " [[314.4897]],\n", "\n", " [[261.1479]],\n", "\n", " [[365.0970]],\n", "\n", " [[361.5963]],\n", "\n", " [[313.9270]],\n", "\n", " [[375.4814]],\n", "\n", " [[359.8527]],\n", "\n", " [[372.0457]],\n", "\n", " [[376.7232]],\n", "\n", " [[374.6303]],\n", "\n", " [[334.4128]],\n", "\n", " [[376.6574]],\n", "\n", " [[370.9395]],\n", "\n", " [[318.9754]],\n", "\n", " [[372.7117]],\n", "\n", " [[370.6806]],\n", "\n", " [[354.7499]],\n", "\n", " [[372.1351]],\n", "\n", " [[376.3996]],\n", "\n", " [[376.7595]],\n", "\n", " [[376.2932]],\n", "\n", " [[332.8832]],\n", "\n", " [[333.1483]],\n", "\n", " [[359.6927]],\n", "\n", " [[376.7593]],\n", "\n", " [[355.2821]]])\n", "Epoch 1800: train RMSE 18.9760, test RMSE 97.6447\n", "tensor([[[325.9944]],\n", "\n", " [[356.1310]],\n", "\n", " [[378.4814]],\n", "\n", " [[379.2532]],\n", "\n", " [[379.4373]],\n", "\n", " [[369.7082]],\n", "\n", " [[302.4752]],\n", "\n", " [[271.7042]],\n", "\n", " [[370.0886]],\n", "\n", " [[343.8380]],\n", "\n", " [[307.0122]],\n", "\n", " [[376.1982]],\n", "\n", " [[324.5916]],\n", "\n", " [[363.5224]],\n", "\n", " [[378.8082]],\n", "\n", " [[379.6785]],\n", "\n", " [[377.9814]],\n", "\n", " [[377.2510]],\n", "\n", " [[321.4426]],\n", "\n", " [[267.4047]],\n", "\n", " [[370.3315]],\n", "\n", " [[365.4646]],\n", "\n", " [[319.6334]],\n", "\n", " [[378.4367]],\n", "\n", " [[363.4065]],\n", "\n", " [[374.9718]],\n", "\n", " [[379.4456]],\n", "\n", " [[370.8605]],\n", "\n", " [[336.6113]],\n", "\n", " [[378.9369]],\n", "\n", " [[371.5497]],\n", "\n", " [[325.5682]],\n", "\n", " [[375.6949]],\n", "\n", " [[373.6527]],\n", "\n", " [[358.6321]],\n", "\n", " [[375.0682]],\n", "\n", " [[379.1345]],\n", "\n", " [[379.5059]],\n", "\n", " [[376.5935]],\n", "\n", " [[335.8557]],\n", "\n", " [[336.0154]],\n", "\n", " [[354.5763]],\n", "\n", " [[379.2173]],\n", "\n", " [[359.5399]]])\n", "Epoch 1900: train RMSE 18.2067, test RMSE 95.9641\n" ] } ], "source": [ "import numpy as np\n", "import torch.optim as optim\n", "import torch.utils.data as data\n", "\n", "model = AirModel()\n", "optimizer = optim.Adam(model.parameters())\n", "loss_fn = nn.MSELoss()\n", "loader = data.DataLoader(data.TensorDataset(X_train, y_train), shuffle=True, batch_size=8)\n", "\n", "n_epochs = 2000\n", "for epoch in range(n_epochs):\n", " model.train()\n", " for X_batch, y_batch in loader: \n", " y_pred = model(X_batch)\n", " loss = loss_fn(y_pred, y_batch[:, -1:, :])\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " # Validation\n", " if epoch % 100 != 0:\n", " continue\n", " model.eval()\n", " with torch.no_grad():\n", " y_pred = model(X_train)\n", " train_rmse = np.sqrt(loss_fn(y_pred[:, -1:, :], y_train[:, -1:, :]))\n", " \n", " y_pred = model(X_test)\n", " test_rmse = np.sqrt(loss_fn(y_pred[:, -1:, :], y_test[:, -1:, :]))\n", " \n", " \n", " print(\"Epoch %d: train RMSE %.4f, test RMSE %.4f\" % (epoch, train_rmse, test_rmse))" ] }, { "cell_type": "code", "execution_count": 119, "id": "53d88a8a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([92, 4, 1])\n", "torch.Size([92, 1, 1])\n" ] }, { "data": { "image/png": "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/OMfCQsL8/dUfI7cu9x7V0PuXe69q9GR7r1DJskKgiAIgtC5EQdFEARBEISAQwSKIAiCIAgBhwgUQRAEQRACDhEogiAIgiAEHCJQbHj55ZfJzs4mPDyckSNHsnr1an9PyePMnz+f0aNHExMTQ7du3bj88svZu3ev3RhN05g7dy4ZGRlEREQwceJEdu7c6acZe4/58+djMBiYM2eO5Vhnvvdjx44xc+ZMkpKSiIyMZPjw4WzcuNFyvrPee0NDA7/73e/Izs4mIiKC3r1786c//QmTyWQZ01nu/dtvv+XSSy8lIyMDg8HAxx9/bHfemfusra1l9uzZJCcnExUVxfTp08nLy/PhXbhPa/dfX1/PI488wpAhQ4iKiiIjI4Mbb7yR/Px8u8/oqPff1u/ellmzZmEwGHjuuefsjgfavYtAMfOvf/2LOXPm8Nhjj7F582bOPfdcLrroIo4cOeLvqXmUVatWcdddd/H999+zfPlyGhoamDp1KpWVlZYxTz31FM888wwvvfQSGzZsIC0tjSlTpljWQOoMbNiwgddee42hQ4faHe+s915SUsL48eMJCQnh888/Z9euXTz99NPEx8dbxnTWe3/yySd59dVXeemll9i9ezdPPfUUf/3rX3nxxRctYzrLvVdWVjJs2DBeeuklh+educ85c+awZMkSFi1axJo1a6ioqGDatGk0Njb66jbcprX7r6qqYtOmTfz+979n06ZNLF68mH379jF9+nS7cR31/tv63et8/PHH/PDDD2RkZDQ7F3D3rgmapmnaWWedpd1+++12x8444wztN7/5jZ9m5BuKioo0QFu1apWmaZpmMpm0tLQ07YknnrCMqamp0eLi4rRXX33VX9P0KOXl5Vq/fv205cuXaxMmTNDuvfdeTdM6970/8sgj2jnnnNPi+c5875dccol288032x2bMWOGNnPmTE3TOu+9A9qSJUssr525z9OnT2shISHaokWLLGOOHTumBQUFaV988YXP5u4Jmt6/I9avX68B2uHDhzVN6zz339K95+Xlad27d9d27Nih9ezZU3v22Wct5wLx3sVBAerq6ti4cSNTp061Oz516lTWrVvnp1n5htLSUgASExMByM3NpbCw0O67CAsLY8KECZ3mu7jrrru45JJLmDx5st3xznzvn376KaNGjeLKK6+kW7dujBgxgtdff91yvjPf+znnnMNXX33Fvn37ANi6dStr1qzh4osvBjr3vdvizH1u3LiR+vp6uzEZGRnk5OR0qu9Cp7S0FIPBYHESO/P9m0wmbrjhBh566CEGDx7c7Hwg3nuHXCzQ05w4cYLGxkZSU1PtjqemplJYWOinWXkfTdO4//77Oeecc8jJyQGw3K+j7+Lw4cM+n6OnWbRoEZs2bWLDhg3NznXmez948CCvvPIK999/P7/97W9Zv34999xzD2FhYdx4442d+t4feeQRSktLOeOMMwgODqaxsZG//OUvXHvttUDn/r3b4sx9FhYWEhoaSkJCQrMxne3fwpqaGn7zm99w3XXXWRbN68z3/+STT2I0Grnnnnscng/EexeBYoPBYLB7rWlas2Odibvvvptt27axZs2aZuc643dx9OhR7r33XpYtW0Z4eHiL4zrjvZtMJkaNGsW8efMAGDFiBDt37uSVV17hxhtvtIzrjPf+r3/9i4ULF/L+++8zePBgtmzZwpw5c8jIyOCmm26yjOuM9+4Id+6zs30X9fX1XHPNNZhMJl5++eU2x3f0+9+4cSPPP/88mzZtcvk+/HnvEuIBkpOTCQ4ObqYSi4qKmv210VmYPXs2n376KStXriQzM9NyPC0tDaBTfhcbN26kqKiIkSNHYjQaMRqNrFq1ihdeeAGj0Wi5v8547+np6QwaNMju2MCBAy1J4J359/7QQw/xm9/8hmuuuYYhQ4Zwww03cN999zF//nygc9+7Lc7cZ1paGnV1dZSUlLQ4pqNTX1/PVVddRW5uLsuXL7e4J9B573/16tUUFRXRo0cPy799hw8f5oEHHqBXr15AYN67CBQgNDSUkSNHsnz5crvjy5cvZ9y4cX6alXfQNI27776bxYsX8/XXX5OdnW13Pjs7m7S0NLvvoq6ujlWrVnX472LSpEls376dLVu2WH5GjRrF9ddfz5YtW+jdu3envffx48c3Kyfft28fPXv2BDr3772qqoqgIPt/6oKDgy1lxp353m1x5j5HjhxJSEiI3ZiCggJ27NjRKb4LXZzs37+fFStWkJSUZHe+s97/DTfcwLZt2+z+7cvIyOChhx7iyy+/BAL03v2SmhuALFq0SAsJCdHefPNNbdeuXdqcOXO0qKgo7dChQ/6emke54447tLi4OO2bb77RCgoKLD9VVVWWMU888YQWFxenLV68WNu+fbt27bXXaunp6VpZWZkfZ+4dbKt4NK3z3vv69es1o9Go/eUvf9H279+vvffee1pkZKS2cOFCy5jOeu833XST1r17d+2///2vlpubqy1evFhLTk7WHn74YcuYznLv5eXl2ubNm7XNmzdrgPbMM89omzdvtlSpOHOft99+u5aZmamtWLFC27Rpk3bBBRdow4YN0xoaGvx1W07T2v3X19dr06dP1zIzM7UtW7bY/ftXW1tr+YyOev9t/e6b0rSKR9MC795FoNjw97//XevZs6cWGhqqnXnmmZbS284E4PDnn//8p2WMyWTS/vjHP2ppaWlaWFiYdt5552nbt2/336S9SFOB0pnvfenSpVpOTo4WFhamnXHGGdprr71md76z3ntZWZl27733aj169NDCw8O13r17a4899pjdQ6mz3PvKlSsd/v/7pptu0jTNufusrq7W7r77bi0xMVGLiIjQpk2bph05csQPd+M6rd1/bm5ui//+rVy50vIZHfX+2/rdN8WRQAm0ezdomqb5wqkRBEEQBEFwFslBEQRBEAQh4BCBIgiCIAhCwCECRRAEQRCEgEMEiiAIgiAIAYcIFEEQBEEQAg4RKIIgCIIgBBwiUARBEARBCDhEoAiCIAiCEHCIQBEEQRAEIeAQgSIIgiAIQsAhAkUQBEEQhIBDBIogCIIgCAHH/wMqTxlPEblgAAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with torch.no_grad():\n", " # shift train predictions for plotting\n", " train_plot = np.ones_like(timeseries) * np.nan\n", " y_pred = model(X_train)\n", " print(y_train.shape)\n", " print(y_pred.shape)\n", " y_pred = y_pred[:, -1, :]\n", " train_plot[lookback:train_size] = model(X_train)[:, -1, :]\n", " # shift test predictions for plotting\n", " test_plot = np.ones_like(timeseries) * np.nan\n", " test_plot[train_size+lookback:len(timeseries)] = model(X_test)[:, -1, :]\n", "# plot\n", "plt.plot(timeseries, c='b')\n", "plt.plot(train_plot, c='r')\n", "plt.plot(test_plot, c='g')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "36cf6af3", "metadata": {}, "outputs": [], "source": [ "# What about change the loss function to only calculate the loss of the last day instead of \"t+1\" to \"last\"" ] }, { "cell_type": "code", "execution_count": 126, "id": "a828d2cd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([92, 4, 1]) torch.Size([92, 4, 1])\n", "torch.Size([44, 4, 1]) torch.Size([44, 4, 1])\n" ] } ], "source": [ "lookback = 4\n", "X_train, y_train = create_dataset(train, lookback=lookback)\n", "X_test, y_test = create_dataset(test, lookback=lookback)\n", "print(X_train.shape, y_train.shape)\n", "print(X_test.shape, y_test.shape)\n", "\n", "# window sample, time steps, features" ] }, { "cell_type": "code", "execution_count": 127, "id": "e1e75cf1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 0: train RMSE 228.6444, test RMSE 427.8196\n", "Epoch 100: train RMSE 177.5015, test RMSE 374.2199\n", "Epoch 200: train RMSE 139.2243, test RMSE 332.4014\n", "Epoch 300: train RMSE 108.1478, test RMSE 295.5206\n", "Epoch 400: train RMSE 83.7063, test RMSE 262.5800\n", "Epoch 500: train RMSE 62.6433, test RMSE 229.9568\n", "Epoch 600: train RMSE 48.2779, test RMSE 202.7041\n", "Epoch 700: train RMSE 38.3032, test RMSE 178.9147\n", "Epoch 800: train RMSE 31.8134, test RMSE 161.1139\n", "Epoch 900: train RMSE 28.0495, test RMSE 153.1569\n", "Epoch 1000: train RMSE 25.8689, test RMSE 141.5045\n", "Epoch 1100: train RMSE 24.1666, test RMSE 131.8886\n", "Epoch 1200: train RMSE 23.4076, test RMSE 123.2945\n", "Epoch 1300: train RMSE 22.8624, test RMSE 121.8842\n", "Epoch 1400: train RMSE 22.0898, test RMSE 116.9426\n", "Epoch 1500: train RMSE 21.5784, test RMSE 113.0219\n", "Epoch 1600: train RMSE 21.0006, test RMSE 110.8304\n", "Epoch 1700: train RMSE 20.2231, test RMSE 108.0340\n", "Epoch 1800: train RMSE 19.9500, test RMSE 106.6506\n", "Epoch 1900: train RMSE 19.0664, test RMSE 103.7997\n" ] } ], "source": [ "import numpy as np\n", "import torch.optim as optim\n", "import torch.utils.data as data\n", "\n", "model = AirModel()\n", "optimizer = optim.Adam(model.parameters())\n", "loss_fn = nn.MSELoss()\n", "loader = data.DataLoader(data.TensorDataset(X_train, y_train), shuffle=True, batch_size=8)\n", "\n", "n_epochs = 2000\n", "for epoch in range(n_epochs):\n", " model.train()\n", " for X_batch, y_batch in loader: \n", " y_pred = model(X_batch)\n", " \n", " #print(y_pred.shape, y_batch[:, -1:, :].shape)\n", " \n", " loss = loss_fn(y_pred, y_batch[:, -1:, :])\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " # Validation\n", " if epoch % 100 != 0:\n", " continue\n", " model.eval()\n", " with torch.no_grad():\n", " y_pred = model(X_train)\n", " train_rmse = np.sqrt(loss_fn(y_pred[:, -1:, :], y_train[:, -1:, :]))\n", " \n", " y_pred = model(X_test)\n", " test_rmse = np.sqrt(loss_fn(y_pred[:, -1:, :], y_test[:, -1:, :]))\n", " print(\"Epoch %d: train RMSE %.4f, test RMSE %.4f\" % (epoch, train_rmse, test_rmse))" ] }, { "cell_type": "code", "execution_count": 125, "id": "f53fe886", "metadata": {}, "outputs": [ { "data": { "image/png": "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bJP5Xdx+++1ceumlTJgwwePxpnzt7733HiNGjODKK6+kffv2DBs2jBdeeMH5fFO+9nPPPZdly5axc+dOAL7++mtWrVrFJZdcAjTta3fnzXWuW7eO0tJSj2PS09MZOHBgk/pd2HJycnA4HM5KYlO+/oqKCn76059y3333MWDAgGrPR+K1N8rNAgPt2LFjlJeXk5qa6vF4amoqWVlZYTqr4LMsi1/96lece+65DBw4EMB5vTX9Lvbu3Rvycwy0+fPns379etauXVvtuaZ87d9++y3PPvssv/rVr/jNb37Dl19+yZ133kl8fDzXX399k772Bx54gJycHPr27Ut0dDTl5eU8+uijXH311UDT/nd35811ZmVlERcXR6tWraod09T+W1hUVMSvf/1rrrnmGuemeU35+h9//HFiYmK48847a3w+Eq9dAcWNw+Hw+N6yrGqPNSV33HEHmzZtYtWqVdWea4q/i8zMTO666y4WL15MQkJCrcc1xWuvqKhgxIgRzJgxA4Bhw4axdetWnn32Wa6//nrncU3x2t944w3mzZvH66+/zoABA9i4cSPTpk0jPT2dG264wXlcU7z2mvhznU3td1FaWspVV11FRUUFf/vb3+o9vrFf/7p16/jrX//K+vXrfb6OcF67hniAtm3bEh0dXS0lHjlypNpfG03F1KlTee+991i+fDmdOnVyPp6WlgbQJH8X69at48iRIwwfPpyYmBhiYmJYsWIFTz/9NDExMc7ra4rX3qFDB/r37+/xWL9+/ZxN4E353/2+++7j17/+NVdddRWDBg3ipz/9KXfffTczZ84Emva1u/PmOtPS0igpKSE7O7vWYxq70tJSpkyZQkZGBkuWLHFWT6DpXv/KlSs5cuQIZ5xxhvO/fXv37uWee+6ha9euQGReuwIKEBcXx/Dhw1myZInH40uWLGHMmDFhOqvgsCyLO+64g7fffpuPP/6Ybt26eTzfrVs30tLSPH4XJSUlrFixotH/LsaPH8/mzZvZuHGj82vEiBFce+21bNy4ke7duzfZaz/nnHOqTSffuXMnXbp0AZr2v3tBQQFRUZ7/qYuOjnZOM27K1+7Om+scPnw4sbGxHsccOnSILVu2NInfhR1Odu3axdKlS2nTpo3H8031+n/605+yadMmj//2paenc99997Fo0SIgQq89LK25EWj+/PlWbGys9eKLL1rffPONNW3aNCs5Odn67rvvwn1qAfXLX/7SSklJsT755BPr0KFDzq+CggLnMY899piVkpJivf3229bmzZutq6++2urQoYOVm5sbxjMPDvdZPJbVdK/9yy+/tGJiYqxHH33U2rVrl/Xaa69ZSUlJ1rx585zHNNVrv+GGG6yOHTtaH3zwgZWRkWG9/fbbVtu2ba3777/feUxTufZTp05ZGzZssDZs2GAB1pNPPmlt2LDBOUvFm+u89dZbrU6dOllLly611q9fb11wwQXWkCFDrLKysnBdltfquv7S0lJr8uTJVqdOnayNGzd6/PevuLjY+RqN9frr+7evquosHsuKvGtXQHHzzDPPWF26dLHi4uKsM8880zn1tikBavz65z//6TymoqLCevjhh620tDQrPj7eOu+886zNmzeH76SDqGpAacrX/v7771sDBw604uPjrb59+1rPP/+8x/NN9dpzc3Otu+66yzrjjDOshIQEq3v37tZDDz3k8aHUVK59+fLlNf7/+4YbbrAsy7vrLCwstO644w6rdevWVmJionXZZZdZ+/btC8PV+K6u68/IyKj1v3/Lly93vkZjvf76/u2rqimgRNq1OyzLskJRqRERERHxlnpQREREJOIooIiIiEjEUUARERGRiKOAIiIiIhFHAUVEREQijgKKiIiIRBwFFBEREYk4CigiIiIScRRQREREJOIooIiIiEjEUUARERGRiKOAIiIiIhHn/wF+FKzikzo2MgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with torch.no_grad():\n", " # shift train predictions for plotting\n", " train_plot = np.ones_like(timeseries) * np.nan\n", " y_pred = model(X_train)\n", " y_pred = y_pred[:, -1, :]\n", " train_plot[lookback:train_size] = model(X_train)[:, -1, :]\n", " # shift test predictions for plotting\n", " test_plot = np.ones_like(timeseries) * np.nan\n", " test_plot[train_size+lookback:len(timeseries)] = model(X_test)[:, -1, :]\n", "# plot\n", "plt.plot(timeseries, c='b')\n", "plt.plot(train_plot, c='r')\n", "plt.plot(test_plot, c='g')\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }