diff --git a/examples/simulations/reference/tortuosity_gdd.ipynb b/examples/simulations/reference/tortuosity_gdd.ipynb index 0610e53f1..a511d0464 100644 --- a/examples/simulations/reference/tortuosity_gdd.ipynb +++ b/examples/simulations/reference/tortuosity_gdd.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# `tortuosity_gdd`\n", + "# `tortuosity_bt`\n", "Calculation of tortuosity via geometric domain decomposition method" ] }, @@ -18,6 +18,7 @@ "import numpy as np\n", "import porespy as ps\n", "from porespy import beta\n", + "\n", "ps.visualization.set_mpl_style()" ] }, @@ -29,7 +30,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -39,7 +40,7 @@ ], "source": [ "import inspect\n", - "inspect.signature(beta.tortuosity_gdd)" + "inspect.signature(beta.tortuosity_bt)" ] }, { @@ -49,6 +50,11 @@ "# im\n", "Can be a 3D image:" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] } ], "metadata": { @@ -67,7 +73,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/examples/simulations/tutorials/finding_tortuosity_from_image.ipynb b/examples/simulations/tutorials/finding_tortuosity_from_image.ipynb index 60a8764fd..0a9dd0b37 100644 --- a/examples/simulations/tutorials/finding_tortuosity_from_image.ipynb +++ b/examples/simulations/tutorials/finding_tortuosity_from_image.ipynb @@ -29,7 +29,7 @@ "id": "6d938e7e", "metadata": {}, "source": [ - "1. ``tortuoisty_fd`` starts by calculating the porosity of the image. \n", + "1. ``tortuosity_fd`` starts by calculating the porosity of the image. \n", "

\n", "$$ \\epsilon_{orginal} = \\frac{\\sum_{i = 0}^{N_{x}}\\sum_{j = 0}^{N_{y}}im_{ij}}{N_{x}\\cdot N_{y}} $$\n", "

\n", @@ -97,7 +97,7 @@ "id": "e0b6f5a8", "metadata": {}, "source": [ - "For the purposes of this tutorial, we will generate a 200 x 200 pixel image with a target porosity of 0.65." + "For the purposes of this tutorial, we will generate a 200 x 200 pixel image with a target porosity of 0.5." ] }, { @@ -125,29 +125,148 @@ }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA58AAAOfCAYAAABPEXd8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAB7CAAAewgFu0HU+AAAky0lEQVR4nO3dTW4cSZIGUJLgIQTttdclGjrBnLJPINQltOde0CkYsyhgOApEks5M/zLM3d/bVXdXdPx4eOYHo1k+btu2PQAAAEDQ09knAAAAwPyETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKETwAAAOKeex/w9c+33odc2o+v388+BU728/evs0/h06zbvs5cA55lXyO+z8AY7Nd92a/fPH156XesbkcCAACAC4RPAAAA4oRPAAAA4rr3fAJ9tfRw6EsAAKA6lU8AAADihE8AAADihE8AAADihE8AAADihE8AAADihE8AAADihE8AAADihE8AAADins8+AeB2P75+/+uff/7+dcp5AADAJSqfAAAAxAmfAAAAxAmfAAAAxAmfAAAAxBk4BBPaDyB6eDCECACAc6l8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAEPd89gkA8/n5+9df//zj6/dTzmNE+3sHADALlU8AAADihE8AAADihE8AAADi9HwCcXpAL9PjCUAPPmtv4/P4PlQ+AQAAiBM+AQAAiBM+AQAAiBM+AQAAiHvctm3recDXP996Ho4DGsi5RqVGemv4TaXn0sKz+5zRni8wN3v4bVbd05++vPQ7VrcjAQAAwAXCJwAAAHHCJwAAAHHPZ58An+dHhBldS8/EDOt6xt6Qo2ua4Vn1MOPzBoCeVD4BAACIEz4BAACIEz4BAACI8zufE9BvRYsZ+tGqr/UZ7vE1qj8XbrPquoZV2dPbrbI/+p1PAAAAhiJ8AgAAECd8AgAAECd8AgAAEGfg0CI0j7NKUzw12YPmYS/5nOpr3/NcW/X1OaIZ3ykDhwAAABiK8AkAAECc8AkAAECcns+F+Tv/tczYg8C47D9zW3W/mWFdr/rsVjXDmq1mxndIzycAAABDET4BAACIEz4BAACIEz4BAACIez77BDjPaA3RmuLbjfZsWU+1NWp/4SOrrJGW66z2/gLjUPkEAAAgTvgEAAAgTvgEAAAgTs8nw9j3mKzSf9NC/w20s3fk7e9xtT3KGgA4h8onAAAAccInAAAAccInAAAAccInAAAAccsPHKo+dKDakAaA0VTf51dw9Azu+flmDfRVfaAUUJfKJwAAAHHCJwAAAHHCJwAAAHHL9XyO1vdxdp9MZS33YbTnfcTzBrhshn1+dL6rAK1UPgEAAIgTPgEAAIgTPgEAAIibqudzlb6PluvUa/Gvo/tQfZ14dgAAzEjlEwAAgDjhEwAAgDjhEwAAgDjhEwAAgLipBg5BCwN9AMZUfWAcAO9T+QQAACBO+AQAACBO+AQAACBu6J5PvR+X7e+NPkcARuNzHmAuKp8AAADECZ8AAADECZ8AAADECZ8AAADEDTNwyNCB2xzdP0OIgNn4rABod/Rd0D7aznfpz1P5BAAAIE74BAAAIE74BAAAIG6Ynk8AAMaw7xvUGzeO/bPSA/rGOr6dyicAAABxwicAAABxwicAAABxwicAAABxBg4BMCyDMABgHCqfAAAAxAmfAAAAxAmfAAAAxOn5BFhU9X5JP3QO8zh6f/fvODW1PKcZ9mfr8T5UPgEAAIgTPgEAAIgTPgEAAIgTPgEAAIgzcAhgEaMNhBjtfLnMIA+O7N/xGddJ9X2s1z0/Os4q187nqHwCAAAQJ3wCAAAQJ3wCAAAQp+cTYALVe2tYi14qVjXaXnx0vsk+UFD5BAAAIE74BAAAIE74BAAAIE7PJwAAfGC0fs5rtVynfk6upfIJAABAnPAJAABAnPAJAABAnPAJAABAnIFDAINZZegFNRk0QsrR3ma91bR/Vtc8p+qfZdZehsonAAAAccInAAAAccInAAAAcXo+AYqr3hfD3M7se9r/f3sXuCfrrd2M90oPcobKJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHGP27ZtPQ/4+udbz8O9a8bm5hQN0jAuex0pM3w2eD/Yu2ZdW0f0MsO+uvf05aXfsbodCQAAAC4QPgEAAIgTPgEAAIgbuudzz9/rv5nx781hVfY2Kqn2+eL94CMta9Y6IqXannkNPZ8AAAAMRfgEAAAgTvgEAAAgTvgEAAAgzsChSZ3Z3Fz9OczQ+M1aqr9TUH1f9Q4BlVXfQw0cAgAAYCjCJwAAAHHCJwAAAHFT9Xy2mKHvo9LfhbufkDfDe8baqu2z3imAy/Z7tp5PAAAAhiJ8AgAAECd8AgAAECd8AgAAELfcwKG96kMHzhzSUP3e3FO1YRmsxbvI6FbZQ72rwIz+ef1vt2OpfAIAABAnfAIAABAnfAIAABD3fPYJnG2VPhQAOMtRL6TPX4D1qHwCAAAQJ3wCAAAQJ3wCAAAQt3zP58r8Hlm7/b3SqwRwG/sqwHpUPgEAAIgTPgEAAIgTPgEAAIgTPgEAAIgzcGgRhgv15QfTYVxH76o9kh6sLYD3qXwCAAAQJ3wCAAAQJ3wCAAAQp+dzAvpJYG77PjLv/Oe09GNf07PtOdDC+wvwRuUTAACAOOETAACAOOETAACAOOETAACAOAOHAAbjh+wvu2ZwEABwHyqfAAAAxAmfAAAAxAmfAAAAxOn5HJDeLgAYk55tYGUqnwAAAMQJnwAAAMQJnwAAAMQJnwAAAMQZOFScIQRAi6MhJnuj7yct1wgA1KXyCQAAQJzwCQAAQJzwCQAAQJyeT4BF7Hsmq/eAjna+AMD7VD4BAACIEz4BAACIEz4BAACI0/MJsKjqv5upxxMYjV51eJ/KJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHEGDgFwd4ZwACtoGexmP2QlKp8AAADECZ8AAADECZ8AAADE6fkEAO6upRduFft7oQdwLUfvQvU1cM37W/2auA+VTwAAAOKETwAAAOKETwAAAOKETwAAAOK6Dxyq1kxsoAEJ1hV8TrXPBu7Lnvk5BhAx4ztjXfPwoPIJAADAHQifAAAAxAmfAAAAxHXv+axm//fkM/4NPXnWDbTTxwOswveD67XcO58n81H5BAAAIE74BAAAIE74BAAAIE74BAAAIG76gUN7LY3LmscBoJ3PzSyDWWqwzu/v6J5b62NT+QQAACBO+AQAACBO+AQAACBuuZ7PFvpC1+JZArSzZ9akN44ZWcPzUfkEAAAgTvgEAAAgTvgEAAAgTvgEAAAgzsChK+0boFMDGAwQ6M+wDGBFs+591T8Tz7zv9/r/rv4MWsz6fkA1Kp8AAADECZ8AAADECZ8AAADE6fnspKXfQT9BnnsMMK8RewvvNSPiTCPOp5jxOcyg+rpZRfL9UPkEAAAgTvgEAAAgTvgEAAAgTs9ncf72HYAVrPJ5t8qMiBmugaxV3vkR7Z/NP6/9jq3yCQAAQJzwCQAAQJzwCQAAQJzwCQAAQJyBQ3fU8kPTmq9vs8KPeQMAwIhUPgEAAIgTPgEAAIgTPgEAAIjT83ki/Z0ArMpn4GXmFwCzUvkEAAAgTvgEAAAgTvgEAAAgTvgEAAAgzsAhACDKcKHbHN0/Q4iAEal8AgAAECd8AgAAECd8AgAAEKfnE4CujnrR9PwBACqfAAAAxAmfAAAAxAmfAAAAxAmfAAAAxBk4BEDcfgiRAUR5R4OfAOBMKp8AAADECZ8AAADECZ8AAADE6flkOdV7zfRpAdewdwBQnconAAAAccInAAAAccInAAAAccInAAAAcQYOMbXqw4WO7M/ZEBFm1LKuR3x/AYDLVD4BAACIEz4BAACIEz4BAACI0/MJxbX0vekLXUv1Xshe63F/nOrXneQdB2AGKp8AAADECZ8AAADECZ8AAADE6fkEKG60Xsej8+3Rs9ir77H6/dTfCazgaK+rvj9zO5VPAAAA4oRPAAAA4oRPAAAA4oRPAAAA4gwcggnsG/RHbOJfdchK9efSS8t13msNrLrWAKrb78+rfEauROUTAACAOOETAACAOOETAACAOD2fMKEReyRa+lYBABiXyicAAABxwicAAABxwicAAABxwicAAABxj9u2bT0P+J+n/+l5OICLRhxKNOIwqLOM+Hxp511o512Ay+wlef+8/rfbsVQ+AQAAiBM+AQAAiBM+AQAAiHs++wS43VEviL9/h/N5D2+zv3/63uayf57elzfWOrTzPXgsKp8AAADECZ8AAADECZ8AAADECZ8AAADEGTg0qdEGOWgW5xpHa8SgDgBY25nfBXx/fZ/KJwAAAHHCJwAAAHHCJwAAAHF6Pgd0zd+x64NjFfteC2sfxtDyrs7QS2VPghpm2E9GpPIJAABAnPAJAABAnPAJAABAnJ7P4vSGAMC/RvxNaJ/jcL7q+8RKVD4BAACIEz4BAACIEz4BAACIEz4BAACIM3AIABiWgT6wNsOExqLyCQAAQJzwCQAAQJzwCQAAQJyezxPpU4E8vSAAADWofAIAABAnfAIAABAnfAIAABAnfAIAABBn4NAdGTAEAADXM0iwXcXsofIJAABAnPAJAABAnPAJAABAnJ7PoIp/Zz2S/f3zN/4AAOvw3e82R/fv7Hyi8gkAAECc8AkAAECc8AkAAECc8AkAAEBc94FDLU2sMzQPn92suyIDiAAAYFwqnwAAAMQJnwAAAMQJnwAAAMR17/lsMVrvnv5OgPuz9wLAXFQ+AQAAiBM+AQAAiBM+AQAAiBM+AQAAiDtl4NCeoRJco2XdVB9mBQAAq1D5BAAAIE74BAAAIE74BAAAIK5Ez+cqqvcfzth7e3RN1Z8DAADMSOUTAACAOOETAACAOOETAACAOD2fQaP1Fu7Pd8Ye0IeHWtc12hoBAIBrqXwCAAAQJ3wCAAAQJ3wCAAAQJ3wCAAAQZ+DQlVYYFNNyjZWG94xghXUDAABHVD4BAACIEz4BAACIEz4BAACI0/MJIfo7AQDgjconAAAAccInAAAAccInAAAAccInAAAAcQYONTA45rKje/Pz96+7nwcwPnsHAMxN5RMAAIA44RMAAIA44RMAAIC4x23btp4HfP3zrefhTqHHs69V+risG2i3yr4AQF++b7Xr9Vn79OWly3EeHlQ+AQAAuAPhEwAAgDjhEwAAgDjhEwAAgLjns08ARqC5HQDgfPshOr6jvRlhmJ/KJwAAAHHCJwAAAHHCJwAAAHF6PgHoaoSeEwDg/lQ+AQAAiBM+AQAAiBM+AQAAiBM+AQAAiFtu4JAfoqWFdQLtDBgC4Cwtn0EzfK+b5bNW5RMAAIA44RMAAIA44RMAAIC45Xo+YW+GPgBoMUu/CAB8xtHnn+9/51D5BAAAIE74BAAAIE74BAAAIG76nk9/zw0AMKbq3+P00nMv+3dh1LWn8gkAAECc8AkAAECc8AkAAECc8AkAAEDc47ZtW88Dvv751vNwn1K9KX1V1RuirZtxtKwlz7Nd9XcTWMsM+7d99bIZnu9oeq3Hpy8vXY7z8KDyCQAAwB0InwAAAMQJnwAAAMQ9n30CAEf0d+Yd3T/9SkDCKvt1y3Wuss+u8sz5HJVPAAAA4oRPAAAA4oRPAAAA4oRPAAAA4gwcAkoyqAAAavIZPYaKgwVVPgEAAIgTPgEAAIgTPgEAAIjT80l3Z/8tOQBwLj2Bl+3vje9N3NPZ60/lEwAAgDjhEwAAgDjhEwAAgDjhEwAAgDgDh7iJJnkAWJvhQrc5un+Vvl95vvSk8gkAAECc8AkAAECc8AkAAECcnk8AAODh4UGPJ1kqnwAAAMQJnwAAAMQJnwAAAMTp+eSiSr8xBQAAjE3lEwAAgDjhEwAAgDjhEwAAgDjhEwAAgDgDh1je0WAlP7AMAMd8RgLXUvkEAAAgTvgEAAAgTvgEAAAgTs8nFx31dBz1R85of536W4B7qb7frPI5AEB/Kp8AAADECZ8AAADECZ8AAADECZ8AAADETTVw6GgIQvXBDQCsbbTPqZWH0QFwG5VPAAAA4oRPAAAA4oRPAAAA4qbq+YRrjNZvBb3o08tbZX/56DqtNQAeHlQ+AQAAuAPhEwAAgDjhEwAAgDjhEwAAgDgDh1jOKgNAYM/QF0ZXff/2jgG8T+UTAACAOOETAACAOOETAACAOD2fTKV6PxCc6Zr3Qw9bO/vPZUf3pmVtjXZPr71OgHs5e09S+QQAACBO+AQAACBO+AQAACBO+AQAACDOwCEALtoPUDl7UEElow3DqWaV+9dynd6rtXn+pFRcWyqfAAAAxAmfAAAAxAmfAAAAxOn5ZFir9AtBJfrXAOa238N936InlU8AAADihE8AAADihE8AAADi9HwyDD0HAMzI7+lS2dF69J3sfKPuEyqfAAAAxAmfAAAAxAmfAAAAxAmfAAAAxBk4BEBXR4MoRh2MAGeoPoBofz6Gz3xOtefJGGZZNyqfAAAAxAmfAAAAxAmfAAAAxE3f86kv4Xqz/G05cL7qPWzA9Y7eZ9+3/nXtXlf9/rVcV/Vr+IjPqQyVTwAAAOKETwAAAOKETwAAAOKETwAAAOKmHzi0ZwDRZRqrAQDua8Tvoi1D5Eb7zu178H2ofAIAABAnfAIAABAnfAIAABC3XM8nAABZLf1z1XsAW3x0nTNcY4uW69RTycODyicAAAB3IHwCAAAQJ3wCAAAQJ3wCAAAQt/zAIQ3xAAD3t/9uUv37lu9ScDuVTwAAAOKETwAAAOKETwAAAOKW7/lscfQ3/voSAAD66fXdJfUdrfp3v+r298931TWpfAIAABAnfAIAABAnfAIAABAnfAIAABD3uG3b1vOAr3++9Twc/B+N/jC30YdP2KNIGf3dSPLezcVar+npy0u/Y3U7EgAAAFwgfAIAABAnfAIAABD3fPYJAMAMjnqV9KPBbbxDMBeVTwAAAOKETwAAAOKETwAAAOL0fDKMfT+VPhAAABiHyicAAABxwicAAABxwicAAABxwicAAABxBg4xLD/oftnRvUlxz+GylnfRO8TePffwSrwLMD+VTwAAAOKETwAAAOKETwAAAOL0fALAifb9ffre1qPHE1iFyicAAABxwicAAABxwicAAABxwicAAABxBg4xlVV+0H3V4RSwgqP3e4Z9CwBUPgEAAIgTPgEAAIgTPgEAAIjT88lyRvtBd/2dAOOyhwO8UfkEAAAgTvgEAAAgTvgEAAAgTvgEAAAgzsAhlmcYBFDdaIPSVuXzBOB9Kp8AAADECZ8AAADECZ8AAADE6fkEbnLU46QfDbK8d5fpuwSoS+UTAACAOOETAACAOOETAACAOD2fQHd+k5CP6MsDWJvPgTWpfAIAABAnfAIAABAnfAIAABAnfAIAABBn4NDCqg+B0YgO8/A+5310j6vv+S2sI4CxqXwCAAAQJ3wCAAAQJ3wCAAAQp+dzESP2+uzPWa/PuFqe3YhrdG9/nTNcE/M4eg+rr1H7PsBcVD4BAACIEz4BAACIEz4BAACIEz4BAACIe9y2bet5wNc/33oejgbVB0bck+EU86i+rnutterX2cJ7B1xjhv2P6/nsGMfTl5d+x+p2JAAAALhA+AQAACBO+AQAACDu+ewTADiySi/I/jqr90Ct8lyAvNH2P+B2Kp8AAADECZ8AAADECZ8AAADECZ8AAADEPW7btvU84Oufbz0PxwEN+e0MRwGAcfnOMy/f0cbx9OWl37G6HQkAAAAuED4BAACIEz4BAACIez77BHifXofbHN0/PQYAAHB/Kp8AAADECZ8AAADECZ8AAADECZ8AAADEGTgEAPCB6gMAZx2m99F1VX8uwN9UPgEAAIgTPgEAAIgTPgEAAIjT8wkAsDNaL+HR+c7aB/r/HV3jaM9uFSusRz6m8gkAAECc8AkAAECc8AkAAECcnk8AYCmr9AS2XOeMfXhnXtMqa6vFjGuL26l8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAEPd89gkAACT9+Pr97FMoa39vfv7+dcp5zKLl/s2wHq0TrqXyCQAAQJzwCQAAQJzwCQAAQJzwCQAAQJyBQwAMofqQDgM4Pqf681yVAUR5+3ta/V2wBuhJ5RMAAIA44RMAAIA44RMAAIA4PZ/A8vTb1FT9uewdne+qz25vtGcJ92SfYCUqnwAAAMQJnwAAAMQJnwAAAMQJnwAAAMQZOAQsZcTBJzP+6PuIz+EaLdfpeQKjq74HzLDPzkLlEwAAgDjhEwAAgDjhEwAAgDg9n8Ud/Y169b+rr8Tf+K9nhfdjlT5CAGoa7bP26Hx9Tp5D5RMAAIA44RMAAIA44RMAAIA44RMAAIA4A4cGtG+QHq3pO0nzONRkn7psf2+q72OeJeR5z/KuucfV9+cRqHwCAAAQJ3wCAAAQJ3wCAAAQp+cTGJaemMvO/EFtz+U21X4M3fOELO/YOEbr0a9I5RMAAIA44RMAAIA44RMAAIC45Xo+q/9d/TV/O97y71S/7hb+rp4Z1vGZ9KoA3JfPrbm1PF+ftX9T+QQAACBO+AQAACBO+AQAACBO+AQAACBu+oFDozV6pwaCHB2n+r3RoA0AAPNQ+QQAACBO+AQAACBO+AQAACBu6J7P6j2LPSR/vFZPJQBAPyt8N+VzjtbEyt/BVT4BAACIEz4BAACIEz4BAACIEz4BAACIG3rgEAAA/aw8COUaBgxxjf26Wem9U/kEAAAgTvgEAAAgTvgEAAAgbpieT39Tf5kfrwUAruH7AnBPKp8AAADECZ8AAADECZ8AAADECZ8AAADElR04ZMDQbVb+8VoAAKAelU8AAADihE8AAADihE8AAADiyvZ8AgBwPfMegGpUPgEAAIgTPgEAAIgTPgEAAIjT8wkAMDj9ncAIVD4BAACIEz4BAACIEz4BAACIEz4BAACIM3AIFvHj6/ezT+FdhmXM4+hZVl9/lVR7F/bn41l+TrXnCXAmlU8AAADihE8AAADihE8AAADi9HzChEbsydqf81GflN6z25zZe+bZXTZaT6Ce3stGe5YA96byCQAAQJzwCQAAQJzwCQAAQJzwCQAAQJyBQzCgFYZ7tFyjwSeXGXwyjpZhWwAwA5VPAAAA4oRPAAAA4oRPAAAA4vR8AsPS3zmulr7GVZ9vtetueVYf/W+qXdM19OIC3E7lEwAAgDjhEwAAgDjhEwAAgDjhEwAAgLjHbdu2ngd8/fOty3FmGE5QiUEJ4/Iu0GKFd9y7UEOvtVb9ea7wTtFf9XVNDaPtL09fXvodq9uRAAAA4ALhEwAAgDjhEwAAgDg9n4sY7W/LV2bt08MM77x3YVwzrD/owT7GDPuhnk8AAACGInwCAAAQJ3wCAAAQJ3wCAAAQ93z2CVyyb87VsH2bo/s3QwM0cGzEd94+DwBzU/kEAAAgTvgEAAAgTvgEAAAg7nHbtq3nAV//fOt5uHfpD5pb9f60FOualOrvlLU/r+prD840w953zTu+6nWP6OnLS79jdTsSAAAAXCB8AgAAECd8AgAAEFf2dz5h3wuwyt/VA8xmxN+dhXs5eheq90P2eH9Xve7VqXwCAAAQJ3wCAAAQJ3wCAAAQJ3wCAAAQN8zAoeoNyOS1rAGN4ADA6Gb8PlP9u/yM97wilU8AAADihE8AAADihE8AAADiSvR8Vv8bcAAAoN1o3+/356sHNEPlEwAAgDjhEwAAgDjhEwAAgDjhEwAAgLgSA4egl1Rzu6ZzAIB/jTZM6Bot1+j74eepfAIAABAnfAIAABAnfAIAABB3Ss/nCn8nzlz88DAAANxG5RMAAIA44RMAAIA44RMAAIA44RMAAIC4+MAhw4WYUa8fHvZ+AACV+a5y2dG9MZTyfSqfAAAAxAmfAAAAxAmfAAAAxMV7PoE3+iYAgMp8V7nN/v7pAf2byicAAABxwicAAABxwicAAABxwicAAABxBg5BiIZ9zjTigIP9OXuHAGAuKp8AAADECZ8AAADECZ8AAADE6fkEmMCIPZ4f0QMKAHNR+QQAACBO+AQAACBO+AQAACBOzycAEDVjTzIAn6fyCQAAQJzwCQAAQJzwCQAAQJzwCQAAQJyBQ8CwWoaY/Pj6PX4eaasOa5nh2a1q1TULwPtUPgEAAIgTPgEAAIgTPgEAAIjT8wlMbd97Vr2PUK8c1GCvAOhP5RMAAIA44RMAAIA44RMAAIA44RMAAIA4A4eApRjSUVf1AS/Ma8S1tz9nexswApVPAAAA4oRPAAAA4oRPAAAA4vR8AnB3I/bYMa4V1lvLNeoLBc6m8gkAAECc8AkAAECc8AkAAECc8AkAAEBcfODQUXP7Co3/vbQMB3A/AQDOV/07maFTnE3lEwAAgDjhEwAAgDjhEwAAgLh4zydAL3pVgI9U77k709G9sa/eZrT1tj/fo+e//89Gu8azeafep/IJAABAnPAJAABAnPAJAABA3OO2bVvPA77++fbXP/s7cbjM7+Bepmdibtb5XM58X62lvuy9b6ytf/muctkq78vTl5d+x+p2JAAAALhA+AQAACBO+AQAACBO+AQAACDu+ewTgJWs0pgOzMs+BsC1VD4BAACIEz4BAACIEz4BAACI0/MJIdf2RbX8e6P/uLOeMQAqGf1zNeno3viuwrVUPgEAAIgTPgEAAIgTPgEAAIgTPgEAAIgzcAgGtG+Cr97Ur2kfxuBdZRXVPzer29+/o73DdxWOqHwCAAAQJ3wCAAAQJ3wCAAAQp+cTrlCtL6Da+QBjuvbH5AE+Yi/h4UHlEwAAgDsQPgEAAIgTPgEAAIgTPgEAAIgzcAgaaJIHVtXyY/IA0ELlEwAAgDjhEwAAgDjhEwAAgDg9nyxP/9K49r1o1Vhblx3dm+rPEwC4jconAAAAccInAAAAccInAAAAccInAAAAcQYOMTUDX+Yy2kCao/O1Ji/b35vRnjcA8D6VTwAAAOKETwAAAOKETwAAAOL0fDIV/XTjWqW/76PrtIYBgFmpfAIAABAnfAIAABAnfAIAABAX7/k86l9apbeLy/S1AR9p2Sd8nuD3YW/j8xi4J5VPAAAA4oRPAAAA4oRPAAAA4oRPAAAA4h63bdt6HvD1z7dP/zuGA6zHgIO1eec/x/vSztrKG3E9WhfXG/F5t7Am+pp1nfCvpy8v/Y7V7UgAAABwgfAJAABAnPAJAABA3PPZJwDMT2/Nbfb3T2/NZUf3xvqD6x29P/Yg4FoqnwAAAMQJnwAAAMQJnwAAAMQJnwAAAMQZOAQATO2jATmGUn1Oy/2qPpRof37WwOdUf77UpfIJAABAnPAJAABAnPAJAABAnJ5PAGBpR/1regDXYg1cpr+TnlQ+AQAAiBM+AQAAiBM+AQAAiBM+AQAAiDNwiDiN6sCZ/Jj8bVbdw1uu21q6bH9vVl1HwN9UPgEAAIgTPgEAAIgTPgEAAIjT80l3+jpgLdX73vZ7kh+Tv8z+fZk1cpuj+1d9va3Q91v9GTAflU8AAADihE8AAADihE8AAADihE8AAADiDBwCoNmIwzX82D2Qst9Pqu+R9j/OpvIJAABAnPAJAABAnPAJAABAnJ5PPkWvAMyter9SDy3XeLTXjX5v7N+Q5z2D96l8AgAAECd8AgAAECd8AgAAEKfnk4v0LQC88Xt+AHAblU8AAADihE8AAADihE8AAADihE8AAADiDByalEETa6s+CIUarJPLju7Nfl+1zwLA56h8AgAAECd8AgAAECd8AgAAEFei5/Oob0YvUjt9R3hf5tbrHbdObrO/f/ZeAPgclU8AAADihE8AAADihE8AAADihE8AAADiSgwcOrIf5GBQxhtDLtZi7a/F+w0AzErlEwAAgDjhEwAAgDjhEwAAgDjhEwAAgDjhEwAAgDjhEwAAgDjhEwAAgDjhEwAAgLjns0+gVcsPr//4+j1+Hml+YJ4Z1jHXO3r+9gUAYAYqnwAAAMQJnwAAAMQJnwAAAMQ9btu29Tzg659vPQ93s8r9c/q4qLw+qevavcN668sejneqnfcFxvX05aXfsbodCQAAAC4QPgEAAIgTPgEAAIgb5nc+r6XHAABI2H/H0AP6xvcv4IjKJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHHCJwAAAHHPZ58AAMAMfv7+9eH/5sfX7/HzSGu5ToAjKp8AAADECZ8AAADECZ8AAADECZ8AAADEGTgEAHAnR8N6Kg8hMlwI6EnlEwAAgDjhEwAAgDjhEwAAgDg9nwCL2PduVe4zq0jvGynWFrAKlU8AAADihE8AAADihE8AAADihE8AAADiDBwCWNRoP3Z/TwbAAEB/Kp8AAADECZ8AAADECZ8AAADECZ8AAADECZ8AAADECZ8AAADECZ8AAADECZ8AAADEPZ99AgDU8fP3r3f/+x9fv9/lPJI+ukYAIEPlEwAAgDjhEwAAgDjhEwAAgLjHbdu2s08CAACAual8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAECd8AgAAEPe/xBJnY9FSkvAAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, "metadata": { "image/png": { - "height": 276, - "width": 276 - }, - "needs_background": "light" + "height": 463, + "width": 463 + } }, "output_type": "display_data" } ], "source": [ "np.random.seed(2)\n", - "im = ps.generators.overlapping_spheres([200, 200], r=10, porosity=0.65)\n", + "im = ps.generators.overlapping_spheres([200, 200], r=10, porosity=0.5)\n", "fig, ax = plt.subplots()\n", "ax.imshow(im, origin='lower', interpolation='none')\n", "ax.axis(False)" ] }, + { + "cell_type": "markdown", + "id": "4c0fb466", + "metadata": {}, + "source": [ + "### Trimming non-percolating pores\n", + "\n", + "Non-percolating pores should be trimmed to reduce calculation requirements. The image must then be checked to ensure precolation is still occuring. This can be done using `check_percolating`. The returned result is the trimmed image. If the image no longer percolates, an error is thrown instead." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "edebc474", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
[10:41:30] WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:47\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[10:41:30]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b]8;id=32123;file://D:\\CS\\porespy\\src\\porespy\\simulations\\_dns.py\u001b\\\u001b[2m_dns.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=849741;file://D:\\CS\\porespy\\src\\porespy\\simulations\\_dns.py#47\u001b\\\u001b[2m47\u001b[0m\u001b]8;;\u001b\\\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(-0.5, 199.5, -0.5, 199.5)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 463, + "width": 463 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "trimmed_im = ps.simulations.check_percolating(im, 1)\n", + "fig, ax = plt.subplots()\n", + "ax.imshow(trimmed_im + (im != trimmed_im) * 0.5)\n", + "ax.axis(False)" + ] + }, + { + "cell_type": "markdown", + "id": "69883f0d", + "metadata": {}, + "source": [ + "### Performing Fickian Diffusion\n", + "\n", + "openpnm's Fickian diffusion algorithm is applied on the specified axis.\n", + "\n", + "The result from `fickian_diffusion` contains two attributes:\n", + "\n", + "|Attribute| Description |\n", + "|-|-|\n", + "|`r_in` |Molar Flowrate into the image |\n", + "|`concentration_map` |Concentration map of the image |\n", + "\n", + "The concentration map can be accessed by using `object.attribute`, or in this case, `diffusion_results.concentration_map`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "70a01dc6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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PoeFNO53A+7noLEnN6AQsqpcpkZSocKLM3sfXBtD5kb7qyfPIovykB0CpMNUFAAAACC3NDYAAACA3DIVBQAAANJQjOxN/W3D2f9GbAAAAAC5ZcRGH7XV0FNKlrMaJkprdQsL7StaERaa16DQBjxWDQkLbfB9ExTa9xQS4dXFOl5TyXDRdg0TpbXaJeizGSo9VsJFoX1obAAAAEBaNLpTZyoKAAAAkFsaGwAAAEBuNWUqyqpVq2LatGkxefLkmDJlSkyePDmefPLJWLlyZUREjBkzJu67776q9jVjxozYdtttazr+2LFj46677qp6/WeeeSauuuqquP3222PWrFmxfPny2HLLLWP//fePk046KcaOHVvT8fMgmblRjhwO2pZMjRr22ftd9DpTI2vJ4uRCxVyCxDDhZOZGRO25G+2SuZG8H699e2LFbbb83x9Kq5w+R6ZGeso9tnI3SENe3//zJPXGxi233BInnnhiLFmyJO1DNcT3v//9OP/887uaLn/1/PPPx/PPPx/XXnttnHDCCXHFFVfERhtt1KIqAQAAgIgmNDYWLlyYWlNjo402ipNOOqniejvvvHNV+zvvvPPioosu6loeMWJEHHjggTFw4MB47LHHYtq0aRER8ctf/jLmz58ff/jDH2LddeWvAgAAQKs07X/lw4YNi7333rvr5/bbb48f//jHvdrn0KFD4yc/+UlD6rv77rtLmhpnnXVWXHTRRdG/f/+u6375y1/GqaeeGsuWLYs77rgjvv/978d5553XkOMDAADQZorRmmnPPWnGlOgmS72xccQRR8TMmTNj1KhRJdc/8sgjaR+6Juecc07X5eOPPz4uueSSbuuccMIJ8fbbb8cXvvCFiIj4wQ9+EF/84hdj0003bVqdrVQph0MGR74snNSHn6+s/XHJsiw8Vs3I1DD3te3M+e6fSpYbMb85mbtRa+ZGXiQzNeqRzOGQuUEWydOA9pH6WVG22GKLbk2NrJk8eXI8+uijERGxzjrrxKWXXrrWdf/xH/8xdthhh4iIePfdd+O6665rSo0AAABAd073GqsDTv9q7NixMXLkyLWuWygUYvz48V3Lv/3tb1OsDAAAAOiJ5MuIuPfee7suH3LIIRXXX3OdiRMnxvLly2PAgAEpVAYAAECumfKaulw3Nt57772444474rHHHos333wz1ltvvdhss81in332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3oopU6bE5MmTY8qUKTFz5sx4880344033ohCoRBDhgyJ0aNHxyGHHBInnXRSbLnllg2qe+1yNxUlDX/6059i4sSJMXHixHj88cfj9ddfj/nz58c777wTG2ywQWy22Waxxx57xNixY2PcuHFV5XEAAABAuznppJPiD3/4w1pvX7p0acyePTvuuOOOOP/88+Pss8+O8847Lzo60jt3SVMaGzNmzGjIfg455JCuaSiNNHLkyDjuuOPiuOOOa/i+20mtmRt9Sh/N0EiSqQFNlrlvgFone9+GNUkL7neffawB6GbYsGGx8847x6hRo2KDDTaIJUuWxPPPPx+TJ0+O9957L1asWBEXXHBBzJgxIyZMmJBaHUZsAAAAQBqKGQyP7uWXsoccckh84hOfiMMOOyy23XbbsuvMnTs3vvrVr8bNN98cERHXXHNNHH300fGpT32qdwdfC40NAAAAoCpf//rXK66zxRZbxI033hjz5s2L++67LyIirrjiitQaG+YSAAAAAA1VKBTi1FNP7Vp+/PHHUzuWERvUbashp7W6hMxIZkvMfn1CS+oAWmfev96d/kHaJU8ha0NyASBNfTibaPPNN++6/O6776Z2HCM2AAAAgIZ75plnui5vvfXWqR3HiA0AAADImU/e+vu6tpv+1oIGV1Le7Nmz4wc/+EHXclr5GhEaGwAAAJA7j897o9UldLN06dJ4+eWX449//GNceumlMW/evIiI2HHHHeNb3/pWasfV2KBqIwed0eoScqOvZG4k7yf0JU3J1IAMSCVnBTJg9nkPdrtuxIUHtqCS7Lt++/VaXUJuFaO930cffPDBOOigg3pc54gjjogbbrghBg0alFodMjYAAACAhho8eHDccMMN8cc//jGGDh2a6rGM2AAAAABqNmLEiPjSl74UERHFYjHefffdmD59ejz++OOxcOHCOPHEE+PKK6+M//iP/4gdd9wxtTo0NgAAACANxfSmonxws83q2m76ggWx5L33GlLDdtttFz/5yU+6XT979uz49re/HRMmTIh777039ttvv7j33nvjAx/4QEOOm6SxAayVDA1osTaek5s5xRR22ZnC89eE10Q7zwWHSpK5G301c0OmRj789phj6tru73/3u3jijXSDR0eMGBFXX311bLzxxvF//s//iQULFsQJJ5wQU6dOjXXWWafhx5OxAQAAADTcxRdf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u9GjR8eee+4ZS5cujQceeCDmzp0bK1eujHPOOSdWrlwZ5513XsX9nnfeeXHRRRd1LY8YMSIOPPDAGDhwYDz22GMxbdq0iIj45S9/GfPnz48//OEPse668lcBAACgVZqWsTFs2LA46qij4oILLojbbrstvvrVr9a9r4suuqirqTFw4MD45S9/GVOnTo0JEybETTfdFDNnzoxvfOMbXet/97vfjfvvv7/Hfd59990lTY2zzjorXn755bjpppvimmuuiaeeeip+8YtfxMCBAyMi4o477ojvf//7dd8HAAAA2l0hisVs/US039SY1IcbHHHEETFz5swYNWpUyfWPPPJIXfubN29eXHbZZV3Ll19+eRx//PEl6/Tv3z8uvfTSeOWVV7qmqpx99tkxceLa55mec845XZePP/74uOSSS7qtc8IJJ8Tbb78dX/jCFyIi4gc/+EF88YtfjE033bSu+wKNJEODvmLzb9WecySXY+3qeTzbUTIfY875D9S8TRZt+b8/1O26ZO5GKzI1ip3t96Ea+pLrt1+v1SVAidRHbGyxxRbdmhq9cc0118TixYsjImLHHXeMz33uc2td99JLL42OjtV3cdKkSfHEE0+UXW/y5Mnx6KOPRkTEOuusE5deeula9/mP//iPscMOO0RExLvvvhvXXXddXfcDAAAA6L3cne71lltu6bo8fvz4KBTW3vEfNWpUyRlMfvvb31bc59ixY2PkyJFr3WehUIjx48dX3CcAAACQvlw1NpYtWxYPP/xw1/IhhxxScZs117nnnnvKrnPvvffWvc+JEyfG8uXLK24DAABA39PqTI3uGRvtJ1en9Jg+fXp0dnZGxOqREx/84AcrbrPHHnt0XX7mmWfKrrPm9WuuX80+V61aFc8991zstttuFbdLenraivjomNk1bxcRccf9I+raDqAvSuZI1JW50dGAYIFGqzGnQJ5G9fKQn1Gvcrkba5p19qSa9icvI39mn/dgq0sgZ7bsuKJk+ZsvV7fdzGVzUqgGustdY+OvNt98864zlPRkzXyPt956K954443YbLPNuq6bN29eLFy4sGt56623rrjPgQMHxmabbRZvvPFGREQ8++yzdTU2Fi8qxuRHjPYAAACya/rSma0uAXqUq6ko8+fP77o8bNiwqrbZYostSpbfeuutte6z3v0m9wkAAABRjNUjLLP0k8FBqL2Vq8bGokWLui6vt151pxhKrrfmPsot17Pf5D4AAACA5shVY2PZsmVdl/v371/VNgMGDChZXrp06Vr3We9+k/sEAAAAmiNXGRtrZmqsWLGiqm2SZyxJjshI5nSsWLGiquyONfdb7SiPpA02LMT7d62ukQJJw7cc3+oSILcqhWjOu/SuJlXSS1kMNKXt1RUW2qYp/NQvGWA64sIDW1QJ1dhpvco5hOXMXDYnlhWr+39bO2vXM5FkSa4aGxtuuGHX5WpHSSTXW3Mf5ZaXLl1aVWNjzf0m91Gt9+/a39lNAACATLtk26/Vtd03X75c8ChNkaupKJtssknX5ddff72qbebOnVuyPHTo0LXus979JvcJAAAANEeuGhs77bRT1+V58+Z1y8co55VXXum6PHTo0JJTvUasPm3s4MGDu5ZnzqzcUVy2bFnXqV4jInbeeeeK2wAAANC3FKMQxWLGfqL9psbkairKTjvtFB0dHdHZ2RnFYjH+/Oc/x3777dfjNo8//njX5V122aXsOrvssktMmjQpIiKeeOKJOPzww6ve5zrrrBM77rhjtXcB6iZTA4Bm2Ori/UuWX/3mwz1vkMLccfPR+x6ZG611/fb1ZQZCVuRqxMbAgQNLGhn33XdfxW3uv//+rssf/vCHy65z6KGH1r3PD33oQ93OvAIAAAA0R64aGxERn/zkJ7suT5gwocd1Z82aFXfffXfZbde2z7vuuitmzZrV436vueaaivsEAAAA0pe7xsbJJ58cG2ywQURETJ8+Pa688sq1rnvWWWfFqlWrIiJi//33jz322KPsenvvvXfsvffeERGxatWq+Na3vrXWff7sZz+L6dOnR0TERhttFCeddFJd9wMAAID2Vyxm66cd5SpjI2J12Oc///M/x0UXXRQREV/5yldi4403jk9/+tNd66xYsSLOO++8+OUvf9l13cUXX9zjfi+++OI47LDDIiLihhtuiJEjR8aFF14Y/fr161rnpptuiq997Wtdy1//+tdj0003bcTdAiBDNj/rsG7Xzbv0rhZUAq038pLSPLNXz3qk4jaNzsgot7+ZX59csrz1D/Zu6DHbSTK/AmRq0G6a0tg48sgjY/bs2SXXrXm61ClTpsTuu+/ebbvbbrstRowY0e3673znO/HQQw/FPffcE0uXLo3jjjsuvve978Uee+wRy5YtiwceeCDmzJnTtf4F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5ZVWJb5tSWZo1Ji5UZfkXO1mzNOulEtQRQ21flOVXH/uhfdX3iZZZ2IfFWtIrl9FHkO3fVZ6D6zi+auYxZJFddRY6/NRdpUKz1GxL/1NomEq5XI04ncymbvR28yNcjXn4r2DtnbNNdfEr3/9667liy++OAYMGJDa8YzYAAAAABpiypQp8fnPf75r+bjjjotx48alekwjNgAAACAV6Z1idaf1tqlru5nL5sSy4vLGFvM/Xn755Tj66KNj2bJlERGx2267xRVXXJHKsdaksQEAAAA5c8k2Z9a13Tdn/CimL53R2GIiYs6cOfGRj3wk5s6dGxER2223Xdx+++0xaNCghh8rSWMD2lWFDIiqTu3ejFyOSuqpocZ51YUq5tL3WuIYC++bUHGTbs9RhQyBbo9Vpdur2WclifXfvvUX3VYZ9Il0hx7WY8GVt5ZeUU2+QnLyZmeNeReJJzS5dqvmQ7fkuL38nasm/yILuueu9L7uvGRw1FxXhfXLPXaVMjQq1TD99KdLlne68v097xAiP7+D0Gzz58+Pj3zkI/Hiiy9GRMTw4cPjrrvuiuHDhzfl+BobAAAAkIJisfcBsY3W6HDld955J4444oiYNm1aRERssskmceedd8a2227b2AP1QHgoAAAAULPFixfHkUceGVOmTImIiI033jhuv/322HXXXZtah8YGAAAAUJNly5bFMcccEw899FBERKy//vpx2223xZ577tn0WnI3FeW+++6LQw89tO7tr7766hg/fnzJdTNmzKh5mMzYsWPjrrvuqrsOqlNMtN4KiYyAEZuPb1otWbfJ6FNLluc/eVXJciqZGnUMY0s+h7lQTc0NHtLXMskXSq1DJ8vMg3/7N7/seZ1uWSCJvItVVeSA9HafCYUybf9i8nXQkTxGIkMjsY+68hUSGQ29zaZoiEpZCHUMt+2zc9TLvTFn8LFoRDZIt+e4mlybku17f4xK6z9zyrPd1tnl6p0rH5jMSuZhJPXZ9x6arh1faytXroxPfepTcc8990RExIABA+LWW2+NAw44oCX19LkRG1tssUWrSwAAAIBcWrVqVYwbNy5uu+22iIhYd9114+abb47DDjusZTXlbsTGlltuGV/60peqXv+OO+6I559/PiIihg0bVvHB3mijjeKkk06quN+dd9bBBwAAoO8oFotx+umnx69+9auIiOjo6IjrrrsujjnmmJbWlbvGxg477BA/+clPqlp31apVsdVWW3Utn3jiibHuuj3f5aFDh1a9fwAAAOhJO01F+elPfxoTJkzoWt5+++3jwQcfjAcffLDitptssklccMEFqdSVu8ZGLW6//faYO3du1/LJJ5/cwmpoBJka1dvk70ozN976S2nmRs15GtBGConsikqZG+kUkcjkKLNK23wQqjWjIQOZNcnXSEQVWRPJmxO76Pa6q+JxSWYE5OU1UWveRfftK+yv7EaJ3I5KGRuVsnloe5UyOCIqv44a8TvakdhH1k4NCmuaN29eyfLzzz/fNUOikq233jq1xkZbZ2xcc801XZc/+MEPxt/93d+1sBoAAACg0dq2sfH222/H7373u65lozUAAACgfueff34Ui8W6fmbMmJFaXW07FeWmm26KZcuWRUREv379Yty4cS2uCAAAgL6kWCxzyvgWq+YU2nnTto2NNaehHHnkkbHZZptVtd17770Xd9xxRzz22GPx5ptvxnrrrRebbbZZ7LPPPrHXXntFv379Glbj09NWxEfHzK5r2zvuH9GwOugjGvGG2oZvgmRfITG2sLgqjYNUfnF3qyP5O9WRmBPdmcjQ6LZ9RudQ11hXPfPJ85IT0RLJ12LisUrO5x/1b/ukXVFdXvjC1B5vT77+K2ZqVPGaSW5T8XesikyOaSc91+M6o6/boWJdtE6lDI1q3otqzdDIay5OJd98+fK6tpu5bE5jC4G1aMvGxgsvvBATJ07sWq5lGsprr70Whx9+eNnbNt988/ja174W//Iv/xL9+/fvdZ2LFxVj8iPLe70fAACAtExfOrPVJUCP2jJjY83RGptsskl8/OMfb8h+582bF+ecc04ceOCBMWeO7iMAAAA9KUSxmK2f8udiy7e2a2wUi8W4/vrru5bHjRtX1eiKQYMGxRlnnBG//vWv48UXX4zFixfH8uXLY+bMmXHDDTfEfvvt17Xu5MmT46ijjoolS5akch8AAACA6rRdY+P+++8vSVutZhrK8OHD47XXXouf/exnceyxx8Z2220X66+/fvTv3z9GjRoV48aNi4kTJ8b555/ftc3jjz8eP/zhD1O4BwAAAEC12i5jY81pKLvuumvsueeeFbcZMGBADBgwoMd1CoVCfPe7340XXniha0TIZZddFmeffXasu259D+MGGxbi/bv2PqsDUtPLsNBCxhKg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mTBhQpxyyik1bXPRRRfFueeeW9W6d999d1xzzTXx8MMPx2uvvRYDBgyIrbbaKg4//PA47bTTYuedd66nbKAKQ/c4tdUl0GKVsivKymCbPnk/+krmRqts95PdS5af/8enyq/4P4qJDI5nxk8vWd5lwk4NqavRspipIbsiXcnHd8rfzypZ3uu3WzWzHDLo+u3Xa3UJVOCkKOnLZWMjLe+880587nOfi5tuuqnk+iVLlsSCBQti6tSp8eMf/zguuOCCOPvss1tUJQAAAPBXuW9s7LzzzjF27NiK6+2999493r5y5co49thj4+677+66bvTo0bHnnnvG0qVL44EHHoi5c+fGypUr45xzzomVK1fGeeed1+v6AQAAgPrlvrGx7777xk9+8pNe7+eiiy7qamoMHDgwrr766jj++OO7bl+xYkWce+658W//9m8REfHd7343xowZE2PGjOn1sQEAAGg/xWJEZ8bmohQzVk8j5L6x0Qjz5s2Lyy67rGv58ssvL2lqRET0798/Lr300njllVe6pqqcffbZMXHixKbWSjYV2vDNISK6nwkqhfspU4OkZBZFXZkbaaj0i56YBy9To7V2uGJ0j7c/ffJzJcvJD3lTT3yh2zbJXI5k9kHFrIkq3kOLnT3vIwt5FlmoIa/SeOxkbvQ9MjWguwzGrTXfNddcE4sXL46IiB133DE+97nPrXXdSy+9NDo6Vj9skyZNiieeeKIpNQIAAADdaWxExC233NJ1efz48VEorL2bPmrUqJJMj9/+9rdplgYAAAD0oM83NpYtWxYPP/xw1/IhhxxScZs117nnnntSqAoAAIB2UIxCpn7aUe4zNhYuXBg333xzPP300/H222/HoEGDYsstt4wDDzwwdtlll4rbT58+PTo7OyMiolAoxAc/+MGK2+yxxx5dl5955pm6a3962or46JjZdW8PAACQtm++fHld281cNqexhcBa5L6xceutt8att95a9rbddtstzj333Pj0pz+91u2nT5/edXnzzTePgQMHVjzmqFGjui6/9dZb8cYbb8Rmm21WQ9WrLV5UjMmPLK95u4iIBcv+s2R55KAz6tpPX7TJ35WGVc5/8qoWVQJUo1uY6B+ub1ElPRMWmi/JsNDOVYlBrI0IeayUN1shKDQrhIWunceGvmL60pmtLgF61NZTUaZOnRrHHXdcnHLKKfHee++V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IC5duoS9e/ciMTER2dnZKCwshIeHBwICAjBv3jy89tpr6NOnT2dXlVrx8/NDVlYW0tLSkJ6ejuzsbBQXF6OkpAS1tbVwd3fHgAED8Oyzz2LOnDmIiooSj1qktmJiYjB8+HCkp6cjPT0dd+/eRUlJCUpKStDU1AQPDw8MHToUoaGhiI6OxsSJE2WX3bt3b+zbtw9Lly7Frl27kJ6ejvz8fKhUKgwaNAgvvPACXn/9dT7i1QCak7FFRERg0KBBBuVn/HQuJWLCzs4O77zzDl5++WV88cUXOH36NB48eID6+nr0798foaGhiI2NxXPPPafgJ6PWLly4gLS0NKSlpSEjIwOFhYUoKSlBeXk53Nzc4OPjgwkTJiAyMhILFy5Ez549O7vKVkvpdosxZF579uxBQ0MDAMDd3R3z5s0zqhzGEJFt41AUIiIiIiIiIrJZvCxGRERERERERDaLHRtEREREREREZLPYsUFERERERERENosdG0RERERERERks9ixQUREREREREQ2ix0bRERERERERGSz2LFBRERERERERDaLHRtEREREREREZLPYsUFERERERERENosdG0RERERERERks9ixQUREREREREQ2ix0bRERERERERGSz2LFBRERERERERDaLHRtEREREREREZLPYsUFERERERERENosdG0RERERERERks9ixQUREREREREQ2ix0bRERERERERGSz2LFBRERERERERDaLHRtEREREREREZLPYsUFERERERERENosdG0RERERERERks9ixQUREREREREQ2ix0bRERERERERGSz2LFBRERERERERDbr/wHS1S7ava75HQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "image/png": { + "height": 463, + "width": 539 + } + }, + "output_type": "display_data" + } + ], + "source": [ + "diffusion_results = ps.simulations.fickian_diffusion(im=trimmed_im, axis=1, cL=5, cR=2)\n", + "\n", + "plt.imshow(diffusion_results.concentration_map, origin='lower', interpolation='none', cmap=plt.cm.plasma)\n", + "plt.colorbar()" + ] + }, { "cell_type": "markdown", "id": "dfed0b5a", @@ -161,12 +280,12 @@ "id": "e79a24ab", "metadata": {}, "source": [ - "As mentioned at the start of the tutorial, the only two inputs for the function are the image and the axis along which to run the calculation. For the x-axis we assign axis a value of 1 and for the y-axis we assign axis a value of 0. " + "As mentioned at the start of the tutorial, the only two inputs for the function are the image and the axis along which to run the calculation. For the x-axis we assign axis a value of 1 and for the y-axis we assign axis a value of 0." ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "id": "13d39345", "metadata": { "execution": { @@ -182,20 +301,18 @@ "output_type": "stream", "text": [ "――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n", - "Results of tortuosity_fd generated at Fri Mar 17 18:20:54 2023\n", + "Results of tortuosity_fd generated at Mon Jul 8 10:41:32 2024\n", "――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n", "im Array of size (200, 200)\n", - "tortuosity 1.8776185599936215\n", - "formation_factor 2.9043946942938574\n", - "original_porosity 0.646575\n", - "effective_porosity 0.646475\n", - "concentration Array of size (200, 200)\n", + "tortuosity 1.345433860454569\n", + "formation_factor 2.692887386448975\n", + "porosity 0.499625\n", "――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n" ] } ], "source": [ - "results = ps.simulations.tortuosity_fd(im=im, axis=1)\n", + "results = ps.simulations.tortuosity_fd(im=trimmed_im, axis=1, r_in=diffusion_results.r_in)\n", "print(results)" ] }, @@ -209,11 +326,10 @@ "\n", "|Attribute| Description |\n", "|-|-|\n", + "|``im``|The image supplied to the function\n", "|``tortuosity``|The **calculated tortuosity** is given by the equation:

$$\\tau = \\frac{D_{AB}}{D_{Eff}} \\cdot \\varepsilon $$

where $\\varepsilon$ is the ``effective_porosity``|\n", - "|``effective_porosity``|The effective porosity of the image after removing disconnected voxels |\n", - "|``original_porosity``|The porosity of the image as inputted|\n", "|``formation_factor``|The formation factor is given by the equation:

$$\\mathscr{F}=\\frac{D_{AB}}{D_{Eff}}$$|\n", - "|``concentration``| Returns an image containing the concentration values from the simulation|" + "|``porosity``|The porosity of the image as inputted|" ] }, { @@ -234,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "id": "0cd027c6", "metadata": { "execution": { @@ -249,34 +365,16 @@ { "data": { "text/plain": [ - "2.9043946942938574" + "1.345433860454569" ] }, - "execution_count": 4, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "image/png": { - "height": 276, - "width": 337 - }, - "needs_background": "light" - }, - "output_type": "display_data" } ], "source": [ - "plt.imshow(results.concentration,origin='lower', interpolation='none', cmap=plt.cm.plasma)\n", - "plt.colorbar()\n", - "results.formation_factor" + "results.tortuosity" ] } ], @@ -296,7 +394,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.5" + "version": "3.11.7" } }, "nbformat": 4, diff --git a/examples/simulations/tutorials/using_tortuosity_gdd.ipynb b/examples/simulations/tutorials/using_tortuosity_gdd.ipynb index 7dbd1ac38..1d2d48511 100644 --- a/examples/simulations/tutorials/using_tortuosity_gdd.ipynb +++ b/examples/simulations/tutorials/using_tortuosity_gdd.ipynb @@ -18,16 +18,7 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\jeff\\anaconda3\\envs\\dev\\lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], + "outputs": [], "source": [ "import numpy as np\n", "import porespy as ps\n", @@ -50,17 +41,7 @@ "outputs": [ { "data": { - "text/plain": [ - "(-0.5, 162.5, 130.5, -0.5)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] @@ -68,7 +49,7 @@ "metadata": { "image/png": { "height": 463, - "width": 572 + "width": 463 } }, "output_type": "display_data" @@ -77,9 +58,9 @@ "source": [ "# im = ps.generators.fractal_noise(shape=[100,100,100], seed=1)<0.8\n", "np.random.seed(1)\n", - "im = ps.generators.blobs(shape=[100,100,100], porosity=0.7)\n", - "plt.imshow(ps.visualization.show_3D(im))\n", - "plt.axis('off')" + "im = ps.generators.blobs(shape=[100, 100, 100], porosity=0.7)\n", + "plt.imshow(ps.visualization.sem(~im))\n", + "plt.axis('off');" ] }, { @@ -91,44 +72,528 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + "
[22:18:34] WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:18:34]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[22:18:38] ERROR    Inlet/outlet rates don't match: 2.2810e+01 vs. -2.2802e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:18:38]\u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.2810e+01\u001b[0m vs. \u001b[1;36m-2.2802e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.1896e+01 vs. -2.1890e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.1896e+01\u001b[0m vs. \u001b[1;36m-2.1890e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.6630e+01 vs. -2.6619e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.6630e+01\u001b[0m vs. \u001b[1;36m-2.6619e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.4781e+01 vs. -2.4769e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.4781e+01\u001b[0m vs. \u001b[1;36m-2.4769e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[22:18:39] WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:18:39]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5437e+01 vs. -2.5431e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5437e+01\u001b[0m vs. \u001b[1;36m-2.5431e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.7020e+01 vs. -2.7012e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.7020e+01\u001b[0m vs. \u001b[1;36m-2.7012e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.3387e+01 vs. -2.3378e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.3387e+01\u001b[0m vs. \u001b[1;36m-2.3378e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5927e+01 vs. -2.5921e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5927e+01\u001b[0m vs. \u001b[1;36m-2.5921e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[22:18:41] ERROR    Inlet/outlet rates don't match: 2.6571e+01 vs. -2.6564e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:18:41]\u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.6571e+01\u001b[0m vs. \u001b[1;36m-2.6564e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5440e+01 vs. -2.5433e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5440e+01\u001b[0m vs. \u001b[1;36m-2.5433e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5395e+01 vs. -2.5391e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5395e+01\u001b[0m vs. \u001b[1;36m-2.5391e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[22:18:42] ERROR    Inlet/outlet rates don't match: 2.8140e+01 vs. -2.8126e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:18:42]\u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.8140e+01\u001b[0m vs. \u001b[1;36m-2.8126e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "Max distance transform found: 9.164999961853027\n", - "[3 3 3] <= [3,3,3], using 33 as chunk size.\n", - "[1.3940749221735982, 1.4540195658662034, 1.4319709358246486]\n" + "[1.3925109029722786, 1.3999150512069598, 1.3606684244878253]\n" ] } ], "source": [ - "from porespy.beta import tortuosity_gdd\n", - "out = tortuosity_gdd(im, scale_factor=3)\n", - "print(out.tau)" + "from porespy.beta import tortuosity_bt\n", + "out = tortuosity_bt(im, block_size=50)\n", + "print(out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The first three results in the returned object are the tortuosity values in the x, y, and z-direction respectively. The following results are time stamps on However, there is a more useful form of this function." + "The three values in the returned list are the tortuosity values in the x, y, and z-direction respectively. However, there is a more useful form of this function." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 10, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Max distance transform found: 9.164999961853027\n", - "[3 3 3] <= [3,3,3], using 33 as chunk size.\n" - ] + "data": { + "text/html": [ + "
[22:19:51] WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:19:51]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[22:19:56] ERROR    Inlet/outlet rates don't match: 2.1896e+01 vs. -2.1890e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:19:56]\u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.1896e+01\u001b[0m vs. \u001b[1;36m-2.1890e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.3387e+01 vs. -2.3378e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.3387e+01\u001b[0m vs. \u001b[1;36m-2.3378e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.7020e+01 vs. -2.7012e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.7020e+01\u001b[0m vs. \u001b[1;36m-2.7012e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.6571e+01 vs. -2.6564e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.6571e+01\u001b[0m vs. \u001b[1;36m-2.6564e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5927e+01 vs. -2.5921e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5927e+01\u001b[0m vs. \u001b[1;36m-2.5921e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.6630e+01 vs. -2.6619e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.6630e+01\u001b[0m vs. \u001b[1;36m-2.6619e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5440e+01 vs. -2.5433e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5440e+01\u001b[0m vs. \u001b[1;36m-2.5433e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.8140e+01 vs. -2.8126e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.8140e+01\u001b[0m vs. \u001b[1;36m-2.8126e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
[22:19:58] ERROR    Inlet/outlet rates don't match: 2.2810e+01 vs. -2.2802e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:19:58]\u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.2810e+01\u001b[0m vs. \u001b[1;36m-2.2802e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5437e+01 vs. -2.5431e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5437e+01\u001b[0m vs. \u001b[1;36m-2.5431e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.4781e+01 vs. -2.4769e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.4781e+01\u001b[0m vs. \u001b[1;36m-2.4769e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
           ERROR    Inlet/outlet rates don't match: 2.5395e+01 vs. -2.5391e+01                          _dns.py:109\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m Inlet/outlet rates don't match: \u001b[1;36m2.5395e+01\u001b[0m vs. \u001b[1;36m-2.5391e+01\u001b[0m \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m109\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { "data": { @@ -151,109 +616,153 @@ " \n", " \n", " \n", - " Throat Number\n", - " Tortuosity\n", - " Diffusive Conductance\n", - " Porosity\n", + " eps_orig\n", + " eps_perc\n", + " g\n", + " tau\n", + " volume\n", + " length\n", + " axis\n", + " time\n", " \n", " \n", " \n", " \n", " 0\n", + " 0.705176\n", + " 0.705176\n", + " 25.439633\n", + " 1.414264\n", + " 125000\n", + " 50.0\n", " 0\n", - " 1.242083\n", - " 19.555253\n", - " 0.736038\n", + " 4.177472\n", " \n", " \n", " 1\n", - " 1\n", - " 1.404705\n", - " 15.727675\n", - " 0.669477\n", + " 0.721312\n", + " 0.721312\n", + " 26.571451\n", + " 1.385007\n", + " 125000\n", + " 50.0\n", + " 0\n", + " 3.947818\n", " \n", " \n", " 2\n", - " 2\n", - " 1.268947\n", - " 19.731037\n", - " 0.758717\n", + " 0.705616\n", + " 0.705592\n", + " 26.630394\n", + " 1.351823\n", + " 125000\n", + " 50.0\n", + " 0\n", + " 4.038600\n", " \n", " \n", " 3\n", - " 3\n", - " 1.520043\n", - " 15.566115\n", - " 0.717005\n", + " 0.651352\n", + " 0.651344\n", + " 21.896334\n", + " 1.517690\n", + " 125000\n", + " 50.0\n", + " 0\n", + " 3.931128\n", " \n", " \n", " 4\n", - " 4\n", - " 1.350561\n", - " 18.242258\n", - " 0.746584\n", + " 0.706072\n", + " 0.706024\n", + " 25.394748\n", + " 1.418468\n", + " 125000\n", + " 50.0\n", + " 1\n", + " 2.053686\n", " \n", " \n", " 5\n", - " 5\n", - " 1.405354\n", - " 15.285239\n", - " 0.650945\n", + " 0.717600\n", + " 0.717600\n", + " 27.020315\n", + " 1.354990\n", + " 125000\n", + " 50.0\n", + " 1\n", + " 3.961196\n", " \n", " \n", " 6\n", - " 6\n", - " 1.634790\n", - " 13.765760\n", - " 0.681943\n", + " 0.691104\n", + " 0.691016\n", + " 24.780591\n", + " 1.422723\n", + " 125000\n", + " 50.0\n", + " 1\n", + " 2.012183\n", " \n", " \n", " 7\n", - " 7\n", - " 1.388642\n", - " 17.317457\n", - " 0.728720\n", + " 0.679584\n", + " 0.679256\n", + " 22.810414\n", + " 1.519303\n", + " 125000\n", + " 50.0\n", + " 1\n", + " 1.946066\n", " \n", " \n", " 8\n", - " 8\n", - " 1.528631\n", - " 14.278425\n", - " 0.661407\n", + " 0.695480\n", + " 0.695480\n", + " 25.926987\n", + " 1.368600\n", + " 125000\n", + " 50.0\n", + " 2\n", + " 4.006884\n", " \n", " \n", " 9\n", - " 9\n", - " 1.481147\n", - " 14.914736\n", - " 0.669421\n", + " 0.683104\n", + " 0.683104\n", + " 23.386926\n", + " 1.490245\n", + " 125000\n", + " 50.0\n", + " 2\n", + " 3.937272\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Throat Number Tortuosity Diffusive Conductance Porosity\n", - "0 0 1.242083 19.555253 0.736038\n", - "1 1 1.404705 15.727675 0.669477\n", - "2 2 1.268947 19.731037 0.758717\n", - "3 3 1.520043 15.566115 0.717005\n", - "4 4 1.350561 18.242258 0.746584\n", - "5 5 1.405354 15.285239 0.650945\n", - "6 6 1.634790 13.765760 0.681943\n", - "7 7 1.388642 17.317457 0.728720\n", - "8 8 1.528631 14.278425 0.661407\n", - "9 9 1.481147 14.914736 0.669421" + " eps_orig eps_perc g tau volume length axis time\n", + "0 0.705176 0.705176 25.439633 1.414264 125000 50.0 0 4.177472\n", + "1 0.721312 0.721312 26.571451 1.385007 125000 50.0 0 3.947818\n", + "2 0.705616 0.705592 26.630394 1.351823 125000 50.0 0 4.038600\n", + "3 0.651352 0.651344 21.896334 1.517690 125000 50.0 0 3.931128\n", + "4 0.706072 0.706024 25.394748 1.418468 125000 50.0 1 2.053686\n", + "5 0.717600 0.717600 27.020315 1.354990 125000 50.0 1 3.961196\n", + "6 0.691104 0.691016 24.780591 1.422723 125000 50.0 1 2.012183\n", + "7 0.679584 0.679256 22.810414 1.519303 125000 50.0 1 1.946066\n", + "8 0.695480 0.695480 25.926987 1.368600 125000 50.0 2 4.006884\n", + "9 0.683104 0.683104 23.386926 1.490245 125000 50.0 2 3.937272" ] }, - "execution_count": 4, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from porespy.beta import chunks_to_dataframe\n", - "out2 = chunks_to_dataframe(im, scale_factor=3)\n", + "from porespy.beta import analyze_blocks\n", + "out2 = analyze_blocks(im, block_size=50)\n", "out2.iloc[:10,:]" ] }, @@ -261,44 +770,42 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The ``chunks_to_dataframe`` function returns a DataFrame containing the tortuosity, diffusive conductance, and porosity values of each slice, which can be used to obtain the previous results from OpenPNM.\n", - "\n", - "Assign the diffusive conductance values to the network and run the simulation." + "The ``analyze_blocks`` function returns a `DataFrame` containing the tortuosity, diffusive conductance, and porosity values of each block, which can be used to obtain the tortuosity by using OpenPNM to solve the resistor network as follows. Start by assigning the diffusive conductance values to the network, then run the simulation:" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "1.3940749221735982" + "1.3606684244878253" ] }, - "execution_count": 5, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "net = op.network.Cubic([3,3,3])\n", + "net = op.network.Cubic([2, 2, 2])\n", "air = op.phase.Phase(network=net)\n", "\n", "air['throat.diffusive_conductance']=np.array(out2.iloc[:,2]).flatten()\n", "\n", - "fd=op.algorithms.FickianDiffusion(network=net, phase=air)\n", + "fd = op.algorithms.FickianDiffusion(network=net, phase=air)\n", "fd.set_value_BC(pores=net.pores('left'), values=1)\n", "fd.set_value_BC(pores=net.pores('right'), values=0)\n", "fd.run()\n", "\n", "rate_inlet = fd.rate(pores=net.pores('left'))[0]\n", "\n", - "# the length of one slice is removed from the total length since the network edge begins\n", + "# the length of one block is removed from the total length since the network edge begins\n", "# in the center of the first slice and ends in the center of the last slice, so the image\n", "# length is decreased\n", - "L = im.shape[1] - 33\n", + "L = im.shape[1] - 50\n", "A = im.shape[0] * im.shape[2]\n", "d_eff = rate_inlet * L /(A * (1-0))\n", "\n", @@ -319,16 +826,29 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 14, "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + "
[22:22:49] WARNING  Found non-percolating regions, were filled to percolate                              _dns.py:74\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[22:22:49]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m Found non-percolating regions, were filled to percolate \u001b[2m_dns.py\u001b[0m\u001b[2m:\u001b[0m\u001b[2m74\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "text/plain": [ - "1.396708006475956" + "1.4041847226215034" ] }, - "execution_count": 6, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -343,53 +863,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "With similar results, the main benefit to using the GDD method is the time save on larger images. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Extracting info from the DataFrame\n", - "A graph representing the tortuosity distribution can be created from the results." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB68AAAVYCAYAAAD4Bp3wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAB7CAAAewgFu0HU+AAD3SUlEQVR4nOzdd5wV9b0//vcuSxGWXXqPIESwYFRABLtiiRUVNYoKaK4aW4yxx0RRk5tEMcb2U6NRhFgTNZpEbAhWUBAiooCKgEpn6R2W8/vDr+fuoe2ye3aH8nzexz7uzGc+8/m8Z+bsMframclJpVKpAAAAAAAAAIAE5SZdAAAAAAAAAAAIrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAALZybdq0iZycnMjJyYmpU6cmXU5WlOWYvt+ek5NTtcVVke3xupbV/Pnz49Zbb439998/6tevH9WqVUufi4EDByZdHrH9//4BAABbp7ykCwAAANhWHXbYYfHWW29tdFvNmjWjsLAwCgoKomnTprHvvvtGp06d4ogjjojWrVtXcaWw9Zg6dWoccsgh8c033yRdyjZt6tSpscsuu2R1zMceeyz69euX1TEBAAC2hPAaAACgEqxatSrmzJkTc+bMiS+//DLee++9iIjIzc2No48+On7+85/Hsccem3CVmdq0aRPTpk2LiIgpU6ZEmzZtki1oG+Lcld1FF12UDq532mmnOPLII6Nly5ZRrVq1iIjYfffdkywPysV3AAAAZIfwGgAAIAv222+/6Nq1a3p93bp1sWjRoli4cGF8+umn6VBj3bp18corr8Qrr7wS5557btx7771RWFiYVNlQpWbNmhWvvfZaRHz3dIKPP/44dt1114Sr2jYVFBTEpZdeutk+H374YYwaNSoiIlq0aBGnnHLKZvv7wwEAACBpwmsAAIAsOO6446J///6b3D5r1qwYPHhw3HPPPfHtt99GRMTgwYPj008/jXfeeSdq1669yX23x/chb4/HtKV2xHMwZsyY9PLBBx8suK6ABg0axH333bfZPv3790+H17vuumup/QEAAJKWm3QBAAAAO4JmzZrFNddcExMmTIjTTz893T5mzJjo06dPgpVB1VmwYEF6uXnz5glWAgAAwNZIeA0AAFCF8vPz45lnnokTTjgh3fbcc8/F8OHDkysKqsiaNWvSy7m5/pMEAAAAmfybIgAAsM077rjjIicnp0I/M2bMqLJ6c3Jy4vHHH4+6deum2373u99tsn+bNm3SdW7uUdPffPNN3HLLLXHIIYdE06ZNo2bNmlG3bt3YZZddomvXrnHeeefFU089FfPmzUvvM3Xq1PTY37+XOyJil1122eh52ljIXnL79z7++OO44ooromPHjtGgQYPIycmJk08+eYuPaX0fffRRXHjhhdGhQ4fIz8+P+vXrR5cuXeJ3v/tdLFq0qNT9Sx5vmzZtyjTnpmqt6Lnb0nMwcuTIuOyyy2LPPfeM+vXrR61ataJVq1bx4x//OO67775YtmxZmY5nY9dr0qRJ8Ytf/CJ23333yM/Pj4KCgth7773jhhtuyPi8lMfw4cPT85133nnp9scff3yDc7S5R+9n4/jL81ktq6+++ioKCgrS4//pT38qdZ+f/exnGZ/HsnyGk1TRz0k2zn+2fg8iIqZNmxYPPPBAnHXWWdGxY8coLCyM6tWrR8OGDeNHP/pRXHzxxTFy5MhN7p+N78/yfG8DAMB2LQUAALANW7duXap+/fqpiCj3T5s2bco196GHHpoe4+abb97i/S+//PL0/jk5OamioqKN9mvdunW635QpUzba58EHH0zttNNOZTreAw88ML3flClTtuhcDRs2bIO5S25PpVKpm2++OVWtWrUN9u3Zs+cWHdP6495yyy2p3NzcTdbWvHnz1FtvvbXZc17yeFu3br3ZvqXVWtFzV5ZzkEqlUkuXLk395Cc/KXX85s2bp15++eVSj2f98/rAAw+katasuclxGzZsmBo1alSZztXGDBs2rMznaGO/R9k8/vJ8VrfEoEGD0mPUqFEjNXbs2E32/ec//5num5ubm3r77bfLNefm3Hzzzek5Dj300C3atzI+JxU5/9n+Pbj66qtTOTk5ZfpcnnXWWally5ZtMEZFvwPK+70NAADbs7wAAADYhi1cuDB69+690W2TJk2KN954IyK+u8v1+OOP32i/H/3oR5VW3+acfvrpce+990ZERCqVinfeeSd69uy5xeP885//jJ/97Gfp9YKCgujevXu0atUq8vLyYtGiRfH555/H+PHjY/Xq1Rn7FhQUxKWXXhoREYMGDYolS5ZERESfPn0y7gz/XsuWLTdbyx133BG33HJLRES0a9cuunbtGrVr146pU6dG9erVt/jYvnfPPffEzTffnB53//33j5o1a8ann34aH374YUREzJw5M4477rh48803o2vXruWeq6yyfe42Zvny5XHEEUekjzEiokWLFnHwwQdHfn5+fPnll/Huu+9GcXFxzJw5M0466aR46qmn4rTTTivT+AMHDoyLL744IiI6dOgQXbp0iZ122ikmTpwY7733XqRSqSgqKooTTzwxJkyYEPXq1dviY2jZsmX6PE2cODGGDh0aERG77bZb9OjRI6Pv+tetMo+/Mj6r5557bgwZMiSeeuqpWL16dfTu3Ts++uij2GmnnTL6zZgxI37605+m13/1q1/FwQcfXK45q0JlfE625PxXxufgm2++iVQqFTk5OdGhQ4fo0KFDNGzYMKpXrx5FRUUxduzYmDx5ckREPPXUU7Fo0aL497//nXHXeEW+AyryvQ0AANu1ZLNzAACAytO/f//0XWs///nPsz5+Re+8XrZsWSovLy89xg033LDRfqXdobv33nunt1922WUbvUMwlUqllixZknr22WdT1113Xbnm2ZQocXdgXl5eqrCwMPXCCy9s0G/lypVbNFfJcWvUqJGqVatWavDgwRv0GzlyZMZ4HTp0SK1YsWKjY2bzzust7VOefS6++OJ0n2rVqqX+9Kc/pYqLizP6fP7556nOnTun+xUUFKS++uqrTc5b8rzWrFkz1bhx49SQIUM26PfWW2+lCgoK0n1vueWWMh3X5jz22GPp8fr27Vtq/2wff3k+q1tq4cKFGdf2Zz/7Wcb2devWpY488sj09v333z+1Zs2acs+3Odm68zpbn5Pynv/K+D24/fbbU4899lhq7ty5m+zz9ttvp374wx+mx9zY98/3tvQ7IFvf2wAAsL3xzmsAAGC7NW7cuPRyUndXb07t2rWjVatW6fXZs2dv8RhLly6Njz/+OCIifvCDH8Q999wTtWvX3mjf/Pz8OP300+MPf/hD+Qoug+Li4njppZc2+s7amjVrlnvc1atXx8CB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hfHZZ5/FlClTNtj//PPPj7vvvjt9F+amtGnTJqZNmxYREVOmTIk2bdqktw0fPjwOP/zw9HrTpk1j3333jWbNmkVeXl7MmjUrPvroo5g5c2a6z8EHHxzDhw/PeHRuRMQbb7wRRx11VHp9//33j06dOkXt2rXTbRdffHG0a9cuY7+S73ot679ibu6YNjbu3XffHVdccUVEfBdmde/ePWrUqBGffvppfPDBB+l+tWvXjqFDh0a3bt02OffatWujS5cu8fHHH6fbOnXqFPvss08UFxfHuHHjYuzYsRER0b9//3jsscdKrbU8564s52D58uVx2GGHxahRo9JtrVq1ioMOOijy8/Nj8uTJ8fbbb0dxcXFEfHdn71NPPRWnnXbaJo9/S69Xyc/5sGHD4rDDDit1n00ZOHBgnHfeeRER0bdv383e+R6R/eMvz2d1S7z55ptx1FFHxbp16yInJydeeeWVOProozfa9/TTT49//OMfERHRsWPHGDVqVMajp7Ohf//+6TuHDz300Bg+fHiZ962Mz0l5z3+2Pwdz5syJjh07xty5c9NtnTp1ij322CNycnJizJgx6VD5mGOOiSZNmqRfXfDYY49Fv379NhhzS74Dsvm9DQAA250UAADAdui2225LRcQGP4899ljW5jj00EM3OsfmfnJzc1PHHXdc6rXXXivzPK1bt07vP2XKlIxtI0eOTOXl5ZV5/tNOOy21ePHiTc51zjnnbHb/YcOGbbBPye3ZOKZNjXvzzTencnJyNllbs2bNNlrfxnz11Veptm3bbnKsnJyc1I033phat25dmWpNpbb83JV13CVLlqTOOOOMUq9t8+bNUy+//HKpx76l16vk57ys53dTHnvssfRYffv2LdM+2Tz+8nxWy6qoqCjVsmXL9PhXXHHFZvvPnz8/1apVq3T/yy+/POs13XzzzenxDz300C3atzI+JxU5/9n+PXj//fdTjRo12uxYJ598cmrhwoWpvn37lumfIWX9Dsj29zYAAGxP8gIAAGA79Otf/zpat24df/nLX+KTTz6JRYsWRUTEPvvsUyXz16hRIwoKCqKwsDB9V12XLl2iR48e8YMf/CBr8+y///4xZ86ceOONN+Ldd9+NsWPHxuTJk6OoqCiKi4ujoKAg2rVrF926dYtzzjkn4+7wjRk0aFAcf/zx8cQTT8R///vfmDdvXqxcuTJr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4IMPxtSpU+Ptt9+OQw89dIN+gwYNSt9xXPJu7dIsW7YsjjnmmHjvvffSbbvsskt06dIl6tevHwsWLIj3338/pk+fHitWrIjLL788Fi9eHL/61a82Ot6cOXPSwXWrVq1ijz32iGbNmkXt2rVj6dKlMWHChBgzZkykUqn473//GwcffHD897//jYYNG5Zaa3FxcfTq1SuGDh0aNWrUiAMOOCDatWsXK1eujHfeeSe+/vrriIh45ZVX4pe//GU88MADZT4P2xvhNQAAAAAAAJB1ffr0iQcffDAivgupNxZeDx48OCIi6tWrFyeddFKZx77kkkvSwXW7du3iwQcfjCOPPDKjT3FxcfzlL3+JK6+8MlatWhU33XRTHH744dG9e/cNxmvZsmX8/ve/j9NOOy1++MMfbnTOKVOmxMUXXxyvvvpqfPvtt3HdddfFI488Umqtf//732PVqlVx7LHHxsMPPxwtW7ZMb1u7dm3ccMMNMWDAgIiIeOihh+K6667boru6tyfCawAAAAAAALZ9GwkkK+TMMyOuuGLzfe6+O+Lpp7M774gRm98+Z05Ez57l378Kde/ePdq3bx+ff/55/OMf/4j77rsv45HY77//fnz55ZcREXHGGWdErVq1yjTuO++8k35PdqtWreLdd9+NZs2abdCvWrVqcfHFF0etWrXi/PPPj+Li4rj11ltjyJAhG/Q98cQT48QTT9zsvLvsskv861//ii5dusS4cePiiSeeiDvuuCPq16+/2f1WrVoVBx98cLz00kuRl5cZz+bl5cXtt98eb731VowaNSpSqVQ888wzcd1115V2GrZLwmsAAAAAAAC2fSNHZne8soTh06Zlf97SrF5d9XNWwLnnnhu/+c1vYvHixfHPf/4zzjrrrPS27wPoiC17ZPif/vSn9PLvf//7jQbXJfXr1y9uv/32mDhxYrz66qsxb968aNSo0RYcxf+pXr16nH322TFu3LhYuXJlvPvuu6WG3hERd9111wbB9fdycnLivPPOi1GjRkVEpP//jkh4DQAAAAAAAFSKc889N2666aZIpVIxaNCgdHi9atWqeOaZZyLiu8d+H3jggWUab+3atfH6669HxHd3Lffq1avUfXJycuLwww+PiRMnRiqVivfff3+zjyhfuHBhjBw5Mj799NMoKiqKpUuXxrp169LbJ06cmF7+73//W2p43bZt2+jcufNm++y7777p5alTp5ZyRNsv4XUluvLKK+PPf/5zer1169aV8mFbunRpDB48OJ599tn44osvYu7cudG4ceNo3759nHHGGXHOOedEfn5+1ucFAAAAAACAzWndunUccsgh8dZbb8Xrr78es2bNimbNmsVLL70UCxcujIjvAu6yGjduXCxbtiwiImrVqhXXXHNNmfYreTfzN998s9E+3377bVx//fXxj3/8I1atWlWmcefNm1dqn7322qvUPg0bNkwvL1q0qExzb4+E15Xkww8/jHvuuafS5xkxYkScffbZMWXKlIz26dOnx/Tp02PYsGFxxx13xJNPPhn7779/pdcDAAAAAAAAJfXp0yfeeuutKC4ujieeeCKuuuqq9CPDc3Jytii8njFjRnp56dKlcf/9929xPQsWLNigbezYsdGjR4+NbtucJUuWlNqnsLCw1D7Vq1dPL69Zs2aLatieCK8rwZo1a+J//ud/Mh4fUBnGjRsXxxxzTPqXonr16nHEEUdEq1at4ptvvok333wz1q5dG1999VUcffTR8d5770XHjh0rtSYAAAAAAIBEdOuW3fFaty5bn2zPW5oaNap+zgo6/fTT4/LLL4/ly5fHoEGD4txzz41XXnklIiIOOuigaNu2bZnHysZdyWvXrs1YX7VqVfTq1SsdXDdt2jR+9rOfxeGHHx7t2rWLBg0axE477RQ5OTkRETFw4MA477zzIiLKlAd+vx+lE15Xgj/+8Y/xySefRERE796948knn8z6HGvWrIlTTz01HVzvvffe8eKLL0brEl+kU6dOjZNPPjk+/vjjWLx4cfTq1Ss+/fTTTb4MHgBgx/JURMxcr615RJxVosdTMXO9Ps2jeZxVog8Je+qpiJnrXcfmzSPOco0AAAB2OCNGVP2cV1zx3U9VatIkmWOtgLp168bJJ58cTz75ZIwbNy6uu+66dIDcp0+fLRqrTp066eV99tknxo4dW+H6nnvuufRTjlu1ahWjR4+Opk2bbrJ/We62pnykmFk2ceLE+O1vfxsREWeffXYceeSRlRJeP/zwwzF58uSIiKhfv34MGTIkmjdvntGnTZs2MWTIkNhzzz1jwYIF8fnnn8ejjz4aF154YdbrAQDY9twTESPXa+sWJcPre+KeGLlen27RTXi9NbnnnoiR613Hbt2E1wAAALCV6dOnTzozGzhwYER8987q008/fYvGKRkqf/XVV7Fu3brIzc2tUG1Dhw5NL1955ZWbDa4jIqZNm1ah+di0il1JMqRSqfif//mfWLVqVdSvXz/+9Kc/VdpcJZ/ff/XVV28QXH+vefPmcdVVV210PwAAAAAAAKgKRx55ZLRo0SKjrWfPnmV6H3RJ++yzT9SsWTMiIhYvXhwjsnAXesn3aO+5556l9n/77bcrPCcbJ7zOogceeCDee++9iIi44447okmTJpUyz5dffhmfffZZer1fv36b7V9y+7hx49J3bAMAAAAAAEBVqFatWvTu3TujbUsfGR4RsdNOO8URRxyRXr/rrrsqXFvJO7eXL1++2b4fffRRjBo1qsJzsnHC6yz59ttv4/rrr4+IiIMPPjjOP//8SpvrzTffTC+3b99+g79SWV/Lli1j1113Ta8PGzas0moDAAAAAACAjbnxxhtj1KhR6Z9jjjmmXONcd9116eXnnnsu/Rjyspg1a9YGbW3btk0vv/jii5vcd/ny5V7PW8mE11ly8cUXx5IlS6JGjRrx0EMPRU5OTqXNNWHChPRyp06dyrRPyX4l9wcAAAAAAICqUK9evejSpUv6p1q1auUa59BDD42+ffum188///y45pproqioaKP9V61aFS+++GKccsopcdJJJ22w/YQTTkgvDxo0KO68884oLi7O6PPll1/G0UcfHWPGjIk6deqUq25Kl5d0AduDp59+Ov79739HxHd/6bH77rtX6nyTJk1KL7du3bpM++y8887p5YkTJ5Z77vHjx0f37t3LtW823jkAAAAAAAAADz30UMycOTNee+21SKVSMWDAgLjnnntiv/32i3bt2sVOO+0UixYtismTJ8cnn3wSK1eujIiIzp07bzDWMcccE4ceemi89dZbkUql4uqrr477778/OnXqFIWFhfHFF1/E+++/H8XFxdGyZcu44oor4tprr63qQ64U5c39xo8fn+VKviO8rqCioqK44oorIiJi1113jRtvvLFK5vxe06ZNy7RPs2bN0svz588v99xLly6NkSNHlnt/AAAAAAAAqKiaNWvGyy+/HLfcckvceeedsXz58li9enW899578d577210n+rVq0e3bt02uu2ZZ56J4447LsaMGRMREVOmTIkpU6Zk9Nljjz3i73//e3z44YfZPZgEbW25n/C6gq688sqYM2dORHz3Fx41a9as9DmXLl2aXt5pp53KtE/JfiX3p+p06dJlo+9RgKQ1a9YsRo8enXQZAFuV7/+5PefFORHr/THuRx99FK16tkqmMDbw4pw561+i+Oijj6Jnq+3vGvlnNgAAAGSqVq1a3HrrrXH55ZfHoEGD4o033ojPPvss5s2bF2vWrImCgoJo3bp17LXXXnH44YfHcccdF40bN97oWE2bNo33338/HnnkkXj66adj/PjxsXz58mjSpEl06NAhfvKTn8TZZ58dtWvX3q7C662N8LoCXnvttRg8eHBERPTt2zcOP/zwKpn3+8caRETUqFGjTPuUDNVXrFiR9Zoo3axZs2L69OlJlwEAlEH6n9urN9y2ZvUa/0zfimzkEsXqNa4RAAAAVLXhw4dnbaynn346nn766TL3b9y4cVx11VVx1VVXVWjemjVrxqWXXhqXXnrpZvv169cv+vXrV+E+JbVp0yZSqVSZ+2+vhNfltGzZsrjooosiIqJhw4YxYMCAKpu7Vq1a6eXVqzf2n+s2tGrVqvRyWe/WppLk5Ea1OvWTrgKieNmCiNS6pMsA2PZUy4tq+YVJV8H/k7N8UcS6tZltuXlRrfb2c438MxsAAADYUQivy+nGG2+MqVOnRkTEnXfeGY0aNaqyufPz89PLZb2LumS/kvuXZ+6OHTuWe38iqtWpH60ufTzpMiC+vb9vFC8tSroMgK1btbyIyAxGazRtF80vvTOZethAjcFXRcyYlNnWrF20Onf7uUb+mQ0AAABUlk29A7w048ePr5RXFQuvy2HMmDFx7733RkTE4YcfHn379q3S+Rs2bJhenj17dpn2Kfmu5QYNGpR77o4dO8aIESPKvT8AAAAAAACwdShv7te9e/cYOXJklqsRXpfLuHHjYt267x7b9/XXX2/2LxLmzp2bXp45c2ZG39/85jdx/PHHb/H8HTp0iCFDhkRExLRp08q0z9dff51e3m233bZ4TgAAAAAAAIDKJLyuoMmTJ8fkyZPL1Hf16tXxwQcfpNdLBttbYvfdd08vjx07tkz7jBkzZqP7AwAAAAAAAGwNcpMugC13+OGHp5cnTZoUM2fO3Gz/GTNmxBdffLHR/QEAAAAAAAC2BsLrcujXr1+kUqky/Tz22GPp/Vq3bp2xrV+/fuWaf9ddd4099tgjvf74449vtn/J7XvttVe0a9euXPMCAAAAAAAAVBbh9TbqkksuSS8PGDAgZs+evdF+s2bNigEDBqTXL7300kqvDQAAAAAAAGBLCa+3IlOnTo2cnJz0z/DhwzfZ98ILL0zfQV1UVBTHHntsfP311xl9pk2bFscee2zMnz8/IiLat28fP/3pTyutfgAAAAAAAIDyyku6AMqnevXq8dxzz8VBBx0US5cujbFjx8YPf/jD6NGjR7Rq1Sq++eabePPNN2PNmjUREVG3bt147rnnIi/PJQcAAAAAAAC2PpLMbdjee+8dr732Wpx99tkxZcqUWLNmTbzyyisb9Gvbtm088cQT0bFjxwSqBAAAAAAAACid8Hob17179xg3blwMGjQonn322fj888+jqKgoGjZsGO3bt48zzjgj+vTpE/n5+UmXCgCwlXkxIlav11YjYy33J3Wj+QV3ZbTlFPuf0FuTC079TVQvXpvRtqaaawQAAACwLfJfdSpZv379ol+/fmXq26ZNm0ilUls8R35+flxyySVxySWXbPG+AAA7rial9siZlxt5ixtVQS2UV1GdekmXAAAAAECW5CZdAAAAAAAAAAAIrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMQJrwEAAAAAAABInPAaAAAAAAAAgMTlJV0AAAAko3tEjFyvrVtEjEivFQ9dFNO6npDRo8a0DtH8gTsrvTrK5vnBV0WnGZMy2sa06BCnnusaAQAAAGxr3HkNAAAAAAAAQOKE1wAAAAAAAMBWberUqZGTkxM5OTnRpk2bpMuhknhsOAAAAAAAAFAhhx12WLz11lsb3VazZs0oLCyMgoKCaNq0aey7777RqVOnOOKII6J169ZVXClbM+E1AAAAAAAAUGlWrVoVc+bMiTlz5sSXX34Z7733XkRE5ObmxtFHHx0///nP49hjj024yq1TTk5OejmVSiVYSdUQXgMAAAAAAABZs99++0XXrl3T6+vWrYtFixbFwoUL49NPP41p06al21955ZV45ZVX4txzz4177703CgsLkyqbrYDwGgAAAAAAAMia4447Lvr377/J7bNmzYrBgwfHPffcE99++21ERAwePDg+/fTTeOedd6J27dob7NOmTZsd4s7jHV1u0gUAAAAAAAAAO45mzZrFNddcExMmTIjTTz893T5mzJjo06dPgpWRNOE1AAAAAAAAUOXy8/PjmWeeiRNOOCHd9txz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r69bty4WL14cCxcujM8++yymTJmywT7nn39+3H333RmPya4q/fr1i6+++ipuu+22iIj4z3/+Ey+//HJ07NgxOnbsGAUFBbFs2bKYPn16jB07NhYuXLjZ8QoKCuL555+Po446KubMmRPz5s2Ls846K37xi1/EAQccEI0bN46VK1fG5MmTY8yYMbFixYrYe++9NzpWr1694pVXXomIiOuvvz5eeeWV2HPPPaNmzZrpPjfeeGP6UeXbOuE1AAAAAAAAkDWjRo2KUaNGldovNzc3fvzjH8cvfvGLOOqoo6qgsk279dZbo2PHjnHllVfGjBkzIpVKxSeffBKffPLJJvfp2rVrVK9efaPbfvSjH8WHH34Yffr0ibfffjsiImbPnh0vvPDCRvvn5+dvtL1fv37x5JNPxrBhwyKVSsWwYcNi2LBhGX0uu+wy4TUAAAAAAABAaWrUqBEFBQVRWFgYTZs2jX333Te6dOkSPXr0iB/84AdJl5d2xhlnRM+ePePpp5+OV199NUaNGhVz586NpUuXRp06daJly5ax++67x8EHHxzHHXdctG/ffrPjtW7dOt56660YOnRo/P3vf4933nknZs6cGYsXL446depE69ato3PnznH88cfHSSedtNEx8vLy4tVXX41HH300nnvuufjkk09i/vz5sXr16so4BYkTXgMAAAAAAAAVMnz48Eodv02bNht9Z/T6ytJnc2rWrBl9+/aNvn37Vmicknr06BE9evQo9/7Vq1ePiy66KC666KKs1bS1El4DALCDujsipq3X1joirkivrbt4Rcw//uGMHnkLm0TBez0rvTrK5rzRL0bLRXMy2qYXNonHurhGAAAAANsa4TUAADuopyNi5Hpt3aJkeJ06bXUs6fpiRo8a0zoIr7ciJ054OzrNmJTRNqZFB+E1AAAAwDYoN+kCAAAAAAAAAEB4DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJE54DQAAAAAAAEDihNcAAAAAAAAAJC4v6QIAACAZI0rtUa1HYbS69PEqqIXyOvXcO5MuAQAAAIAscec1AAAAAAAAAIkTXgMAAAAAAACQOI8NBwAAAAAAACrF8uXL49VXX42hQ4fGBx98ELNnz46ioqIoLi6OevXqRdOmTWPvvfeO/fbbL3r27Bk777zzZsdr06ZNTJs2baPbdtpppygsLIyCgoJo0aJFdOrUKTp37hxHHnlkNGnSpMw1T506NXbZZZeNbsvJyYk6depEYWFhFBYWRtu2baNz587RuXPnOOqoo6JWrVplnocNCa8BAAAAAACArFqxYkXcf//9cccdd8ScOXM22mf27Nkxe/bsGDduXAwePDh+/vOfxwEHHBC/+tWv4vjjjy/XnCtWrIhZs2bF559/HsOHD4+IiOrVq8fJJ58cV155ZXTv3r0ihxWpVCqWLl0aS5cujenTp8dnn30W//73vyMion79+nHuuefGVVddVWoIz8YJrwEAAAAAAICs+eabb+Lkk0+OMWPGZLQ3btw4OnXqFI0aNYratWvHvHnzYvr06TFmzJhYu3ZtRES8//77ccIJJ8Sf/vSnuPLKKzc7T48ePWK33XZLrxcXF8fChQtjwYIFMW7cuJg5c2ZERKxZsyb+/ve/x3PPPRdXXnll/O53v4uaNWuW+Xj69OkTdevWTa+vXr06FixYEHPmzImxY8fGkiVLIiJiwYIFcc8998TAgQPjnnvuib59+5Z5Dr4jvAYAAAAAAACyYurUqdG9e/eYNWtWRHz3mO3TTjstrrvuuujUqVPk5ORssM+SJUti6NChcd9998XQoUMjImLZsmWlznXOOedEv379Nrl9ypQp8de//jUefPDBKCoqinXr1sWdd94ZEyZMiH/961+Rm5tbpmO65ZZbok2bNhvdtm7duhgzZkzcd9998eSTT8aaNWti8eLF0a9fv5g1a1Zcd911ZZqD75TtigAAAAAAAABsxsqVK+O0005LB9e1a9eOF154IZ599tno3LnzRoPriIi6devGySefHG+88UZ8+OGHsddee2Wlnl122SV++9vfxqeffhqHHXZYuv3ll1+Oa6+9Nitz5ObmRpcuXWLgwIHx3nvvZTwu/IYbboiXXnopK/PsKITXAADsoOZExLfr/WS+fynVaF2sLZiX8VNcZ2GVV8qmNVy2MJotnpfx03DZwqTLAgAAgB3SHXfcER999FF6/YknnoiePXtu0Rj77bdfjB49Ok455ZSs1dW0adN45ZVXolOnTum2P//5zzF58uSszRHxXe1vvvlmFBQURMR378f+5S9/GcXFxVmdZ3vmseEAAOygekbEyPXaukXEiPTaumeWxPSu/TJ61JjWIZo/cGdlF0cZPfz8bdFpxqSMtjEtOsSp57pGAAAAUJWWL18ed999d3r9rLPOipNPPrlcY9WoUSP23HPPLFX2nZo1a8aTTz4Ze+yxR6xbty6Ki4vjD3/4Qzz88MNZnaddu3YxYMCAuPDCCyMiYvLkyfH000/H2WefndV5tlfuvAYAAAAAAAAq5O9//3sUFRWl16+88soEq9m4Dh06xPHHH59e/8c//hHr1q3L+jx9+vSJxo0bp9efffbZrM+xvRJeAwAAAAAAABUybNiw9PIuu+wS++23X4LVbNrpp5+eXl64cGF88sknWZ+jZs2aceKJJ6bX33333UilUlmfZ3skvAYAAAAAAAAq5J133kkv77///glWsnnr1/bBBx9U+jzz58+PL774olLm2d545zUAAAAAAADbge5ZHu/MiLiilD53R8TTWZ53RCnb50REzwrsXzm+/vrr9PLuu++eSA1lseuuu0Zubm76ceGzZ8+ulHk6dOiQsT579uxo3759pcy1PRFeAwAAAAAAsB0YmeXxyhKGT6uEeUuzOoE5N2/x4sWxdu3a9Hq9evVK3efll1+Ol19+ebN9br311mjQoEFFy8uQk5MTdevWjUWLFkVExIIFC7I6/vcKCwsz1itrnu2N8BoAAAAAAAAotyVLlmSs16lTp9R9Pvzww7j//vs32+fqq6/OengdEZGfn58Or9evPZtzlFRZ82xvvPMaAAAAAAAAKLe6detmrC9btiyhSsqmZJBcUFBQ6XNU5jzbG+E1AAAAAAAAUG4FBQWRl/d/D3xeuHBhqfv0798/UqlUxs+UKVMqscrvrFu3LiNYrow7uyMifWd3Zc+zvfHYcAAAAAAAALYD3bI8Xusy9sn2vKWpkcCcpdt5553jq6++ioiICRMmJFzNpn3++eeRSqXS682aNauUeSZOnJixXlnzbG+E1wAAAAAAAGwHRiQw5xX/76cqNYlkjnXzDj744HR4/eGHHyZczaZ98MEHGevdulXOHwKUnKdx48bRrl27Splne+Ox4QAAAAAAAECFHH744enlr776KkaPHp1gNZv27LPPppcbNmwYe+yxR9bnWLlyZfzrX/9Krx900EFZn2N7JbwGAAAAAAAAKuS0006Lhg0bptfvuuuuBKvZuAkTJsSQIUPS62eccUbk5ORkfZ7HH388ioqK0utnnnlm1ufYXgmvAQAAAAAAgAqpU6dOXH755en1J598Ml566aUEK8q0atWqOPvss9Pvu87Ly4trr7026/N8+eWXGeN26NAhTjvttKzPs70SXgMAAAAAAAAVdt1118W+++6bXu/du3f8+9//TrCi78yZMyd+/OMfx9ixY9Nt1113XbRp0yar84wePTp69OgRixcvjoiI3Nzc+POf/xy5uSLZsnKmAAAAAAAAgAqrVatWPPfcc9GkSZOIiFi2bFn07NkzevfunREcr2/dunUxfPjwuPDCC7Naz9SpU+Omm26KPfbYI4YPH55uP+WUU+K2227Lyhzr1q2L0aNHx3nnnRcHHnhgfP311+ltd955Z/z4xz/Oyjw7irykCwAAAAAAAAC2D7vsskt8+OGH0bNnz/j4449j3bp18dRTT8VTTz0VTZo0ic6dO0ejRo2iTp06sWzZsvj2229j3LhxGe+Ijog4/PDDM96hvTF/+9vfYvTo0en14uLiWLRoUSxYsCDGjRsXM2bMyOifm5sb1157bdx6661b9K7rm2++OerWrZteX716dSxcuDDmzp0bY8aMSd9p/b169erF/fffH7179y7zHHxHeA0AAAAAAABkTevWreP999+Pe+65J+68886YN29eRHz3+O4hQ4Zscr+cnJw46KCD4qqrroqePXuWOs/QoUNj6NChpfarUaNGnHLKKfHLX/4yunbtWvYD+X8GDRpUpn4NGzaMc889N6666qpo1arVFs+D8BoAAAAAAADIstq1a8f1118fl19+ebzyyisxdOjQ+OCDD2LOnDlRVFQU69ati3r16kXjxo1jn332if322y9OOOGEaNu2bbnnrFmzZhQWFkZhYWG0bNkyOnXqFJ07d46jjz46GjVqlLVjq1OnTnqetm3bRufOnaNr165x5JFHRs2aNbM2z45IeA0AAAAAAABUijp16kSvXr2iV69eWRlv6tSpWRlnc9q0aROpVKrS52FDwmsAAHZQP4+I09dra56xlvNArag35ycZbdWWNKjcstgiAzufFP/pMD+jbW6+awQAAACwLRJeAwCwgzqr1B65/6gZBU1PqYJaKK+X9jg06RIAAAAAyJLcpAsAAAAAAAAAAOE1AAAAAAAAAIkTXgMAAAAAAACQOOE1AAAAAAAAAIkTXgMAAAAAAACQOOE1AAAAAAAAAIkTXgMAAAAAAACQuLykCwAAgGTcGBGfr9fWPiJ+l15bd9PymHvM7zN65M1rGfVf61Pp1VE2V789KHaZPz2jbUqDljHgENcIAAAAYFsjvAYAYAf1ZkSMXK+tW8Za6tA1sfxH72W01ZjWoXLLYoscMO3j6DRjUkbbmBauEQAAAMC2yGPDAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxAmvAQAAAAAAAEic8BoAAAAAAACAxOUlXQAAACSjcUS03EhbCfNyotqihhlN1ZYVVmpVbJmi2oUxM7/hBm0AAAAAbHuE1xUwf/78GD16dIwaNSpGjx4d06ZNi3nz5sXcuXMjJycn6tevHx07dozDDjss+vTpEy1brv8fR8uvf//+ccstt2zRPoMHD45zzjknazUAAGzbXiq1R7WfFESrSx+vgloorwt63ZR0CQAAAABkifC6Avr06RP/+c9/Nrl9xYoVMWPGjHjttdeif//+ccMNN8RNN90Uubme1g4AAAAAAABQkvA6S5o2bRq77bZb7LzzzlGnTp1Yvnx5fPHFFzFq1KhYu3ZtrF69Om655ZaYOnVqDBw4MKtz77ffftG1a9dS+3Xo0CGr8wIAAAAAAABki/C6Ag477LDo2bNnHHnkkbHLLrtstM+sWbPiiiuuiGeffTYiIh5//PE48cQTo1evXlmr47jjjov+/ftnbTwAAAAAAACAqia8roCrr7661D7NmjWLp59+OubMmRPDhw+PiIiHHnooq+E1AAAAAAAAwLbOy5erQE5OTpx//vnp9TFjxiRYDQAAAAAAAMDWR3hdRZo0aZJeXrJkSYKVAAAAAAAAAGx9hNdVZMKECenl1q1bJ1gJAAAAAAAAwNbHO6+rwIwZM2LAgAHp9Wy/73r27NkxePDg+Pzzz2PZsmVRv3792HnnnePggw+Otm3bZnUuAIDtxycRsXS9tvyI2Cu9ltpjbazaeUJGj5xVO0WN2W0quzjKqMPcqVFn9YqMtmU1dopJjdskUxAAAAAA5Sa8riQrVqyIKVOmxJAhQ+L222+POXPmRERE+/bt4/rrr8/qXA8++GA8+OCDG9124IEHRv/+/ePII4/Mylzjx4+P7t27l2vfESNGZKUGAIDsuDAiRq7X1i0i/u9/s6y7d1nM6npNRo8a0zpE8wfurPTqKJvfv3JvdJoxKaNtTIsOceq5rhEAAABAacqb+40fPz7LlXxHeJ0l7777bhx88MGb7fPjH/84nnjiiSgsLKyiqiLee++9OProo+NXv/pV/Pa3v63weEuXLo2RI9f/j7wAAAAAAADAtmZry/2887oK1KtXL5544okYMmRINGjQIGvjduzYMW655ZZ4++23Y/bs2bF69epYvHhxjBkzJm699dZo1KhRRESkUqn43e9+F3/84x+zNjcAAAAAAABANrnzOktatGgRl156aUR8FxYvWbIkJk2aFGPGjImFCxfG2WefHY888kg8+OCD0b59+wrP9/Of/zz69++/QXv16tVj3333jX333TcuvPDCOOmkk+LDDz+MiIjf/OY3cdppp0W7du0qPD8AAAAAAABANgmvs6Rt27Zx3333bdA+Y8aMuPHGG2PgwIExbNiw6NatWwwbNiz23nvvCs1Xlju4mzZtGv/+979jt912i/nz58eaNWvirrvu2midAAAAAAAAAEkSXleyFi1axGOPPRYFBQVxzz33xIIFC+Kss86KTz75JKpVq1bp8zdu3DguvfTSuO222yIiYsiQIRUaLz8/Pzp27JiN0gAAAAAAAIAEdevWrVz7jR8/PpYuXZrlaoTXVeb3v/99DBw4MBYvXhwTJkyIIUOGxAknnFAlc/fo0SMdXn/11VexevXqqFGjRrnG6tixY4wYMSKb5QEAAAAAAAAJKG/u17179xg5cmSWq4nIzfqIbFTt2rXjgAMOSK+/9957VTZ38+bNM9aLioqqbG4AAAAAAACAshBeV6H69eunl6syQF62bFnGep06dapsbgAAAAAAAICyEF5XoZkzZ6aXGzRoUGXzjh07Nr1cp06dKCgoqLK5AQAAAAAAAMpCeF1FioqKMp4Zv/vuu1fZ3AMHDkwvH3LIIVU2LwAAAAAAAEBZ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5vUvfvGLLFmyJD179syoUaPWed4111yTuXPnpra2Nl/+8pfbsEMAAAAAAAAAilC18PqBBx7IySefnFKplLPPPvtdzX322Wfzve99L6VSKbvttlt23nnnNuoSAAAAAAAAgCJULbz+n//5n8rxF7/4xXc190tf+lK+973vJUmuv/564TUAAOutvu+01HZ5vdnYoqXdMmXWtpXz8k7Ls3TAU81qSku7pfMqNRSr/tVpqV222j527pYpW2xbTEMAAAAAtFjVwuvx48cnSerr61NXV/eu5tbV1aW+vj7PPPNM7rvvvrZoDwCA95jzR/wsQ+qmNBt7qKE+Iy67sHK+8meL8vIe32xW07mhPv1WqaFY5//1ZxkyY7V93Lo+I0bZIwAAAID2pkO1FpoyZUpKpVIGDx7covkf/vCHUy6XM2XKlLUXAwAAAAAAANCuVC28nj9/fpKkV69eLZr/5rx58+a1VksAAAAAAAAAbCCqFl537do1SdLY2Nii+W/O69ixY6v1BAAAAAAAAMCGoWrh9RZbbJEkefLJJ1s0/4knnmh2HwAAAAAAAAA2HlULrz/ykY+kXC7n0UcfzbPPPvuu5k6ZMiWPPvpoSqVSdt555zbqEAAAAAAAAICiVC28Puyww5Ik5XI5p512WlauXLlO81asWJHTTjst5XI5STJ8+PA26xEAAAAAAACAYlQtvD766KPTv3//JMmdd96ZESNGZO7cue84Z+7cuRkxYkTuuuuulEql9O3bN8cee2w12gUAAAAAAACgiqoWXnfp0iUXX3xx5fzPf/5ztt1225x00kn57//+7zzwwAN58skn88ADD+T3v/99TjrppGy33Xa5+eabK3MuvvjidOvWrVotr5Np06bl8ssvz8iRI7PzzjunZ8+e6dSpU3r16pUPf/jDOemkk3LPPfe0+rqjR49OqVR6Vz/XXHNNq/cBAAAAAAAA0BpqqrnYiBEj8uMf/zj/9m//liRpbGzML3/5y/zyl79cY/2brwovlUo5//zz89nPfrZqva7Nww8/nJNPPjkPPPDAGq/Pmzcv8+bNy+OPP55f/OIX2X///XPllVdmwIABVe4UAAAAAAAAYMNX1fA6Sc4444x88IMfzFe/+tVMmzatElC/nbq6ulx66aU5/PDDq9ThupkyZcpbgusddtghgwYNSp8+fTJ//vzcf//9eemll5Ikd999d4YOHZq///3v2X777Vu1l9133z177LHHWuvq6+tbdV0AAAAAAACA1lL18DpJDj/88Dz77LO54YYb8te//jUTJ07MrFmz8tprr2XTTTdN3759s9dee2X48OEZMWJEOnbsWESb6+T9739/TjjhhIwcObLyTe83rVy5MldccUW+9rWvZfHixZkxY0aOOeaY3H///SmVSq3Ww+GHH57Ro0e32v0AAAAAAAAAqq2Q8DpJOnbsmKOOOipHHXVUUS2sl379+uWKK67IqFGj3jZc79ChQ7785S+nV69eGTFiRJJk4sSJuf3223PooYdWs10AAAAAAACADVqHohtor/bbb78cf/zx6/RU+Kc//elmr/X+y1/+0patAQAAAAAAALQ7wusq2WeffSrH06ZNK64RAAAAAAAAgA2Q8LpKVv3G9YoVKwrsBAAAAAAAAGDDU9g3r5OksbExL7zwQhYsWJCmpqZ1njds2LA27KptPP7445Xj973vfa1671mzZuXqq6/OM888k0WLFqVnz54ZMGBA9t1332y//fatuhYAAAAAAABAW6h6eL1w4cJccskl+d3vfpcpU6akXC6/q/mlUinLly9vo+7axosvvpi77rqrcn7wwQe36v3Hjh2bsWPHrvHaPvvsk9GjR7fampMnT87QoUNbNHfChAmt0gMAAAAAAACw/lqa+02ePLmVO3lDVcPrhx56KJ/4xCfy8ssvJ8m7Dq7bq2984xuVV4UPGDAgn/jEJ6q29vjx43PIIYfk29/+ds4777z1vl9jY2MmTpzYCp0BAAAAAAAARdrQcr+qhddz5szJoYcemjlz5vzf4jU1GThwYHr37p1OnTpVq5WquvLKK3PDDTdUzs8///x06dKlVe49aNCgfPazn80BBxyQ+vr69OzZM0uWLMk///nP3Hzzzbnkkksye/bslMvlfP/738+mm26ab33rW62yNgAAAAAAAEBrqlp4feGFF2bOnDkplUrZdNNN84Mf/CDHHntsunfvXq0Wqm7SpEk5+eSTK+ef+9zncvTRR7fKvb/2ta9l9OjRbxnv1KlTdt111+y666458cQTc8QRR+SBBx5Ikpx99tn5zGc+k4EDB7ZKDwAA7dkFt49Kj00am43NX9z8d9MOYzZJry+c2nxs8cb7+2t7dMG+o9JjyWr72NUeAQAAALRHVQuvb7nlliRvfLP65ptvzkc/+tFqLV2I559/Pp/4xCeyZMmSJMngwYPz85//vNXu36tXr7XW9O3bNzfffHN23HHHzJ07N01NTbnooovyn//5n63WBwBAe3X/1F3WWlO6p1NqB23cv7e2d/dvu0vRLQAAAADQSqoWXj///PMplUrZZ599NvrgeubMmfnYxz5W+bb39ttvn9tuuy2bb7551XvZYostctppp+V73/tekuTWW29dr/t17949gwYNao3WAAAAAAAAgALttddeLZo3efLkNDY2rr3wXapaeL1y5cokyY477litJQsxZ86cfOxjH8vUqVOTJP369cvf/va39OvXr7CeDjrooEp4/dxzz2XZsmXp3Llzi+41aNCgTJgwoTXbAwAAAAAAAArQ0txv6NChmThxYit3k3Ro9Tu+jfe9731Jktdff71aS1bdwoULc9hhh+WJJ55IkvTu3Tt33HFHtttuu0L7Wj04nzNnTkGdAAAAAAAAAKxZ1cLrQw45JOVyOZMmTarWklW1aNGiHH744ZX//zbbbLPcdttt+dCHPlRwZ2/0tqra2tqCOgEAAAAAAABYs6qF16eeemq6dOmSKVOm5I477qjWslWxZMmSHHHEERk/fnySZJNNNsktt9ySj3zkIwV39oaHH364clxbW5vNNtuswG4AAAAAAAAA3qpq4fUOO+yQiy66KOVyOaNGjaq8Wru9a2pqypFHHpm77rorSdKlS5fceOON2WeffQru7P/85je/qRwPGzasuEYAAAAAAAAA3kbVwuskOfnkk3PFFVdkwYIF2X333fONb3wj48ePz8KFC6vZRqtZsWJFjj766Nxyyy1Jkpqamlx33XU5+OCD23TdxsbGda69+OKL8/e//71yPnLkyLZoCQAAAAAAAGC91FRroY4dOzY7L5fLueSSS3LJJZe8q/uUSqUsX768NVtrkXK5nBNOOCHXX399kqRDhw65+uqrc8QRR7T4ntOmTct2221XOR83blz233//t9RdeOGFGT9+fE455ZQMHz48Xbt2fUvNq6++mvPOO6/Zf7677bZbPv/5z7e4PwCAjcn5Iy5Jfd+GZmNTZtXlrD9+rXK+8meNmXnAGc1qOs+qS+9VaijW+bdekvrZq+1jn7qcNdweAQAAALQ3VQuvy+VySqVS5f+WSqVm19qbyy67rNnruAcOHJj77rsv991331rn9u7dO+eee26L1y6Xy7njjjtyxx13pGvXrhk0aFAGDhyYzTffPEuXLs3UqVPzwAMPZNmyZZU5dXV1+dOf/pQOHar6sD0AwAarvm9DhtRNecea8k4rsmwtNRSrfnZDhsywRwAAAAAbg6qF18n/hdTtMaxe3SuvvNLs/Nlnn82zzz67TnPr6urWK7xe1ZIlSzJp0qRMmjRpjddLpVKOPPLIjB07Nr17926VNQEAAAAAAABaW9XC65UrV1ZrqY3eN7/5zQwbNiwTJkzIxIkT09DQkNmzZ2fu3Lnp0KFDevbsmfr6+uy9994ZOXJkdtxxx6JbBgAAAAAAAHhHVX3yemMyevTojB49ulXvue22267TU+m1tbU58MADc+CBB7bq+gAAAAAAAABF8QFkAAAAAAAAAAonvAYAAAAAAACgcIW/NnzhwoWZPn165s2bl+XLl2fYsGFFtwQAAAAAAABAlRUSXr/22msZO3Zsrr322kyePLnynedSqZTly5c3q33llVdywQUXJEkGDx6cUaNGVb1fAAAAAAAAANpW1cPre+65J8ccc0xmzpyZJJXg+u1sueWWueuuu/Lwww+nR48e+dznPpfOnTtXo1UAAAAAAAAAqqSq37y+7777cthhh2XmzJmV0PqDH/xg+vXr947zTj755JTL5cyfPz933HFHNVoFAAAAAAAAoIqqFl4vWbIkn//857N06dKUy+Uce+yxeemll/LEE09kxIgR7zh3xIgR6dDhjVb/9re/VaNdAAAAAAAAAKqoauH1r371q8yYMSOlUimnnHJKfvOb36z1ies39erVK/X19UmShx56qC3bBAAAAAAAAKAAVQuv//znPydJNt100/zoRz961/M/+MEPplwu55///GdrtwYAAAAAAABAwaoWXj/++OMplUoZNmxYunfv/q7n9+rVK0kyf/78Vu4MAAAAAAAAgKJVLbyeM2dOkqR///4tml8ul5MkK1eubLWeAAAAAAAAANgwVC28rq2tTZIsXry4RfOnT5+eJOndu3er9QQAAAAAAADAhqFq4XW/fv1SLpfzxBNPvOu5TU1NmTBhQkqlUrbbbrs26A4AAAAAAACAIlUtvN53332TJI888kimTp36ruZeeeWVWbBgQZJk//33b+3WAAAAAAAAAChY1cLrz372s0ne+Hb1aaedts7frp48eXLOPPPMJEmpVMoXvvCFNusRAAAAAAAAgGLUVGuhAw88MPvtt1/uueee3HHHHTniiCMyduzYbLPNNmusb2pqyuWXX55vf/vbWbhwYUqlUj7zmc9kp512qlbLAABsxKbMqlvrWOnJjunUd2Czsc5rmEdxpvRZwz6uYQwAAACADV/Vwuskufrqq7PHHntk1qxZufXWW7Pddttl6NChmT17dqXmjDPOyLPPPpt77rknjY2NKZfLSZLtttsuY8eOrWa7AABsxM7649fWWtPh9O7pd9qFVeiGljpr+Nr3EQAAAID2oarh9TbbbJM777wzRx55ZJ5++umsWLEi48ePT/LGK8GT5D/+4z+SpBJaJ8mHPvSh3HTTTenRo0c12wUAAAAAAACgSqr2zes3ffCDH8z//u//5txzz82WW26Zcrm8xp8k6dGjR0aPHp2JEydmu+22q3arAAAAAAAAAFRJVZ+8flO3bt1y9tln56yzzsqkSZMyYcKEzJgxIwsWLEhtbW369u2bPffcM/vss086d+5cRIsAAAAAAAAAVFEh4XVl8Zqa7LXXXtlrr72KbAMAAAAAAACAglX9teEAAAAAAAAAsDrhNQAAAAAAAACFE14DAAAAAAAAULiqffN6zJgxrXavc845p9XuBQDAe9PeAx9Jj00am43NX9w990/dpXJe3q8piwbf16ymw+Lu6bZKDcXae9oj6bFktX3s2j33b7tLMQ0BAAAA0GJVC69Hjx6dUqnUKvcSXgMAsL7OPOTqDKmb0mzsoYb6jLhsl8r5ynMWZ/YeP2xW07mhPt1WqaFYZ/796gyZsdo+bl2fEcJrAAAAgHanauF1kpTL5XdVXyqV3jKntQJwAAAAAAAAADYcVQuvv/vd765T3cqVK7NgwYI8/vjjue+++9LU1JSuXbvmq1/9ampra9u4SwAAAAAAAACKsMGF16uaOXNmvv71r+cPf/hDbrvtttx6663Zeuut26A7AAAAAAAAAIrUoegG3km/fv3y+9//PiNHjszjjz+eo446KitWrCi6LQAAAAAAAABa2QYdXr/p4osvziabbJIJEybkmmuuKbodAAAAAAAAAFpZuwive/bsmWHDhqVcLufqq68uuh0AAAAAAAAAWlm7CK+T5H3ve1+S5Kmnniq4EwAAAAAAAABaW7sJrxcuXJgkmTNnTsGdAAAAAAAAANDa2kV4vWTJkowbNy5J0rt374K7AQAAAAAAAKC1bfDhdVNTU0466aS88sorKZVK2XPPPYtuCQAAAAAAAIBWVlOthe699951rl2+fHnmzJmTRx55JL/73e/S0NBQuXbiiSe2RXsAAAAAAAAAFKhq4fX++++fUqnUornlcjlJcsIJJ+Swww5rzbYAAAAAAAAA2ABU9bXh5XK5RT+bbrppfvzjH2fs2LHVbBcAAAAAAACAKqnak9fDhg1b5yevO3XqlE033TTbbbdd9thjj3ziE59It27d2rhDAAAAAAAAAIpStfD67rvvrtZSAAAAAAAAALQzVX1tOAAAAAAAAACsifAaAAAAAAAAgMIJrwEAAAAAAAAonPAaAAAAAAAAgMLVVGuhq666qirrHHvssVVZBwCA9u2sP56e2i6vNxtbtLRbs/MOp9dmy+O+02ystFoNxTrrsNNTu2y1fexsjwAAAADao6qF18cff3xKpVKbrlEqlYTXAACskymztl1rTenJmnR54YNt3wwtNmWLbYtuAQAAAIBWUrXwOknK5fJbxkql0rsaBwAAAAAAAGDjU7Xw+rjjjkuSNDU15frrr09TU1PK5XI6d+6cQYMG5X3ve19qa2uzaNGivPjii5k8eXKWLl2aUqmUzp075zOf+UxqaqqatQMAAAAAAABQJVVLg6+44orMnDkzn/70p7Ns2bL0798/Y8aMyVFHHZXa2tq31C9atCj//d//ndGjR2f69Ol59tln8z//8z/p169ftVoGAAAAAAAAoEo6VGuh5cuX5zOf+UwefPDB7Lbbbnn00UfzxS9+cY3BdZLU1tbmy1/+ch555JEMGTIkDz74YI488sgsX768Wi0DAAAAAAAAUCVVC6+vvfbaTJgwITU1Nfn973+fXr16rdO83r1757rrrkvHjh3zj3/8I1dddVUbdwoAAAAAAABAtVUtvL766quTJMOGDct22233ruZuv/322W+//VIul3Pttde2RXsAAAAAAAAAFKhq4fXTTz+dUqmU7bffvkXz3wy8p0yZ0pptAQAAAAAAALABqKnWQnPmzEmSzJ8/v0XzFyxY0Ow+AACwPi4/dkwG9Z/abGzy9IH5ylXnVM5X/H5hXtrnuGY1nacPzJar1FCsy28Yk0Evr7aPWw3MV460RwAAAADtTdXC6y222CIvvfRSxo0bl6ampnTq1Gmd5zY1NWXcuHFJkj59+rRViwAAvIf0rl2Qfps3/4eR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vjzPPfdcDjnkkIwfPz6DBg1qlbUBAAAAAAAAWpPwej29//3vzwknnJCRI0emf//+za6tXLkyV1xxRb72ta9l8eLFmTFjRo455pjcf//9KZVK67VuU1NTRowYUQmud95559x4442pq6ur1EybNi2f+tSn8uijj2bhwoU58sgj88QTT6SmxrYDAAAAAAAAGxbfvG6hfv365YorrsjTTz+db33rW28JrpOkQ4cO+fKXv5xrrrmmMjZx4sTcfvvt673+5ZdfnqlTpyZJevbsmVtvvbVZcJ0k2267bW699db07NkzSfLMM8/k17/+9XqvDQAAAAAAANDahNcttN9+++X4449Px44d11r76U9/OnvssUfl/C9/+ct6r3/ppZdWjs8888z069dvjXX9+vXLGWecscZ5AAAAAAAAABsK4XWV7LPPPpXjadOmrde9/vnPf+bJJ5+snB9//PHvWL/q9ccee6zyxDYAAAAAAADAhkJ4XSWrfuN6xYoV63Wvu+66q3K8ww47ZOutt37H+v79++cDH/hA5XzcuHHrtT4AAAAAAABAaxNeV8njjz9eOX7f+963Xvd66qmnKsdDhgxZpzmr1q06HwAAAAAAAGBDUFN0A+8FL774YrOnpQ8++OD1ut+UKVMqx3V1des0Z8CAAZXjp59+usVrT548OUOHDm3R3AkTJrR4XQAAAAAAAKB1tTT3mzx5cit38oZCw+tHHnkk9913X1588cXMmzcvK1asyK9+9asiW2oT3/jGNyqvCh8wYEA+8YlPrNf95syZUznu27fvOs3ZaqutKsdz585t8dqNjY2ZOHFii+cDAAAAAAAAG4YNLfcrJLy+/vrrM3r06Gavry6XyymVSm8Jr2fNmpUhQ4akqakpH/3oR/PHP/6x2u2ulyuvvDI33HBD5fz8889Ply5d1uuejY2NleNu3bqt05xV61adDwAAbNhWLJ6fJJk5c2a22WabYpuBJK+88kpWrFiRjh07Zssttyy6HajYaqutMmnSpKLbAAAA1kPVw+uTTz45l19+eZI3Auu16du3bw466KBcc801uemmmzJ9+vT079+/rdtsFZMmTcrJJ59cOf/c5z6Xo48+er3vu2TJkspx586d12nOqoH566+/vt49AAAAVfL//nvTypUrM3369IKbgf/jzyQAAACtrarh9Xe+85384he/qJwfeuihOfDAA/PXv/4148aNe9t5xx13XK655pqUy+Xccsst+cpXvlKNdtfL888/n0984hOVoHnw4MH5+c9/3ir37tq1a+V42bJl6zRn6dKlleN1fVobAADYgJQ6pGNtz6K7gKxo/H+fsvJnkg3EikXzkvLKotsAAABaQdXC62effTY//vGPkyQ9evTIDTfckAMOOCBJ8sILL7xjeH3AAQeke/fuWbRoUe6+++4NPryeOXNmPvaxj+Xll19Okmy//fa57bbbsvnmm7fK/bt37145XtenqFetW3V+S9YeNGhQi+cDAAAt07G2Z7Y57cqi24A0/PiIpLzSn0k2GC9detz//aMKAADgXdlrr71aNG/y5Mlt8qniqoXXv/jFL7J8+fKUSqX88pe/rATX66JDhw7ZeeedM378+DzxxBNt2OX6mzNnTj72sY9l6tSpSZJ+/frlb3/7W/r169dqa/Tu3btyPGvWrHWa82aQniS9evVq8dqDBg3KhAkTWjwfAAAAAAAA2DC0NPcbOnRoJk6c2MrdJB1a/Y5v484770ySDBw4MCNGjHjX8+vq6pIkL730Uqv21ZoWLlyYww47rBKw9+7dO3fccUe22267Vl2nvr6+ctzQ0LBOc1544YXK8Y477tiq/QAAAAAAAACsr6o9ed3Q0JBSqZQ999yzRfM322yzJMlrr73Wmm21mkWLFuXwww/PpEmTkrzR72233ZYPfehDrb7WBz/4wcrxww8/vE5zHnrooTXOBwB4r/rzY8Py0AvN/1Hf9PlbNjsvXd853Zd+vNlYzWo1FOvPHxyWh7ZebR83t0cAAAAA7VHVwutFixYlafn3lt98Z3rXrl1brafWsmTJkhxxxBEZP358kmSTTTbJLbfcko985CNtst6qr1yfMmVKZs6c+Y6vJZ8xY0aeffbZNc4HAHivumL8J9da0+GybunV4StV6IaWumK3te8jAAAAAO1D1V4b/uZ3ml955ZUWzX/66aeTJFtssUWr9dQampqacuSRR+auu+5KknTp0iU33nhj9tlnnzZb8wMf+EB22mmnyvmVV175jvWrXh88eHAGDhzYZr0BAAAAAAAAtETVwuuBAwemXC7nH//4x7ueO3369Dz88MMplUrZeeed26C7llmxYkWOPvro3HLLLUmSmpqaXHfddTn44IPbfO1TTz21cnzBBRdk1qxZa6x7+eWXc8EFF1TOTzvttDbvDQAAAAAAAODdqlp4fcghhyRJZs6cmRtuuOFdzf3Od76TFStWJEk+9rGPtXpvLVEul3PCCSfk+uuvT5J06NAhV199dY444ogW33PatGkplUqVn7vvvvtta0888cTKE9Rz5szJ8OHD88ILLzSraWhoyPDhwzN37twkyQ477JAvf/nLLe4PAAAAAAAAoK1U7ZvXxx9/fH7wgx9k6dKl+epXv5oPf/jD+cAHPrDWeWPGjMmVV16ZUqmUnj17ZtSoUVXodu0uu+yy/OY3v6mcDxw4MPfdd1/uu+++tc7t3bt3zj333PVav1OnTrnhhhvy0Y9+NI2NjXn44Yfz/ve/PwcddFC22WabvPjii7nrrrvS1NSUJNl0001zww03pKamalsOAAAAAAAAsM6qlmRus802OfPMM3PeeefllVdeye67755vfetb+dznPpdyudysds6cObn99tvzH//xH5k0aVJlfMyYMamtra1Wy+9o9W93P/vss3n22WfXaW5dXd16h9dJsvPOO+f222/PMccck+effz5NTU3561//+pa67bffPtdee20GDRq03msCAAAAAAAAtIWqPoZ77rnn5sknn8wf//jHvPbaa/nOd76T73znO81qevfunfnz51fO3wy2jzvuuGbfeeYNQ4cOzWOPPZarrroq1113XZ555pnMmTMnvXv3zg477JCjjjoqxx57bLp37150qwAAAAAAAABvq6rhdalUynXXXZfRo0fn/PPPr3zH+s1vPCfJvHnzms3p2LFjvvOd7+S73/1uNVtdq9GjR2f06NGtes9tt932LU+hr4vu3bvn1FNPFe4DAAAAAAAA7VbVP4DcoUOHjBkzJl/+8pfzH//xH7n11lvzzDPPvKVuwIAB+fjHP54zzjgj22+/fbXbBABgI/fFfW5M/x7NPwUzff6WuWL8JyvnK095PXM/fnmzmpr5W2azVWoo1hcn3Zj+C1bbx823zBW72SMAAACA9qbq4fWb6urqctFFF+Wiiy7K3LlzM3PmzCxYsCC1tbXp27dvttpqq6JaAwDgPeATH743Q+qmNBt7qKG+WXhd/syyvLbHjc1qOjfUC683IJ946t4MmbHaPm5dL7wGAAAAaIcKC69X1atXr/Tq1avoNgAAAAAAAAAoSIeiGwAAAAAAAACAqoXXn/3sZ3PTTTdl+fLl1VoSAAAAAAAA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hAkTctFFF+WGG25IuVxOqVTKGWeckd69e1erZQAANmLnj/hZhtRNaTb2UEN9Rlx2YeV85c8W5eU9vtmspnNDffqtUkOxzv/rzzJkxmr7uHV9RoyyRwAAAADtTdXC6yS5+OKL8/jjj+f+++/PSy+9lJEjR6ampiZdu3at1HzkIx/Jc889l4ULFyZJyuVykuSQQw7Jd7/73Wq2CwAAAAAAAECVVO2b10nSuXPn3H777Rk1alTK5XLK5XKamprS2NiYUqmUJHnkkUeyYMGCyvUkOe6443LjjTdWagAAAAAAAADYuFQ1vE7e+G71lVdemXvuuSef/OQnU1tbWwmqVw2su3TpkuHDh+fuu+/OFVdckc6dO1e7VQAAAAAAAACqpKqvDV/Vvvvum3333TcrVqzIY489lhkzZmTBggWpra1N3759s8suuzR7nTgAAAAAAAAAG6/Cwus3dezYMbvuumt23XXXdapvbGxM9+7d27grAAAAAAAAAKqp6q8Nb6kFCxbk3HPPTV1dXdGtAAAAAAAAANDKCn/yem3mzp2bn/70p/nP//zPvPbaa0W3AwAAAAAAAEAb2GDD61deeSU/+clPMnbs2CxevDjlcjlJUiqVCu4MAAAAAAAAgNbWpq8Nf+ihh3LyySdnp512So8ePdK1a9cMGDAgRx11VO688841zlmwYEG+9a1vZbvttstPf/rTLFq0qHKttrY2Z5xxRlu2DAAAAAAAAEAB2uzJ6zPPPDMXXXRRklSemk6Sl156KTfccENuuOGGfOMb38gFF1xQufaHP/whp556aubOnZtyuVx5yrq2tjannXZazjjjjPTp06etWgYAAAAAAACgIG0SXn/ve9/LT3/60yRv/5rvcrmciy66KP369csZZ5yR73znOzn//PObhdbdu3fP6aefnn/9139Nr1692qJVAAAAAAAAADYArR5ez5gxI+edd16z0Hr//ffPrrvumm7dumXGjBm588478+KLL6ZcLudHP/pRevXqlR/84AeVOZtsskm+/vWv54wzzkiPHj1au0UAAAAAAAAANjCtHl5feeWVaWpqSqlUyvve97786U9/yi677NKsZsWKFTnvvPNy7rnnZs6cOTnppJOSvPE09qGHHppf/vKX6d+/f2u3BgAAAAAAAMAGqkNr3/Dvf/975fi///u/3xJcJ0nHjh3z3e9+N5/73OdS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/fnzyAZixaJ5SXll0W1Ac/6OZAPh78gNk/C6HerevXvleF2fol61btX5LVl70KBBLZ4PAAAA0BY61vbMNqddWXQbvMc1/PiIpLzSn0c2GC9detz//aMK2ED4O5INhb8j37DXXnu1aN7kyZPb5FPFwut2qHfv3pXjWbNmrdOcVb8j0atXrxavPWjQoEyYMKHF8wEAAAAAAIANQ0tzv6FDh2bixImt3E3SodXvSJurr6+vHDc0NKzTnBdeeKFyvOOOO7Z6TwAAAAAAAADrQ3jdDn3wgx+sHD/88MPrNOehhx5a43wAAAAAAACADYHwuh064IADKsdTpkzJzJkz37F+xowZefbZZ9c4HwAAAAAAAGBDILxuhz7wgQ9kp512qpxfeeWV71i/6vXBgwdn4MCBbdYbAAAAAAAAQEsIr9upU089tXJ8wQUXZNasWWuse/nll3PBBRdUzk877bQ27w0AAAAAAADg3RJeb0CmTZuWUqlU+bn77rvftvbEE0+sPEE9Z86cDB8+PC+88EKzmoaGhgwfPjxz585Nkuywww758pe/3Gb9AwAAAAAAALRUTdENtHeHH354ZsyY0Wzs5ZdfrhxPmjQpu+yyy1vm3XLLLdl6661bvG6nTp1yww035KMf/WgaGxvz8MMP5/3vf38OOuigbLPNNnnxxRdz1113pampKUmy6aab5oYbbkhNjS0HAAAAAAAANjySzPX05JNPpqGh4W2vL1q0KI8++uhbxpctW7bea++88865/fbbc8wxx+T5559PU1NT/vrXv76lbvvtt8+1116bQYMGrfeaAAAAAAAAAG1BeN3ODR06NI899liuuuqqXHfddXnmmWcyZ86c9O7dOzvssEOOOuqoHHvssenevXvRrQIAAAAAAAC8LeH1epo2bVqr3WvbbbdNuVx+1/O6d++eU089Naeeemqr9QIAAAAAAABQTR2KbgAAAAAAAAAAhNcAAAAAAAAAFE54DQAAAAAAAEDhhNcAAAAAAAAAFK6m6AYAAKAIIy67cK01HQ/aPNucdmUVuqGlRoxa+z4CAAAA0D548hoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwtUU3QAAABShd+38dOq4vNlY04qazFnUo3Je7rMyyzeb3aymtKImHVepoVi9F81PpxWr7WPHmsyp7VFMQwAAAAC0mPAaAID3pMuP/V6G1E1pNvZQQ31GXHZh5Xzl71/L9D2Ob1bTuaE+/VapoViX//F7GTJjtX3cuj4jRtkjAAAAgPbGa8MBAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKJzwGgAAAAAAAIDCCa8BAAAAAAAAKFxN0Q0AAEARfnP/EfnL43Objb36Wq9m56XLuqbHK59rNtZxtRqK9ZuPHJG/1K+2j93tEQAAAEB7JLwGAOA96aZH91trTYfru2Szvp+uQje01E07rX0fAQAAAGgfvDYcAAAAAAAAgMIJrwEAAAAAAAAonPAaAAAAAAAAgMIJrwEAAAAAAAAonPAaAAAAAAAAgMIJrwEAAAAAAAAonPAaAAAAAAAAgMLVFN0AAAAU4cxDrsp2faY3G3t+dv9ccPuxlfOV5yzOq4ee36ymZnb/9FylhmKdee9V2W7uavvYq38uGGaPAAAAANob4TUAAO9Jew98NEPqpjQbe6ihvtl5eb+mLP7w+GZjnVeroVh7NzyaITNW28et7REAAABAe+S14QAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOFqim4AAACKMGfR5pm5oPdbxpqZXUrH1Wo6rl5DoeZssnlmdu/9ljEAAAAA2h/hNQAA70lfueqctdZ0/Nxm2ea0K6vQDS31lSPXvo8AAAAAtA9eGw4AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4WqKbgAAAIpQ33daaru83mxs0dJumTJr28p5eaflWTrgqWY1paXd0nmVGopV/+q01C5bbR87d8uULbYtpiEAAAAAWkx4DQDAe9L5I36WIXVTmo091FCfEZddWDlf+bNFeXmPbzar6dxQn36r1FCs8//6swyZsdo+bl2fEaPsEQAAAEB747XhAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABSupugGAACgCBfcPio9NmlsNjZ/cfdm5x3GbJJeXzi1+dhqNRTrgn1HpceS1faxqz0CAAAAaI+E1wAAvCfdP3WXtdaU7umU2kEfbftmaLH7t92l6BYAAAAAaCVeGw4AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4YTXAAAAAAAAABROeA0AAAAAAABA4WqKbgAAAIpw/ohLUt+3odnYlFl1OeuPX6ucr/xZY2YecEazms6z6tJ7lRqKdf6tl6R+9mr72KcuZw23RwAAAADtjfAaAID3pPq+DRlSN+Uda8o7rciytdRQrPrZDRkywx4BAAAAbAy8NhwAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvAQAAAAAAACic8BoAAAAAAACAwgmvW8GyZcty9dVX5/DDD09dXV26du2afv36Ze+9984FF1yQ2bNnt+p6o0ePTqlUelc/11xzTav2AAAAAAAAANCaaopuoL17+umnc/TRR+fhhx9uNv7yyy/n5ZdfzoQJE/KTn/wkV1xxRQ4//PCCugQAAAAAAADYsAmv18NLL72Ugw46KDNmzEiSlEqlDBs2LO9///vzyiuv5G9/+1tef/31vPLKK/nUpz6VW2+9NQcddFCr9rD77rtnjz32WGtdfX19q64LAAAAAAAA0JqE1+vhmGOOqQTXdXV1uemmm/LhD3+4cn327Nn5/Oc/nzvvvDNNTU056qijMnXq1PTo0aPVejj88MMzevToVrsfAAAAAAAAQBF887qFbrnlltx7771Jks6dO+fPf/5zs+A6Sfr06ZMbb7wx22+/fZJk7ty5+fGPf1z1XgEAAAAAAAA2dJ68bqFLL720cnzcccdl8ODBa6yrra3NmDFjMnLkyCTJz3/+84wZMyY1Nf6jBwAo0pRZdWsdKz3ZMZ36Dmw21nkN8yjOlD5r2Mc1jAEAAACw4ZOgtkBjY2PuvPPOyvkXv/jFd6z/zGc+k1NOOSWvvfZa5s6dm3vvvTcHHnhgW7cJAMA7OOuPX1trTYfTu6ffaRdWoRta6qzha99HAAAAANoHrw1vgfvvvz9Lly5N8saT1bvvvvs71nfp0iV77bVX5fyuu+5q0/4AAAAAAAAA2htPXrfAU089VTkePHjwOr0CfMiQIbnjjjveMn99zZo1K1dffXWeeeaZLFq0KD179syAAQOy7777Vr61DQAAAAAAALChE163wJQpUyrHdXXr9j29AQMGVI6ffvrpVutl7NixGTt27Bqv7bPPPhk9enQOPvjgVltv8uTJGTp0aIvmTpgwodX6AAAAAAAAANZPS3O/yZMnt3InbxBet8CcOXMqx3379l2nOVtttVXleO7cua3e05qMHz8+hxxySL797W/nvPPOa5V7NjY2ZuLEia1yLwAAAAAAAKA4G1ru55vXLdDY2Fg57tat2zrNWbVu1fktNWjQoJx77rm59957M2vWrCxbtiwLFy7MQw89lDFjxqRPnz5JknK5nO9///v50Y9+tN5rAgAAAAAAALQV4XULLFmypHLcuXPndZrTpUuXyvHrr7++Xut/7Wtfy+OPP55zzjkn++67b7bccst06tQpm266aXbdddecffbZmTx5cvbYY4/KnLPPPjtTp05dr3UBAAAAAAAA2orwugW6du1aOV62bNk6zVm6dGnleF2f1n47vXr1WmtN3759c/PNN1dqm5qactFFF63XugAAAAAAAABtxTevW6B79+6V43V9inrVulXnt6Utttgip512Wr73ve8lSW699db1vmf37t0zaNCg9b4PAEDR9h74SHps0vxzLvMXd8/9U3epnJf3a8qiwfc1q+mwuHu6rVJDsfae9kh6LFltH7t2z/3b7lJMQwAAAADtyF577dWieZMnT26VTyWvTnjdAr17964cz5o1a53mvPzyy5XjdXlyurUcdNBBlfD6ueeey7Jly9b5VedrMmjQoEyYMKG12gMAKMyZh1ydIXVTmo091FCfEZftUjlfec7izN7jh81qOjfUp9v/396dR2lV3WnDvguZFFQGQcEBxQFUNGoUhwQVSKuNxDnGAQG1Y1qMbdKJsc0bbUybpLvF5DVvVCIxGtF2SKKiRuOExAEQEKKIgooCDsgoozLX94dfnqawgLIGTiHXtVattfd59jn799Qpjw9119lnrTEU6wfPDc0hH6xzHtt3ymnCawAAAICNqm7ud+SRR2b06NG1XI1lw6ulU6dOpfb06dOrtM+MGTNK7c6dO9d6TevTrl27Cv158+ZtsrkBAAAAAAAAqkp4XQ377rtvqT1x4sSsWrVqo/uMHz++0v3r2tKlSyv0mzVrtsnmBgAAAAAAAKgq4XU1HHXUUWnSpEmST8PhcePGbXD88uXLK9w236NHjzqtb20TJkwotZs1a5bttttuk80NAAAAAAAAUFXC62po3rx5evbsWerffvvtGxx///33Z/HixUmSli1b5uijj67L8ipYu7ZNOS8AAAAAAADA5yG8rqYBAwaU2rfddlsmTZpU6biPP/44V199dan/7W9/Ow0bNqz2vEuWLKny2BtuuCHPPfdcqd+nT59qzwsAAAAAAABQl4TX1XTiiSemW7duSZIVK1akd+/emThxYoUx8+bNyymnnJK33norSdKqVatcccUVlR5v2rRpKSsrK32NGDGi0nHXX399jjvuuDzwwANZtmxZpWPmzJmTyy67LN/97ndL2w499NCcddZZn/NdAgAAAAAAAGwa1b8FmPzP//xPunbtmpkzZ2batGk56KCDcswxx6Rjx46ZM2dOnnrqqXz88cdJkoYNG+a+++5LixYtajRneXl5nnzyyTz55JNp2rRpunTpkj333DPbb799li9fnqlTp2bMmDFZsWJFaZ8OHTrkwQcfTIMG/lYBAAAAAAAAqJ+E1zWwyy67ZPjw4Tn77LPzt7/9LWvWrMkzzzyTZ555psK4Nm3a5LbbbqvwnOzasGzZsowbNy7j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AwAAAAAAAFA44TUAAAAAAAAAhRNeAwAAAAAAAFA44TUAAAAAAAAAhRNeAwAAAAAAAFC4hkUXAAAARTj/K8Oyc4vZFba9v6Btbnvh5FJ/zcWfZP6JQyqMabigbbZbawzFOn/csOy8cJ3zuH3b3HaocwQAAACwuRFeAwCwRfr6gc/mkA5TKmwbP71ThfC6/IwVWdx1WIUxjad3El7XI19//dkc8sE657F9J+E1AAAAwGbIsuEAAAAAAAAAFE54DQAAAAAAAEDhLBsOQK048sgjM3r06ArbjjjiiIwaNaqgigA2nZlDv58V6yxd3bh9p7Q77/qCKgLYtFwHgS1ZZdfA1R8vLKgagE3P7wWB2uTOawAAAAAAAAAKJ7wGAAAAAAAAoHDCawAAAAAAAAAKJ7wGAAAAAAAAoHDC61qwYsWKDB06NL169UqHDh3StGnTtGvXLkcddVQGDRqUuXPn1tncS5Ysyc0335zu3btnl112SZMmTbLLLrukR48eGTx4cJYsWVJncwMAAAAAAADUloZFF7C5mzx5cs4555xMmDChwvYPP/wwH374YUaNGpXrrrsut912W3r16lWrc48aNSrnnntu3nnnnQrb33///bz//vt55plnct111+V//ud/cvjhh9fq3AAAAAAAAAC1SXhdA++991569uyZDz74IElSVlaWo48+OnvttVdmz56dp556Kp988klmz56dU045JY899lh69uxZK3O/8sorOf7447N48eIkSaNGjdKjR4/ssssueffddzN8+PCsWrUqb7/9do477ri88MIL6dKlS63MDQAAAAAAAFDbhNc1cO6555aC6w4dOuShhx7KgQceWHp97ty5Oeuss/L0009n5cqVOfPMMzN16tS0aNGiRvOuXLkyp512Wim4/tKXvpRhw4alQ4cOpTHTpk3LKaeckpdffjmLFi3K6aefnkmTJqVhQ6ccAAAAAAAAqH8887qaHn300Tz77LNJksaNG+fhhx+uEFwnyQ477JBhw4alY8eOSZL58+fnv//7v2s895AhQzJ16tQkScuWLfPYY49VCK6TZPfdd89jjz2Wli1bJkneeOON/O53v6vx3AAAAAAAAAB1QXhdTTfeeGOp3a9fvxxwwAGVjmvWrFl+8pOflPq/+c1vsmrVqlqb+wc/+EHatWtX6bh27drl+9//fqX7AQAAAAAAANQnwutqWLJkSZ5++ulS//zzz9/g+DPOOCPbbrttkk/vvv77HdvV8dZbb+W1114r9fv377/B8Wu//sorr5Tu2AYAAAAAAACoT4TX1TBy5MgsX748yad3Vh922GEbHN+kSZMcccQRpf7w4cOrPffa++6zzz5p3779BsfvvPPO2XvvvUv9Z555ptpzAwAAAAAAANQV4XU1vP7666X2AQcckIYNG250n0MOOaTS/Wsy99rH3BRzAwAAAAAAANSVjaeufMaUKVNK7Q4dOlRpn912263Unjx58mYx99tvv/2ZbWPGjCktgf55denSpVr7fVHMnj07SbL644WZOfT7GxkNdW/1xwuTfPqzeeSRR9b4eK+++mql22rj2HzxuUZShP5PTE+zJhW3LV0+PTNnfT8pX/PphgtXJc0rjln59zFrb5sz/TPHXzlnup/nTaD/nOlpts62pV+07/3///PoGkm9UcnPpOsghXKdpGCVXQOzZpWfR+qF2v79D1Smqr8X9Psf6hvXyE9V9t9wVXz88cef2VZZtvh5Ca+rYd68eaX2jjvuWKV9dtppp1J7/vz5m8Xclf3QrVmzJkuWLKnyMdY2evToau33hbNmVVZ8MGXj42ATWblyZZ3997lkyRL/7fP5uEayCU38oLKty5Ks9TNYyWf38izLimz857R85TI/z5vAxMo2rlyWfBG/966R1Dcb+Zl0HWSTc52knvHzSH1Sl7//gcps8PeC/p9NPeMaWXsqyxY/L8uGV8Pa4e3WW29dpX3WHlfd8LfouQEAAAAAAADqivC6GpYtW1ZqN27cuEr7NGnyv2tSfvLJJ5vl3AAAAAAAAAB1RXhdDU2bNi21V6xYUaV9li9fXmpX9Y7p+jY3AAAAAAAAQF3xzOtqaN68eald1TuZ1x639v71ee6dd94577//fpL/XaO+QYMGFQL0z6NLly7V2g8AAAAAAACofa+++mq19lu2bFnWrFmTJNlmm22SfJot1pTwuhpat25das+aNatK+3z44YeldqtWrTaLuSdPnlz1wgAAAAAAAABqwLLh1dCpU6dSe/r06VXaZ8aMGaV2586dN8u5AQAAAAAAAOqK8Loa9t1331J74sSJWbVq1Ub3GT9+fKX712TuCRMmVGmf2pobAAAAAAAAoK4Ir6vhqKOOSpMmTZIkS5cuzbhx4zY4fvny5Rk9enSp36NHj2rP3b1791J7ypQpmTlz5gbHf/DBB3nzzTcr3R8AAAAAAACgvhBeV0Pz5s3Ts2fPUv/222/f4Pj7778/ixcvTpK0bNkyRx99dLXn3nvvvbPffvuV+r///e83OH7t1w844IDsueee1Z4bAAAAAAAAoK4Ir6tpwIABpfZtt92WSZMmVTru448/ztVXX13qf/vb307Dhg1rbe5BgwZl1qxZlY778MMPM2jQoFL/kksuqdG8AAAAAAAAAHVFeF1NJ554Yrp165YkWbFiRXr37p2JEydWGDNv3ryccsopeeutt5IkrVq1yhVXXFHp8aZNm5aysrLS14gRI9Y790UXXVS6g3revHn5x3/8x8yYMaPCmOnTp+cf//EfM3/+/CTJPvvskwsvvLBa7xUAAAAAAACgrpWVl5eXF13E5uq9995L165dS8+dbtCgQY455ph07Ngxc+bMyVNPPZWPP/44SdKwYcP85S9/qbDc+NqmTZuWPfbYo9R/5plncuyxx6537pdffjlf/epXs2TJkiRJo0aN0rNnz+yyyy559913M3z48KxcuTJJsu2222bkyJHp0qVLbbxtAAAAAAAAgFrnzusa2GWXXTJ8+PAcdNBBSZI1a9bkmWeeya233pqHHnqoFFy3adMmDz744HqD6+r40pe+lCeeeKIUeK9cuTJ/+ctf8tvf/jaPP/54Kbju2LFjnnjiCcE1UKnVq1fnlVdeya233pqLL744hx56aBo3blxaBWJDf0RTEx9++GEefvjhXH311endu3cOOuig7LzzzmnSpEmaN2+eDh065Otf/3p+9atfZd68eXVSA0BR18CNOe200yqsyFNUHcAXX1HXwYEDB1a4zlXl684776yTWoAtV336LPjss8/m0ksvzZe+9KW0bds2TZs2za677pquXbtmwIAB+cMf/pCPPvpok9UDbBmKuA7efvvtn/tzYFVXrAW+OGr28GXSuXPnvPjii7nnnnty9913Z9KkSZk1a1ZatGiRjh075tRTT80FF1yQHXbYodbnPvLII/PKK6/kjjvuyH333Zc33ngj8+bNS+vWrbPPPvvkzDPPTN++fdO8efNanxvY/D344IM599xzS39osyl97Wtfy6RJkyp9bcWKFVm6dGlmzJiRRx55JFdddVX+8z//MxdffPEmrhL4IivyGrghf/rTn/LAAw8UXQawBaiv10GATaG+XAPffvvtDBgwII8//vhnXnvvvffy3nvvZezYsbn55ptz3XXX5Qc/+EEBVQJfRPXlOvh57bTTTkWXAGwCwuta0Lhx4/Tt2zd9+/at9jF23333VGcF9+bNm2fAgAEZMGBAtecGtkwLFiyoFx9Qd91113Tq1Cnt27fPNttsk8WLF+f111/PhAkTUl5enkWLFmXAgAGZNWtWBg4cWHS5wBdEfbkGrm3BggX5zne+U3QZwBaivlwHDzvssHTt2nWj4zp16rQJqgG2FPXhGvjyyy+nZ8+eFVYb22+//bL//vunVatWWbx4caZMmZKXX345q1atKrBS4IuoqOvgvvvum0suuaTK4//4xz9m1qxZSZIvf/nL6dy5c12VBtQjwmuALdyOO+6Yww47rPT1+OOP54YbbqjTOU8++eRceeWV6dGjR9q1a1fpmLfeeivf/va3M3z48CTJf/zHf+TEE0/MYYcdVqe1AVuWIq6B6/ODH/wgH374YRo1apSTTz45f/zjHwupA9iyFH0d7NWrlz9QBApT1DVw2rRpFYLrnj175v/+3/9b6WP/5s+fn2HDhqV9+/Z1Xhew5dnU18HDDz88hx9+eJXGzp8/P0OGDCn1+/XrV1dlAfWM8BpgC3XCCSdk+vTp2W233Spsf/HFF+t87p/+9KcbHbPXXnvl0UcfzYEHHpg33ngja9asyZAhQ4TXQK0o8hpYmeHDh+fWW29Nkvzwhz9Mw4YNhddAnapv10GATanoa+BFF11UCq6/+c1v5q677spWW21V6dhWrVrl/PPP3yR1AVuOoq+DVXHPPfdkxYoVSZJGjRrl7LPPLrgiYFNpUHQBABRjp512+swH1PqmSZMm6dOnT6k/fvz4AqsBvkjq0zXwk08+yUUXXZTk0z/c+fGPf1xwRcCWoD5dBwE2tSKvgcOGDcuTTz6ZJNltt90yZMiQ9QbXAHVlc/gs+Pvf/77U7t27d3bYYYcCqwE2JeE1APVa27ZtS+3FixcXWAlA3fj3f//3TJ06NUly8803p2nTpgVXBABAXbn55ptL7e9973vZdtttC6wGoH6aMmVKxowZU+pbMhy2LMJrAOq1119/vdTu0KFDgZUA1L6XXnopv/jFL5Ikffr0yde+9rWCKwIAoK7Mnj27dNd1kpxzzjkFVgNQf61913WbNm3Sq1evAqsBNjXPvAag3po0aVLpGbBJcvrppxdYDUDtWrVqVf7pn/4pq1evTqtWrUohNsCWZNasWRk6dGjeeOONLF26NC1btsxuu+2Wbt26pWPHjkWXB1CrRo0alTVr1iRJOnXqlLZt22bhwoX57W9/m/vuuy9vvfVWPvnkk7Rp0yZdu3bN6aefnjPPPDMNGrj/CNhyrFmzJnfeeWepf84556RRo0YFVgRsasJrAOqVJUuW5M0338ywYcPyi1/8IkuWLEmSfPWrX82FF15YcHUAtWfQoEH529/+liS57rrr0qZNm2ILAijA4MGDM3jw4Epf+8pXvpKBAwdalQL4whg7dmypvf/++2fUqFE566yzMmPGjArjZsyYkRkzZuSPf/xj/uu//iv3339/9thjj01dLkAhhg8fnnfffbfUt2Q4bHmE1wAU6s4778x555233tfLysrSp0+f3HLLLWnY0P+2gC+GN998M9dcc02S5Jhjjsn5559fcEUA9c8LL7yQ4447Lj/60Y9y7bXXFl0OQI2tHcYsXLgwvXr1yoIFC5IkhxxySA488MCsXr06Y8eOzeTJk5Mkf/vb33LkkUdm3Lhx2WWXXYooG2CTWnvJ8AMOOCAHH3xwgdUARZACAFBv7bzzzrntttvyD//wD0WXAlBrysvL861vfSvLli1L48aNM3jw4JSVlRVdFsAm1aVLl3zjG99I9+7d06lTp7Rs2TLLli3LW2+9lUceeSS/+tWvMnfu3JSXl+enP/1ptt1221xxxRVFlw1QI38PqpPk6aefTpLssMMOue+++9K9e/cKY++77770798/n3zySWbNmpU+ffpkxIgRm7BagE1vyZIleeCBB0r9/v37F1cMUBjhNQCF6tSpUy655JIknz7TZuHChXnttdfy8ssv5/3338/xxx+fU089NTfeeGN22mmngqsFqLkhQ4bkr3/9a5LkyiuvTOfOnQuuCGDT+pd/+ZcMHDjwM9sbNWqUgw8+OAcffHAuuuiinHTSSRkzZkyS5KqrrsoZZ5yRPffccxNXC1B7li5dWqG/1VZb5eGHH84RRxzxmbFnnnlmkuSb3/xmkuSvf/1rRowYkWOPPbbO6wQoyh//+MfStbJhw4Y599xzC64IKEKDogsAYMt22GGH5de//nV+/etf56abbspdd92VCRMmZMqUKenVq1fKy8tz//3354gjjsh7771XdLkANfLBBx/khz/8YZJk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Btg77bRTjjvuuDz22GNJkqFDh240vH777bczcuTIUr9v374VXn/33XdTXl6esrKydOrUKZ06dUrr1q3TqFGjzJs3LxMmTMjUqVOTJHfffXcWLlyYRx55pMp3nm9KS5cuzfHHH58XXnihtG2PPfbIoYcempYtW+ajjz7KyJEj8/777+eTTz7JpZdemkWLFuVHP/pRgVUDAABsPoTXAAAAUAOnnXZaevfune7du2frrbf+zOurV6/O0KFD853vfCdLly7Nj3/843zjG9/IHnvsUUC1G9evX79SeP3nP/858+fPT6tWrdY7fu27rjt06PCZZbe//OUv54QTTkjv3r2zww47VHqM5557LhdccEHeeuutPProo7nrrrvSp0+fmr+ZWjZgwIBScL3nnntm8ODB+drXvlZhzOrVq3PLLbfke9/7XpYvX56rr7463bt3z5FHHllEyQAAAJsVz7wGAACAGrjpppvSq1evSoPrJNlqq63Sv3//3HrrrUmSlStXZvDgwZuyxM/l5JNPTosWLZIkK1asyL333rvB8XfeeWepfd55533mjunLL788/fv3X29wnSTdunXLk08+maZNmyZJ/t//+3/VrL7uPPfcc6Wgfpdddsnzzz//meA6+fR8X3zxxbn55puTfBpm/+QnP9mktQIAAGyuhNcAAACwCZxxxhlp3rx5kuSpp54quJr1a9q0ac4888xSf+07q9f1/PPPl5b8Tj67ZPjnsfvuu6d79+5JkrFjx2bRokXVPlZd+MUvflFq//znP89OO+20wfH9+/dP586dkySPP/545s6dW6f1AQAAfBFYNhwAAABqycSJEzN+/PhMmzYtixYtyvLlyyu8/ve7kidOnJg1a9akQYP6+Tfl/fr1yy233JIkGT16dN56663stddenxm3drB91FFHZe+9997gcWfMmJExY8bkjTfeyIIFC/LJJ5+kvLy89Po777yTJCkvL8/LL7+cbt261cbbqbFVq1blySefTJI0bNgwp59++kb3KSsrS/fu3TN58uSUl5dn5MiROemkk+q6VAAAgM2a8BoAAABq6Pe//31+9rOf5Y033qjS+JUrV2bhwoVp2bJlHVdWPX8Pot98880kn4bU6y59vXz58vzhD38o9fv167fe440aNSr/9m//lueee65CWL0h9elO5VdeeSVLly5N8umd6ZdffnmV9hs7dmyp/e6779ZJbQAAAF8kwmsAAACopvLy8lx44YW57bbbPve+ixcvrrfhdfLpEuBXXXVVkk+fa33NNddUeJ71sGHDsmDBgiSfXWp8bb/73e/yT//0T1UOrf9u8eLF1Su8DnzwwQel9pIlS3LjjTd+7mN89NFHtVkSAADAF1L9XJ8MAAAANgNDhgypEFz37t07Q4cOzauvvpqPPvooy5cvT3l5eemrQ4cOpbFr1qwpouQqO++880ph9TvvvJPnn3++wutrLxl+8sknp0WLFp85xuuvv55vf/vbpeD6wAMPzK9+9auMHTs2s2fPLi0b/vevte/erk/fn4ULF9b4GKtWraqFSgAAAL7Y3HkNAAAA1TRo0KBS+6c//Wl+9KMfbXB8XdxNXFchb4cOHXLMMcdkxIgRSZKhQ4eWnkE9e/bsPP7446Wxffv2rfQYv/zlL0uhba9evfLggw+mUaNG652zqLutN/Y9bNasWal90EEHZcKECXVdEgAAwBbJndcAAABQDe+++27pmdAtW7bMD3/4ww2OX7RoUZWWjm7Y8H//zrwqd+vWxl3B67P2ndB/+MMfsmzZsiTJ3XffXaptp512yvHHH1/p/k8//XSp/R//8R8bDK6TZPr06TUtOUkqzFMb38Mdd9yx1H777bfr1V3hAAAAXyTCawAAAKiGtZ+D3KlTpwqhc2Wef/75Kj33edttty21582bt8GxK1asyBtvvLHRY1bXGWecUbrreMGCBXn44YeTVFwy/Nxzz81WW21V6f5rf4/233//Dc61cOHCvPLKKzUtOcnn+x4mycSJEzf4+kEHHZQmTZok+fSPEEaNGlWzAgEAAKiU8BoAAACqoUGD//0n9ccff7zR8TfffHOVjrvHHnuU2n/72982OPahhx4q3Q1dF5o3b57TTjut1L/jjjvy2muvZfz48aVta9+dva7P8z367W9/m5UrV9ag2v/1eb6HSXLfffdt8PWtt946PXr0KPV/+ctfVrs2AAAA1k94DQAAANWwxx57pKysLEny6quvZurUqesde++99+aRRx6p0nG7du1aat9+++3rHbdo0aL827/9W9WKrYG1w+m//OUvFZ7zffDBB+eAAw5Y774dO3YstYcNG7becW+++WauueaaGlb6vw477LDSuXnxxRfz+uuvr3fsTTfdlEmTJm30mFdccUWp/ac//WmD52ZdH374YZXHAgAAbMmE1wAAAFANO+ywQw4//PAkyZo1a/KNb3wjU6ZMqTBmzZo1ufHGG3Peeedlq622StOmTTd63HPOOafUvueee/LrX//6M2MmT56cHj16ZOrUqaXlrOtK9+7ds+uuuyb59PnRt912W+m1Dd11nSS9e/cutf/1X/81jz/++GfGPP300zn22GOzePHi0hLlNbXTTjule/fuSZLy8vKcffbZee+99yqMWbVqVa6//vr8y7/8S5W+h8ccc0yF93vBBRfk8ssvX++y5MuXL8+wYcNy6qmn5qSTTqrBuwEAANhybPiBXAAAAMB6XXvttTnuuOOyZs2aTJgwIQcccEC+8pWvpGPHjlmyZEmee+65zJw5M0ny05/+NLfcckumT5++wWN269YtJ554Yv785z8nSS699NLceOONOeKII1JWVpYpU6Zk9OjRWbNmTfr375933nknf/3rX+vsPTZo0CDnnXdefvazn1XY3rBhwwpBe2W+973v5dZbb82cOXPy0Ucf5YQTTsghhxyS/fbbL2VlZRk/fnzprufjjz8+bdu2zdChQ2ul7p/97Gc56qijsmbNmrz88svZZ5990rNnz7Rv3z7z58/Ps88+m9mzZ6d58+b5+c9/nksvvXSjx/zNb36TmTNn5oknnkh5eXkGDRqUX/3qVznssMOy5557Zuutt87ChQszderUTJw4sbSk+5e//OVaeU8AAABfdMJrAAAAqKaePXvmxhtvzKWXXppVq1Zl5cqVGTFiREaMGFEa06BBg/z4xz/OlVdemVtuuaVKx73jjjty/PHHZ9y4cUk+vdN68uTJFcZccMEFuemmm3L88cfX2vtZn379+n0mvO7Vq1fatGmzwf3atm2bYcOG5aSTTsrcuXOTJOPHj6/wzOwkOeWUU3L77bfnsssuq7WaDz/88AwZMiQXXXRRVq9enU8++eQzS7e3a9cu9957b1avXl2lYzZp0iSPPvporrnmmlx//fX5+OOPs2LFirzwwgt54YUXKt2nUaNGOeKII2r8fgAAALYElg0HAACAGvjnf/7njB8/Pueff3523333NG7cONtvv33222+/fOc738m4ceNyzTXXlJ7BXBWtWrXKyJEjc9NNN6Vbt25p1apVGjdunA4dOuSMM87IE088kVtvvbXOlwz/u3322eczAWzfvn2rtO+RRx6ZSZMm5corr0yXLl2yzTbbZJtttsmee+6ZM888Mw899FAeeOCBbL/99rVe9wUXXJBXXnklF154YfbYY480bdo0LVq0yMEHH5xrr702r7zySrp16/a5jrnVVlvlJz/5SaZNm5ZBgwblhBNOyG677ZZtttkmjRo1SuvWrXPIIYekX79+uf322/P+++9XuvQ7AAAAn1VWXl5eXnQRAAAAAAAAAGzZ3HkNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAUTngNAAAAAAAAQOGE1wAAAAAAAAAU7v8Dp/3BkvlnErwAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": { - "image/png": { - "height": 684, - "width": 983 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "tau_values = np.array(out2.iloc[:, 1])\n", - "# the array of tau values is split up into thirds, where each third describes the throats in\n", - "# orthogonal directions of x, y, and z\n", - "\n", - "fig, ax = plt.subplots(figsize=[10,7])\n", - "ax.set_title(r\"$\\tau$ Distribution for x Throats\")\n", - "ax.hist(tau_values[:len(tau_values)//3], edgecolor='k')\n", - "ax.axvline(np.mean(tau_values[:len(tau_values)//3]), color='red', label='Mean', linestyle='--')\n", - "ax.axvline(tau_direct, color='lime', label='Direct', linestyle='--')\n", - "ax.axvline(tau_gdd, color='yellow', label='GDD', linestyle='--')\n", - "\n", - "ax.set_xlabel(r'Tau Value')\n", - "ax.set_ylabel(r'Relative Frequency')\n", - "ax.legend();" + "With similar results, the main benefit to using the \"block and tackle\" method is the time save on larger images. " ] } ], @@ -409,7 +883,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/src/porespy/beta/__init__.py b/src/porespy/beta/__init__.py index 4c233d41c..ba67b431e 100644 --- a/src/porespy/beta/__init__.py +++ b/src/porespy/beta/__init__.py @@ -1,5 +1,5 @@ from ._dns_tools import * from ._drainage2 import * -from ._gdd import * +from ._tortuosity_bt_funcs import * from ._generators import * from ._poly_cylinders import * diff --git a/src/porespy/beta/_gdd.py b/src/porespy/beta/_gdd.py deleted file mode 100644 index fef1907b7..000000000 --- a/src/porespy/beta/_gdd.py +++ /dev/null @@ -1,361 +0,0 @@ -import time - -import dask -import dask.delayed -import edt -import numpy as np -import openpnm as op -from pandas import DataFrame - -from porespy import settings, simulations -from porespy.tools import Results - -__all__ = ['tortuosity_gdd', 'chunks_to_dataframe'] -settings.loglevel = 50 - - -@dask.delayed -def calc_g(image, axis): - r'''Calculates diffusive conductance of an image. - - Parameters - ---------- - image : np.ndarray - The binary image to analyze with ``True`` indicating phase of interest. - axis : int - 0 for x-axis, 1 for y-axis, 2 for z-axis. - result: int - 0 for diffusive conductance, 1 for both diffusive conductance - and results object from Porespy. - ''' - try: - # if tortuosity_fd fails, throat is closed off from whichever axis was specified - results = simulations.tortuosity_fd(im=image, axis=axis) - - except Exception: - # a is diffusive conductance, b is tortuosity - a, b = (0, 99) - - return (a, b) - - L = image.shape[axis] - A = np.prod(image.shape)/image.shape[axis] - - return ((results.effective_porosity * A) / (results.tortuosity * L), results) - - -def network_calc(image, chunk_size, network, phase, bc, axis): - r'''Calculates the resistor network tortuosity. - - Parameters - ---------- - image : np.ndarray - The binary image to analyze with ``True`` indicating phase of interest. - chunk_size : np.ndarray - Contains the size of a chunk in each direction. - bc : tuple - Contains the first and second boundary conditions. - axis : int - The axis to calculate on. - - Returns - ------- - tau : Tortuosity of the network in the given dimension - ''' - fd=op.algorithms.FickianDiffusion(network=network, phase=phase) - - fd.set_value_BC(pores=network.pores(bc[0]), values=1) - fd.set_value_BC(pores=network.pores(bc[1]), values=0) - fd.run() - - rate_inlet = fd.rate(pores=network.pores(bc[0]))[0] - L = image.shape[axis] - chunk_size[axis] - A = np.prod(image.shape) / image.shape[axis] - d_eff = rate_inlet * L / (A * (1 - 0)) - - e = image.sum() / image.size - D_AB = 1 - tau = e * D_AB / d_eff - - return tau - - -def chunking(spacing, divs): - r'''Returns slices given the number of chunks and chunk sizes. - - Parameters - ---------- - spacing : float - Size of each chunk. - divs : list - Number of chunks in each direction. - - Returns - ------- - slices : list - Contains lists of image slices corresponding to chunks - ''' - - slices = [[ - (int(i*spacing[0]), int((i+1)*spacing[0])), - (int(j*spacing[1]), int((j+1)*spacing[1])), - (int(k*spacing[2]), int((k+1)*spacing[2]))] - for i in range(divs[0]) - for j in range(divs[1]) - for k in range(divs[2])] - - return np.array(slices, dtype=int) - - -def tortuosity_gdd(im, scale_factor=3, use_dask=True): - r'''Calculates the resistor network tortuosity. - - Parameters - ---------- - im : np.ndarray - The binary image to analyze with ``True`` indicating phase of interest - - chunk_shape : list - Contains the number of chunks to be made in the x,y,z directions. - - Returns - ------- - results : list - Contains tau values for three directions, time stamps, tau values for each chunk - ''' - t0 = time.perf_counter() - - dt = edt.edt(im) - print(f'Max distance transform found: {np.round(dt.max(), 3)}') - - # determining the number of chunks in each direction, minimum of 3 is required - if np.all(im.shape//(scale_factor*dt.max())>np.array([3, 3, 3])): - - # if the minimum is exceeded, then chunk number is validated - # integer division is required for defining chunk shapes - chunk_shape=np.array(im.shape//(dt.max()*scale_factor), dtype=int) - print(f"{chunk_shape} > [3,3,3], using {(im.shape//chunk_shape)} as chunk size.") - - # otherwise, the minimum of 3 in all directions is used - else: - chunk_shape=np.array([3, 3, 3]) - print(f"{np.array(im.shape//(dt.max()*scale_factor), dtype=int)} <= [3,3,3], \ -using {im.shape[0]//3} as chunk size.") - - t1 = time.perf_counter() - t0 - - # determines chunk size - chunk_size = np.floor(im.shape/np.array(chunk_shape)) - - # creates the masked images - removes half of a chunk from both ends of one axis - x_image = im[int(chunk_size[0]//2): int(im.shape[0] - chunk_size[0] //2), :, :] - y_image = im[:, int(chunk_size[1]//2): int(im.shape[1] - chunk_size[1] //2), :] - z_image = im[:, :, int(chunk_size[2]//2): int(im.shape[2] - chunk_size[2] //2)] - - t2 = time.perf_counter()- t0 - - # creates the chunks for each masked image - x_slices = chunking(spacing=chunk_size, - divs=[chunk_shape[0]-1, chunk_shape[1], chunk_shape[2]]) - y_slices = chunking(spacing=chunk_size, - divs=[chunk_shape[0], chunk_shape[1]-1, chunk_shape[2]]) - z_slices = chunking(spacing=chunk_size, - divs=[chunk_shape[0], chunk_shape[1], chunk_shape[2]-1]) - - t3 = time.perf_counter()- t0 - # queues up dask delayed function to be run in parallel - - x_gD = [calc_g(x_image[x_slice[0, 0]:x_slice[0, 1], - x_slice[1, 0]:x_slice[1, 1], - x_slice[2, 0]:x_slice[2, 1],], - axis=0) for x_slice in x_slices] - - y_gD = [calc_g(y_image[y_slice[0, 0]:y_slice[0, 1], - y_slice[1, 0]:y_slice[1, 1], - y_slice[2, 0]:y_slice[2, 1],], - axis=1) for y_slice in y_slices] - - z_gD = [calc_g(z_image[z_slice[0, 0]:z_slice[0, 1], - z_slice[1, 0]:z_slice[1, 1], - z_slice[2, 0]:z_slice[2, 1],], - axis=2) for z_slice in z_slices] - - # order of throat creation - all_values = [z_gD, y_gD, x_gD] - - if use_dask: - all_results = np.array(dask.compute(all_values), dtype=object).flatten() - - else: - all_values = np.array(all_values).flatten() - all_results = [] - for item in all_values: - all_results.append(item.compute()) - - all_results = np.array(all_results).flatten() - - # THIS DOESNT WORK FOR SOME REASON - # all_gD = all_results[::2] - # all_tau_unfiltered = all_results[1::2] - - all_gD = [result for result in all_results[::2]] - all_tau_unfiltered = [result for result in all_results[1::2]] - - all_tau = [result.tortuosity if not isinstance(result, int) - else result for result in all_tau_unfiltered] - - t4 = time.perf_counter()- t0 - - # creates opnepnm network to calculate image tortuosity - net = op.network.Cubic(chunk_shape) - air = op.phase.Phase(network=net) - - air['throat.diffusive_conductance']=np.array(all_gD).flatten() - - # calculates throat tau in x, y, z directions - throat_tau = [ - # x direction - network_calc(image=im, - chunk_size=chunk_size, - network=net, - phase=air, - bc=['left', 'right'], - axis=1), - - # y direction - network_calc(image=im, - chunk_size=chunk_size, - network=net, - phase=air, - bc=['front', 'back'], - axis=2), - - # z direction - network_calc(image=im, - chunk_size=chunk_size, - network=net, - phase=air, - bc=['top', 'bottom'], - axis=0)] - - t5 = time.perf_counter()- t0 - - output = Results() - output.__setitem__('tau', throat_tau) - output.__setitem__('time_stamps', [t1, t2, t3, t4, t5]) - output.__setitem__('all_tau', all_tau) - - return output - - -def chunks_to_dataframe(im, scale_factor=3, use_dask=True): - r'''Calculates the resistor network tortuosity. - - Parameters - ---------- - im : np.ndarray - The binary image to analyze with ``True`` indicating phase of interest - - chunk_shape : list - Contains the number of chunks to be made in the x, y, z directions. - - Returns - ------- - df : pandas.DataFrame - Contains throat numbers, tau values, diffusive conductance values, and porosity - - ''' - dt = edt.edt(im) - print(f'Max distance transform found: {np.round(dt.max(), 3)}') - - # determining the number of chunks in each direction, minimum of 3 is required - if np.all(im.shape//(scale_factor*dt.max())>np.array([3, 3, 3])): - - # if the minimum is exceeded, then chunk number is validated - # integer division is required for defining chunk shapes - chunk_shape=np.array(im.shape//(dt.max()*scale_factor), dtype=int) - print(f"{chunk_shape} > [3,3,3], using {(im.shape//chunk_shape)} as chunk size.") - - # otherwise, the minimum of 3 in all directions is used - else: - chunk_shape=np.array([3, 3, 3]) - print(f"{np.array(im.shape//(dt.max()*scale_factor), dtype=int)} <= [3,3,3], \ -using {im.shape[0]//3} as chunk size.") - - # determines chunk size - chunk_size = np.floor(im.shape/np.array(chunk_shape)) - - # creates the masked images - removes half of a chunk from both ends of one axis - x_image = im[int(chunk_size[0]//2): int(im.shape[0] - chunk_size[0] //2), :, :] - y_image = im[:, int(chunk_size[1]//2): int(im.shape[1] - chunk_size[1] //2), :] - z_image = im[:, :, int(chunk_size[2]//2): int(im.shape[2] - chunk_size[2] //2)] - - # creates the chunks for each masked image - x_slices = chunking(spacing=chunk_size, - divs=[chunk_shape[0]-1, chunk_shape[1], chunk_shape[2]]) - y_slices = chunking(spacing=chunk_size, - divs=[chunk_shape[0], chunk_shape[1]-1, chunk_shape[2]]) - z_slices = chunking(spacing=chunk_size, - divs=[chunk_shape[0], chunk_shape[1], chunk_shape[2]-1]) - - # queues up dask delayed function to be run in parallel - x_gD = [calc_g(x_image[x_slice[0, 0]:x_slice[0, 1], - x_slice[1, 0]:x_slice[1, 1], - x_slice[2, 0]:x_slice[2, 1],], - axis=0) for x_slice in x_slices] - - y_gD = [calc_g(y_image[y_slice[0, 0]:y_slice[0, 1], - y_slice[1, 0]:y_slice[1, 1], - y_slice[2, 0]:y_slice[2, 1],], - axis=1) for y_slice in y_slices] - - z_gD = [calc_g(z_image[z_slice[0, 0]:z_slice[0, 1], - z_slice[1, 0]:z_slice[1, 1], - z_slice[2, 0]:z_slice[2, 1],], - axis=2) for z_slice in z_slices] - - # order of throat creation - all_values = [z_gD, y_gD, x_gD] - - if use_dask: - all_results = np.array(dask.compute(all_values), dtype=object).flatten() - - else: - all_values = np.array(all_values).flatten() - all_results = [] - for item in all_values: - all_results.append(item.compute()) - - all_results = np.array(all_results).flatten() - - all_gD = [result for result in all_results[::2]] - all_tau_unfiltered = [result for result in all_results[1::2]] - - all_porosity = [result.effective_porosity if not isinstance(result, int) - else result for result in all_tau_unfiltered] - all_tau = [result.tortuosity if not isinstance(result, int) - else result for result in all_tau_unfiltered] - - # creates opnepnm network to calculate image tortuosity - net = op.network.Cubic(chunk_shape) - - df = DataFrame(list(zip(np.arange(net.Nt), all_tau, all_gD, all_porosity)), - columns=['Throat Number', 'Tortuosity', - 'Diffusive Conductance', 'Porosity']) - - return df - - -if __name__ =="__main__": - import numpy as np - - import porespy as ps - np.random.seed(1) - im = ps.generators.blobs(shape=[100, 100, 100], porosity=0.7) - res = ps.simulations.tortuosity_gdd(im=im, scale_factor=3, use_dask=True) - print(res) - - # np.random.seed(2) - # im = ps.generators.blobs(shape=[100, 100, 100], porosity=0.7) - # df = ps.simulations.chunks_to_dataframe(im=im, scale_factor=3) - # print(df) diff --git a/src/porespy/beta/_tortuosity_bt_funcs.py b/src/porespy/beta/_tortuosity_bt_funcs.py new file mode 100644 index 000000000..f5e3567a2 --- /dev/null +++ b/src/porespy/beta/_tortuosity_bt_funcs.py @@ -0,0 +1,341 @@ +import time +import porespy as ps +from porespy import tools +from porespy.tools import Results +import logging +import numpy as np +import openpnm as op +import pandas as pd +import dask +from dask.diagnostics import ProgressBar +try: + from pyedt import edt +except ModuleNotFoundError: + from edt import edt + +__all__ = [ + 'tortuosity_bt', + 'get_block_sizes', + 'df_to_tortuosity', + 'rev_tortuosity', + 'analyze_blocks', +] + + +def calc_g(im, axis, solver_args={}): + r""" + Calculates diffusive conductance of an image in the direction specified + + Parameters + ---------- + im : ndarray + The binary image to analyze with ``True`` indicating phase of interest. + axis : int + 0 for x-axis, 1 for y-axis, 2 for z-axis. + solver_args : dict + Dicionary of keyword arguments to pass on to the solver. The most + relevant one being `'tol'` which is 1e-6 by default. Using larger values + might improve speed at the cost of accuracy. + + Returns + ------- + results : dataclass-like + An object with the results of the calculation as attributes. + + Notes + ----- + This is intended to receive blocks of a larger image and is used by + `tortuosity_bt`. + """ + from porespy.simulations import tortuosity_fd + solver_args = {'tol': 1e-6} | solver_args + solver = solver_args.pop('solver', None) + t0 = time.perf_counter() + + try: + solver = op.solvers.PyamgRugeStubenSolver(**solver_args) + results = tortuosity_fd(im=im, axis=axis, solver=solver) + except Exception: + results = Results() + results.effective_porosity = 0.0 + results.original_porosity = im.sum()/im.size + results.tortuosity = np.inf + results.time = time.perf_counter() - t0 + L = im.shape[axis] + A = np.prod(im.shape)/im.shape[axis] + g = (results.effective_porosity * A) / (results.tortuosity * (L - 1)) + results.diffusive_conductance = g + results.volume = np.prod(im.shape) + results.axis = axis + results.time = time.perf_counter() - t0 + return results + + +def get_block_sizes(im, block_size_range=[10, 100]): + """ + Finds all viable block sizes between lower and upper limits + + Parameters + ---------- + im : np.array + The binary image to analyze with ``True`` indicating phase of interest. + block_size_range : sequence of 2 ints + The [lower, upper] range of the desired block sizes. Default is [10, 100] + + Returns + ------- + sizes : ndarray + All the viable block sizes in the specified range + + Notes + ----- + This is called by `rev_tortuosity` to determine what size blocks to use. + """ + shape = im.shape + Lmin, Lmax = block_size_range + a = np.ceil(min(shape)/Lmax).astype(int) + block_sizes = min(shape) // np.arange(a, 9999) # Generate WAY more than needed + block_sizes = np.unique(block_sizes[block_sizes >= Lmin]) + return block_sizes + + +def rev_tortuosity(im, block_sizes=None, use_dask=True): + """ + Generates the data for creating an REV plot based on tortuosity + + Parameters + ---------- + im : ndarray + The binary image to analyze with ``True`` indicating phase of interest + block_sizes : np.ndarray + An array containing integers of block sizes to be calculated + use_dask : bool + A boolean determining the usage of `dask`. + + Returns + ------- + df : DataFrame + A `pandas` data frame with the properties for each block on a given row + """ + if block_sizes is None: + block_sizes = get_block_sizes(im) + block_sizes = np.array(block_sizes, dtype=int) + tau = [] + for s in block_sizes: + tau.append(analyze_blocks(im, block_size=s, use_dask=use_dask)) + df = pd.concat(tau) + return df + + +def block_size_to_divs(shape, block_size): + r""" + Finds the number of blocks in each direction given the size of the blocks + + Parameters + ---------- + shape : sequence of ints + The [x, y, z] shape of the image + block_size : int or sequence of ints + The size of the blocks + + Returns + ------- + divs : list of ints + The number of blocks to divide the image into along each axis. The minimum + number of blocks is 2. + """ + shape = np.array(shape) + divs = shape // np.array(block_size) + # scraps = shape % np.array(block_size) + divs = np.clip(divs, a_min=2, a_max=shape) + return divs + + +def analyze_blocks(im, block_size=None, method="chords", use_dask=True): + r''' + Computes structural and transport properties of each block + + Parameters + ---------- + im : np.ndarray + The binary image to analyze with ``True`` indicating phase of interest + block_size : int + The size of the blocks to use. Only cubic blocks are supported so an integer + must be given, or an exception is raised. If the image is not evenly + divisible by the given `block_size` any extra voxels are removed from the + end of each axis before all processing occcurs. Block size will be prioritized + if use_chords is also provided. + method : string + The method to use to determine block sizes if `block_size` is not provided. + =========== ================================================================== + method description + =========== ================================================================== + 'chords' Uses `apply_chords_3D` from Porespy to determine the longest chord + possible in the image as the length of each block. + 'dt' Uses the maximum length of the distance transform to determine + the length of each block. + ========== ================================================================== + use_dask : bool + A boolean determining the usage of `dask`. + + Returns + ------- + df_out : DataFrame + A `pandas` data frame with the properties for each block on a given row. + ''' + + # determines block size, trimmed to fit in the image + if block_size is None: + if method == "chords": + tmp = ps.filters.apply_chords_3D(im) + + # find max chord length in each direction + block_size = np.int_(np.amax(ps.filters.region_size(im = tmp>0))) + block_size = min(block_size, min(np.array(im.shape)/2)) + + elif method == "dt": + scale_factor = 3 + dt = edt(im) + # TODO: Is the following supposed to be over 2 or over im.ndim? + block_size = min(dt.max() * scale_factor, min(np.array(im.shape)/2)) + + else: + print("Provide a valid method") + raise Exception + + results = [] + offset = int(block_size/2) + + # create blocks and queues them for calculation + for ax in range(im.ndim): + + # creates the masked images - removes half of a chunk from both ends of one axis + tmp = np.swapaxes(im, 0, ax) + tmp = tmp[offset:-offset, ...] + tmp = np.swapaxes(tmp, 0, ax) + slices = tools.subdivide(tmp, block_size=block_size, mode='whole') + if use_dask: + for s in slices: + results.append(dask.delayed(calc_g)(tmp[s], axis=ax)) + + # or do it the regular way + else: + for s in slices: + results.append(calc_g(tmp[s], axis=ax)) + + with ProgressBar(): + # collect all the results and calculate if needed + results = np.asarray(dask.compute(results), dtype=object).flatten() + + # format results to be returned as a single dataframe + df_out = pd.DataFrame() + + df_out['eps_orig'] = [r.original_porosity for r in results] + df_out['eps_perc'] = [r.effective_porosity for r in results] + df_out['g'] = [r.diffusive_conductance for r in results] + df_out['tau'] = [r.tortuosity for r in results] + df_out['volume'] = [r.volume for r in results] + df_out['length'] = [block_size for r in results] + df_out['axis'] = [r.axis for r in results] + df_out['time'] = [r.time for r in results] + + return df_out + + +def df_to_tortuosity(im, df): + """ + Compute the tortuosity of a network populated with diffusive conductance values + from the given dataframe. + + Parameters + ---------- + im : ndarray + The boolean image of the materials with `True` indicating the void space + df : dataframe + The dataframe returned by the `blocks_to_dataframe` function + block_size : int + The size of the blocks used to compute the conductance values in `df` + + Returns + ------- + tau : list of floats + The tortuosity in all three principal directions + """ + + block_size = list(df['length'])[0] + divs = block_size_to_divs(shape=im.shape, block_size=block_size) + + net = op.network.Cubic(shape=divs) + air = op.phase.Phase(network=net) + gx = df['g'][df['axis']==0] + gy = df['g'][df['axis']==1] + gz = df['g'][df['axis']==2] + + g = np.hstack([gz, gy, gx]) + + air['throat.diffusive_conductance'] = g + + bcs = {0: {'in': 'left', 'out': 'right'}, + 1: {'in': 'front', 'out': 'back'}, + 2: {'in': 'top', 'out': 'bottom'}} + + e = np.sum(im, dtype=np.int64) / im.size + D_AB = 1 + tau = [] + + for ax in range(im.ndim): + fick = op.algorithms.FickianDiffusion(network=net, phase=air) + fick.set_value_BC(pores=net.pores(bcs[ax]['in']), values=1.0) + fick.set_value_BC(pores=net.pores(bcs[ax]['out']), values=0.0) + fick.run() + rate_inlet = fick.rate(pores=net.pores(bcs[ax]['in']))[0] + L = (divs[ax] - 1) * block_size + A = (np.prod(divs) / divs[ax]) * (block_size**2) + D_eff = rate_inlet * L / (A * (1 - 0)) + tau.append(e * D_AB / D_eff) + + ws = op.Workspace() + ws.clear() + return tau + + +def tortuosity_bt(im, block_size=None, method="chords", use_dask=True): + r""" + Computes the tortuosity of an image in all directions + + Parameters + ---------- + im : ndarray + The boolean image of the materials with `True` indicating the void space + block_size : int + The size of the blocks which the image will be split into. If not provided, + it will be determined by the provided method in `method` + method : str + The method to use to determine block sizes if `block_size` is not provided. + =========== ================================================================== + method description + =========== ================================================================== + 'chords' Uses `apply_chords_3D` from Porespy to determine the longest chord + possible in the image as the length of each block. + 'dt' Uses the maximum length of the distance transform to determine + the length of each block. + ========== ================================================================== + use_dask : bool + A boolean determining the usage of `dask` for parallel processing. + """ + df = analyze_blocks(im, block_size, method, use_dask) + tau = df_to_tortuosity(im, df) + return tau + + +if __name__ =="__main__": + import porespy as ps + import numpy as np + + np.random.seed(1) + + im = ps.generators.blobs([100, 100, 100]) + # df = analyze_blocks(im, method="dt") + # tau = df_to_tortuosity(im, df) + r1 = tortuosity_bt(im, method="chords") + print(r1) \ No newline at end of file diff --git a/src/porespy/simulations/_dns.py b/src/porespy/simulations/_dns.py index f506d7bda..d1df4e743 100644 --- a/src/porespy/simulations/_dns.py +++ b/src/porespy/simulations/_dns.py @@ -1,5 +1,5 @@ import logging - +import time import numpy as np import openpnm as op @@ -89,6 +89,7 @@ def tortuosity_fd(im, axis, solver=None): cL, cR = 1.0, 0.0 fd.set_value_BC(pores=inlets, values=cL) fd.set_value_BC(pores=outlets, values=cR) + t = time.perf_counter_ns() if openpnm_v3: if solver is None: solver = op.solvers.PyamgRugeStubenSolver(tol=1e-8) @@ -99,6 +100,7 @@ def tortuosity_fd(im, axis, solver=None): else: fd.settings.update({"solver_family": "scipy", "solver_type": "cg"}) fd.run() + t = time.perf_counter_ns() - t # Calculate molar flow rate, effective diffusivity and tortuosity r_in = fd.rate(pores=inlets)[0] @@ -122,7 +124,7 @@ def tortuosity_fd(im, axis, solver=None): conc = np.zeros(im.size, dtype=float) conc[net["pore.template_indices"]] = fd["pore.concentration"] result.concentration = conc.reshape(im.shape) - result.sys = fd.A, fd.b + result.time = t/1e9 # Free memory ws.close_project(net.project) diff --git a/src/porespy/tools/_funcs.py b/src/porespy/tools/_funcs.py index 8443316f0..46ab0e5c2 100644 --- a/src/porespy/tools/_funcs.py +++ b/src/porespy/tools/_funcs.py @@ -260,7 +260,7 @@ def align_image_with_openpnm(im): return im -def subdivide(im, divs=2, overlap=0): +def subdivide(im, divs=2, block_size=None, overlap=0, mode='offset'): r""" Returns slices into an image describing the specified number of sub-arrays. @@ -274,20 +274,39 @@ def subdivide(im, divs=2, overlap=0): The image of the porous media divs : scalar or array_like The number of sub-divisions to create in each axis of the image. If a - scalar is given it is assumed this value applies in all dimensions. + scalar is given it is assumed this value applies in all dimensions. If + `block_size` is given this is ignored. + block_size : scalar or array_like + The size of the divisions to create. If a scalar is given then cubic + blocks are created. If this argument is given then `divs` is ignored. overlap : scalar or array_like The amount of overlap to use when dividing along each axis. If a scalar is given it is assumed this value applies in all dimensions. + mode : str + This argument is only used if `block_size` is given and it controls how + to handle the situation when block sizes is not a clean multiple of + the image shape. The options are: + + ========== ================================================================== + mode description + ========== ================================================================== + 'whole' Blocks start at the beginning of each axis, and only "whole" + blocks (that fit within the image) are included in the returned + list of slice objects. + 'offset' Only whole blocks are included, but an offset is applied to the + start of each axis so that an equal amount of voxels are missed + at the start and end of each axis. + 'partial' Blocks start at the beginning of each axis, and any blocks which + partially extend beyond the end of the image are returned. + 'strict' Raises an Exception of the image cannot be evenly divided by the + given block size. + ========== ================================================================== Returns ------- slices : ndarray An ndarray containing sets of slice objects for indexing into ``im`` - that extract subdivisions of an image. If ``flatten`` was ``True``, - then this array is suitable for iterating. If ``flatten`` was - ``False`` then the slice objects must be accessed by row, col, layer - indices. An ndarray is the preferred container since its shape can - be easily queried. + that extract subdivisions of an image. See Also -------- @@ -307,33 +326,57 @@ def subdivide(im, divs=2, overlap=0): to view online example. """ - divs = np.ones((im.ndim,), dtype=int) * np.array(divs) - overlap = overlap * (divs > 1) - + offset = np.zeros(im.ndim, dtype=int) + shape = np.array(im.shape, dtype=int) + if block_size is None: + divs = np.ones((im.ndim,), dtype=int) * np.array(divs) + overlap = overlap * (divs > 1) + spacing = np.round(shape/divs, decimals=0).astype(int) + else: + block_size = np.array(block_size, dtype=int) + spacing = np.ones((im.ndim,), dtype=int) * block_size + divs = shape/spacing + if mode == 'offset': + divs = np.array(divs, dtype=int) + offset = ((shape - block_size*divs)/2).astype(int) + elif mode == 'whole': + divs = np.array(divs, dtype=int) + elif mode == 'partial': + divs = np.ceil(divs).astype(int) + elif mode == 'strict': + if np.any(shape % block_size): + m = 'The image cannot be evenly divided by the given block_size' + raise Exception(m) + divs = np.array(divs).astype(int) + else: + raise Exception('Unsupported mode') s = np.zeros(shape=divs, dtype=object) - spacing = np.round(np.array(im.shape)/divs, decimals=0).astype(int) for i in range(s.shape[0]): x = spacing[0] - sx = slice(x*i, min(im.shape[0], x*(i+1)), None) + o = offset[0] + sx = slice(x*i + o, min(im.shape[0], x*(i+1)) + o, None) for j in range(s.shape[1]): y = spacing[1] - sy = slice(y*j, min(im.shape[1], y*(j+1)), None) + o = offset[1] + sy = slice(y*j + o, min(im.shape[1], y*(j+1)) + o, None) if im.ndim == 3: for k in range(s.shape[2]): z = spacing[2] - sz = slice(z*k, min(im.shape[2], z*(k+1)), None) + o = offset[2] + sz = slice(z*k + o, min(im.shape[2], z*(k+1)) + o, None) s[i, j, k] = tuple([sx, sy, sz]) else: s[i, j] = tuple([sx, sy]) s = s.flatten().tolist() - for i, item in enumerate(s): - s[i] = extend_slice(slices=item, shape=im.shape, pad=overlap) + if np.any(overlap): + for i, item in enumerate(s): + s[i] = extend_slice(slices=item, shape=im.shape, pad=overlap) return s def recombine(ims, slices, overlap): r""" - Recombines image chunks back into full image of original shape + Recombines image chunks back into full image Parameters ---------- @@ -348,8 +391,7 @@ def recombine(ims, slices, overlap): Returns ------- im : ndarray - An image constituted from the chunks in ``ims`` of the same shape - as the original image. + An image constituted from the chunks in ``ims`` See Also -------- diff --git a/test/unit/GenericTest.py b/test/unit/GenericTest.py new file mode 100644 index 000000000..d435a1e07 --- /dev/null +++ b/test/unit/GenericTest.py @@ -0,0 +1,22 @@ + + +class GenericTest: + + hr = '―' * 78 + + def __init__(self): + print(self.hr) + + def setup_class(self): + pass + + def teardown_class(self): + pass + + def run_all(self): + self.setup_class() + for item in self.__dir__(): + if item.startswith('test'): + print(f"Running test: {item}") + self.__getattribute__(item)() + self.teardown_class() diff --git a/test/unit/test_simulations_block_and_tackle.py b/test/unit/test_simulations_block_and_tackle.py new file mode 100644 index 000000000..f0bbeab12 --- /dev/null +++ b/test/unit/test_simulations_block_and_tackle.py @@ -0,0 +1,66 @@ +import numpy as np +from porespy.tools import subdivide +import openpnm as op +from porespy import beta +from porespy import generators +from GenericTest import GenericTest + + +class TestBlockAndTackle(GenericTest): + + def test_blocks_on_ideal_image(self): + + block_size = 20 + im = np.arange(120).reshape(4, 5, 6) + im = np.repeat(im, block_size, axis=0) + im = np.repeat(im, block_size, axis=1) + im = np.repeat(im, block_size, axis=2) + offset = int(block_size/2) + queue = [[], [], []] + for ax in range(im.ndim): + im_temp = np.swapaxes(im, 0, ax) + im_temp = im_temp[offset:-offset, ...] + im_temp = np.swapaxes(im_temp, 0, ax) + slices = subdivide(im_temp, block_size=block_size, mode='strict') + for s in slices: + queue[ax].append(np.unique(im_temp[s])) + queue.reverse() + conns = np.vstack(queue) + shape = np.array(im.shape)//block_size + pn = op.network.Cubic(shape) + assert np.all(pn.conns == conns) + + def test_analyze_blocks_on_empty_image(self): + im = np.ones([100, 100, 100], dtype=bool) + df = beta.rev_tortuosity(im, [25], dask_args={'enable': False}) + assert len(df) == 144 + assert np.all(df['volume'] == 25**3) + assert np.all(df['length'] == 25) + assert np.all(np.around(df['tau'], decimals=4) == 1.0000) + + def test_analyze_block_on_lattice_spheres(self): + im = generators.lattice_spheres( + shape=[100, 100, 100], r=10, offset=25, spacing=50) + df = beta.rev_tortuosity(im, [25], dask_args={'enable': False}) + assert np.all(df['volume'] == 25**3) + assert np.all(df['length'] == 25) + assert np.all(df['tau'] > 1.0) + + def test_analyze_blocks_on_asymmetric_image(self): + im1 = np.ones([100, 75, 50], dtype=bool) + im2 = np.ones([100, 80, 60], dtype=bool) # Not multiple of block size + df1 = beta.rev_tortuosity(im1, [25], dask_args={'enable': False}) + df2 = beta.rev_tortuosity(im2, [25], dask_args={'enable': False}) + assert len(df1) == 46 + assert np.all(df1['volume'] == 25**3) + assert np.all(df1['length'] == 25) + assert np.all(np.around(df1['tau'], decimals=4) == 1.0000) + assert np.sum(df1['axis'] == 0) == 18 + assert np.sum(df1['axis'] == 1) == 16 + assert np.sum(df1['axis'] == 2) == 12 + assert np.all(df2 == df1) + + +if __name__ == "__main__": + t = TestBlockAndTackle() + t.run_all() diff --git a/test/unit/test_tools.py b/test/unit/test_tools.py index 6ed02ad87..2d38f28df 100644 --- a/test/unit/test_tools.py +++ b/test/unit/test_tools.py @@ -298,6 +298,46 @@ def test_recombine_3d_odd_shape_vector_overlap(self): im2 = ps.tools.recombine(ims=ims, slices=s, overlap=[10, 20, 25]) assert np.all(im == im2) + def test_subdivide_with_mode_offset(self): + im = im = np.random.rand(143, 177, 111) + s = ps.tools.subdivide(im, block_size=10, mode='offset') + assert s[0][0].start > 0 + assert s[0][1].start > 0 + assert s[0][2].start == 0 # If only 1 remainder, the start is 0 + assert s[-1][0].stop < im.shape[0] + assert s[-1][1].stop < im.shape[1] + assert s[-1][2].stop < im.shape[2] + + def test_subdivide_with_mode_unsupported(self): + im = im = np.random.rand(143, 177, 111) + with pytest.raises(Exception): + ps.tools.subdivide(im, block_size=10, mode='blah') + + def test_subdivide_with_mode_strict(self): + im = im = np.random.rand(143, 177, 111) + with pytest.raises(Exception): + ps.tools.subdivide(im, block_size=10, mode='strict') + + def test_subdivide_with_mode_partial(self): + im = im = np.random.rand(143, 177, 111) + s = ps.tools.subdivide(im, block_size=10, mode='partial') + assert s[0][0].start == 0 + assert s[0][1].start == 0 + assert s[0][2].start == 0 # If only 1 remainder, the start is 0 + assert s[-1][0].stop == im.shape[0] + assert s[-1][1].stop == im.shape[1] + assert s[-1][2].stop == im.shape[2] + + def test_subdivide_with_mode_whole(self): + im = im = np.random.rand(143, 177, 111) + s = ps.tools.subdivide(im, block_size=10, mode='whole') + assert s[0][0].start == 0 + assert s[0][1].start == 0 + assert s[0][2].start == 0 # If only 1 remainder, the start is 0 + assert s[-1][0].stop < im.shape[0] + assert s[-1][1].stop < im.shape[1] + assert s[-1][2].stop < im.shape[2] + def test_sanitize_filename(self): fname = "test.stl.stl" assert ps.tools.sanitize_filename(fname, "stl") == "test.stl.stl"