{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [], "source": [ "import os\n", "import sys\n", "import pandas as pd\n", "import json\n", "import matplotlib.pyplot as plt\n", "import networkx as nx\n", "import fornax\n", "\n", "%matplotlib inline\n", "from IPython.core.display import SVG\n", "\n", "# Add project root dir\n", "ROOT_DIR = os.path.abspath(\"../../\")\n", "sys.path.append(ROOT_DIR)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To install the use the dependencies for this notebook:\n", "\n", "```bash\n", "conda env create -f environment.yml\n", "source activate fornax_tutorial\n", "```\n", "\n", "To run this notebook from the project root:\n", "\n", "```bash\n", "cd docs/tutorial\n", "jupyter-notebook\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial we will:\n", "\n", "* Load a graph of superheros and their teams from csv files\n", "\n", "* Search for nodes in the graph using a string similarity function\n", "\n", "* Use fornax to search for nodes using string similarity and fuzzy graph matching\n", "\n", "The data in this tutorial we be generated using the preceding notebook: `Tutorial1.ipynb`.\n", "\n", "## Introduction\n", "\n", "`nodes.csv` and `edges.csv` contain a graph of superheros and their teams along with alternative names for those heros and groups (or aliases).\n", "\n", "The image below uses the example of Iron Man, who is known as \"Tony\" to his friends.\n", "Iron man is a member of the Avengers, a.k.a. Earth's Mightiest Superheros.\n", "Other heros are also members of The Avengers, and they will also have aliases.\n", "Other heros will also be members of other teams and so and so forth.\n", "\n", "\n", "All of these heros, teams and aliases together make our target graph, a graph which we will search using fornax." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "
Iron
Man
[Not supported by viewer]
The
Avengers
The<br>Avengers<br>
Tony
Tony<br>
Earth's Mightiest
Heros
Earth's Mightiest<br>Heros<br>
Hero
Alias
[Not supported by viewer]
Hero
Alias
[Not supported by viewer]
Hero
Hero
Team
Team
Team
Alias
[Not supported by viewer]
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SVG('../img/iron_man.svg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's load the data into the notebook using pandas." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# used for converting csv values in nodes.csv\n", "mapping = {\n", " '0': 'hero',\n", " '1': 'team', \n", " '2': 'hero_alias', \n", " '3': 'team_alias'\n", "}\n", "\n", "nodes_df = pd.read_csv(\n", " './nodes.csv', \n", " # rename the columns as targets as this will form the target graph\n", " # (the graph which we will be searching)\n", " names=['target_label', 'target_type', 'target_id'],\n", " # ignore the header\n", " header=0,\n", " converters = {\n", " # convert target_type from numeric values to\n", " # literal string representations for ease of reading\n", " 'target_type': lambda key: mapping.get(key)\n", " }\n", ")\n", "\n", "# contains pairs of target node ids\n", "edges_df = pd.read_csv('./edges.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the target nodes have a label (the hero's primary name).\n", "The target_type column will be one of `hero`, `team`, `hero alias`, `team alias`, the four types of nodes in the graph.\n", "\n", "(Note that by hero we mean a person in a comic book who has superpowers regardless of them being good or bad)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Selene\n", "1 Doctor Doom\n", "2 Viper\n", "3 Sin\n", "4 David North\n", "Name: target_label, dtype: object" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nodes_df['target_label'].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Edges are pairs of `target_id` values.\n", "Note that fornax deals with undirected graphs so there is no need to add the edge in the reverse direction.\n", "Doing so will cause an exception as the edge will be considered a duplicate." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
endstart
083985107987770955
16853733872073821878
21988120854396175249
3608208951396175249
419881208542062678112
\n", "
" ], "text/plain": [ " end start\n", "0 839851079 87770955\n", "1 685373387 2073821878\n", "2 1988120854 396175249\n", "3 608208951 396175249\n", "4 1988120854 2062678112" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "edges_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Label similarity\n", "\n", "For some motivation, before using fornax, let us search for nodes just using their labels.\n", "Let's search for nodes similar to `guardians`, `star` and `groot`.\n", "\n", "We will create a function that given a pair of labels, it will return a score where:\n", "\n", "$$0 <= score <= 1$$\n", "\n", "Secondly we'll create a search function that returns rows from our table of target nodes that have a non zero similarity score." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def node_scoring_function(first: str, second: str):\n", " \"\"\" node scoring function takes two strings and returns a \n", " score in the range 0 <= score <= 1\n", " \"\"\"\n", " first_, second_ = sorted((first.lower(), second.lower()), key=len)\n", " # if first is not a substring of second: score = 0\n", " if not first_ in second_:\n", " return 0\n", " # otherwise use the relative difference between\n", " # the two lengths\n", " score = len(second_) - len(first_)\n", " score /= max(len(first_), len(second_))\n", " score = 1. - score\n", " return score" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def search(query_id: int, query_label: str):\n", " # compute all of the scores\n", " scores = nodes_df['target_label'].apply(\n", " node_scoring_function, \n", " args=(query_label,)\n", " )\n", " # create a boolean mask\n", " mask = scores > 0\n", " # graph the non zero scoring nodes\n", " matches = nodes_df[mask].copy()\n", " # add extra columns\n", " matches['score'] = scores[mask]\n", " matches['query_label'] = query_label\n", " matches['query_id'] = query_id\n", " return matches" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Aside:\n", "Note that these string search functions are not terribly efficient.\n", "They involve repeated full scans of the target nodes table.\n", "If we were searching a larger graph we could use a search tree as an index, an external sting matching service or database. However, since this is a tutorial, the above functions are simpler and more reproducible.\n", "This is important as we will be using these search results with fornax." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "query_labels = ['guardians', 'star', 'groot']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Examining the table below we can see that we have a conundrum.\n", "There are 22 nodes with varying similarity to `star` and 4 nodes similar to `galaxy`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
target_labeltarget_typetarget_idscorequery_labelquery_id
285Guardianhero10816750.888889guardians0
427Guardians of the Galaxyteam8708072710.391304guardians0
507Guardians of the Galaxy (1969 team)team12954003890.257143guardians0
1019Guardianhero_alias20627913260.888889guardians0
10Danielle Moonstarhero20838509190.235294star1
25Darkstarhero12767533090.500000star1
71Firestarhero2748217420.500000star1
121Star-Lordhero10618676050.444444star1
189Northstarhero12608802840.444444star1
292Starfoxhero15942942590.571429star1
323Ultimate Firestarhero17180267720.235294star1
338Shatterstarhero12419255060.363636star1
401Upstartsteam8398510790.500000star1
443Starjammersteam8951174950.363636star1
474Starforceteam16059411170.444444star1
536James Proudstarhero_alias2681493750.266667star1
587John Proudstarhero_alias8801970810.285714star1
604Anthony \"Tony\" Edward Carbonell Starkhero_alias20078060130.108108star1
661Moonstarhero_alias2943734730.444444star1
750Star-Lordhero_alias925714790.400000star1
831Starlordhero_alias17883144070.444444star1
832Star Lordhero_alias9254346460.400000star1
1010Anthony Edward \"Tony\" Starkhero_alias21389963950.142857star1
1011Tony Starkhero_alias1822991330.363636star1
1014The Star Spangled Man With A Planhero_alias19155735630.117647star1
1069Firestarhero_alias15800653670.444444star1
120Groothero746714341.000000groot2
\n", "
" ], "text/plain": [ " target_label target_type target_id score \\\n", "285 Guardian hero 1081675 0.888889 \n", "427 Guardians of the Galaxy team 870807271 0.391304 \n", "507 Guardians of the Galaxy (1969 team) team 1295400389 0.257143 \n", "1019 Guardian hero_alias 2062791326 0.888889 \n", "10 Danielle Moonstar hero 2083850919 0.235294 \n", "25 Darkstar hero 1276753309 0.500000 \n", "71 Firestar hero 274821742 0.500000 \n", "121 Star-Lord hero 1061867605 0.444444 \n", "189 Northstar hero 1260880284 0.444444 \n", "292 Starfox hero 1594294259 0.571429 \n", "323 Ultimate Firestar hero 1718026772 0.235294 \n", "338 Shatterstar hero 1241925506 0.363636 \n", "401 Upstarts team 839851079 0.500000 \n", "443 Starjammers team 895117495 0.363636 \n", "474 Starforce team 1605941117 0.444444 \n", "536 James Proudstar hero_alias 268149375 0.266667 \n", "587 John Proudstar hero_alias 880197081 0.285714 \n", "604 Anthony \"Tony\" Edward Carbonell Stark hero_alias 2007806013 0.108108 \n", "661 Moonstar hero_alias 294373473 0.444444 \n", "750 Star-Lord hero_alias 92571479 0.400000 \n", "831 Starlord hero_alias 1788314407 0.444444 \n", "832 Star Lord hero_alias 925434646 0.400000 \n", "1010 Anthony Edward \"Tony\" Stark hero_alias 2138996395 0.142857 \n", "1011 Tony Stark hero_alias 182299133 0.363636 \n", "1014 The Star Spangled Man With A Plan hero_alias 1915573563 0.117647 \n", "1069 Firestar hero_alias 1580065367 0.444444 \n", "120 Groot hero 74671434 1.000000 \n", "\n", " query_label query_id \n", "285 guardians 0 \n", "427 guardians 0 \n", "507 guardians 0 \n", "1019 guardians 0 \n", "10 star 1 \n", "25 star 1 \n", "71 star 1 \n", "121 star 1 \n", "189 star 1 \n", "292 star 1 \n", "323 star 1 \n", "338 star 1 \n", "401 star 1 \n", "443 star 1 \n", "474 star 1 \n", "536 star 1 \n", "587 star 1 \n", "604 star 1 \n", "661 star 1 \n", "750 star 1 \n", "831 star 1 \n", "832 star 1 \n", "1010 star 1 \n", "1011 star 1 \n", "1014 star 1 \n", "1069 star 1 \n", "120 groot 2 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# find the nodes similar to 'guardians', 'star' and 'groot'\n", "matches = pd.concat(search(id_, label) for id_, label in enumerate(query_labels))\n", "matches" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fornax enables a more powerful type of search. \n", "By specifying 'guardians', 'star', 'groot' as nodes in a graph, \n", "and by specifying the relationships between them, \n", "we can search for nodes in our target graph with the same relationships." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating a target graph\n", "\n", "Fornax behaves much like a database. In fact it uses SQLite or Postgresql to store graph data and index it.\n", "To insert a new graph into fornax we can use the following three steps:\n", "1. create a new graph\n", "2. add nodes and node meta data\n", "3. add edges and edge meta data\n", "\n", "The object `fornax.GraphHandle` is much like a file handle. It does not represent the graph but it is an accessor to it.\n", "If the `GraphHandle` goes out of scope the graph will still persist until it is explicitly deleted, much like a file." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "with fornax.Connection('sqlite:///mydb.sqlite') as conn:\n", " target_graph = fornax.GraphHandle.create(conn)\n", " target_graph.add_nodes(\n", " # use id_src to set a custom id on each node \n", " id_src=nodes_df['target_id'],\n", " # use other keyword arguments to attach arbitrary metadata to each node\n", " label=nodes_df['target_label'],\n", " # the type keyword is reserved to we use target_type\n", " target_type=nodes_df['target_type']\n", " # meta data must be json serialisable\n", " )\n", " target_graph.add_edges(edges_df['start'], edges_df['end'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the `graph_id` to access our graph in the future." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "with fornax.Connection('sqlite:///mydb.sqlite') as conn:\n", " target_graph.graph_id\n", " another_target_graph_handle = fornax.GraphHandle.read(conn, target_graph.graph_id)\n", " print(another_target_graph_handle == target_graph)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating a query graph\n", "\n", "Let's imagine that we suspect `groot` is directly related to `guardians` and `star` is also directly related to `guardians`.\n", "For example `groot` and `star` could both be members of a team called `guardians`.\n", "Let's create another small graph that represents this situation:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "with fornax.Connection('sqlite:///mydb.sqlite') as conn:\n", " # create a new graph\n", " query_graph = fornax.GraphHandle.create(conn)\n", "\n", " # insert the three nodes: \n", " # 'guardians' (id=0), 'star' (id=1), 'groot' (id=2)\n", " query_graph.add_nodes(label=query_labels)\n", "\n", " # alternatively:\n", " # query_graph.add_nodes(id_src=query_labels)\n", " # since id_src can use any unique hashable items\n", "\n", " edges = [\n", " (0, 1), # edge between groot and guardians\n", " (0, 2) # edge between star and guardians\n", " ]\n", "\n", " sources, targets = zip(*edges)\n", " query_graph.add_edges(sources, targets)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Search\n", "\n", "We can create a query in an analogous way to creating graphs using a `QueryHandle`,\n", "a handle to a query stored in the fornax database.\n", "To create a useful query we need to insert the string similarity scores we computed in part 1.\n", "Fornax will use these scores and the graph edges to execute the query." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "with fornax.Connection('sqlite:///mydb.sqlite') as conn:\n", " query = fornax.QueryHandle.create(conn, query_graph, target_graph)\n", " query.add_matches(matches['query_id'], matches['target_id'], matches['score'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we can execute the query using a variety of options.\n", "We specify we want the top 5 best matches between the query graph and the target graph." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 69.4 ms, sys: 2.35 ms, total: 71.8 ms\n", "Wall time: 74.1 ms\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/dstaff/anaconda3/envs/fornax/lib/python3.6/site-packages/numpy/core/records.py:513: FutureWarning: Numpy has detected that you may be viewing or writing to an array returned by selecting multiple fields in a structured array. \n", "\n", "This code may break in numpy 1.15 because this will return a view instead of a copy -- see release notes for details.\n", " return obj.view(dtype=(self.dtype.type, obj.dtype))\n" ] } ], "source": [ "with fornax.Connection('sqlite:///mydb.sqlite') as conn:\n", " %time results = query.execute(n=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualise\n", "\n", "`query.execute` returns an object describing the search result.\n", "Of primary interest is the `graph` field which contains a list of graphs in `node_link_graph` format.\n", "We can use networkx to draw these graphs and visualise the results." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def draw(graph):\n", " \"\"\" function for drawing a graph using matplotlib and networkx\"\"\"\n", " \n", " # each graph is already in node_link_graph format \n", " G = nx.json_graph.node_link_graph(graph)\n", " \n", " labels = {node['id']: node['label'] for node in graph['nodes']}\n", " node_colour = ['r' if node['type'] == 'query' else 'b' for node in graph['nodes']]\n", " pos = nx.spring_layout(G)\n", " nx.draw_networkx_nodes(G, pos, node_size=600, node_color=node_colour, alpha=.3)\n", " edgelist = [(e['source'], e['target']) for e in graph['links'] if e['type'] != 'match']\n", " nx.draw_networkx_edges(G, pos, width=3, edgelist=edgelist, edge_color='grey', alpha=.3)\n", " edgelist = [(e['source'], e['target']) for e in graph['links'] if e['type'] == 'match']\n", " nx.draw_networkx_edges(G, pos, width=3, edgelist=edgelist, style='dashed', edge_color='pink')\n", " nx.draw_networkx_labels(G, pos, font_size=12, font_family='sans-serif', labels=labels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Result 1 contains the best match. The three query nodes (in red) best match the three target nodes (in blue). The dashed lines show which pairs of query and target nodes matched each other. The blue nodes are a subgraph of the target graph. Note that the result does not describe the whole target graph because in principle it can be very large.\n", "\n", "Here we can see that the blue subgraph has exactly the same shape as the red query graph. However, the labels are not exactly the same (e.g. `guardians != Guardians of the Galaxy`) so the result scores less than the maximum score of 1.\n", "However, we can see that our query graph is really similar to Groot and Star-Lord from Guardians of the Galaxy.\n", "Since this is the best match we know that " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/dstaff/anaconda3/envs/fornax/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py:611: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)\n", " if cb.is_numlike(alpha):\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i, graph in enumerate(results['graphs'][:1]):\n", " plt.title('Result {0}, score: {1:.2f}'.format(1, 1. - graph['cost']))\n", " draw(graph)\n", " plt.xlim(-1.2,1.2)\n", " plt.ylim(-1.2,1.2)\n", " plt.axis('off')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Results 2-4 have a lower score because `star` matches to a different node not adjacent to Guardians of the Galaxy. Further inspection would show that `star` has matched aliases of Star-Lord which are near Guardians of the Galaxy but not ajacent to it." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/dstaff/anaconda3/envs/fornax/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py:611: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)\n", " if cb.is_numlike(alpha):\n" ] }, { "data": { "image/png": "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gW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT5hgW+MMT7x/xAFWiuBvNhYAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xd81dX9x/HX52YzkhAgYe8lQxDiwEFw29ZVra3b1lFta2ttrVZre7mu1lZrtbX9KQ7q3tbRusfVWkSvAoqyZI8EhAxCgKz7+f1xvje5hIwbyL6f5+ORB8l33XNvyPuee75niKpijDGm6/O1dwGMMca0DQt8Y4yJExb4xhgTJyzwjTEmTljgG2NMnLDAN8aYOGGBbzolEZkpIuvbuxzGdCYW+GafichqEdkpIttFpEBE5ohIj3YowzExHvs7EdFYj+8MRCRFRB4QkW3e7+AXjRz7f97vKvJVLiKlUfsvF5GQt31OmzwB0yYs8E1LOUlVewBTgAOAa9u5PPUSkZHAGUB+e5clQkQSW+Ays4DRwFDgSOBqETmhvgNV9TJV7RH5Ah4Hno46ZCNwE/BAC5TLdCAW+KZFqWoB8Bou+IGa2udtIrJWRDZ5Ncw0b18fEXlZRIpFpFBE3hcRn7dPRWRU1HXmiMhNdR9TRB4GhgAveTXWqxsp4t3ANUBFrM9JRFJF5BER2eqV82MRyfH2ZYnIgyKyUUSKRORfUeddIiJfec/rRREZELVPReQnIrIcWO5tGycib3jHLxWR78ZaRuAC4EZVLVLVxcBs4PsxPLfuwOnAPyPbVPU5Vf0XsLUZj286AQt806JEZBDwDeCrqM1/AMbg3gRGAQOB33n7fgmsB/oCOcB1QLPm+1DV84C1eJ8yVPWPDZTtDKBcVf/TnOvjwjQDGAz0Bi4Ddnr7Hga6AROAbOAO77GOAn4PfBfoD6wBnqhz3VOBg4HxXvC+ATzmXedM4O8iMt673tki8lkDz6uX9xgLozYv9MrUlNOBr4H3YjjWdHIW+Kal/MtrB14HbAb8ACIiwA+BK1W1UFVLgVtwgQZQiQuroapaqarvaytM8CQiPb3HvWIvTq/EBf0oVa1W1U9UdZuI9Me9uV3m1awrVTXonXMO8ICqfqqq5bgmrukiMizqur/3XpOdwInAalV9UFWrVHU+8Cyu+QlVfUxV92+gfJH7JSVR20qAnjE8twuAh1rjNTcdjwW+aSmnqmpPYCYwDujjbe+LqwF/4jWHFAOvetsB/oT7NPC6iKwUkV+3UvlmAQ+r6uq9OPdhXDPVE17TzR9FJAlX4y9U1aJ6zhmAq9UDoKrbcU0kA6OOWRf1/VDg4Mhr5L1O5wD9Yijfdu/f9Kht6UBpPcfWEJEhuN/XQzE8hukCLPBNi/JquHOA27xNW3DNHxNUNdP7yvBuFqKqpar6S1UdAZwM/EJEjvbO3YF7s4hoLPyaqqEeDfzM68FSgAvrp0TkmhieU6WqBlR1PHAorjZ+Pi6ws0Qks57TNuJCHKhpK+8NbGigzOuAYNRrlOk1T/0ohvIV4W5CT47aPBn4oolTzwM+UNWVTT2G6Ros8E1r+AtwrIhMVtUw7gbiHSKSDSAiA0XkeO/7E0VklNf0UwJUA2HvOguAs0UkwetxktfIY24CRjSy/2hgIu4+whRcIF+Ku4mLiMwSkXfrO1FEjhSRSSKSAGzDNfGEVTUfeAXX1t5LRJJEZIZ32uPAD0Rkioik4JqT5jXyCeNlYIyInOddJ0lEDhSR/Rp5TtEeAq73yjEOuAT3xtuY8+s7RkQSRSQVSAASvJvWLdGTyLQzC3zT4lT1a1wARW7MXoNrtvlQRLYBbwJjvX2jvZ+3A3OBv6vqO96+K4CTgEjzRk0PmHr8Hhd4xSJyVT1l2qqqBZEv3BtLkdfUAq7G/0ED1+4HPIML+8VAENfMA66WXAkswd27+Ln3eG8Cv8W1w+cDI6m9b7EH797Gcd4xG4EC4FYgBUBEzhGRxmrsfmAFrhkpCPxJVV/1zh3i9V4aEjlYRKYDg9i9O2bE9bhPZb8GzvW+v76RxzadhNi9GmNARBYAR6uqdUU0XZYFvjHGxAlr0jHGmDhhgW+MMXHCAt8YY+KEBb4xxsQJC3xjjIkTFvjGGBMnLPCNMSZOWOAbY0ycsPkxjDFtTgQfbvrmJG/TLqBMtXlrIZjmscA3xrQJEZJxcxaNx81P5KN2xlABKkXYAHwJbFSlul0K2oXZ1ArGmFbl1ebH41b3SsJNQldG7ayoEQm4Wn8P3GR6QVXWtmFRuzwLfGNMqxEhHTgKtyBMPlAV46lpuEVyvgQ+UI19DWLTMAt8Y0yrECETN711Anu/IPoA3FTRr6pS3lJli1fWS8cY0+JESAO+5f24L1NOb8Qt6n6M1zRk9oG9gMaY1nAIbnnK4ha4VgFuuchYV/8yDbDAN8a0KBEG4sK5oAUvmw8cKkLPFrxm3LHAN8a0tKm4njgtKXKzd/S+XERE3hWRi1ugPJ2SBb4xpkEicoqILBCRbSKyRUTeFpHh3r5ZIvLI7seTCQzELUi/l7rfB1dNrmfHVmCyiI0f2lsW+MaYeonIKNxi9L8EMoDhwN3Q6ICoPhDraNnS5uZPJZAMZDZ1oIjYm0I9LPCNMQ2ZAqxS1bfUKVXVZ1V1rYicAFwHfE9EtovIQnfKCRdCLz8kPQk9ZsMpJ9Re7tqJ0O1BOOp0SH0Ipl3R/CJdeDgkfyIihSLyoogMiOwRERWRn4jIcmC5t+1YEVkiIiUi8jfciN64ZYFvjGnIp8A4EblDRI4UkR6RHar6KnAL8KSq9lBVrwlmbBju/wPs/B5ccSf8+2L484jaS+7qBaU9YO2FB49/9ZkbL9zw7diLc83+8Pip8PPfAP2BNcATdQ46FTeid7yI9AGeA67HffJYARzWvJega7HAN8bUS1VXAjNxbfJPAVtEZE508O/pzgVwWr6bpuvmRTBwPrw+IeqAMLz4GGRXfbx4+LohORXTUpPDMebQi3lw4Pvwx5WqWg5cC0wXkWFRB/1eVQtVdSfwTeALVX1GVSuBv9CyPYc6HQt8Y0yDVPVDVf2uqvYFjgBmAL9p+Iwr94ecWyD5MUh+HNZN65NRPfjOn6794XG5OZMhZRv0rwQIq/Dre0/OqqhMfRoSn4Kz8xovTWkWDCzEteWjqttxN3IHRh20Lur7AdE/q5tWIHp/3LEbG8aYmKjqxyLyHDAxsil6v4ikgO9quPy+3um/fe+ib1Ue+sqH37tov6GjTxjev5zJozPWvR6S3c7ZvmPBz8BXFVvTes9C2NQXKPQerzvQG9gQXcyo7/Nxs3NGyifRP8cjq+EbY+olIoeLyCUiku39PA44GfjQO2QTMExEIjmSDOGkUw6beui9VxU9kJb87yuWrv+4pvkns3vS4ASfLyH6MUp3JlSFtb6wr0iE/KTar1IffOs9mHsoHDnYvblwCzBPVVc38BT+DUwQkdO8Xjs/w03LHLeshm+MaUgxLuBv8mrTW4AngT96+58GzgW2Zmf2KtF3P95w2xPP+G546KoD3vyknAPHHcnB444irBou2Jr0wUsf5C+rDodPje2h/+qHv0b9fMhTMPdJyH8OHrsf6AX8DzizoSuo6hYROQO4C3gQeBj4oDkvQFdjs2UaY/ZeMOQDvsL10QfgPx+ms6UkkdRkzV+2PvW1x9/MeuvLNWn7MBCrRj/gY1UWtMC14pLV8I0xey8vN0ww9G/gcm9L1ahB5a/8+amcVe8uSH+7Oix1FznZW0m4hv6vWuh6cclq+MaYpgVD44FLgRTyci+rs28i8C9gNjCHvNxNIswAxtJy3SAHA2+rsqSFrheXLPCNMfULhtKA7wA/BA73tlYCg8jL3VznWCEvtyZMREjFDYJKwetVsw8ig6zeUN1jWUTTDBb4xpjdudr8D4HzcTdH6/opebl/a+oy3vKGJ+Hmv9myFyURXNhvAF63ZQ73nbXhG2MitfnTcc02h9dzRBWu2eZe4K1YLqnKNhFeAPJwC5hsgphDuzuQBXwGzFN1g63MvrHAN8aA67b4vXq2r8KF/BzycpvdHq/KdhFeAcYA03FNPNu9r7qzbiYBPXErZRUBL6juNqjK7CMLfGPiTZ32ds+j1AZ+FfACcA/wFnm5+9Ru7rW7LxHhK2AQMA7XVJNM7chYH1AGrAWWAJusvb7lWRu+MfEiGBqHa5s/AZhCXm5F1L5E4G3gFeDBvanNN4cIgqvJR0K/XJWdrfmYxgLfmK4tGEoFTsO1zc+I2vM98nKfap9CmfZiTTrGdEXB0Fhcbf4C3ARjdZ2Cm/LYxBELfGO6imAohdrafH1TDVcDL+La5t9ow5KZDsIC35iWIpKEW/u1O5CAC9jtQAmqVW1Qgotwa87WtQY3CvZB8nI3tkE5TAdlbfjG7AuRBNwCHJNxC26AGzAU+cNS7+c1wOdAPqr73vskGEoGKnfrbRMMZQIbgTTcm81LRGrzebmNLTxu4oQFvjF7S6Q/cBSQDmzzvuo9Elfz74FboekdVL/eq8cMhkbj2ua/D3yLvNyP6uy/GdiJq81bH3azGwt8Y5rLLfhxEDAVN09MWTPOTve+5gILieUP0LXNn4prmz8yas/95OVe3IzHNnHOAt+Y5nBhPwMYj5vjZW+aZyLNQJ8A8xoMfVebvwT4AdCnniMWA5OsucbEym7aGtM8U3Fhvy+LYVd7508DSoEvava4tvlv45ptjqrn3DCubf5e4DULe9McFvjGxMqt7XoQtMj8Loq7wXoYIhtQLfa2DweeqOf4dcB9uGYca5s3e8WadIyJhYjgZpNMxtXK911at0QSEvqyvXQ9qv+p2R4MvYvrRx/GLcR9D/Cq1ebNvrIavjGxycG1o+977Xry1P4cNuM4+g04hrWrX+K+v/8PkV6oFnlH3Aa8g6vNr9/nxzPGY4FvTGz2A3bVt+MwOGsz9F8Of27w7LRuiXzz5IMZPfZ40tOn1GwfNOR4EhLep7p6FPAxAHm5LwMvt2ThjQELfGOa5ppzhgHFTRy5p/2n9OPwmcfTr//RJCZm7nltfDtGjk7ttmzJMCKBb0wrscA3pmmRaXyrjoLT58JJVZCWBoXnw/1z4QxAEuGQnlBQlJT082uGj7zkmc0Fx2xesjil77q1XDPjKC49eDoA76z4Knzm4w9Vn9C793tPrls7bQicugyeRCQJVVvZybQaC3xjmtYN0Dkw8EP41gvwi+Og8FnIrgTffHg60qQTFmFb9+7dDjkg97AfDhqcMiKrN++tWsk3/jmbA3Jyig8S36vzXnx2zdc7yn715Y6y4rVwYYVb/KMPbkoEC3zTaizwjWmaACRDOAxJr8Pgg6DkdNgM8NeoAwv69cvaMHDgyKMzMv+b3rvPiSia17t3aGxat/RZs//x/n80/GIJTATCL8Jj2W51Kaidc8eYVmOBb0zTqgE5Gzb+G2Y/BGffBUMGw6f/gPtrDvL5ZFNOziCAW995vfK5LVuKVxUXJYVVx1dBSiosiBybAtv6716bF2rD35hW4WvvAhjTCdT0u38U3tsM1yyACwX0crhAvJkxNw4Y0LcqMTGlrLo64Y/Ll504vbjo3gLVcyvgrMFuGoWaGrzUzqYJ7u+wCtjRVk/IxCcLfGOaoloBFD0GI66B/TdDYg5UJkGFgGZBcQnk5PfpMxBgZzicUA2J/VWLe0D1z2DaBjigkUfoDhTENJGaMfvAmnSMic0yhQn3wVl/hkEC1Tmw+H64OxMqT0lIOG7GwoXXZiQmFr86ceLfvwn33g5X/wmShsFHQ2FeI9dOB0Jt9DxMHLOpFYyJhUgP4Fzc/De7/dGUJycnLpo0aXLYzaRJ//z8VYM2bNgS45UTcD10Hka1vCWLbExd1qRjTCxUtwOLcFMs7Gbd4MH9I2GfVFm5a8DGjbGGPUA/4FMLe9MWLPCNiV0IKMe1uQOwMzU1qTgzs+ZNoF9BwXpf7J+aM4Ai4LOWLKQxDbHANyZWqruAN4BMIAVg3ZAhA9VNvUBKeXlZv02bihq5QrTuuAFdb7bRAufGWOAb0yyq+bgpi/uUpaX13Zae3jeya8DGjbEuitILt77ti6hubYVSGlMvC3xjmkt1HfBsfv/+/Xpu29bbV12d0G3nzm19tm5tap78ZGAQsB14FtWCVi+rMVGsW6YxeyEwa1Zlyq5dX06ZP79syNq1I4asWbMFyMItaB59AzYV13yTBuwE3gOWoGqLmZg2Z4FvzN7Zrzw1tXre9OkrF02a9OFVt922GRgMDAB6e8cIUAgsxy1RuMGC3rQnC3xjmikQCPTF9Z0H0LIePb7wum2uAsB10fQBYVTD7VNKY/ZkgW9MMwQCAcGtfhWxzu/3b9/tIBfyFvSmw7GbtsY0T39c/3lwob60HctiTLNY4BsTo0Ag4APGRW1a6ff7613n1piOyALfmNgNpnaUbSXwVTuWxZhms8A3JgaBQCABGBO1aYXf77flCE2nYoFvTGyG4/rUA+wCVrZjWYzZKxb4xjQhEAgkAaOiNi3z+/3Wn950Ohb4xjRtFJDkfV+GG0RlTKdjgW9MIwKBQCquOSdiqd/vtz72plOywDemcWNwq1IBlOBWvDKmU7LAN6YBgUCgOzAkatNiv99va4KaTssC35iGjcVNgAaw1e/3f92ehTFmX1ngG1OPQCCQAQyM2rS4vcpiTEuxwDemftETpBX4/f5Yly40psOywDemjkAg0AeILF2owJJ2LI4xLcYC35g9RU+Qtt7v9ze1dKExnYIFvjFRAoFAP9wi42DTH5suxgLfGE89i5us9vv9O9urPMa0NAt8Y2oNAnp431fh1qI1psuwwDeGmsVNxkZtWuH3+yvaqzzGtAYLfGOcYUCa9305Nv2x6YIs8E3c86Y/Hh21abnf769qr/IY01os8I2BEUCy9/0OYE07lsWYVmOBb+JaIBBIAUZGbbLpj02XZYFv4t1oaqc/3gZsaMeyGNOqLPBN3AoEAt2AoVGbltj0x6Yrs8A38WwstX8DhX6/f1N7FsaY1pbY3gUwptWIpAI9cU02YdwN2TJUNRAIpOMGWkXY9Memy7PAN12LSAauXX4MkI6b7TLSTCNABSKr9zvjjJQl++2H+nwAm/x+f2G7lNeYNmSBb7oGkW7AIbigrwYKqf8GbMK2Hj3GT164cPzo5cu3zZ86ddG6IUOCbVlUY9qLqNo9KtPJiQwCjsU13TTZDv/5xIn77UpN7ZGya1e3rMLCikEbNz4DLEDVumOaLs1q+KZzExkBnABsAZqc2XJzdnbmrtTUHgAVKSllvYqKFuE+GfRE5H0LfdOVWS8d03mJ9MeF/SZiCPuwCPn9+9fcqM0oKdncfefOXcA6YAIwrbWKakxHYIFvOieRFOBoXFt9TLNaFvTr17siKSkNQFTDg9et2xi1ewNwICI5LV5WYzoIC3zTWU0BugFlsRxc7fPJppycgZGfswoLC1LLy6MnSAsDxcCRiNjfhemS7D+26Xxc7X4SsDnWUzYMHJhdlZiYcvT8+T97pqBgyOB16/Jnwhnj4adRh5Xiljcc0LIFNqZjsJu2pjMagvu/Wx3LwZWJib4tffvWhHi4tHRrUlVV+F14up7DtwMTgfUtUVBjOhKr4ZvOaBhNNOWURv3fXj9oUL9qny9SuVEtKSlu5NQSYDAiCY0cY0ynZIFv2pyITBWR+SJSKiJPi8iTInKTiHxfRP5b51gVkVHe998SkfnJ8GJ3uOMwOCty3LOQLfDi6XBsN3hgFNwMcJbPd/TkdetuPeLTT6/67cqVh4fD4Wq8kbeHwVmj4ReRa4yAa1LhnylwVzK8LyITosoxR0TuFpF/e+WeJyIjvX0iIneIyGYR2SYin4vIxFZ9EY3ZCxb4pk2JSDLwPDAHyAIeB74d4+llfeHCMrjyVgh8At/4IRwcfcDnMHER/OgT8M+Gwc/DT64cOvTFlw48cPa2ysrkHaq9Grr4VPhkIVxaAFelw5fAo3UOORMI4Nr5v8J7UwGOA2bgRvlmAN8Ftsb4nIxpMxb4pq0dgmt/v0tVK1X1OeCjWE5U1Xc3w5dJoJfD6v3gvY9de3uNG+GxEVA+CCpC+0380akT9k+89jvnTEtMz+gTGDHifVxvnHo9A2+OhZ29oOoO+AswWdzcPBHPq+pHqlqFezOY4m2vxE3SNg43en2xqubH+oIY01bspq1pawOADbr7nB7rYjlRRA4WuDUFplWBLwxJI2G3JqDj3Yhb+OFPvicLPp04OCWF1MzM8ZNGjtm0qqhwRarPt5NwWOpeewf4ZsJ5X8JhFZBZVdu3vw+uXR+gYPdT6AGgqm+LyN+Au4GhIvIccJWqbovleRnTVqyGb9paPjBQRKJDd7D3bxmubz0AItKvzrmPKbywBn5aCefvD6+omwGzRgIoF//odIaNOKd/z56sKy6msqT4s7ULQnNLqqoSy8Ph7r7s7AHVPt9u510EeUvg4Afhtzvh51e7bp9Q5/oNUdW7VHUaMB7XtPOrWM4zpi1Z4Ju2NhfXnfJyEUkUkVOAg7x9C4EJIjJF3Fz2s+qc2xMozIY1f4NJiyGv7sWTz7/4ZEaMugDgOxMn8+LiReE/3HHrk4kbN26YtWrVTAUhNbXHsjFjRkSftx3SEqByImwvgIQ/wq9jfUIicqCIHCwiSbg3rV000nRkTHuxwDdtSlUrgNOAi3AjW88FXgbKVXUZcAPwJrCcOs01wI+BG3zw0l1w2pg995MwesyFke8ndOv+2beRv/++ouLKA9eu/UNqZeXXPRIStgFs79EjK7l795obuHfA2+mweTI8OAp+p/BhM55WOjAbKALW4G7Y/qkZ5xvTJmx6ZNPuRGQe8H+q+mCMJyTh3ihKcDdM4dwLT2D8hB/XHLN9+xf8485ZFBWWR5+6fNSoIcWZmTXz5WSWlGwevXz5mqhDBgHPoxrdXm9Ml2A1fNPmRCRPRPp5TToXAPsDr8Z8AdVK4FMgG4CzLzhmt7AvK1vCvX+7oW7YA4xcsWJt+rZtWyI/F2dkZH81cmTkHkIv3D0GW9vWdEkW+KY9jMW11xcDvwS+sxfdGL8AttCte1/GjPtuzdYdO5Zz399nseXreqdL9qkyevnyVT1LS2v6yRf16tVv9ZAhg3E3jIPYx17TRVmTjum8RHoDpzNqdBLnXng91dU7uO8fvyF/Q5MzaFb7fLJ07NhRZd27Z0o4LOmlpX1Ke/Z8Ydonn8T+ScOYTsYC33RubhGUExkyPBUNb2XdmtJYT632+WT56NHjfeHw0NXDhi2de9hhK4DP/X7/6lYrrzHtyALfdD7BUAZ5uSU1P4v0wS2G0gs3OCqmWTSBPtU+X9Ibxx5bPG/69OgmoAV+vz+mwWDGdCbWhm86l2DoG8BqgqFjarapbgEiUzT0AQbi+uzXnfFScO30/XC9cdYnhMOPz5s+/Tlcl8qIyYFAwObEN12O1fBN5+FC/mUgBSgHTiQv983djnGLowwFRgL9gaSovYqbemEVsIKoqQ8CgUAScCiuT33k2JDf77fumabLsMA3nUMwNBP4D5DmbVkN5JGXu7bBc9z0DWm4OaPCwE5UG2zuCQQCycBheHPkeOd85Pf7v97H0hvTIVjgm44vGDoMeA3o7m1ZD8wgL3dVSz9UIBBIxdX0I49VDczz+/023bHp9KwN33RswdDBwCvUBnA+cGRrhD2A3+/fhZvvJ3ITNwE4KBAINDiPvjGdhQW+6biCoWm4mn1Pb8sm4Cjycr9qzYf1+/07caEfGambCBwcCATSGz7LmI7PAt90TMHQZOAN3ApS4G62Hk1e7pK2eHi/31+GC/3IvPhJwPRAINCj4bOM6disDd90PMFQNm7qhD7elkJczX5hWxclEAhkANOp7e2zC/if94ZgTKdiNXzT8eTlbgbu8H4qBo5tj7AH8Pv9JcA8oMrblIqr6ac1fJYxHZPV8E3HFQxdAcwlLzemNW9bUyAQ6I1bjzdSSSrD1fR3tV+pjGkeC3xjYhQIBPriVueKhH4pLvQrGj7LmI7DmnRM+wuGhhIM/R/BUGp7F6Ux3gCsT3CjcMH1HjrEG6VrTIdngW/aVzA0CHgbuBR4gWCoQ7eNe1MtzI/alIHrspnYTkUyJmYW+Kb9BEP9cWEfWVB8JjCl3coTI7/fvwG3gEtEL9zgrLqTtRnToVjgm/YRDOXgwn60t6USOJ283LntV6jY+f3+tcCiqE29gdxAIGB/U6bDsv+cpu0FQ32AN4Fx3pZq4Hvk5b7cfoVqPr/fvwpYHLUpG5gWCASknYpkTKMs8E3bCoaycCNoJ3pbwsDZ5OU+336F2nt+v/8rYFnUpn7AARb6piOywDdtJxjKBF6ntp1egfPJy32q/Qq17/x+/1JgRdSmgcD+Fvqmo7HAN20jGErHzXo5LWrrheTlPtpOJWpRfr//S9wc/RFDgAkNniAiiPREZCAiQxEZgki2t4CLMa3CupKZttKT2rlxAC4lL3dOO5WltSzCTac82Pt5eCAQqPb7/bXt/CJZwFjc/YvkOucrIIhsxfUCWoOqDeoyLcZG2pq2EwwNBN4C/kpe7t3tXZzW4DXjTAWi18Rd4p81awNuErYxuBk4C6mdn6eu7kCmd9z7wFfYH6ppARb4pm0FQ2nk5e5s+sDOy+uamQvkAIxatizrmDffzMnZvLkQN6d/rJK9a6wE3kXV5u0x+8QC37SOYCgFmNwRJj5rD17oHzR28eL9pn766YE70tK29SksXDZo/fq9WR83B/eJ4D8W+mZfWOCblhcMJQPPAMcDp5GX++92LlG7KM7MzC7q1euq4oyM6qqkpEqAgRs2rByQn7836+PmAAW40A+3aEFN3LBeOqZlBUOJwGPASbgmiecJhvZr30K1A5HEzJKSmYPXrfs8IRwujmzeOHDgiPx+/bL24oqbcD1/xrZYGU3cscA3LScYSgAeBk6P2vpnoE2WJexgxgFZidXVxeOWLFmaXFGxE1w3nA2DBo3cnJ2duRfXLAAOR6RbSxbUxA8LfNMyXNg/CJwZtfUO4FrycuOr3VAkAddT52uA5MrK6rFLly5JqqzcBS701w4ePOrrPn2auyh6Je5vdmRLFtfEDwt8s++CIR9wD3Be1Na7gV/GXdg7/XFdK2sS+jDBAAAXD0lEQVT60KeWl1eNXbp0SWJVVTmAisiaoUNHF/bq1dxF0bcOgqcSRS5pwfKaOGGBb3YjQqoI2SIMEmGgCH1F9hggVCsYEly4XxS19V7gZ3Ea9uDm09ljwFTarl2VY5YtW1JdUVEFoCK+VSNGjC3KzOzejGuXJ4CvF9iIXNNs1kvHIEJ33Jz0k3AjYt2Iz90VAp8Ba1RxXQNd2P8F+FnUcXOAi8jLjbueJCIyFbg/EcYNh4XVUJkNG2fCgjvhl4fAy/+DU4aKfPb4lClv/mnDhoNe2br1sF3hcGoOfDlb9a/HudeZG2DcnXDJNhiYDhuugNm/gyWHwLkfwRnq3lCqgDmqenl7Pm/TeVgNP46JkCRCLnAucCiujXgjkO/9G/3lA44EzhVhggg+II/dw/5R4OI4DXvXIwnmFMJPjoTgKrfoOQC7oFcp9FgLF76leteTX3yR+K8tW46679gTvggePmN235SU7efBrwBC0OMm8B8HLxfC2d+AF24C/0fQ80N4ZDAsnwI3qmoPC3vTHBb4cUqEXsBpuBGhBbhQb2xQzw5gA7AVF/Qnyczcj4FfePufAr5PXm51qxW6YzsENzfVXT2Be+B/fWB51P7wi/BYNlQNgooXKyqmnzJsxKrvzDjq8Nyjjj/z2QGDnvgaxj0L2bfDgT1h4+PwTk8IPwLvZcD629wC6iiQYH+7Zi/Yf5o4JEJv4Nu4fvIbcHPSx6oKWAdkAafIzNzZwInAueTlNjQ3TDwYAGxQ10ZaASSke710AFJgW3/3CQqA1F5ZY4+YMGkCQEJKSvbQk08/LRlKP4femyArAzZHXzwdNm9yq2ohQFXzfmfGABb4ccdrrz8RV5svbuLwPSQnhSP/Z7YAScA3ZGbu6+TlVjZyWjzIBwaKiODCuts26BvZKa5i7px53pFTR4wasqa4yP28ffsXq+//x5wK6DkJtuZAYYlbPavGNuib4z5dAWgJdOn5iEzrsMCPIyIIbsbGRKC0ueffcOGGb9/7yzWz+mZURnrtFOJqnR1+4fE2MBe3VOPlm2HTtTB9S+16vbVOP/MwJk254qzJB/DgJx8zb/nSNVvu+estp5ZuO7MPLDsdNl8JoVIYcA7MKAXfBXB4CQy+Ej4CSIfSfNcTyJhmscCPL4NwQ/M3N3VgXf4LNp44ZdSOH2SlV0257cfr/f2zKlK9XflArtdMFLfUzVt/GnBRDnzwEhwyBD5OimrG4eTTDmTqgVch+I4ZNYbrDpux5dg5s9MGbN1yz1boNwf+CHAQlF4LN7wC386Cx16C06+FG6a7N+meZ8LT5XCqiBSJyF3t8oRNp2TdMtuZiMwEHlHVQd7PXwA/UdV3W/6xOAlIB7bFftacgendr7+psrK497nHXclJh55P8faERb/6x+DApqKkcu+gbGCJKh+4xxEFRqvqVy38FJpNRL4PXKyqh7fxA5+aA7fNgJefhrf4xkmTOTzPj4hbdGhX+Xr+Ofta1qwqaeaVB+EmUFvT4mU2XV7c1/BF5EwRmSciZSKy2fv+x15bbJtT1QmtFPaZuLVWmxH2MDTn/p/OnHJs7ydnzeekQ8+npCxh8a/vHXRjbdj3uwVOPwCYINLyg4FEJFlEficiS73f0QYReUVEjmvpx9pXIpInIv1EJHEcDNsKQy6D+Rx9/H4clnd9TdhXVBTw+D+v34uw7wkU4W60G9NscR34IvJL4E7gT7g20RzgMuAw9lx+riUerz2XlOxN9I3DGPzqzIIjM3pUjx+SPQqAbTsSlv3mvoGBjVuS69wwrJmut1cLlLOuZ4BTgPO96w/H/c6+1QqPta/G4pYmLF4KF54Lvz0akpl64Kn4vLVqKyu38PRj17N8aWEzr+3DrYL1Nqrx3BvK7IO4DXwRyQBuAH6sqs+oaqk681X1HFUt9457V0Qujjrv+yLy36if7xSRdSKyTUQ+EZEjovbNEpFnROQREdkGfF9E0kRkjtf++iVwYJ1yrRaRY7zvDxKRuSJSLCL5IvI3b4BP5FgVkctEZLl3zN2RTyYiMkpEgiJSIiJbYOA91DPc37nsIMj4GyQ/7mrs9w+68oyCI16dd+qVi1bO456XbuA7/v31F3+b+4+1m1J21J53yLmwaTy8cBkk3QUDb4+66DH1lcsr24Uisth7DV4TkaEN/I6OAY4FTlHVeapa4X29qqpXRB33axFZISKlIvKliHy7/ufZ5O/rPyJye9TPT4jIA96njEIRmRS1L1tEdohITU8cVb1XVXO8AVH7z3FvTNu4+88PUlISoqqqiOef/g1ffN7ceyg+XFPOXFSbff/FmIi4DXxcb5UU4IV9vM7HuF4qWbh54J8WkdSo/afgaqmZuJGoftxshyNxC4Rc0Mi1q4ErcYt/TweOBn5c55gTcW8a+wPf9a4JcCPwOq5WPAgufp16u/I9NADu+xVcfB9sPhcmhODnv5s6uujMmy95mPHDcjn7mF9vGZpTdO7m4nNW7H7uh49Azpdwyv9B5aWwIXqd2nrLJSKnANfhbnD2xa3Z+ngDz/8YYJ6qrm/kNQJYARwBZAAB4BER6d/AsY39vi4EzhORo0TkHNxApyu8G7JP4EYkR5wFvKWqDa9g5Van+jc7dpRyxx/u46lHr2bBJ/lNPJe6knFh/zGwoJnnGrObeA78PsAWjfp4LCL/82qkO0VkRiwXUdVHVHWrqlap6u24N5HoRSrmquq/VDWsqjtx4Xezqhaq6jqgwV4WqvqJqn7oXXs1bkbKvDqH/UFVi1V1LfAOtV0kK4GhwABV3QWBpdTbpHPfETDkY7h9AWRWw3+eh6rk6+5/8qntu3RLRVVV5dsLV87NL65sqp+94rp7NlWuy4Dfq+pi77W/BZjSQC2/D24UMAAikuX9fkpEpGZUsKo+raobvdf4SdwI14PqLWQjvy9VLQB+BPwTVzs/X1Uj3Vf/CZwV9UnlPNzc/3sKhmpnwFTdDrxARcUKFn2WAsQ6l73g3hB74d64P7aFzM2+iufA3wr0iW5XV9VDVTXT2xfTayMiV3nNEyUiUoyrZfaJOmRdnVMG1NnWYG8LERkjIi+LSIHXJHRLnWtDVCDipj+IhM3VuND4yPX8OW0mkLDnoxRlQVZULTVFofvX2ytWZT/0/vaHN2zduqm8ulrGjl06cdiwVQN8vuqGbmYnEN0FseFyDQXu9IK7GNeXX3A3lOvaiptqGADvTTITmEbUbJEicr6ILIi65kT2fJ0ixzb1+3rJey5LVbWm6U5V53nPY6aIjANGAS/u8QDB0CDgM4Khq6k9eSfwFvBvaptn+gJp7D5JXQKuF9UA73mvBp5EdbmFvWkJ8Rz4c4FyXJNLY8rYvVZWM+DFa/+9Gldr7+WFUQm7/xHX/UPNBwZH/Tykkcf+B261qNGqmo5rComp95CqFqjqJao6ALgU/vVjeLmeWnSvQijsW/tzFVDWt6howJJlazKXVVWHq91zVenTZ8vASZMWTejVqzB6DvfI80smaiqBRqwDLlXVzKivNFX9Xz3HvgUcKCKDGrqY98lgNnA50Nv7HSyintcpxt/XzcBioL+InFXnEv/ENeucBzyjdRcUD4ZyvDIPB24lGLq+Zp+q4j6lPYGbZG0xrsmuPy7gB+Bq84XAf4FHUH2b2k8Yxuyz9uw10q5UtVhEAsDfvY/pr+HCfX/c4hURC4DTROQ+3B/lRbj1RcF1k6vCBV2iiPwaV0NrzFPAtSIyz3ucnzZybE9cN8rtXq3yR8QWqojIGbjmpPW4rnwKyfXU8C/8L1z8Hbh6f7juC/jOyZBQCVctXrmyd5VIZVlVVbgm2JKSKtJGjlyxX0nJ1s2rVg1bV1XVvRg29AO+xIVnU/4PuFFEFqjqF97N8+NU9em6B6rq6yLyDvAvEfkJMN89j9pZKHGvoUZeFxH5Aa6GX59Gf19eM94PgMm46aKfF5H3VDXSDfIRXC+cUnZf7AWCod7Am8AYb0sl8MkeJXA19QIin4BEfLi/QwWqrCZvWlM81/BR1T/iZnu8Ghfim3Dt5NcAkRrnHbjeLZtwNbxHoy7xGvAqsAzXNLOLPZtw6gp4x67Ctc3W3w7sXAWcjQuY2cCTsT0zwN0wnSci24EXoedVcNxm9vidf38D/OB2uOdS6PsofH4g3H4j9HaLdKiGCwvL8zdtylmrKjUTdmVkFGdPmrRo/x49LngHFh8OKbdDwu+aKpSqPg/cCjzhNVMtAr7RyCnfBl7GhW0x7nU7B+8msKp+CdyO+8S2CTen/wcNXKvB35eIpAMPAZer6gZVfR+4H3gw0m7v3XP5FBfO79dcNRjK8K4deaOpBs4kL/eVpl4PVMOoVqBaaWFvWpuNtI0jIuThaq5b9ub8tLQdycOHrx7arVvZbgtwb9qU4ysq6vVCaWnPj1uinB2ZiDwAbFRV11zjbtC+hltPANybwXnk5T5a/xWMaT8W+HHEm+/mDFxzwl7PW9+vX35W//75QxISqpOqqhISd+1K63HccW+8lZVVNN/v969tsQJ3MCIyDNfEd4CqriIYSsN9+jgq6rAfkpc7ux2KZ0yTLPDjjAhTcV0W92l4flJSRcKwYauGgOw3ceKi+ZMnfx7pX74VWOj3+8v2tawdiYjciBsT8XtVvZlgKLLC1TejDruCvFybzMx0WBb4cUaERNy0BH2pvfm8twZmZ2/adNll95T4fBp9ozuMaydf4ff7u+ZCHcHQo7j7KxHXkZf7+/YqjjGxiOubtvFIlSpcm/NWXK+jvZkkzofrWrpi8+acl3w+DQJfUdtF0weMA44IBAKtMb9OR/AQtUtC3mxhbzoDq+HHKW9my4NwvVoKcV1SY5GJ6944D1igWnsvIBAIpOO6NGbWOWclsNTv93etSb+CoTxcb6HfkJdrf0imw7PAj3MiDML1MOmNG4i2nd3n3BHciNAeuMFVG4H/qdY/HiAQCAhu4NE4dh/ZuxP4zO/32+RfxrQTC3wTWfowGzeh20DcxGIRYVzzz1pgpSoxTesbCAS64Qax9a2zawPwhd/vL9/zrA4sGLoCeI683KbGWRjTYVngmz14N3Yjo7Aro5ttmisQCAzEDUiKXl+gEhf6nSM8g6HrcFMurAaOJi93ZfsWyJi9Y4FvWl0gEEgGJuAmDYu2BdfM03G7cAZDP8eNto54gLzci9qrOMbsCwt802YCgUBfXDNP9GR0YWAprgtnx/rPGAxdAtwbteVt4Fvk5e5q4AxjOjQLfNOmAoFAAm7++RHs3iV0G7DA7/c3d53X1hEMnYvrehkp4wfACeTlbm+/QhmzbyzwTbsIBAIZuC6cGVGbldounHt932CfBUOn4WY1jfQyCgHHkJfbMd6MjNlLFvim3XhdOEfgunBGDwLcgWvbj2kq6BYVDH0T+BeQ5G1ZBMwkL3drm5fFmBZmgW/aXSAQ6I5r26+7StV6XG+eBhZfb5zX26gbrlmmGtihSsNTPQRDR+FWpYqscbsMmEFe7r5OQWFMh2CBbzqMQCAwGNebJylqcwUu9JtayBwAETKA0bjBX5HxBEpt6G/GBflqVequWPUkbjUscF0wjyAvN6bHNaYzsMA3HUogEEjBhX7dNW6/xjXz7KjvPBHSgem4JqIq3OpbO+sc5sPV+NNxbwILgfmquE8QbgbMx4GDcTV7629vuhQLfNMhBQKBbFwzT1rU5mrcGr+rortwijAWyMMN6Ip1cRcfkIObSuJNVdyUD8FQIjCAvNwuO6+/iV8W+KbDCgQCidR24YxWAiyYNctfChyAmwsoH2hWW/+wfuXdVxekCK6n0MuqWPON6dIs8E2HFwgEMnFdOKMXiNdXXjlePvrowGGqCWuhkZux9Zg+YXv2L75b8IcVG1Jfv/begS8okgU829CkcMZ0BTYfvunw/H5/MW7R8CV4wb5xY/+eRUW9Tpgw4YtevXtv6d7oBeqYOros68ozNt2UkqR9xg/befatl60/DTfw62iR3W4YG9OlWOCbTsHv94f9fv9y4N3qat/WUGjahMTEyvLU1PLE4cNXjRszZunw5OTyxKauM37ozoyrzyq4KTU53A8gHKbyy9VpnwOluKadSa37TIxpP9akYzodEXKysrZeNGzY6iSfL1wz5344nFCVn99vTX7+gHqncB45YFePGy/aeHOPtOrhAKpU/+fDjJvveSk75B2SiOvK+XBNzx1juhALfNNpiMiZwJXg2x+SK6F7QUbGjIWjRl2zWKT2w+qOHd1KVq0avnrnzm41oT2ob0XaHy5df2N6t+oxAKqE3/40/U93PpvzQZ2HGQi//RJuCgJJqtq1Vukycc2adEynICK/BO6ExNtg5VVQeh785u6Sks/7rlmTuaq6OrEycmy3bjsyxo1buP+QIWtzRMLk9KpMueWS9b+LhD3Afz/veWc9YQ9QBvsNbovnZExbsxq+6fBEJAO3tOL5oG8AZ3k/Rxn389TUbklQ0r+8fO3QwYOvfDIzc8bGFSuuO06r10zqntoj4bjc73LGzMv4eGnPv9/8cO/X4Ngz4JPjoToZhnwKz90DEyuhx2woy6J2nd9jVXVuWz5nY1pDkze5jOkApgMpwAu4pRjrobpr1+fT0tJ+c+ukSSdV+Xwl3Zcv//mJfdNTBvzhh+8mlO4oxv/Ahaz/mveDC+94Fb5zDHx6NDxwHUwrgWOuhNMuhWV3wAu3wzE3A5nWpGO6EmvSMZ1BH2CLF77eTdq+f4TkxyHhGbh+gts2fN7OnbPmL1o0ZVFR0YB1ZWVfTExNv+DZ4rKeH+X0GsTYISfPCy58vJc79oOZcOQL8L1NMGoXzHoIvpoBpfY3Ybosq+GbzmAr0EdEEkG9AVZfX+3+7fYgVHuLlGR9DRAOJ+iaNQVlEPbt3DV16U//MuKVy07++pB35rMLyi51x5ZlwdDNtQ9x/GbQBPggE5KiF2Yxpsuw2ozpDOYC5cAp1Lar1yM6pw/aBlK1Zs0X5ZVVvvBfn8v5H6zpC929ee27F8KaqOahN/qCVMNh26G67qRrxnQJFvimw1PVYiAA/B2SjoU1SVCeAHcOh6rU+s/qFoaR/4Wbz4OlafB8X3j7VDj0Hbd/ehDePQWezoGvUsF/Pox8H3qmwajluBG9defwMaZTs146ptMQkXOAK7x++BXQPR8OfwPufwsO/QlkbYW5j9SeMb87fPdSWDsVEipg2uvw5pOQolAucMz34JPjanvpPHUPHJAJvA1yLvAj3Nz8J6jqh+3ypI1pQRb4ptMRYQCueaelZ7dMAPoCD6lS3sLXNqbdWZOO6YwKcAuipDd1YDNlA59Z2JuuygLfdDreurRBXOAnNHF4rLrjFk9f0ELXM6bDscA3nZI3b/2HuKUQ97UbZTLQC3jLavemK7PAN53ZAu9rMHtf00/DLXX4mir5LVUwYzoiu2lrOjURBLf27XRcH/3iWE/FBX0lbk1bW97QdHkW+KZLEKE3cATQH9iFW/e2sp5DU3HNNz7cClrzVLGBViYuWOCbLsOr7fcBxuEGTaUC0f/BBfdGsBT4SpXSNi+kMe3IAt90WSJ0A7rhavPVQKmtZGXimQW+McbECeulY4wxccIC3xhj4oQFvjHGxAkLfGOMiRMW+MYYEycs8I0xJk5Y4BtjTJywwDfGmDhhgW+MMXHCAt8YY+KEBb4xxsQJC3xjjIkTFvjGGBMnLPCNMSZOWOAbY0ycsMA3xpg4YYFvjDFxwgLfGGPihAW+McbECQt8Y4yJExb4xhgTJyzwjTEmTljgG2NMnLDAN8aYOGGBb4wxccIC3xhj4oQFvjHGxAkLfGOMiRMW+MYYEycs8I0xJk5Y4BtjTJywwDfGmDhhgW+MMXHCAt8YY+KEBb4xxsQJC3xjjIkTFvjGGBMnLPCNMSZOWOAbY0ycsMA3xpg4YYFvjDFx4v8Bzt74LqFv0bcAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i, graph in enumerate(results['graphs'][1:4]):\n", " plt.title('Result {0}, score: {1:.2f}'.format(i+2, 1. - graph['cost']))\n", " draw(graph)\n", " plt.xlim(-1.2,1.2)\n", " plt.ylim(-1.2,1.2)\n", " plt.axis('off')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The final match pairs `guardians` and `star` to two nodes that do not have similar edges to the target graph. `groot` is not found in the target graph. The result gets a much lower score than the preceding results and we can be sure that any additional results will also be poor because the result are ordered." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/dstaff/anaconda3/envs/fornax/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py:611: MatplotlibDeprecationWarning: isinstance(..., numbers.Number)\n", " if cb.is_numlike(alpha):\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8VNXdx/HPL8lkT4CwhDWyiCIiuKRalzbu1q3uIlq7WbfWPtZqrT5tjWMfW6u2tlatWqs+VWldat21j7YQ61I1KKjsqOwECCEbSch2nj/ODQwhYJYJSbjf9+s1L5I79945M0y+99xzzj3XnHOIiMjuL6GnCyAiIruGAl9EJCQU+CIiIaHAFxEJCQW+iEhIKPBFREJCgS99kpkdaWYre7ocIn2JAl+6zMyWmlmtmVWbWYmZPWxmmT1QhmN38vxoM3NBGVseP9uVZexOZpZiZg+aWWXwf/DDdm73z+BzSWq1/Eoz+8zMNpnZfDPbq3tKLrtS0uevItIupzrnXjOzocA/gOuBn/RwmdrS3znX2NOFiGVmSXEo043AeGAPYCgww8zmOede2cnrXgBE2lj+HeAi4GRgPjAW2NjF8kkvoBq+xJVzrgQf+Pu3LAtqn7eb2XIzW2tm95pZWvDcIDN7wczKzazMzP5tZgnBc87M9ozZz8Nm9j+tX9PMHgHygOeDmvu18XxPZpZqZo+a2YagnO+ZWW7wXI6ZPWRmq81so5k9E7PdxWa2JHhfz5nZ8JjnnJl9z8wWA4uDZRPM7NVg/YVmdm4HivkN4OfOuY3OufnAH4Fv7uQ99QMKgWtbLU8Ill/lnJvnvE+cc2UdKIv0Ugp8iSszGwmcCCyJWXwLsBf+ILAnMAK4IXjuamAlMBjIBf4b6NB8H865C4Hl+LOMTOfcrTtZfZmZrQxCelA7X+IbQD9gFDAQuAyoDZ57BEgH9gWGAHcAmNnRwC+Bc4FhwDLgr632ezpwCDDRzDKAV4HpwX7OA+4xs4nB/s43sw/bKpyZDQheY07M4jlBmXbkF8AfgJJWy0cGj0lmtiJo1om2HISlb9N/osTLM2ZWBawA1uFriZiZAZfga4xlzrkqfNicF2zXgA+rPZxzDc65f7vumeCpFPgCvsnjICALeKyd2zbgg35P51yTc26Wc67SzIbhD26XBTXrBudcUbDNBcCDzrn3nXOb8U1ch5rZ6Jj9/jL4TGqBU4ClzrmHnHONzrkPgL8B5wA456Y75ybvoHwt/SUVMcsqgve4HTPLBw4Hft/G0yODf48H9gOOAqbhm3ikj1PgS7yc7pzLAo4EJgAttefB+BrwrKA5pBx4JVgOcBv+bOD/zOxTM7uuOwrnnKt2zhUHYboWuAI43szaDMVWHsE3U/01aLq51cwi+Bp/mXOurfbt4fha/ZbXBzbgz25arIj5eQ/gkJbPKPicLsC3x3+e6uDf7Jhl2UBV6xWDmvo9wJU76DdoOXO51TlX7pxbCtwHnNSOckgvp8CXuApquA8DtweLSvEhsq9zrn/w6OecywzWr3LOXe2cGwt8FfihmR0TbFuDP1i02Fn4dfSsoGX9z/0bCGruUefcROAwfG386/jAzjGz/m1sthof4gAETTYDgVU7KPMKoCjmM+ofNE9d3o7ybQTWAFNiFk8B5raxejaQDzxuZiXAe8HylWb2JWAhUN+qbJpSdzehwJfu8FvgODOb4pxrxncg3mFmQwDMbISZnRD8fIqZ7Rk0/VQATUBzsJ/ZwPlmlmhmXwEKdvKaa/GjSdpkZoeY2d5mlmBmA4E7gZnOuYrg+RvNbOYOtj3KzPYzs0SgEt/E0+ycWwO8jG9rH2BmETP7crDZX4Bvmdn+ZpaCb8Z6J6gxt+UFYC8zuzDYT8TMvmBm++zkPcf6M/DToBwTgIvxB97WKvBnH/sHj5aa+0FB+WqAx4FrzSwr6JO5JCif9HEKfIk759x6fAC1dMz+GN9s8x8zqwReA/YOnhsf/F4NvA3c45ybETx3JXAq0NK8sWUETBt+iQ+8cjO7po3nx+KbkqqAj4HN+LbpFqOAN3ew76HAU/iwnw8U4Zt5AC7EHwAW4PsufhB8Bq8BP8O3w68BxrG132I7Qd/G8cE6q/Gdqb8CUsAPoTSztmrsLQqBT/DNSEXAbS1DMs0sLxi9lBeMuilpeQDrg+3XOufqg5+vwP9/rMb/n0wHHtzJa0sfYboBigiY2WzgGOfchp4ui0h3UeCLiISEmnREREJCgS8iEhIKfBGRkFDgi4iEhAJfRCQkFPgiIiGhwBcRCQkFvohISCjwRURCQoEvIhISCnwRkZBQ4IuIhIQCX0QkJBT4IiIhocAXEQkJBb6ISEgo8EVEQkKBLyISEgp8EZGQUOCLiISEAl9EJCQU+CIiIaHAFxEJCQW+iEhIKPBFREJCgS8iEhIKfBGRkFDgi4iEhAJfRCQkFPgiIiGhwBcRCQkFvohISCjwRURCQoEvIhISCnwRkZBQ4IuIhIQCX0QkJBT4IiIhocAXEQkJBb6ISEgo8EVEQkKBLyISEgp8EZGQUOCLiIREUk8XQHovMyJASvBro3PU9WR5RKRrFPiyDTMGAeOBUcCAbZ4yNgGrgMXAaudo6oEiikgnmXOup8sgvYAZQ4DDgaFAPVAF1LZaLQJkAenAJuAt4BPn0JdIpA9Q4IecGYnAAcDBQCVQ0c5NU4AhwKfAv51jU/eUUETiRYEfYmYkAUfim3BWA82d2M0QoAZ4wTmq4lc6EYk3jdIJKTMMOALYE1hJ58IeYB2+qedkM1LjVDwR6QYK/PAaDUzEd8J21UYgG/hCHPYlIt1EgR9CQU38SGB9HHdbAuxnxvA47lNE4kiBH05jgWTo6rj66ydB+kPBLw5y/huu+3oXyyYi3USB38eZ2Xlm9o6ZbTKzdcHP3zUza3t9EvCjcsriX5qyy+GWcjP6x3/fItJVCvw+zMyuBn4H3IYfP58LXIYfT5+8g82ygUw6XLuvau93xQGDO7ZvEdkVFPh9lJn1A24Cvuuce8o5V+W8D5xzFzjnNpvZTDP7Tsw234T0V7fuZf+LIf1BiDwOOXfAzyZufe7waTDmOhj/Q//8N46Blcmw95WQ/Bfodze8N37bUmU8ADeNBYab2cFm9raZlZvZGjO7y8y2HITMzJnZZWa2OFjn7h2dlYhIfCjw+65D8Rc/PduxzZKSoGVKhImLYeaVUDYNDiqC266DNZGt6y47BI56E6rPgzuL4MxpsHEYvHUxPFoI7x2z/f431+Nr+E3AVcCgoKzHAN9ttfIp+JE9k4FzgRM69l5EpCMU+H3XIKDUOdfYssDM3gpqy7Vm9uW2N0swtoy5nz4TDq6CrGZ49RlojsCTI7auO3gB3P8OpDgYWQ/zjoBpT0B+NZxaCkc9v/3+m5uAiHNulnPuP865RufcUuA+oKDVyrc458qdc8uBGcD+nfokRKRdNHla37UBGGRmSS2h75w7DMDMVrLDg7lzW5879gx49ziozQFz0JAOK7O3rptduu22tTkwMWbZmHXb7z8hAWgys72A3wD5+Ll3koBZrVYuifm5Bt+3ICLdRDX8vuttYDNw2k7W2YQP2xZDoaERSPLt9W+cCbf8CqqnQf00iNRAc2w7eqt5N1I3Th635oCtvy9to3M2kgyUAn8AFgDjnXPZwH8DaqMX6UEK/D7KOVcORIF7zOxsM8syswQz2x/ICFabDZxpZulmtidwETQ2AQ7K08CaYEIFVCfCl86DhrQdvd7eo+qyjtr/9OamppcuOu3w9/PhpYEw45Tt10xOBtbgZ9WsBKrNbAJweTzfv4h0nAK/D3PO3Qr8ELgWWBs87gN+jJ+6+A78VMdrgf8FHgtq+PXwq49h9Ptwwn0w8k+QXA/ppW2+EHD1uSWXfff0Hw8dMmA4/1dc8LOEhAtuhvwZ26+ZkIi/gvca4Hz8NMt/BB6P2xsXkU7RbJkhZMYB+NExa9q7zYHjN+X85MI1d0aSXDZAWVXSnEtu36OwviEhdtK1TPwB5mnNkS/S+6iGH06L8e3z7e60f39xRtlL/+l3e0uQ52Q1Tvn5t1dPbbXaAGCWwl6kd1Lgh5BzVOObfIZ1ZLs/vTR49sLlqVuaZibk1Z73rRNLpwS/DsbfDGVZ3AoqInGlwA+v+cBy/HQM7fbTB0f8dWNV0ofg59Q/5dDya/YeVTsKf8bwhmr3Ir2XAj+knKMZeA0/nn9oe7erb0hovv3x3NvrG20jwKa6hH4XnVx65fiRdS8HZw4i0ksp8EPMOeqAl4DPgFHQvjtWffRpevnfivr/esW6SHMkyXHRSaV7LXr04yu7s6wi0nUapSMttzscjZ/6IBU/lLKatm97mAb0B+zRn34y+dwjy78bSXIAi4ADKcjXzcxFeikFvmwR3NR8JDAJ36Hb+spYw9/O8GNgqZtZ3HKGUAFcTEF+5S4sroh0kAJf2hTcKCUbPyOnAQ1ApXM0bLNiUXE6UEtBvr5IIr2cAl9EJCTUaSvxV1Q8jaLir/Z0MURkW6rhS/wUFafi5++5DN+ufyAF+Z/2bKFEpIVq+BJPacCJwc/9gCcoKk7pwfKISAwFvsRPQf5G/K0KWzp2DwJ+3XMFEpFYCnyJr4L8d4GrY5Z8j6Li1pOsiUgPUOBLd7gLeCrm9z9SVLxXTxVGRDx12kr3KCruh7+H7bhgyYfAFynIr+25QomEm2r40j0K8iuAc/D33QWYDNzZcwUSEQW+dJ+C/A+A2EnVvkNR8YU9VRyRsFPgS3e7H5ge/FwG7PC+uSLSvdSGL92vqDgTuBv4KQX5K3q6OCJhpcAXEQkJNelIzykqbvdN1EWk6xT40jOKir8ELKCoeHJPF0UkLBT4susVFX8DmIEfo/8URcXZPVwikVBQ4EtPeAeoC34eD9xPUXHru2uJSJwp8GXXK8hfAFwSs2QqcHkPlUYkNDRKR3pOUfEf8HPnA9QDh1GQP6sHSySyW1MNX3rSVcAHwc/JwJMUFffvwfKI7NYU+NJzCvLr8PPnVwZLxgAPqT1fpHso8KVnFeQvAb4ds+R04Ac9VBqR3Zra8KV3KCr+HfBfwW+NwCQK8hf2YIlEdju60lF6ix8BXwT2x8+wuWi7NcwSgEwgG//ddfjhneU4t3m79UVkG6rhS+9RVDwayKEg//1tlpsNBCYEj9aVFIdvmiwDZgPLFP4ibVPgS+9llgEcBuyJH7a5AWjawdrpwAD8DdT/DSxGX26RbSjwpXcyGwUcR3p6MvtMMma9u7KdWyYDucBnwAycq/uc9UVCQ2340vuYjQFOZOJ+iZw19SqSIv0oXX8lyz6raMfW9cAKYCRwEmYvKfRFPA3LlN7FbDBwApHk9Zxz/vWkpY0hkpTDtK9fTSTSke9rCZADHBt09oqEnv4QpPcwiwBHA5U01NdR/J97cfg2x+zs/fnWped2cI9rgTxg7/gWVKRvUuBLbzIR3/FaBcCLz37AimVPbHl2jzHT+MopHZ0/vwQ4ArP0eBVSpK9S4EvvYJYIHACs32b5n/7wF6qqPvTrYBz2pWvYc6+c2FUy4IFrYArAkXDORPh+zNMN+O/52O4rvEjfoMCX3mI4kIrvdN2qoaGZxx+9ncbGcgCSkvpz7gXXkJzS5nd3Jjw5D37favEG4ADMNEePhJoCX3qLYbQO+xafLinnzddva2hsagYgM3MSF112fgf2vRk/Tj+rq4UU6csU+BIXZnagmX1gZlVm9qSZPW5m/2Nm3zSzN1qt68xsz+Dnk83sgwjMzIBbD4dpLev9DYYYPHcWHJf+jxevOuCOW0oBHvmgmD3+8udz0xMTHy/ws21ucThMGw8/bPl9LPw4Ff6cAr9Ng1fNbN+YcjxsZneb2YtBud8xs3HBc2Zmd5jZOjOrNLOPzGxS93x6IruGAl+6zMySgb8DD+OHQv4FOKOdm28Cvr4JrrgNfj4LTrwEDold4SOY9DFc/kpF+feKFy1YePmzf+ORc6ax4sofrWjMyhpbC4MScnKGrBo+fFBCUlKywZammwNh1hy4tAR+NBAWAI+1ev3zgCi+s3gJcHOw/Hjgy8BeQD/8gWVD+z8Vkd5HgS/x8EX8RXx3OucanHNPA++2Z0Pn3Ezn3EfJwHdh6T7w+nuwTU36JpienpubXrbvvuNufPm5DSfsuVfDpNSUt5e+OePJwrFjXzeAzMwBq4cPH5OalTU4JSMjZ/aUKZPn7bPP+FvHjJmfPXRoWmpKit0DdwFTzKxfzO7/7px71znXiD8Y7B8sb8A3AU3AX5E+3zm3pisfkkhP05W2Eg/DgVVu23k6VrRnQzM7BLglFQ5qhMRmiIyDNwCcmeEce+y339AVKSnJAGtralIyG1Z/MH/WO/9JMIsMiEQ2pyYk1LTeb0MkklKTmJh6/Zo1Z86pqppY19yc2ZSQ0EhzM8cff/yXo9Ho/OTk5NTm5ualMZvV4GfjxDn3LzO7C7gb2MPMngaucc5Vtn4tkb5CgS/xsAYYYWYWE/qjgE/wTTZbxsCb2dBW204H7loCvx4B/Q6Ac6uh3/K8vNzqlJR9WLyYpkgkJcnPikn/pKTqFdXVWfvPnv1mWm1t/eLU1Ky65uY0V1lZmpmRsbG5ubmxpT3n/tWrJ31UXb33r8ePf/TQpqaE5/bd96Prn3nm3szMzGEAWVlZg9LS0iwajZ4IVE6aNGns3LlzE6PR6ECgyjl3J3CnmQ0BnsBP4fyz7vkIdzE/Md0Q/LxDg4EI/jMuxV+7sAHnynqugNId1KQj8fA2fhbLK8wsycxOAw4OnpsD7Gtm+5tZKnBjq22zgLIRsOxes/0WmB2Vmp4+YO2QIXnNiYlbKiQJzjUPLCtbfWZV1dNL6usn3lpTM26jc0nn19ae7cBcefmGfebPX1JXUbG2btOmsvGLF88tLy+vSnCubo/GxpLqhgbufPPN03dQ/iQgp3///rmJiYkR4LA33njjiiOPPPL711577eEXX3xxXiQSISUlJRKNRhPj+cHtcmaDMTsauBA4AdgHyMB/Bsn46xWOBqZi9lXM8jScdfehGr50mXOu3szOBB4Afgm8DLwAbHbOLTKzm4DXgFrgeuDSmM2/C/wm0WzghOTk9ZNTUhbUNDWlxu5/4Pr1q8aVlJQkNzQ0XQ7MhHtvgx/dAilfhGfTfK10a3nA9a+oqLkdnj8G9jpxyZKfJUNVfVLSj4GvrFq1auHkyZPLGhsb65ubm9ucbrmmpiZt1qxZ33/99deHJiQkNPTr1+/9r33ta7OAk6LR6Cb81cCVMf9uKiws7L1Tz/ppKw4A8vFnXasJzppaiW0eywJOBRZh9hbOber2ckq30vTI0i3M7B3gXufcQztaJxqNZuLnuh8J2KnPPntoUkNDZHNqam1SY+PmwaWla4atXl2a2Nzc1S/pSOBFnFu+g3Kk4u+ilRXzbxYdOwNuBqrZ9iBQVVhYWNuFcseHn1biK/gmnDX4snbEYPwZ3Is4V/p5K0vvpcCXuDCzAmAhvrZ9AXAvMLatkS3RaLQ/MB7Ypj1//MKFAw99++0pKXV1c4auXbshIT7fzWz8PXKfwrkd3TxlO9Fo1PB9D60PBBnEDPtshwb8AWCbM4LCwsKGDuyj83wz2sn4oaXrP2ftncnCXwn9jNr2+y4FvsSFmV0C/BwfiJ8C1zvnXoxdJxqNDsbX6Ae1sYsyYHHhjTfugx/7XhKHYiXir+B9Cue6EnZbBG34mWx7EMjGh2FH1LF9s1B1YWFhuw9K7WJ2FP4zj8fn2R9/NfTTOLdrDlgSVwp86VZBTXkovkbfr41V1gJLCgsLfa3R10hPwwdoV2qSCfimnDdwbk4X9tMu0Wg0wvYHgSz86JeOiF//gFkevg2+zaasThoBFONccRz3KbuIAl+6RTQabQncPfG1/lgOWAV8UlhYuP24drNM4BR8YHamZpqMr9m/Dbzfk/e27bH+AT+y5rxg2+2uU+iCBPwB/BGci+d+ZRdQ4EtcRaPRJGAP/PC+1s0czfja5ieFhYU7DwuzNPwNzCfg+wXaEy4JbG0uKsK5Je0v+a4TnPVksP0ZQTrx6h/w1zucAbR5L+DDYdo6GLYYftOJtzAceBPnPu7EttKDFPgSF9FoNBkYEzxaN2M0AEuBzwoLCze3e6e+lpqHn7ohBz/r5Sb88M6WL24SPjxbziIW4pscqjvzPnpSTP9A6zOCDvcPnPjii2OGr1o1yGBNxqZNNZnV1XVJTU1bRud0MfBTqyGS6dz0TmwrPUiBL10SjUbTgHH4YG59UdJm/NW2ywoLCxs7/SI++HOB0fjaZUst3vCdn2vwNdllu+NY8c70D5z+9NNHNJs1N0YiDTd+9tlhRRs3HlzvXEp6QkLF17Oynri7vPwyByRAQxaUbIT/OgeO+QecVQsDU6DyGPjbs/AKwPUw6Xdw9RfhhbfgtAmwcDYU4Fz7D+DS43ThlXRKNBrNwgf9SLZvhtiED/oVhYWFHR3zvT1fKymhpT3f35Q8EXD4Sc92a8EQzjJadWLvqH8gpa4uklpXl1mZlbXhvcrKga+Xl3/h/gkTHhifnl79UXV1v0bnEo42e7Okvn7AQxMm/D3S0FC3Mi1j32MTIxOvaG566oj162bf8Mni4b+CG38Di37oR11RBwOqIHM5fBt/4M2ma0M9ZRdT4EuHRKPRAfiO2NZz4oBvR14MrOnWq06da6bjFw/tdgoLC+vwZzjrWpZFo1E7qLh40JB168ZHGhqqUhobExudS5xTXT14VGpqzX6ZmRUAT67zmzgzq09OTksZM27kpZMPOA44DuDmxqaq9x68t6504KDvsPfEGcPeeTORTxY3PwfTh/jrGhrxnePShyjwpV2CMfTjgYFtPL0BWFxYWKjaXg8rLCx0mFUDlQPKy1ePhVX/guSHli8/+Y7ly88YnZQ095e5uc80NzZuDg6cAKT3HzD45YXzif7r/1hUup5m57JqGho4ZMzYSUzab9Lk9DSGrVvLsB9e93vWrX2DP/zuX7Q9NYP0Ygr8vsg3aWTiL4RJx/8/tozYqIhXO3YwmmQYvkbf1hj6EvwY+o3xeD2Jm3p8GBvgHoPXgdfnQdpXGxu/d/2qVccNgTV1EJkyZ877VVlZ6XWDcpPOePWVk+476bTV0w46eGByciTt9EceJLaLz8wgJWU4ySn9gv1vbb8vKr4UOAj4EPgI+IiCfF2R28so8PsSPyfKOPxNOtJjngn634I/crP1wAfAis5cEdnOMfRLCgsLqzr8HqT7OdeE2QYg9WHImQ8Dr4Z5udAQgfpmSMiB8kVwgGtoaB5YVla18JUXZ28GFj3/9D0Jzz/98Q2Dhxz9Uun6K/o3Ns2nbENFfW3d3vg5dWDjhqX4g0nsNRSn4qdw2KqoeCU+/D9k64FgIQX5bd+7eDdiRgLbDrVtwlfIapzruTMjjdLpC3yNfi/gCHxn5QZia1fby8TXyKuAf9HOOzV9zhj6JraOoe/5CcFk58wOBva7C9IL4fuVMNKgKRfm/wnu7g8Np8BPyyEvE9aWwQ9OgZNeg/OaITIa3m2CpCGw5m14NBilc03N4QU3sfyzzaxYvg5/ZzOvqHg5/h4In6cBuICC/Ce75433nCDkh+Pv2DYKH/QtAxpazrjqgEXAQue6dCV558qowO/lzFKAY/BDEkvwfzDtlYm/V+t7wKzYNttYwRj6scFr7GgM/aeFhYW7fc1st2E2EH8f3jYvvOqiEcA/cW7xliVFxccCk2MeE4GUHWx/KAX5/9lmSVHxXHznc+wZwVwK8vvEMFszhgFH4ptZW66KbuvvLQl/TUkEP/rpLefYZdeMKPB7Mx/2J+HHnXd28qsE/B/oHOCt2GkGPmcMfR3+C9m1MfTSc/yNaLKB8jjuNYKvRDyCczuuABQVJ+E7+ScD+7H1QJAHZFOQXx2zbi5tf78dfnhvS3NQy4HgUwrye8UoLTMSgS8ABwIboUPhPRhf6/+Xc3zWDcXbjgK/t/IXGx3L1pp9l/aGP8WcgXPzgjH0e+IPBG2NoV8CrIzLGHrpOWaDgXPwfS7x+r8chW8mXNCprYuKsyjIr2q17Fjg1XbuoQnIpCC/Lmb7NCCdgvwNnSpTJwVhfyS+uXU1nfuMU/AXFb7mHAvjV7q2KfB7K7Nx+JtWxGumw0h1RkbeE1Onzl6Rl5fVxvMV+KDv3jH0smuZHQQcQjtvKv85huArHy/vqHmwU4qKW6bQaDkLaDkj2JvtJ5mbT0H+xFbbn4y/w9oqtu8kXtBdncRmHAZMoevNZhH8dS3POseqLhdsJzRKpzfyt6P7Mn7q4C5bN3hwv3W5ucOsqWnExLlzs1fk5X0Q83QpfsSNxtDvnmbj24zHQZfCZBC+uWJGXMMeoCDfAcuCx/NblhcVp+LvuRt7IFjcxh4mB/+OCB5fiXmukaLiBWw9CLxBQf6bXS2yGcPxo+Xi0UfSgB+IcYwZTzhH3edt0FkK/N5pFP5Ur9O3k2s2Y21ubs66IUOG1ycnpwHgXOWAjRuHDlq/Pq108ODP0Bj63Z8fojkDf2XsPviO0Y7Mf5OIr32uA/6xS6dE9s02HwSPncnCv6e2OomT8KNmJgHnA38Gtg38ouID8bXsudv0LexA0JRzFH6qi3idDdfg+1sOwE/r3S3UpNMbmZ2BHxbZ4d77poQEWzN8+KDSgQOHNUQi2/wBGJC7Zo2bvHr1qeXO3eOceyBOJZbezvcJjcW3ObcM7d1ZU0ci/qrqCPAu8GGvnrfIdxLvyfadxKNbrXkNBfm/brXt0/ippGHHncRb7kRmRh7+moPPqd3bc/DYpXB+u4ZF45uvcoE/d1ctXzX83sY35wzBdwK1qQoSslp1EDUkJSWsGjEitywnJ7cpMXGboZXmXHO/ior1I1atKkmvrU1OhjO7p/DSa/ma3SeYrcE37xzA1llHG/CdoQn4+XEc/vv1MbAQ53r/WWBBfiOwIHg8sWV5UXE2vnbfciD4N4CZLcVfFDXGzXxvP4AHXniGR199edzM3903jq0HAIBaioo/xof/7yF/JP4alxhDfwGHzYCn29v53JZmIAGs1ozxrhvu56DA70XM7MAkeNhgr5FQbOCGwOojYXbs1LR58MEiuOMMOP41OLveLDsvKWlFNCPjpfGJidUAL5WEV7v1AAAJcElEQVSWjvzDqlUnlDU05GTByivh/hug/lCYuh72Be4ys98CDzvnrujRNy67jm+S+Qizefgx4/3ZOi7c4Wv+FcDGnQ677CsK8iuBt4JHa4kJZj/An8HUO9wE2r4TWRp+6OUXyqsTH8P3EwQj5xq5+Turpt7+eGb/rLTsQRWbGpMqNiV15UyoS2PyzczczpptnHN69IIHvma1LA9uqITLL4JfGDR8ER6/Dq43aMqHp9bCGSvgrGvhJ8lQebvZVUVTpkQPyc5+d2RKyrJ38/Nvem7ixF8kw6apZndUwmkXwG0RqH4Hzndwah4szIDLevo966FHTz3wFxNeh2+H7++cIyM17bJ+GZnFbuZ7X5/+s/+ZPiFvdEVWenpz/t77uDfvesC5me+5H09bPQbyFsIhj8PgeZBYXzDlVJdgCS6SlOxSk9PdUQecU3nf1Z8VAW7f0d9+IcGySyBSDfu9CA2ngjsVHrsEhnwESZsguRLG/tsvz52LP/BuCsJ/Kv66hxfwU1FvDH4eGfNeZgI34/smanf2vjtyX03pXl8EkhbAg1nQ/AC8PWjbEQlbpqYdCfXPQcFkePVq55aMqqhYHR0z5p+rNm8eueizzyofmzcvNRNW/dW5f2VB86Pwej9YeTsc3FNvTqQXKsaH5TUAm+pqGys2VVfbkV944fyf//TEBcuXXlFVU5NcVll5acGVl1bPXfrp1b/6y7Cg9v7h0fDzu6cetazwyrNvYeLofC499QaeuHE2V51zc9awgQ1fBkhL+fTkn3xtxhvw5Pdh4RFw9YF++xsugAmzoXoaLP0mfC0YnVRynf93xEHOuUzn3OP4s46H8NOe5OHv+HZXq/dyIXAJvgN7hxT4vcdwYFWaH03hALJjbi6RApXDYqZVqIKc3GAe9BGrVq2dUlIyPxkqF2/YkLAOcvrFzJEe7Gvd2pipjRs0n7wIwA3A981fpNbiZGCxc+4R51zjJ6tX3t/Y1PTxpG9OLWPLhYr7vwaXLl9Tlr1hycqsv1bX1lXVbm6sbL3zswsuoaJmxGI4rRRGfAgfjvHPJDRB6WD4Zw4Ma4Do/G23TNuSzc65Dc65vznnapxzVfjafEGrl3rYOTfXfU7HugK/91gDjCjxc3AkAFS2zE4IWKvhX1lQttZ37pLc0NBUs3ZtTT1k7QcbcqGsIniuRSUMzvXtsymN0FivwBfB+Ruxv4Bv3mkxHH9NQKxl+Lb7YLRObinA63Oy1lx736jpS0vWLvvTS3P+97Lf7DH10VcH/uideRn3+P3nLJ69JD2YNiGyGer8EGnufQicwVm/hn53wdnHbvtylTGjgizdzO4zs2VmVomf7rq/mcVOh9KuC+sU+L3H20DTMLhoE2z+HhxW6uciadPJ8PqHcOzvYMw6SDoTvj4IFp0F666C4ioYfgF8uQoSvgFHVMCoq3znVGaCP7iM3WXvTKR3KwQuxgc6+BFye7RaJw9/4VrQqWqtO0YdwOrS5NonZuQsvPnR4f5ewH/ccPvrc7LaGJZ5dDnMuwtqvwk/uBv+fjlMH8aWawnWNcWsfDX+quNDnHPZ+IsyYdtpUdo1vl6B30s4PyLiTOCibLh7BhyXB+9FdjA75u0w5wR49Cdw/Uj48wYY+jDcCnAwVF0PN70MZ+TA9OfhrOvhpkP9ULK0CfA74Gwz22hmd+6yNynSCzk//PFx4L+CRS8Be5nZ+WaWZGZT8bN/vgBUBTMdt8rOjHJY1dZtP3fgW4fDS0ET6/BNgIPEZiADkjeybYUsC99uX25mOfgDVKdoWGYv4pwrBvbHrB8wbRBclQvv/hI+/iV8q/X6z8Er+Md2ojA/Cle1WpwGVL4KL+Lc821tJxJSN+E7PnHObTCzU/AVoz/g55g6xTlXCmBWUwuZrW4M9M3n4NarIPkkmDgDZt+/85f7eDz89WJoSIfUcjj1jzB1LTASRt8Oi/7XzNLwHbG/Babjr7xfDfwaOL0zb1JX2vYiZlYALARKT4LoP+BHr8B3jvVDseJhFP7y+E/itD+R0DFjCHAW8b/XQDK+Nv+oc3TLVc1q0uld9sbPW1/+Mnz1R3DXsTu//L0jhuBrKp/GaX8iYbUeH/Y5cd5vLlDcXWEPquH3bmZD8aduZfg2vM7KwfcFPEucbnAuEmZm9MNfFFVKx+5CtyMD8B3CzzpH0+et3Fmq4fdmzpXgp4vth78EvqMMP9NhPfCCwl4kPpyjAigChrH93eI6KgM/tcWM7gx7UA2/b/A980fhm2VKoV0z6WXhaw3zgP/gnG48LhJnZkwBjsDfu6Ij00636I9vu3/euW0vluwOCvy+wl9ksRf+3plZ+CtyN+HD3+HP1tKDRyJ+rP0snIvHnY5EZAfMGA0cjT+jXk/7xsRH8G326/D3tN0lM5Iq8PsaswR8M00u/kKRHHzA1+O/bKuAEpzbpff3FAkzMzLwM2pOwF/FXo2vkMVe0R7BN99k4M8GZgFzu7sZZ5tyKvBFROIjCP4x+Buv5LL1WifDHwBW40fKrXQuLp29HSufAl9EJP7MMPxUCQlAk3OdauOPKwW+iEhIaFimiEhIKPBFREJCgS8iEhIKfBGRkFDgi4iEhAJfRCQkFPgiIiGhwBcRCQkFvohISCjwRURCQoEvIhISCnwRkZBQ4IuIhIQCX0QkJBT4IiIhocAXEQkJBb6ISEgo8EVEQkKBLyISEgp8EZGQUOCLiISEAl9EJCQU+CIiIaHAFxEJCQW+iEhIKPBFREJCgS8iEhIKfBGRkFDgi4iEhAJfRCQkFPgiIiGhwBcRCQkFvohISCjwRURCQoEvIhISCnwRkZBQ4IuIhIQCX0QkJBT4IiIhocAXEQkJBb6ISEgo8EVEQkKBLyISEgp8EZGQUOCLiISEAl9EJCQU+CIiIaHAFxEJCQW+iEhIKPBFREJCgS8iEhIKfBGRkFDgi4iEhAJfRCQkFPgiIiGhwBcRCQkFvohISCjwRURCQoEvIhISCnwRkZBQ4IuIhIQCX0QkJBT4IiIhocAXEQkJBb6ISEgo8EVEQkKBLyISEgp8EZGQUOCLiISEAl9EJCQU+CIiIaHAFxEJCQW+iEhIKPBFREJCgS8iEhIKfBGRkFDgi4iEhAJfRCQkFPgiIiGhwBcRCQkFvohISCjwRURCQoEvIhISCnwRkZBQ4IuIhIQCX0QkJBT4IiIhocAXEQkJBb6ISEgo8EVEQkKBLyISEgp8EZGQUOCLiITE/wO0HZ0EnUIZ6QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i, graph in enumerate(results['graphs'][4:]):\n", " plt.title('Result {0}, score: {1:.2f}'.format(i+5, 1. - graph['cost']))\n", " draw(graph)\n", " plt.xlim(-1.2,1.2)\n", " plt.ylim(-1.2,1.2)\n", " plt.axis('off')\n", " plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }