Last active
September 20, 2017 23:34
-
-
Save spencerkclark/299d5e4a929c416e52b7d748b48bf834 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Finite differencing with xarray and dask\n---------------------------------------" | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "\"\"\"xarray/dask-compatible finite differencing functions\"\"\"\nimport dask.array as darray\nimport numpy as np\nimport xarray as xr\n\nfrom scipy.ndimage.filters import correlate1d\nfrom sympy.calculus import finite_diff_weights\nfrom xarray.core import computation\n\n\ndef centered_diff_weights(accuracy, spacing=1.):\n \"\"\"Compute the weights of a central difference approx. to derivative\n\n Does so for an arbitrary even-valued order of accuracy.\n\n Parameters\n ----------\n accuracy : int\n Order of accuracy of approximation (must be even)\n spacing : float\n Uniform spacing between the points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n if accuracy % 2:\n raise ValueError('Can only generate centered difference stencil '\n 'for an even-valued order of accuracy. Got '\n '{}'.format(accuracy))\n domain = np.arange(0., accuracy + 1.) * spacing\n center = (accuracy / 2.) * spacing\n return finite_diff_weights(1, domain, center)[1][-1]\n\n\ndef forward_diff_weights(accuracy, spacing=1.):\n \"\"\"Compute the weights of a forward difference approx. to derivative\n\n Does so for an arbitrary order of accuracy.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, domain[0])[1][-1]\n\n\ndef backward_diff_weights(accuracy, spacing=1.):\n \"\"\"Compute the weights of a backward difference approx. to derivative\n\n Does so for an arbitrary order of accuracy.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, domain[-1])[1][-1]\n\n\ndef upwind_weights_right(accuracy, spacing=1.):\n \"\"\"Compute the weights of a right upwind difference approx. to derivative\n\n Does so for an arbitrary order of accuracy. For use when v < 0.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n point = np.ceil((accuracy + 1) / 2.) * spacing\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, point)[1][-1]\n\n\ndef upwind_weights_left(accuracy, spacing=1.):\n \"\"\"Compute the weights of a left upwind difference approx. to derivative\n\n Does so for an arbitrary order of accuracy. For use when v > 0.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n point = ((accuracy + 1) // 2 - 1.) * spacing\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, point)[1][-1]\n\n\ndef xcorrelate1d(da, dim, kernel, **kwargs):\n \"\"\"Apply ``correlate1d`` along a given dimension\n\n Parameters\n ----------\n da : xr.DataArray\n DataArray\n dim : str\n Dimension name\n kernel : array-like\n 1D sequence of numbers (i.e. correlation weights)\n **kwargs\n Keyword arguments to supply to ``scipy.ndimage.filters.correlate1d``\n\n Returns\n -------\n xr.DataArray\n \"\"\"\n def apply_corr(arr, **kwargs):\n if not isinstance(arr, darray.core.Array):\n return correlate1d(arr, **kwargs)\n else:\n origin = kwargs.get('origin', 0)\n depth = int(len(kwargs['weights']) / 2 + np.abs(origin))\n axis = len(arr.shape) - 1\n\n if kwargs['mode'] != 'wrap':\n # TODO: Don't hard-code periodic boundary conditions\n raise NotImplementedError(\n 'xcorrelate1d currently only supports periodic boundary '\n 'conditions on dask arrays')\n \n return darray.ghost.map_overlap(arr, correlate1d,\n depth={axis: depth},\n boundary={axis: 'periodic'},\n **kwargs)\n\n return computation.apply_ufunc(apply_corr, da, input_core_dims=[[dim]],\n output_core_dims=[[dim]],\n kwargs=dict(weights=kernel, **kwargs),\n dask_array='allowed')\n\n\ndef xdiff(da, dim, method='centered', accuracy=2, spacing=1, mode='wrap'):\n \"\"\"Compute the derivative to an arbitrary order of accuracy\n\n Assumes uniform grid spacing.\n\n Parameters\n ----------\n da : xr.DataArray\n DataArray\n dim : str\n Dimension name to perform derivative along\n method : str\n Options are 'centered', 'backward', 'forward', 'upwind_left', 'upwind_right'\n accuracy : int\n Order of accuracy of approximation\n spacing : float\n Grid spacing\n mode : str\n How to handle boundary; options are same as those that can be passed to\n correlate1d\n\n Returns\n -------\n xr.DataArray\n \"\"\"\n if method == 'centered':\n weights = centered_diff_weights(accuracy, spacing)\n origin = 0\n elif method == 'forward':\n weights = forward_diff_weights(accuracy, spacing)\n origin = -(len(weights) // 2)\n elif method == 'backward':\n weights = backward_diff_weights(accuracy, spacing)\n origin = len(weights) // 2\n elif method == 'upwind_left':\n weights = upwind_weights_left(accuracy, spacing)\n origin = -1 # Regardless of whether len(weights) is even or odd, origin = -1 in this case.\n elif method == 'upwind_right':\n weights = upwind_weights_right(accuracy, spacing)\n origin = len(weights) % 2\n else:\n raise ValueError('Invalid differencing method '\n 'specified: {}'.format(method))\n return xcorrelate1d(da, dim, weights, origin=origin, mode=mode)\n\n\ndef xdiff_upwind(da, v, dim, accuracy=2, spacing=1, mode='wrap'):\n \"\"\"Compute the upwind approximation to the derivative\n \n Parameters\n ----------\n da : xr.DataArray\n DataArray to take derivative on\n v : xr.DataArray\n DataArray of the velocity field\n dim : str\n Name of dimension\n accuracy : int\n Even order of accuracy of differencing approximation\n spacing : float\n Distance between points (must be uniform)\n \n Returns\n -------\n xr.DataArray\n \"\"\"\n neg = v < 0.\n pos = ~neg\n left = xdiff(da, dim, method='upwind_left', accuracy=accuracy, spacing=spacing, mode=mode)\n right = xdiff(da, dim, method='upwind_right', accuracy=accuracy, spacing=spacing, mode=mode)\n return neg * right + pos * left\n\n\ndef xgradient(da, dim, accuracy=2, spacing=1.):\n \"\"\"Arbitrary even-order extension of np.gradient for DataArrays.\n\n Meant for computing approximations for derivatives in a non-peridiodic\n setting. Uses centered differencing in the interior, and forward and\n backward differencing on the left and right edges respectively. Currently\n only supports operations along a single axis (though operations along\n multiple axes can be done with repeated calls to ``xgradient``).\n\n Parameters\n ----------\n da : xr.DataArray\n DataArray\n dim : str\n Name of dimension\n accuracy : int\n Even order of accuracy of differencing approximation\n spacing : float\n Distance between points (must be uniform)\n\n Returns\n -------\n xr.DataArray\n \"\"\"\n interior = xdiff(\n da, dim, method='centered',\n accuracy=accuracy, spacing=spacing).isel(\n **{dim: slice(accuracy // 2, -accuracy // 2)})\n \n left = da.isel(**{dim: slice(None, 2 * accuracy)})\n \n if isinstance(left.data, darray.core.Array):\n left = left.chunk({dim: left.sizes[dim]})\n \n left = xdiff(\n left, dim, method='forward',\n accuracy=accuracy, spacing=spacing).isel(\n **{dim: slice(None, accuracy // 2)})\n \n right = da.isel(**{dim: slice(-2 * accuracy, None)})\n \n if isinstance(right.data, darray.core.Array):\n right = right.chunk({dim: right.sizes[dim]})\n \n right = xdiff(\n right, dim, method='backward',\n accuracy=accuracy, spacing=spacing).isel(\n **{dim: slice(-accuracy // 2, None)})\n\n return xr.concat([left, interior, right], dim=dim)", | |
"execution_count": 1, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": "//anaconda/envs/xdiff-dev/lib/python3.6/site-packages/xarray/core/formatting.py:16: FutureWarning: The pandas.tslib module is deprecated and will be removed in a future version.\n from pandas.tslib import OutOfBoundsDatetime\n", | |
"name": "stderr" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "import matplotlib.pyplot as plt\n%matplotlib inline", | |
"execution_count": 2, | |
"outputs": [] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Simple 1D case without dask\n--------------------------" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])", | |
"execution_count": 3, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxdiff(test, 'x', accuracy=2, method='centered', spacing=dx).plot(label='result (centered)')\nxdiff(test, 'x', accuracy=2, method='forward', spacing=dx).plot(label='result (forward)')\nxdiff(test, 'x', accuracy=2, method='backward', spacing=dx).plot(label='result (backward)')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 4, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 4, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x113081c88>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x113081e10>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Derivatives can be computed to arbitrary order of accuracy. E.g.\n# if we plot the absolute value of the error at each point with the \n# three differencing methods we can see the error decreasing as we \n# include more points in the stencil.\nfig, axes = plt.subplots(1, 3, sharey=True)\nfig.set_size_inches(10, 2)\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\n\nfor ax, method in zip(axes, ['centered', 'forward', 'backward']):\n for order in [2, 4, 6, 8]:\n result = xdiff(test, 'x', accuracy=order, method=method, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\n ax.set_title(method)\n ax.set_yscale('log')\n ax.legend(loc='lower center', ncol=2)", | |
"execution_count": 5, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x1151d3390>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Simple 1D case with dask\n------------------------" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x']).chunk({'x': 10})", | |
"execution_count": 6, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.data", | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 7, | |
"data": { | |
"text/plain": "dask.array<xarray-<this-array>, shape=(100,), dtype=float64, chunksize=(10,)>" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxdiff(test, 'x', accuracy=2, method='centered', spacing=dx).plot(label='result (centered)')\nxdiff(test, 'x', accuracy=2, method='forward', spacing=dx).plot(label='result (forward)')\nxdiff(test, 'x', accuracy=2, method='backward', spacing=dx).plot(label='result (backward)')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 8, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x11552fd68>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x1155b7860>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Derivatives can be computed to arbitrary order of accuracy. E.g.\n# if we plot the absolute value of the error at each point with the \n# three differencing methods we can see the error decreasing as we \n# include more points in the stencil.\nfig, axes = plt.subplots(1, 3, sharey=True)\nfig.set_size_inches(10, 2)\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\n\nfor ax, method in zip(axes, ['centered', 'forward', 'backward']):\n for order in [2, 4, 6, 8]:\n result = xdiff(test, 'x', accuracy=order, method=method, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\n ax.set_title(method)\n ax.set_yscale('log')\n ax.legend(loc='lower center', ncol=2)", | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x11577ff28>", | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAACqCAYAAAADbFNRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8HMX1wL9zVXenU+9dtizbcsUdN0w1ENMNJPQeAoRA\nAoHwIwmEJJBAGqEGAgkJNfRuqo3BGFzANu5NVu/17nR9f3/MSpZsS5ZtWSfJ8/181tZtnZ3dN/Pm\nvTdvhaZpKBQKhUKhUCgihyHSBVAoFAqFQqE40lEKmUKhUCgUCkWEUQqZQqFQKBQKRYRRCplCoVAo\nFApFhFEKmUKhUCgUCkWEUQqZQqFQKBQKRYRRCpmizxFC/EsI8dtIl0Mx9BBCjBRCfCOEaBVC3Bjp\n8nSHEGKxEOKqSJdDMXQQQhQLIU7ow/PNE0KU9dX5DqEcqr/QUQrZEEcIcZkQ4vNIl0Oh6CN+DizW\nNM2padqDkS6MQqFQ9BVKIVP0iBDCFOkyKBSdyAXWH+hBh+s9VvKhUPQOJSv7RylkAwwhRLYQ4lUh\nRK0Qol4I8ZC+/gohxEYhRKMQYpEQIrfTMZoQ4lohxFZ9+8NCMhp4DDhaCOESQjTp+1uFEA8IIUqE\nENVCiMeEEDZ92zwhRJkQ4jYhRBXwtL5+gRDiWyFEkxBimRBifKfrHyWEWK27kV4EovqvxhRHCkKI\nT4BjgYf093mCEOIZXVZ2CSHuFEIY9H0vE0J8IYT4ixCiAbhL32eyvv0iXW6K9N9XCSFe1/+eJoT4\nUn/XK4UQDwkhLJ3KoQkhrhdCbAW26utOFEJsEkI06zIr+rVyFEcKU4UQG/R2/mkhRJQQIl4I8bYu\nB43631ntBwghEvR9K/Ttr+/rxEKIG/VzZwkhlgghztHXz9bf+VP13ycIIb7V/x4uhPhE76vqhBDP\nCiHiOp2zWO9L1gJuIYRJ9RfdoxSyAYQQwgi8DewC8oBM4AUhxJnAHcDZQDKwFHh+j8MXAFOBCcB5\nwHxN0zYC1wJfapoWrWlau6D8ASgEJgIF+nV+1elcaUAC0hpxjRBiEvAU8EMgEXgceFNX7CzA68B/\n9GP+B5zTF/WhUHRG07TjkO/+DZqmRQM/A2KBYcAxwCXA5Z0OmQ7sAFKA3wFLgHn6trn6tmM6/V6i\n/x0CbgaSgKOB44Hr9ijOmfr5i4QQScArwJ36MduBWYd6vwrFPrgQmA8MR7bhdyL78aeR7XUO0AY8\n1OmY/wB2YAxSFv6y50mFEL8ELgOO0TStjN7LigDuBTKA0UA2cNcep/8B8D0gTi+r6i+6Q9M0tQyQ\nBdn41wKmPda/B1zZ6bcB8AC5+m8NmN1p+0vA7frflwGfd9omADcwfI/r7tT/ngf4gahO2x8F7tmj\nTJuRAjoXqABEp23LgN9Guj7VMvQWYDFwFWAEfEBRp20/RMaXtb/3JXsceyXwpv73Rv08L+i/dwGT\nurnmTcBrnX5rwHGdfl8CLO/0WwBlwFWRri+1DJ0FKAau7fT7VGD7PvabCDTqf6cDYSB+H/vNA8qB\nPwOfA7Gdth0PrNX/fl+XleX67yXA2d2U8Uzgmz3KfEWn36q/6GFRFrKBRTawS9O04B7rc4G/6S6U\nJqAB2ehndtqnqtPfHiC6m2skI0dLqzqd7319fTu1mqZ597j+z9r314/JRo6KMoByTZcsnV29uVmF\n4hBIAix0fdd20VUmSvc4ZgkwRwiRhlToXgRmCSHykJa2djdMoe72qRJCtAC/16/Xmc7nzuj8W5eF\nPa+tUPQFnd+rXUCGEMIuhHhcd8m3AJ8BcbrHJRto0DStsZvzxQHXAPdqmtbcaf2XQKEQIhWp4D0D\nZOvW4Gn6NRBCpAghXhBClOvX/i/7lxXVX3SDUsgGFqVAjtg7+LEU+KGmaXGdFpumact6cU5tj991\nSJP2mE7nitWkC6i7Y0qB3+1xfbumac8DlUCmEKJzzExOL8qlUBwKdUAAOVhoJwc54m+ny3usado2\n5GDlRuAzTdNakQOZa5BW5LC+66PAJmCEpmkxyHCBPWPCOp+7EtnxAaDLQjYKRd/T+b3KQVqbfgaM\nBKbr7+tcfbtAtt0JneO69qARGe7ytBCiw82uaZoHWAX8BPhO0zQ/0pL1U6RVrk7f9V6kLIzXr30R\n+5cV1V90g1LIBhZfI1/Y+4QQDj1gcxYyMP8XQogxAEKIWCHEub08ZzWQ1R6UrHc6TwB/EUKk6OfL\nFELM7+EcTwDXCiGmC4lDCPE9IYQTOZIKAjfqAZtnI0dQCsVhQ9O0ENI1/zshhFPISS4/RY7Qe2IJ\ncAO7Y2AW7/EbwAm0AC4hxCjgR/s55zvAGCHE2fpg6kZkHKZC0ddcrwfdJyAHCi8i39c2oElf/+v2\nnTVNq0SGvDyiB/+bhRBzO59Q07TFyNi014QQ0ztt6q2suPRrZwK37qf8qr/oAaWQDSD0TuY0ZKB9\nCTIO5XxN015DBuK/oJuFvwNO6eVpP0GmCagSQrSPam4DtgHL9fN9hBxhdVeulcDVyEDRRv3Yy/Rt\nfuRkg8v0becDr/aybArFofBjZDzkDmQMzHPIySc9sQTZiXzWzW+AW4ALgFbkYOTFnk6oWwvOBe4D\n6oERwBcHcB8KRW95DvgA+c7vAH4L/BWwIa3Gy5EhKJ25GGlN3gTUIGMiu6Bp2ofICTFvCn0mMr2T\nlbuBSUAzcmDSY9uv+oueEV1duQqFQqFQKBSK/kZZyBQKhUKhUCgijFLIFAqFQqFQKCKMUsgUCoVC\noVAoIoxSyBQKhUKhUCgijFLIFAqFQqFQKCLMoPr6elJSkpaXlxfpYigUAKxatapO07Tk/e95+FAy\noRhIKJlQKLpyIDIxqBSyvLw8Vq5cGeliKBQACCEi/skPJROKgYSSCYWiKwciE8plqVAoFAqFQhFh\nlEKmUCgUCoVCEWEGlctSoVD0nkuf+hoNMAowGQ1YjAasJgNRFiMOixGH1US01USMzUyczUyCw0Ji\ntJVkp5Vo6+BqGsJhjQaPnzqXj3qXn0aPn+a2AC1tQVy+AG5fiDZ/CG8whD8YJhAKEwxrhMJdv1Ri\nNAhMBoHZaMBiMmAzG4kyG4m2moiOMuGMMhFrM5Ngt5AQbSEp2kqC3YLBsOf3lAc2Ll+Q2lYf9S4f\nDW4/TZ4ALd4Ard4gbl8QTyCE1x/CFwzjD4UJ6vUFMD4rllvnj4rwHRw43kCIq5/p6so0GQRGgwGL\nSWA1GYkyG7CZTURbjURHmYiJMhNrMxPvsJCkP+9Ym5mu38Ye2GiaRktbkFqXt0M2mjzyWbd6A7j9\nITz+EN5ACF8whD+oEQrvft7tGERX2bCaDNgtRuzt7UiUbEvi7RYSHBaSnVYSHRZMxsFl9/EGQtS2\n+qhz+Wj0+Gl0d5UNtz9Imz+s15Wsp6l5Cfxo3vBDvvbganUVCkWvcfuCBMIa4bBGICSVEG8gjDcQ\noi0gG+HuiLaaSI+NIjPeRk6CndxEB8OTHYxMc5IWExWRDskfDLOjzsXWahc7at3sqndT1thGeVMb\n1S3evTqQdowGgd1ixGY2YrMYsRgNmI0GzEaBEIJ2XUoDQmGNYEjWly8oG12PL4TbH6Sb02M2ClKc\nsq6y4+3kJtrJT3JQmOpkWLIDcwQ6JE3TqGz2sqW6lW01Lorr3ZQ2yLqqbGrD3cOzt1uM2C1SEbWa\nDB0dsEGvK18g3I930re4fUFAPmtNg7CmEeh43iG8gTBtfvm8u/uqoNVkID02ioy43bIxLFk+79wE\ne0SU83BYo6TBw5bqVrbXuilpcFPS4KGiyUtFUxu+4L6fmRDgsJiIMhuxWQxYTUbMRoOuqHaVjXBY\nI6jLR0ddBUK4fcFuZc8gINlpJT3WRla8jbxEB/lJDgpSoilMdWKzGA9TjfRMg9vP5qpWttW6KK6T\ndVXW2EZlcxtNnkC3x0mF3dgxULOYDJiMApev+2MOhCGjkD33VQn+YAiDQWAQArNRYDEZsBjli9Yx\nytUtArE2c0QaysNFIBTWLQIBXL4gLl9Qdrz+MP5Qu1VAI6zJDhqQnVEni4BVH/XYLEbsFmkNaLcI\n2MzGQTUq7IlwWKPVF6SlTY56XL4gHn9QHyHKjjgYkqPExGgrp45Lj3SRD4qXfzSzx+2hsIZLr4cm\nT4AGj596l4+aVh/VLbIhL2tsY9WuRlq9wY7j4u1mxmbGMiknnun5CUzKjSfK3PcNa3WLl+U76vl6\nZwNryprYXNVKILS74U+PjSI7wc60/ATSYqNIi4mSFiuHHKHH2szE2Ex98u5qmkZbIERLW5DmtgCN\nHj/1Lj+1rV6qW31UNXspb2xj2fY6Xlnt7TjOYjQwMs3JUTlxTM6NZ+bwJJKd1kMqy77wBkKsLG7k\n6531fFPaxNqyZprbdncSzigTuYl2CpKjmV2QRHpslLRg6Ba+OLuZmCgz0VEmjIPM2tdbosxGXr1u\nVq/2DYc13P4gLd4gTbpFqc7lo1aXjcpmL+VNbXy0sZo6l7/jOLvFSFF6DEflxDE1L4HpwxKJtZn7\n/F5avAG+3tHAiuIGVpc0sqGipYuSneiwkJ1gZ0xGDCeMTiE1Rn/eDivxDjNxdgsxUSYcFtMhK5Ca\npuELhmn1Bmlu89PoCVDvktbqmhYvVS2yrtaWNfPed1UdVmmDgGHJ0UzIimNKXjwzhiWSl2jv834m\nFNZYV97M8h31rNrVyLqyZqpadsuozWwkO0EOpibnxpEeayPZaSUp2kK8XS6xNikbh1tnGFQfF58y\nZYrW3eyZCXd/0KUB6g1Oq4nEaGlaTXFGkRYbRaY+6slLspOT4MBiirzS5g+GKWlwU1znoaTBQ3lT\nG1XNXmpavbrbwU+rL7j/Ex0CFpOBRIc02ac4raTqdZUVbyNXH/UcjobnQNE0jeoWHzvqXJTqo56K\nJi/VLd4uZujurB17MiknrttGXAixStO0KX1Y/AOmJ5noKzRNo8HtZ1uNiy3VrayvaOHb0ia2VLcS\n1uSocXZBMqeOS2P+mDQch+Du3Fnn5s1vK3h/fRUbK1sAKafjs2MZmxlLUXoMhalO8pMch0UJ7Ava\n/CF21rnZWtPKhooW1pY1s7asqaPDHJsZw/yiNM48KpPsBPtBX8flC/L+d1W8u66SL7bV4QuGMRoE\nI1OdTMiWdTUyLYaClGji7f3jZjtSZKIzrd4AO2rdbK6Wz3tdeTPrypvx689jck48J49N47QJGYek\njNe7fLy1RsrGiuJGQmENi9HAmMwYJmTFSdlIk1bZmKjIt8X7IhAKU9LgYWu1i42VLXxX3syasqYO\npTY30c6Jo1M5bUIG47NiD/qdDYTCfLallrfWVPDp5toO3SAv0c7E7DjGZMQyMs3JiNTow27xPxCZ\nGDIKWZPeybZbgIJhDb9u7fAGpAna4wvh8skRbpNHjnLbRz21rT4qmtvwdjLHGw2CvEQ7o9NjGJcZ\ny1E58YzPij2sHYE3EGJtWTPflDSyrryZjZUtFNd7usS6RJkNZOhavNTkrcTro9xYm5loqwm71dhh\niraapMvBZBAdFkSQHW1I0zrcNO111W6GltaTIC3eAI1uP3UuP/VuH9UtPqqa22jcw7Sb7LQyKs3J\n2MxYJmTFMjk34bBYA9rRNI3ttW5W7WpgbVkzGypb2FrtwtVJOTUISI2JIjUmihTdIpDo0C0CNrMc\nJVpN2C0m3Qzd7s6SpmiLydBt43Ykdj6dafUGWFHcwJLNtXy0sYbypjYcFiPnT83h6rn5pMfaenUe\nTdNYtr2eRxZv44tt9QgBU3LjOW5UKnNGJDE6PWbQW22CoTAbKlv4fFsdH2+sYdWuRgDmFiZz7dxh\nzCxI6vW5KpraeGzJdl5ZVYbbHyIzzsaJRakcMzKZqXkJEY3/O9Jloh1fMMSa0mY+21LLRxur2VTV\niskgmD82jRuOLWB0ekyvz7WpqoXHFm/n7bWVBMMahanRnFiUyuyCZI7KiRuwA5PeomkaO+rcLNtW\nxyebavh8Wx2BkEZRegw/PGYYC8Zn9Fr+W7wBnllWzL+/3EVtq494u5njRqUyb2QyM4YlHtb+qDuO\nSIWsL2i3BJQ0eCiud7O9Zveop7ypDZAuiCl58Rw7MoWTx6Yd0gi3ndIGD+9/V8Wnm2tYWdyIPySV\nwsw4G0UZMYxMdTI8xUFeooOcBDsJDsuAcB96/EHKGtsornOzs87NlmoXm6pa2FK927U0IiWauYXJ\nnFSUypS8hEPuWN2+IJ9uruGjDdV8vq2uY2TltJooyohhVJqTgpRo8pOiyU20kxYbddjMzKrz2U04\nrLFyVyPPfbWLt9dWYjIKrptXwI/mDe+x/ssaPfzi1XUs3VpHWkwUF83IYeHkbNJio/qx9P1PeVMb\nr6wq45kvd1Hn8nH8qBTuPmMMWfHdtyf+YJiHP93Go4u3o6Fx2oQMLpyew6Sc+AHRHoCSie7YWt3K\niytKeXFFKa2+IOdOzuKXpxX1aMlq8Qa4991NvLCiBLvZyHlTszl/ajaj0nqvzA1GmtsCvLmmgmeW\nFbO1xsWoNCf3L5zAuKzYbo/RNI3/rSrjD+9tot7tZ25hMhfPyGXeyOSIhyYphewwUO/y8U1JE1/t\nrGfp1jo2VbUCMC0vgQtn5PC9cekHNJskGArzzrpKnl1ewtfFDQCMSnMyZ0QS0/MTOSonjsTo/tfm\n+wJvIMT6ihZWFjfwxfZ6lu+oxx8MkxEbxblTsrnk6NwDvrf1Fc08/UUx76ytpC0QItFhYc6IJI4e\nnsiUvATyEx39HkyrOp99U9rg4b73NvHOukqm5yfw8IWTSNrH8/5sSy3XPbsaTdP42UkjuWB6zqAf\n7R8o3kCIfy8r5sGPt2IxGXjogknM2oe1rNHt57Knv2ZNWTNnTMzg1vkje1TeIoWSiZ5p9gR4ZPE2\nnli6g7SYKJ65cjoFKdF77betppWrn1lFSYOHS4/O4yfHjyDWPjDdkIeLcFjjnXWV/PadDdS5/Nx1\n+hgunpG7137eQIg7XlvHq6vLmZoXz68WjOlReetvlELWD5Q2eHhzTQX/W1lKcb2HvEQ7vzqtiONG\npe732E82VfObtzZ0HHfulGxOn5DRJ9a2gYjLF+STTTW8vKqMpVtrsZoMXD1nGNcfW7DfDris0cM9\nb29g0fpqHBYjp0/M4MyJmX1ibTtUVOfTM699U8btr6yjICWaV340s8uzXrKllqufWcmwJAdPXDJl\nyL77vWVnnZtrnllJcb2bF394NJNy4ju2Nbr9/OCJ5eysc/OX8ycO6EkmSiZ6xzcljVz9zCoAXrhm\nOgUpzo5tVc1eFvx9KQCPXDiZafkJESnjQKHZE+Dml77lk0013H36GC6dmdexTdM0bnjuG95ZV8lN\nJ4zgxuNGDLgUNEoh60fCYY0PNlTzwAeb2Vbj4pxJWfz+7LFYTXsrGr5giDte/Y5XVpdRkBLNLSeN\n5KSi1AH3Ah1OttW08rePt/HWmgrykxw8eekUhifvPUIEeHNNBbe9vBaAH80bzqUz8wbExIF2VOez\nfz7ZVM0V/1rJeVOy+OPCCYB0xRzzx09JjYni+atnEO+wRLiUA4NmT4AFDy0lGNJ4+8ezO6zIP3tp\nDW+tqeCfl01hzoiIfiZyvyiZ6D3balx8/x9fkhFn443rZyGEwB8M8/1/fMnmqlbeuGFWF0XtSMYf\nDHPds6v5ZFM17980l8JUWS9PLt3Bb9/ZyC9OGcUPjzn0PGCHgwORichPIRzkGAyCk8em8e6Nc7jx\nuAJeWV3G5U+vwOPvOuvR4w9y+dMreGV1GTceV8C7N87h5LFpR5QyBlCQ4uTvPziK/145nVZvgHMe\nXcaa0qa99nvq853c+Pw3jMuM5cOfzuXG40cMKGVM0TuOG5XKDccW8NLKMtaWyef8xGc7aPQEeODc\nCUoZ60Ss3cyjF06m3uXnkcXbAdhc1cqr35Rx2ay8Aa+MKQ6MgpRobj9lNGvLmnl3XRUAr39TzuqS\nJu47Z7xSxjphMRn448LxOCwm7l+0GZADuz++v5kTi1K5Zu6wCJewb1AKWR9hMRn46Ukj+dO5E1i2\nvZ4HFm3psv3+RZtZtr2eP583gZ+eNHJApNOIJLNHJPHKj2YSbTVxw/OrOxI2Aqza1cg972xg/phU\nnrly2oCMlVH0nitm5yMEfLqplppWL08u3cmC8emMzRw4cR4DhbGZsRw9PJFPN9cAcP+iTURbTVzX\nB1nAFQOPs47KZGSqkwc+2EwgFObTzTWkx0axYPzAdUtHigSHhWvmDuPDDdWs2tXIsm11+ENhrp4z\nbMBMajlUjmyt4DBwzuQsLjk6l6eX7WTVLhmsv7K4gX8tK+bSo3M5e1JWhEs4cMhNdPCX8ydS1tjW\nMerxBkL8/OU1ZMTa+NN5E4+4IO+hSILDwvisOJZsqeG/y0vwBkP87KSRkS7WgOWYwmR21LrlbOKN\nNVw9ZxhxdmVJHIoYDYKbTyxkZ52b976r4vOtdRxTmDxkFIy+5so5+cTbzfzjs+0s2VKL02riqJy4\nSBerz1AK2WHg5yePIsVp5eFPpdvhkcXbSXFa+fnJg+/7b4ebqXkJXDAth39/WUxzW4BF66vYXuvm\nnjPHDLrvKSq655jCZL4tbeLZ5buYV5hMfpIj0kUasMwbKV2TP395LWaj4ILpOREukeJwcmJRKplx\nNu55ewOtviDHFCrXdHfYLSbOm5rNhxuqWbS+mlkFSRFPa9GXRPROhBDzhBBLhRCPCSHmRbIsfUm0\n1cSwpGhc+udmWr0BhidHH1IG86HMuMxYNE3G2bXodTYuc+iMehRSIQtrUO/2c/HRe09dV+wmP8lB\ndoKN2lYfp45L32fKEMXQwWiQSndtqw+jQRxQkuAjkQun5aIhv0d5zMihpbwetEImhHhKCFEjhPhu\nj/UnCyE2CyG2CSFu389pNMAFRAFlB1uWgYjJKAiEZYLXQEiLeIqGgUx73QRDGkE9Ka5J1deQYkJW\nLLE2M1nxNo4pTIl0cQY0QogOK8m+8i4phh7nT83GbBRMyolTk5f2Q06inXm6fMwdYtbEQzHZ/At4\nCHimfYUQwgg8DJyIVLBWCCHeBIzAvXscfwWwVNO0JUKIVODPwIWHUJ4BhdEgOj53FAprSsHoAZNR\nV8jCWkedGY2qvoYSJqOB+xeOJ8ZmVoOTXvDDucMpSI5mcm78/ndWDHqSoq385fyJZMT17nNjRzr/\n970iTiiqJ3OI1ddBK2Sapn0mhMjbY/U0YJumaTsAhBAvAGdomnYvsKCH0zUCQ8oubzIYCOqfDwqG\ntQPK4n+kYTLIugmFwwR1hcxsUPU11DhpTFqkizBoyE6wc9ms/EgXQ9GPLBifEekiDBoKUqL3+YWD\nwU5fBzVlAqWdfpcB07vbWQhxNjAfiENa2/a1zzXANQA5OYMnuNVkEAR1l2UwFFYWsh5or5tAJ5el\nsqJ0z2CVCYXicKFkQjEU6GszxL560W4/BaBp2quapv1Q07TzNU1b3M0+/9A0bYqmaVOSkwePv9hk\nFB3WnpCykPVIe92EwlpHnSkFtnsGq0woFIcLJROKoUBfawllQHan31lARR9fY1BgMogOl2UgrCxk\nPbHbQhYmGNIwCI64LxgoFAqF4simr12WK4ARQoh8oBz4PnBBH19jUGAyGnYH9YdUUH9PtAf1t1vI\nlDWxj3jjBhACjBYwWsEcBWY7WKLBGg3WGLDFgS0B7IngSALjIJ3hFfSBuxY89dDWCG1N4GsBXyv4\n3RDwyH1CfrmEQ6CFdx8vDHIxmmV9mdrrqr2+nHpdxet1lQyWQZpLLRyGtgZZX+115W3W66oV/B4I\nenfXVSgIWmj38aljYOaPI1f+gyXghXd/Ju+/s+NGGMFg1OXEosuJbfdzj4qFKP3ZO5LAngTGQZrC\nqLOceBrA2wTeFvC75HMP6M8+6INwYG85QXStK5NVryuHrK+oGFlftgSwJ4AjRcrQYCQcknXkqZeL\nt11OXLK+Ah4ItMm6Sh8Pky455Ese9FslhHgemAckCSHKgF9rmvZPIcQNwCLkzMqnNE1bf8ilHIR0\niSELax1Kh2JvjHvEkCnltY/YsaRTp+qXjUfnjnVf2JMgJh1isyEuB+LzIbEAkkdCbJZU8CJBOASN\nxVC7GRq2y7+bSqC5DFoqZGPZEwYTmGxgsoDBLH8Lgwyy0JD/hIMQCsgl2CbrrCcs0eBMg5hMiMuG\n+DxIGA5JhZA0QnZWkcJVC7WboH4rNOzU66oUWirBVb2f90DITtZklZ2uwSSVlvZHLwbpgEkLw/ZP\n9eeu34yGrIv2Zx/0SYVkf/XjSAJnJzlJyIfE4ZA8Sr4PkZSThp1Qtxnqt3WSk3JoreyFnJjlYMSk\nK1zCuA85Ce1uU9oV956wOKWcxGbKuorLlXWVNFK2LaYIfoXCVQu1G6FuKzTuhMZdsk1prQRXTc/v\ngTDodWWVymskFTJN037Qzfp3gXcPukRDBGMnl2UwrPKQ9YR5jxgypZD1ETev23td0C9Hd75WaUFq\na5SLu1Y2Tq4qqeA07oKdn8l927HGQNp4yDwKsqdD7iw5Cj4ctFTCri+g9CsoXwXVG6SS1E5UrGzY\n4/MhdyZEp0F0srRe2RKkNcsaIy2BluiDs/yFQ3IU7GuVVgRvs7QseeplfbVWQ2uFrK+tH0pFpx1h\nlJ1zxkTImgp5s2Xnczg6ar8Hyr6GkuVQthIq14C7Zvd2o0V2hLFZMHyU7ByjU2Vd2ROk5ScqVtaX\nxSE7maH46R6LHX66Yf/7aZpUMvxu/dk375YTT52Uk9ZK+dwbdsCOxRBw7z7eGistJpmTIHsG5B4t\n6/hw0Fy+W04qvoHq9VJJaseWIAcLCcPkOxidqstJkiyTLU4+e0u7nByEShAKyvv3u3U5adLblDq9\nXamBlnK5bH5PrmvHYOokJ9NkGROGHSY5cUsZaW9TKtd0LYvRultOUop0OUmRyrets5w4D5ucDFK7\n68DHbDR0BKhLq88gHVX2Ax0WsnCYYDisXJaHE5MFTAm9U6Q0TTaq9VultaXqO9mIffU4LPs7IGSn\nM/JUGLdQWogOhap1sP412WjX6B2n2SEb6ymXy0YyeZQcXR8uRbAzBqNsfK1OiOlFSgK/W3bQtZtl\n+avWwZY8EJyeAAAgAElEQVT34dtn5faYTCg8GcacCbmz4VDaBHc9bHwDNr4FxV9AyAcISBkNBSdA\n2lhp1UwqlNc1qG/C9hohpNXDZO29nLhqdstJ9Xqo+Ba+fAS++Ju0pGROgVGnwpizIf4Qkv1qGlSt\nhe9ekXJSt0Wut0RDxlEw9aqucmLrhy+eGE1gjJXKSm/kxOeSVu7aLVCzXsrJpnfhm//K7bE5UDhf\nyknOzEOUkzrZpmx6W8pJOCCfR0oRjJjfVU6cGYd2rT5AKWSHCWkh6+SyVFafbmmvm1BIJoZV1sQB\nghByNB2dLK1Q7QR9UL5aWtC2LoJP7pFL/lw4+scw4sTejxzDIVj3Mnz1qBzhC6O81om/kedLGz94\nlAmLA9LGyaUdTZNK2s7PYNtHsOYFWPlP2elMu1oqmlZn769RuRaWPQjrX5edS2KB7ISHHyutllEx\nfX9fip4RApypcsmbvXt9wCstMTuXwNYP4KO75DL8eJh5Aww7tvdyEgrAuv9JJa96nbQs5c2GSZdK\nOUkdM3jkxBoN6RPkwrlynaZJt2HxUtj2sVTOVjwhLeDTrobJlx9YLFr5Kjlo3PCmdDsmFcKMH8Gw\nY6ScHIjM9SNKITtMdE57oQLVe6bdehgMawRDGmalkA1sTFbphsk9GubdBk2lsPYFWPEUPHeudGWe\ner/sJHpi1zJ4+2ZpVUgaCaf8EcaeI10EQwUhpKUicbhUvvwe2PwurHwaPvyl7DRO+DVMvLDnztld\nD+/fJjtlawxMvRKOughSxw5N9+JQwBwFebPkcuwdMp5rzQuw6l/wn7Mgbw4s+CskFfR8nu2fwHu3\nSWtYShF870/S0tYfVuL+QghILpTL1CulFW3zu7DyKVh0B3zxIMz/nbTE90RLBSz6P1j/qnQdz/iR\nlK3Uov65j0Nk6Chkr10r412EQY6yjWZ96TwLxLF71kzn2VKO5D6fXSaD+ju7LA9Doxn0y5iGzrPL\nOmZL6T79QJt0Z7QHK2udZ83oM2YMJj2Y0yr94ha7Xl9OOeK2xUsfuiNRzpqx9m2G5N2fTpKZ+g/L\nZ5M0TdaPq0avqwZ9Jl6rPsPI3WmGkV8G+YaDsiM9/ld9X56hRFw2zL0VZt0Eq5+BT38HTxwHC/4C\nE/cxyVrTYMkfYPF9Mmbj3H/D6NMj7i7oFyx22amMWwilK2Rn88b1Mtj89Af3PXOzZDm8eLF8f+fc\nImc49ocrStG3xOfBvNth9s2w6t9STh6fA6c9COPP3Xv/cAgW3wuf3S8ni3z/ORkecCQo4NZoGH+e\nXIq/kIOXV66ELYvgjIf3PRFg51J4+XKpzB1zm5STAWoJ646ho5A17JTKiBbePWsm6N89hbdz0OW+\nsCdJ/3dcjj5bKh8SR8iYjOgD/xiy0SDTXoTDGmHtEDLPu2qkBaFui7zH9lkzLRVSGesJs2O3kmXq\nPFuqvePTZ8y0Kx9Bn1TgAp6eZ5eYHbKuYrP0GUbDds/ESxh2wKbzDpelHtR/0J9N8nvk7KK6rfue\nYRQOdH+s0aLPLLPpU7p1JdUYwRlAgw2jWY5uR58uG8bXfySVr6P2+ETtJ7+FpQ/A+O/D9x4YdI1m\nn5E9Fa5YBJ//WXbO3ia44KWu8lO6Av57jgzGvvjVru5QxeDEZIXp18DoBfDKVfDaNVLJ2tP68+Gv\n4MuHpCX01Adk+3QkkjcLrvgAlv4JFv9e9ukLn+46AaHkK/jv2bLvvuwd2RcNQoaOQnblop63h8NS\nKfO1SstIW+PuXDyuGtlhN5fLjnzbx11ndDlSpL87ayrkzJA+aHNUj5drd7v59Tgyc2+sPgGvnAFS\nshzKVuw9W8pkkwGhsdkymNqZrs8CSd49C8QWJzs4s+PgLQ6aJpWz9hlG3mY9F4tujWup3D1rZtM7\nXRVDk026qjInybrKnS1jK3qg3WXZnvaiV8qrpklFddcXUPq1jD+q20pHfiFhgBhdYcw9WiqQ0Wl6\nHiF9dln7zDKrc/Dm3xqIRCfDxa/LBvLtm2TjmDVFbtvwhlTGJl0CC/52ZFjFesJggLm3yHfy7Zvg\n47tl/BzIGWvPnSfl+7K3excwrRg8xGTAhS/Ds+fCq9dI93PKKLltzQtSGZt2jXT/H+kYTTI8wuqE\nRb+QVsNjfyG3tVTAixfJyStXLBrUrtyho5DtD4Oh9zOmNE0+5LotULNRzgKp+EYG5aJJi1P+MVB0\nurQG7COQtt3t5g1IS5Oxu47H2wIb35TBhzuX6FOWhZwlU3CCHBGnjNZnS2X0j7laCD05YpTsXPeH\nt0XOMKrRZxhVfiuDMr/+h9yeNg5GLYCxC/cZL7E7MWy453i7cFgGfW54Xc4waq2U66NTIXOyjKtI\n1WcYxedHNr/NkY7RBOf+Cx6bAx/+Gi5/Rz6/T++V8WIL/qqUsc5MuRwqVstZedN+KHM2ff24HDRe\n/KpSxoYqFjuc/x/46zj47I+w8CmZRmLRHZBzNMz/faRLOLA4+joo+RKWPwIzrpVGiKV/lil8Ln1z\nUCtjcCQpZAeCELJBjM2Us5faaWuS1qvtn0iFYOsiePdW6eee9RPprtNpd7t5A91YyBp2yMZ37UvS\nRRibI2fMDD9OWpYGU4xIVIxUiDIn714XCsjp2TuWSL//4vtkPETubFlXnWbi7flx8b3i7fweGZu0\n/BFo2iUzqBccDwUnQv4cqXwdCXEVgw17gnS3LPmDtELvWiaTMJ7zz8EzI6w/mfkT+Z5vfEu6eb98\nWKbJyDgq0iVTHE7sCXIm4ed/lbFPrVXSIzHjOmW53xfH3CaNGMsf2/33iJOk4WKQoxSyA8EWByNP\nlsspf5BuxdXPwLfPw+r/yBkdx94BFkeH2223hUxXGHwuqZgsf1TGdI0/T7pvsqYOLaXCaN6tpM35\nqXRzrnlezpp57lw5+lvwV0gZtdfHxTu+aqBp0sX1/u3SGpZzNBz3Sxj1vcH7OY4jjaIzYMl9Mm/S\nyqdkXOaYsyJdqoFJUgGkjJHvvKdOhlUc8/NIl0rRHxz9Y/jqH/Dxb6TF32yXHhLF3qSNlR6X5Y9I\nF6+rWrYzQwClkB0sQkD2NLkcd6cMyv3yIZmx+6JXOixi3qBUyExGgwww/+9CGXg+6RI49v9kNuAj\ngZh0qZgdfYNMlPnx3XKG0VmPYxx+GrD74+Img5Bm+/dulZ142jhpVcmbFeGbUBwwKaOlEvbhr+Vs\n3wv+p6xjPVF0hhywlX0N48/vanVWDF0ciXDMrTJPmdEKI09Rg86eOOFueGwWvPpDWV+F8yNdoj5B\nBXH0Bc40OP3vcMkb0tz85Ak4fVXAbpdljK8SnjxRbr/kDbn/kaKMdcZkkfEyN6yUnc3LVxD13fOA\ntJCFwhpGgZzivPIp6d68erFSxgYrQshYy5APJvwACk+KdIkGNkWnA5qMjTn5vkiXRtGfHP1jSJ8o\nZaXo9EiXZmCTVCC9USGfDF8ZIjO1lULWlwybB1e8B34XM767G9B0l6XG9HV3yXxXV7wv9zvScSTJ\nmXj5c7B8cDtZolYmhg2HOc73sQzcP/5XcsbZwXxfTTFwmHw5TLxIBSj3huRRMPNGOOfJQR+grDhA\njCY4+wkZd1l4SqRLM/CZcT1Mv1bmdRsiKIWsr0kdAyfcRVrdMs41LsEXDHOucQlpdV/CiXcPmozB\n/YI5Cs54BITgXtMTBINhnMF6Lmx6TH7DbNbQEbQjmrhsOPNhpWD0BiHgpHvUoO1IJblQJj5V7sr9\nYzTJWO7saZEuSZ8RUYVMCJEjhHhTCPGUEOL2SJalT5lyJS3OAs40fIE3EOIsw+e0OAtg8hWRLtnA\nIy4bMesm5hi/w+qrY5L3axxhlxQ0lRZBoVAoFEcIB93j6UpUjRDiuz3WnyyE2CyE2NYLJasQeEfT\ntCuAoWM6Mhjw2VKwigDeQAirCOCzpSoFozv0HEtayIcx7NPXZUawQAqFQqFQ9C+HoiH8Czi58woh\nhBF4GDgFqWD9QAhRJIQYJ4R4e48lBfgG+L4Q4hPg00Moy4BDM1qwEMAXCGMhoD7B0xPtdRPyY9CC\n+jqVf0ehUCgURw4HHS2tadpnQoi8PVZPA7ZpmrYDQAjxAnCGpmn3Agv2PIcQ4hbg1/q5XgaePtjy\nDDgMZswE8QZDmAmhKQWje/S60YJ+jO3fm1QK7CHT6G3EbDBjNVoxGUyIoZTnrpdomkYwHMQX8hEI\nBwhpIULhEFr7J7YAgzBgMpgwG8wd9XUk1hVAKBzqqKtAOLBXXQkEUaYoYq2xESzlwaFpGi3+lm7v\ny2gwYhImzMbdMnMkomkagXAAf8hPIBwgGA4S2uPbxkZhxGgwdsiL2WA+YmWmvX6sRushn6uv37hM\noLTT7zJgeg/7vw/cJYS4ACje1w5CiGuAawBycnL6ppT9gdGChSC+QBgzQaVg9ESHhSyAUWtXyJQC\n2x29lYljXzq2oyE1CiM2kw27yY7D4sBpcRJriSU+Kp6EqASSbEkk25JJdaSS7kgn1Z6KcQDmCwuG\ng1R7qqlwVVDtqabOU0ddWx0N3gaafE00+5tp9bfi9rvxBD20Bdv26kx6Q5QxCrvZjsPsINocTaw1\nljhrHPFR8SRGJZJsTybVnkqaI42M6AxspoH34WdN02jyNVHhqqDKXUVNWw21nloavA00ehtp9jfT\n4m/B7XfjDrppC7ThD/v3e97ZmbN59IRH++EOek9vZMIT9DD7hdm9PqfJYOqQGafF2SEzcVFxu2XG\nnkyaXb4DSbYkDGLghaUEQgEq3ZVUuiup9lRT46mhvq2eRl8jTd4mmn3NuAIuXAEXnoCUmc7Kam8w\nCEMXmXGancRYY4izyrpKtCWSbEsmxZ5CRnQG6Y50LAOwT9Q0jbq2OircUmZqPbUd7Uujr5Fmn2xf\nWv2tsn0JtBHUgpyafyp/mPuHQ75+Xytk+1KRu32ymqZ9Byzsbru+zz+AfwBMmTLlwN6SSGKSCll7\nDJlSyHqgvW6CPoxhPyGMA1IZGCj0RiY0TePWqbcSCAXwhXz4Qj7agm24A25cARet/lbq2urY2rSV\nRm8jvpCvy/EmYSLLmUVebB7DY4czMmEkRYlF5Dhz+mUkHNbC7GrZxcb6jWxu3Mz2pu0UtxRT3lpO\nsN2trWM1WkmISiA+Kp4YSwyp9lScFid2kx2byUaUKarD4tE+kjdgQAiBpmnSaqaFCIQC+MN+WVeB\nNjxBD+6Am1Z/K83+ZirdlTR4G2j1t+5V3mRbMrkxuQyPG86IuBGMShzFqIRRfTJq7g2N3kbW169n\nU8MmtjVtY0fTDkpaS3AH3F32Mwpjh2IZa40lMzqTGEsMdpMdu9neUVcWgwWzwYzBYOhSV2HCpNpT\n++WeDoTeyITFaOG2qbdhMpgwGox73Vc4HCaoBfGH/B0y4wl48AQ9HZ1wpbuSDfUbaPA1EAzv/R5m\nO7PJj82nIK6AkfEjGZM0hlR7ar/ITDAcZHvTdjbUb2Br01YpM83FVLor91Kw7CY78VHxxFv198CZ\nSbQ5GofZQZQpiihjFBajfAdMBhNGYey4h3aZCYaDHZY0b8iLN+jFHXBLmQm00uJroaSlhEZf417v\noUCQ5kgjLyaP4XHDKYwvZHTiaAriCvrNMlnlrmJD/QY2N2xmW9M2drbspLSlFG/I22U/k8FEgjWB\nuKg44qxx5MbkdgzU2tuXwvjCPilTX995GZDd6XcWUNHH1xgcGCyYRbvLUlnIekS3homwH6MWJCRM\nKHXs0BBCcOHoC3u1r6ZpuAIuaj21VHmqKHeVU9ZaRmlrKTubd/J52ecdSlCsNZZJKZOYnj6duVlz\nyXZm7+fsvae4uZil5Uv5uvJrVtespsXfAsgGMS8mj8L4Qk7MPZGs6CzSo9NJc6SRYkvBYXb0q7vE\nH/JT11ZHlbuKSncl5a5ySlpKKG4p5t0d79IaaO0od1FiEdPSpjE7czYTkif0WWfT4m9hWcUyvqz4\nkpVVKylpLenYluZIY1jsMCamTCTHmUN6dDrpjnRS7CnEW+OP2MGO2WDmoqKL+uRcmqbR7Gumpq2G\nKncVFa4KylrL2NWyiy2NW/i45GPCmkwKnmJLYXLqZGZkzGB25mxS7Cl9VobNjZtZWraUr6q+Ym3t\nWtqCbYC08ObH5jMxZSKnOU8jy5lFZnQmKfYUkm3J2M39m1ajLdhGraeWak81le5KylrLKGktYWfz\nTl7Z+kqXck9InsDUtKnMzppNUUJRn8l2XVsdS8uWsrxyOauqV1HtqQakcpjlzGJY7DBmpM8gKzqL\nLGcWqfZUUuwpxFnj+q196WuFbAUwQgiRD5QD3wcu6ONrDA5MegyZ7rIMKoWse/ZwWYaVu7JfEUJ0\nuGSGxQ3ba3sgFGB783bW163n29pvWVm1kk9LP+W+r+9jVMIoFgxbwJkFZx5UXFGjt5HXt73O2zve\nZkvjFgBynDmckHsCE5InMCZxDMNih2EeQO+ExWghIzqDjOiMvbZpmkalu5KN9RtZU7eG1dWrefq7\np3ly3ZPEW+OZnzefhYULGZkw8oCvGwwHWVK6hNe3vc7nFZ8TDAdxWpxMTp3MOYXnMDZxLKMSRxFj\niemL21T0gBBCWkyi4vZpHWkLtrGlcUsXmXmv+D0AJqVM4oyCMzgl/5SDcnVXuip5eevLvLPjHcpd\n5QAUxhdyZsGZjE8ez5jEMeQ4cwaU4m0z2ciJySEnZm93clgLU9JSwob6DaytW8uq6lU89O1DPPTt\nQ2Q4Mjgl/xQWFi4ky5l1wNf1Br28t/M93trxFiurVqKhkRiVyNS0qUxMmcjYpLGMiBvR7wpqdxy0\nQiaEeB6YByQJIcqQwfn/FELcACwCjMBTmqat75OSDjKE0aorZDKoP2RSClm36AqZCAV0C9nA6XwV\nYDaaGZUgXXDnFJ4DQGlLKZ+Wfsr7xe/zwMoHePjbhzmv8DyuHn91rxSzBm8DT657khc3vYg/7GdC\n8gRum3ob87LnHVTDO1AQQnQoa8fnHg+Ay+/ii4ov+HDXh7y27TVe2PwCR6cfzU2Tb6Iocf/ZfkLh\nEG/veJtH1zxKuaucFHsKF4y6gBNyT2Bc0rgjNvh8IGMz2ZiQPIEJyRO4YPQFaJrGlsYtfFL6Ce/t\nfI9fL/s1f171Zy4fczkXjL6gV4pZhauCB795kPd3vo+Gxoz0GVwz/hrmZs0lyZbUD3d1eDAIA3mx\neeTF5nHqsFMBqG+r57Oyz/hg1wf8a/2/eOq7pzg5/2Sun3g9uTG5+z2nP+TnuY3P8dR3T9HoayQv\nJo9rJ1zLcTnHMTJ+5ICdgHAosyx/0M36d4F3D7pEQwWTBatuIbMQwKsUsu7pcFkGMGkBQkJ1MAOd\n7JhsLhlzCZeMuYTNDZv59/p/88yGZ3hj+xv8bvbvmJs1t9tjP9r1EXd9eRet/lbOGH4GlxRdQkF8\nQT+Wvn+JtkQzP28+8/Pm0+xr5uUtL/Pv9f/m+29/n4uLLuamyTdhNux7EFLWWsYdn9/BNzXfUJRY\nxK1TbuWY7GOUEjbIEEIwMmEkIxNGcu34a1lds5p/rvsnf139V17d+ir3zrmX8cnj93mspmk8v+l5\n/rTyTxiEgYtGX8SFoy8kPTq9n++i/0i0JXLWiLM4a8RZVLmreH7T8zy/6Xk+2vURP5n0Ey4uurjb\nCRSbGjZxy5Jb2NWyi5kZM7ly7JVMTZs6YJWwzgy8KSFDBGGy6BayIFYRRCiXZfd0ykNm1IKEDaqu\nBhMjE0by+zm/56XTXiLNkcb1H1/Pv7771z73feq7p7h58c1kRWfx6umv8ptZvxnSytiexFpjuXLc\nlbxz9jucN/I8ntnwDFctugpPwLPXvpsbNnP+2+eztXErv5v9O1743gscn3u8UsYGOUIIJqdO5pET\nHuHJk54kEA5w6XuXsrh08V77hrUwv/zil9z79b3MyJjBW2e9xS1TbxnSytiepDnSuHnyzbx79rvM\nzpzNAysf4Jdf/LIjRq8zn5R8woXvXEhbsI3HTniMx098nGnp0waFMgZKITtsCKMFg9AI++WMDaEs\nZN2j140IBzATJNSNtUAxsBmVMIr/nPIfTso9iT+t+hMf7vqwy/aXNr/EX1b9hVPyTuE/p/6H4XHD\nI1TSyOO0OLlzxp3cO+devqn5hju/uLNLB1PSUsI1H16DzWTjpQUvcfrw0wdNp6LoPdPTp/Py6S8z\nOnE0P138U76u/LrL9sfWPMYb29/gmvHX8Pfj/k6aIy1CJY08SbYk/nbs37hu4nW8uf1N7vv6vi7b\nN9Zv5PaltzMyYSQvLXiJWZmzIlTSg0cpZIcJYZLT3Q36jCuDqX+mvw9KOlnIzATRlEI2aIkyRfH7\nOb9nQvIE7lh6B1XuKgCavE08sPIBZmXM4ndzfteti+5IY8GwBfxsys/4cNeHvLj5xY71f1n1F/wh\nP0+c9ATZMX03k1Ux8IixxPDoCY+SGZ3JPcvvIRSWefNWVK3g0TWPcmbBmdww8YYBmeOsvxFCcO34\na7lo9EU8v+l51tfJEPVAOMBNn95ErDWWB497kERbYoRLenAMmSdc3FzMjuYdFDcXU9pSSqWrkrq2\nOpp9zfhDfjStf1OYGdqtPn6X/L+fFTJN0/CH/DT7mqlrq6PSVUlpS2lHPe1o3sHO5p2UtJRQ7iqn\n2l1Nk7cJT8CzT1PwYaVTHjILAcIR6KyD4SAuv4v6tnqq3FUdU9grXEdm1pZDwWq08vvZv8cbkjOc\nAJ7d9CxtwTZunXqrUsb24JKiSxiXNI5Xt74KwI6mHXxU8hEXjL6A/Nj8CJdO0R/EWmO5fuL1FLcU\n80npJwC8uvVVYiwx3DnjTmUd7YQQgusnXo/T4uTJdU8CsLxiORXuCm6fdvugnuAwZIIRLnz3wo68\nRfvCKIzdZinvnHk7IzqDzOhMokxRh1SedgVM6LEhhj5wWXqDXspd5R1Zyms9tdR767tk3u6cpfxg\nMpS3YzPZus1SnmRL6sjonhGdQbw1/tAajPZPJ+kWsr5QyELhEDWeGspd5VR5qqjx1FDXVkd9Wz1N\nviaafE20+Fo6Ehl2l6F8YvJE/nPqfw65PEcaOTE5jEsax3s73+O8kefx3MbnOC77uCPaTdkdQgi+\nN+x73Pf1fexo2sE/v/snNpONi0b3Tc4sxeDgxNwTyXHm8OS6J5mdOZuPSz7m1PxT+y258GAi2hLN\nD0b9gCfWPsGOph28t/M9nBYnczLnRLpoh8SQUcjunnk3/pBfZlzWwoTCoY6My/6wH0/A05GlvMXf\nQouvhe1N21nhXUGTr2mv86XYU8iPyWd4nMxSPjphNAXxBb0e3RvMUgEz6hmKD0QhC4QDbGvcxsaG\njWxu2Mz25u3sbN5Jjadmr33bP00RZ43ryLrdnnHZbrZjMVhk5m2jRWanFjLzNoCGRlgLEwwHOzJU\ne4NevCFvR321+Fto9bdS7almY8NGGrx7Z6iONkeTG5PLsNhhFMYXMipxFEWJRb3Ph9TZZSlCaIbe\n5+bRNI0qd1WXLOU7m3dS2lpKoP27mDp2k70jo3tCVAK5Mbk4zU4cFgc2kw2b0YbVZO3ITm0ymEiI\nSuh1WRRdOSX/FP644o/8+JMf0+Jv4erxV0e6SAOW+Xnz+eOKP/Kb5b9hdfVqLiq6iPio+EgXS9GP\nGA1Grhp3Fb9a9iuu//h62oJtnJJ/SqSLNWC5aPRF/HfDf/nF57+guLmYk/NPHpCfYzoQhoxCdkLu\nCQd9bCAcoM5TR5VHZlwud5Wzq2UXO5t38tq21zqyCNtMNsYnjWdGxgzmZM6hML6wW8tQe8yYMeTu\n8ntftOeoWVq+lOUVy1lbt7bLNQviCpiRPoPcmFwyozPJiM4gzZ5Gkj2p390/mqbR6Guk2l1NlVtm\ndS9pLaG4uZivKr/irR1vATL7cUF8AdPSpjEzYybT06d3P9LrlIfM0osYsvq2epaWL2VZxTJWVa/q\nUFQNwkCOM4fhccOZlz2PbGe2rCtHGqn2VBxmR99VhGK/nJx3MvevuJ8VVSu4ZcotjE0aG+kiDViS\nbElMS5vG8srlTEyeyI1H3RjpIikiwJkFZ7KyeiVvbn+TZFsyU1KnRLpIA5b4qHjuP+Z+bvzkRkJa\niFPzT410kQ6ZIaOQHQpmg1l+XiQ6naNSjuqyLayFKW0tZX3detbUrmFl9Ur+tvpv/G3138h2ZnP6\n8NM5e8TZe30Oo90iZg5Kl6Uw762MVLureW3ba7y5/U1KW+U32QvjCzmr4CyZpTxpDNnO7AEVzCmE\nICEqgYSoBEYnjt5re6O3sSNL+TfV3/Dylpd5duOzOMwOjs85noWFC5mYPLGrIts+jT8U0IP69x7l\n+EN+mVhz62usqF5BWAuTEJXAtLRpHJVyFOOSxjEifsQhu5oVfUeyPZnLx16Ow+zgkqJLIl2cAc/V\n467GZrLxm5m/Ue/xEYoQgrtm3oXZYGZs0tgBlW1/IDI3ay6/nf1bPiv7bEgor0oh2w8GYSA3Jpfc\nmNyOLMJ1bXUsLl3Mezvf4+FvH+bxtY9zxvAzuOGoGzoCCo26AmYOSYXM2MllWddWx8PfPszr214n\nGA4yPW06V4y9gnnZ8wZ1QCLIUcvMzJnMzJwJgC/k4+vKr/mo5CMWFS/ize1vSgvApBuZmjZVHiQE\nAcwY9LQX4U5m51A4xP+2/I8n1j1BjaeGzOhMrhp3FcfnHM+ohFEDSllV7M3Nk2+OdBEGDdPSpzEt\nfVqki6GIMGaDmbtm3hXpYgwaFgxbwIJhCyJdjD5BKWQHQZItiYWFC1lYuJDSllL+veHfvLr1VT7Y\n9QG/mPYLTht+GgZdIbOEPGDcraC9tf0t7v3qXrwhL+eMOIdLiy4d0tParUYrc7LmMCdrDrdNvY03\ntr/BU989xRWLruDMgjP5v+n/R5QpipAwIUJ+zCLYEeRf3FzMbUtvY0P9BialTOLumXczM2OmUsIU\nCoVCMeRQCtkhkh2TzZ0z7uTC0Rdy17K7uOPzOyhrLeOH0aMAiAq3gRGEycyj3z7KI2seYVLKJO6a\neYuZ3ucAACAASURBVNcRN6Xdbrbzg1E/4MyCM3l8zeM89d1T7GzeyUPHPYRZmDFqQSwGaSH7tuZb\nfvzJjxEI7p97P/Pz5qup3wqFQqEYsihTQx+RH5vPk/Of5PThp/PImkd4vW4FAA4hM/W/XruSR9Y8\nwunDT+fJ+U8eccpYZ2wmGzdNvok/zfsTG+s3cstntxAwmLEQxEyQeoPGdR9fR4wlhmdPfZaT809W\nyphCoVAohjTKQtaHmA1m7pl1DxWuCh7Y/jKzjEbsQS/VRiP3b/sfU9Omcs+se5TLTefE3BNpnNbI\nPcvv4U2HFbtPKmQPi10EQgEePeHRIe3OVSgUCoWinX5TyIQQw4D/A2I1TVvY3brBjkEYuHvm3Zzz\nxlk8GB/LUdVeHoyPJaiFuPvou5UytgcLCxeyqHgRj4S/4meNfr6xGfiKBm456hZyYnIiXbxBzc7z\nz0cYTRiiojA47BjsDgxOJ8aYGIxxcRgTEjAlJWFKTsKUkoLR6Yx0kfeLpmmEW1oIVFcTrKkl1FBP\nqLGRYGMj4ZZWQq5Wwi43mreNcJuXcFsbWjAAgSBaKIQWksmShUGXQ6MRYTEjzBaExYzBZpf1Zbdj\niI3BGO3EGBuDMSERU2ICxqQkzCkpGBMTd59jABP2egmUlxNqbiZYX0+oro5gbR1ht4uwp41gYwOa\npw0tECDs9cp68+tJkoMhtGAQjAaEMIDBgDCZsE+bRvrdd0X0vg6GsNtNyRVXEvZ40PR77HgnhEzV\ng9GIMBoRZjPCYkHYojBE2TDYbBgcDgwxTowxsRjj4uT7kJCIKTkJc1oaBrs9wne4fzRNI9TURLCy\nkmBdHcGGBkINjYSamgi7Wgm1tBL2eAi3edA8bYR9PrRAAIK75UcIAUKApoH5/9u78+g4yjPf49+n\nqnpTa99sLZZl4xVjYmODQyAL6wAhZAZ8GRjg3iQkJGS55ORkvyeTO1mA5ISAw5AQwjYDEzwJmZwQ\nhsyQADckQMBmdcA2NraxZVuyrH1p9Vbv/aNaQgbJblktV7f0fM7hYLW624+q/VM/9dbb7+t4xyoQ\nxAqF3jpeJcXYxSVYxcWZ3zUVOFVVODU1OLNmYZeXF8RVj3T/AKm2Vi87nV2k2ttJdXZghuKke3pI\nd3djhoYoOnk11ddeO+m/L6uGTETuBi4EDhhjThh1+3nAOsAG7jTG3DjOU2CM2QFcLSIPHu626aCp\ntIkVFYt5c3AjpxNjVyDAysolOtozBkssPnTch3iu9TnidoKWgBfSi467yOfKCpsxBqeyCncohjsw\nQKq9HXdggHRfH25f35iPsYqLCTQ0EGxqItjcTPC4+YQXLSK0YAESPLYLLrqxGPGtWxnato3Ejp0k\ndu0isWc3yZa9mKGhMYq3vGazuBiruBgrEkEiYQLl5d4bhuOAYyN25leemwYE47qYRAKTTGKGhrwG\nprcHd2AAt6eXdH8/pFLv/PsCAQJ1dQTnzCE41zteoSVLCC9ahF1ePqXH5u1MMknizTeJv7GD+PZt\nJN54g8Sbu0kdOECqvf2dDxDBKipCwmGcykqsaBRxHOyyMqzZs5BgZpcRxwbHgbQLxsW4BtIpAnV1\nx/TnyxUJBrGiUZzaGiSzcLcEHLBsr7kwBuO6kE5hkincRNx74+3tJdm6H3dgELe3F3dgYMznt8vL\nCTQ0EGiaQ3DuXELHLSC0eBGh+fO9f3/HULq/n6HXXiPxxhvEd3r5Se7eQ3L/fkw8/s4HOI6XndJS\nr/EMhbCiUe/Ew3EOzY8xYFxAMKmUl51UauQkKNndg7utz/tdMzAwZn4kHCZQV5f5fTOH0KJFhBYv\nJnTccdilWS4oniMmkSC+cyfxbduJb99GfNt2Uvv3kzxwgPTBg+98gGUhodDIia0VDmNSR78rzmjZ\n/iu5F/hn4F+HbxARG7gNOAdoATaIyEN4zdkNb3v8x4wx71xmfhqLOBE6RYgyRMwSqp3sV5+faYoc\n78zSWEmSlrfnqC7iOjkiwpyf/HjM75l0mnRvL+mODu8s+WAHqbY2kvv3k9yzh/i2bfQ98cTIL1IJ\nBAgtWULkXe8i+p73EF1zClY0t69PqrOTgaeeZvC554i9/DLx7dvB9fZUlWCQ4Ny5BJubKT79vTiz\nZxGorfVG9SqrcCorsEpLp2TEyhiDGRz0RhIyxyvZ1kaqtZVESwvJ3Xvo2bQJt/etbduc2bOJnnoq\nRatXUbRqFcHm5pzW5CYSDDz1FLFXXmHolU0MPv/8W02qiPcm19xMaPFiAg31BJuasCsqvRGdqiqc\nyspj3iDkAwkEaLr7rkk/j0mlvNGRzk4vP+3tJPe3kty3j2RLC0Ovvkbfo7+H4dHYcJjwkiVEVp1E\n9N2nUnTyaqxwbteZS+7fz8DTzzC4YQOxV14hsWPHyPekqMhrEBcvpvjMMwnMqsWpq/NGqyoqsKur\nvaZ8CkasjDG4/f3esero9EaY2lpJ7ts/crx6XnoJt79/5DHB+fMpWr2a8AnLKD7tNAINDTmtKd0/\nwOBzzxLbtInBZ58j9sorbzWNtk2wuZlAYwOhpUsIzm0mUF+PU1nhZaemxhvdm6LR8axSaYx5UkSa\n33bzKcD2zCgXIrIe+LAx5ga80bQZLRIoImYJURkiJkLEyf/hbL8UBTLHRpIMWoKN6AbUU0hsG6ei\nAqeigtCCBWPex6RSJHbvJr5lC0OvvUbslU10/+pXdN1/PxIIUPTud1N20UWUnHP2Ub+5pLq66P3t\nb+n93X8Re+klMAartJTIu95F8VlnElm2zGsq6usR258FMkUEiUYJRqMwZ/wR7uSBA8Q3bya+/Q1i\nmzbR//jj9Pz61wCEliyh9PzzKf3gBQQbG4+qDpNK0ff44/Q9+nv6//hHb5TTtgnNn0/52rVETlxO\ncP5xhI6bjxXRk7+pJI7jXX6rqiK0cOGY93ETCRK7dnn5efVVYpv+Sue/3kfnXXcjoRDR00+n7IMX\nUHz22VhHOfqcbG2l56Hf0vvII8S3bAHArqwk8q53UXrhB4mccAKhhQtxZs/27fKgiGCXlGCXlBCc\nO3fM+xhjSO7dR/z114lv387gxg30/u53dP/iFwCEly+n5JxzKLvoQwRmzz6qOtxYjL7HHqf/8cfo\ne/wJ7wTGsggvW0bVR/4XoSVLCS1cSHBe81G/HrkwmdOkBmDPqK9bgDXj3VlEqoDvAitF5GvGmBvG\num2Mx10DXAPQ1FQ4c4oiTpSYWN4ImVhEdMRnXJHM6KHYcQbFIixOQcwv8MuxyIQ4DqH58wnNn0/p\nBd6CyG4iQez55+n/45P0Pfoo+770JeyyMsovvZSqqz+W9aW6REsLB2/7Mb0PP4xJJgktWUL1Zz9D\n8fveT/j4pb41X5MRqK0lUFtL8fvfD4BxXRK7djHw5z/T+8jvaL/5ZtpvuYXiM86g+tpriSzPbhsp\nNx6n+5cP0nH3XaT27ceuqKDk7LMpveB8ik4+OecjLYUq394nrGCQ8KJFhBctouwib/qFOzjI4MaN\n9D/5J/oefZT+xx7DLi+n4sorqfroR7IedY7v2OHl57/+C9JpIitXUvulLxJ973sJLVxYcL87RYRg\nYwPBxgZKzjwDrvnESH76HnuMvkd/T/sPf0j7unWUnHsOtdddl/WosxuL0fXzn9Nx9z2kOzqwKysp\n+9sPU3r+BUROXJ53Jy9ijMnujt4I2cPDc8hE5H8Af2OM+Xjm66uAU4wxn5uaUmH16tVm48aNU/X0\nOfW9p7/Fr7f+O7/cGWftvBCXLLmML5/6Db/LykubOzZz6cOX8uX9abYVx/hTWS1PXPWs32UdkYg8\nb4zxdb8OvzJhXJfBZ5+l64H19P3hD9glJdR+5SuUX/x34z8mleLgHXdw8Ce3I5ZF+dq1VFz29+OO\nMkwnyb176XrwQbofWE+6u5uytZcw66tfwy4e/0144Nnn2Pe1r5Lat5/ISSdRdfXHKP7AB/K6YZ3J\nmZgI47oMPPMMXT9/wGvMaqqp/853Rhr6MR+TSHDghzfTed99WKEQ5ZdeSsU/XE4wDxrQqZZoaaHr\ngQfofmA9bjJJ1dUfo+bTnz7s3NbeRx+l7dvfIdXeTvS006j6xCcoOnn1Mc/PRDIxmRGyFmD0GH4j\nsG8SzzetRIJR71KlDBGTsI6QHcbwJUtjp4iJEB5jL0uVX8SyiJ56KtFTT2Vo61bavv0d9n/96wxu\n2EDdt/4JCRx6ydkdGGDPp65lcMMGSi+4gNqvfJnArFk+VX/sBRoaqL3uOqo+9jEO/uR2Ou+9l9jz\nL9D449sIzXvnmoSd991P2/XXE2xqouneeyhas6bgRj7U+MSyKD7tNIpPO43YSy+x/x+/yZ5Pforq\nz3yGms999h33T3V20nLtp4m9/DLll15KzXX/G6eqyofK/RFsbGTWl75E1Uc+woEf3ETH7T9l4E9/\nZs6dP8OpqDjkvsYYDvzgB3TedTfhZctouPmHFK0ujH0uJzMzbQOwUETmiUgQuAx4KDdlFb6iQDGu\nCFhxjAiRYP4vKeCX4Un9rqQYtCwi2pAVlPDixTT9y71Uf/paen79a1qvv/6Q77uxmNeMvfACdTfc\nQMMPb5pRzdhodkkJs778JZruuYd0Tw97Pvkp0j09h9yn+8EHafvudyk+60zm/fo/iL773dqMTWOR\nFSto/uUvKPu7v+Pgbbdx8PafHvJ9Nx6n5dOfYWjLFhpuuZm6b/3TjGrGRnNqaqj/3o003Poj4tu2\nseeaT3qfhB6l42d30nnX3ZRf9vc0P/DzgmnGIMtLliLyAPABoBpoA75pjLlLRC4AbsH7ZOXdxpjv\nTmGteTMUnUwmaWlpYWisj99nDCT76Yn3UptOc8C2KQuV6ScHx+Eal9aBVkpdlyERsAJUR2vHvX84\nHKaxsZFAwN+J/3p55i3DmRhoa8MdGPA+Dp5Zl2l4qQ27vAKrKL/mbPjJTSRIHzyIhEIjb7AmlSJ1\n4IB3W2Wlt95TFjQTb8m3TBzufeIQxpDq7sbEYt4nHzOX49Jd3bixQeyKiryb8+Qnd2iIdGcnVlHR\nyPxVdyhOurMDKxwmWl9fcJnI9lOWl49z+yPAIxOobVpoaWmhpKSE5ubmcc9cu4a62Ne/j+ZkEisQ\noL64nopwxZj3nemMMdABNek0fZZg2xGaK8f59J8xdHR00NLSwrwxLvUofwxnYu7cuSR37sS4LuGF\nCzHpNPHXX0dmzSI0zqesZrJUezvJtjZC8+ZhhcMk9u4lbVmEFi3CyvKNRDORn7J5n3i74bxYmaUq\nTCrF0NatOM3NBOoLc/23qZTYu5d0dzehBQuwAgHiu3ZhiiIEFyygs6ur4DKR/0tN56GhoSGqqqoO\nG7LhFfnTmfvoCv3jExEEcAEXwTrMcRURqqqqsj/rVMfEcCYsy8IuL8fE47jxOOmuLkw6jVNd43eJ\neWn4zD7d05s5Xt3eYq0TOKvXTOSnbN4n3k5sG7uqyhtVjsVI9/aCMdgVx3ax4ULh1NSAgfTBDkwq\nhds/4C1wbNsFmYmZtzpgjhwpZMMNWOptX6uxWUimITvysdL5NPlp+HWxSkth/37SnZ2ku7u9Fb+j\nug7fWCQQwCoqwu3twQzFQAS7unriz6OZyEtH87o4lZWkDx4k2doKxnhbOOnyJmOygkHs8jJSnZ0Y\nNw2YkZOcQsyEdglTxBvzgdTwm1SOD/WePXs444wzWLp0KcuWLWPdunU5ff5jTQBXBFegr6ePtWvX\nsmTJEpYuXcozzzzjd3lqAqxAACsSIdXRgXHdY7bVTqFmwi4t80bH+voI1NaOOTrW3d2tmZghxHFw\n6uq87bsGB7HLyo66uSjUTGRjOBMnnnUWKy/6EE8/8QRWKFzQa/PpCNkUGblkmfk619264zjcdNNN\nnHTSSfT19bFq1SrOOeccjj/++Jz+PcfK8AiZQfi/X/sW5513Hg8++CCJRILBwUG/y1MTZJeW4cZi\nOLW1x+wXZKFmwiorhdb9WOEIdvXYn5677rrrNBMziFNRgUkmSbUfnNTeqIWaiWyMzsRQfz89W7eO\nm59CMW0ast2f/CRmYBAsy9v803GQUAgJBrBCYSQS9nafLynBKo7ilJdjV1R4e+HVVOd8f6qRS5ZT\nNIds9qxZzKqqwo3FKBJhyYIF7N68mYU1NZBOY9Jpby/AzKdoTWbzXGDU7QKWeMdr+M8i3nEQC6zM\nnx3H26DZ9jYbFtvO+V5eFkIa6Ovr5y9PP8e//9svAQgGgwRzsJVFur+f+LZt3hID6TSpzk7cnh7S\nAwOY2BDprk5S7Qe9hQYdGxNP4Pb1EZw3j/obrj/yX6AOYVdWgGMf04226+rqqMuMxpWUlLB06VL2\n7t2b928+ViBAcM4cJBIZ88Stt7eXJ598knvvvRfIXSZUfgvU1uJUV0/qd22hZuJI3p6JcHEx4VWr\n/C0qB6ZNQya2g7Es7zpyKoU7OIiJx73JxYk4ZjDmrVcyxs7z4M3lcGprCTQ0EGhsJNjURGjBcYQW\nLCAwZ864q/v+029f5bV9ve+43WCIJQex8OZFRQI9I5cxj+T4+lK++aFlmHTaawwScUwi8dZ/8bjX\ncGW8uXcvL774IisbGki1tXlNle14DdXwL3ixvOuCo5owwGvOkkkMmabNdcF1uenNe3h9YNf4RUqm\neRMZaYIRC7HH/+WxpHIJXznlK+M8nZASoWVXC9XVVXz0ox/l5ZdfZtWqVaxbt47oEbYVMcYQf30b\nsVdexu3tI7l3L/GdO0jt20+qvR13vBEFESQSwS4vw6mpwXQlIZ1GgkHs0hKvsVATMl4mJmM4E9na\ntWsXL774ImvWjLub24R977nvsaVzS86eD97KhF1WNu59duzYQU1NzYQzofKHZiJ7h3ufGDZdMzFt\nGrI5P77tiPcxxngNWl8f6Z4e0l1dpDo6SB1oJ9V+gGRrG8m9exn405/oaW8feZyEw0ROOIHIqlVE\n15yCmcBZf3YbU40UiEmncfv6GXr9dUwicci3xXGQYBCrrAxxAohjMxCLccVVV3HzzTdTs2qV1ziK\nTPoSqdNXhUW7N5JmDCPr1Q2PtGWaN2MMJJOH/ryW5Z3V2fZIPUdiIcQFUukUr7y0iZ/cdjtr1qzh\nuuuu48Ybb+Tb3/72oYcqs/XI4IsvEnvpJYZe2US6u/ut5ysuJjh/PqHjlxKteR9OdQ2hBQtwqqvA\nsnEqK7y5GUVFBTn5U42vv7+fSy65hFtuuYXS0lK/y5m0VCrFCy+8wK233nrYTCg1Hs1EYZg2DVk2\nRAQJe5P+nJrDfww/3T9AYscbxLdtZ2jrFmIvvkTHnXfS8dOfkrrtn4lHItglJfzj+YsR552HMe2m\n2dK5BRtDGmFp1dIxL1u6Q0Oku7tx+/pw43GvTtvBCkeQ8nKsUChz6TX4jqHrZDLJpZdfzhVXXcXa\nyy6bxJF5pyOdoYxmXBeTTHrNbiyGG4thYrGRUTwrHMaKRrFKSzHGjNkACYKLMLtuNvUN9SNncWvX\nruXGG28c+XvSPT2ke3pItbay+zOfBRFCC46j+OyzKFp5EkWnnIxdUYkV1UbLLxM5a8+1ZDLJJZdc\nwhVXXMHFF1+c0+eeSCZyqbGxkcbGxjEzoQqDZiK3pmsmZlRDNhF2cZTIiScSOfHEkdvS/QPEXnie\nXcEgpFIkW1tJtrVhl5fj1NSMrKwMoyf1e03B6MuVxhjc/n5S7QdxBwdABKuoiEB5OVY0Ou5cktGM\nMVx99dUsXbqUL3zhC7n80SdMLAsJhSAUws6cfQ2PRnqrtPeT6uqCjg6sSARn1izs4uJDnsMSCwxU\nz6qmsbGBrVu3snjxYh577DGWLlpEct8+0j09mMzlRCsaZc7P7iCyYgV2iW5LpfIrE7k0e/Zs5syZ\nc0gmCn0OkDo2NBOFRRuyCbCLoxS/733YmzcTWrhwZOuGVFcX6e5unOpqnJoar0HJLHaamTo/0mC5\nQ0Mk9+3HHRxAAgECs2ZhV1SMOcp2OE899RT33Xcfy5cvZ8WKFQBcf/31XHDBBbn9oY/S6NFIamq8\n0a3ublLt7SR27cIqLiZQV4cVCgHeJcthN938fa644goSiQTN9fXc/o1vkOrqzszpqvS2ytiyheKl\nS/368VQeyvdMTMatt946kon58+dzzz33+F2SKgCaicKiDdkkWOEwVn09dnU1qbY2b/J4Xx+Bpias\nYBALb9mL4QuN6b4+Env2ICIE6usn9cnO008/nWz2Ic0XYlk4lZXY5eVeE3vgAPHt2wnOmYNdWnrI\n5dwVK1ay4ZlnSOze7S2dUFmJM2vWuB+sUAoKLxMTsWLFCvJhf0ZVWDQThUUXhs0BKxgkOGeOt/dY\nIkFixw7cZHLkMqUgpPv7Sbz5pnffBQtwKitzvnREIRDLwqmuJrhwobd33+7dpLq7D7mkaxkhvnMn\nbjxOsKmJQH29NmNKKaWmtZnXEUwhu6SE4Pz5mHSaVFvbSIthu5BsaUFCIYLz5k1on7rpygoECDY3\neyu6t7Zim1Fz7A50YBIJgk1zR+akKaWUUtPZMWvIRGS+iNwlIg++7faoiDwvIhceq1qmkhUO41RV\neTvQZ1aDKO/zlrMINjbqSM8oYtsE6uowqRShfm+Jj0jcYHp6cWpqsIsLe00ZpZRSKltZNWQicreI\nHBCRv77t9vNEZKuIbBeRrx7uOYwxO4wxV4/xra8Av8i+5PznVFcjtk1Jv3ftPhI32KVlWJGIz5Xl\nH6uoCLu0jEBfHMtAURwQOeKyJEoppdR0ku0I2b3AeaNvEBEbuA04HzgeuFxEjheR5SLy8Nv+qx3r\nSUXkbOA1oO2of4I8JI6DVVZGOGEIpMBywSrSZmw8dmUFGEM4YQglwYpEZuT8OqWUUjNXVp+yNMY8\nKSLNb7v5FGC7MWYHgIisBz5sjLkByPby4xlAFK+hi4nII8YYN8vH5jU7GiXd2UnpoDdKZhUV+VxR\n/ho+NpEEhFJglWrzqpRSamaZzDBEA7Bn1NctmdvGJCJVInI7sFJEvgZgjPk/xpjPAz8HfjZWMyYi\n14jIRhHZ2D5qO6N8Z2X21CqNgRFv+6VcS6fTrFy5kgsvLOzpd2JZmFCQkkEQA+vuuYdly5Zxwgkn\ncPnllzM0NOR3iXmlUDNxLEyXTLzdzTffrJk4DM3E+DQThWMyDdlYS8mPu+CJMabDGPMpY8xxmVG0\n0d+71xjz8DiPu8MYs9oYs7qmgOYVieOQcgQxkApYU7KNz7p161g6TRZHlUgYy8DetjZuu+MONm7c\nyF//+lfS6TTr16/3u7y8UqiZOBamUyaG7d27lx/96EeaicPQTIxPM1E4JtOQtQBzRn3dCOybXDnT\nSypoHfL/XGppaeE///M/+fjHP57z5/aDZObYGYFUOk0sFiOVSjE4OEh9fb3P1alCMN0yMVoqldJM\nqAnTTBSWyazUvwFYKCLzgL3AZcA/5KSqQvK7r0LrpjG/FU0MYicNdkAgOIE5ZLOXw/mH3yj185//\nPN///vfp6+ubSLVZa73+euKbt+T0OUNLlzD7618f83t2JEIKqGmcxRe/+EWampqIRCKce+65nHvu\nuTmtQ02xw2TiqM3ATAxraGjQTBQ6zUTWZnImsl324gHgGWCxiLSIyNXGmBTwWeC/gc3AL4wxr05d\nqYXHWEIi4P0/lx5++GFqa2tZtWpVTp/XT5YToLME9iV6+c1vfsPOnTvZt28fAwMD3H///X6Xp/Lc\ndMzEsK6uLs2EmjDNROHJ9lOWl49z+yPAIzmtqNAc5gylq2MXHWaAKokyu6o5Z3/lU089xUMPPcQj\njzzC0NAQvb29XHnllTn9B3mkM5RcExF6o/D/fv8X5s2bx/A8kIsvvpinn36aK6+88pjWoybhCGft\nU2E6ZmLYH/7wB81EodNM5NR0zYQu9jSFJLNhtkhuD/MNN9xAS0sLu3btYv369Zx55pmFf3YgFkED\nTQ31/OUvf2FwcBBjDI899ti0m5Cqcm9aZiKjqalJM6EmTDNReLQhm0JW5vBaOW7IpiMRYV4yyVkr\nVrB27VpOOukkli9fjuu6XHPNNX6Xp5Rv1qxZo5lQapTpmgkxZtyVKvLO6tWrzcaNG/0ug82bN2fV\njR/s2ktbuptZdgXVFYX/CZApZVzY/zIxKSJSt/iId8/2NZhKIvK8MWa1nzUUWibU1MmH10Az8ZZ8\neD1munx4DSaSCR26mUJhK0RtOk3YCvpdSgHwPvhgpmC9NqWUUirfaUM2hUQsatLpnM8hm5ZEcI0w\n9nrDSiml1PSmncJUGm7ExPa3jgJhRDDakCmllJqBtCE7StnMvXMDUd50a3EDurF4NgxAFpcsC2ne\n40yir4t/9NjnJ31d/FOIx14bsqMQDofp6Og44gsuQA9RHfPJUooA5gjz7YwxdHR0EJ6CzdrV0cs2\nEyr3NBP5STPhn0LNxGS2TpqxGhsbaWlpob29/bD3M8YQi6fY3etMyebi041xDUgfcnDzYe8XDodp\nbGw8RlWpbGSbCTU1NBP5RzPhr0LMhDZkRyEQCDBv3jy/y1Aqb2gmlDqUZkJNlF6yVEoppZTymTZk\nSimllFI+04ZMKaWUUspnBbV1koi0A28e5i7VwMFjVM5U0Pr9NdH65xpjaqaqmGxoJvLeTKtfMzH1\ntH5/TVkmCqohOxIR2ej3PmqTofX7q9DrH0uh/0xav78Kvf6xFPrPpPX7ayrr10uWSimllFI+04ZM\nKaWUUspn060hu8PvAiZJ6/dXodc/lkL/mbR+fxV6/WMp9J9J6/fXlNU/reaQKaWUUkoVouk2QqaU\nUkopVXCmRUMmIueJyFYR2S4iX/W7nokQkTki8oSIbBaRV0XkOr9rOhoiYovIiyLysN+1TJSIlIvI\ngyKyJfM6nOp3TZOlmfCfZiK/aCb8p5k4wt9R6JcsRcQGXgfOAVqADcDlxpjXfC0sSyJSB9QZY14Q\nkRLgeeBvC6X+YSLyBWA1UGqMudDveiZCRP4F+JMx5k4RCQJFxphuv+s6WpqJ/KCZyB+aifyg2WN+\n8gAAAvxJREFUmTi86TBCdgqw3RizwxiTANYDH/a5pqwZY/YbY17I/LkP2Aw0+FvVxIhII/BB4E6/\na5koESkF3gfcBWCMSRTyG0+GZsJnmom8o5nwmWbiyKZDQ9YA7Bn1dQsF9g91mIg0AyuBZ/2tZMJu\nAb4MuH4XchTmA+3APZmh9DtFJOp3UZOkmfCfZiK/aCb8p5k4gunQkMkYtxXcdVgRKQZ+BXzeGNPr\ndz3ZEpELgQPGmOf9ruUoOcBJwE+MMSuBAaCg5peMQTPhI81EXtJM+EgzkZ3p0JC1AHNGfd0I7POp\nlqMiIgG8kP2bMeY//K5ngk4DLhKRXXiXAc4Ukfv9LWlCWoAWY8zw2eaDeMErZJoJf2km8o9mwl+a\niSxMh4ZsA7BQROZlJtpdBjzkc01ZExHBuy692RjzQ7/rmShjzNeMMY3GmGa8Y/+4MeZKn8vKmjGm\nFdgjIoszN50FFNRE2TFoJnykmchLmgkfaSay4+T6CY81Y0xKRD4L/DdgA3cbY171uayJOA24Ctgk\nIi9lbvu6MeYRH2uaaT4H/FvmF/UO4KM+1zMpmgmVA5qJ/KKZ8N+UZ6Lgl71QSimllCp00+GSpVJK\nKaVUQdOGTCmllFLKZ9qQKaWUUkr5TBsypZRSSimfaUOmlFJKKeUzbciUUkoppXymDZlSSimllM+0\nIZtBRORkEXlFRMIiEhWRV0XkBL/rUsovmgmlDqWZ8I8uDDvDiMh3gDAQwdub6wafS1LKV5oJpQ6l\nmfCHNmQzTGbbhw3AEPAeY0za55KU8pVmQqlDaSb8oZcsZ55KoBgowTsDUmqm00wodSjNhA90hGyG\nEZGHgPXAPKDOGPNZn0tSyleaCaUOpZnwh+N3AerYEZH/CaSMMT8XERt4WkTONMY87ndtSvlBM6HU\noTQT/tERMqWUUkopn+kcMqWUUkopn2lDppRSSinlM23IlFJKKaV8pg2ZUkoppZTPtCFTSimllPKZ\nNmRKKaWUUj7ThkwppZRSymfakCmllFJK+ez/A7rHwmyJPqEEAAAAAElFTkSuQmCC\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "What about non-periodic datasets without dask?\n--------------------------------------------\n\nTo estimate these derivatives we will use `xgradient` instead of `xdiff`" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., np.pi, 50, endpoint=False) # Halt at np.pi (rather than 2 * np.pi)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])", | |
"execution_count": 10, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxgradient(test, 'x', accuracy=8, spacing=dx).plot(label='result')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 11, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 11, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x115b81208>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x115b815f8>", | |
"image/png": "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\nUiqf/w/lryBpF7/towAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Again this can be done for arbitrary order of accuracy\nax = plt.axes()\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\nfor order in [2, 4, 6, 8]:\n result = xgradient(test, 'x', accuracy=order, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\nax.set_yscale('log')\nax.legend(loc='lower center', ncol=2)", | |
"execution_count": 12, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 12, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x1159a0ac8>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x115c88c18>", | |
"image/png": "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\nAAAAAElFTkSuQmCC\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Finally non-periodic datasets with dask\n-------------------------------------" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., np.pi, 50, endpoint=False) # Halt at np.pi (rather than 2 * np.pi)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x']).chunk({'x': 10})", | |
"execution_count": 13, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.data", | |
"execution_count": 14, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 14, | |
"data": { | |
"text/plain": "dask.array<xarray-<this-array>, shape=(50,), dtype=float64, chunksize=(10,)>" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxgradient(test, 'x', accuracy=8, spacing=dx).plot(label='result')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 15, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 15, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x1159cbb38>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x115387b70>", | |
"image/png": "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\nUiqf/w/lryBpF7/towAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Again this can be done for arbitrary order of accuracy\nax = plt.axes()\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\nfor order in [2, 4, 6, 8]:\n result = xgradient(test, 'x', accuracy=order, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\nax.set_yscale('log')\nax.legend(loc='lower center', ncol=2)", | |
"execution_count": 16, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 16, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x115a06e10>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x1154d3b00>", | |
"image/png": "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\nAAAAAElFTkSuQmCC\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "These work on multi-dimensional datasets just as well\n--------------------------------------------------\nThis is a 3D example with dask:" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\ndx = x[1] - x[0]\ny = xr.DataArray(np.arange(10), coords=[np.arange(10)], dims=['y'])\nz = xr.DataArray(np.arange(12, 20), coords=[np.arange(12, 20)], dims=['z'])\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])", | |
"execution_count": 17, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test3d, _ = xr.broadcast(test, y * z)\ntest3d = test3d.transpose('y', 'x', 'z').chunk({'x': 10, 'y': 1})\nresult = xdiff(test3d, 'x', accuracy=6, method='backward', spacing=dx).isel(z=5).plot()", | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x115a0d438>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Upwind derivatives\n-----------------\nThese also work with dask; the upwind stencils generated are consistent with Wikipedia for 2nd and 3rd order differences; I'm not 100% sure how to handle higher order cases, but I made the assumption that upwind stencils always are shifted one place from their center (I'm not sure if that's the correct assumption). I've implemented a differencing function that takes into account the velocity direction in `xdiff_upwind` which is demonstrated here. As before, this is dask compatible (as it relies on the previously defined and now extended `xdiff` method)." | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "upwind_weights_left(3)", | |
"execution_count": 19, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 19, | |
"data": { | |
"text/plain": "[-0.333333333333333, -0.500000000000000, 1.00000000000000, -0.166666666666667]" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "upwind_weights_right(3)", | |
"execution_count": 20, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 20, | |
"data": { | |
"text/plain": "[0.166666666666667, -1.00000000000000, 0.500000000000000, 0.333333333333333]" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\nv = np.random.rand(100) - 0.5\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])\ntest_v = xr.DataArray(v, coords=[x], dims=['x'])", | |
"execution_count": 21, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "fig, ax = plt.subplots(1, 1)\nfig.set_size_inches(6, 4)\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\n\nfor order in [1, 2, 3, 4, 5, 6, 7, 8]:\n result = xdiff_upwind(test, test_v, 'x', accuracy=order, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\nax.set_title(method)\nax.set_yscale('log')\nax.legend(loc='lower center', ncol=4)\nax.set_title('Upwind')", | |
"execution_count": 22, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 22, | |
"data": { | |
"text/plain": "<matplotlib.text.Text at 0x115ea4278>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x115948630>", | |
"image/png": "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\nnx07duTl3JmZxJmBChmZReog3Qcw8saf2So0s7PYmTidTvr6+nIY8dylagiKokw6i8WCYRijtpId\n2XcwMllIKYnH49nFGpWpo/5rK4oy6TL9UJk5MEC2dmC1WkkkEtl+hMyy27lcFE8ZmylLCEKI+UKI\n+4UQvz7huEsIsVUIMTsaaxVFOUkmIYzsK8j87nQ6RzUfZfoaVEKYemNKCEKIB4QQfiHErhOOXyOE\n2C+EOCiE+MKZ3kNKeUhKedcpHvo88Kuxh6woykyjaRpms/mkhDByDaxMs1EsFsNisczKrSynu7HW\nEB4ERg1JEEKYgB8C1wJLgduFEEuFECuEEE+e8FN2qjcVQrwX2AN0n/MnUBRlRrBarSSTSaSU2RpB\n5sZvNpuzu+klk0lVO8iTMY0yklK+KoSoP+FwM3BQSnkIQAjxKHCTlPIeYKzNP+sBF+mEEhVCPC2l\nPLc57oqiTGsWi4VIJIKu6wghsjvoQXphwXA4nG0umq77gc92E+lDqAZaR/y7bfjYKQkhioUQPwFW\nCyG+CCCl/LKU8rPAL4F/P1UyEELcLYTYIoTYonY+mh5aW1tZv349S5YsYdmyZdx77735DimndF1n\n9erVs2YOAsDg4CC33norixcvZsmSJWzatGnKYxjZj5BpOsocyySAYDCIpmnjmgz5r//6ryxbtozl\ny5dz++2352S57blqIgnhVFMHT55umHlAyj4p5cellI3DtYiRjz0opXzyNK+7T0q5Tkq5rrS0dALh\nKrliNpv5l3/5F/bu3cubb77JD3/4Q/bs2ZPvsHLm3nvvZcmSJfkOI6c+85nPcM0117Bv3z527NiR\nl893poSQmYNgGAZ2u33MiyW2t7fzve99jy1btrBr1y50XefRRx+dhOjnholMTGsDakf8uwbomFg4\nyrg88wXo2pnb96xYAdd+44xPqayspLKyEgCPx8OSJUtob29n6dKlOQmh6+tfJ743t8tf25YspuJL\nXzrr89ra2njqqaf48pe/zHe+852cxgDw8oP34T96KKfvWVY3n/V/efdpHw8EArz66qs8+OCDwPGd\nznLpmWeeoaur66zPyySCTJPRyJpApn8hs7lSRUUF11577VnfM5VKEY1Gs01SmTWblPGbSA1hM9Ak\nhGgQQliB24DHcxOWMlMcOXKEbdu2zZploj/72c/yrW99a1ZNiDp06BClpaXceeedrF69mo997GPZ\n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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxdiff_upwind(test, test_v, 'x', accuracy=2, spacing=dx).plot(label='2')\nxdiff_upwind(test, test_v, 'x', accuracy=3, spacing=dx).plot(label='3')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 23, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 23, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x116023048>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x1160236d8>", | |
"image/png": "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\ntwW4IJhx5CMqlszm86cbqH6F+3B10jO9dxA3UjOZ8PtRdX2DYlVh2z9huSGOV0o1oJmd9yvkZpE2\nkZRyHbDuruc+uOvxR3nstxNoYIkMtqpc2To84tCD1brVvFDtB0qVsOsRuxZRv5Inox/zY/Jfp/jt\nQDTPNKmidSTFDsVdO8yHEUvx0zkz7PF5WscpVOrKZ41tPRPLr8db0irLmyWGixzaP0frSDZhQJua\nNKtRho9WH+dyQqrWcRQ7Iw3ZfLS+P8k6weR203FyLLrrqFuDKgwaSkzN4u0Vh6lT3o1Jzy2hotQx\n/vAMUpOuah2tyNPrBFOfD0IIGL38MEaj+kpJsZw/No5kq0jnrcod8a3+iNZxCp0qDBr6ZO0J4pIz\nmfpcEGU9yvFJ0/FE6QVfr3lV62g2oXIpV95/oh57LyTw8+6LD95BUcxwPWovX17dQrAoQd8OU7SO\nowlVGDQSejqGFfujGPRozX+HpjYN6EPvkrX4NSOKg/vtb2Iua3i2SRUeqePNF+tPqa+UlAKTBgMT\nNw0lC8HHHb9Bp7P/2YzzogqDBm6lZzFh5VFql3P7z/KcIx+fTyWp4/3DM0lPjtEooe0QQjD56Qbo\nhGCcmoVVKaA1W8ayTaQzonIHqlVqqnUczajCoIHP153k+q10vnw2EGeHOz+RlHAtzcdNxnJRL/hm\nzSvaBLQxlUq58u7j/uw8F8+ivZe0jqPYqLirh5gctYEgXHihmH6FdJsqDIVsz/l4Fu+9zIA2NQmq\nWirPbZo1fIlnSlTn5/RLHD+6qJAT2qbeTavSyrcsk9edUhPtKfknJZM3DiFdCCa2n1ksrm6+H1UY\nClFGtoHxvx+lahlX3upY577bjuw6lzJS8PG+yWRnphRSQtslhGBSzwZkGox8/OdxreMoNmbbzi/Y\nIJMY6N2MGlVbaB1Hc6owFKLvw85zPjaFT3oE4Op0/04tD7cKjKv7Mif1ksXrhxVSQtvm41WSER1q\ns+7oNTafvK51HMVGpCZdZdLpX6hp1PHaY7O0jlMkqMJQSM7FJjMrNIInAyvR1s+8hXc6Nx9Da50H\nX8fv5drl3VZOaB8GtKlJnfJufLDqOCkZ2VrHUWzAd+sGcEUv+CBkAo6OLlrHKRJUYSgEUkre/f0o\nLo46Pnii3oN3MBFC8F6nbwHBpC0jHrgcqAJODjo+e6oB0TfTmLbxjNZxlCLu9Inf+Dktkl6u1WhS\n/3mt4xQZqjAUgtWHr7D7fALjutbF2905X/tWrhDI4AptCCONrTs+t1JC+xLsU4Y+IdWYvzOS09eS\ntI6jFFFGQxaf7v4ETwkju6jrhnJThcHKktKz+HTtSQKreNK7abWHOsaLHadR06hj8plFZKTGWTih\nfXq7sx/uLg68v+qYurZBydOfm8dxSG/grZpP4emR56KTxZYqDFY2Y9NZ4pIzmNgjAL3u4abTdnR0\nYULj0UTpBfP+GmzhhPapdEkn3u5cl70XElh9+F7rRinF1a2EC0yN2kAgzvRo85HWcYocVRis6PS1\nJObvjKR302oE3uOaBXM1C3yZLo7e/HjrJFGRWy2U0L4937QqgVU8+XTtSZLSs7SOoxQh32wYxE2d\n4N1WnxbbaS/uRxUGK5FS8sGqY7i7OPB2Zz+LHHN0p1nogC+2jlUd0WbQ6wQTewQQl5zB9E1qnWgl\nx6kTK1iaEc1zJWvh79tF6zhFkkUKgxCiixDitBAiQgjxTh6vvyKEiBVCHDLd+ud6rZ8Q4qzp1s8S\neYqCtUevsudCAmMe86N0SSeLHLOCtz+DKrQmjDR27J5qkWPau8CqpejdtCoLd0YSEZOsdRxFY9Jg\n4PM9k/CUMKzLd1rHKbIKXBiEEHpgFtAVqAf0EULkNSZzqZQyyHSba9q3DPAh0AwIAT4UQpQuaCat\npWcZ+HzdKfwretAn5OE6nO/lxQ5TqWYU/O/kArIy1BudOUY/5oero55P1xabVWOVe/h720cc0GUz\nrFo3PN0raR2nyLJEiyEEiJBSnpdSZgJLgB5m7tsZ2CilTJBS3gA2Ajbftpu97TzRN9P44Il6D93h\nfC9OTiUYEzCA83pYtvEtix7bXnm5OfNmx9qEnY4l9JSasba4Sk+JY8qF36ljdKDXo5O0jlOkWaIw\nVAYu53ocZXrubr2EEEeEECuEEFXzua/NuJqYxndh5+gaUIEWtcpa5Rxtg4fRQrgxK3YXN+JOW+Uc\n9ublFj7U9CrJJ2tPkJlt1DqOooGFG4ZyVS94J3g0egdHreMUaZYoDHl9JL67Z/RPwEdK2RDYBCzM\nx745GwoxUAgRLoQIj42Nfeiw1vbFX6cwSMmEbv5WO4cQgrcf+YxUIZi1cbjVzmNPnBx0vPeEP+dj\nU/hpV6TWcZRCdj06nB8Tj9HJoQxNG7yodZwizxKFIQqomutxFeCOgeNSyngpZYbp4Rygibn75jrG\nbCllsJQy2Nvb2wKxLe/gpRv8cegKA9rUoGqZElY9l69PO55zq8XyjCtEnFlj1XPZi3Z+5Xi0jjcz\nNp8lISVT6zhKIZoROgqDEIxqP03rKDbBEoVhH1BbCFFDCOEE9AZW595ACFEx18PuwEnTzxuAx4QQ\npU2dzo+ZnrM5UkomrT2Jl5szg9v6Fso5h3T6mpISpu6cqIavmkEIwbuP+5OSkc3MzWr4anFx4vgy\n/jTc4EXP+lSp2FjrODahwIVBSpkNDCPnDf0ksExKeVwIMVEI0d202QghxHEhxGFgBPCKad8E4BNy\niss+YKLpOZuz4fg1wi/eYFSnOrg5F84iH6U8qzGwQhu2izR27fumUM5p6+qUd+f5ptX4ZfdFLsSp\ndS7snTQa+WrvZEobJf07zdQ6js0QtjiPTHBwsAwPD9c6xr8ys408Nm0rTg461o1og4O+8K4bzMhM\npsevLXCTgqUv7UPvmL9J+oqjmKR02n0ZRuvaXvzwUrDWcRQrCtvxOcMjFjGhUkf6dFJfIwkh9ksp\nH/iPXl35bAG/7L5IZHwq47v5F2pRAHB2cuPN2r05rZf8GTahUM9tq8q5uzDo0VpsOH6dvRdssoGq\nmCErM4UppxfhY9TxTDs1M3F+qMJQQImpWczccpbWvl60raNNp3iXluNpIB35+vIG0lKK7oitoqR/\nm5pU8HBh0toTavZVO7Vy0xgi9TCq3ms4OqgFePJDFYYC+m7rORLTshjfrS5CWPZiNnMJnY4xwWOJ\n0Qt+3ThSkwy2xtVJz+jH6nA4KpF1R69pHUexsNRbV/j22jaa4ELbkBFax7E5qjAUwJWbaczfcYGn\ngipTv5KnplkaB/Shrc6TH28c5GacWrnMHE83roJfeXe+3HCKLIO66M2eLNw0kgS9jlEh4zX7wGbL\nVGEogOmbziAljOxUR+soALzZ5hNShWD25lFaR7EJep1gXFc/IuNTWbL3ktZxFAuJiznOgsRjdNKX\noaH/01rHsUmqMDykM9eTWLE/ipdaVLf6xWzm8vVpRw+XyixJiyT68k6t49iEdn7lCKlRhhmbz5KS\nka11HMUCZm8ZTYYQDFfzIT00VRge0v/Wn6akkwND2xXOxWzmGtJuCjpg1tbxWkexCUII3ulal7jk\nTOZuv6B1HKWALkduY3l6FL1KVKdG1dZax7FZqjA8hH2RCWw6eZ1BbWtRxkJrLVhKhfIB9PWsx5rs\neE6f+l3rODahcbXSdA2owOxt54hLznjwDkqR9fX2d3GUMKi9Wq+kIFRhyCcpJf9bfwpvd2debeWj\ndZw8vd5xOm4SZu6ZrHUUmzGmsx9pWQZmhUZoHUV5SCdPruQv401eLBWAt5dlVk0srlRhyKew07Hs\ni7zBiPa+lHAqnKkv8svDvRKveTdjG6kcPDRf6zg2oZa3G880qcKvuy8RdSNV6zjKQ5i5dzIeRskr\nHVVroaBUYcgHo1Hyvw2nqVrGleebWnZlNkvr22EKXkbJjINfI41qKKY53uyYM7pshlof2ubsPziX\nf0jjtXLN8VArsxWYKgz5sPboVU5evcWoTnVwcija/+lcXUvxRuWO7NdlsWPvDK3j2ITKpVx5sXl1\nfjsQpdaHtiHSaGTmoVl4GyUvtP9K6zh2oWi/uxUhWQYjUzeewa+8O90DbWORuV5tP6eyEWaeWIDR\noIZimmNou1q4OuqZulGtjGcrtu+ZygFdNm9U6YSraymt49gFVRjM9Nv+KC7EpTCms5/F13G2Fkcn\nV4bWfIqTeiMb//lU6zg2oaybM/3b1GTd0WscjUrUOo7yAEZDFl+f/JkqRnj60c+0jmM3VGEwQ0a2\ngZmbzxJUtRQd/ctpHSdfurV6n1pGHbPO/YYhSw3FNMfrbWpQqoSjajXYgI3/fMYpvZEhNZ/C0clV\n6zh2QxUGMyzec4kriemMeczP5uZd0Ts4MsyvLxf0sHbb+1rHsQkeLo688UgtQk/Hsv+impa7qDJk\nZTDr3ApqGnV0a6X+bVuSRQqDEKKLEOK0ECJCCPFOHq+PEkKcEEIcEUJsFkJUz/WaQQhxyHRbffe+\nWkvLNPBN6Dma1yxDK9+yWsd5KB2aj8Hf6MC3F9eRlalWLTNHv5bV8XJz5qsNakLComrdtg+5oIeh\ndfqgd3DUOo5dKXBhEELogVlAV6Ae0EcIUe+uzQ4CwVLKhsAK4H+5XkuTUgaZbt0pYn7aFUlccgaj\nbbC1cJvQ6RgW8BrResEfoWoxH3OUcHJgaLta7Dofz86IOK3jKHfJykzh24tr8Dfq6dhirNZx7I4l\nWgwhQISU8ryUMhNYAvTIvYGUMlRKefuqod1AFQuc1+qS0rP4fus5Hq3jTVOfMlrHKZA2TYYSKJ34\nIXozGWk3tI5jE/qEVKOipwtf/X1aLeZTxPwROoEovWBY/dfQ6fRax7E7ligMlYHLuR5HmZ67l9eB\nv3I9dhFChAshdgshet5rJyHEQNN24bGxhbNK2fwdkdxIzWJUEZlWuyCETsfwoKFc1wuWbxmndRyb\n4OKoZ3j72hy4dJOw02plvKIiMz2RH6I301A60SZ4mNZx7JIlCkNe36/k+fFKCPEiEAx8mevpaqbF\nqV8ApgshauW1r5RytpQyWEoZ7O1t/SU0E9OymLP9PJ3qlSewqn2MjW4W9BpNceHH6ztJS43XOo5N\neDa4ClXLuDJ14xnVaigifgsdz3W9YFjDQQidGj9jDZb4rxoFVM31uApw5e6NhBAdgXeB7lLKf8dN\nSimvmO7PA2FAIwtkKrAf/7lAUno2b3WsrXUUixrSaARxesGyLW9rHcUmOOp1DG9fm6PRiWw6GaN1\nnGIvPTWBuVe30Vg607xRf63j2C1LFIZ9QG0hRA0hhBPQG7hjdJEQohHwAzlFISbX86WFEM6mn72A\nVsAJC2QqkJupmcz75wJdAypovmSnpQU3fInmlGBezG5SU9QbnTmeblSZ6mVLMHXjGYxG1WrQ0orQ\n8cToBcOChtrsYBBbUODCIKXMBoYBG4CTwDIp5XEhxEQhxO1RRl8CbsDyu4al+gPhQojDQCgwWUqp\neWGYs/08KZnZvNXR9vsW8jK0Sc56uEtVX4NZHPQ63uxQm5NXb/H3iWtaxym20lLj+fH6DkJwoWnQ\nq1rHsWsWmTdaSrkOWHfXcx/k+rnjPfbbCTSwRAZLSUjJZP6OSB5vUBG/Cu5ax7GKoIDetDownXlx\ne3ku6Sol3StqHanI6xFUmW9CI5i28SyP1auAzkamRbEny7a8TZxe8FWjEVpHsXuq5+Yus7edJy3L\nwJsd7Ktv4W5Dm47hpk7HYtVqMIteJ3irYx1OX09i3bGrWscpdlJTYpkXs4dmuNKk4Utax7F7qjDk\nEp+cwU+7IukeWIna5e2ztXBbA/9neES4syBhP8lJ/xkroOTh8QYVqV3OjZmbz6q+hkK2LHQcCXrB\nsCYjtY5SLKjCkMvsbedJzzIwvL19txZuG9J0DIk6HYtUq8Esep1gRIfanLmezNqjqtVQWFJTYpgf\ns4eWlCAooI/WcYoFVRhM4pIz+GnXRboHVsK3nJvWcQpFff+neVS4szDhAMm3orWOYxO65Wo1GFSr\noVAs3TKOBL2OwcGqtVBYVGEwmb3tPBnZBobbed/C3QY3e5tbOh2/qusazKLXCd7sWJuzMarVUBhS\nk68zP24frShBUP3eWscpNlRh4HZrIZIeQZWp5V08Wgu31ffrSVudOwtvHCYpMUrrODahW0BF6pRX\nrYbCsCSmacymAAAgAElEQVR0HDd0gsHBo7SOUqyowkBOayEz28jw9r5aR9HEoJC3SdIJfglVrQZz\n6HSCNzvUISImmTVHVMe9taQmX2dB3D5aiZIE1n9e6zjFSrEvDLlbCzWLWWvhtpxWgwc/3ziiWg1m\n6hpQgTrl3fh6S4RqNVhJTmtBx2A1EqnQFfvCUNxbC7cNChlLkk6wKPQ/6ywpedCZRihFqL4Gq0hN\njmFBXDitUK0FLRTrwhCXnMHPuy4W69bCbfX9etJWuPPTjYPqugYzdQvIGaH0teprsLiloe+Y+hZU\na0ELxbowzDGNRBpWzFsLtw0KGcstdV2D2W63Gs7GJLNOtRosJjUllvlxe2lFCdVa0EixLQzxua5b\nKG4jke6lft2neFS48VPCAZKT1BudObqpq6EtbumWnJFIg5q8qXWUYqvYFobZ28+Tnm1gWDG5ytlc\ng01XQ6s5lMyj1wmG3241qDmUCiw1NY4FcXtpiStBAS9oHafYKpaFISElk593XeTJhsXnKmdz1ffv\nRRvhxsKEA6QkqymmzfF4g4r4qlaDRSzf8g4JOsEgNYOqpoplYZizPWcG1REdVN9CXgYHjyJRJ1gc\nqloN5tDrBMPb+3LmejLrj6ti+rDSUhOYF7ub5rjSqOGLWscp1ixSGIQQXYQQp4UQEUKI/4x3FEI4\nCyGWml7fI4TwyfXaeNPzp4UQnS2R535upGTy085I06c8+55B9WE1qPcsrSjJwrj9pCarVd7M8UTD\nStT0LqlaDQWwPCyntTA4aJjWUYq9AhcGIYQemAV0BeoBfYQQ9e7a7HXghpTSF5gGfGHatx45S4HW\nB7oA35qOZzVz/zlPapaBEcVsTqT8Ghw8kps6wRLVajDL7VbDqWtJapW3h5CedoP513bSDBcaB76s\ndZxizxIthhAgQkp5XkqZCSwBety1TQ9goennFUAHkbNgaw9giZQyQ0p5AYgwHc8qbqZmsnDnRdNc\nN6q1cD+B9Z+nJSVYGLeP1NQ4rePYhCcbVqKGV0lmbI5QrYZ8WhE2nji9YFDgUK2jKFimMFQGLud6\nHGV6Ls9tTGtEJwJlzdzXYub9c4HkjGyGq74Fswxu8iYJOsGyLepqaHM46HUMa+fLyau32HjyutZx\nbEZGeiLzrv5DU+lMcNArWsdRsExhyGvx27s/Lt1rG3P2zTmAEAOFEOFCiPDY2Nh8RswRn5LJ4w0r\nUreCx0PtX9wEBbxAc1yZH7ubtNQErePYhB5BlfApW4KZm88ipWo1mGNF6Hhi9YLBgYO0jqKYWKIw\nRAFVcz2uAtw9p8K/2wghHABPIMHMfQGQUs6WUgZLKYO9vb0fKuikpxows3ejh9q3uBrcaHhOqyFM\ntRrM4aDXMbSdL8ev3GLTSdVx/yA5rYVtNJFONA16Xes4ioklCsM+oLYQooYQwomczuTVd22zGuhn\n+vkZYIvM+Ti1GuhtGrVUA6gN7LVApnvS6/JqpCj30rjhSzTDhfnXd5KWdkPrODbhqUaVqVamBDM2\nn1Gthgf4LexdYvSCwQ0HglD/bxYVBS4Mpj6DYcAG4CSwTEp5XAgxUQjR3bTZj0BZIUQEMAp4x7Tv\ncWAZcAJYDwyVUhoKmkmxrEGBQ4nXCVaEjtc6ik243ddwLPoWW06pVsO9ZGYk8eOVMBpLJ0KCBmgd\nR8lF2OInmuDgYBkeHq51jGLltQXBXDCm81eff3BxLaV1nCIvy2Ck/ZQwypRw4o+hrRDq0/B/LNkw\nnEnXwpgdMJQWTVT/QmEQQuyXUgY/aLtieeWzkn+DAwcRpxf8Fvau1lFsgqNex9C2vhyOSiTszMMN\nlrBnmRlJzI0OJUg60rzRQK3j2IS45Aym/n2axNQsq59LFQbFLE2DXqeJdGLe1a1kZNzSOo5NeLpx\nFSqXcmXGJjVC6W5/bH2P63rB4PqvI3Tqbcgcs7ed55vQCOJTMqx+LvUXUcwjBIMbDCRGL/gtdILW\naWyCk0POCKVDl2+yVbUa/pWVkcKcqM0EGh1p0WSw1nFsQmEvQawKg2K2kEYDaCyd+PFqmGo1mOmZ\nJjmthumq1fCv37e+xzW9YHD911RrwUxzTEsQF9aiYuqvophN6HQMbtCfGJ1gpeprMIuTg44h7Wpx\n6PJNtp1VU4tkZaQwN2ojDY0OtAweonUcmxCnwaJiqjAo+dKs0Rs0NjoyNzqUzIwkrePYhGebVKWS\npwvTN6nrGv7Y9j5X9YLB9V9VrQUzzdl+ewniwpv4U/1llHwROh2DGvQnRq9aDebKaTX4cvDSTbYX\n41ZDVkYKcy5vpIHRgVbBamptc8QnZ/DTzos8GVi4i4qpwqDkW/PGg2hkdGRO9BbVajDTs8FVin2r\nYdW2D7iqh0H1+qnWgpluL0E8vJD6Fm5Tfx0l33L6Gl7PGaGkWg1mcXbQM6SdLwcuFc++hqzMVGZf\n/puGRgfaNFXLdprjdmuhe2ClQl9UTBUG5aE0bzyYRkZH5kZvUSOUzPRccPHta8jpW4DB9VTfgrlm\nb8vpWxheiH0Lt6m/kPJQhE7HkAYDVKshH5wcdAxtn9PXUJyua8jKTGXOpZzWQqumqm/BHLlHIhVm\n38JtqjAoD61Z4zdyrmu4EqpaDWZ6tknVYnddw+9b3+OqHoaokUhmm3O7taDREsTqr6Q8NKHTMbTB\nQGJ0ghXqamiz5L4aujjMoZSVmcqcf69bUK0Fc9xuLfQIqlxo1y3cTRUGpUCaNhpAsHTixythpKfd\n1DqOTfj3auiN9t/X8PvWd7mmg6HqKmez/bD1nKlvQbsliNVfSikQodMxpOFgYvWC5WFqvQZzODno\nGNEhZ+ZVe16vISMjidmXN9LI6EiL4KFax7EJMbfS+WnXRZ5qVKVQ5kS6F1UYlAJr2uh1mkln5l7b\nTmqaWhvaHE83rkK1MiWYZscjlH4Lm8B1vWBogwGqtWCm77aeI9soGdFBu9YCFLAwCCHKCCE2CiHO\nmu5L57FNkBBilxDiuBDiiBDi+VyvLRBCXBBCHDLdggqSR9GIEAxpNCxnbegtam1oczjqdYzoUJtj\n0bfYeOK61nEsLj3tJnOvhBIsnQhp/IbWcWzCtcR0ft1ziWcaV6F62ZKaZiloGX8H2CylrA1sNj2+\nWyrwspSyPtAFmC6EyL0E2FgpZZDpdqiAeRSNNA58hRbShfkxO0lNKX4XcD2MnkGVqOFVkmmbzmI0\n2lerYXnYeGJ1giENB6vWgpm+DYvAaJSFNoPq/RT0L9YDWGj6eSHQ8+4NpJRnpJRnTT9fAWIA7wKe\nVymChjQeQYJOsDh0nNZRbIKDXsebHWpz8uotNhy/pnUci0lNS2Dute00k840bfS61nFsQvTNNJbs\nvcxzTatStUwJreMUuDCUl1JeBTDdl7vfxkKIEMAJOJfr6Ummr5imCSGcC5hH0VBQw5dojSvzY/eQ\nnGx/X49Yw5OBlajlXZKpG89gsJNWw9Itb5OgEwxtNBzUWtdm+WZLBBLJ0HbatxbAjMIghNgkhDiW\nx61Hfk4khKgI/Ay8KqU0mp4eD9QFmgJlgHt+1BRCDBRChAshwmNj7X/8t60aFjyGRJ3g5y1jtI5i\nE/Q6wchOdTgbk8yaI1e0jlNgycnXmRezm1a40iiwn9ZxbMLF+BSWh1/mhZBqVC7lqnUcwIzCIKXs\nKKUMyOO2CrhuesO//caf59g7IYQHsBZ4T0q5O9exr8ocGcB8IOQ+OWZLKYOllMHe3uqbqKKqfv3n\naC/c+Sn+IIk3L2kdxyZ0C6hI3QruTNt4hiyD8cE7FGG/bBnLTZ1geLD6YGCuGZvPoteJItNagIJ/\nlbQauP2xoB+w6u4NhBBOwO/AT1LK5Xe9druoCHL6J44VMI9SBAxtPoEUAfNVq8EsOp1g9GN+RMan\nsvJAlNZxHlrizUssjD9Ae+FO/frPaR3HJkTEJPHHwWj6tfShnIeL1nH+VdDCMBnoJIQ4C3QyPUYI\nESyEmGva5jngEeCVPIal/iqEOAocBbyATwuYRykC6tR5gi4OZViUeIK4+LNax7EJHf3LEVjFk5mb\nI8jINmgd56EsDB1Lisj5YKCYZ9qms7g66nnjkZpaR7lDgQqDlDJeStlBSlnbdJ9gej5cStnf9PMv\nUkrHXENS/x2WKqVsL6VsYPpq6kUpZXLBfyWlKBjS6mMyBfwYqloN5hAip9UQfTONpfsuax0n3+Lj\nI/jl5nG6OJShTp0ntI5jE45fSWTtkau81roGZd2K1rgbNcBYsQqfGu3o7lSeZcnnuHbtsNZxbEKb\n2l6E1CjD11siSM3M1jpOvswNHUOGgCGtPtI6is2Y+vcZPFwc6N+maLUWQBUGxYoGPTIJCXwX9rbW\nUWyCEIKxnf2ITcpgwc5IreOY7eq1QyxNjqCnU3l8arTXOo5NCI9MYPOpGN54tBaero5ax/kPVRgU\nq6lUpTnPuVZjVXo0Fy5t0zqOTWjqU4Z2ft58H3aOxLQsreOY5bvQnMI/6NHPNU5iG6SU/G/Dabzc\nnHm1lY/WcfKkCoNiVQPaT8FJwqzt72sdxWaM6ezHrfRsZm879+CNNXb+4lZWZVzheVcfKla+52hz\nJZdtZ+PYeyGBER18KeHkoHWcPKnCoFhVWW9/XvKoy4bsBE6cWaN1HJtQv5InTwZWYt4/kcQkpWsd\n576+2f4BLlIyoMMUraPYBKNR8uWGU1Qt40rvptW0jnNPqjAoVvdKx6l4Go3M3D1J6yg2Y1SnOmQa\njMzaEqF1lHs6fno1Gw0JvOxZnzJeflrHsQl/HbvGsehbjOxYByeHovv2W3STKXbD3bMar5cNZodM\nZt/hhQ/eQaGGV0meC67Kor2XuBSfqnWcPM3Y8xmlDEb6dZyqdRSbkGUwMuXv09Qp70aPoMpax7kv\nVRiUQtGn41TKGyTTDs5AGm172ofC8lbH2uh1gikbT2sd5T92HpjDLpnCwHItcPOoonUcm7As/DLn\n41J4u3Nd9LqiPbmgKgxKoXApUZahVTtzVGSxcfeXWsexCeU9XHi9dQ1WHbrCsehEreP8y2g0MP3w\nt1QySJ7vqPoWzJGamc30TWcJ8SlDB//7TkJdJKjCoBSa7m0n4WsQzDz9K1nZRbtTtah449FalCrh\nyBfrT2kd5V8bdn7OSV02w6o/jpOLp9ZxbMKP2y8Qm5TBuK51ETYwFbkqDEqh0Tu68FbdvlzUSX4P\ne1frODbBw8WRYe182X42ju1ntZ9uPiszjZlnl+JnEDz+6Cdax7EJ8ckZ/LDtPJ3rl6dJ9f+sflwk\nqcKgFKpHmo+lsdGRby9vIDU1Xus4NuGlFtWpXMqVyX+d0nwJ0OVh7xClg5H1XkXn4KRpFlvx9ZYI\n0rIMjO1cV+soZlOFQSlUQqdjVJO3iNcJFmx8U+s4NsHZQc+YznU4fuUWqw5Ha5YjKeka30dvppnR\niZYh6m9njgtxKfyy+yLPBVfFt5yb1nHMpgqDUugCG75MZ50HCxIOERN7Uus4NqFHYGUaVPbky/Wn\nSc/SZlruuZtGcFPA6GbjETr11mGOL/46hbODjpGdamsdJV/UX1fRxJuPTiZLwDebR2odxSbodIIJ\n3fy5kpjOj/9cKPTzR189wC+JJ3jSwQv/es8U+vlt0b7IBNYfv8agR2tRzr3oLMJjDlUYFE1UrdaG\nF1x9+CM9itPnNmgdxya0qFWWjv7l+S7sHHHJGYV67hmhY9BJGN7+q0I9r60yGiWfrj1JBQ+XIjmt\n9oMUqDAIIcoIITYKIc6a7vPschdCGHKt3rY61/M1hBB7TPsvNS0DqhQTAx/7Gncp+WrHh0ipbaeq\nrRjfrS5pWQambzpTaOc8eup3/sqK5WV3PypUCi6089qyNUevcvjyTcZ09sPVSa91nHwraIvhHWCz\nlLI2sNn0OC9puVZv657r+S+Aaab9bwCvFzCPYkM8S9dgkHdzdssUtu//Tus4NqGWtxt9m1Vj8d7L\nnLmeZPXzSaORr/ZMoozByGuPzbT6+exBepaBL/46Rb2KHjzVqGhPfXEvBS0MPYDbk98sBHqau6PI\nucqjPbDiYfZX7EPvjtPxMcCXR38gK0td9GaOtzrWoaSTnk/WnLB6S2vDrskcIIMRlTtQ0sM23+QK\n29zt54m+mcZ7T/gX+akv7qWghaG8lPIqgOn+Xtd6uwghwoUQu4UQt9/8ywI3pZS31zCMAu75L08I\nMdB0jPDYWO0v9FEsw9HFnTF+fYnUGVm8Wa0PbY4yJZ14s2Mdtp+NY/PJGKudJy09kSlnFuNvEPRs\n/z+rnceeXEtMZ1boObrUr0DLWl5ax3loDywMQohNQohjedx65OM81aSUwcALwHQhRC0gr1J6z48/\nUsrZUspgKWWwt7d3Pk6tFHWPtHibVtKZ76+GkXCj8Efc2KKXW1SnlndJJq07SWa2dSYlXLBxBNd0\nMC5wGHpH2xpVo5X/rT+FQUomdPPXOkqBPLAwSCk7SikD8ritAq4LISoCmO7z/Pgipbxiuj8PhAGN\ngDiglBDi9hJGVYArBf6NFJsjdDrGtppIqoBZG4drHccmOOp1vPdEPS7EpbDQCutDX4s5xry4/XQW\nHjRpMtDix7dHBy7dYOXBaPq3rkG1siW0jlMgBf0qaTXQz/RzP2DV3RsIIUoLIZxNP3sBrYATMufL\n0VDgmfvtrxQPtWp3o7dzFVakRnL6/N9ax7EJ7fzK0c7Pm5mbzxKbZNnhq1M3vYkERrVVM+Gaw2iU\nTPzzBOXcnRnSzlfrOAVW0MIwGegkhDgLdDI9RggRLISYa9rGHwgXQhwmpxBMllKeML02DhglhIgg\np8/hxwLmUWzY4M6z8DRKPtv+rlqzwUzvPVGP9GyDRWdf3Xf0V/7KiuFVdz8qVWtpsePasxX7ozh0\n+SbjutTFzbloruOcHwUqDFLKeCllByllbdN9gun5cCllf9PPO6WUDaSUgab7H3Ptf15KGSKl9JVS\nPiulLNyrdpQixbNMLd6q1J4DpLNmx6dax7EJtbzd6N+mJiv2R7H/YkKBj5eVnc5n4V9S2SB5vesP\nFkho/26mZjJ5/Sma+pTm6cb2MXJLXfmsFCk9O06hoUHHlIhlJCVbb8SNPRne3peKni68/8dxsg0F\na2kt2jSaCJ2BcbV741LSdkfVFKYpf5/hZmomH3cPsIm1Fsxh+20ek6ysLKKiokhPLz5j4V1cXKhS\npQqOjo5aR7EYnYMTE5qOo8/+z/h2wyDG9VqpdaQir4STA+89Xo+hiw7w655L9Gvp81DHiYk/w3dX\nt9JGuNK21QTLhrRTx6IT+WXPRfq18KFeJQ+t41iM3RSGqKgo3N3d8fHxsZuqfT9SSuLj44mKiqJG\njRpax7Go+g1e4Nmj81icdIaeFzbjV6OD1pGKvG4NKtDa14uv/j5NtwYV8XZ3zvcxpvw9hCwB4x/9\nQs2eagajUfL+qmOULenEyE51tI5jUXbz109PT6ds2bLFoigACCEoW7as3baQRnT+Dg+jZOK2cRiN\n2kwzbUuEEHzUvT7pWQYmrT3x4B3usvPwfNZlXuc1Nz+q1mhvhYT2Z/G+Sxy8dJPxXf3xdLWfVjvY\nUWEAik1RuM2ef1/PsrUZW7UzR8hgeeh4rePYBN9ybgxu68sfh67kaxnQ9IwkPj0wjeoGSf9us62Y\n0H7E3Epn8l+naFmrrN10OOdmV4VBay1bWn5oX2RkJIsWLbL4cW3BE+2/pJnRkemX1hEbf1brODZh\nSNta1PQqybu/HzN7QZ/Z6wdxWSd5v/5AnEuUtXJC+zBxzQkyso182tN+OpxzU4XBgnbu3GnxYxbn\nwiD0et5/5AsyBUze8IbWcWyCi6OeT58K4FJCKjM3P7iYRlzcyvwbh+muK02zZiMKIaHtCz0dw5oj\nVxnWzpea3razXGd+qMJgQW5uOf9IwsLCaNu2Lc888wx169alb9++/86C6ePjw7hx4wgJCSEkJISI\niAgAXnnlFVasWPGfY73zzjts376doKAgpk2bVsi/kfaq1+rEGx71+Tsrlq1qam6ztKzlxTNNqjB7\n23lOXbt1z+2MRgMTw8bgZpSM6fx9ISa0XamZ2bz/xzF8y7kx6NFaWsexGrsZlZTbx38e58SVe/8P\n8TDqVfLgwyfrm739wYMHOX78OJUqVaJVq1bs2LGD1q1bA+Dh4cHevXv56aefeOutt1izZs09jzN5\n8mS++uqr+25j717tOpu/Frdm4pFv+cOvF+5u95rEV7nt3W7+hJ2OYezyI/w+pCUO+v9+Bly8eQwH\nSefTKp0oXa6eBiltz//Wnyb6ZhrL3miBk4P9fq62399MYyEhIVSpUgWdTkdQUBCRkZH/vtanT59/\n73ft2qVRQtvh6OrJJ8FvEyckX619Ves4NqF0SScm9gjgaHQis7ef/8/rl6/sZ0bURlpLF7p3mKJB\nQtuz53w8C3ZG0q+FD019ymgdx6rsssWQn0/21uLs/P/jyPV6PdnZ2f8+zt1ZdftnBwcHjKb5gaSU\nZGZmFlJS2xDQ8CVeObmMeemRdD40j5ZBr2kdqcjr1qAi3RpUYPrGs3TyL0/t8u5AzldIH2wagh7J\nhx2/Qehtb+nJwpaWaeDt345QrUwJ3u7ip3Ucq1MtBg0sXbr03/sWLVoAOX0P+/fvB2DVqlVkZWUB\n4O7uTlKS9ZdwtAVDnpxPDQN8dHAayalxWsexCRN7BFDSWc/YFUcwGHP6uZaFjidcpjK2YjsqVGmm\ncULb8NXfp7kYn8oXvRpSwskuP0/fQRUGDWRkZNCsWTNmzJjxb4fygAED2Lp1KyEhIezZs4eSJUsC\n0LBhQxwcHAgMDCyWnc+5OZfw4pNGI7kuJF+teUXrODbBy82Zj3sEcOjyTWZvO8/lK/uZemkdLY1O\nPNVputbxbMLeCwnM23GBl5pXp0Wt4jGcV1h7zVhrCA4OluHh4Xc8d/LkSfz9i/6qST4+PoSHh+Pl\nZZkJymzl97ak6Uuf5Mf0SGbWH0S74KFaxynypJQMXXSATSeiaOL7CRdJY2XHH6lQtbnW0Yq8W+lZ\ndJ2+HQe9YN2INpS08Sm1hRD7Tatp3pdqMSg2Z2j3n/E3wIdHvyMu4ZzWcYo8IQSTejagWbn5HNNl\nMKFyN1UUzPTR6uNcu5XOtOeDbL4o5EeBCoMQoowQYqMQ4qzpvnQe27QTQhzKdUsXQvQ0vbZACHEh\n12tBBcljCyIjIy3WWiiuHF1L8XmrSaQCH6x7BVts9Ra2qOgNHPWMoEmSE+Fp/R68g8LaI1dZeSCa\noe18aVztP29tdq2gLYZ3gM1SytrAZtPjO0gpQ6WUQVLKIKA9kArkXrtx7O3XpZSHCphHKSZq+XVn\nlFcI2w03WbplnNZxirTUtBuM3/Ee3kZJnYqfsWDXRcJOq7Uu7udqYhoTfj9KYNVSDG9v+0t15ldB\nC0MPYKHp54VAzwds/wzwl5QytYDnVRT6dP2B1kZnvry8jlPnN2odp0iSUvLJqt5cFgY+CxjEqO4d\n8Svvzuhlh7l+yz5n5i2obIOREYsPkm0wMv35IBzzuDjQ3hX0Ny4vpbwKYLp/0CWpvYHFdz03SQhx\nRAgxTQiR/0nklWJLODgyqdsCShklY7aOUUNY8/DHtg9Zk3GFwW5+NA0Zjoujnll9G5Gaafj3zU+5\n09SNZ9gXeYPPnm5ADa+SWsfRxAMLgxBikxDiWB63Hvk5kRCiItAA2JDr6fFAXaApUAa453cCQoiB\nQohwIUR4bKz5Uwor9q1M+QD+12Aol4WBj1f1Uf0NuZy5GMakCytpbnRkQPdf/n3et5w7n/YMYM+F\nBGaYMdFecRJ2OoZvw87RJ6QqPYLsbzptcz2wMEgpO0opA/K4rQKum97wb7/x3++Ly+eA36WUWbmO\nfVXmyADmAyH3yTFbShkspQz29vY29/crVJcvX6Zdu3b4+/tTv359ZsyYoXWkYqFJ0yEMd6/H+sxr\nLA97V+s4RUJKWgJjtryFu1HyeZcf0Tu53vF6ryZVeC64Ct+ERrD1jPqgBTn9CqOWHaZuBfciMXuC\nlgr6VdJq4PYQh37Aqvts24e7vkbKVVQEOf0TxwqYR1MODg5MmTKFkydPsnv3bmbNmsWJE/lfTUvJ\nv9d6/ExroxOfX1zNwVPFe51oo9HAu7/34pLI5ov6A/Cq2CjP7T7uHoBfeXdGLD7IxfiUQk5ZtKRn\nGXjj5/1kZBmY1bcxLo7Fe5qQghaGyUAnIcRZoJPpMUKIYCHE3NsbCSF8gKrA1rv2/1UIcRQ4CngB\nnxYwj6YqVqxI48aNgZypLPz9/YmOjtY4VfGgc3Bm8pOLqWSQjNz1IdfiTmkdSTM/rB/E5qw4RpcK\nIqTZW/fcztVJzw8vNQFg4E/7ScnIvue29kxKyYSVRzkSlci054OoZadrLORHga7YkFLGA/9ZqV1K\nGQ70z/U4EvjPF3ZSSussLvvXO3DtqGWPWaEBdJ1s9uaRkZEcPHiQZs3UXDSFxdOrDjNbTeKFXe8y\ncu2LLOizFWen4tV5uCV8Ft/G7qa78OTFJxc+cPvqZUsy64XGvDxvD6OXHebbvo3R6exvRbL7+fGf\nC6w8GM2oTnV4rH4FreMUCcVvHFYhSE5OplevXkyfPh0PDw+t4xQrter25PMavThGBh/+3qtYdUaf\nubSN8Ue/I8Ag+KDXSrNnTW1d24sJ3fxZf/xaseuM3nYmls/WnaRL/QoMa1f8rle4F/u8xjsfn+wt\nLSsri169etG3b1+efvppzXIUZ+3bTmT4iuN8nXKGSmteZcSTC7SOZHXX4k8zePNQ3KRkWscfcC6Z\nv8WMXm9dg9PXkpix+SxVSrvybHBVKyUtOo5fSWTwL/vxq+DBlOcCi11L6X5Ui8GCpJS8/vrr+Pv7\nM2rUKK3jFGsDnlpKL10Z5iTsZ1nYe1rHsaqklDiG/NmHFIx8G/IBFaq1yPcxhBB89nQD2tT2YvzK\no3Y/UinqRiqvzt+Hp6sjC15tWqzmQTKHKgwWtGPHDn7++We2bNlCUFAQQUFBrFu3TutYxZLQO/De\ns/ZTZTcAAA7FSURBVH/SxujEpMg/CDvwg9aRrCIrK4ORK7tzgUym1emHX8DzD30sR72Ob/s2pk55\nd4b8sp9j0YkWTFp0JKZm8cr8faRnGVjwWgjlPVy0jlTkqMJgQa1bt0ZKyZEjRzh06BCHDh2iW7du\nWscqthxcPPjq6T/wN+gYc+Rr9hy7+6J725ZlyGTsim7sMSbxcfm2tGj1doGP6e7iyPxXm1KqhBMv\nz9vL2ev2tUhUUnoWL8/fy6X4VGa/HEwd06p2yp1UYVDsWgnPqnz3+C9UNcDwfZPYf/I3rSNZRLYh\niwnLn2RzZgzveDSke5evLXbs8h4u/NK/GXqd4IW5ezgfm2yxY2spJSObV+fv43h0IrP6NqZ5zeKx\n6M7DUIVBsXulKzRkTteFVDDCkN0fcujMn1pHKhCDIZsPfuvJ+owrjHarS9+ev4CwbMdpDa+SLOrf\nDKNR8sKcPTZ/AVxapoHXF+7j4OWbzOzTiE71ymsdqUhThUEpFrwqNWHuY3PxMkoG7RjP3uNLtY70\nULKyMxm/4gn+TLvEcNdavPL0MosXhdtql3fnl/7NSM828PwPuzljo18r3UrPot/8vey5kMDU5wLp\n1qCi1pGKPFUYlGKjXNXmzOs0mwpGGLTvEzbv/1brSPmSmn6LYUs68Fd6NG+VqM3AZ1ZarSjc5l/R\ng8UDmmOQkme/38WBSzesej5Li0lK5/kfdnPw0g1m9G5UrCfGyw9VGJRipXy1Vix8Ygn+Bh2jjn7L\niu0fax3JLDeSrtB/WQd2Z99gYtkWvP7Mb6ArnP99/St6sHJwS0qXcKTvnD2E2sgiPxfjU3jmu11c\njE/hx35N6R5YSetINkMVBqXY8SwfwJxea2hhdOTj8yv4YtULZBkytY51T6cuhtH7t66cNqQxvVp3\nnnpittVbCnerWqYEywe1pKZ3SV5fsI85284X6avKt5+Npfs3O0hKz2LRgOY8UqdozshcVKnCYEHp\n6emEhIQQGBhI/fr1+fDDD7WOpNxDiVLV+LrPFl7Ue/HLzaMMWtyOhKQrWsf6j3V7p/NS6DCyjdks\nbDCcdu0/0yyLt7szy95oQZeACkxad5I3lxwiLdOgWZ68SCn5fuu5/2vvzoOjrs84jr+fLAkbQmII\ntyZIkCuRYoQIVRQREVEoeBQPqqKOF4PWY7Dx6KjM1KqdjqMz3oKOlksGUanlUIvxHAhXOBMwosgS\njhiOEAgk2Tz9Y3+2rOXIJpv8drPPa4aZ7LLk9/kCyZPv9/fd78PEtwroepqXDycPIScj1e1YUccK\nQxi1bt2apUuXsnbtWgoLC1m8eDHLli1zO5Y5gfjEduRN+DdPdxhCYc0Brp83ihXFkbGdtaq6kr9+\neD15RdPJ9sfx3si36Zd7t9uxSGrdipcnDODhy/vwz3WlXP3KNxTtrHA7FgDllUeZNGM1zy4q5op+\nXXl/0gWc2T62DlEMFysMYSQitG0bOLK3pqaGmpoapJmn/CZEcXGMHf0a7/Z/gNZ1fm5f/hTPfTSB\nI9XutSVf+/0ixs+6iNkHNnGTpwPTblhKh/QT9rBqdiLC5Et68vat5/FzZTVjX/qaV/JL8Ne5t7T0\n6abdXP7Clywt3sNjV/blpQnn2jEXjdAi/+aeK3iO4r3hPY+/b1pf8gadsPPof/n9fgYOHEhJSQmT\nJ0+2Y7ejxNkD72BujxG88PEtzNi/nq9nDSEv92Eu7Deh2TIcOFzO65/dz8y9hXT2K9P73MSgIY80\n+/2E+hrWpxOfPDiUP3+4nr8t3swnG3fz1Nizm3XpZueBKp5bVMyHhaVkdU1hxh3n0LeLnWjcWDZj\nCDOPx0NhYSE+n4+CggI2bIjqpnQxpU277jx20xe8mXk9df6jTFr1DPfMupjvdixv0uvW+KuZmf84\no98bxoy9hVwjpzF/7HwGXfhoxBaFX6QlJfDyhAG8eEMOvn1VXPXyNzwwZw2l+6ua9LqHjtby/Kdb\nuOTv+Sxcv4v7hvfko8lDrCiEiTRmZ4GIjAeeArKAQU6DnuO9bhTwIuABpqnqL53eMoE5QBqwGrhZ\nVU+5PSQ3N1dXrgy+VFFREVlZWQ0eS1OYOnUqSUlJTJkypcmuEYnjbglqKncze8l9vHZgI5VxwiXe\nLtyc+wADzxodtuXBiqp9zP/2aWZt/5SdUsfgWuHhAQ/SJ+fWiC8Ix1N5tJZX80t486sfQGFczunc\nfmEmWV3D9816T8UR/rFsGzOX/8TeQ9WM6d+VvFF9yUhrE7ZrtGQiskpVc0/5ukYWhiygDngdmHK8\nwiAiHmALgdafPmAFcKOqbhKRucB8VZ0jIq8Ba1X11VNdN1ILQ1lZGfHx8aSmplJVVcXIkSPJy8tj\nzJgxTXbNSBh3S7a/dDXv5j/K3CM+DnjiyJJERqcPY3jOHWSk9Q7581X7qynY/AGfFb/HworvqBLI\nrYHbeozloqFPIq0SmmAUzcu37zCvf7GVeat8VNX4+W2PNH53zulclt2ZTsmhn2R66GgtX2wpY9GG\nXSzesJPaOmVEVmcmDTuLAd3aNcEIWq5mKQzHXCyfExeG84GnVPVy5/Gjzm89C5QBXVS19tevO5lI\nLQzr1q1j4sSJ+P1+6urquO6663jiiSea9JqRMO5YUFX+PR9/PZW5ZSspdhrF9xYvOcnd6dvpHPp2\nu5iO7XqS0vo0Elsl4lc/B6sPUlG1lx9831JcuoyifZspOLKbSoE2dXWMkLb8od9tZA+4E+JaXvP5\n/YermbNiO7MLfmJb+WFEICcjlZyMVM4+/TT6dkmmY3JrUrzxeOPjqPErFUdq2H+4mu92V7KxtIL1\nOw6wbGs5R2vraNcmnnE5Z3DrBd3p3sF2GzVEfQtDc9x8PgPYfsxjHzAYaA/sV9XaY56P6ver9+/f\nnzVr1rgdwzSBxPZnMX7cu4z317J98wI+3zSbL/cXs2jfJuZWFEPJ/85e8ij4f7USJKqcWetnZHwq\nl6YPY/C5d9I6rUczj6J5pbZJ4J6Lz+LuoT3YsruSJRt3kb95D3MKtlNV82PQaz1x8n+7mjxxQs+O\nbZkwuBsjs7twXvd2tPLYbdHmcMrCICKfAcfrkP24qn5Uj2scb7FUT/L8iXLcBdwF0K1bt3pc1pgm\n4GlFRvY13JJ9DbcAeqicHdvy2bJjGXsP7+Fg9UEO1lSSEJdAckIyKQkpZKT1plf34SR1/g14WuRG\nwJMSEfp0SaZPl2T+eGkv/HXKDz8fYsvug+w7XE1FVS0Hj9TQJsFDSmI8Kd54enRMonfnZLzxLW8m\nFQ1O+b9UVUc08ho+4NgGsulAKfAzkCoirZxZwy/PnyjHG8AbEFhKamQmY8JCktqTnn0t6dnXuh0l\nanjihJ6d2tKzU1u3o5gTaI552Qqgl4hkikgCcAOwQAM3Nz4Hfu+8biJQnxmIMcaYJtSowiAiV4uI\nDzgf+JeILHGeP11EFgI4s4F7gSVAETBXVTc6nyIPeEhESgjcc5jemDyRfKhXU4i18RpjmkejFjxV\n9QPgg+M8XwpceczjhcDC47xuKxCW9/p7vV7Ky8tp3759TBxDoaqUl5fj9Vojc2NMeLWYO2Hp6en4\nfD7KysrcjtJsvF4v6enpbscwxrQwLaYwxMfHk5mZ6XYMY4yJerYp2BhjTBArDMYYY4JYYTDGGBMk\nLGclNTcRKQO2NfCPdyDw5rpoZmOIDDaGyGBjqL8zVfWUDbCjsjA0hoisrM8hUpHMxhAZbAyRwcYQ\nfraUZIwxJogVBmOMMUFisTC84XaAMLAxRAYbQ2SwMYRZzN1jMMYYc3KxOGMwxhhzEjFVGERklIhs\nFpESEXnE7TyhEpG3RGSPiGxwO0tDiEiGiHwuIkUislFE7nc7U6hExCsiBSKy1hnDVLczNZSIeERk\njYh87HaWhhCRH0VkvYgUisj/tRWOBiKSKiLzRKTY+bo43+1MEENLSSLiAbYAlxFoHrQCuFFVN7ka\nLAQiMhSoBN5V1X5u5wmViHQFuqrqahFJBlYBV0XZv4EASapaKSLxwNfA/aq6zOVoIRORh4BcIEVV\nx7idJ1Qi8iOQq6pR+x4GEXkH+EpVpzn9atqo6n63c8XSjGEQUKKqW1W1GpgDjHM5U0hU9Utgr9s5\nGkpVd6rqaufjgwT6c0RVn28NqHQexju/ou6nKxFJB0YD09zOEqtEJAUYitOHRlWrI6EoQGwVhjOA\n7cc89hFl35RaEhHpDpwLLHc3SeicJZhCYA/wqapG3RiAF4A/AXVuB2kEBT4RkVVOT/ho0wMoA952\nlvSmiUiS26EgtgrD8br3RN1Pei2BiLQF3gceUNUKt/OESlX9qppDoE/5IBGJqmU9ERkD7FHVVW5n\naaQhqjoAuAKY7Cy1RpNWwADgVVU9FzgERMS9z1gqDD4g45jH6UCpS1lilrMu/z4wU1Xnu52nMZxp\nfz4wyuUooRoCjHXW6OcAw0VkhruRQud0ikRV9xDoJBmWbpDNyAf4jplxziNQKFwXS4VhBdBLRDKd\nmzw3AAtczhRTnBu304EiVX3e7TwNISIdRSTV+TgRGAEUu5sqNKr6qKqmq2p3Al8HS1X1JpdjhURE\nkpwNDDjLLyOBqNqtp6q7gO0i0sd56lIgIjZitJgObqeiqrUici+wBPAAb6nqRpdjhUREZgPDgA4i\n4gOeVNXp7qYKyRDgZmC9s0YP8JjTEzxadAXecXa5xQFzVTUqt3tGuc7AB05/91bALFVd7G6kBrkP\nmOn8sLoVuM3lPEAMbVc1xhhTP7G0lGSMMaYerDAYY4wJYoXBGGNMECsMxhhjglhhMMYYE8QKgzHG\nmCBWGIwxxgSxwmBMGIjIeSKyzunXkOT0aoiqM5SM+YW9wc2YMBGRvwBeIJHAGTjPuBzJmAaxwmBM\nmDjHGqwAjgAXqKrf5UjGNIgtJRkTPmlAWyCZwMzBmKhkMwZjwkREFhA4xjqTQAvTe12OZEyDxMzp\nqsY0JRG5BahV1VnOyavfishwVV3qdjZjQmUzBmOMMUHsHoMxxpggVhiMMcYEscJgjDEmiBUGY4wx\nQawwGGOMCWKFwRhjTBArDMYYY4JYYTDGGBPkP58OOp47ZNQXAAAAAElFTkSuQmCC\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "NCL Example Test Case\n---------------------\nSee https://www.ncl.ucar.edu/Document/Functions/Built-in/center_finite_diff_n.shtml" | |
}, | |
{ | |
"metadata": { | |
"trusted": true, | |
"collapsed": true | |
}, | |
"cell_type": "code", | |
"source": "ncl_case = xr.DataArray([30., 33., 39., 36., 41., 37.], dims=['x'])", | |
"execution_count": 37, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "xdiff(ncl_case, 'x', spacing=2., method='centered')", | |
"execution_count": 38, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 38, | |
"data": { | |
"text/plain": "<xarray.DataArray (x: 6)>\narray([-1. , 2.25, 0.75, 0.5 , 0.25, -2.75])\nDimensions without coordinates: x" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Interior matches NCL's example\nxgradient(ncl_case, 'x', spacing=2., accuracy=2)", | |
"execution_count": 42, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 42, | |
"data": { | |
"text/plain": "<xarray.DataArray (x: 6)>\narray([ 0.75, 2.25, 0.75, 0.5 , 0.25, -4.25])\nDimensions without coordinates: x" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Left boundary is computed via a second-order forward difference\n(-39 + 4 * 33. - 3 * 30.) / (4.)", | |
"execution_count": 40, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 40, | |
"data": { | |
"text/plain": "0.75" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Right boundary is computed via a second-order backward difference\n(3. * 37 - 4 * 41. + 36) / 4.", | |
"execution_count": 41, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 41, | |
"data": { | |
"text/plain": "-4.25" | |
}, | |
"metadata": {} | |
} | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3", | |
"language": "python" | |
}, | |
"language_info": { | |
"name": "python", | |
"version": "3.6.1", | |
"mimetype": "text/x-python", | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"pygments_lexer": "ipython3", | |
"nbconvert_exporter": "python", | |
"file_extension": ".py" | |
}, | |
"gist_id": "299d5e4a929c416e52b7d748b48bf834" | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment