{"id":2946,"date":"2020-02-21T14:21:46","date_gmt":"2020-02-21T14:21:46","guid":{"rendered":"https:\/\/nextmovesoftware.com\/blog\/?p=2946"},"modified":"2020-10-19T18:05:57","modified_gmt":"2020-10-19T17:05:57","slug":"arthor-and-data-science-interoperability","status":"publish","type":"post","link":"https:\/\/nextmovesoftware.com\/blog\/2020\/02\/21\/arthor-and-data-science-interoperability\/","title":{"rendered":"Arthor and data science interoperability"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nextmovesoftware.com\/blog\/wp-content\/uploads\/2020\/02\/arthor_bandit-1.png\" alt=\"\" class=\"wp-image-2950\" width=\"155\" height=\"131\"\/><\/figure><\/div>\n\n\n\n<meta charset=\"utf-8\">\n\n<title>Untitled<\/title>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/require.js\/2.1.10\/require.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/2.0.3\/jquery.min.js\"><\/script>\n\n<style type=\"text\/css\">\n    .highlight .hll { background-color: #ffffcc }\n.highlight  { background: #f8f8f8; }\n.highlight .c { color: #408080; font-style: italic } \/* Comment *\/\n.highlight .err { border: 1px solid #FF0000 } \/* Error *\/\n.highlight .k { color: #008000; font-weight: bold } \/* Keyword *\/\n.highlight .o { color: #666666 } \/* Operator *\/\n.highlight .ch { color: #408080; font-style: italic } \/* Comment.Hashbang *\/\n.highlight .cm { color: #408080; font-style: italic } \/* Comment.Multiline *\/\n.highlight .cp { color: #BC7A00 } \/* Comment.Preproc *\/\n.highlight .cpf { color: #408080; font-style: italic } \/* Comment.PreprocFile *\/\n.highlight .c1 { color: #408080; font-style: italic } \/* Comment.Single *\/\n.highlight .cs { color: #408080; font-style: italic } \/* Comment.Special *\/\n.highlight .gd { color: #A00000 } \/* Generic.Deleted *\/\n.highlight .ge { font-style: italic } \/* Generic.Emph *\/\n.highlight .gr { color: #FF0000 } \/* Generic.Error *\/\n.highlight .gh { color: #000080; font-weight: bold } \/* Generic.Heading *\/\n.highlight .gi { color: #00A000 } \/* Generic.Inserted *\/\n.highlight .go { color: #888888 } \/* Generic.Output *\/\n.highlight .gp { color: #000080; font-weight: bold } \/* Generic.Prompt *\/\n.highlight .gs { font-weight: bold } \/* Generic.Strong *\/\n.highlight .gu { color: #800080; font-weight: bold } \/* Generic.Subheading *\/\n.highlight .gt { color: #0044DD } \/* Generic.Traceback *\/\n.highlight .kc { color: #008000; font-weight: bold } \/* Keyword.Constant *\/\n.highlight .kd { color: #008000; font-weight: bold } \/* Keyword.Declaration *\/\n.highlight .kn { color: #008000; font-weight: bold } \/* Keyword.Namespace *\/\n.highlight .kp { color: #008000 } \/* Keyword.Pseudo *\/\n.highlight .kr { color: #008000; font-weight: bold } \/* Keyword.Reserved *\/\n.highlight .kt { color: #B00040 } \/* Keyword.Type *\/\n.highlight .m { color: #666666 } \/* Literal.Number *\/\n.highlight .s { color: #BA2121 } \/* Literal.String *\/\n.highlight .na { color: #7D9029 } \/* Name.Attribute *\/\n.highlight .nb { color: #008000 } \/* Name.Builtin *\/\n.highlight .nc { color: #0000FF; font-weight: bold } \/* Name.Class *\/\n.highlight .no { color: #880000 } \/* Name.Constant *\/\n.highlight .nd { color: #AA22FF } \/* Name.Decorator *\/\n.highlight .ni { color: #999999; font-weight: bold } \/* Name.Entity *\/\n.highlight .ne { color: #D2413A; font-weight: bold } \/* Name.Exception *\/\n.highlight .nf { color: #0000FF } \/* Name.Function *\/\n.highlight .nl { color: #A0A000 } \/* Name.Label *\/\n.highlight .nn { color: #0000FF; font-weight: bold } \/* Name.Namespace *\/\n.highlight .nt { color: #008000; font-weight: bold } \/* Name.Tag *\/\n.highlight .nv { color: #19177C } \/* Name.Variable *\/\n.highlight .ow { color: #AA22FF; font-weight: bold } \/* Operator.Word *\/\n.highlight .w { color: #bbbbbb } \/* Text.Whitespace *\/\n.highlight .mb { color: #666666 } \/* Literal.Number.Bin *\/\n.highlight .mf { color: #666666 } \/* Literal.Number.Float *\/\n.highlight .mh { color: #666666 } \/* Literal.Number.Hex *\/\n.highlight .mi { color: #666666 } \/* Literal.Number.Integer *\/\n.highlight .mo { color: #666666 } \/* Literal.Number.Oct *\/\n.highlight .sa { color: #BA2121 } \/* Literal.String.Affix *\/\n.highlight .sb { color: #BA2121 } \/* Literal.String.Backtick *\/\n.highlight .sc { color: #BA2121 } \/* Literal.String.Char *\/\n.highlight .dl { color: #BA2121 } \/* Literal.String.Delimiter *\/\n.highlight .sd { color: #BA2121; font-style: italic } \/* Literal.String.Doc *\/\n.highlight .s2 { color: #BA2121 } \/* Literal.String.Double *\/\n.highlight .se { color: #BB6622; font-weight: bold } \/* Literal.String.Escape *\/\n.highlight .sh { color: #BA2121 } \/* Literal.String.Heredoc *\/\n.highlight .si { color: #BB6688; font-weight: bold } \/* Literal.String.Interpol *\/\n.highlight .sx { color: #008000 } \/* Literal.String.Other *\/\n.highlight .sr { color: #BB6688 } \/* Literal.String.Regex *\/\n.highlight .s1 { color: #BA2121 } \/* Literal.String.Single *\/\n.highlight .ss { color: #19177C } \/* Literal.String.Symbol *\/\n.highlight .bp { color: #008000 } \/* Name.Builtin.Pseudo *\/\n.highlight .fm { color: #0000FF } \/* Name.Function.Magic *\/\n.highlight .vc { color: #19177C } \/* Name.Variable.Class *\/\n.highlight .vg { color: #19177C } \/* Name.Variable.Global *\/\n.highlight .vi { color: #19177C } \/* Name.Variable.Instance *\/\n.highlight .vm { color: #19177C } \/* Name.Variable.Magic *\/\n.highlight .il { color: #666666 } \/* Literal.Number.Integer.Long *\/\n    <\/style>\n\n\n<style type=\"text\/css\">\n\/* Overrides of notebook CSS for static HTML export *\/\nbody {\n  overflow: visible;\n  padding: 8px;\n}\n\ndiv#notebook {\n  overflow: visible;\n  border-top: none;\n}@media print {\n  div.cell {\n    display: block;\n    page-break-inside: avoid;\n  } \n  div.output_wrapper { \n    display: block;\n    page-break-inside: avoid; \n  }\n  div.output { \n    display: block;\n    page-break-inside: avoid; \n  }\n}\n<\/style>\n\n<!-- Custom stylesheet, it must be in the same directory as the html file -->\n<link rel=\"stylesheet\" href=\"custom.css\">\n\n<!-- Loading mathjax macro -->\n<!-- Load mathjax -->\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mathjax\/2.7.5\/latest.js?config=TeX-AMS_HTML\"><\/script>\n    <!-- MathJax configuration -->\n    <script type=\"text\/x-mathjax-config\">\n    MathJax.Hub.Config({\n        tex2jax: {\n            inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n            displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ],\n            processEscapes: true,\n            processEnvironments: true\n        },\n        \/\/ Center justify equations in code and markdown cells. Elsewhere\n        \/\/ we use CSS to left justify single line equations in code cells.\n        displayAlign: 'center',\n        \"HTML-CSS\": {\n            styles: {'.MathJax_Display': {\"margin\": 0}},\n            linebreaks: { automatic: true }\n        }\n    });\n    <\/script>\n    <!-- End of mathjax configuration -->\n\n  <div tabindex=\"-1\" id=\"notebook\" class=\"border-box-sizing\">\n    <div class=\"container\" id=\"notebook-container\">\n\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>The 3.0 release of Arthor brings many new features with it including an overhauled Python interface.\nThis new interface has been written using Cython bindings to the C++ core of Arthor,\nwith the goals of native speed for performing chemical searches\nas well as effortless interoperability with the existing Python data science ecosystem, i.e. <code>numpy<\/code> and <code>pandas<\/code>.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Loading-and-searching-databases\">Loading and searching databases<a class=\"anchor-link\" href=\"#Loading-and-searching-databases\">\u00b6<\/a><\/h2><p>Databases can be opened using either the <code>arthor.SubDb<\/code> or <code>arthor.SimDb<\/code> classes for substructure and similarity searches respectively.\nOnce opened, these classes have a <code>.search()<\/code> method which takes a SMILES or SMARTS string respectively and returns a <code>ResultSet<\/code> object.<\/p>\n<p>Here we load a similarity database (<code>pubchem.smi.atfp<\/code>) indexing the PubChem database,\nand also provide the corresponding smi file so we can later cross reference against it.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[1]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"kn\">import<\/span> <span class=\"nn\">arthor<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[2]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"n\">simdb<\/span> <span class=\"o\">=<\/span> <span class=\"n\">arthor<\/span><span class=\"o\">.<\/span><span class=\"n\">SimDb<\/span><span class=\"p\">(<\/span><span class=\"s1\">'\/nvme\/arthor\/pubchem.smi.atfp'<\/span><span class=\"p\">,<\/span>\n                     <span class=\"n\">smifile<\/span><span class=\"o\">=<\/span><span class=\"s1\">'\/nvme\/arthor\/pubchem.smi'<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">simdb<\/span><span class=\"o\">.<\/span><span class=\"n\">set_num_processors<\/span><span class=\"p\">(<\/span><span class=\"mi\">16<\/span><span class=\"p\">)<\/span>\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">simdb<\/span><span class=\"o\">.<\/span><span class=\"n\">get_num_records<\/span><span class=\"p\">())<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>102597760\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>We can then search for the top 100 most similar hits for a particular compound.\nHere we&#8217;re searching for a candidate molecule suggested in the recent <a href=\"http:\/\/opensourcemalaria.org\/\">Open Source Malaria<\/a> Series 4 meeting.<\/p>\n<p>The returned <code>arthor.ResultSet<\/code> object acts as a cursor over the hits found.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[3]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">rs<\/span> <span class=\"o\">=<\/span> <span class=\"n\">simdb<\/span><span class=\"o\">.<\/span><span class=\"n\">search<\/span><span class=\"p\">(<\/span><span class=\"s1\">'C24=NN=C(C1=CC=C(OC(C)(C)C)C=C1)N2C(OCC(C3=CC(F)=C(F)C=C3)O)=CN=C4'<\/span><span class=\"p\">,<\/span> <span class=\"n\">limit<\/span><span class=\"o\">=<\/span><span class=\"mi\">100<\/span><span class=\"p\">)<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>CPU times: user 1.11 s, sys: 1.82 ms, total: 1.11 s\nWall time: 74.3 ms\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Exporting-to-pandas\">Exporting to pandas<a class=\"anchor-link\" href=\"#Exporting-to-pandas\">\u00b6<\/a><\/h2><p>This <code>ResultSet<\/code> object can be iterated and sliced etc, but a more interesting option is that it has both a <code>.read(nbytes)<\/code> and <code>.readline()<\/code> method, allowing it to behave like an open file handle onto the results.<\/p>\n<p>A use of this is to pass the <code>arthor.ResultSet<\/code> object directly into <code>pandas.read_csv<\/code>,\nallowing the results of the search to be efficiently slurped into a <code>pandas.DataFrame<\/code>:<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[4]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"kn\">import<\/span> <span class=\"nn\">pandas<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">pd<\/span>\n\n<span class=\"n\">df<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pd<\/span><span class=\"o\">.<\/span><span class=\"n\">read_csv<\/span><span class=\"p\">(<\/span><span class=\"n\">rs<\/span><span class=\"p\">,<\/span> <span class=\"n\">sep<\/span><span class=\"o\">=<\/span><span class=\"s1\">'\\s+'<\/span><span class=\"p\">,<\/span> <span class=\"n\">names<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'id'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'similarity'<\/span><span class=\"p\">])<\/span>\n\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">df<\/span><span class=\"o\">.<\/span><span class=\"n\">head<\/span><span class=\"p\">())<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>                                              smiles         id  similarity\n0  C1=CC(=CC=C1C2=NN=C3N2C(=CN=C3)OCC(C4=CC(=C(C=...   76311347       0.831\n1  CN[C@@H](COC1=CN=CC2=NN=C(N12)C3=CC=C(C=C3)OC(...   76318585       0.702\n2  C1=CC(=CC=C1C2=NN=C3N2C(=CN=C3)OCC(CO)C4=CC(=C...   76314954       0.694\n3  C1=CC(=CC=C1C2=NN=C3N2C(=CN=C3)OCC(C4=CC(=C(C=...   76314948       0.686\n4  CN(C)C(COC1=CN=CC2=NN=C(N12)C3=CC=C(C=C3)OC(F)...  129012036       0.678\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Creating-on-the-fly-databases\">Creating on the fly databases<a class=\"anchor-link\" href=\"#Creating-on-the-fly-databases\">\u00b6<\/a><\/h2><p>Another new feature with the 3.0 release of Arthor is the ability to create substructure or similarity databases in memory.\nThis is exposed in Python via <code>.from_smiles<\/code> classmethods which take an iterable of smiles (i.e. list, array or pandas series) to create a searchable chemical Database.<\/p>\n<p>Here we create a substructure database of our previous results, and search for hits which feature the double fluoro substituted phenyl ring.\nThe result set is then directly converted (with the <code>to_array()<\/code> method) into a <code>numpy.array<\/code> allowing it to index the original dataframe directly and pull out the rows which feature this substructure.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[5]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">subdb<\/span> <span class=\"o\">=<\/span> <span class=\"n\">arthor<\/span><span class=\"o\">.<\/span><span class=\"n\">SubDb<\/span><span class=\"o\">.<\/span><span class=\"n\">from_smiles<\/span><span class=\"p\">(<\/span><span class=\"n\">df<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">])<\/span>\n\n<span class=\"n\">filtered<\/span> <span class=\"o\">=<\/span> <span class=\"n\">df<\/span><span class=\"o\">.<\/span><span class=\"n\">iloc<\/span><span class=\"p\">[<\/span><span class=\"n\">subdb<\/span><span class=\"o\">.<\/span><span class=\"n\">search<\/span><span class=\"p\">(<\/span><span class=\"s1\">'c1(F)c(F)cccc1'<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">to_array<\/span><span class=\"p\">()]<\/span>\n\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">filtered<\/span><span class=\"p\">))<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>69\nCPU times: user 5.82 ms, sys: 0 ns, total: 5.82 ms\nWall time: 5.6 ms\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>To quickly visualise this, we can drop the results into <code>rdkit<\/code>:<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[6]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"kn\">from<\/span> <span class=\"nn\">rdkit<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Chem<\/span>\n\n<span class=\"n\">Chem<\/span><span class=\"o\">.<\/span><span class=\"n\">Draw<\/span><span class=\"o\">.<\/span><span class=\"n\">MolsToGridImage<\/span><span class=\"p\">(<\/span>\n    <span class=\"n\">filtered<\/span><span class=\"o\">.<\/span><span class=\"n\">iloc<\/span><span class=\"p\">[:<\/span><span class=\"mi\">6<\/span><span class=\"p\">][<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">map<\/span><span class=\"p\">(<\/span><span class=\"n\">Chem<\/span><span class=\"o\">.<\/span><span class=\"n\">MolFromSmiles<\/span><span class=\"p\">),<\/span>\n    <span class=\"n\">legends<\/span><span class=\"o\">=<\/span><span class=\"nb\">list<\/span><span class=\"p\">(<\/span><span class=\"n\">filtered<\/span><span class=\"o\">.<\/span><span class=\"n\">iloc<\/span><span class=\"p\">[:<\/span><span class=\"mi\">6<\/span><span class=\"p\">][<\/span><span class=\"s1\">'similarity'<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">map<\/span><span class=\"p\">(<\/span><span class=\"k\">lambda<\/span> <span class=\"n\">x<\/span><span class=\"p\">:<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">)[:<\/span><span class=\"mi\">4<\/span><span class=\"p\">]))<\/span>\n<span class=\"p\">)<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt output_prompt\">Out[6]:<\/div>\n\n\n\n\n<div class=\"output_png output_subarea output_execute_result\">\n<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAACUkklEQVR4nO2dd1hT5xfHT3YIGxRERRFFFHHinrgXWqvS1oG7aLXiqKPVtqi1Fa0DraOuulr3RHH83OIWBFmKCogsAUmAkEDm+\/vj1ZTiguTeG0jez9OnD7m5OedEvtxz7zvOYSGEgEAgEAgEc4Vt7AAIBAKBQDAmJBESCAQCwawhiZBAIBAIZg1JhAQCgUAwa0giJBAIBIJZQxIhgUAgEMwakggJBAKBYNaQREggEAgEs4YkQgKBQCCYNSQREggEAsGsIYmQQCAQCGYNSYQEAoFAMGtIIiQQCASCWUMSIcE0KS4uTklJEYvFkndQq9Uf+eDJk+DpCSoVvHgB8+YxFi+hekB0ZZJwjR3AG169ehUTEzNjxgwbGxsej2draysQCEQikZWVFY\/Hs7e3Fwh+FYk4FhYgFIKNDfB4YGsLAgGIRJCUBEuXQnw8ZGbCxo2werWxvwzB2Ny4cePq1atLlix577t16tTPzHxR7qBIBAIBAMCKFdCxI2zbBoMH0xskodpBdGWqVJVEOGPGjAsXLshksve+y2azEVrxoc6Jy5YRhRH+pbS0dNKkSSkpKS4uLgqF4t2Om1wu791PyeUgl7\/5uW9fOH8eevSgO1JCdYLoyoSpEokwPDz8+PHjVlZWt27dEgqFarW6qKiotLS0pKREKpWqVKqiouLSUpZMBjIZKJVQWAgqFRQVQWkplJSAjQ1RGOFfVq9enZyc3KxZs5iYGC63ogqXy0GhAAC4dg1kMpg7F9auBQcHGuMkVC+IrkwY4ydCqVQ6bdo0AFixYkXnzp31sHDyJBQXE4URAAAyMjJCQkIAYOPGjRW\/WgGASAQiEQAAiwUA0KYNqFRQUgJpaVC\/Pi2hEqoRRFemjfET4eLFizMyMtq1a\/fNN9\/gIwcPHoyJiRGJRAKBAE8ZOjjU5nIHiURgaQl8PtjZAY8HtWoBn\/+vHayw168hNhZatDDOdyEYnblz58pkslGjRvn6+uIj8+bNO3HihO4ENpvt4dEyN\/douQ+uXg34E8OGvTkyYQKMHAkpKXDuHN1RE6o6RFcmDjIq9+\/f53A4XC734cOHuoNjxowpF2TDhl4AqNx\/x46Vt3b0KGKzUffujH4FQtXhxo0bLBZLJBKlpaXpDo4dO7Yicjp+vLy1\/Hzk4IAA0LlzjH4LQlWD6MrkYaEPLUGhH7Va3b59++jo6IULF+JhB0x4eHh8fLxMJlMqlQUFBWq1mst1zMpaWVICUimo1SCRgEoFf\/0Fffr8x2BxMTRsCLm5cO4cDBjA9NchGBe1Wu3j4xMbG7tixYrvv\/9edzw3N7e4uFj3UqvVFhUpEfIq9\/EGDd4zrr5mDcybB02bQmwsVGY8jGA6EF2ZBUZMwitXrgQANze34uJiqmz+\/jsCQC1aII2GKpOE6kFoaCgANGzYsLS0lCqbCgXy8EAAaPNmqkwSqhlEV+aA0RLhixcvLC0tAeDMmTMUmi0pQa6uCAAdOkShVUJVJycnx87OjnI5IYSOHUMAqGZNVFBArWFCNYDoykwwWmWZGTNmyGSyMWPGDKZ0959QCD\/+CADw00\/w0ToPBJPihx9+KCgo8PPzo1ZOADB8OPTuDXl58Ouv1BomVAOIrswE48wR7t+\/f8yYMQ4ODo8fP3ZycqLWuEYD3t7w5Ans2AGTJ1Nrm1AViYqKat++PZfLjYuLa9y4MeX2Y2LAxwe4XIiPBw8Pys0TqihEV+aDEZ4IxWLx3LlzAWD16tWUZ0EA4HDg558BAIKDoaSEcvOEqoVWq50xY4ZWq503bx4dVysAaNUKAgLA3b0kNHQ7HfYJVRCiK\/OC+dHYSZMmAUD37t21Wi1NLjQa1KoV6tAha\/Pmd\/ZYEEyLnTt3AkDdunWlUil9XjIzi6ytbQHgxo0b9HkhVB2IrswKphPh9evXWSyWQCBITEyk1dH58xEAULNmzaKiIlodEYxIYWGhi4sLABw8eJBuX7jUcuvWrTVkRbKpQ3RlbjCaCEtLS5s2bQoAy5YtY8AdrgGxdOlSBnwRjMKsWbMAoGvXrvSNLuiQy+X16tUDgD179tDti2BciK7MDUYT4c8\/\/wwAnp6eFO7I+QgREREAYG1tnZOTw4A7AsMkJCTweDwOhxMTE8OMx7179wJAnTp1KNz5SqhqEF2ZIcwlwqSkJKFQyGKxrly5wpjTQYMGAcC8efMY80hgjH79+gHAzJkzGfOo1WrbtWsHAEuWLGHMKYFhiK7MEIYSoVarxQOVgYGBzHjExMbGstlsoVD48uVLJv0S6ObQoUMA4Ojo+Pr1ayb93r59m8ViWVhYEEWZJERX5gld+wglEklCQkJiYiL+f3R0NABotdrk5GR7e3s6PH6IUaNGHTx4MDAwcOvWrUz6JVBOVlZW1Fvu37+fm5u7devWwMBAhsPw9\/c\/evTo5MmTd+zYwbBrAh0QXRGoKfgqlUJiIsTFQUbGnzdvHo2Pj8\/JySl3DofDsbS0ZOGuXAyybNmyY8eO7dy5c86cOU2aNGHYO8EQ0tOlDx5cjIyMjIqKioyMFIvF5U5gs5nYCPvs2bOioiIfHx\/88rPPPjt\/\/nzXrl0ZcE2gg\/T0ogcPLhFdEf6lIo+NJ06gxo2RUolSU9F33yGlEsXHo8OHUXAw8vdHXl6IzX7Tc6RHjznYrI2NjY+PT0BAQEhISFhYWFZWVq9evQBg8eLFND\/jIoTQ4cOHy+7+adasWYcOHbKyshhwTTCEzEwUFoaCg5GfH3J2Rg0blpbVqp2dXZcuXYKCgg4fPrxlyxYAcHJyKiwspDuqfv36sdnsf\/75ByGkUqmaN28OACtWrKDbL4Eq3tFVAtEVoSwVTYTjxqGNG98kQl\/f8j23hELUujUKCECbN8eGh4e\/ePHiXSP3799nsViWlpbZ2dlUf4v\/EBERwWKxPDw8FAoFQujixYt48P358+e0+iVUnLK3VoGBaOlSNGQIcnEprysnJ+TnN3zx4sUnTpxIT08va0Gr1eJ7Z7pvrY4fPw4A9vb2eXl5CKE1a9YA1b0ICFRRYV1p\/PyGEl0RdFQ0Ee7bh8aMQXFx6LvvUFAQatIE+fujpUvR0aMoKQmp1e\/5lEqlSkxMPHz48KNHj\/CRzz77DGhejqVQKLy8vAAgODgYIVRaWurp6QkAv\/32G31OCZWl7K3V+PH\/XqFsbFCXLigoCO3Zg+Lj0bubuAoLC+\/cuYN\/vnv3LovFEgqF773xogS5XN6gQQMA2Lx5M6KzFwGBEoiuCPpRiUQYFYUmTkTffff+c7RalJKCTp9GISErR48e3bJlSz6fj0ceFi1ahM+Jj4\/ncDh8Pj85OZmqL1COpUuXAkDjxo1LSkoQQj\/88AMAeHt7K5VKmjwS9KDsrdXcuWjBAnTgAHr27D1nSqXFN27cWLdu3ZgxYzw9PdlsNpvN1o17jx49GgBGjx5NU5y6qh9qtRohNGHCBADw8\/OjyR3BQIiuCPpRiUSIEBo79j+JMC0NrVuHpkxBHToga+s3N1+uru44\/7FYLHd396FDh+7DH0YIIRQQEAAA48ePp\/ZrYJ4+fYq3Kl6+fBkhFBcXx+Px2Gz2rVu36HBH0JuP3FrhGeg9e1BQEPLxQV27ppadzhEIBO3bt9eNcqenp4tEIhaLdfPmTcqDfPnyJV7edf36dYTQgwcP2Gw2n89PSkqi3BeBEiqjq\/1EVwQdFd1HuGUL+uEH9OTJfw5evfqfkffatVHfvmjZsh07d+68f\/\/+e6skpKam8vl8DoeTkJBgePRl0Wq1vXv3BoDJkycjhDQaTefOnQFgxowZ1DoiGM6Hbq0mT0Zc7n9E1aiRok2bNoGBgdu2bYuKinr3yX7x4sUA0LFjR8qrYQ0fPhwAxo4dixDSaDTt27cvO7xBqIJURldPia4IOiqaCLt1QwDo8uX\/HHz9Gk2bhjZtQteuofz8irqcMWNGixbTv\/nmVWXi\/DS4WnyNGjXw5PPGjRsBwMXFRSKRUOuIYDhyOapdG\/XoUf74\/PmIw0FeXiggAIWGoogIJJd\/wlRRUZG7u7ev79VDh943U60vly5dAgBra+vMzEyE0Pbt24H+XgQEAyG6IuhHRRNhrVoIAFFS9CA7u9TSErFY6P59Cqxh8vLyatSoAQD79+9HCGVlZeHJ52PHSBumqkhSEr4rL388P\/\/TV6h32blTDYDc3FBJCSXR\/buWfdWqVQghsVhcs2ZNYKQXAcEQiK4I+lGhRCiVIhYLWVggqvqE\/PADAkB9+1JjDSE0ZswYAOjfvz9+iQcfBg0aRJkDAqVcvIgAUM+e1FjTaJCPDwJAVC0NXr16NQA0atQIr2WfOXMmMNWLgGAIRFcE\/ahQInz4EAEgb2\/KvEokyMHhPWOt+nHhwgUAEIlEeK47PDwcDz6Qqn1Vlr\/+QgBo3DjKDF65ggCQtTUyvGrCq1evbG1tAeDs2bMIofj4eIZ7ERD0huiKoB8VqiT07BkAgIdHRc6tEHZ2MH8+AMD334OBtU5LSkqmT58OAEuWLGnYsKFUKp02bRoALF++3NXVlYJYCTSQng4AUK8eZQZ79oShQ0EqheBgQ00tWLCgsLDws88+GzhwIADMnDlTpVJNnz69ZcuWFARKoBOiK4KeVCRbLl+OANCCBVRmYLkc1amDANDJkwbZWbhwIQA0b94cr\/sKCgoCgHbt2qnfu8mfUDWYMgUBoK1bqbT5\/Dni8xGbjaKi9DeCmwAIBIKnT58ihA4ePAjG6EVA0A+iK4J+GOeJEAAsLGDRIgCAxYtBo9HTyOPHj9euXcvhcHbs2MHj8R48eLBp0yYul7t161YOh0NhtARqwXfu1D6xN2wI33wDWu2bwQb9sLW17d69+4IFCzw8PORyOb7NCgkJcXR0pCxQAm0QXRH0pCLZsnNnBICuXaM4CSuVqGFDBID27tXTgkaj2bhxI64KqFKpWrduDQALqH10JdBA06YIAMXFUWw2P\/\/N3LMhWtVqtXh0YdGiRQDQpk0bDVWLxAg0Q3RF0I8K9SN0coK8PMjMhNq1KU7DBw7ApUsQHEzBsP6qVasWLlxYv379hIQES0tLKqIj0IWNDUilUFAAtrYUW963D4RC8Pc31E5ycrK3t7dCobh9+3bHjh2pCI1AO0RXBP349NBoYSHk5YGlJbi4UO9+1CgYMgT69gWVCl68gHnz9LSTlpa2bNkyANi4cSPJglUciQSkUrC2pv5qBQABAcDjgaenoYqaPXt2aWnp+PHjydWqukB0RdCbTzfmxROEjRoBfS11O3aEbdtg8GBQKmHbNrCyAh4P7O2BxwMrK7CwAKEQbGyAx5Pa2lq\/18K3334rk8lGjx7t5+dHV5QEiqB8ad+76BRVUABffFH+XawoAOBy56rVMnyQz+frbqFSU1PPnDljbW3922+\/0RglgVKqkq6C1GoFPkh0VS2oaCJs3JjGIPr2hfPnoUcPkEph6tQPnubs3CQnJ0sgEIhEIisrKx6PZ29vz+PxSktLY2Ji7O3t165dS2OUBIpg4IKlU1RJCRw58sHTRKJ9cvnr977l6urapk0bFzqGQQj0UJV0tVMul7\/3LaKrqklFEyG1S0bfZe5cWLsW+HwIDASpFFQqKCgApRJkMpDJQKmEggLgcjkAoFAoFAqFRCIp+3EnJ6fWrVs7OzvTGyWBCl6+BKB6ad+7YEXZ2cHhw+XfKimB0lIAADb7d61WiQ8qlUqZ7M3TYXJy8vbt2wsKCnJycoioqgtVSVd\/aLVqfJDoqlpgzESYkgJJSW9+btMGVCpwcIDVqz\/yiZcAUFpaWlJSIpVKVSpVQUGBUqlMSEiYNm3a1atXU1NTcbtLQlWGjjXumLg4yMp687NOUR9d4DDhQ29kZmaePXt26dKlmzdvpjRGAl1UJV1N+tAbRFdVlE+uK33xAoWHo\/R0iperpqWh+vURn4+uXKHAGm5zOHHiRApsEWhm8mQEgHbtothsSgqqXRvx+dTs83n8+DGugBUbG0uBOQL9EF0R9OZjifDECdS4MVIqUWpq+S6XiYmoa1cUFqan14yMNzsIO3VCRUV6GikLfW0OCXRQUIDKdavUaNDt2\/obzM1Fnp5vCi5T1StgxowZANC7d29qzBHoh+iKoB+fSITjxqGNG9+TCL\/++k1\/y44dUXh45Vzm5CAvLwSAWrdGYnHlQ\/4AuOLoiBEjKLNIoJqP3FqdPIkAUJs2aM8epFJVzmxhIWrTBgGgli0Rhd0n8\/PzHRwcAODcuXOUGSXQANEVwUA+sY+wb1+4cweKiwEA0tIgJ+fN8bVrISQEataEu3dh8GBo3x7OnFGhCuzNz8uD3r0hMRFatoRLl8DeXv9B3XL8+OOPlpaWx48fv3fvHmVGCVSDF6C\/S2Eh1KwJDx\/C+PHQpAls3gwfWHZXHqUSRo6Ehw+hUSO4cAHs7CgL1cHBARcBmTt3rlqtpswugQaIrggG8ZEkeeIE2rcPRUWhiRPRd9+h4cORQIACA1FGxpsTiotRaCiqXRsBIF\/fi82bN9+zZ89H6gZJJG\/6ezVvjvLyKE3oCCGEvv\/+ewDoS2GfQwKlYEWNGYPi4tB336H799GaNf+OjctkaPNm1KjRm8GGDh1igoODc3NzP2JQrUYjRyIAVLs2Sk2lPmCFQtGoUSM2m31p927qrRMoopK6klYRXXHZ7NtEV1WDTydChNDYsWjOHPT554jFQgBIKEQzZ\/67fEYuR+vXaz092+PM2qJFi8OHD7+bDiUSSd++pQCoaVP06hUtX0YsFtvb29cQiV5ev06LA4JhlLu1GjbsTbO3oKB\/5aTRoLAw1Lkz6tx5NAAIBIKAgIDHjx+\/a02r1QYFyQCQgwP15SV1XAsLi2zaFNWsiQoK6PJBMIxK6mpjVdDVrbAwGdFVlaFCRbd1xMWhgADE4SAAxOejgAD0\/Pmbt0pKSv744w9dC0AvL687d+7oPlhcXNytW7e6dXt26lSSmUlh\/OW5vXGj2tkZdexIow+CvpS9tfruOxQejnr0eHOfzuejiRNRfPy\/J9+4ETFkyBA2mw0AbDZ7xIgRDx48KGttwYIFzs6tWrSQRUTQHHfv3ggAzZ9PsxuCnhBdEQykcokQExeHvvwSsdlvdBYUpEhJScFvKRSKPXv2NGrUiMPh4M5bCCGZTNajRw8AqFevXiodAw1l0fU5PHWKXkcEinj4EAUEIC73zZWrS5f\/rEZ+9uxZUFCQhYUFAISEhOiOr169GgB4PN7Zs\/SvOIiORmw24vPRW0kTqj5EV4SKo08ixCQno8BAxOUiX98bPB4vICAgKSkJv6VUKq+93XQjl8t79eoFAK6urrp8SS8bNyIA5O2NSJeT6kNyMpoxA4lECADZ2Ym7dfM9dOiQrrtydnb2jz\/+KH67yHjfvn0sFovFYu2ifNfYh5gwAQEgsia5uvFfXWm7dRtAdEV4F\/0TISYpCX3zzSIulwsAXC533LhxunSIEFIoFIMHDwYAZ2fn9w7H04KuzyEeLiFUH16\/RsuWocGD35QXcnd3\/+OPP4r\/uzXs9OnTWG9r165lLrLMTGRpiQAQmX6uhrzV1XWiK8J7MTQRYlJTU4OCggQCAR529\/Pzi46OViqVQ4YMAQAnJyem97nv2YMAkJsbUigY9UuggtLS0j179jRt2hRftmxtbYOCgjIzMxFCd+7cwbX8f\/rpJ6bDWrr0ze5XMtJQPSG6InwIahIhJjU1NTAwkM\/n43RYt25dAKhZs2Z82alqZtBoUMuWCABt2sS0awJFaDSa48ePd+rUCV+2hEKhv7+\/ra0tAEydOtUIAcnlqF49BID27DGCdwJFEF0R3oXKRIh5+fJlUFCQUCh0dXW1srKKjIyk3EWFOHECASAXl\/I1lwjVjcjIyICAAA6Hg1e9Dxs2TDfHwzR79yI7O7Rjh3G8EyiF6Iqgg4UqUA5GD65cudK7d++GDRs+f\/6cDvufBiHo1AmysyEsDFq2NE4MBOpISkrq27dvenr6xYsX+\/TpY5wgEAKxGBwdjeOdQANEVwSoSBsm\/ejWrRufz09NTZXJZLoGzYzCYsGhQ1CrFggERvBOoBpPT08\/P78tW7Y8evTIaBcsFgtsbODbb4HDAYkEJk2CFi0gNfXNu9bWwP33D0rGYuUgZGFhIcRty8uQm5v7888\/Z2VlLV26FK+pJhiLaqerYhYr9wO6EolEAnK50wu6EiGPx\/P09IyLi3vy5ImPjw9NXj5B7dowZ86\/2vL1NU4YBIrAQoqKijJmELt2QYcOEBAAGg307w\/jxsH48e89MbdLl4a3br33LQ6Ho9FoAGDu3LkxMTH0BfsuSqUyOjp68+bN715G+Xz+u\/esHA7Hxsam7BEPD4\/hw4fTGyWzVC9dnezSJeADuvryyy8nTZrUr18\/OgN9P9VdV3QlQgDw9vaOi4uLi4szWiIspy1fX2jSBHJzgc8HS0uwtAQ+H2xtgccDG5vvnZwkKpW1tTWPx7Ozs8O\/PEtLSz6fP3DgQCsrK+N8BUIZ2rZtCwCRkZHGDCI+HqZPBwDgcMDZGfh80Mm7qAg0Gt2JGkdHd3d3uVyuUCh0B6VSqVqt1rw97dGjR1evXu3Zsydj4c+fP\/\/KlSvx8fF6W2jXrt3+\/fsPHz6Mi7OYANVLV1bv0xUAIIROnz596tSpx48fu7m5MRY4prrrisZE2KxZMwBISEigz8UnKKctiQRkMpBI3nvugdq1X+q6UP+X2bNnT506tUmTJvRFSqgIzZo1s7CweP78uVgsxo1sjICXF0RFQZMmoNVCTg589RV89dV7T2wEkPzOwdq1a2dnZ5c9sm7dOsYSYUJCwpYtWxBCy5cvr1mzZrl3lUqlTCYrd1CtVkulUt1LlUq1e\/fuBw8e\/P333+PGjaM9YkaoXroaBjDsAzYCAgL+\/vvv77\/\/\/uDBg3TF+T5MQFd0LZYBgFOnTg0bNmzAgAHnzp2jycUn+PNPsLaGMWNAq4V+\/eDSJdBooKgIFAqQy6G4GFQqkEhArQap9LBSWSCTFRUVqVSqwsJChUIhl8uLi4sjIyOfPn06cuTII0eOMP8NZDLZokWLSkpKeDyetbW1UCi0sLAo99iKJwZsbW15PJ6NjQ0+h\/lQmaFz58537ty5dOlS7969jROBSgWzZwOHAwUFMGECVHKG7+jRo\/7+\/mWPsFisxMREZm6zevXqdfXq1VmzZoWGhuptZO\/evePHj69Tp05SUpJxpv9poLrrCpOZmenp6SmTySIiIrp27Up5jB\/CBHRFYyJMTk5u1KhR3bp109PTaXLxCajQVnZ2toeHh1wuv3PnTocOHSiP8SM8evSoV69eCCHJB55iP4KVlRWPx7O3tz948GCLFi1MZgo9KCjojz\/+CAkJWbhwobFj0ZOxY8f+888\/ZY98++23f\/zxB91+Dx069NVXXzk5OSUlJdnZ2QFAXl7eiRMndCe8d\/2FboLH3d3d3d0dABBCHTp0ePDgwZIlS4KDg+kOmxlMQFeYn3\/++Zdffmnfvv3du3dZLBYDHk1EV\/TtzNBoNPir5ufn0+eFAXCbw379+jHpVKPR4D2\/Q4YM2bp168aNG0NCQn7++eeFCxdOmzZtypQp\/v7+Q4cO7dOnT8eOHX18fBo2bFivXj17e\/tymrOwsAgNDWUyclrZvXs3APj7+xs7EP0pKCgoN4UjEono\/huRyWT169cHgJ07d+oO3r17t+IXiqVLl+o+ePv2bRaLZWFh8fLlS1rDZgwT0BVGJpPhFkB\/\/\/03M+5MQ1c0PhECQPv27R88eMDwczrlFBQUNGzYUCwWX758mbHF7hs2bJg1a1bt2rUTExNx2YtKUVRUpFarjx8\/\/vXXX9esWTM5Odna2pqOOBkmPj6+efPmDRo0SElJMXYs+nPz5k1fX19NmRUQq1atmj9\/Pn0eFy9e\/Ntvv\/n4+Ny\/f1+3GCElJWXlypW6c0pKSkpLS8t9UDfBM2HChDFjxuiO+\/v7Hz16dPz48TiFVHdMQ1eY3bt3T5w4sW7duklJSSKRiFZfpqMrWtPspEmTAADPo1Zrfv31VwBo3769VqtlwF1mZiZOfidPntQdPHv2bHh4+MWLF+\/fvx8dHZ2cnJyZmSkWi1Uq1UdM4QZYy5cvpz9qJtBoNHgF78c7jFd98DCDjjp16iiVSpp8PX\/+XCgUstnsu3fvUmUzJSVFIBCw2exyzfyqKSajK4SQRqPB62B\/+eUXWh2Zkq7oTYRr1qwBgBkzZtDqhQGKi4tr1aoFAKcYaXM4bNgwABjx3+YsuqbH78Jisezt7Z2cnNzd3b29vb\/44gvdpyIiIgDA1tb29evXDETOAHh04fz588YOxCBUKlX79u3L\/hIPHTpEky8\/Pz8AmDRpErVm8SNs586dmbk7pBvT0BXm2rVrAGBlZZWVlUWfF1PSFb2J8MKFCwDQo0cPWr0wA17O4O3traG5SPyxY8cAwMbGJiMjo+zxSZMmDRw4sE+fPj4+Pi1atHB3d3dxcbG3t8fFEsvStm3bsh8cMGAAACxYsIDWsBlj9uzZpvGM+\/jx47IjV+3ataPDC\/4btLGxofyaWFRU5OzsDADHjh2j1rJRMBldYT7\/\/HM6spQOE9MVvYkwMzMTABwcHGj1wgxKpRKvbqJ1FrqwsBB37dhUmb4ZGo1GLBZnZ2cnJyfHxsY+efKk7LuPHj1is9lCoTA9PZ3qeI3Avn37AODzzz83diAUsGnTprJ3MHfu3KHWvkKh8PT0BACaFkxt3rwZANzd3UtLS+mwzySmpCuEUHJyMh5jpKPtgenpit5EiBBydHQEAFqf0Bljz549AODm5qagrc3hjBkz8GQktc+deO\/atGnTKLRpLB4\/fgwArq6uxg6EArRaLR5fwnz55ZfU2l+xYgUAeHl50TQBqVarvb29AWD16tV02GcSU9IVZu7cuQDg6+tLuWXT0xXtibB79+4A8L\/\/\/Y9uRwyg0WhatGgBAJs3b6bD\/r179zgcDpfLjY6OptZyUlISl8vl8XjPnj2j1jLzaLVavJIoOzvb2LFQQG5uLp5+BgAul5uWlkaV5ezsbFzO8cKFC1TZfJdLly4BgJ2dXV5eHn1eGMDEdIUQkkgkNWrUgP+uuTMck9QV7Ylw+vTpALB27Vq6HTHD8ePHAcDFxUUmk1FrWaVStWrVCgAWLVpErWXM5MmTAWDMmDF0GGcYX19fADhz5oyxA6GGc+fO6fY+UziVO2rUKGBkbxyehDaBNXEmpiv0dmVDw4YNKRxjNEld0Z4I8Wjv5MmT6XbEGB07dgSAkJAQas3i0QY3N7diejoJZ2RkWFhYsNlsyh83mWfevHkAsGTJEmMHQhlTp07FidDOzk4qlRpu8ObNm3hvcmpqquHWPk5iYiKXy+VwOHFxcXT7ohXT05VKpcI1n6l6FDFVXdGeCG\/cuIEnveh2xBh4abKdnZ1YLKbKZmpqKq7CQ+sY8pw5cwBgyJAh9LlghgMHDpjGF9Ehk8nw6gMA2Lhxo4HW1Gp1y5Ytgf6dZDq++eYbABg0aBAz7mjC9HSFEAoPD6dqjNGEdUV7IhSLxQBgaWlJ964DJsGVeRcvXkyVwb59+wLAuHHjqDL4XvLy8vDg\/q1bt2h1RDfPnj0DgFq1ahk7ECqJiori8\/kA4OHhYeAfy8aNG\/Giu5KSEqrC+zi5ubl4gq1a78MzSV0hhPr37w8AM2fONNCOCeuK9kSIEMITtmvXrqV8Xs1YPHjwgMViWVpaUjKvjtdtOzo65uTkGG7t4+Bqtt26daPbEa3o1jX8888\/9BVkYZ7ly5fjh8LTp0\/rbSQ\/Px8v1Wam+IOOVatWAUDTpk0\/XuqoKmOqusJjjFwuNz4+Xm8jpq0remuNqtXquXPn\/vHHHw4ODmKx2MLCws\/PLzAwsHfv3sxURqeP4cOHnzhxYubMmRs2bDDEjlgsbtq0aW5u7u7du8d\/oCc1hRQXFzds2DA3N\/f8+fP4PrE6smPHjqlTp9aoUSM3N9fe3t7Pz8\/f33\/AgAE8Hs\/YoRmERqPp2bNnRESEo6Nj69at8UFbW9t3W5Xi7iLlDuIy\/xcuXIiJiWG+\/ZlSqfT29n727Nny5cvxegoMbhOGf2bz+SyhEAB4LJbFO1\/qWkHBgdzc+kJhC0tLP0dHxiLXgXXl6OiYl5dnSroCgGnTpm3durVWrVp4WwIQXZWDvhybn5+PS1QLBIIJEyZ07txZ59TNze2nn356+vQpfd7p5smTJ1wul8\/nJycnG2JnwoQJANCjRw\/G6gmtXr0aAFq2bFkdB6u1Wu2CBQsAgMVi9e3bFy8EwNSoUePrr7++ePGiWq02dpj68+eff+IBUr1hsVg2NjZlb9tzcnIKCgroiLachP7++282m\/2RDuNf7dnjExn5of\/+JxaHGakQoMnrateuXe\/2QiK60kHXE+GzZ8+GDh365MkTFxeXkydP4rKKL1++PHDgwPbt25OT3\/Tu9vHxCQgIGD169Lt9jas+EyZM2LNnj7u7e\/v27W1sbAQCgUgk0jUC5PF4VlZWuq65XC7X1ta27DkAcP369Z49e\/L5\/JiYGGZaswJAaWlp48aN09PTDx8+XK5JbBVHqVROnDhx\/\/79XC53y5YtU6ZMAYCEhIQjR44cOXIkMTERn+bg4DB48ODqeC9fUlLSrFmz1NTUmTNnDh06FB8sLCzUarXlziwuLlapVOUOyuVyhUJx5syZmzdv9uzZ88qVKwBw+PDhr7\/+evLkyWvXrqU84D\/\/\/PPw4cN\/\/PEHzhy4F4G1tXXZP2eZTKZUKvHPQ9evf9m8OQAoESp950uFuLsfycurLxQOdHBobWVFebQfguhKh\/nqio58fuHCBdyhsWXLlu\/dIBwZGRkUFOTg4IBjEAgEfn5+hw8frl7j8itWrDCkk7K9vT3+OGNLsHRs27YNABo3blyNpnOKior69esHAFZWVufOnXv3hPj4+ODg4KZNm+r+hR0cHAICAsLCwqrL18QzuN7e3oYELBaL8VwOnmiMiYnhcDg8Hi8pKYm6SN84wtP\/R48eRVT0IrgqkTD\/REh0VUFMW1fUJ8KtW7fi26URI0bg1TH5+fnvHYUrKSk5fPiwn58fl8vV5YbAwMCIiAjKo6KcV69e2dvbA8CcOXP279+\/devW0NDQkJCQRYsWLViwIDAwcMKECf7+\/oMGDerTp0\/btm1btmypK5Ot+74ikYjFYl28eFFn9n\/\/+x8DfYzVajV+AF2wYEFkZGRCQkJycnJeXh5NAx2Gk5mZiasNuLi4PHz4ECGkVqs\/NFSFr1xln7AdHR2r\/pUrLS0N1+C+du2agaZCQ0MBwNPTE99Z4loKn332GQVRlgEvbe\/Vqxd+OXjwYDCsyjPziZDoqlKYsK6oTIQqlerbb78FABaLtXDhQpz8YmNj3dzcPr7TICsrKzQ0tE2bNjqFNW3aNDg4mIE9m3rz5ZdfAsCAAQP0+7hWqxWLxYsXL4YybQ4XLlwIAAsXLqQ00jdkZWUVFhbqXq5du\/ZDj7MCgcDe3n7q6dND4+LGJCaOf\/z4m6dP5zx7tjA5eemLF7+mpW3NzLwqkQQmJf2alnaa\/itXXFwcbkHl5eWFBxhKSkr8\/f2\/\/vrrj3+wel25cLuA0aNHG25KpVJ5eXkBwPr16xFCOTk5eNtM2VsuA4mLi8MLEWNjYxGdvQjog+iqspiwrihLhGWXxuzbtw8fPHXqFG6M3qlTp4oUqn748OHs2bOdnJywvDgcTr9+\/SisvkgVeN2USCQycKWMrs1hWFgYersrw8LColwDJkro379\/nTp18PCCVqvF1aRcXV19fHyaNm3q7u7u6OiIZY0Ze\/78hyaf+z16xNjN++XLl\/GK9s6dO+OWirm5ubi4j4ODw8uXLytiJDo6+ocffmjUqJHu2+3evZu+yul6gCsrWllZUfWrP3XqFB5iwf9ouLN0y5YtKVnxodVqccPnOXPmIIQUCkXjxo2Btl4EdEB0pR+mqitqEuHTp09xXQwXF5d79+7hg6GhoXidz5dffimXyytuTa1WX7x4MSAgQCQSCYXCb775pkqt15LJZLgf05o1awy3hndf6NocDh8+HACmT59uuOWy\/PPPP\/gvHG9V3LFjBwDUqFHjvcUmSkpKxGJxllSaXlqaKJPFFhffKyy8LpFcFItP5OUdzc09kpureyJ8SEU9sA9x5MgRvNRtxIgReA9vSkoKVpqbm9vjx48razAqKur777+3s7PjcrlVp6SkSqXCi9qprduHqzTga0pJSUn9+vUBYOfOnYZb\/vvvvwHAyclJIpEghH777TegsxcB5RBdGYJJ6oqCRPju0pjS0lK8K4DFYgUHB+u9MUAikeAHJsrnYw0BFyRs0aIFJb8ehUJRts0h3pXB4\/GeP39uuHFMfn4+bnT5119\/IYTy8vLwXPT+\/fv1tsnAE6HuRiooKAjfJdy\/fx+PFjRv3tyQO9yqVlJy8+aMZs3ae3h4UPswUW45w\/79+wHA2dm57Ai5Hkil0jp16gDArl27EEIZGRlWVlZAcy8CCjEfXeGNUo0aNaK2q59J6srQRLh161a89GPkyJF4aUxeXh5+vLW0tDx+\/LiB9nG3Nrx8qCrw6NEjHo\/HZrMp7KG6e\/duKNPmEN9DjB07lir7eE67e\/fu+I5k9OjRANC\/f39DbNKaCNVqNe7LyGKxVq1ahQ9euHABD7P36dPHwD+5KlVSMjsb2dggNltz8SL1bZPxTgC8nEGr1Xbp0gUAfvzxR0Ns4v12bdu2xVnkq6++AkZ6ERiOWenq1atXeOw3PDyccuOmpyv9E6FKpdKpqtzSGACoU6cOJZ2Rv\/\/++yp0k6VWv\/78c\/\/GjWfPnk2pVTXeLoPbHL548QK3lo6JiTHc+PXr11kslkAgSExMRAidP3+ektlN+sALFvBk88GDB\/HBnTt34vut8ePH6\/0grlAoXrx4gapYScnx4xEAouniWW45w927d\/EkNP530INnz55hceIZkIiICMZ6ERiI+elqPH1Z2fR0pWci1C2NEQqFuqUxZ8+exf86HTt2NKQI59GjRz\/77DMsVlyHs6rcb65bhwC0DRrIqZ4YK9fmcObMmUDFumSFQoH3Py1btgwhJJfLGzZsCAC62+GqRn5+Pr67dHBwuHHjBkJIq9XiXVAAsHDhQr2H2WNiYvh8fosWLbBNvIeVjkVJleL2bcRiIT4f0Tf2j+uX6pYz4BttvdcQDho0CACmTJmCjNGLQG\/MT1e3WSwWn8+nb1LJxHSlTyJMTEzE19PatWs\/ePAAH9SNvH\/11VeVWhrzLnhoG9dKj46OBoCmTZsaYpAa0tKQtTUCQPTUnMUr1lauXIkQys3NxcM1t2\/fNsQm\/lP39PTEkwR48IGq2U3K0S1YaNCgAV6woFKpvv76awDgcDhbtmwxxHhJSQmPx+NwOPhWo0+fPkB15+7KotGg9u0RAKKui8l7KLecIT09He9evXnzZmVN4RWDNjY2+DYXN31lsheBfpifrjS4kheF7XHexcR0pU8iDA8Pt7a2bt68uW5pDH4MN3BpjA48fOfr64uN420l1M736sPQoQgAjRxJk\/lybQ7xFsPu3bvrbTApKUkoFLJYrCtXriCEYmNj8eymgcmVJhQKBR5U9\/HxwX8PUql04MCBeLLZkG4MOlq0aKG7t8BD7j\/99JPhZvVm2zYEgOrWRfR0Yv6XcssZFi1ahIdtKvWnWlpa6uHhAQAbNmxAxutFUFnMUlfbAKBu3bo0tfjWYUq60icR4vLZugZRjx8\/tra2trKyouo+KCMjAwBq1KiBX+KNq5RMmOnPkSMIANnYIDoHPcq2OSwoKMCC0K9Vr1arxWPXgYGBCCGNRtOpUycAmDVrFrUxU8X169dbt27t4eGh68+O\/zWcnZ11ow4GMmnSJN3f25EjRwBg4MCBlFjWA7EY1ayJANChQ7T7KrecoaioqFatWvXr109Pr8TynLCwMDabrSvThZ+o+vbtS1fQFGF+uhLjgpyH6BeWKelKn0QYGBio+8Vjzp07R22iwkPt+A4OT3Hj3QXGobAQ1amDAJBhoyifpFybw5CQEHwnq8dDNr4rdHZ2xs+XeLdi7dq1q2wRtYsXLwJAp06ddEfu3bvXvHlzCluUbNq0CS+LQAilpqaWvdlinrlzEQDy9WXI3Z07d8ouZ4iJidFj3OnevXu4IENUVBSHw+Hz+U+ePKE+VkoxN13h2l5du3ZlppuNyehKn0S4fv16AJg6dSrl0ejo1q2bbknSkiVLAOD777+nz90nmDYNAaAOHRD9fYuGDRummx+Vy+V169aFyu8e0dVBxQuOMjMz8UJq405dfJyCggIWiyUUCsvOX1LbKOrevXsA0KxZM\/wS3zgbq25RTg6aMgXFxjLnES9nGDNmjIF2tFot\/vNcsGABJYHRilnpKj4+nsvlcjicR48eMebUNHSlTyK8fPkyAHTp0oXyaHTguqvr1q1DCB09ehQA\/Pz86HP3MSQSVLMm4vNRXBwD3sq1Ody8eTOLxZo\/f36ljGBp6uqg4uQ6YsQI6sOlFFyqir4x8NLSUj6fz2azi4qKEEIDBgwAgGPHjtHkriwnTqDGjZFSiVJT0XffoRMn0K5dCCGUno5mzGDAP\/al\/3KGsuBtr7Vq1TJw1x1jmLCuyoHrJgYFBTHp1DR09aYNQqXAk8Px8fEIIZoazeN9dQkJCQCAqwTFx8fT4ejT2NlBQgLcuAFvOzvTiqen5+jRo\/fu3fvLL7\/s2rVrypQpHTt21DUrryC9evW6efPmli1bAODEiRMnT560sbHBz\/FVmbZt2z5\/\/jwyMhIvnqYcgUDg7e398OHDR48ede3atW3btufPn4+KisJl7eimY0fYtg0GD2bA1fupW7furFmzVqxYMX369PXr1+NlyWVhs9l45KAcdnZ2uj\/z4uJivB5k9erVZSvTVmVMW1c6jh8\/fu3atZo1ay5dupRJvyaiK\/3yJ65IVMHStHqAl1B27NgRIaRWqy0sLFgsFhN3CkolmjEDBQWhgAB09SpCiPm7d7yhnsPhJCQk6G0EDwQVFhbiwdVNmzZRFyBd\/P777wDwzTff0OcCT2\/jkYYTJ04AQL9+\/ehzp+PECbRvHxozBsXFvXki9PVFU6eisWOZeyJEb5cz4JYLeiMUClu3bs3MFBQlmLCuyhIdHe3u7m6UkTMT0JU+T4QA4O3tfeXKlfj4eAO\/\/Ido3rw5vH3o5HA4TZo0iY6OTkxMxJvtaGTXLujQAQICQKOB\/v3B15ded++jfv36X3\/99caNG3\/66adjx47pZwS3hFy0aFFGRkb79u2nTp1KaYy00LZtWwCIjIykz4WPjw8AREVF6X7G9Y9oGtgox9y5sHYt4HbU48fDhAmQkQEhIQx4foO1tXVCQsLGjRuvXLlSXFxc7l2tVltYWPjup\/ACK\/yzSqUqKSnBe6iZ+UczHJPXFQYh9OLFi4yMjOfPn5dtiMEApqAr\/fLnrFmzgOYCJS4uLgCAS+wEBAQAwPbt2+lz94aZM5Gu9vzo0UgsNsrdu25D\/YYNG27evBkZGZmUlJSSkiIWiyu+N+j+\/fscDofL5UZHR9MZLGUUFRWx2Ww+n0\/fnlF8NWzSpAl+iUu6M1BtDj8RIoTGjv13jlCpZHSOkBLkcnm9evUAYM+ePcaOpaKYsK7KMW7cOKg6dbgqg9F1pWcixKvzx40bR200ZcHNPvCO15UrVwIze+C2bEF4n4ZGg3r3RsgIQ6OYRYsWfeS2TiQS2dvbu7m5eXh4+Pj4dOnSpU+fPsOGDfP39w8MDJwxY8b8+fNx3YcffviBsZgNB+8ZpaRK7XtRKpW4yAC+G8XNrxnYcfUuhw+jevXQrVvMezaUvXv3AkCdOnXo3q9NIWaiq4yMDNxtG5eRq14YV1ds\/Z4jGVjAUtYFc+tlJk+G27chKAgmTIBFi2h392F+\/vnnXbt29enTp3Pnzj4+Po0aNXJzc7O3txeJRAAgl8slEsmLFy+ePXsWFRV169atS5cunTx58siRI9u2bdu0adPvv\/+u1Wrt7Ox++OEHI36LykL3KBaPx2vevDl6W7oPu8MjWgwTHw8vX8LMmaDVMu\/cIMaOHdu+ffvMzExcCrFaYCa6qlOnDm4FNXv2bG11E5aRdaVf\/iwqKsK7c+hrmbtz5054240oLS0NAJydnWnyVe2QSqVisTg5OTkpKSkyMjIiIuLixYvHjh07dOjQ1q1b\/\/jjj19\/\/RUvaDJmIYLKs27dOgD4+uuv6XOBd+b8\/vvvCKGwsDAA6NWrF33uPoRcjlxdEQCqVr+fN+CazhYWFsbahVlZzElXcrxuQ9cLoRphRF3p34YJj7zRV9383r17rq6uM2bMQAjhhxsAyM3Npcmd6fHXX39BmTaH1YKIiAgAaN26Na0utm7divseZ2dnA4CtrS21O6wryK5dCADVqUN7rVE6GDlyJLwtp1L1MStd4Q151WvsWoexdKV\/IsTj4IztG8UFTnH9aEJFUKvVXl5e8LbNYbVAJpNxuVwej2dgA5OKg5tiU1hwq+JoNKhtWwSAli1j3rmhpKSk4AZy9+\/fN3Ysn8bMdKXx8fFxsLB4uH49894NxFi60nOOEBjf516jRg0m3ZkAHA5n2bJlAPDLL7\/I5XJjh1MhRCJRkyZNVCpVbGwsA+5SUlJKS0sHDRqEO4gxDJsN69cDiwUhIZCezrx\/g2jQoEFQUFDfefMOC4XGjuXTmJmu2HtDQ3Ps7VsvXgxZWcwHYAjG0pWhiRAXf6Gbv\/7669y5cy1bthw9ejQD7kyG4cOHd+jQITs7e+PGjcaOpaIwsOsLc\/fu3Q4dOuTn5ysUCtxfk3k6d4bPPwe5HN72iK1O\/Pzrr5rRo68qlVcKCowdy6cxK115de3K7dgRiovhxx+NEoAhGEVXhibCuLg46oJ5DxqN5vvvv588ebJKperQocN7S\/UQPgSLxcIPhStWrJBIJMYOp0KU3ZtMH6dOnerdu\/fr16\/79u2LS4EYi1WrgM+HS5fUjx49N2IYemDF402tXRsA1mdkKN\/ujK6ymJuu4PffQSCAPXuA\/txPLcbRld6Dqu9tmfvw4UMKZ2ilUunQoUMBgMvlVosiYVWTnj17AkDw8uXGDqRC3LlzBwBatGhR9iC1iw527NjB5XIBYMKECWWbEhiL3367KxTa+TLWk4k6NFrtlwkJPpGRe1+9MnYsn8AMdYXmzUMAqEcPY8dRaZjXlf6JEL3TMlej0bi6ulpYWPj7+4eFhRm4syI5ORmX3nZ0dCRrZAzhzr17Y44c6RMdnV8V\/jg\/RUlJCY\/H43A4Ze+ovL29\/fz89uzZgwv8641Wqw0ODgYAFosVHBxsaKwUUVhY6OzsDADHjx83diyV5l5RkU9kZPcqry4z1BUqLETOzggAnThh7FAqDcO6MigR4qWuup1qWVlZXbp00VWKq1ev3qJFix7rKpZVhps3b+JtcI0bN6Zvh4b5MPf5c5\/IyNW0FUmnllatWgHArbdlVx4\/fqxbdCASifz9\/Q8fPiyTySprVqFQjB07Fg8wbN26leqoDQI3d3V3d6evDBh9zHz61CcycmWV31NohrpCGzciAOTujoiuPopBiRDfBA0dOrSsel6+fBkSElK2PJiXl1dISEjFtwDu2LGDz+cDQP\/+\/atsR\/XqRbJc3i4qqmNUVGZ1+HuYMmUKvK3lj8nIyAgNDS17m2VhYYHv5aVSaUVsSqVS3CjOysoqPDycrtD1Ra1W40n3NWvWGDuWSpNSUtIhKqpdVNRzpjYn6IcZ6gqp1cjbGwEgoquPYlAijIqKwrdC7x0OjYyMDAoKcnR0xArj8\/l+fn6HDx\/+yP5utVq9cOFCfH5gYKBKpTIkPEJZfkpN9YmMXJqaauxAPs2WLVscHR0tLS0DAgLCwsLKyiA9PV2PK1dmZiZ+GqhVqxZ9BScN5OzZswBgZ2eXl5dn7FgqzYq0NJ\/IyB9TUowdyMcwT12hs2dR\/fqoGo66IwZ1ZVAiRAiFh4d37txZp5769ev\/+OOPZQcz5XL5\/v37Bw4cyOFw8Dk1atSYOXOmRCIpZ6qoqGjIkCE4Ze7cudPAwAjlyFQoOkVFtYuKSi4pMXYsn0CtVoeU6U7k4uIyc+bMGzdulF3akJaWtmbNmg4dOui0Z21tPWrUqOzs7HLW4uPjcWH7Ro0aPXv2jNmvUjn69+8PAN9++62xA6k0YpXqz8xMmTEKqVQcs9VVdRwXxTCmK0MTISYtLa3ccKiPj09oaGjZ4dCsrKzQ0NA2bdoAgJOTU7lVVcnJybgMiqOj41XcEZdANSvT0nwiI+cz3h1GP+Lj44ODgxs3bqwTVY0aNQICAi5evFj2yvXy5Uvdvby1tXXJf9P8lStXcHG+jh07Vv0nrcTERLwSG3firHZclUgCk5J+TUs7\/fq1sWP5IGakqyrQZpwSGNAVNYlQR7nhUIFA8O5waHR09In\/rmLSLY3x9vZOqdqjK9WafJWqW3R028jIuGpVhPDdK1edOnWCgoIiIiLK9rNOTU3FTbt0HDlyRCgUAsDnn3\/OWG0tA5k2bVrv3r2fPHli7ED04apEElaFU2A5TF9XW7eivXsRQkitNm5TOQNhQFcUJ0JMSUnJ4cOH\/fz8cJ90ALC3tw8MDIyIiHj35O3bt+OlMQMGDCBLY+hmU0aGT2TkqmqyfLQc+Mrl4eGhu3LVrVv33SsXJjQ0FK8JDAoKMkrtY\/2ojqtGdeju3B9WbKVJFcFkdVU12owbDgO6oiUR6ig7HIpp2rRpcHAw7jtfdmlMUFAQfR2dCDqK1OrLYnH5P+7qBr5ylR2Kd3V11V251Gr1t99+C1VtU5cZUL2eCN\/F1HRVZdqMGwgDumIhRmrYxMTE7Nmz58CBAzk5OQDA4XB8fX0LCgqioqL4fP6ff\/45ceJEBsIgYK4VFBzIza0vFLawtPR7O45d7UAI3bt378iRI0eOHEl\/W7W6fv36lpaWiYmJAoFg7969X3zxhXGDNCuuFRRINZoh1VZRGNPRlUoFs2cDhwMFBTBhAvTqBSdPvvk5IwNCQqCalCBmQFcMJUKMRqO5evXq3r17jx07JpfLcceskydP+vr6MhYDAUzlglWWhISEI0eO\/P3338nJyW5ubrm5uWfPnu3Ro4ex4yJUb4iuzARGE6GOgoKCCRMmnDp16uuvv962bRvzAZg5uifCgQ4Ora2sjB0OZSCEtm\/fPnXq1KZNmyYmJho7HIKJQHRl8hgnEQLAqVOnhg0bNmDAgHPnzhklAHPG9J4IdZSWltrY2Gi12sLCQktLS2OHQzARiK5MGyP0jcQw3NeXYCYIhcJmzZppNJqYmBhjx0IwHYiuTBujJcIGDRpYWlpmZGSIxWJjxWC2+NrZmeTjIIaxFqwEs4LoyoQxWiJks9m4lAwZcydQCzMtWAnmBtGVCWO0RAhkdJRAD+TOnUAHRFcmjDETIe67m5CQYMQYCKZHixYtBAJBUlJSUVGRsWMhmA5EVyYMeSIkmBp8Pr958+ZarZasayBQCNGVCcM1ou\/WzZvv7969pVBoxBgIJsn6QYPcuFzb2Fjo3t3YsRBMB6IrU8WYT4ROtWuPio\/3On8eXr0yYhgE06Ozq2vtu3ct79wxdiAEk4LoylQxZiIEAGjWDACAjI4SqKVtWwAAsq6BQC1EVyaKsROhtzcAQFyckcMgmBje3mBhAc+eQUGBsUMhmBBEVyZK1UiEZOEogVq4XGjZEhCChw+NHQrBhCC6MlGqRiIkQ6MEyvHxASCjWASqIboyRYydCJs3BwBISAAj1f4mmCz4gkXqgBCohejKFDF2IrS3h9q1obgYXrwwciQEE4OsayDQAdGVKWLsRAhkdJRAD15eYGkJqalkXQOBSoiuTBGj9SP8lzNnQCKBPn3AxcXIkRBMjLt3wcMDTLfPBsE4EF2ZHMasLAMAoFLB+fPA4cDFizBpEvj6GjkegsmgUsHffwOHAxIJkRaBMoiuTBFjPxFu2wYWFhAQABoN9O8Ply4ZMxiCKUGkRaADoitTxNhzhPHx0K4dAACHA87OIJEYOR6CyUCkRaADoitTxNiJ0MvrzUJkrRZycsDe3sjxEEwGIi0CHRBdmSLGGxq9cQOOHIE1a2DOHOBwoKAAJkyAXr2MEwzBlNi6FTIy4OefYfZsIi0CZRBdmS5GSoQ7d8L06aBUwv79MGqUEQIgmCQIwY8\/wm+\/AYsFDx682ftMIBgI0ZWpw\/iqUY0GFi+GlSsBAAIDwd+f6QAIpopaDd98Azt2AJcLmzaRqxWBGoiuzID3J8JrBQUHcnPrC4UtLC39KNwuU1wMY8ZAWBhwubB+PUyfTpllQjWBRmn5+8P582BlBYcOwaBBlFkmVAeIrgiG8MEnQj9HxyGOjgAQ9vp1HYGgtbW1oetqUlJg6FBISABHRzhyBHr2NNAeoZqikxZlZGfD4MEQHQ21asGZM+Se3TwhuiLozQcT4Zn8\/DiZrI+d3dqMjGKNxonPH+jg8JmjYz2hUA83cbdueX\/+OSsvD5o1g7AwcHc3IGZC9QZLa6CDw3mxWMRm97G3b2Zpqbe1zMeP6wwYAC9fQtOmcPYsuLlRFymhOkF0RdCb9y+WuVZQINVohjg6SjWa\/Tk54WJxlkKB32phaTnI0bGfvb0Nt6Lzizt37pw+ffrCzp2XCYVw8CDY2lIWPqG6UVZa\/R89UiIEALX4fF87uz729i2trFiVsnbt2ueffz6vVavFpaVw+jTUqEFT2IQqDtEVwRA+kcysOZyptWsH1q4dXVx8Jj\/\/skQSK5PFymRr09O72tn1E4t7tGzJ4\/E+9HGNRjN\/\/vx169YBQEnbthASAhwOxd+AUD2x5nD+btr0kkQSLhZnKhQHc3MP5uZW6sp18ODBCRMmKBSKmBo1tHv3si0smIibULUhuiLoQeW2Tyi12rtS6dn8\/GsFBQIWK6pXLz6L5e\/vHxAQ0LVr13InS6XSMWPGnD59ms\/nb9myZdKkSZRGTjARtACxxcUXJZIrEkmeSoUPNjp50l2j8ff3b9269Xs\/tX79+rlz52q12qCgoHXr1rHZxi4NQahiEF0RKgHSizylcn9MTHPcVhcAALy8vEJCQjIyMvAJycnJzZo1AwBHR8erV6\/q54VgVmgQipJKV758OfLRIx6fj3VVv379oKCgiIgI3WlarXb+\/PkAwGKxgoODjRcvoXpAdEX4JHomQh0PHz6cPXu2k5MTlheHw+nXr99PP\/2Ej3h7e6ekpFASKMF80Gg0ERERQUFBLmU6c7m5uQUFBV25cuWLL74AAIFAsH\/\/fmNHSqhOEF0RPgQ1lWU0Gs3Vq1f37t177NgxuVwuEonkcvngwYMPHDhgbW1tuH2CeYKvXIcPHz527Fhubq7uuL29\/YkTJ3r06GHE2AjVF6IrQjkoLrEmkUh27NixYMECkUhUWFjIrfDKUgLhI2g0muvXrx85cuSff\/4pLi4+c+bMILK1mWAwRFcEDMVTwfb29vPnz69Zs6ZcLn\/16hW1xglmC4fD6dWr15YtW3r37o0QKigoMHZEBFOA6IqAoWVNlLe3NwDEx8fTYZxgzvj4+ABAFO6DQyBQBNGVmUNjIoyLi6PDOMGcadu2LQBERkYaOxCCSUF0ZebQmAgTEhLoME4wZ\/AF6+HDhxqNxtixEEwHoiszhwyNEqoTNWrUcHNzKy4uTkpKMnYsBNOB6MrMoSsRslisxMREcntFoBw8nUNGsQjUQnRlztCSCG1sbFxdXUtKSlJSUuiwTzBnyLoGAh0QXZkzdO3zGxAQkG1hka7ReNDkgGCutGvXzrlRo5IyxUEIBMMhujJnKN5Qr2NDZubeV6+m1q79NREWgVIKVao+sbECNvt6q1YcVqW66xAIH4Toypyhq7Z6I6EQAFJKSmiyTzBbbHm8OgJBqVabUlpq7FgIpgPRlTlDVyJsaGEBAMkkERJowEskAoDHMpmxAyGYFERXZgtdibCBUMhmsdIUCiU9Q68Ec6aJpSUAPJbLjR0IwaQgujJb6EqEfDbbVSDQIJRGxhkIVIPv3BPJBYtAKURXZguN\/ZfJ6CiBJpqKRGyAZ3K5iow3EKiD6MpsoTER4vUyJBESKMeSw3EVCpUIEXURKIToymwhT4SEagkZxSLQAdGVeUJj41wvS8sRNWu2trKizwXBbOlgY6NEyIXPN3YgBJOC6Mo8oWtDPYFAIBAI1QIanwivFRQcyM2tLxS2sLT0c3SkzxHBDCHqItAB0ZV5QuMcIQD4OTouqlev6utJKpV+9dVXlpaWdevW\/fPPP997TmJiYq9evaytrV1cXObNm6fVavHxb7\/9tl69ekKh0N3dfe3atQxGbe5UfXV9UldqtZr1X2bPnl3BzxJowgR0hdm7d6+np6dAIPD09Hzw4AE+mJSU1Lt3bysrq4YNGx4+fJipkKs8iDauSiSBSUm\/pqU9lErp80IJU6ZM6dmzZ25u7o0bN6ysrG7cuPHuOa1bt548ebJMJnv69Gn9+vW3bduGj9+4cSM1NVUsFt+5c8fZ2fnChQvMxm6mVAt1VURXJW\/Jz88ve05FPkugHJPR1enTp52dncPCwnJych48eJCamooQUqlUnp6eCxculMlk165ds7Kyio2NZTr6Kgm9iTDs9Wv67FOFUqm0tLS8fv06fjl58uTJkye\/e5qdnZ3unClTpsyaNavcCbm5uY0aNdq0aROdwRLeUPXVVUFd6di7d6+7u7t+nyVQhcnoqnXr1rt27Sp3MD4+ns1my+Vy\/HLkyJFz586lM9hqA71Do9WCFy9eyGSyVq1a4ZetWrVKSEh497Q5c+bs27dPLpc\/f\/788uXLAwYM0L21aNEiJyenWrVqsdlsf39\/ZsImVHEqqCsdu3fvHj9+vH6fJZgPFdGGQqGIiYl59epVnTp1XFxcgoKCSktLAQBP6LDK9NaIjY1lKO6qDY2J0NfObkgVHmfXUVxcDADW1tb4pa2trVQqffe0QYMGRUREWFpaenh4DB48uGwi\/OGHH6Kiov755x8\/Pz+dHQKtVH11VVBXmJcvX16\/fn3cuHF6fJZAIaahq8zMTIRQeHj4w4cP79+\/f\/369RUrVgBAkyZNGjRosHz5cqVSeevWrbNnz8rJjkkAoHuxTLXAysoKAHRiKiwsfDeZyeXyAQMGjBs3rqSk5OXLl1FRUcuXL9e9a21t7erq+tVXX8nl8jVr1jAWOaEqUxFd6dizZ0\/37t3d3Nz0+CzBrKiINiwsLABg3rx5zs7Orq6uQUFBZ8+eBQAej3fq1Kk7d+64uLgsWLBg1KhRdevWZTb8KgpJhODm5iYSiXRDBI8ePWrWrFm5c7KysvLz84OCgoRCoaur6+jRo8+fP\/+uKYRQSkoK7RETqgMV0ZWOvXv36sZFK\/tZgllREW24uLjUqFGD9b72ws2aNbt8+XJ+fv6tW7dSU1Pbt29Pe8TVAmNPUlYJJk+e3LdvX7zy08bGRrcKa\/v27efOnUMIqVQqJyenkJAQpVKZlZXVpUuX6dOnI4SKiorWr1+fkpKSn59\/9OhRkUj0zz\/\/GPObEKoSn9QVBq\/9Ky4urshnCYSK6Gr+\/PndunXLy8vLzMxs1arVkiVL8PE7d+5kZWVlZWUtW7bMxcWlnOrMFpIIEUKoqKjoiy++EIlELi4uW7Zs0R3v37\/\/4sWL8c93797t3LmztbV1zZo1x4wZI5FIEELFxcUDBgxwcHAQCoVNmzbdsGGDUeInVE0qoiuE0OTJkydMmFDBzxIIFdFVaWnplClTbGxsnJ2dZ82aVVpaio\/\/9NNPdnZ2QqGwT58+iYmJRoi+SkJKrBEIBALBrCFzhAQCgUAwa0giJBAIBIJZQxIhgUAgEMwakggJBAKBYNaQREggEAgEs4YkQgKBQCCYNSQREggEAsGsIYmQQCAQCGYNSYQEAoFAMGtIIiQQCASCWUMSIYFAIBDMGpIICQQCgWDWkERIIBAIBLOGJEICgUAgmDUkERIIBALBrCGJkEAgEAhmDUmEBAKBQDBrSCIkEAgEgllDEiGBQCAQzBqSCAkEAoFg1nCNHQCBQD0qlerZs2dLliyxtrbmcv8jcg6HY2Njw2b\/qtVydAetrUF3lp0drF0L8fGQmQkbN8Lq1UwGTqjSEF2ZKlUlEb569SomJmbGjBk2NjY8Hs\/W1lYgEIhEIisrKx6PZ29vLxD8KhJxLCxAKAQbG+DxwNYWBAIQiSApCZYuJQoj\/EtISMj+\/fufPHnyoRM4nF81mve\/tWQJdOwI27bB4MF0hUeophBdmSpVJRHOmDHjwoULMpnsve+y2WyEViD0\/s8uW0YURviX9PT0lStXymSyJUuWuLq6qtXqsu9qNJqioqJykwJFRaC7fjk5QcOGcP489OjBWMiEagDRlQlTJRJheHj48ePHraysbt26JRQK1Wp1UVFRaWlpSUmJVCpVqVRFRcWlpSyZDGQyUCqhsBBUKigqgtJSKCkBGxvo25cojPCGOXPmyGSy0aNHBwcH6\/HxkyehuBjmzoW1a8HBgfLoCNUVoisTxviJUCqVTps2DQBWrFjRuXNnPSwQhRF0XLly5dixY1ZWVqtWrcJHoqKioqKidCcIhUKRyBKhEWU\/ZW8PHh5Qv\/6\/R9q0gdJSiIyEH3+E5csZCZ1QhSG6Mm2MnwgXL16ckZHRrl27b775Bh85ePBgTEyMSCQSCAR4ytDBoTaXO0gkAktL4PPBzg54PKhVC\/j8f+20aQMqFbx+DbGx0KKFcb4Lwbio1erZs2cDwE8\/\/VSnTh188NSpU7\/88kvZ0wQCgUIxotxnV6+G774DABg27M2RxYuhZUu4fRvGjoUmTWgNnFClIboyeYycCB88eLB582Yul7t161YO581qqzNnzvzzzz9lT2vY0Cs5eVC5zx47BsOHA5RR2LBh8MUXkJoK16\/THDehSrJhw4a4uLhGjRrNmjVLd9DHxycwMFD3sqSkRK3W\/nd+ByQScHMrb61ZM5gyBbZuhQULICyMvqgJVR2iK5OHhT60BIV+1Gp1+\/bto6OjFy5cGBISojseHh4eHx8vk8mUSmVBQYFareZyHbOyVpaUgFQKajVIJKBSwV9\/QZ8+\/zFYXAwNG0JuLpw7BwMGMP11CMYlJyfH09OzsLAwPDx80KDyt036kZsLjRtDYSFcuAD9+lFiklDNILoyC5DxWLlyJQC4ubkVFxdTZfP33xEAatECaTRUmSRUD8aPHw8An332GbVmV6x4oyi1mlrDhOoB0ZU5YLRE+OLFC0tLSwA4c+YMhWZLSpCrKwJAhw5RaJVQ1bl9+zaLxRIIBE+fPqXWskKBGjZEAGj7dmoNE6oBRFdmgtFKrM2YMUMmk40ZM2Ywpbv\/hEL48UcAgJ9+gnLj9QRTRavVzp49GyG0YMECDw8Pao3z+fDrrwAAixdDURG1tglVGqIrM8Io6RevhXFwcMjJyaHcuFqNmjRBAGjHDsptE6oiW7duBQBXV1cKx9jLotWizp0RAFq+XEqHfULVhOjKfDBCIszPz3d2dgaAv\/76iyYX+\/cjAFSnDpLLafJAqCqIxeKaNWsCwNGjR+nzcveupmvXHZaW1mlpafR5IVQdiK7MCiMMjc6fPz8nJ6d79+4TJkygycWXX0KrVlC3bvbu3cdpckGoIvz44495eXm9evUaMaL8Fi4K6dCBXa\/eFZlM+sMPP9DnhVB1ILoyLxhOvNevX8eTz4mJibQ6On8+AgBq1qxZVFREqyOCEYmLi+NyuVwuNzY2lm5f6enpIpGIxWLdvHmTbl8E40J0ZW4w+kSoUCimTZuGEFq8eHHTpk1p9dW\/f1dfX9+8vLx169bR6ohgLBBC3377rVqtDgoKat68Od3u6tati5dOzJs3Dxlv9y2BboiuzBEms+7PP\/8MAJ6enqWlpQy4i4iIAABra2s6luQQjM7ff\/8NAM7OzgUFBcx4lEqlLi4uAHDw4EFmPBKYh+jKDGEuESYlJQmFQhaLdeXKFcac4koQ+FaLYEpIpVJc9XH37t1M+t22bRsAuLm5lZSUMOmXwAxEV+YJQ4lQq9X6+voCQGBgIDMeMbGxsWw2WygUvnz5kkm\/BPqQSCSXLl3q27cvAHTq1Emr1TLpXaPRtGnTBgBCQkKY9EugG6Irc4auotsSiSQhISExMRH\/Pzo6GgDs7e3L1hRlgObNm3\/xxRcHDx5cvnw53hVEqHZIpdJHjx5FveXJkydarRYAbG1tJ06cyGKxGIgBIYQdsdnsX3\/9ddCgQampqQz4JdAH0RXhXyhJp0VF6O5dtH07Cg7e0rt3b7xNsBwcDsfGxkYikVDiseI8ffqUx+NxOJzHjx8z7JqgH0VF6No1tGYN+vpreePGjctdkiwsLDp16tShQwcAaNWqlYb+qrJHjx7t0qVLdHQ0frl27VoAGDhwIN1+CdRCdEX4EBVKhCdOoMaNkVKJUlPRd98hpRLFx6PDh1FwMPL3R15eiM1GAAgA9egxB6vKxsbGx8cnICAgJCQkLCwsKyurV69eALB48WK6vxJC6PDhw1Lpv8UamjVr1qFDh6ysLAZcE\/SguBhFRKDQUBQQ8B85sVjI3r4hj8fz8vIKCAgIDQ2NiIjAK63kcnn9+vUBYNeuXbTGJpfL3dzcAGDr1q0IoZycHDs7OwAIDw+n1S\/BcIiuCBWkoolw3Di0ceObROjr+0ZPuv+EQtS6NQoIQJs3x4aHh7948eJdI\/fv32exWJaWltnZ2VR\/i\/8QERHBYrE8PDwUCgVC6OLFiywWy8LC4vnz57T6JVScsrdWU6YgDuc\/cuLzUdu2aNo0tH07evQoRalUvtfIvn37AKB27do0VcDC\/PTTTwDQunVrtVqNEMJVIIYOHUqfR4LeEF0R9KOiiXDfPjRmDIqLQ999h4KCUJMmyN8fLV2Kjh5FSUnv7ySiUqkSExMPHz786NEjfOSzzz4DgJkzZ1L4BcqhUCi8vLwAIDg4GCFUWlrq6ekJAL\/99ht9TgmVpdytlaMj8vJCAQEoNBRFRKB3182p1er4+Pg9e\/bMnDmzc+fOeIBdq9V27txZ97umg7S0NLzZ+caNGwihBw8esNlsOnoRECiB6IqgH5VIhFFRaOJE9N137z9Hq0UpKej0aRQSsnL06NEtW7bk8\/l4mHTRokX4nPj4eA6Hw+fzk5OTqfoC5Vi6dCkANG7cGK9CxoWLvL29P3T3RzAK5W6tVKryJ2g0KDER7duHli172bVrV9yxS8elS5fwabhLjoWFBU2lGvGt2\/jx4xFCGo2mffv2APDTTz\/R4YtgOERXBP2oRCJECI0d+59EmJaG1q1DU6agDh2QtfWb8QdXV3esKhaL5e7uPnTo0H34wwghhAICAnQKoJynT5\/irYqXL19GCMXFxfF4PDabfevWLTrcEfTmQ7dWV66gOXNQ9+5l5aTCcnJzcxs5cuSKFSsuXrxYdgLY39+fJkX973\/\/AwBra2s8u0x3LwKC4RBdEfSjoqtGt2xBP\/yAnjz5z8GrV\/8zBF+7NurbFy1btmPnzp33799\/7+81NTWVz+dzOJyEhATDoy+LVqvt3bs3AEyePBkhpNFo8PjGjBkzqHVEMJwTJ9D48WjfPjRq1H8uWIsX\/yunevXQ8OHot9\/QhQsXX79+\/SFTycnJAoHAzq7+w4diCiNUKBR4UH3NmjWoTC+CI0eOUOiFQC1EVwT9qGgi7NYNAaDLl\/9z8PVrNG0a2rQJXbuG8vMr6nLGjBktWkz\/5ptXlYnz0+zcuRMAatSokZeXhxDauHEjALi4uDC\/YYPwSdRqxOMhFguVq7V39y765Rd09izKza2EtRUrrjk6arp3pzLClStXAkDTpk3xoPqMGTMAoFevXlT6IFAN0RVBPyqaCGvVQgCIkvIs2dmllpaIxUL371NgDZOXl1ejRg0A2L9\/P0IoKysLr0U+duwYZT4I1JGRgQCQiws11oqKkLMzAkBU\/bazs7NtbGwA4Pz584jZXgQEQyC6IuhHhRKhVIpYLGRhgajaY\/rDDwgA9e1LjTWE0JgxYwCgf\/\/++OXw4cMBYNCgQZQ5IFDK7dsIALVvT5nBzZsRAHJ3L\/8ooB+jR48GgBEjRuCXPXr0AIA5c+ZQYJpAJ0RXBP2oUCJ8+BABIG9vyrxKJMjB4T1jrfpx4cIFABCJRHinYHh4OJ6LJvVFqywHDyIANHIkZQbVauTtjQDQ6tWGmrp58yZeMZiamooQ+ueffwDAycmJjLFXfYiuCPpRoUR46BACQJ9\/TqXjFSsQAGrXDhlY21Yulzds2BAAVq1ahRAqKipydXUFgPXr11MTKIEGfv8dASBqb4XPnkUAyM4O5eXpb0StVrdq1QoAli1bhsr0IqC7zgiBEoiuCPpRoUS4fDkCQAsWUOlYLkd16iAAdPKkQXYWLlwIAM2bN8eTz0FBQQDQrl079Xs3+ROqBkFBCACtXUux2QEDEAD69lv9LVy7do3D4TRo0ADvQ8Xqatu2LQOVJwmGQ3RF0I8KJcLx4xEA2r6dYt+bNiEA1KzZ+wvTVITExERcUPvevXsIofv373M4HC6X+\/DhQyoDJVDNsGEIAB09SrHZxETE5SIuF8XH628kOjr6+vXrCKFnz54JBAI2m43VRaj6EF0R9KNCbZiePQMA8PCoyLmV4OuvYe1aSEiA\/fshIEAfC56enuvWrcvOzm7fvr1arZ46dapGo1mwYEHr1q0pjpVAKenpAAD16lFstmlTmDIFrl+H4mL9jeAhLACYNWuWQqEIDAzEhT8IVR+iK4J+sBBCnzzJyQny8iAzE2rXptj9gQNw6RIEB1Og3VWrVi1cuLB+\/foJCQnlKicRqhpYUdnZUKsWxZaLi0EoBK7BfTZPnTo1bNgwe3v7pKQkvOWZUPUhuiLox6d\/sYWFkJcHlpbg4kK9+1GjwMIC+vaF+HjIzISNG2H1an3spKWlLVu2DAA2btxIsmAVp7QUXr8GgQDe17bSUKys4ORJWLjwjaI2bIAxY\/5zAosFdna6nzMQUgKASCQSCAS6cxQKxbx58wDgl19+IVer6gLRFUFvPp0I8bhoo0ZAX8fmjh1h2zYYPBiUSti2DaysgMcDe3vg8cDKCiwsQCgEGxvg8aS2ttbvtfDtt9\/KZLLRo0f7+fnRFSWBIl6+BISgbl0mFCWTQdu2Hzytfv0JaWmX3\/uWUCj08PCYNm0aXSESqIboiqA3FU2EjRvTGETfvnD+PPToAVIpTJ36wdOcnZvk5GQJBAKRSGRlZcXj8ezt7Xk8XmlpaUxMjL29PW7xTKji0DSRUxadoths8PH5z1sIQUHBm5+dnBw5HHcAkMlkSqVSd45arS4pKdFqtRWZOCBUEYiuCHpT0URI+UqZcsydC2vXAp8PgYEglYJKBQUFoFSCTAYyGSiVUFAAXC4HABQKhUKhkEgkZT\/u5OTUunVrZzrGRAhU8\/IlAICrKy3GZbI3P2BFOThAZORHTj\/03qNKpdLb2\/vZs2fbtm2bPn065UES6IDoiqA37E+eQV8iTEmBc+fe\/NymDahUYG0NW7fC\/v1w5AhcvAjXr0NkJDx+DMnJkJ8PGRkvEUIlJSVisTgtLe358+eRkZG3b9\/evn17fn7+1atXU1NTqY+SQDX03bn\/\/DO0bw\/5+QBvFaUffD4\/JCQEAJYsWVJYWEhdgAQaIboi6M8nN1i8eIHCw1F6OsX7NtLSUP36iM9HV65QYA23OZw4cSIFtgg0c\/s2+uUXdOMGxWb\/+AMBIC4XnTtHjUHc1Wv+\/PnUmCPQDNEVQW8+lghPnECNGyOlEqWmlm9Mn5iIunZFYWF6es3IQA0bIgDUqRMqKtLTSFnoa3NIoJYPiaqwEPn4oNBQJJfrY3b\/fsRmIxYL7dxJVaQoOjqazWbz+fxnz55RZpRAD0RXBEP4xNAoXiX1LuvWwc2bMHQodOoEZ89W7hk0Nxf69YPkZGjdGsLDwfr960Arh5ub25QpUzQazc8\/\/0yBOQKdvFdUu3dDVBTMng0NG8KKFf+uO6gIly7BxImg1cKqVTBpEmVxtmrVKiAgQKlULlq0iDKjBNoguiLoz0eS5IkTaN8+NGYMiotD332HXrxAr94205VKUUgIqlnzTdPndu3Q6dNKbQXqZ+fmvqnm3rJlJXr5VoSsrCxLS0sWi3X37l0q7RIopayoZs9GOTlvjiuV6O+\/UatWbxRlbY2++06Vlpb2SYN37yIrKwSAfviB+mgzMjLwttQblI+4ESiF6IpgCJ9OhFFRaOJE9N13aPhwJBCgwECUkfHmhOJiFBqKatdGAMjX92Lz5s337NnzkTKyEgny8UEAqHlzg0q5f4jvv\/8eAPpS2OeQQDVlRdW3LxIIUEAASkz894SICOTnh1gs1LnzP2w228\/P7yMlGePj3\/TzGjfO0DYmHyI4OLhPmzaJw4bR5YBABURXBEP4dCJECI0di+bMQZ9\/jlgsBICEQjRz5r\/LZ+RytH691tPzTd28Fi1aHD58+N10KJFI+vYtBUBNm\/77ZEktYrHY3t6+hkj08vp1WhwQDKasqHx8EJuNABCbjYYPR3fu\/HtadDSaOTOY+7akVd++ff\/3v\/+VM5Wamjp48B4eDw0frn\/d9k+iLi5+0ycFx02okhBdEQyhQt0ndMTFoYAAxOEgAMTno4AA9Pz5m7dKSkr++OMP17e7eLy8vO6UEWBxcXG3bt3q1u3ZqVNJZiaF8Zfn9saNamdn1LEjjT4I1PH8OQoKQhYWb0aufHzQnj3\/Xn1evHgxe\/ZsKysrLKrJkyfrPpiTk+Ph4QEAEybsoKR7+MfYtQsBoDp1kExGsycCNRBdESpF5RIhJi4Offnlm3suPh8FBSlSUlLwWwqFYs+ePY0aNeJwOE+fPsUHZTJZjx49AKBevXq4OzON6PocnjpFryMCdWRnox9+QPb2by5bTZqgffvCS99ehwoLC0NDQ+vUqXPq7e+0sLDQx8cHAFq2bMlEg2+NBrVtiwDQL7\/Q7otAHURXhAqiTyLEJCejwEDE5SJf3xs8Hi8gICApKQm\/pVQqr127hn+Wy+W9evUCAFdXV12+pJeNGxEA8vZGpOlltUIqRaGhqH595OERy2KxnJycgoOD898uqSotLcXj7QqFom\/fvgDQqFGjVzQNsr\/LtWsIAFlZoawshjwSKILoivBJ9E+EmKQk9M03i\/CYO5fLHTdunC4dIoQUCsXgwYMBwNnZ+fHjxwb6qihK5ZtdimTwvRqiUqGjR2\/pOkpaWVnNnj37xYsX+F21Wj1y5EgAqFOnDu2jC+X4\/HMEgMoMoxGqEURXhI9gaCLEpKamBgUF4YYjeEVWdHS0UqkcMmQIADg5OTG9z33PHgSA3NyQQsGoXwJ1RERE+Pn5sVgsnaju3r07ZcoUALCzs4uJiWE6oORkJBAgNhtFRjLtmkAdRFeEd6EmEWJSU1MDAwP5fD5WWN26dQGgZs2a8fHxFHqpEBoNatkSAaBNm5h2TaCUmJiYsWPH8ng83c5XS0vLsuuwGGXOHASAPv\/cON4J1EF0RSgLlYkQ8\/Lly6CgIKFQ6OrqamVlFWms25wTJxAAcnFBxcXGCYBAHdnZ2cHBwdbW1vb29qtXrzZaHGIxWriQ4koQBONBdEXAsBA9nbGuXLnSu3fvhg0bPn\/+nA77nwYh6NQJsrMhLAxatjRODARKCQwM3L59+5o1a+bOnWu0IFQqmDMHOByQSGDSJPD1NVokBIowJV2lpqY+e\/asV69eur2ShIpA1z9Wt27d+Hx+amqqTCbDxYSYhsWCQ4egVi0QCIzgnUAD7dq12759e1RUlDGD2LULOnSAgADQaKB\/f7CyglWryp8jEoFAkOPg8LNYjA9wOBwbGxvd+40aNcKTUkZBrVZLpVLdSzabbWtra6xgqgKmoSuFQvHkyZOrV68qFIqRI0ceOXKEyfChmuuKrkTI4\/E8PT3j4uKePHniU66XM2PUrk1u3k2Jtm3bAoCRL1jx8YBbqnI44OwMKSnwgSsOx8dn2wdC9fb23r179+XLlwWM36UlJiZeuXJl5syZHz9NJBKVi43FYtnZ2QFAmzZtli9f7unpSV+QDGMyutJx4sSJFy9euLm5UR3lB6nuuqJraBQARo8efeDAgV27dk2YMIEmF59g2zawsPj3JuvSJWjSBHJzgc8HS0uwtAQ+H2xtgccDG5vvnZwkKpW1tTWPx7Ozs+Pz+ZaWlpaWlnw+f+DAgboiFAQjolKpbGxsFAqFRCIx2s3mn3+CtTWMGQNaLfTrBwcPwtWr5c+Ry0GhyBMKT5SW4gMajaaoqAj\/rNVqt2zZkp6ebpSxuJ49e16\/fl0kEuFFbTieSjWJdXBwKC4ujo+P96CjW7cxMAFdbdq0KR03Jn7Ld999t3r1akZCBzABXdE3\/bh8+XIAmDdvHn0uPsHMmUi3eXH0aCQWo7p13xSZeOe\/erVrf+ifaPbs2cxtgiR8lPbt2wPA1atXjRaBUommT0czZ6KAAHT5sn42zp49CwB2dnZ5dNSe\/zAHDhwAACcnp0+WTZHJZOL\/kp+fn5ycnJycPHr0aAAYNmwYIyEzRHXX1fjx48tdtWxtbaVSKR2RvosJ6IrGJ8JTp04NGzZswIAB586do8nFJyh3k3XpEmg0UFQECgXI5VBcDCoVSCSgVoNUelipLJDJioqKVCpVYWGhQqGQy+XFxcWRkZFPnz41ypg7AMhkskWLFpWUlPB4PGtra6FQaGFhUe6xFY822Nra8ng8GxsbfA7zoTLD9OnTt2zZ8vvvv8+bN8\/YsRjEgAEDLly4MHPmzA0bNjDjUS6Xe3l5paWl7dy5c5IB7fVyc3M9PDyKioouXrzYp08fCiM0ItVdV8XFxa1bty63MnHDhg2fHKs0HNPQFY2JMDk5uVGjRnXr1i33zM4cKhXMng0cDhQUwIQJ0KuXHjays7M9PDzkcvmdO3c6dOhAeYwf4dGjR7169UIISSSSyn7WysqKx+PZ29sfPHiwRYsWzM9F0cTOnTunTJny1Vdf4ZvQ6svjx49btGgBADExMc2aNWPA46JFi1asWOHj43P\/\/n02mw0A6enpvr6++Haq3Ml2dnZ4y7mOYcOGzZgxA\/\/866+\/\/vjjj61atYqKisKmqjsmoKtbt2716NFDo9HojjRq1CgpKYnuX5CJ6Iq+h02NRoP\/IfKr+f4Y3OawX79+TDrVaDSdOnUCgCFDhmzdunXjxo0hISE\/\/\/zzwoULp02bNmXKFH9\/\/6FDh\/bp06djx44+Pj4NGzasV6+evb29UCgs+\/u1sLAIDQ1lMnJaiYmJAQAPDw9jB0IB06ZNAwA\/Pz8GfD1\/\/lwgELDZ7LJtq58+fVrxC8WsWbN0HywpKalfvz4A\/PXXXwwEzwCmoat3W96forn3gMnoisYnQgBo3779gwcPIiIiunbtSp8XuikoKGjYsKFYLL58+XIvvR4r9WDDhg2zZs2qXbt2YmKiHhP4RUVFarX6+PHjX3\/9dc2aNZOTk62tremIk2HUarWNjU1paalYLMaLzaoveXl5Hh4ehYWFFy5c6NevH62+\/Pz8wsPDp0yZsn37dt1BlUqVnp6OZwHKnV9QUFDuyuDq6lp2Rd8\/\/\/wzduxYZ2fnZ8+emYC0TENXarW6a9eu9+7d0x3p2bPnlStX6PNoOrqiNc3iIeMtW7bQ6oUBfv31VwBo3769lpF20pmZmTj5nTx5Unfw7Nmz4eHhFy9evH\/\/fnR0dHJycmZmplgsVqlUHzGFG2AtX76c\/qgZomPHjgBwWd+FKlWKkJAQAPDy8vr4L9FAwsLCAMDe3j43N5cqm1qttkuXLgDw888\/U2XTuJiGrp49e1ZuiXt0dDRNvkxJV\/QmwjVr1gDAjBkzaPXCAMXFxbVq1QL6hxoww4YNA4ARI0aUPahrevwuLBbL3t7eycnJ3d3d29v7iy++0H0qIiICAGxtbV+\/fs1A5AyAZxRWrlxp7EAoQKFQNGzYEAC2bdtGn4vGjRsDwIYNG6i1fOfOHRaLZWFhkZaWRq1lo2Ayutq8eXPZi8PEiRPp8GJiuqI3EV64cAEAevToQasXZvjjjz8AwNvbW0Nzm8Njx44BgI2NTUZGRtnjkyZNGjhwYJ8+fXx8fFq0aOHu7u7i4mJvb8\/hcMrlxbZt25b94IABAwBgwYIFtIbNGH\/99RcAlE321ZqDBw8CgJOTU2FhIR32f\/nlFwBo1qyZUqmk3PgXX3wBAOPGjaPcMvOYkq5w2x+MQCDIzs6m3IWJ6YreRJiZmQkADg4OtHphBqVS6e7uDgB\/\/\/03fV4KCwtx145NlembodFoxGJxdnZ2cnJybGzskydPyr776NEjNpstFArT09OpjtcIxMbGAoC7u7uxA6EMPIO+aNEiyi2np6fjBWs07ZBLSUkRCoUsFuv+\/ft02GcSU9LVq1evnJycdLlwyZIl1No3PV3RmwgRQo6OjgCQZRL9l\/fs2QMAbm5uCtraHOLxmfbt21P73Onv7w8A06ZNo9CmsVCr1ZaWliwWy2QGe+\/du8disYRCoa5PLFXg3\/uoUaOoNVuWhQsXAkCnTp2YmT6nDxPT1blz53QbFZycnEpKSig0bnq6oj0Rdu\/eHQD+97\/\/0e2IATQaDd77tXnzZjrs37t3j8PhcLlcyue3k5KSuFwuj8d79uwZtZaNQufOnU1GVBhcVmP06NEU2rxx4waLxRKJRLTOtRQVFeHp86NHj9LnhRlMTFdTp07VPRTu2rWLKrMmqSvaE+H06dMBYO3atXQ7Yobjx48DgIuLi0wmo9aySqVq1aoVTUNkCKHJkycDwJgxY+gwzjBBQUEAsGLFCmMHQhnp6ekikYjFYt28eZMSgyqVqnnz5sz8K23ZsgUPKpaWltLti1ZMTFcymUy3M8Hb25uSRytT1RXtiRAvYZo8eTLdjhgDL7MOCQmh1uyKFSvwuGsxPZ2EMzIyLCws2Gw2fcupGQOPUY8cOdLYgVDJ4sWLAaBjx46UXLDWrVsHAI0aNWLgIqJWq\/HF8ffff6fbF62Ynq4iIyN5PB7OhVeuXDHcoKnqivZEeOPGDTzpRbcjxrh27RoA2NnZicViqmympqbiyWdah2XmzJkDAEOGDKHPBTPEx8fjmwZjB0IlUqnUxcUFAA4ePGigqZycHLwrPDw8nJLYPsmlS5fAGGXEqcUkdbVs2TKcCIcOHWqgKRPWFe2JUCwWA4ClpSXduw6YpHfv3gCwePFiqgz27duXgeXCeXl5uI3nrVu3aHVENxqNBledoHAnb1UAl+dwdXU1cOAdNz5j+I4H79Kp1puGTVJXGo0GV9VgsVjl1pNXFhPWFb0l1jA1a9Z8\/fr12rVrp06dKhKJ6HbHAJGRke3btxeJRM+fP8czuobw999\/BwQEODo6JiYmll30TAdLlixZunRpt27d8JN6NUUsFnt5eWm1Wj6fP2LECH9\/\/2pdw0+HVqtt167dw4cPg4KCxo0bhw++28v0vb2\/dadFRkZ26NCBx+PFxsbiLc\/MgMuII4QePXrETBlxyjFVXaWmprZq1aqoqOirr77StdcguioLvYlQrVbPnTv3jz\/+cHBwEIvFFhYWfn5+gYGBvXv3LleDvNoxfPjwEydOGN5GRywWN23aNDc3d\/fu3e82FaOc4uLihg0b5ubmnj9\/vn\/\/\/nS7o4MXL14MHDjwyZMnVlZWxcXF+GDTpk2\/+OKLL774wsvLy7jhGciZM2c+\/\/xzNputVCoNsbNw4UJcv41JcDMjT09PXBpJB+6FAgDOPj4sb28A4LFYwncKQVhxOMfy8uoLhS0sLf0cHZmK+g2mrautW7dOmzaNx+OpVCpD7JiqrmhMhGKx2N\/f\/8qVKwKBYNSoUU+fPr19+zZ+y83NLSAgICAgoPo2uU5KSvL29maz2Y8fP8Yb7fVj4sSJu3fv7tGjx9WrV5m5OVizZs28efNatmz58OHDatdDJzY2dtCgQZmZmd7e3mfOnElPTz9y5MihQ4dycnLwCV5eXv7+\/l9++WXTpk2NG6p+fP\/99ytXrnR0dHRzc8NHZDJZuaT43t7fcrlcoVDoXv78889Lly4FAKVSuWnTJk9Pz0GDBlEerVgsTk5ObteuHX55\/\/59XJVeJpO99\/wRGza86Nz5Q9aC3dwAYAjjKRCIrgDAvHVFVyJ89uzZ0KFDnzx54uLicvLkSdwA+uXLlwcOHNi+fXtycjI+zcfHJyAgYPTo0TVr1qQjDFqZMGHCnj173N3d27dvb2NjIxAIRCKRrhEgj8ezsrLSdc3lcrm2trZlzwGA69ev9+zZk8\/nx8TENGnShJmwS0tLGzdunJ6efvjwYbwxtrpw8eLFkSNHFhUV9e7d+9ixY7phHI1Gc+fOnSNHjhw8eDA3NxcfxFeur776irF\/WMN5\/vy5t7e3SqW6c+cO\/pPRg+vXr\/v6+lpZWT19+tTFxeWvv\/6aPHmyh4dHfHw8n8+nNuAZM2b8+eefa9eunTVrFrztRdCxY8dyd+7FxcX4QcTV11fbvDkAqBAqLdM5D9PG2vrE69f1hcKBDg6t\/1s5mlaIriqCieuKjonHCxcu4MVFLVu2fO+my8jIyKCgIAcHBxyDQCDw8\/M7fPgwHWXr6GPFihXvdp6sOPb29vjjv\/zyC8ORb9u2DQAaN25Ma9MDatm1axe+exg3btyHdKJWqyMiIoKCgsreV3l5eQUHBxu4TIAZ8M11YGCggXY+\/\/xzeLtnSaVS4ZmVdevWURBiGeLi4rhcLpfLjY2NRQidP38eAGxsbPSubHlVIgljvKoL0VXFMWFdUZ8It27dioU1YsQIvPgtPz\/\/vUtGS0pKDh8+7Ofnx+VydbkhMDAwIiKC8qgo59WrV\/b29gAwZ86c\/fv3b926NTQ0NCQkZNGiRQsWLAgMDJwwYYK\/v\/+gQYP69OnTtm3bli1b6spk674v3kN98eJFndn\/\/e9\/DPQxVqvV+H52wYIFkZGRCQkJycnJeXl5uFtYFUQ3LREUFIS32d2+fbvsv1s5dFeuGjVqlLtyJSUlMRh4JTh58iRQ1NQmOTkZt0uNjIxECJ05cwZbprB4mFarxWsRv\/vuO1SmF8H69ev1tsl8IiS6qhQmrCsqE6FKpfr2228BgMViLVy4ECe\/2NhYNze3j+80yMrKCg0NbdOmjU5bTZs2DQ4OTk1NpTA8avnyyy8BYMCAAfp9XKvVisVivIda1+YQl9dbuHAhpZG+ISsrq2x\/g7Vr137ocVYgENjb2089fXpoXNyYxMTxjx9\/8\/TpnGfPFiYnL33x4te0tK2ZmVclksCkpF\/T0k7TfOVSqVSBgYEAwOFwdI0tjx8\/bmFhYWNj8\/Tp049\/vLS0NCwsbOzYsXjfCKZdu3YfudgZhdLSUjxfvnHjRkoMzp07FwB8fX3xS9z4t2w3cAPZt28fADg7O+Obp+XLlwNtvQjogOhKP0xVV5Qlwvz8fDyfKRAI9u3bhw+eOnUK78vp1KlTRQpVP3z4cPbs2botBBwOp1+\/flWw29m5c+fw81xycrIhdnRtDsPCwhBCDx48wI24yjVgooT+\/fvXqVPn7t27CCGtVuvr6wsArq6uPj4+TZs2dXd3d3R0LPtXPfb8eZ\/IyPf+1+\/RI2Zu3qVSKR7VsbS0PH36ND64YcMG3Hlq0qRJFR\/axVeugIAA\/B1HjRr18OFD2gKvNHgBAp7IocSgRCLBTy24g2ZCQgIebkpISDDceFFRUe3atQFgz549qEwvAkpqlzAA0ZXemKquqEmET58+xUXtXFxc7t27hw+GhobiRYlffvmlXC6vuDW1Wn3x4sWAgACRSCQUCr\/55hu1Wk1JnJQgk8nwMtE1a9YYbg3vvtC1ORw+fDgATJ8+3XDLZfnnn38AwMHBIScnByG0Y8cOAKhRo8Z76zWUlJSIxeIsqTS9tDRRJostLr5XWHhdIrkoFp\/Iyzuam3skN1f3RPhQKqU2VB3Z2dk+Pj4A4OjoiCsAaLXa4OBgPOQQHBysn1m5XI4vgqtWraIyXANIS8vBg+Q3btyg0CyWVsOGDfE9KH4AMry8CEJo\/vz5UKYzAO4e99VXXxlumQGIrgzEJHVFQSJ8d2lMaWkprkGAhaV37USJRIIfmKrU+DvekdqiRQtKntYVCkXZNodPnjzBbSKeP39uuHFMfn6+s7MzAPz1118Ioby8PHxPt3\/\/fr1t0v1EmJiYWL9+ffz3hsepFAoFbtHA5\/N1Qw76gVuwfvnllxQFaygjRqC2bc9Nn\/4DtWZ1yxlCQ0MRQjk5OfipxcAyfk+fPsUTRbhXnK4XAeU9pOiA6MpwTFJXhibCrVu34qUfI0eOxEtj8vLy8GynpaXl8ePHDbTv5+cHVanDy6NHj3g8HpvNvnPnDlU2d+\/eDWXaHOJ7iLFjx1JlH\/ed6N69O74jwX\/2\/fv3N8QmrYnw9u3bOFV36NABz\/BLJBIsKisrq3Pnzhlo\/9GjR\/hSSEWwhnL5MgJAVlaIhuFwFBYWBmWWM\/z222\/4htWQIZaBAwfC296WKpUKNyb77bffKAuaNoiuqML0dKV\/IlSpVLiL7LtLYwCgTp06eGWRgXz\/\/fdAQ4dl\/dBotbOjolr6+c2ePZtCs2q1Gt9h4TaHL168wHdGMTExhhu\/fv06i8USCASJiYno7Vpkw2c36ePYsWMWFhYAMGzYMHxrlZmZ2bJlSzzwrnfrjNzc3MWLF8+ZMweVacHKwALdj6NSoebNEQBauZIuF3g5A1ZsSUkJ\/vPcsWOHftZwGzJ7e3s8qB4aGoov\/dT2faUDoitqMTFd6ZkIdUtjhEKhbjzh7Nmz+Bm5Y8eOeu\/5QAgdPXr0s88+wzX48SIif39\/va1RyD85OT6RkUNiY4upbkZYrs3hzJkzAeCzzz4z0KxCocCFMJYtW4YQksvlDRs2rFLTGOXQzSvPnDkT31rFxcW5urrilWOGLJsSi8W4Czwe0O7UqRMAGH2N35o1CAA1aoTo62nz6NEjDofD4\/Hw\/ML+\/fvxqryyS4griFwub9Cgge6OTdeL4MyZM9THTSlEV5RjYrrSJxEmJibi62nt2rUfPHiAD+qk9tVXX1Vqacy7rF69GksWIRQdHQ0ATZs2NcQgJWQrFN2io30iI69LJHTYx20OV65ciRDKzc3Fq21v375tiE28BMDT0xM3D1uwYAGFs5vUotFoZs+ejQcYdO3HLl26hMt89OzZU2LwPzsW7aNHj9DbWw3Km0pWilevkK0tAkB097SZMmUKfhJCCGm12i5dugDAjz\/+WFk7S5YsAYDWrVvjEbCJEycCgJ+fH\/URUwfRFX2Ykq70SYTh4eHW1tbNmzfXLY3B1aINXBqjAw\/f4a0qpaWleHmu0Ztfz3n+3CcycgFtI4rl2hziLYbdu3fX22BSUpJQKGSxWHjxcWxsLJ7dNDC50kRhYWG\/fv24XO4\/\/\/yDj+zZswdXZhg5ciQlIyR46+fOnTvR23lZ4440jB+PAJDBj\/2fRrecAT+p3L17F+\/SqdQyhLS0NDzud\/36dYRQZGQkm83m8\/lVaiHbuxBd0Ycp6UqfRNi5c2cAOH\/+PH75+PFja2trKyurkydPUhJTRkYGANSoUQO\/xDVQKJkw05tLYrFPZGT36OgcOp+lyrY5LCgocHR01HstllarxWPXuK6SRqPBgzYUbn2lFjz93q5dO90RvJY6KCiIqk6Wq1atgrdbU3AL1gYNGlBiWQ8ePEBsNhII0Ke2blMD3pjcsmVL\/I85efLkpUuXVqrr4bNnz3r16oXXcGk0mg4dOgClLTlpguiKVkxGV\/okQrxxZMOGDboj586dozZR4TKkeKIRF4bGuwuMQrFaPfDRI5\/IyKM0t+vEG+otLS3xF8f1n3x8fPR4yMbVRJ2dnfHzJd76U7t27SpbRC07OxsAbG1tdV9Wq9XqbrYo4cqVK3jFIHq7rgEAjNVRfccOJBSiyg8j6UlJSQneNoC30OgNnvXADYTr1q1bXFxMUYB0QXRFKyajK30S4fr16wFg6tSplEejo1u3bronbjyC\/P3339Pn7uP8lpbmExk5\/vFjam4gPwour47nR+Vyed26daHyu0d0dVDxgqPMzEw8I0LVIztN4KISn6xupTcFBQVsNlu3rgFPaVy4cIEmd58kJQVRvejqY+CiCs7OzkVFRYbYEYvFuPb0oUOHqIqNVoiuaMU0dKVPOzpvb28AwIMANFHWBQPuPoJUo7kikfBYrJ\/q12egd19ISAiXy926dWtKSoqFhcWiRYtYLNa9e\/cqZWT27NkSiWTAgAF49mLGjBmFhYUjRoz47LPP6ImaGtq2bQsAkZGRNNm3tbVt1KhRaWlpQkKCge7u3bt35C3\/+9\/\/LpXh2rXHt25BVFT5\/5KTIT0dTp4ET09QqeDFC9i0CUQiir\/jRxg1alSXLl1ycnLwYjS9CQ4OzsvL69atW3Xp4UV0RSumoSuuHp\/BWx3j4+MRQjT1ksX76rCwjJsIrTmcw82aRUulDS0sGHDn6ek5evTovXv3\/vLLL7t27ZoyZUrHjh1bt25dKSO9evW6efPmli1bAODEiRMnT560sbHBz\/FVGR8fn7CwsKioqFGjRtHn4unTp5GRka1atcJ1tqKiovSws27dukOHDr33rW7dAiMitr73rUaN4PffoWNH2LYNBg\/Ww61BsFisVatWde3aNSQk5NGjR2V7yNnZ2ZX7Q8aNM8tZsLW1zcvL27x5M5fL3bhxIzN9pA2H6IpWTENX+iTCGjVqODk55ebmZmRk4L04lFM2+TVq1MjCwiItLa2oqKhsVWi6uVZQcCA3t75Q2MLS0o\/BrtnLli07dOjQvn375s+f7+XlVdksCABff\/31hAkTeDxeUVFRUFAQAKxYsaJOnTo0BEsl+FZavytIBfHx8Tlw4EBUVNSUKVMMcdehQwetVot\/Liws1P0MAA0aNNNqobS0\/EcKCgD3Bu\/bF86fhx499InfQDp37vzTTz\/dv3\/\/1KlTehtxc3OrXbs2vhuuFhBd0Y0J6ErPDvW9e\/e+cuXK2bNncV0cyhGLxY6OjlZWVkVFRSwWq02bNtHR0Xfu3MGb7ZjhWkGBVKMZwmAK1DFz5syNGzcOHz782LFjhtj59ttvN23a1L59+9u3b+PK+lWZvLw8Jycna2trPOlChwvcZbtt27YPHjzQarV2dnZSqTQnJ0fX8IRuTp6E4mLw8oKNG8HBAQwbTNKT+\/fvp6WllT2Cl1CVPaJQKORyebkPFhQUvHr1au\/evXw+\/\/Hjx7iYSNWH6IoZqreu9JtanDVrFtBcoMTFxQUAcEvCgIAAANi+fTt97t6FgQYLH0K3oX7Dhg03b96MjIxMSkpKSUkRi8UVX091\/\/59DofD5XL1Lh\/FPHiAgb6u31KpFO9SwttSu3fvDgCGF5msOCdOIFyIacwYNHAgoqc2A72MGTMGAEaNGmXsQCoB0VXVx7i60vP+CM\/hmfx6GT9Hx0X16rW2smLYb82aNWfOnNmoUaOgoKCuXbu2bdvW09PT3d3dwcHBysoKb7FwcHBo0KBB48aN27Zt27Vr1759+37++edffPHF1KlTv\/322wULFvj7+2s0mvnz57dq1Yrh+PUGz6\/Qt67BysqqcePGSqUSa4lud+8ybBiMHQsAYG0N587Br78y5pkyQkJCRCLRwYMHb968aexYKgrRVdXHuLrSMxGa1cJRo\/Dzzz\/v2rWrT58+nTt39vHxadSokZubm729PZ5qlsvlEonkxYsXz549i4qKunXr1qVLl06ePHnkyJFt27Zt2rTp999\/x0M0P\/zwg7G\/SiUwZKFBBSk7hcOAuw8xdSqw2bBhAzx7xrxzg6hbt+7cuXMRQvPmzUN6TawwD9FV1ce4utJnsQwAeHt7s1isxMREjUZD0+QTTn5GXDjqa2fHpLtyCASCrl27Xrx48b3vFhcXq1QqiUSiVqulUmlJSUlpaWlRUZFarS4oKFAqlUVFRevXry8oKAgLC8NjDtUCule6A4CPj8+NGzc0Gg0z7j5Eq1Ywbhzs3g2LFsGRI8z7N4iFCxfu3Lnz3r17hw4d+uqrr4wdzqchuqoWGFNXeg+q4oIC9FWEu3fvnqur64wZMxBC+OEGAHJpru1iSuA2obo2h9WCvLw8ALCysjKksdnHKVtYS6vV4lIDhjRL0ZvMTGRpiQDQ9evMOzcUXATE1dW1UvW0jAXRVXXBWLrSfw0V3U9p7du3f\/ny5caNGwGAxWJ5eXnR6s70GDdunJeX14sXL3bu3GnsWCpKjRo16tevX1xcnJSURJOLsusGWSwWLjsSGxtLk7uPULs2zJ8PADB7NpRZJ189mDhxYsuWLdPT0\/eFhxs7lk9DdFVdMJauqm4iLAduLU0SYcXhcDjLli0DgF9++eXdJctVFgZ2fWG0Wu133333+PHjXr169e3bl25372XBAqhXD6Kj4Z9\/jOJffzgczvpNm0bdvr3fw0OsUhk7nE9DdFUtMJauDE2EeA6Pbv76669z5861bNly9OjRDLgzGYYPH96hQ4fs7Gz8YF0tYGahgUKhGDt27Nq1a\/l8\/qRJk4xVJMXCApYtAwD44QeQyYwSgv706NKlVs2aMo3mz+xsY8fyaYiuqgvG0ZXeg6rMtMxVq9ULFy7EoQYGBqpUKlrdmR4XLlyAMm0Oqz444C5dutDnQiwW9+jRAwCsra2pbUSgBxoN6tFD1aNH2K+\/\/m7cSPTgRUlJh6iodlFRzwzrxc0ARFfVCOZ1pX8ifG\/L3IcPH1LYQUMqlQ4dOhQAuFzupk2bqDJrbvTs2RMAgpcvN3YgFSI\/P5\/FYolEorI3PTt27IiIiKCkgVxGRgYu41S7du0qUmrg1q1bLBbLysoqMzPT2LFUmt9fvvSJjJxWtdvzIqKr6gbDutI\/EaJ3WuZqNBpXV1cLCwt\/f\/+wsDADF2glJyfjbfuOjo64xzpBP+7cuzfmyJE+0dH5dHYVppAGDRoAQFxcHH4plUotLCwAoE6dOkFBQREREXo0aMTExsbizlbe3t4vX76kLmRDGT58OABMmjTJ2IFUmkK1uldMjE9k5M2q2upSB9FVNYJhXRmUCEeOHAllWuZmZWV16dJFNyxer169RYsWPX78WA\/LN2\/exGX6GjduTN8ODfNh7vPnPpGRq6vSn+hHwH1Ydu\/ejV++fv16\/vz5ZSsQurq6zp079+7du5W6cl28eBEXbe\/Vq1dVa1CcnJwsEAjYbHZkZKSxY6k0\/7x65RMZOSI+XqVvImEGoqvqBZO6MigRBgcHA8DQoUPL7vl4+fJlSEhIo0aNdPLy8vIKCQmp+BbAHTt24F4e\/fv3r2rCqqYky+XtoqI6RkVllhnHrrKEhIQAQKdOnco1U42Pjw8ODm7YsGHZK1cF7+V3797N4\/EAICAgoGpurJw7dy4A+Pr6GjuQSqPSaj+Pj\/eJjDxUtbf5El1VL5jUlUGJMCoqauzYsQDw3uHQyMjIoKAgx7fdG\/h8vp+f3+HDhz8iF7I0hj5+Sk31iYxcmppq7EA+zZMnT2bMmKG7iwoODi43KoCvXO7u7rorV7169T5y5QoJCcEDFUFBQZRMCNGBRCLBe4ROnjxp7FgqzVWJpGNU1PasLGMH8jGIrowdS6VhTFcGJUKEUHh4eOfOnXXDofXr1\/\/xxx\/Lyksul+\/fv3\/gwIG6Smw1atSYOXOm5J0C6UVFRUOGDMEpc+fOnQYGRihHpkLRKSqqXVRUckmJsWP5NPfv3x83bhwuz4Hx8fFZuXJlSkqK7hyNRhMREREUFIQ3L2PKDcWr1epp06YBAIfDqfrrrTZs2AAADRs2rJrPFh8nuzrETHRl7FgqDTO6MjQRYtLS0soNh\/r4+ISGhpYdDs3KygoNDW3Tpg0AODk5Kf+7cCM5ORnXjnF0dLx69SolURHKsTItzScycn5ysrEDqSilpaVhYWEBAQFlGzLje\/lnz57pTtNoNNevX58xY0afPn3Kfry4uHjw4MEAIBKJwsLCGA+\/0iiVSrwA7ejRo8aORR90nctOv35t7Fg+BtFV9YIBXVGTCHWUGw4VCATvDodGR0efOHGi7Kd0S2O8vb3L3poRqCVfpeoWHd02MjKOui0uzPCRK9fz58\/f+5Hs7Gy8h9rR0fHmzZsMB6w3V69eNfoWNL25KpGEVe0UWA6iq2oBA7qiOBFiSkpKDh8+7Ofnh6eRAcDe3j4wMDAiIuLdk7dv346XxgwYMIAsjaGbTRkZPpGRq6rJ8tF3KSkpwVcu3Li47JUrucyT7rNnz\/D4hLu7O1l1zBhG7GVtIERXVRkGdEVLItRRdjgU07Rp0+DgYNx3vuzSmKCgIPoKwxN0FKnVl8XiKr3IvWLorlxWb9sms9nsLl26hIaGnj59umbNmgDQvn37nJwcY0dqRlS7J8J3IbqqgjCgKxZipAViTEzMnj17Dhw4kJOTAwAcDsfX17egoCAqKorP5\/\/5558TJ05kIAwC5lpBwYHc3PpCYQtLS7+349jVFJlMdubMmcOHD587d66kpAQArK2tpVLpZ599tn\/\/ftzHmMAM1woKpBrNkGquKAzRVdWBAV0xlAgxGo3m6tWre\/fuPXbsmFwur1OnTnFx8cmTJ319fRmLgQCmdcHSUVxcfPr06T\/\/\/PPu3bsuLi7Jyck0tYwmmBVEV+YAo4lQR0FBwYQJE06dOvX1119v27aN+QDMHN0T4UAHh9Zvh4BMg9evX9esWdPKyqqwsLBsizgCwRCIrkwb4\/xG7ezs8Fhoenq6UQIg+Dk6LqpXz8SyIADUqFGjXr16tLZgJZghRFemjdFubRju60swH3AL1sjISGMHQjApiK5MGKMlwgYNGlhaWmZkZIjFYmPFYLb42tmZ2ARhWZhpwUowN4iuTBijJUI2m41LySQmJhorBoJJgu\/cyQWLQC1EVyaMMWd9yegogQ7atm3LYrEePnyoVquNHQvBdCC6MmGMmQhx392EhAQjxkAwPRwcHNzc3ORyOVnXQKAQoisThmtE3+SJkEAT3Tt06G5hoU5IgGbNjB0LwXQgujJVjPlE2Lp58\/3du28SCo0YA8Ek2d2q1e7ExJY3bxo7EIJJQXRlqhjzidCpdu1R8fEgFsOrV1CrlhEjIZgaPj4AAGSlO4FaiK5MFGOXSMAjDGR0lEAtPj7AYsGjR0DWNRAohOjKRDF2IvT2BgCIizNyGAQTw94e3N1BLofHj40dCsGEILoyUapGIiQLRwmU07YtABnFIlAN0ZUpUjUSIRkaJVAOns4h258J1EJ0ZYoYOxE2bw4AkJAAxmiCQTBlyLoGAh0QXZkixmnD9B\/q1IGsLEhJgQYNjBwJwZQoLAR7exAIoKgIeDxjR0MwFYiuTBFjbp94g7c3ZGVBfDxJhAQqsbWF0aPBxQVKSsgFi0AZRFemSBV4IjxzBiQS6NMHXFyMHAmBQCAQzA9jJ0KVCubMAQ4HJBKYNAl8fY0ZDMGUINIi0AHRlSli7ES4bRtYWEBAAGg00L8\/XLpkzGAIpgSRFoEOiK5MEWOvGo2Ph3btAAA4HHB2BonEyPEQTAYiLQIdEF2ZIsZOhF5eb3bkaLWQkwP29kaOh2AC5OVBYiKRFoFiiK5MF+MNjd64AUeOwJo1bwbcCwpgwgTo1cs4wRBMhpQUGDQIpFK4cQPWriXSIlAD0ZVJY6REuHMnTJ8OSiXs3w+jRhkhAIJJ8uAB+PlBbi60aAFnz0KdOsYOiGASEF2ZOowPjWo08P33MGUKKJUQGAj+\/kwHQDBVwsLA1xdyc6FvX4iIIFcrAjUQXZkB799Qf62g4EBubn2hsIWlpZ+jI2XeiothzBgICwMuF9avh+nTKbNMqCbQJa2\/\/oKpU0GthgkTYNs2stPZ3CC6IhjCByvL+Dk6DnF0BICw16\/rCAStra0NfXhMSYGhQyEhARwd4cgR6NnTQHuEaopOWg+l0joCgTOfb5A5hGDpUli6FFgsCA6GJUsoCZJQ7SC6IujNBxPhmfz8OJmsj53d2oyMYo3Gic8f6ODwmaNjPaFQDzdxt255f\/45Ky8PmjWDsDBwdzcgZkL1BktrgIND8IsX2Uqlu1DYx95+sKNjHYGgsqaUSuWcGTOCLl\/25PFg2zaYMIGGeAnVA6Irgt68f7HMtYICqUYzxNFRqtHsz8kJF4uzFAr8VgtLy0GOjv3s7W24Fa1TunPnzunTpy\/s3HmZUAgHD4KtLWXhE6obZaX1a1razcLCUq0WANgALays+trb97a3r1GxAajCwsIRI0Zcvny5ZdOmD0ND2f360Rw7oepCdEUwhE8kQvwSAUQXF5\/Jz78skcg0GgDgs1hd7ez6icU9WrbkfVheGo1m\/vz569atA4B58+b9HhICHA49X4RQPSgnrRKtNqKw8JJYfKuoSPH2ytXK2rpPTk53D49atWp9yE5WVtbgwYNjYmJcXFzOnDnTpk0bhr4AoUpCdEUwhMptn1BqtXel0rP5+dcKCgQsVlSvXnwWy9\/fPyAgoGvXruVOlkqlY8aMOX36NJ\/P37Jly6RJkyiNnGBSKLTae1LpJYnkqkSiQCh91Kjc5887derk7+\/\/5ZdflrtyJSQkDBo06OXLl15eXmfPnq1fv76xwiZUcYiuCBUC6UWeUrk\/JqY5bqsLAABeXl4hISEZGRn4hOTk5GbNmgGAo6Pj1atX9fNCMEOK1epzaWlDhgwRvJ3a4XA4vXv33rp1a15eHkLoypUrtra2ANCpUyd8hED4JERXhI+gZyLU8fDhw9mzZzs5Oem01a9fv59++gkf8fb2TklJoSRQgrlRUFCwZ8+ewYMH898u\/+Nyua1atcJD8V9++WVpaamxYyRUP4iuCO9CTWUZjUZz9erVvXv3Hjt2TC6Xi0QiuVw+ePDgAwcOWFtbG26fYM4UFBSEhYUdOXLkf\/\/7n1arFYlEo0eP3rRpE5tt7Eq5hOoM0RVBB8Ul1iQSyY4dOxYsWCASiQoLC7kVXllKIHwSsVjcpUuXJ0+eXLlypSfZh0qgCKIrAsX3Pvb29vPnz69Zs6ZcLn\/16hW1xglmjoODQ69evQAgMjLS2LEQTAeiKwItgwDe3t4AEB8fT4dxgjnj4+MDAFG4Dw6BQBFEV2YOjYkwLi6ODuMEc6Zt27ZALlgEqiG6MnNoTIQJCQl0GCeYM82aNROJRMnJyWKx2NixEEwHoiszhwyNEqoTHA6nZcuWCKHo6Ghjx0IwHYiuzBy6EiGLxUpMTNRoNHTYJ5gzeDqHrGsgUAvRlTlDSyK0sbFxdXUtKSlJSUmhwz7BnCHrGgh0QHRlztC1z29AQEC2hUW6RuNBkwOCudKxd++xly7xKWy+SiAQXZk3dCXCZt98E\/XqVbKtbS+aHBDMlcZ16754\/bpUoylUq21JxQYCRRBdmTN0FRNqJBQCQEpJCU32CWYLm8VqLBIhgMdyubFjIZgORFfmDF2JsKGFBQAkk0RIoAEvkQjIBYtANURXZgtdibCBUMhmsdIUCiWltUwJBABoSi5YBBogujJb6EqEfDbbVSDQIJRWWkqTC4LZ0sTSEgAey2TGDoRgUhBdmS00Nhwho6MEmnATCkUcTrZSKVGrjR0LwXQgujJbaEyEeL0MSYQEymEDNLGwADKKRaAUoiuzhTwREqoleBTrOblgESiF6Mo8obgxb1mylcrdr161trIa4OBAkwuC2ZKjVGoBXPh8YwdCMCmIrswTGhMhgUAf1woKDuTm1hcKW1ha+pFqIASKILoyT2gsoEAkRaAVP0fHIURXBKohujJDaJwjBAA\/R8dF9epV\/SwolUq\/+uorS0vLunXr\/vnnnx86be\/evZ6engKBwNPT88GDB\/hgYmJir169rK2tXVxc5s2bp9VqmYra3DmTn\/\/by5fRxcXGDuSD6K0rtVrN+i+zZ89mLm7zhujKHEG0cVUiCUxK+jUt7aFUSp8XSpgyZUrPnj1zc3Nv3LhhZWV148aNd885ffq0s7NzWFhYTk7OgwcPUlNT8fHWrVtPnjxZJpM9ffq0fv3627ZtYzR0c+WqRBL2+rWxo\/gEhuiq5C35+fkf+iyBcoiuzBN6E2HVlxRCSKlUWlpaXr9+Hb+cPHny5MmT3z2tdevWu3bteve4nZ2d7rNTpkyZNWsWXYESylD11WWgrnTs3bvX3d2djggJ70J0ZZ7QOzRaLXjx4oVMJmvVqhV+2apVq4SEhHLnKBSKmJiYV69e1alTx8XFJSgoqPRtxZw5c+bs27dPLpc\/f\/788uXLAwYMYDJ4s8XXzq6KT+QYqCsdu3fvHj9+PAMBE4DoylyhMRFWfUlhiouLAcDa2hq\/tLW1lUql5c7JzMxECIWHhz98+PD+\/fvXr19fsWIFfmvQoEERERGWlpYeHh6DBw8miZCAMVBXmJcvX16\/fn3cuHHMxEyo+hBd0QF5IgQrKysA0ImpsLBQJzIdFhYWADBv3jxnZ2dXV9egoKCzZ88CgFwuHzBgwLhx40pKSl6+fBkVFbV8+XJmwydUUQzRlY49e\/Z0797dzc2NiYgJ1QGiKzogiRDc3NxEIlFsbCx++ejRo2bNmpU7x8XFpUaNGiwWq9zxrKys\/Pz8oKAgoVDo6uo6evTo8+fPMxE0ocpjiK507N27l4xfEcpCdEULRp6jrBpMnjy5b9++YrH4zp07NjY2upVU27dvP3fuHP55\/vz53bp1y8vLy8zMbNWq1ZIlSxBCKpXKyckpJCREqVRmZWV16dJl+vTpRvsahCqG3rrC4DWBxcXFRgidUIUhuqIckggRQqioqOiLL74QiUQuLi5btmzRHe\/fv\/\/ixYvxz6WlpVOmTLGxsXF2dp41a1ZpaSk+fvfu3c6dO1tbW9esWXPMmDESiYT5+AlVE0N0hRCaPHnyhAkTmA6aUOUhuqIcUmKNQCAQCGYNmSMkEAgEgllDEiGBQCAQzBqSCAkEAoFg1pBESCAQCASzhiRCAoFAIJg1JBESCAQCwaz5P57EHR2cSRMvAAAAAElFTkSuQmCC\n\">\n<\/div>\n\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Scalability-of-in-memory-databases\">Scalability of in-memory databases<a class=\"anchor-link\" href=\"#Scalability-of-in-memory-databases\">\u00b6<\/a><\/h2><p>The example databases in this notebook are toy examples to give an idea of the possibilities with the new API.<\/p>\n<p>For those who are curious, these are the times for creating (currently this method is only single threaded) similarity and substructure databases of the entire PubChem datbase (currently 102 million molecules) within a notebook:<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[7]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">pubchem<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pd<\/span><span class=\"o\">.<\/span><span class=\"n\">read_csv<\/span><span class=\"p\">(<\/span><span class=\"s1\">'\/nvme\/arthor\/pubchem.smi'<\/span><span class=\"p\">,<\/span> <span class=\"n\">sep<\/span><span class=\"o\">=<\/span><span class=\"s1\">'<\/span><span class=\"se\">\\t<\/span><span class=\"s1\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">names<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'id'<\/span><span class=\"p\">])<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>CPU times: user 59 s, sys: 4.96 s, total: 1min 4s\nWall time: 1min 5s\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[8]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">pb_simdb<\/span> <span class=\"o\">=<\/span> <span class=\"n\">arthor<\/span><span class=\"o\">.<\/span><span class=\"n\">SimDb<\/span><span class=\"o\">.<\/span><span class=\"n\">from_smiles<\/span><span class=\"p\">(<\/span><span class=\"n\">pubchem<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">])<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>CPU times: user 16min 8s, sys: 10.2 s, total: 16min 18s\nWall time: 16min 10s\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[9]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">pb_subdb<\/span> <span class=\"o\">=<\/span> <span class=\"n\">arthor<\/span><span class=\"o\">.<\/span><span class=\"n\">SubDb<\/span><span class=\"o\">.<\/span><span class=\"n\">from_smiles<\/span><span class=\"p\">(<\/span><span class=\"n\">pubchem<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">])<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>CPU times: user 26min 52s, sys: 17.3 s, total: 27min 9s\nWall time: 26min 56s\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Bioactivity-databases\">Bioactivity databases<a class=\"anchor-link\" href=\"#Bioactivity-databases\">\u00b6<\/a><\/h3><p>For more reasonably sized databases, for example Chembl 25, the times to create a database are much more reasonable for interactive use:<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[10]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">chembl<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pd<\/span><span class=\"o\">.<\/span><span class=\"n\">read_csv<\/span><span class=\"p\">(<\/span><span class=\"s1\">'\/nvme\/arthor\/chembl_25.smi'<\/span><span class=\"p\">,<\/span> <span class=\"n\">sep<\/span><span class=\"o\">=<\/span><span class=\"s1\">'<\/span><span class=\"se\">\\t<\/span><span class=\"s1\">'<\/span><span class=\"p\">,<\/span> <span class=\"n\">names<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'id'<\/span><span class=\"p\">])<\/span>\n\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Chembl 25 with <\/span><span class=\"si\">{}<\/span><span class=\"s2\"> rows\"<\/span><span class=\"o\">.<\/span><span class=\"n\">format<\/span><span class=\"p\">(<\/span><span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">chembl<\/span><span class=\"p\">)))<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>Chembl 25 with 1870461 rows\nCPU times: user 1.67 s, sys: 132 ms, total: 1.8 s\nWall time: 1.8 s\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[11]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">chembl_simdb<\/span> <span class=\"o\">=<\/span> <span class=\"n\">arthor<\/span><span class=\"o\">.<\/span><span class=\"n\">SimDb<\/span><span class=\"o\">.<\/span><span class=\"n\">from_smiles<\/span><span class=\"p\">(<\/span><span class=\"n\">chembl<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">])<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>CPU times: user 19 s, sys: 125 ms, total: 19.2 s\nWall time: 19 s\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n<div class=\"prompt input_prompt\">In&nbsp;[12]:<\/div>\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span><\/span><span class=\"o\">%%time<\/span>\n\n<span class=\"n\">chembl_subdb<\/span> <span class=\"o\">=<\/span> <span class=\"n\">arthor<\/span><span class=\"o\">.<\/span><span class=\"n\">SubDb<\/span><span class=\"o\">.<\/span><span class=\"n\">from_smiles<\/span><span class=\"p\">(<\/span><span class=\"n\">chembl<\/span><span class=\"p\">[<\/span><span class=\"s1\">'smiles'<\/span><span class=\"p\">])<\/span>\n<\/pre><\/div>\n\n    <\/div>\n<\/div>\n<\/div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n\n<div class=\"output_area\">\n\n    <div class=\"prompt\"><\/div>\n\n\n<div class=\"output_subarea output_stream output_stdout output_text\">\n<pre>CPU times: user 25.5 s, sys: 329 ms, total: 25.8 s\nWall time: 25.6 s\n<\/pre>\n<\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<\/div>\n<div class=\"cell border-box-sizing text_cell rendered\"><div class=\"prompt input_prompt\">\n<\/div><div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h1 id=\"Conclusion\">Conclusion<a class=\"anchor-link\" href=\"#Conclusion\">\u00b6<\/a><\/h1><p>This isn&#8217;t the end of the story by far, but is just a first pass of improvements to the Python API of NextMove&#8217;s tools.\nWe&#8217;ve got plenty of more ideas for bringing these usability and productivity enhancements to Arthor, and our other products \nWe&#8217;d love to hear what you think!<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n    <\/div>\n  <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Untitled The 3.0 release of Arthor brings many new features with it including an overhauled Python interface. This new interface has been written using Cython bindings to the C++ core of Arthor, with the goals of native speed for performing chemical searches as well as effortless interoperability with the existing Python data science ecosystem, i.e. &hellip; <a href=\"https:\/\/nextmovesoftware.com\/blog\/2020\/02\/21\/arthor-and-data-science-interoperability\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Arthor and data science interoperability<\/span><\/a><\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[12,16,17,13,15,14],"_links":{"self":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts\/2946"}],"collection":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/comments?post=2946"}],"version-history":[{"count":17,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts\/2946\/revisions"}],"predecessor-version":[{"id":2973,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/posts\/2946\/revisions\/2973"}],"wp:attachment":[{"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/media?parent=2946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/categories?post=2946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nextmovesoftware.com\/blog\/wp-json\/wp\/v2\/tags?post=2946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}