Skip to content

Instantly share code, notes, and snippets.

@jenshnielsen
Forked from jakirkham/mpl_hist_nb_bug.ipynb
Last active November 25, 2015 17:41
Show Gist options
  • Save jenshnielsen/336f28fe846660917d12 to your computer and use it in GitHub Desktop.
Save jenshnielsen/336f28fe846660917d12 to your computer and use it in GitHub Desktop.
Demonstrates issue displaying an array and its histogram
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib notebook"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"a = np.random.randint(0, 65535, (100, 110)).astype(np.uint16)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[24944, 3842, 20392, ..., 3554, 32446, 7990],\n",
" [64043, 43879, 9947, ..., 62788, 13774, 34726],\n",
" [48578, 23324, 63368, ..., 7829, 4349, 9170],\n",
" ..., \n",
" [41790, 50967, 51434, ..., 14960, 33943, 20048],\n",
" [49998, 5884, 34225, ..., 4182, 38216, 34099],\n",
" [21091, 45541, 57176, ..., 59118, 15702, 2747]], dtype=uint16)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" this.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuxdC9jORfq+R5Iin6UcQomIsClExVJCQiqUxD82QmkJUWgROZRjFIpSbM5FlAjLpqUiCikSohxCPofSgflf877v987cT5vVt33n53dde23z/eb4zDPzu83c7/0Y6KMWUAuoBdQCagG1gFpALZClLGCy1Gh1sGoBtYBaQC2gFlALqAXUAlAAqE6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYDqA2oBtYBaQC2gFlALqAWymAUUAGaxCdfhqgXUAmoBtYBaQC2gFlAAqD6gFlALqAXUAmoBtYBaIItZQAFgFptwHa5aQC2gFlALqAXUAmoBBYCZzwfcnPYD0A5AAoC1AB4AsDHzDTVZIxoCoAGASwAcB7AcQA8Au4LaLgbwHICaAH4EMB1AVwA/JavFzFfodQC3AagDYElseLUAjABQBsA+AE8BGJf5hv67RnQtgCcBVAFwEsCnAKoDOAXgzwDGAqgEIBHA8wD6A7C/q4XMlbkggJEAagM4B8BmAI8CWKE+FrFAcwAPArgSwPkAzgbwS+AC/82n9NuQudbL/zwaBYD/swnTXQWPAPgbgFsAfAHg7wD+D8DlAI6lu96mfocGA5gNYAOA82JA7woAFWNdyQZgfex/nQD8CcB8AP8E0Dn1u5vuWnS+dA+AugEAdGDagRsHpF8A4IDPGwBaA3BgMSs+zgYLY2vR+Zv7x4MDex8AyA1gC4DJAJ4AcFks7/AYAMqK9nJjngOgAIA7ABwC0CX2j1nnXw7wZHUfqwcgH4BzAUwSANDZ57/5lH4bsurK+o1xKwDMfA6xHcAoAKNjQ8sOYE/sBGtK5hvu/zwiB/zWxTbW72Knfu5UqzCAA7HaGwN4FUB+ACf+5xYzbgVFAfw7doq1MwCAfWMnglcFQ3MnOe5Ewp3mZMXn3RjY6/YfBn8vgKcBXBSc4Lh/XLh/uJXMisaKjfljAC8Ge5cDykcBVANws/pY3DPcabv7B2l4AngmPqXfhiy8uP7T0BUAZi6HcFe+hwFcB2BVMLTFsStgd42pD1vAnVq5K/LisT+7D7FLuxPTpMd9qL+OXb18kkUN6PaKRbHTU3dd6a4qk66A3SnffgDtA9u0iF1xuhOLrPa4k2UHXNyJnvtYO1C3A8Cg2CmXA8fu1Nmd6CQ9bs2+F6NtHMlqBouN1/mMo664/3f/+HL7lUtXiP0DTH0saqj/BAD/m0+59avfhiy6sH5r2AoAM5dDFAPwVezj4vgzSc+M2AepbeYa7v88mpsAzAPQBMDbsdoeB9AQQNWgdnfl8j2AGgBW/s+tZswKHCi+PQb63AhCALgUwBoAPYOh1Y9dnbsT6Kz2uJNSxyl1gMX5kjthvjXGJXW8UrcO3enWXYFhysauON0a3p3VDBYbr7vqHR877XOcSXcN7HzOAWP1Me8U/wkAuivh0/mU+9brtyGLLiwFgFlj4vUE8Mzn2X2YpwJoI3hqegL4axu6EywHfN1VnLv6lQBQTwDZZknr0P0QJgTF7gTV8Utz6Angr5zMcW+3AvgXAHdt7k5B3Y+1XonRMhzNQE8Ao2bTE8Az3+c152ksoCeAmc89HM/DXQc8ExuaO4H5JrapKgcwahT3Iwb3K987Y9eaoRe4E5p3YhzAg7EX7vRmWhbmALofc7hr3/Bq0vEhXdqdLrvrcceTvDowpPtFsPu1YlblALofYLkff7hfsSY9SQDQ/ZhBcgAd/8/94yOrcgCdP7lrX+dD7sQ06fko5mM51cfiNjlTDqD0Kf02ZL7v/f80IgWA/5P50mVh90uvh2K/At4GoE/s15j6K+DodLlf9g6IXck5or58kn4F7D48zo7uV8DuF63uZMJtqFnxcZw2yeVzV5x3A3D8UvcLREc5cCc37irKXZ+7X07/FcBrWdFgMTD3WOw60/FG3YnzzNhplgOA7heb7gcPA2Og763Yj7cccM6qj7OL+5GR4/45xQKnZOB+GexOAt3pYFb3sbNiP/z4S+wfru7K112Vu1+Y5zoDn9JvQ1ZdWb8xbgWAmc8h3Jw6PbH7AeSJcbOcdpSTPdEnyl1z2llO3y98HGctCRA6LlKoA+hO/xy4kWWysj1DDqCzgzuVcCfPoQ6gs2FWfhwAdNzJvDEA49al45y6x/1C+tmYNIw7SXXct6yuA1gqdjLqfhDjTvzcPzKcmoE7fVYfi8oqvfQfFtQNMT3T/+ZT+m3IyrvRfxi7AkB1CLWAWkAtoBZQC6gF1AJZzAIKALPYhOtw1QJqAbWAWkAtoBZQCygAVB9QC6gF1AJqAbWAWkAtkMUsoAAw40y4xnHMOHOlPVULqAXUAmoBtUC6toACwHQ9PdQ5jeOYceZKe6oWUAuoBdQCaoF0bQEFgOl6eqhzGscx48yV9lQtoBZQC6gF1ALp2gIKANP19MQ793sifLg5dbFrXSxSfdQCagG1gFpALZAeLOD0Ql1QAichpU86sIACwHQwCWfQhd8T47dIFo4legam1CxqAbWAWkAtkEYWcHGyXeQgfdKBBRQApoNJOIMu/J4TQCf+nHjBrpU4PmQ8zh/UHfsT9nIT866ldOLfXPXRp/MnQ+hdGXxG6Y69J1N67Fiuune9RK77Z193wiB+hwVcdvhAn9e96TaP86+v5XRi/VMxYRilNye6SFrR56LV39G7hHpPUnp04seUbj3KBWkAer0NDLoZSOibpD0bzfaXRN+36T82p7LPnMMBQqomOO1a/9y+7jCle5dwwVn80xL/oPRFNwZ9d0HogmdKl6aU7pQwmDNcVIDSQzZ7m7gXe1Ao/v6JpjzXCZeKuWvI87G+Zmmqu+LSLej1EjDIRVN2zzLuCq7w6QP3uEAF/rmg2nG2yerelB67pAdX5sLYh8/Dh+KpjomsjTsuQQRsmXc2FS1WywXh8E/zSJQ///TpHgTjcLFMwofdAq1G8R/e+MZFxPNPrgQX0MI/x+tdAHzTC7hoUOSPZVeujb9sHNeIjv7p4ePsRzvcuX7wVI2EyQ2eBtz2i2/6+WvCboOENmItypg4Q9ZQ1dm389y/ku9ebrqyn/wZa9hp779IRKB8WNj0S04/Nc4F6/FPjxfHAnN7AbcNQuI69slDLpp38Gz/riyl50UiFPqnRYLY324TfXGxR2JPwtXCRpVdsBb/JHZ2gXCC/JU4/6uNb6f3D8WjcwJjRFChPAm8eFwIp/DpjLcp3SmRJ+zJdry/JeRMBD7sBVQZBLzyM/f73Qu43/eIdT+KbZxQykXoC54K0b0y+hTmfia+T+nRCU4L3T1O69ydY8BVHoaUFCPVZGpaQAFgalr7f2vrTOM4RgDguQ+2xM+r1iFHzar4fqT7ErvoXLFnSXXqiW3n3aD9l6Po3RVw0Zn807k7f/BGDOdBdWvIp/v2J1+3GSFO/udy2ef6sDs+sITzb6vNm01Jw+hzt3XBT6JPkfc8QHBpU507+rwNw40C7Z6Kfkm6zgdGNAJMT/5o3WhdMIfo88aP/FEZdk53Gsh15ilK1/3iFKUHlHS/5/FPGyHuX6Ra0Pc72EYv9uCPzn3GBd8InqIFKTlqV3tKfxNhB0SfoQ360TtTQszd7TwfH93IH9erF29G1wnAiKQmXFC48CnvE9+2dlGr/HNhBQZG3Te46Hz+Gb6IQTJ2iLo7JIVpBrpY9slRhucDSxgAXlKb/1HTSgCpAZ0CUN1BtCv+wdN0PPvJnK8ZaeXOy0yMY9UvBL7uChSJgszy6z6MN9A0EjrYPz2Psx99ySZEOZEftzWh8tPn+vm7i90Gpr1Yi8vFOPvxh/zsAzz3s/I3owKNy/rJn7qZ+9HqfB4XRUd2tbioycEz5qW2lH5owkRgVleg2QjYNeyTB0VcjC9/CZwuEoyZ5+Newz5/BQ8DCLCrqSJsVMZFhPSP7cH7gLmG889tUo/yt8ML8fQLaEfvEgwvHhf3Lnzujwcpiv61m+UJG9bqccpvclpgdVeg2ghgIgNAuy4H571drPsJbGNzuYs0FzzFw3+wugsn//SwLpJf9Nm+6AvMuvnCWMrV4QLfKAAUU5umSQWAaWr+39X4mcZxjABAB3feBCLbX0dxeiI3qk17vRvwpxLoYF1IV/9I8NPsnFn0Xm5sRZ7yYKZkj42Ut7Phzbq85ZPJG99fxRtVtaQoWtE/20vFBrzdn3Taef6kK5K5r7C1jFAb2/i77gFGFAbMRnHUE4keF3222SeospId93DllTlprxQbahXujJ3iIoD550jw/UuYxJtzy3v8R8SVmHo2f0g6/syhZJ973UWw88/W290NTPTZZ3bTuxqrua3nqrrIU/7ZDwaXQxJ74udefXD2IBfOFjjRlsMF2yoB+O/Jp259wSdK/YJ/n7i6TBvxMW3PH9Pb+i+Kd2xhXxeFzj9XmRWUzscHGvhpnwv37J/cOfkfAxjvImpFn7rt2edejIQ39k+R7vwPjYeHRU/2kp5K8Cd87m+t5s0GXuwK/DU2T+uDzIxNgPAdgOEV2Y+KWxe90D8jwUdrtU3d+Mty1oUi9k9XsJ/srs+n6/bPwmef4n/EYKz4dITA+DP3b1X/lLJ84LPVcFTKmXYG5b8uEg44sHHtQ+i6FRjhutiKXgE1RZqXZjToY/CYRwXYmcnj6N7f/0NkWDUGVU1XM9h/4yCfdFbNz6B55dA63HhoIz7kBB4dKgbiwpCHD/9Dwpbi/c28zuOaX642JnbdirYjSmE5XKQ4/zwQBWLxp+QM3r/sQLZJ4Q18Hrktd8l42YV8kI+mTbkfY2ZFN7MfjvyEHgkR++kJoJjZtEwqAExL6/++ts80jmMcALpt2J39KQA8cwC46ChQ73wFgM41zwQAnly6DGfVvjHiyQoAgTMCgOsWAVfFAK0CQJwJAFx0EKiXXwFg0ifjTADgR4sO4up6+RUA/r7vbJbKrQAw8013HACeGxubAsAzB4BJ7qAngGcGAMPlowDwDAFgaDQFgGcEAOMm0xPAiCnOBAAm2UxPADPfR/6PGpECwD/KkumnHgWAboNM5hWwAkDvyGdyAqgAMBlXwAoAabc8kxNABYC//wpYAWD6+Sin154oAEyvM5P8fkUAYOJzQJ7YEWCORvwrrxcvYFJUq+CHGzfO55/mXirY99tRnHq2zJSj9HD7NKW7jh4XTz/cmflR38H/sMJlmvsj/2rucAX+0YfZyr9mti2ZB3PdlKXxtv7drjZb0P9mIPr3Cvz66/7MXytSkD/sX+/z78/CSSpcqAPb10zgXwva14KfFgKoeDtzGz82/KOEsHN97Bxq6y+CDL4EN9H798Mf+wBY3p15YmZ4yNFho/wT/OvAKicEV+5tHjfGsw3tX3k7eaiZ5zWNqd2TMssfnPR7gd/3vYp/AGHWb6LyPxzzfrdH/Dji0ku5X6YS85J2z3J3if4pav4pVtsn8fQaQTqrxD+yBgSX1FRnHx0d/OraVdpItHRpL/8H84z40cESzlyiKttgWwXm0B5Zzwze98/yxMq6HflXozaX4Ph1FBy/y/Zz40OY//nuo1y+xuyg70wdxfCjD1BdLfAqpV9C0s/Io3/udT7/sGnMUf5RSFh4EZgbOr/anexn74txvc39nlOP12YB7IuX34bLqK7WzzJXsdCD/PPlJ4znxrmCtazn27r0K4EvDZzHe6GdIT7F/ON9HBFcx+0nhCLCe8yxXX+959h+Z/gnJdmFD9bozn639ung5/sArr54M5V4ZpdPdv6VpB/zIJE75oOOB3o88t1RDqCwf1omFQCmpfVTpm0FgAAUAEadSwEgoAAQUAAY22wVAEIBYMp8eDNirQoAM+Ksnb7PCgAVAMY9RAGgAkDnDAoAFQAmbQoKADPfRz+5I1IAmFzLpd9yCgAVACoADNanngAqAIy7g54A6glg+v12p3rPFACmuslTvMEIAPwwsRhy54lyuMrtY+7QqUI87ba8j9JQfAPzPaRm1HVCfLm6iE7Q6OtQJR5oYjwnZ5BlYbMt9SqSMR5YxGLN4y7sSu9LfcvRO7as4PLHq3nO2qyczP1ps1Jo3FVnG1xqmWRTfy0Lrc6r7PNfYpl/c+VG5tisFfzCynm57XmHuW03YeFTKxCnLT6T52OOYUHeSZZt1hscEaDINOYyLrg7KtninsP4E7XbsjvzDTcNK0Hvy01mzpNpw9y5hvZbyr+gTjAQEXGhyYMcwqGT4Z933m1Ze2zPxcyv2vSV71u5xaJf9VazQcuwyOBznwnB8bd5frbUi0QsiDxfCK3EjpbnY3t+no9sy04f5jRfeY6CdSi7n4NOllWmx5QWvMl//kDjsv9O+p1/9M/mTl7n9lXPk7zubs+PdXlX1fF+4NL2LrbJuLYc6aND/pep7UcPsmjh0M982sxgG9zXl8dVAawD2HkCa26a6lz++fK+b/eLaCnAR9SvQZb5uCUMC9s3F+LyuIk1CjvaifH6dgi+c1Uwv61vdcFTlcLRo3gtroEXN2fGMVBCcOnWgOcjUWik1jasHdpJCNuHvmN+Zns23s6Rbx43LciGlZtz/inTuS8hO7Sr1zGP+uD5XLbQ5dG1eerIUexPiOzXygHk3SlNUwoA09T8KdK4AkAACgCjvqUAEIACQCgAjK4HBYCAAsAU+e5myEoVAGbIaTttpxUAKgCMO4gCQAWAzhkUACoATNoUFABmvo9+ckekADC5lku/5SIAEHgRwHmRXtqazam37ZfztciEvl3i780TfKVoV3MosV5VOTzSoEEcwxXi9g2h2oEMcOlvniPtr6h7DfXzfXC6p+EYo4CX64gW9FdkdtijVJcZz1cTZbfy1dGnBStx/v0cv/S5IKborVZIxrQQcYd/EOGm2gjJje3i/Xvi/azwapUp2wMsB1DuM4Hny0zmuq9ZxWHRPpjhr7ob3sVh/BYM5cCodgT3a/W+K8lG1SbwlbzpI64/D/jrNft3lh4St53Idkj43Tz2OxE5DuOCm9cHwFefcmkOtV6KyL2TflTW8iX85kZXx6vIPZ2vtY9dlhTbNJaF3QxCOQT3NeDrTykh1N34tVdKxOsFMw0AH9kt2rjIX/grvja/FT6M4/OGdUXy/cJX0QeHs2SJUBPCHI62B2+haFdKTPVzf+U9vAm8ajjEY7kLhJ+05Bk7NuQs+kPunF5+aJe4Gi0mrotnvstCO5/jcqqrzzL2s6FCLapncKVpqkynsvcJisOk4SKeW3cO09jJfkfluxp/pV9CxP+261gKx/yDbfTB08wrWWw4rGZvEc3QBCEkT/XndZztSkGH2cW6PR2n8XW/aSFpDT7Un32BaSKTOTIlOh6OSk3ZI0fw48URfSa9Ak5H2EEBYDqajD+oKwoA3YajADDiTgoAAQWAgALA6O6qABBQAPgHfWkzQTUKADPBJIohKABUABh3CQWACgCdMygAVACYtCkoAMx8H/3kjkgBYHItl37LKQBUAKgAMFifegKoADDJHfQEUE8A0++nO/V7pgAw9W2e0i1GAGDvxE7ImeecSFut8Aq1eQ5+onThOofj6WvfWUbvVlVhuYh317DLVL+ehzNtZWP6w92L5/m0p45E/vZieyYxXYFPqexRnE/pOnespLR5fTSl7d0Bz4lVEmBeYR7LDyKUVU5W88CCr3jcjQp7GY3qe96hdt8dzeSsrZ2ZT1Xa/Iv7OZZ5My8+yHa472MfKst2ZXsXX8oyJDu6cMfnjeK+9AUbYv0Ez8cyc9kmHReOoH4+t5h5eKYehxMDuO2FljmaQ+AJcrvgpVVcI1+KEIIYxn40rzuPu9YvHOYsIbv3K3sRh/My3zAncI7tTpW/Cpa9mN2FJWjMQ15CyG7jcHg/s6IMctRiGw5d9xC11aMCcwDPXcnh935o48PSHZ8mQu/l/ILqegvsNx/YHvS+gGFZkg5BU9nyT6G8N1oOwyjDnkmplgUmiP8VqYm5dkMCkmZPjkqGrT4qWaRkacEBtNeKz5CIOHjkDT/3C7P/TONoDpYAmm85bFyjVix/s3gqt1VH8CrNdX4+q/fldb7S1KG2Vws+YlXhw2ag4B1/53nHz4PJcs/hQap72py/8p5xgPtduj1Lam2tz/xcvB0UL8Nry94hOMeDFnNbxdgoU7/idV0M3heuS/yAyk5IuI/SdyEaPu/oEYuSCcfdfyoHkKcjTVMKANPU/CnSuAJAZ1YFgBHnUgAIKAAEFABG91oFgIACwBT57mbIShUAZshpO22nFQAqAIw7iAJABYDOGRQAKgBM2hQUAGa+j35yR6QAMLmWS7/lFAAqAFQAGKxPPQFUAJjkDnoCqCeA6ffTnfo9UwCY+jZP6RajsYA/A/LEKHSmiNRx4jBctoznQLXazGGZpi5irootIlxmEQ/nhW4s6nUbvG7dvWB9qZ4YSoVrvs98EtOQ+71Y8GDqYgiVt/0DUbZ63K8rqq6lP2x+j5XM7MViXCfENPkIUTBPBbzGyDUr8x4ni3BhO40QR7yJdbcwkXlNWy7xXK/S277ijgzjftqqnD6/WRioCTg2V+jWjQ+qC8bk/nr/5cypfDqn16hz7xPa8XwUHcPCjrsGMdnLLPT5rQh/ZzZKPuESnsulfIdf4Ub2jY1mTzx/7mOsM3fsAPPbUJzrhtCX7GQnUdsTDnaIp3++4A3hCHdxeixzE9GJbfLDMbZJTiFvOGKCr66bCEk35Gae24st+9kY/I36sqoY81bv3OXX24xZwue+EcMSIR0rNeP5+ahwdZ4fETrumcB1/vYm1728AadrMXURPwc2cDmLHN5JBZ4N+HHNWi2gd0aEWbTr2Ga73+O2LzjG6Zwc3Q1mV+DjuzmvfVlw57ZyKEQsEGKJLL8KHAt8YzqLPNoX/8unWMyPmcxtF7IXU2f3Vgj4oj4CXTSPsMHS+66jsrXX/pvn+hfu24qqXp/1L/nFns3ROYHK0aqO/AgkRH1EOYBi6aVlUgFgWlo/ZdpWAOjsqgAwutcrAIQCQEABYHSzVQCoADBlPrsZs1YFgBlz3k7XawWACgDj/qEAEAoAoQAwaUEoAFQAmPk++ckfkQLA5NsuvZZUAKgAUAFguDr1ClhPAGP+oABQAWB6/XCnRb8UAKaF1VO2zQgAfCOxCnLlicaRrb2T48HaF3NQD2b1bxhPN83PHJts5wn+IMua4a3b2IUOC55SiwuD2LVCJ4u0qgCUnSbi83YS8XkXcV+Gb32AxtF1hY/5ulzQcW5Yw2VHVWpPZSeA0592EG2H/LfcPIEHLz+X/jADzBNbipvovYwHO/PCe+n95m+Lx9Nlz91B73adYHsX5RCvMOeKOMP/FEs80GJcyHRBPGZXUVsfb6rG6fKCbyj8uER34SuhbGNTzjxc6Px1ncnvlzVjXl/tecxLGhj4Xe+Q1wjAbOR+tBzDMVqnNmJe64XzmWe5OgiEWzLgGroe5j7GsYGPrilAHTezue37xvCCmWSYq/VuwB+t/ne2wdYnOF2KZTBR8XoxX4bnKwhfjZmzWLevWS3BpVvB2qC2Le8Rm0TM1yfAnd0B77NfCc3Hve+xfiHW8LjsVsGte8zH9HY53y3ixUZrGOapHjirBlV2wVDhg5OFk0pNvNzcdt7xnlt6eENhKlysMgsc7jaSW9qR8tsnue55vby+3kVgEuY1hTdw2XPFuhVTO24aj6ujjBsdUld5+4cZK2y0gDnI9gaee7NdcB27+811ytO8sFtOmEMdy982SqS0R47iu3wR3VDlAAqXTMukAsC0tH7KtK0AEIACwKhzWQWAUAAIBYBJe60CQAWAKfPdzZC1KgDMkNN22k4rAFQAGHcQBYBQAAgFgPEFoQBQAWDm++Yne0QKAJNtunRbUAGgAkAFgMHy1BNABYAKAP2C0CvgdPvtTvWOKQBMdZOneIMRAIiERMC4/wQgqCplKzHXbrPxMS9t5UBLz10hcqhNZFsm+SM8no29S9If3sCt8XSvh0bSu8ZjmMgydz/HaP05Gso4/hxOYPLdhdVY0Ir4b0IKbvRcdvU3bcBNBPAXcxu11Zsl1fD10nzx9wfNIcp75TDBu5vMbS3cyOMQ8mKYaJdThu5BYNwlgj8o4yV3+ZxF1N4qw23X59CoOGugt9mpDrmoXSv4UGbqdHp/PBcLm+XqL3yBw5MCU71fdbLrqK5Qa8+9+Ok9Rw3yz26WvENRwfP7xEv14ROxpFrhY/5Lwz/zOL9nGz2+9DF6X8UMjqcb4wC9O5XvAkpnOzSQ0lfbmpQeARb+C7lyLmMZ48mPVYXk47fF2N8LGBZufN4yj292SPoDEMZsDX3KtVv2PeaWHqjJNsnfm034UH/W7BxTrydlOBLwzJ44MYDeDb9bCNI130QAACAASURBVNEJjc21r1/BNhzE8a4f7jUo/v5NcNznLbVZeG4chzJHR6FTCr+MI3Wa98TavTWwA4eIBoRuphGcZMlpBrsKcHMwTCENav8meJB/Ef2aID7VvDQx8FX2s665h8cby/Uk13V2yyNk75+q89ozXTj/vA7cdmME+p79+d24vuw3HZN0AE8CCdEtQDmAYr9Ky6QCwLS0fsq0rQDQ2VUBYMS7FAACUAAIBYCxzVYBIBQApsyHNyPWqgAwI87a6fusAFABYNxDFAAqAHTOoABQAWDSpqAAMPN99JM7IgWAybVc+i2nAFABoALAcH3qCaACwCR/0BNAPQFMv9/uVO+ZAsBUN3mKNxgBgLckTsTZec6LNDa3NnPrxi1l3blzjY8Z2ganqIMl7KeUvhyfU3rh0jt4QCx5BwQctLkvcHy22yYwQWdme6FV9h5znMCUNXSvKLhGpmi8L2+hDfXrFhE3eAqY69iqouCzledh7Zji9d4uWcZacBBcRVOUNdVQnDmXOyyPsyX+QY2tNF4HbbLld60Na43dZ5lgOLHsQ1TX4M0cz/c5eO3E3c1YPGzSLPaT+0q9SnXZ93i7mFaAiXp3j+YYyQgl24ReYenOTBh81zCXq6CMfXo/z8/mvoFW4k6Ov3t2btaRG30Bc5w6fshzO7VyE/rDSHibrW3DOnNm8ibKe+xEBUrnGsrrx9zLvjClOGustQo5ho/mp7qaDOaY3QcEqWz5/vqU39wjfHjJwvj7EiJW7JdmG8/teJ7Lee29Zp3LeBSxwOKxUi3Lst6bGR/wwuazn9QYtpjaegDPUnoUHqb0+7cKEc+AsnZkKcdeTugg1pqIq422nN9uEJ883iaAfb4rjf7O4pQLzC7q552W52tGC463bKYJHt+bvm1TkN9NqsRrT2qJfgNeEFJHcHF/QZrtN8L3dXZX3rObsH3rm3vo/Ze4n9JLLMd3b7fd+2U/IfHYvziPa/f2qI2OHrEom/Cd+0/lAPL2k6YpBYBpav4UaVwBIAAFgFHfUgAIKAAEFABG14MCQGChAsAU+fBmxEoVAGbEWTt9nxUAKgCMe4gCQAWAzhkUACoATNoUFABmvo9+ckekADC5lku/5RQAKgBUABisTz0BVACY5A56AqgngOn30536PVMAmPo2T+kWoz8CWZkI5I7pADKFg3h5kc584bu0eiy7RG7LJI/yk5g7JLWu7CXCpTr5uout5FiaK/AXskXJJ30czsgLobuFX9h0TXYxR6q88cJdP9h+lPlVMMdmLIKOAWhchXlKTT+cQuUnZPd1l/1lJ73bv+wS7pjQ+DK9mRfTzbJ23LBaj1N5877P3/CHWfRu/q47Oe/FIobrRSKO5/Pc9oAG3ePlex/yWmHuj9k6c97yU5gs1wLMCXxs4yjuSwUhTnZTEBOZhwxUY+1DW+YGtqGIfWomv8Tv1wd8K5aDRGJt4YPHmQf2TnaOfdoUiVS37eE5g+apIfzua+aOogF3yxxmG07fwX1pHmioRUoG1Me96zlvoQWnj2u7Zjbnr9xJcM6WB+/ZjQCW9cMcETP3KaFN+cGzrG8otUVtENu59fXPkVEm1+aY3SWXMm/1y22sA4jLxPwFsYOXV6pKddcc/gH7YBlhs2g49PizrR7H9/3O7KX3TazXIKwH5ig/b7ymaXR/upQrbxsG4AXsZubl3VXGG3nmI8zDxjDmWmMj2+SH4myTlrl4f5qzjXl8tn423zehu2guFzYSLo3DPCx7VGgUtvHrpa7lOMEjhZ7qFbEw3Ed+ABL+FqlXOYBs3jRNKQBMU/OnSOMKAAEoAIz6llEACCgABBQARtaDAkBAAWCKfHczZKUKADPktJ220woAFQDGHUQBIBQAOm9QAKgAMLYrKADMfB/95I5IAWByLZd+y0UBYIlEIFvsClhExaCQRO6XcacCeYJBfH1jX+LrG4gQUV9/zcJaRf90kC1z2Gs4bLOX07uShq+CbAERO+nvXNXLD/L153X4N2UobWbH03Yf3yHuLcBSIDeCY0Zt/vhqqiuxPF+lXnZWcE8u5v4jw1fAxcDXstuEBEeJanztZEaLq7vxfj6mvsQSJa2M/JKPod7YRqy3Yh4UdU8N5noqX8lfY7+huj4wHNYP8LIiLqPtzHIRj4/ikGoFsT9e30PP8n3+6k689VQby/1M7MD2z/MEX9uO7u/bfh98Lfgp+PrsY8O+cKXlO/rb8TqNu5/x96ObwP0sN4T7ubgny8S8gv+juqY+3o7n52Wx5Qa38KYX191wq7j+7yKu/0eHOjsuAHb0ji3psQlBWxxdDeZTbmvOAA6x1sS8RXU1thy2cV6Nu+n9cyt9Wx35dhKmFV+j77ZPUdmiE8SeUYYXmM3u6z6/ovcpl6tLLg4v+UhOH8bPvf/LiVVU2Zvizr5IOw7raJYEdhExGzv+HEirABhnWBrneC5eD+ddz+Mwi32cNDuzP78UUxksnUg+8y3P1yXffUbld/QuS+n8T/jOH8rO+01Ly7JUU3eyfI0dzGsP74sNL5j6Wj14T7jLsDTRA0jaYxxPI7LH6hWwMGdaJhUApqX1U6ZtBYAOnCgAjH44FABCASAABYCR9aAAEFAAmDIf3oxYqwLAjDhrp++zAkAFgHEPUQAIBYDOGxQAKgCM7QoKADPfRz+5I1IAmFzLpd9yCgAVACoADNanngAqAExyBz0B1BPA9PvpTv2eKQBMfZundIsRANgq8SnkyHNupK1Jpj21ucdeSOkl8PHbWv3J8+gimYSEzP4xzHtpDuYGLTMs5WIre16MWSMlF96hfswxdShtmxViW13MyRXDrqE/1GrnySr3v8CkmudfZm7c7ns5jFNRc4DqWm6ZN1ZrXkCEuU1w4aYwf+rrloIXOZQ5TraWWHZP8rhefsNzvcobDkdVObuQcGC1G9ifRN1i/swzQXkh/THqKPtJl3kTqGNNGrPszpx2XPnuF4RN6wTjDkKFuUqLlmRO5e4ZHJYOOdkm9mohRbHfj6NoJQ4F94gpTYU7dxc8yAOirtzCpj7KHIp247rfAfto2UU7uKM3C+IYOCzd1TaINQYgb6C5sezshlzXZ6JflzHfE4L7GONYxeuwL3gul2nn+Wcug13OHLRaNdmnl+9iLhfGc9fMIOaPPm+fiGe4f5MgAQoTTW/I9r9LcOV2v8dtFQ0om6apkDXa5WWNXKm3wGtx1fAbqbK+gVyNe9GbqcHI0c7X3+fpXlT2HiGDVO1H5pIm5uX96qe9PM4c/XzdXUYyV3HkZG5rhAhR17WY+Gy8JtJSMuu4f29+EX40nTWAmtgiYh/muR9uWaaq/Y9+X/gsJ4c+fN6yNNTzb8b23e+PAHdGjK0cQDF1aZlUAJiW1k+ZthUAAlAAGHMuBYBQAAgoAIyuBwWAABQApsyXNwPWqgAwA07af+myAkAFgN5FFAAqAHQ/BtITQAWASbuCAsDM99VP5ogUACbTcOm4mAJABYAKAIMFqieACgCT3EFPAPUEMB1/u1O9awoAU93kKd5gBAAe3g7kickAZrtPcEDmsrDTB7ZtvFPX3L6BOyhCcvXr2ZPe9y3Iml5gSSmY83zbVmigmXKiXyxtBbB8GLo0Yd7MKMO6c6Os57B1eYz5a/cOHkf9frlwR0rbm3gpPDxlEL0ftSJoS8gVojxzGRejLpV9xjKPb4EpR+9zHmbu0Im8vr41aE55K1cUNhPh8S7c8BXl37+LNQoPBtGrPvyFw3vlxlEqW6PYWrbRMrbRl6W43yWNEG5sGdhY9BO12M0Wtuc/1J/EoeJmt+W2my4P7CD4aaWmfUyVP4k+lN5jFlC6iWXOZpGtgTac4ElWeJJDj228tArVVWo7t731zSt5oExZw67P/LiKrRRzW53XqX2SF+OHvcpT3VUuZl1Nkz+oT4QDs0Lf0Ege5JrtVPcl9kdKn4fvKb3ZBNzHRzlkmj2X527c3zkM2gNGGBncNjW0RoRfWyn2U6byAlJT8C/cl8LFRGjLoLqbsJQqfxqPUFqGl+w2jzVUcZsg9w70IqqL+5z+01unB4/r+2c5nauR8BURvg1vzwkK3EGFNyEIEwegHFjzEbMF/3OYsPFlPn1qtODTcjQ81G49P5L5lyPf418JkdCQygEU5kzLpALAtLR+yrStANAJxCoAjHiXAkBAASAABYCR9WAVAEIBYMp8eDNirQoAM+Ksnb7PCgAVAMY9RAGgAsCIMygAVAAY2xUUAGa+j35yR6QAMLmWS7/lFAAqAFQAGKxPPQFUAJjkDnoCCD0BTL/f7lTvmQLAVDd5ijcYAYCJHwN5YpJ9pofQQfuWpz3vIq/dl5hzHXXQNmJdrbFv3EfvZyDC64g/7+5n/hvx/ARXC7mFLTqI9A6hn9dLkO8qc37z72Ccw57hcSxiHUAhX/jrSeHQmvgkoD7+melpOL8yxyc9Or4A1WcKCb6OGMbMeo0of7NbPUfNzOey6y1r3PXA01T2CnxK6ZFvsb4YdvnX5maOWbz7Eub0NQPHov0e51Hd6w5dS+lsW8U4A20yqRGY3XAM1kK7WS9vTxHuSwMwb++jq6rH2+67nv35bDGbfcC6dLZuK8pRY9FiSvcy3ofvt6x3NxjMO/3ChFwr4AfLwozXG07f+oLoXMDtMruF/Q58wj78IfMJzWNiXT8i9PXqem5dLcPk3AqWY1/X2MR8z4TLWLMzcQjPR99+3NZm69uaUZvbCnnAbkBF57O24u6HWQNy40iOQV1+nufp1W/MAni9DMfKrs4UWJQutp5seK+pSOlPgn67F1MTfd/PZpowBCUQEHN5pAF7XsIO5k3mLuQJikef4j1CchXBywMlH2R+55fGxdb1j+3F/NDrnvT8xc9Pcgz2g1OKUtl3Wvu15F7ULfYuvZ+zS8SJfshzBm1h9oMHegXBrV285E1do3UdOwJUUx3AX39o0vYvCgDT1v4p0boCQGdVBYAR31IACCgABBQARrdaBYCAAsCU+OxmzDoVAGbMeTtdrxUAKgCM+4cCQAWAzhkUACoATNoUFABmvo9+ckekADC5lku/5RQAKgBUABisTz0BVACY5A56AqgngOn30536PVMAmPo2T+kWIwAQfRKBnFEhwL1Cc6oQ5lEfjp24PZ7O1ZtjO+4cxnGDL3n/W+7/Gk6aTiIO6Bf3xDPsvYz1px60nHf2GuZmmfcFx2mr0JyaJzhTAQ3GHhGu3U30s/YmMQ/M41trH6D3i1Avnu51+0h6l2/215QefxaTGZu9xfy1vLU5XvLqc5i/U6bETl8fU2qAc7jbH93CZMWrL97MGVgCDGaRt9nazVdQ3krGz5V7YV9i/TyzU8xHE2HjZsLGOYP8TMUCOnFee1jUJfQnjYglPHujz9+0i/ADEf0EQivODue2RnzFZK/x8HqSW3ozZ+xTlofECsuadh37vkwDK9afOYS7+wu+W1/PdyvX5Usq+72I75rrQjHOHaxtOQTss0/94rX5Dq5j3pe5kPmfYy5hG9ydfRL15QIj5n6LmK/QTwXdFj5McLROofd5/nJee//Izfy4V4J9YjhinLJY75bjBurnvfVYc/MdpneirtBaHHT9w1S+V7tgbXcRPjpMjNlvm5GMK29lXmX1gh9RBWZ/OL9Cb3UUayeiC8dmXixiHNcRkpvf9mdCdQHj9yRbkQMefyLW4pVFxdxOF/tsdSGuWDSI+S1Cx6+pxmUrt43V/dMR4BXlAIqPTponFQCm+RT84R1QAOjAiwLAqGMpAIQCQEABYHQ5KAAEFAD+4d/cDFuhAsAMO3W/2XEFgAoAvXMoAFQACAWASQtCAaACwMz3yU/+iBQAJt926bWkAkAFgAoAw9WpV8B6AhjzBwWACgDT64c7LfqlADAtrJ6ybUYA4LbEXDg/T3R6CyziGK+2iOB4VAh5SsxRAoTo3RIRxPWmGTyaYawLaBN8W+ZHwTXZL9xPRCuQPDHJf3uxwN3U9n2NXvXpptwtex63VasZc2x2oRgV+PJr1iIbWPTc+Ps+n/E4Jl/OY54QcMhcoVWbbuTOLBEOsFqkp3stP1uG4wZvFfypUou4rKnHHM5T+Zh3aQJunbmVx7G2veAELmVNQdubbVhsteC3mS+oM69aH4+5MlhnrlSLIHYsACPi90q/s3cLYlkoTXaWsEGLQOwQwGIxtwdsYyrQwvyV0vdbH4v2+Z3Mq7P/zkF5raeGRv5uOLwyTHm2ceJULp9Qy3PxXn33NtGvuTywRzk5bwjPR+ONgiMY8HNX3ctcxmsnCSKYDwceacSW57orblhFjZ8v4kav3On3hSHFeYw9BSez/xQOdNt3MscTH9yayXe9/uF5eVvu4XVa2nCQXHsLz60pwTYZNcbzO92AOm98nsZ1JNAWzSN5qI9wXS0bsBBgQ3M/1TXC8t75waTAOdoeEYs+Frj9N74N99mx9OaZ3A9R+jwh9xnqCO4TPOJCU8U+fIDnenBntv9jV42itj5b5+OLf4OL6N2NDdhPjr8W3X+OHLG4qECkXY0F/BtznBZ/VgCYFlZP2TYVADr7KgCMeJkCQAWAzg8UAEY3XQWAgALAlP0AZ6TaFQBmpNk6s74qAFQAGPcUBYAKABUA+o1TAaACwDP7jGaNXAoAM988R3UABwJ5ckYHZ7oLLYTL6tCoc6/30i69crHOxWP1+PgfQn5AhlSbwTcyaN7HXzcMGNCd2n180TBKr60nriBv5yvIhOkiPNVEDk9llwbXzffwNUfDJhzWbIFh2QTbn8MdCdUF9hJhTvjISNF8uTj7pyL/FR/yezNHXN2Ft3NDOG+/K4OYdAD6tuPrMyOup9e/y6Hj5sPLTUj7j6nH94CdprIUyKes0oNyEP0Gh0W72ybGO1/OcAjBPmAZEtuIrw0D1Z1oHULd5snAz6rba8hINXd9QOmHi7FPVwRffx40LB0SinncIMfIij6o2eBtamvFpTdT2r7OW+z7V/F8XhNEO9yXj+U6ChupnyLpGbFYj7Eq7dgaVPmCBz31YCJ4bpuaFpS3nuX10FCE3uuPvpS/vuHrzRLWyyrNN+Upbzmw5JJ9jWkN4NtNVFjK8/cyvNTO1evZEdpWHENtNTF8NVpf8D+/vJ73jJJzWJLJ/hTMl7wCbiH8vTnPpa0gqDW1WT7lefgYkI2smOtJh9lv+otP83vc1ol8nJ4twmqGQemaj+V+527NUl5P5XqEKnvAsJ/9dJjloHIEV8hSUsls/yd3bMf10fTRI0CFyPj1CpgtlKYpBYBpav4UaVwBoAO9CgAjzqUAEFAACCgAjO61CgABBYAp8t3NkJUqAMyQ03baTisAVAAYdxAFgAoAnTMoAFQAmLQpKADMfB/95I5IAWByLZd+yykAVACoADBYn3oCqAAwyR30BFBPANPvpzv1e6YAMPVtntItRgDgI4ldcU6eaNywpbiJ2iyAfZTegUvjaSnv8G6butzfIAqQe3FoWIxoGMuVrwFruawM+HE1Aj6gy75qgJCm+IeQpijDTdt97K5bG/D70p0818XeJ/g4QQg0V8q2Eq4vuFngriGUVaj04bvU8NqtzL0ypZkHk/Pwnyn/D4fYiPkvZkmUy8/6PJ5/1TyWkLGfi36/xDYouXkj/WFbG+ZjFX/Jc6h2GpaM+eEYc7MuzhWEpAMwwnj5B9dIK7CExmywDEbTgHu058G81K9CEzw/MPJCcPwgJIHMBBFzcIe3qX2Y+YNbX+OwZ/MN27eCrU59qbuC5zOkCP6zC9t7peWYgn22ssbGplIlqO5yT3B4N3Ol4JHd9onPX579xC4SPjxSlOVhAEI15rnJvvxlYsx11jA5ztzNdedcc4jGsTAv++wNQt4Gk332jpVGUNlxn3P4tv2XM3exgOGQdljCujH5avmwZoey/4nq/lgQbq/EaF4Q5f9G6bkbWLcnv2GCbvVQ1YS7DdP8B6orW/aTlP57QeZs9n2K+bmtevj1MuUtXivmqOQXCvmtTiy/9StZq6Esa3UZvCTTJMMbpS3APmr2835lh3F4PXB2HAnUt/I8yeY23Y/TH+zyKCH6yHEgIdoN5QCyydI0pQAwTc2fIo0rAHQATwFgxLkUAAIKAAEFgNG9VgEgoAAwRb67GbJSBYAZctpO22kFgAoA4w6iAFABoHMGBYAKAJM2BQWAme+jn9wRKQBMruXSbzkFgAoAFQAG61NPABUAJrmDngDqCWD6/XSnfs8UAKa+zVO6xQgAvC/xSeSICQE+1515S+ZS5pucutu7Qbb8z1H/+oJDYfXj6F+oUIo1u6biHip/HjxvprSZRu/utlzZqx1YK8505H7Ov7I2lW+4dRmlx5by5aeARes+qMMxuuy9wvUFlwUTeZqsl89DtlPcr5rfCS04w+832k5UWbkqzAvr/yGHxnoDjeL5197J/ELpPGYk85J+KudD1rm8ORKZ54dCftyb9rINruAoW/j6KxYbG4mHqfmH4UN0uRfvGOaNhZnbTGabDL+X/aprbeaB5ZjJHMGr8q+jtj8wH8fT2fay31xe0HMoXabN5n0qawtw2y/uEyEFPw5CCgou6L2W+/ny1214SorOFlPE83PsRAd6n6tiMD8irByCsGSu0OiWzBvrUseH2nPv7V2CM7jW2zznEJ6bEx14bldNE3zcjszHvWbcCur36vzMSTOBrN35G/ZT3qPvFaC0eUeEIisu1iIvc3QvMyBevr15nOq6w/L+s9Gwrh8gQ6x9ROWz7eXQcCe/94J6pgTvhfPEXthYcJrrD3iN6n6rWhMe98lg3OwGwC/sNlM6sE1afSHW8UR+b+eIuX8w4EO/J3isM0OlS/eLObZJ5WPcl5yCA4gg7FyjzqyhuWB4M15r1aNtRziA0XlVDqDcxNMwrQAwDY0fa9pJ/Tp6rGPYOwatY/86RBAGNL0YgNuNHIr5EcB0AI6izGq60QoVAAJQABh1BgWACgCdHygATNroFQCuVACY9l/9dNIDBYBpPxGDAbhjgw0AzosBPRcSI+mf5C6atvvnuPufO0pyP4ObD8D9dKvzf+i+AkAFgHG3UACoAFABYLhLKgBUAJj2H/300gMFgOllJnw/HPBz913ujua72KnfEgCFASTFFmoMwN1TOW0GIZihJ4DOlHoCqCeASUtKr4D1BNBvrwoAFQCmv49+WvVIAWBaWf6323XXv46kVDyWxZ3yufTlQRGnVuXEsa4EEAiJ+SvgxKZAnlhASMm5wVTR+Gc+Pakzxwi9r1nAh3IEjqkcj/fwUIdL/WNel3Ftv4+/TPyFteASOvENdo9x/amuUMvKvaiEtfT+6s+EeNxZQT9Kc4DetUK/bZ/hsh0tp3cUKcvj+j8/ri1DeNnss8ypqd6XPzLHe7lDXP/ce87LlJ5Tn3XP7Lm+/tWvuSn2z7WCA2VHNaX3FToLTlSpKjzZobbigmf4XVHWTOu7m8fZv62YW6aBwR4WPKTsQf6G/O+UX3EVHxO8yZ4lqW9dwdpyk8xt8fc7hDvXWC84Zuu4X08K2t4LYu53VvFGsq+JLXK8aIzdBDKu87WvM0+1v2GCW91HfV+zdWENtZNTOcCr6c68yL4ROpV/hh4OAgu7fxnm9fpudW12yrtol7efe7HVkUyCp3RRtuFi4Qt1c/L7d094O1VvzXWdELF+c37D79uX4njjz6/giw0b8N1Ma253002Cxyrm5x3BtatbWXBR13D5bkHsZ7uc3w2u2YU63msFc2DtVOH/E7mtUdbzDR9IZA3NC3Myd3HWOcylq9uMtSoHzBJx1SdwXHUE69wKDqCMc76z4oU0rovycqzgHIkivu+jwcIXHNkD97ANLmgVs8FPR4BXI/6qHECxhaRlUgFgWlr/1207xeZ5ABx7OOmXBY713BBA1SC7Y/o7ZOV+ISDCnUdPABUAKgB0/rJRASCsAkAoAIzungoAAQWA6eujn5a9UQCYltbnth3Ic2dz7nzi9eCVngDGjKEngICeAEadQU8AAT0BBPQEMLoeHtcTwPTzJc9APVEAmD4my2mnuF/53glgkeiS++XvOzEOYNIdjxMlcZoqv8kBfLAUkCN28zhyz9tAjkBjQq+AoVfAAPQKOLLU9ApYr4CT9ly9Agb+qCvgZRa4s0xMOurkT8Dnz+oVcPrAG/FeKABM+wlxv+x1QlcO1ImgpJHOJf0K2BHLHor9CvgNAP8CwKSt6FgiV8COYZKkCNdSxNR9cTPrnv11YqDPx3J5aFRK6Dw9ztyU0QPZhQoKezafHvBgZHzdnD9T7gsvYR7Mt+ZNel/T+pjF7sWKncyn2lvcx4QtyLJxMEKbLyKkEzwDBjOn5hfDMV7bBnmLruayraoyn2fKRhHncwJzgfaOZZtxpFrgT7ZQvIHOYJ7egjZsf/kToPuncSzUCfWYt/TyIvdvjOiTP/6bomi6kWFu4hqwMGDlhjyOg/NZczD/+6x5h3BglXmu0S9GUE3qjIhrO70t26iaZZ7SYvh/0BzABTQheSO/nfLPAyYIVOv08gpw3bP2ucN3/3yBy+KJYob5aa06sA0SRglO7HDBib2e879Ui9tu09K/T5zF73Y4wafgubKp4GCOOj2v8uxKvrBZ5tSmwqcnJ5mGCqlBWLMza12+lbs+lR8f0Be7iX52mzWQ8v6f4LFe2UWMi5uK3oskPZXdv4WDJ2cdSs79gcUUr8O/6X0B8x6XF/GXG26YFX8/f5lfK5E/MsXy1/GrhW6jySW4qEFcabOeKSpYyfa0QwWfUGgndvuBbTr8qj40rufW+/IdA90+l8m0EPYuP1T4Bq/r+y3nf35noKPZnNfxr0Jwtkvqp/PVyH8rB1BYOy2TCgDT0vrRtt3qcjKgYruH2xGSAKHTCAx1AB1ic+rOsoyrTwEgAAWAUedSAAgoAAQUAEbXgwJABYBp/8lPPz1QAJh+5uKP6okCQAWAcV9SAKgAMHLqoyeACgBju4KeAP5Rn9qMX48CwIw/h3IECgAVACoADFaFngAqAExyl9JKSQAAIABJREFUBz0B1BPAzPfJT/6IFAAm33bptWQEAOKcRMBE42CW/YF16T5tFZCDHFdwrCe3nMjLsU7RujeNs/xLH1L6bdxM6aJfO3lC/8ws4jlrExEy6YBrwDFa54A17TYXZn29TnueorrHmpxiDoJ4p2P70bvhndjVO+TiotuPccDLchM5Xq9p5yPz2TeZG2caMJ9nvWUds0FgG87cdC81bv8k+D57gjieefjdLaXmUNl18YAx0T/vNTw/ngkaKzbKBzW2v3DdW7sVpbpLXczsRPOC4A7dzNy6Yyc4Jm/u3Cfj9dkbxVYjwgaP/ZDLDgNzMne8zoJ7xW73caR3zyvFk3kbKyPZYRxP2QgNO9wsuFoDvW7j8fGs4ZhrMsdkXSl05nrYpdSXVZtu5L6Vd/Rd/9S3PgjsQnM9+8V4zwWNvBD83PZlhH7eUva7lrVfiNf3Kdh+a1uxTXpO4fXSyHC6ug9PHalz2htOi94/d5d16lXRx8xme44uz3PfebzwI3YjJArZnuyBhOH52zhQ7cnnWCtx4RNs7lswhf7wUwLHCM/xnpj7r31fe9XluMODqvuYxK7S5YJOKJLoE/A7I51IUnYFsElwp7+07CcNW7B+ZCQsQPBIvclCe3i/WmS8juaVzYW9Bf8Zwv62mFirQmjMBLzWJrX5F4VzLhVk0qT1ceII0E91AHkW0z6lADDt5+CP7oECQGdRBYAxv2JCNxQAQgEgoAAwujwUAAIKAP/oT3DGqU8BYMaZqzPtqQJABYCBrygA1BNAQE8Ao0tCTwABqYCgAPBMP62ZL58CwMw3pwoAFQAqAAwsoABQAWCSOygAVACY+T75yR+RAsDk2y69lowCQGwFcH6kj/0sx1GtIeQGbyy9Kj6WcVuYn/aAYd5eVLHGP2ttoAkFYAMq0PuT8AF6X8ft9G7+GqGzJaSxzF2Cu8KyZ0isyu6b8HKQnylksK8Lnl0VjkMMCAZPdw50O+BpX6HUFusT1beKP6sMx2i1xVggzMzncQ26MiaWGqsh1J67yjI3cQgepbammj9TupDQy9trmJOGWu18/uUcRtpW5bjDENp8ZhP3+9qFzFNaZbZRX+xyr4doanmOmMtkn2QOmTS/82B6PHUx8uetPTxfcb5hrmLXW7joduFXayzr/hUGB6etYZwue/SxNZ3akn+M0HQEy68BTFGDHcB+N6JyR6rvH/Cxt3tjEL3LL4TnuoK1KaUf3gOO293gpNfRPLS7ANX92CXMZztLrOsBdw5mIwoNvHcERa3OV4GN7hDrds0+9ouZgtvItEiYqWs4fyO/fsxCEYNY8Fgb/8K+cHAN81rBFEBM2yK4jK0CLuMX3NbGVRyfunIi821PrBZEvZuFZiG+iI9rSyS8u3+YpQ007yS4ieewH53gsOl4PZcYR+1gHMtYuHSm5f3qTjOf+jId3Fbz5aIvgcZg1c7Lqez7z4oA4TGJwSOngIQoPVx1AMXWlpZJBYBpaf2UaVsBoLOrAsCIdykABBQAAgoAY5utAkAoAEyZD29GrFUBYEactdP3WQGgAsC4hygAVADonEEBoALApE1BAWDm++gnd0QKAJNrufRbLgIAVySWRu480evXSkM/pd4O6MnHYzdhSfz9tX9azyPj2zK0nOKlJVzGqYavWC4R4dregQ/VVGoyX8+MaMNNfWcfoz8MfJivxDqO5KvscUO7/uYs2MXiyncZX3vYS/nubvCXHDJtirwrClr6tDrL6MwRt8eTLEu1vIDg2hVAUeMi+vnH7uP7HNM7kIHpz+MYeBFfST5u2rPNUJrSfWrx9c3q5b6+y/ztfKTMBSc5pN1wcEi7rkLRxLhgn+GTl5PPHfZtjbTsV1sNx+qz49kZzAKuO3GuD/PnWjlwlguDHX1KtOFwbGYyS2I8B75GP88y9aD1+TOo43uP+X4fD8LyuUzVhHTRt+ZiHjQrs/wqpNrQ63nue6wf68szcwAIrlUjmXyUskhy8Fj22Rm4i/rysfE2Ajik42Jxd10XLG/TxP6D6prdgI/OHn9TrNXRwVrtwroi1W0RqquFqUvpB8Jwke5N87W8PtoGV8BLhM+xWs2v7I3yfP186iBfP2fL/xK31dn74SccVRGlxfX+uZXF1WhtXqtPjXVRPv1Twfi5Xmx5bxtlWAILlwlpI7G2si0IYu8BaFXwFWqrvvFXzI2E5FWuu0W/t4q9coUIG/iZCBsYUEMWfstXvvX785Uw4vNzJHb7q1fAvGGkbUoBYNraPyVaVwDouFsKACO+pQDQxVBUAKgAMLrVKgAEFACmxGc3Y9apADBjztvpeq0AUAFg3D8UACoAjDqDngAqAIx6ggLAzPfRT+6IFAAm13Lpt5wCQAWACgCD9akngAoAk9xBTwAVAKbfT3fq90wBYOrbPKVbjP4IZGUikDsaCm5vRZ7m7pa5XlPD19OZr7blLg57VtqI2FctOcwZmJYEBNQvGXrMdGCtj9zHfiTbHL2TpSuGCjmPR4szl6X8di/LsPH2KlSX3SRcXUiFvCD4Pu0q8jS9vM7zxlobDqtlVwsO327BsXmE26735Vyq/GWw9E7hxw7H3x8czELO+T//gcr2LcN19xeSNNgo5ifg79gagvszn6VxbBnm3ZkOPK75nWtTXxpezNogJghp1/BnJrAdBpOaVpodVJeMovXCceYj5lzhs5sGghf2qxXmJJH8k/sYt310FvvZw609P2uUeZD9aB0T9cyFPB97ijDHrLBhrhxwh+id59/amSwN8lqz+pT3jl0LKT2wmOCDThpG76e39fPbHMwZu9HyXC2dKGK9iSiLVqwX83cehnkzmIMdgge2uxrb8BT79Lhi7P/3nGQ5m0+y/xwvX11EGjPVxVpbLdZ5L+5n01IcGq40fEhBl/PJQ14eJ9tI4VeCHo0FzGn+ErxXlhjG5bt18zzk4VcJ/SARns2OE2tzn+gLR8CDPSHyT/Vr2RbgdTx1XxNea32Zsxwod0XyNf072+w9XBcvv+cOlsYx/xTzcVe0X0d+AhKidEuVgfnV/pR2f1AAmHa2T6mWFQACUAAYcy8FgE41UAGgAsAomFEACAWAKfXpzXj1KgDMeHP233qsAFABoPcRBYAKAN0PaxUAKgCM7QoKAP/bJzTrvFcAmPnmWgGgAkAFgLSu9QRQAWDUIfQEEHoCmPm++ckekQLAZJsu3Rb8lRC03SBCLwl9MZPL8zbm12ReV6OzOZSYfZBd5uFRQs+qmOA8Zfd2GrCd9QcfH86cJXTfTkYdKOQ7+tzE/JIB74j6Kvj69m7kfl5+Yg/VffjWwjyBQurK1GZu0EzrNQebvbWAypoGzJHpZDm0WL/sXHl+jnQFK6TksuUP6usjSE/juduNv51Gf/g7OMRXhcTN9D5H3sXx9HSwHtvH9nHKO9g8IZyc9STR/Qp6bwsJHlL3YKA3sXaiPV/kLSc4TgM978s1Yl9iHlOt1p4Pt/wb5sqZ2lzX859xW/eLkGp7wVy6QrOD8kKeDZ+xSeyLXPe4p/j9DMu8veloThkKV/B8z3s3jKN3k9czJxD1uO6P97FW3FpwyMFa+Ge8QMk67P+2Ifc7bwd+X/wc5mQ2M9dS432Edt/au7wvHI2FoEwqUPP1D3i93MF8RPsaC9WZO8QCGeZ9x94h/KYErz1kF+vlF44zV8iWp77sNWIzHOh17exabqv2axwy7VXDvMmC7EY493GOn/dDFa/LWGnLu9SPj67iuIuT1vkQgS7jHsPr/E3L+/Jrglt6IzzHMy+8j7m6VhkOYYeJvD99cB+H86xyx0bq69rXfbIymJhtpzBZ1LRKCl/o4nhG+MjKAUxH0EEBYDqajD+oKwoA3Q9fFABG3EkBIKAAEFAAGN1dFQAqAPyDvrOZohoFgJliGmkQCgAVAMYdQgGgAkDnDAoAFQAmbQp6Apj5PvrJHZECwORaLv2WUwCoAFABYLA+9QRQAWCSO+gJoJ4Apt9Pd+r3TAFg6ts8pVuMAMBWiU8hR56o3tYkw1pNAHOmsu31nJxThZiPY19jFxl9O+ux1TGsKViumuByFffDtf8S/J26QjPqoHi/WdT1tsjfPBvZcmhAHerJFBkcv57z5s75NM/DAhFXWMRAxm7HYYk+c4s0prKVjOfVuRdLZazZNhxrFpOHUvmBeJTS063nTG2Ydg29M1cLm2QXNhnI45z3EvP8bjMBgafaeWyD1awHNtSynlvP/mMof7++zB3qW48JcAsW+eDBjQyXRSfmDy4cI2KKmrbUlozN3CqIXWtH8ZjBtFSYF4XNGn5Cde+311O6wISj8fQBwXmVi7d44n7607EvLuS5FBqcOS3Phwl851YOYYy2l7LN6ogY0gm2JrV18zeBOCKAWy7y8/n+yaqU91Bljs+7Zx1rIzYHC9OtmHMzla/Z5G1Kr6jg39+/gUU1n9/UmfLaprzO829kPb3RZ3H+VmZCvHx9y2PcB9ZwnI67qS0Zf3xwaxYq7XXVSJ7SgPNpG4vPI1P6YJkqh2z5mde30LLWX8VAFDUHWPN0hvH7i+vQA4XEuq4i9sbv+P0H73JnOsPPwQI0oDHmq8VtzVrOm12zN5jjvOJW3oNqGR+A2W4WnL8JYq1NjDVtjwDHIxqaygGUm0gaphUApqHxU6hpBYAAFABGvUsBIBQAAlAAGF0PCgABBYAp9OXNgNUqAMyAk/ZfuqwAUAFg3EUUACoAdM6gAFABYNKmoAAw8330kzsiBYDJtVz6LacAUAGgAsBgfeoVsALAJHfQE0A9AUy/n+7U75kCwNS3eUq3GP0RyMBEIGc0FjBYLu/X7V8W/OkL5qedfaAj5f/pzyIW6jd76X3Ow2dTel9ur0GYpxpru+VdydpjiQ2FXuESFvBtKThpU95iPuJnt1wSb7useZ/6YZdz3eZR5qpMWcWCbwWxj8r3CWLsfnAtc68S1/EySvhR8HfaC/7OpeJ9Xn4/Jwi3XM3mo34UmXaI0uZfkt8mppfphbDVfFtmYjQ4p39EPNjdzAd9vijHcL2/C7f98Sgex5UTg/e1RD8vY31CTBSaglOEzUpx+cde8MFoBz/EeoX2U7GtsSwjpJ7ei6OYN/YF/IJ4FzXIQivNBkpvts9Quky7nZQ+KEw87Zf76P1Dxsdl3WE5Ju4xoadXvs42KrtmCY9zo+SemiFB/oCM6zaIc5g32eAE81hX1q/Dbb3NbVXGAXo/GhfE0wWFV02zHNu3HhZRjo6TX6Z0xdarKP2x+Xc8Xd/yOBaWErGVmcqIU4u439nyc/xx24j3s4pv+LY/foxjGN89+EXq1/iTHBc9z3je35Y9yNqJtbe958vP5X5N6cb7TysjgqovZ53Ae2uyZuTfwHzRSi97zc6D94p44pM4fvXc+1hg8jbDHED7KmtwItB2HdyM+9lnn4937AZ7qtCk2Jgd7zDCGVYOoFgfaZlUAJiW1k+ZthUAAlAAGHMuBYCAAkAACgDdilAACORXAJgyX94MWKsCwAw4af+lywoAFQB6F1EAqAAw4g0KABUARrcFBYCZ76Of3BEpAEyu5dJvOQWACgAVAIbrU08AFQDG/EFPABUApt9Pd+r3TAFg6ts8pVuMAMA95wF5YrP73THmkRX9nAWtCl3uBchGCc3A5kLXz84T3KyCgtvF0nGYUsvnb8nUnxglJDAHU+tg3hNaVx+y1lU2wzEqQ17SFluR7FzqLdYaMw1Yv3ANmE9YGcxtBDyPxr7JvKFWt3Bdy8GadrvLcszWkEPjOllzA2uqPWO8TuMI+xyN4138hdLbnuLYpkbMh72M56v29T6e6bKlrP+1u7aPVeoaecsw37AdN4Vn2PwYaJn/Nt94TiYzMoG/ibogdBvNvcKvBD3UdvPjWlGedcqGCdLrgo7NyGY/DWGb5MjLc32t3RTPfxZOUtnvAz9wL9bWY45gqH3o3jfatoTKJ5Zj7l2e1/xrM4XHfOE0jlM7LrCnK9VkFG8l4wRtrOObQd0NfuLMC5iru7TBdWwjMO+rvplK73vYJG5X9M9hvNnHSnDHzHYeVz/L+pH9rmLeMX4RW2QQPjlnJ/bJEzfx3mYFD/X8iqzTOC4Xc5pbFmTtS7zg237hVo4rXFXY4BXLcbeHG9YSta8KTdVOvu6PeBioJLii+VvxfnUo+/lklC0RKp1/SoP3ILvB72cLyns9zohPGuYblrccQ/oKcMzvmUuZm5pQ3a+XxJwiODmupn59YCPxf3HsyEncmBDh/SoHULh3WiYVAKal9VOmbQWAABQARp1LASCgABAwCgAj60EBoALAlPnsZsxaFQBmzHk7Xa8VACoAjPuHAkAFgM4ZFABGl4QCQAWAme+Tn/wRKQBMvu3Sa0kFgAoAFQAGq1NPABUAJrmDAkAFgOn1w50W/VIAmBZWT9k2IwDQUaqSGCjVpAbbF9yB4995N8g1mvk6A+5jEcHz4eOkulq+E7GAOcow0CjghXUWHKaGlrlx3xnW/buhE/elyRjmIS06zvpVL+fyXJVHMZgGubXRlZS2NYTrz2KbtPqQOTVTJnhOTa/2j1Pmxoa5QFU5PCbMEzyO4ZW57a7FRNtf+banGqFzBh8n2JV6HqIx4VsVLZPtGsATw7698GLOHXCU3Is+fXvR+wGj2aZgah3Qiqszt/hxr+nOYxYUKNTNK7QR6wuu6T38fn8Dz4m6cPQxbniX6Ifwafsk133iQc5/bm7Pl8u2l7lzpwqxpt0uwR0tyiF30XO1j5vqWnkJbaixtkgKlgoM3sl+taU48/BKC+29Vy1rCraYN5d9fGCg+bgm1AQE7Jvi5+FMy0OvDdyXQVPZxzGTbfbQG57HN+Eg6+P9XDSmR5pU5ITkd/J8PLbHazy6IoOq+7ZfCKT03LsldjJ15DYEsa4BtOjPNhnU92HKLzUJ8+K7+PuLjjM39Nzcot8slwd8xjZ5vhsviHZF/P61W/wwqcQB1if8aTZz/JazSXEDuC+XWG786Em/Pg5lv4g6NsgyV7GX4RjeaMn80I5TRlD5cSt8+Tk1ef+5o9pCyjttdTRu+vdHfkbbhLfcfyoHUOzRaZlUAJiW1k+ZthUAAlAAGHUuBYCAUQAIowAwsh4UAAIKAFPmw5sRa1UAmBFn7fR9VgCoADDuIQoAFQA6Z1AAGF0SCgAVAGa+T37yR6QAMPm2S68lIwAwcRaQ57xYF8V9m2nFmgM1rdfY6BdIkLjS8+wgGueIQ3wtaFhBAKaSuCa5zRdfeg9LTdQ2XPdi3EBt1a3Ide1dz+5aaPVvS9DYNsK1/U1bpI1xUXWC+NPxa04fuign/SFfPRfKKPr046hZOCbkIIYV5OsziCtGU070ez23PXTAQ/E/hFeE7o/5avt+uPSHS/mKt0oD1maRoeIO/ODtci4PEef14H6Yd0Q/h/H7KVVF+KpGszlDoICy5QTPh7jJQ2txdTpZ6MZ0OcFhA1ef48N0lb12B7e7mmVF6guqwcIZfK1e9C6mHuy6o/Rvru1Drwm/KMjzYfZ/TGX3gqkHBaXcTe01QX6WLClqwxiNwG7DVst9rAG1NSZ3AUqHAb86iitbc+e7lHey5VBirbdNp/f2A5avQQk20ZHK/towYbqQnBG3zYt3sXROXfMIt1U3em2Y9JjFvr6yVoTiu4FlR2xDQR34QviwVC3BDGqrj/Xz91fDlIdLy4j18RnbCGBujb2lDxVYGLkBjT6VbW56V8A8KXzub7+5liIvVvNrK8JJmoA+Y2eKvfBZLlt7uZeGcm+Wvs8hIU21vlRgfRDaT8pSSQmZ2pNiYfx+OAI8FLnW1itgMdNpmVQAmJbWT5m2FQA6+RMFgBHvUgAIKAAEFADGNlsFgIACwJT58mbAWhUAZsBJ+y9dVgCoADDuIgoAFQA6Z1AAqAAwvikoAMx8X/1kjkgBYDINl46LKQBUAKgAMFigegKoADDuDnoCqCeA6fjjndpdUwCY2hZP+fYiAPDuxOHIkScavmxyvQeo1bGLWD7ioWsDglxr0UFBrwJHKIKMmDbzHeaPNFvstRJMPSH10YPd7+Whd1LjN4HDaBW5ismMZr0PYecK2g89Mcl8LLg/gr8DVudA2Xc+orY/7VKJ0g+P8nzFkdWYBwkRycoM4baXL2SCW83eLOUSKIFEr21L+PL2esFpGu7DlEU7eAX1s0QQxsy9KIh99H7NQU/afCF/O3rX+knmQ2Gg8AWmu8FWFH1bz+PuY72dBrQTEjJCvebI3dxWwo+nTrtSbEXPSTOC52Vf4X4dv4X5a5+ewzb7UYQ9qzF0rW+bVUaAz8ZxvypyaLGD63zIQJcxv3mD8w+rQ+ku3bxdRtZiv3pnBRetu0Nw66qzXMevDBas1QGW5Zwef5YJnf/sxDY7Iirj1QH0HyjWV59wnCH7ELjWXki1tTG1Kf2+4B9O3O85sC5j7QJB+ELDIR7RtCjVZauLTxrTIrG2BQ/sW8vxJ+ubIPTiVPYTtGSrHLQFqbL8bXjcV7+0kt5/9I/q8fT+ezi0W4FNLK9VthxbfPNDzHUcOJbH2V/IyPx8k5fesbmETYT6E1gVBuagmFsRms/+29d3UOx9+bsJx4m5xZGTQEKUaqscwNPubKn7UgFg6to7NVpTAOhAlALAiK8pAAQUAAIKAKNbrwJAAAoAU+M7nCHaUACYIabpd3VSAaACwLjDKABUAOicQQGgAsD4pqAA8Hd9UDNzZgWAmW92FQAqAFQAGKxrPQFUAJjkDnoCqCeAme+Tn/wRKQBMvu3Sa8kIAES1RCB7lAdi+4tpZtkzVGy/Kj6W9ROupXGZDhwSzRbwIdFcRrP/uLCDIIwgu39fKEmYMPqnNXu5X5XB4ZBq2piGVKyG5S040NzUV5tQ2+eaOfF0U8yjd3Y8a4thOHfbbGVdtHlgrbJ9tmW8wPfgceQX4fBajhJ1r2FOzU/zedwjD4sYbEHxHhPGUmVft89H6aLXHqR07iXfUnpvdq/x6F7kqui5dSYn92vOOibm3Xv8Zarr2GTmcg19kLlaPa7ivj6wzht5Nlgz8Ntn+RjiWNuzeBw5OeSa/Xtzel+jvxdjXPk1z9WuoszDG2OZ8DnyIIcD21OQw24t/MX7VauOrG24eBy3VacD87xwlZj7A6fXUgx5lnY8+8UclnREkw9F3Se57k3VuPwVNwb583PZT0Towz9LDcgXRb85ohrWCK5dZYyON9DEso/OqeHXzn/aj0xtsRgvYFKaPT8Yl9AdXS7GccNE0e+2zNuzK3mu375ecAAfX+4NdTPbzPZk+365ktdWScMh7Mpb7uzGx6r4CodwWMsedhs1NvFkW0ofGlaE0nt65qX0FyhJ6crHPYcwZyg1CaBtTdZ8nLie1zFEWEAzgm16diFv05+riTB/XwT82UiPknzBcRwjmpjKAWS3StOUAsA0NX+KNK4AEIACwKhvKQAEFAC6X6MoAIyATwWACgBT5LObMStVAJgx5+10vVYAqAAw7h8KABUARpxBAWDEDAoA9QQw833ykz8iBYDJt116LakAUAGgAsBgdeoJoALAJHdQAKgAML1+uNOiXwoA08LqKdtmFADCcZeiXDVbRoiuidjAuNR3yDwkODQiXiw4hCWEVB/ANDDYOt7FTEmhjzeS9fFqmWfIMpvg4726F92t5/i59EJzCeW3r3nOzZe3Mz+nUO69lHeHoC6Wa8t9yzeegwMfvCjQG2PaEMysQDvMtVKNteHg5b+i83G10M/rxW2/ut0HUG5RmMlXdoJYsiKobo4ezKP8+QImfHayPhjtLYbJPvVZwhFDOUQoek5hxzWbhK7jX0XfAu7RVqG/9pZlLmnnt5hrajqLuisIm10SvB/F4pS2WTHq6M6ZzF0sbkSgYXAMXqz2fjmqanuqq4t5mn2uF3PKTA7Bq+zLa6/JDUFAWFfTVC+uaOcyd/GI0FRL+FGsTTCPDNOZa7f5ruLxvpbpvpP6PVTQ7h4tc3qu4qlrhf2fEL7QLigvtBP7Pc1+9n/mKSpcYrZoW+hNVr/nnXj+fx2qS2VXiJPNWrdzv86fwnN7LDf7wg/HeFzDg/2tt+BFVh0a8AMBfAfm4W2pxxqF5gEeV4/G/eOdkzG+SzVgHw7jBrtCt4D9Zg3YryrPFTYMJFS/FJqBl4bcUFe5sOGImbx/dTMcC7iH9WraQ2sxv9bUF+v2UNS+R34EEqI0UeUApuz3/3fVrgDwd5krQ2RWAAhAAWDUVxUAAgoAAQWA0fWgABBQAJghvuOp0kkFgKli5lRtRAGgAsC4wykAVADonEEBoALApE1BAWCqfo/TdWMKANP19CSrcwoAFQAqAAyWjp4AKgBMcgc9AdQTwGR9VTNpIQWAmW9iowDwzUQgV0yjqdYnNErbPqLHFH/MhCHx/7bzHuV3lwtOR0vBBZosuCdd2KD2E5//U0G1ukJwzsx8rus5cFtjLGtMyfiY947xcVpffpN5LKUafEwd22q+YZvcLniSkssYcCFNEDrZVWJ6vkR19bFbKP0nw3Fwu4E1B2daDqjZrI2Pn/yp4FOVk/Fgi8uorRw/eaHl2LX12wU8polsT9tZiKwxnRCtXmKe3gU4QOMcdcNjbNMwJi/LmkWZQOEjYraaKsKvWo/guot5glyOddzRGvn/RXmXvdmQ2+KwuJizmee+2T4vLnfyJJNei1+0meraaUR83vV/5rZEzOkbX/dz6zJ2Nn4R/MPyZE8/xIG5m+fj9zMu5vcm4TQxXEWMbztVbP2dudvmEVHXYbb/Duv3DFdyDy6KV/AvoaHZ80nWnZvSh9v+3LLfDHzIx92OVDr2e78/VcxFHd2+nvu9QbjVrSwnCdPin5zjslrsVwUDzvI2tkHjPdMo73ng2L/TCv+V697L62sK/PpqyXRNNJ3CBNt1QlDyS8M6gc9bFkBs14b5oJVe8nvMPYa1K7uuE3M9Q8y10A2c+049KnDb2Yvi6dW/8FyesNdQ3lqjY3zbE0eARyOLXjmAwkfTMqknxMIzAAAgAElEQVQAMC2tnzJtKwAEoAAw6lwKAAEFgAAUAEbWgwJAQAFgynx4M2KtCgAz4qydvs8KABUAxj1EAaACwIgzKABUABjbFRQAZr6PfnJHpAAwuZZLv+UUACoAVAAYrE89AVQAmOQOegKoJ4Dp99Od+j1TAJj6Nk/pFmM/AtkFIMYBvIzjNVoRx9PsDjggTOuCLcsusp1pMLj0bh7Oz0w5w40JQczWTXUo85RyHB/2UBDL12Xs3JS5KZ1msX7YWMPEscV2Urz+Oos5Ruu3dZnLNR9MQPzrN2JgTA3CwC0B5ww/0jh6rGDCoPmF+72qNuuDvSk0vAbu9PpgruLFxXPE669bjevqt4o11fqZO3gCLmBtxRu/Zc7ZsmYBH45fIdHyXOcRp0Zjx99HbT1kmOBWynJc4q39A66poOGNrsxt/e1JHobp7fzXP8PB2n7dEHC5bhY8Lqmz+GfBcSrPbZ0qLPqSz3MyxzRge5tsoq4FP3Nllc/m9JpPKX2j/ZLSy4wfZyfr4qX6Z+zLQoiO6bk4flRwZIW25aPNg77eJLYdEWcYIoT3nDFCv/BPrENnZ3Dbb9f14pj1DevlSa29c0W8Xrtf8IrvFDauGPDbLhBxhQeKTxi7IExVrmtSbRak/Kvc0ALNTnMHl90zhnX/CovYv/Z6Fm40N3D54QMeiE9CPXgenfuj3BN6Xsq8SexgDVT7Ku+d5n5hs42BX+5mn9xyPa+lUtNYg/AZodnZuTXXvXiytzkzYoFSws1uKRQre+oIsF85gCn98f+99SsA/L0WS//5FQACUAAYdVQFgIBRAAgoAIysBwWAgALA9P8RT60eKgBMLUunXjsKABUAxr1NAaACwIgzKABUABjbFRQApt7HOL23pAAwvc/Q7+9fDAC6WE/R0FLV7WVUy4YfK1A6MbcPm1b+5w/p3Qh0pXTd91nCxK4X1zcdOGzQHPtBvPxhETqpND6numsUY9kE7GZ5lEtsY8q/8/MybJ0gnNX9lsPKnYWTlPe5qXxdU7ol60lsuUqEdVrvtRGutHztd7kYxzh0oLby9eTYVuYVcV3Th4ex+EEv21BnI19ljyjP8jYFRBizluv5qshcJdoKXOHYxrOo4T8d+47Sm/KXo3Tpf/C1LDjaHnbX5phSRUr7mINTtzShurqCZUXOg5f6cBlbgPU7Bs8TscfC69DPxCIREj4Yxe/zfcZh/iqfxboXi5/1ftbpQaYdjFkvroT7s33nvi4kMx7nqz4IiQ0KpRhEG4z0eAffiy8GO0qDAyx/82z+B2mgVY2/Oi15Ihu9y52TZZCwsiC9t2+IdS2uvu3b4tMRNG3a8SDn2Mep7u/NQkq33MfzM60Ar/PKZl48Q2lE44klPQfOYv0a8wvHrpwg1mJlMQF1J/F+9lxbP66jthO11XMTX8vaJ9kGj7/KcjYD3mL5p5+v99XluE2sSxEuErzsIa/ohStgTj2+sr+jnbfxXS+wfNBosM0K1zhM45z87l2Ubh34UeTFMH+lfLwv2+CGY3z9/zLujRQ5duQUqiRE9g+VgRHbVVomFQCmpfVTpm0FgAAUAEadSwEgoAAQUAAYXQ8KAAEFgCnz4c2ItSoAzIizdvo+KwBUABj3EAWACgCdMygAVACYtCkoAMx8H/3kjuj/2fvyeJ+q/f33MstwXDKFTJExcygukWOepbhcZMpU6sg8ZgiRMbPruESJjBHCcZFZFBEJkTFyDJmt32t99jmftZ53Xd86vz7nc8657/1Prc9eew3v9V57P/Z+zvMIAIxp5OLudQIABQAKAHT3p3wCFgAYlQ/yBlDeAMbdR3fsj0wAYOzHPNA9egAwfSRRIk/+ZfYl/Lv+vIS2QsuogX9MOQh5XmFFp8B4txzElKnIrODOtEIe2GKycgVc+uB7ygtt112yAcopXrQcMnOidwhyAgsRSmycdqRCLhBymq5TGmh7yjbkANIOXJYcYWjndkat9FcYqpE/1SmJ4Vva4/HNzD4vFcbs2xLYV3HG5Xo/g+VddpuLvnPHW2WFi/MeOAdl3ZNxt75kY9ltz5ctgHydXczWTP8UCm33egJlX/5J/4bzhY+gxEm7ApYz1ZGmQ92uhES9jxRKueQhjKmOYOt1zDanHjC5jo4o15GlHnLlsq7A/D9/CmUxaLAjm8HyYs8RjO8+jbIk7VegJZeqj5ZpKa62hzjMT2f3y35miTZ0BHLIhvfDvOnfHef98yQcWwYnRpdyowzSDXUDGsvNpHHS7EDfxhuDM2LnjH7bva0d63iFOdpMP4Rr+V5cObopto2UWXK38g8dkXia78L3cO3DYWgVp79l+4HJpWgWM7VtmL+9dfpzaLv25c+gfCc/+hkm4txexk1d3MOOpckRZnv5NGouce7igeMo76SnIqdzFG4XWq7tvfTLelVh3Gol2mKu08gd3UQvQP0xl9E7cUgGy/Pm9+AGCvme9EUUufHmNaL6IgODiR78kgDA4K/BXz0CAYBEJADQSyslAJAEABIJAIzaDwIASQDgX/3Ijb/tCQCMv2v330YuAFAAoD83BACSAEASABi9IbhgsrwBJJI3gAkPBPzRGQkA/KORij/1BAAKABQA6OxXeQMoAFAAoN0Q8gYw/jzMAz1SAYCBjnDst+8BwMMXiNJ4HMA92T09wOijFLNvUy8zTSqnrh6HKRKxGSf0AqF3XFON/mIf97LcFjUauUBd9XvQ2OSKzPoKKWc0qWo7qH9XWes3cwLswT5CTtn5V3AeX2lrXWWurdkN+XC6IdafWcVyvSbS6zCOgynLQFl/zbYVOsfRGZRhpDCNOl2LVEPb3nxm4/cC4zRlw7VLdB79wB7UR+7XzJ226fbMx4lz6agI6rVRupo4z004llGM29jLmcb6pZg31VCKjNQE5OnphsivmvqppycWfXRW1spPb0VbLMI0IcKlpkPT8kBbue6chPLi5La91j/NhXNtsyEns5TqBuc7MS7d7m/wh+cvb4P6TTIs9pcXlngVzi34ynJzzYlOd6bB+ciuyIfLMhM5mOcmWI5t9TeWwbVrK2Pb70egvuRbjdDTUb3LuKRtce0/2Wq9/poOsHxZX6ftmF1eHbQmu7EH9Sgfv30Jxno7nWP7Vxr1JHftxs3kco5NI62YXeFMPQLaHpetL5S3OvTeik+x+yJKDBIxq8Q+YQOhrRHZhkJZ/eq0hzRVmnGiJdRNSbeg3GIF6nvOrYe8ydY1P4b6qRfbGBZKhVzpNVQD6q6m2lB+m1D78lwF5Gqrus48ep+AaxOdR3vOQpm9vh9cu0GHQ6qY/xUdQIhYcAsCAIMb/9/r3Twqzd3ZGOd+EVXBoBmjnGuo10Y21exQ5rrrb0oAoAmFAEDvxisAUAAgEQkA9O6PAgCJBADGvYd+sEYkADBYkf/9fv9JRP8gIvPnl9EAMCeR789dzeuxmURUnohWkPfvT/ZexdeoAEABgP7sEgBIAgAFAPr3gwBAAYBx65Ef3NEIAAxu/N3ejRHUl8a5jYhOOQDQ/M29eSPofmAbR0TPEBH+fb/XmgBAAYACAN2dJZ+A5Q1gVD4IABQAGHce+cEfiQDA4K+BGYFZB2MaaghBM4jIkCyi3wCat3xGlKujM1Qj7GeE1NL/zvA9ANg/kiiFxx/TtRlvbC7j89R0zj+BLX5eBJ+e1a8gCfBOcqyfsg62HfL5eX8FzlnSQ3BcdZ9YBI0NIfQVrnJnI5zPkRw1C7/Z+Kz/vEqF49hQ9jm49gIhV6X5x8iRoleQl0elLeHn2d0YgzlMw67QSxiTHouQCzS2PDP/3YFjLaKtl+pzvn8T2GP65u5QVi3w2v2n88P54qcOQVnfSuYvny+APLsStA/qJqe7UD6lmPiblUzz1avSD/mfG5XlI6a+4eP/+I99qUpCuQah5trxi8idU5kZH8uxbu5QDP1hfxOjysgvHKrRV3hAxjG4YK/Yoi7CbpEoRUnqBOZoJ42czcTMxHVSD/QSbj3G6my2U51hHMhMJGrBBK3VRxiTYttRtNDN8fMvIe9Rt2f3hDdYfBm/DTyLzb9S16+Hsf7nitWM3IxSoFS5NIZ3KvND7ryH3Y82sLH1suf1Ajx3Dy1wKQlafpNCS29Sm5CHrN9GPT31D6ev/mwcw1iMmBe2I3nqm3C+c6i3d6x9MX8gus5Ent1kZT70OHn3o5OE5gFxl427CRv3ftwDdNLhdO5BziU1YZxMQs9peoWRr5EeTfvP2XtMsTKO2KQZ50GMUddb3jzvXrtNM0J8e0U4gLgdgloSABjU8Ps7N3d+Q5k3oM8cLgA0ip7mluk+OQwb3zCtk/zO8AUAmhuRAEBfaggAJFICAEkAoHenFABIJAAwbjz048IoBAAGfxXMn1htJaJyUZ9+OQCUN4BRayRvAInkDWBUMsgbQJI3gETyBjAK2MobwOA/yePhCAQABn/RzMcW89n3mjMU8xHFlM3f9v9ERPWJyP1mZv4i2HxP+O8cwLJdiBJ7n/s+/8c4qu58AVXyCZjkEzCRfAL2dpx8AiZS8gnYe0Mon4DpL/sE/GAtFevq8UQe3n1A33yw3fyvfAIOPubwj0AAYPAX47Hf4fIZcptR61tH5DOxNYptxgzVCN8ZU0jz+deIhn363z4BfxOZgdKk9XgiPQn19hopJPic0l39zaSh69Bkp82og7YX5fUInTiJXqEtbEjmb1WijmVM0+5LxrF5lnFs7LB8DejpWH9IPdQN7EYT/V2lP4GGoprxkBJdQU5NRo18whz0I8xj39goT8vfGQfnp53bgiJfVxRy0AoxLtc1pIVRWoeHqepjTG4NwxikQFk5IhYzX9Y4h3L9YxnVR1dltwPmPbt5reVYmiYrZ3REBc0PP6MWWSdt/u3iHS/7/i1jj8pZ2bWv4ThvvodjSYnLQeq+ra9ysrxhbdF45DwNIsuDNK0M6c84aK/avvvmRm/T3g/Q2zdtL2x7K/NkrXkDPXX3pUbu6Uva91D0HQeGmI8A9nh2EHJNGxDyVPuqQlB/rzZ/G2aP2mQ5me/5RASc+CvUlauinVeqRPQU8wvvQciTrJoUuald71lO22TOFS1dDxcX5QxpU2lc6xfI0f0joimOTmbnpIyby3P4n+yewvx5NzFe30KNm3FGQUegkvn1En2I86iBPtCL1lhtSlOxaRvUQ9ShdmwHmuWDtvozHt7Ki6jzNxGtzemmRi5wnz3spuKmHUr10UR2j2h9HzmCabdiTj9XCT3atxe0fF6dmt0zlmOI1L0oHvH1a0RFHzcnBQBiiIJaEgAY1PD/185dDqCpZGCXubu7OoCWPY7N+DiAAgAFAPrSQgAgCQAkEgDo3SQFAJIAwLj5zA/KqAQABiXsAe1UAKB5pSpvAL0kEwAoAJAEAEbfcQUACgAM6NM3njUuADCeLdgfGK4AQAGANk0EAAoAFADo3w8CAAUA/oFn6P9MFQGACW+pfQDQqEJFOwB3oDkwy7tX20D5XjZbfP8GIoZkhEa2vWZPwojVwE+t57KhOFaaO5ZTmDoFkn908Q7QlsryaA6gT/nQPRivb8pQy23s9AlyF9Uzj2675/oh0PToDajvRj2c04yGRMXNH3HbI9F5NMVdkAX9eF8ZycaC1C/aUqmUv7GaN1Efr2WqedDXUwrXK4xQewz/tshcGu0uSKTX4px/CMW1y6uQLPQwPeoXJrrCPaQZl265o1X2ES7d5gWMT5gDOYFHz+Ct6SmmeJnoitNgi5ehcf0Ou619gH1fGYOmrl8SakS63qhTFY4zo34SGhvO9NvaG68e92C6dJM7toXTcxxD2b1tKuJ+CEfuKA1DDu32fihyV179m+Wh9XB9GJEKzqWug3677zNuYnukt9He+WzrNcC1Dl1qyV9rs6HPMGHKEvdqXsM4akm05duaXkPVv+x+0N/AQCozvmAvhdy6LYSm01M0+ocvVKi319PxJ/8nYTy5VuXnzFO3cHP0Yl6+wGojmkE3cLzLde4cMI+9LAal2bx+TvwC1J/F8qq3TznMOVzJzlV4buRTqCE4WR+FS09XRy3Rmyuw/n9SWP50LdbvDJ+krT2iWcDmKRLFnhUOILtFBLMoADCY0Q9M3wIAiUgAYHRyuX9cbn4TACgAkEgAoLc/BAASCQAMzIM4PrQqADA+rNKfG6MAQAGATsYIACR5A0jyBtDbEvIGkEjeAP65B2pCri0AMOGtrgBAAYACAN19LQBQAGBUPggAFACY8B75MZ+RAMCYxy6uXukDgJGbiNJGUc9UGUbAego5U/SzMxWk9JFezlIEbVRpKtOhS6eNZrU9XD5VQzKmJvZovHM1xrAckuvWEXIVQxmX8QA7n11bbtfHhHNspJATmJnryj2JPBjaj1wi3cWJA4uBqoocm70a9dlKzf0W5vlsK9R326XQb3m8trbP3dV0uFbPxPWY2R5D+DPTB+ubFbXhUn9vuV+JmXFq5DBmbjoMiUl6OfrJpqt+Djq/OiorlNVXNi7LllaHcw2mG+tre+gVzON1Ac7rbgrkIXVJbgmh4avRQze8Nl7bhtAjt6BG3bOt9DxccN0nvekduQ6hjh+hXJ7nyO3OYwzO4xqTan/q9imof3GQ9YBV32IeTfqkHdTt+g7y1+gs9k3Mg7fbcGtcfJX+BpXnT8DEWfYGrk/9RkaC1B6XV2Bfs+8jP7SqsoEozThnVAfF+vRXyD3lhpaqqHtDIhpEPv043zF4N45DDWfct2V4D9G78R5ypDR67uZNh+tx9mpGu/YlcO11DlzbYyjzR/lPone2noJ6k+1GWf707J1MjI/xgEcyLt1hjapfwwn5uGcJTdwvO8lQswSa+bp6hGayaQbiPG+ct/E2588zzmBmZ+tWDcUgbFRXYYHKa29c96/dpN0hPj1I4QCybRvMogDAYEY/MH0LAPRZqAgANOklAJBIACCRAEDvZisAkEgAYGAevPGxVQGA8XHVHj1mAYACAP0ZIgBQAKBJBgGAAgCjbwoCABPeQz+mMxIAGNPIxd3rfACwWOTnlDitJ/3APxfUVPhJgBznsv6/9IWZtWGfXfNuwM9+G6qihEbVD9Ei6kaTxP727iTHTyIZFHeyw88zy/SbMJb6B/GzFO3BRRjQuo//h6Hd38WTTDJmSAu0xpr44HWofyUJ6l7k0zX854/WRvmNTz6rA9fWvWktuMyJlHvYZ6rKZ6D+AUJJiILOV5Rk6VDCZ7A2roD2GKwKsky0ny/NCd2wCZyv+KmN4Zb9KFMxEdVr6I0zt+DaJdkaQTmbWgPlC2wkNZ15JEVlCVL/ZJIxp/BWNPUTbKyENtbX9ihf0X6LPb0Vr83BLbxQ6YMKfrUP2jqs1kNZF+lty7NwHEXL7oIfPiJs/Pk7yImIZNJHRC9iX2FW+kWVwJhsaYHzuqqtBZdppK7CT9/0Pa5P07xWxmSRws+TRP/AcfyIMjEDcti9ZCqOiXR1kIg+TYffm2vWss1l+gw/q16qiNI5ugl77GDXtIbRGmo601bvs7xZwNpC1Sqab/SwnKMesz0LaY1xGT/P0i+KEkrOfKesbZ9pMolGrZz2ZZhWjhMTUz/DQLvvr/6MdpEP3kepqJR9L8O4b98wjqH24HuRy+FkaGj37sP/YIx2XmZ7KSXjNdzei7nRAm+eriRQaTrEdj3jIVC0fpP5YzSxgmPBCnpRAGDQl+AvH4AAQCISAOjllQBAMgbVcAgANOEQAGiiIACQqLwAwL/8IRxfGhQAGF9W6o+PUwCgAEB/tggAFABokkHeAHpbQt4AEskbwD/+ME3oNQUAJrwVFgAoAFAAoLuv5Q2gAMCofBAAKAAw4T3yYz4jAYAxj11cvdIHAKl2JFHSKOsoJo1A06xlmu8z4VmbBuod9G1qqtFz6OMTeO3c3E0hDq0LfgzlGUds2x2WMf7OPky/lkNmwLXzsyIZSE/H+qo+jvUQtfRfXwipjDRxBC7X6wPZ8h3DMrdxSkz3/RXG0NtQeXNGyw/0xXMwG+eLjAPIeGWRk7B+2oW2edVoEw6sd2Usj0Su0EeOZIap+DK61NGl5y3XKJO6Am1tIuRovvA5jvvuyzjO01dRNob/oUEOOu1vP+M7N3DcXJ+a8TlzRDB7qoOMROhK8SRna4nuX5S39EGo8MPHhaE89hWcVxjdtAD6CUZQG499qSfZ2to08VWs/7yzmES0/M1m0MCO8bbvcpy7WAA5Zc9q5Iruehvlg/a/hzEqntuJ4UnmUReBe6tVpakwriU3kTv6birkBHYrwZJ4/682Zl1YzFChhPRYjOGcyxiTtjWZBpCTG3oi21vNUeJnl0bpnJ1UFjpzc9KcaJAb5YhanLBxmneMWVUymR5qgFxeWpwd+srXGG0Zj21zuHdMboteZJJLP6HkEjE1ogHFcT2eVsh5PqutzEw4k8s6vLMkjDNPWeTxjSSHA0tERxVymvs3cXIeqYxEszgTOPoGZPLjn6ZfkYFht6tgFgUABjP6gelbACARCQD0kksAIAkANIkgANC3HwQAEgkADMyDNz62KgAwPq7ao8csAFAAoD9DBAAKAPQlgwBAAYBRdwUBgAnvoR/TGQkAjGnk4u51AgAFAAoAdPanfAIWABidDvIGUN4Axt1Hd+yPTABg7Mc80D3+Rgj6UGnkkxQ5dQTHkMu1T0JuUOob1jrMXHQ9Tya4Vv0bOVAHq+eF80XaH7flJGzqr2FZH2X8nnWcO4d8t/IaOTbf01P+Bj8n5OU99eB76OztxO9BeVqG7lBOtAD7Plw9l/98wUMnceBF0OqN9qMV3IhiqGfYJz8SyVRe7Ct0zXJ/++vGorXeuh4Yo5QspBXbYVttZ6JX2axG3fxXnP/U0HHskaVqJJQnbEAO1BuZkaPJbdBUIsbxfMaOdX6+xtB2S4XxpsUVcCZNkBN1mdnrZWhvdc50M4zJp1VqQluutZs50Vrhed0C7cKGzLMakYOXWzs1c214fXSYad0eOa8pxiCvcirTyzugkYy6gnz2WL7jZcK26quhMI+yKDtHDeYhV27ZhOa4N7svtuU6GP8ZKy1f1lTKxEhmvxJmVvOsy6BtnRRjftuRp0yZBfNg8Q2sizuRqBejJxLKBhL1sl2r8dh26tJ4f7qR3Vq5mav0h9j3+7U6wTzCPkSLtWL/sJzCA2+iP9swh69pGulPXFsRbej2a7zHFFeWl9dMo+7fwpdehXGt/AQ9BOuc3QjnCz2BWn0nIu39yVRcGmI1IWuWQd3XZ3c/2oqSGM9VX2QwwU0dlFOlziuQ4Dmlaphv3NfuE4X8x/e/wgHEO11QSwIAgxr+gHQuAJCIBAB6uSUAkEgAIBEJAPTtBwGARAIAA/LcjZeNCgCMl8v2yEELABQA6E8QAYACAH3JIABQAGDUXUEAYMJ76Md0RgIAYxq5uHudAEABgAIAnf0pbwAFAEang7wBlDeAcffRHfsjEwAY+zEPdI/eH4F88zNRGk8HcHEu1HdbqZH3Mreu5cW0XYmcsdnKaqKZtkrq52H8+9QzUNbFkVeWbof1Dm6eHDlLUxXy9EZoJAP1qYpklB4bkBM15uwA6HvhE5Yv15+Gw7njg4pAWc1gfLVujCvUl3GF+tiY5XwXOZQnP2F+vEzTjlbjkqfcilzG90KQSNMtn6OxNgavPVgfOZaFw3+ACmeQzkY7Wba5Lq0Tma/wiQw4j3cu47gG9RsNraXsifO4tRd9QNc7NKZqSKUjlRPjv+vlotD2s+oLzKuyqDlITtuVh6MnccRF5Pi9nxmDEEbD8IfF/aB83vGqzZKL5clSdstcik2pd0bCD5H3MUdD9iBvbEs5294Sxg9MxjhmowsOwpgkYWNByUEil3N7lo1zEJvXvxj/Nv8WvGAacjTzdWQadxmtxp1mepGqLvZ1sTr6VY9ySX5ENFahLzeNj9IzNZy+DTjOviswviNO4D1iIpPTq6oZH1ox7p22XLs6g5B3d4/5CifNymLK+LeR3fG+m7bcPf8F63djPKsVRcFOddDygM1FPfVX0Fk6coy2iahPBbxXfr7VakTWTIkcwDq30Gib+72/QTjRM0nzQd9V7lldwI3MB52QKkqpx3scTX3tOt18wnfvEg5goBHAn2hfAOCfCFY8qSoA0EfQFgBo8lUAIJEAQCISAOi7fQsAJBIAGE+e5LEwTAGAsRDkWO5CAKAAQH/KCQAUAOhLBgGAAgCj7goCAGP5iRyHuxMAGIcXJ4ZDEwAoAFAAoLN55A2gAMDodJA3gPIGMIbP1QR5mQDAhLesPgCojp0lFcUBfFiBeXMyv1KgkyAtj+gjNG1trFdAxBavRj2xFbUxoK4qWhvGLdEz0bRVvcl0/46gYabuxFTvUCqL1EnneiZ1qBMxjhPz9dS12VZASTyaPK+tf2JdL86GSX7MOGYv78YYTC3dCn74llAncGIGR+iMiH6+bDXCMo5GD93nem6AtraXqYKd7VkC5Q3MeLU9WZ7l8XeQFzlzIArN1VPoRdtFo/dyM4Vrb5la3hBC9zjrURrHpfOh12zHo8hhmqGQP6WLd8Z5evJivkO1RE6rrsvqsvWBPDH8JIfz52uvqx13lnvIsVyokIP5QnfM2U1MK26+ngTjnl3NasGZExvWP+c/X1Vtg7r9NXITdzFf27UFG0D9xBGYK99ksXlUmBjnry7me/4V+6GtY8rxrTUxWs72B5NxJMeSd30mpunI7rGhBRm/kN9z0HqWQg6e97cQ+ThyQY9fRyLeXioNvX1NyC0d9jdmCs44tsfb2vZu0WPQVuGzmAsq2xw4r3cgAVeVw5tIZHLLj/7uNu69Z6t9A21tWV8KyhUHoO7fxaHIo8zYHtf+0EzLdZxF6I886yaWr89i2q5bWa7sZffOS/b8w2R4rtxl5BvuUn+Pmod5jviMg4UDyPZDMIsCAIMZ/cD0LQDQxFUAoC+7BAASkQBAEgDo3WwFABIJAAzMgzc+tioAMD6u2qPHLABQAKA/QwQACgA0ySAAUClNJ8cAACAASURBVABg9E1BAGDCe+jHdEYCAGMaubh7nQBAAYACAN39KW8ABQBG5YO8AZQ3gHH30R37IxMAGPsxD3SPnhD0DKK0UZQ5XQu7TDSHce1c6bIUWFfPZvyP9Xhtn/cGwgX1CDmC5ZUl9MyhHFC3nM4J5YLqa+x8MbLKRjW2PramYs9GqFmYeKrlwdxMjV6bKVMzH9v96HlMjNO0f1N+GMsDR1QtjXKMT4koH0p4kXK5b6aVHjitlfeYz2cP1Bu74Nhp3tbobZqr/EVobNAOXB+GdejvTPcsf6TlMSU9iOOKYNStykgNIkZBI0a3ovkD0W+2RTaH94eUJiK0DKXi+bbDYPZvKw9lFcFytv8Ze35+dpxIC/Rm1j8VxrbWYFud2r4P56cOectfvtsd45uMra1m/CgKxaEUKo7crW/zsEC49M8LeG2OgUfhh240Ecq9lB2nOXGaUOMuu8NvU0zPkD5ntyGke9IPt3HeuVH+k9S2TdBAyO0C/jLn6Q1iXsCDrUSd75qsEY5fOBE1ZGJyVZUlfDZm46C+OI+KtdbBD1vXVoPy2OrID33rxFTMjTxWp/HGbbwZpi7+AOpqrgnZhcUU6YekJlj9Sb21P1R+83nkJj5HX8L5l/YjMVKVwRzecM9ySc2Feck6Lueqi/cMWsW1AdDbvK1Gf+XZWZG3uvy8zY16KFdIhFVJnY6+7xrvbh/nWziALE2CWRQAGMzoB6ZvAYBEJADQSy4BgEQCAIkEAHr7QQAgkQDAwDx442OrAgDj46o9eswCAAUA+jNEAKAAQJMMAgAFAPpvCvIGMOE99WM4IwGAMQxcHL5MAKAAQAGAzgaVN4ACAKPTQd4AyhvAOPzsjvWhCQCM9ZAHvEMfANwfmYnSpE3k6yyveg86babRj3RhTeuHOeFzTInGOj1cm+0TV9mPSDVFzg1NRs4NOVQ8/RjjEzZlelM/sXRszmKF1rOkubuBwz9R61jbr7O+zzJOGcqHEQ1mfTt0w4KF98HJwwdKYmWUVKNJrVB3q1t7x+vXcBlnDoHrR//Ner7m+wU9Vz+jOlD3V0JtxOJvI2/Mjb/vQmde5wlj8qFG/+MPCRdg78aK0PfcKk2h3HrCx1DWx2z76oOHGKORbK17IwEu0XnkcD7Mgjpn2vEG5l6zWrG1XsrWOhdb28VY1o5GXq0VqF84UiHP8Rm0aKXwEtjWAI3r0Vcht7Szq893BnUvR2V7GxrjnNe5n7L4/w3jP/6Xjv7r2zMObKrvDCfLOaYx8u80PH3rJMY0BdPJpDu2vqrH4s24pqEaiWOc21gnHDmxqo2zQLkw/j1P4N7ZT8Vh4NxPeZTCmBVCe3L6pJndX70JfZ1z0GloO2I6ek6rp9g95w7GbLijkdp/GNat3w+NnJercrgA32PSds2L9/RJq1FLVP3itM+8yQ8xrcrCr7H1eorth5Vsr77krPVBxqedinzaAlH8TZPZUSMUDiC7/QSzKAAwmNEPTN8CAM0nLwGAXnYhjhIAaGIiAJAEAHrbQwAgkQDAwDyI40OrAgDjwyr9uTEKABQAaDNGACApeQNI8gbQ2xLyBpBI3gD+uQdqQq4tADDhra4PANaKnEVJ03pWRmVpF8yyI+H3nQyd7OegUVNRakUrlFrpPZh95qiBKbS+LGqJVNvpaKSgCgzRUgz+KCYh0Mv51GBqqk3Y9+Kfse8mdRwLr5Vo2/QCoUXRQoX2eFl0GRjMuR5o+XVkjJWs6UIYk40KP8sSulURMaurwXPwc82gsaOhb9XD/Wx4D86t1Lg+Jyk3nO+2AT8v56yKliin8lm5DvoePxn21/i5+XVCG7PEhB6CJQm/f548UhDnccCuR+OXUWdkSTW0nSP8+hnlGmWb09fZZ918tm19E89Nxa9p1HkM5s3YMJQCCVOo16G32vOqAsv3l7CvzxehpkmNgpsxqcPZDQYdv4jc6kw25F89m8HF3NJrmkI5oWOsq8af2h9+Rdc+SsQkZ1J8wi5mn233jcG1LbkQpZBUc0tb0J/iZ9kM9RzJnt+53y5JgjI+L0xjMXeoBLQIG0hzGCVOnkuF8ilLU6NdXprjSCW4nhf/hXThpm0/N5M4mV8f+27hbCXf/akA+5S6jGnrkPPJuEAGbMy63fl+13PZo9kZl6+v5j/D9Tr349heElu89iOeCrmD3+/1BmtRZ2omLowxevAyxkjNtRSiDjnRhnHGTrT3pHLRa3/dvG81zcsn4N/ZA8H6SQBgsCIfuH4FABJRFgGAvgwTAEgCAIlIAKB3wxUASCQAMHAP3/jWsgDA+LZi//d4BQAKAPRniQBAAYAmGQQACgCMvikIAPy/H6L/KzUEACa8lRYAKABQAKCzr+UTsADA6HSQN4DyBjDhPfJjPiMBgDGPXVy90gcAKVUkkfKs1MKvvwxjbZ0VuV9dz1kO2peElkL7ZiOnT/+IKVN9yDJoe51i2iwRVlokT6VDUPc/9HcoZ1c9oax394ayKoPyNXt1MThfNNLykqamw+W5pq2dlDkzYIjjk2V+GIxyH4upCTRwypFICauLvBf9JttGT2DfvzKJmVSKcYWQUkhHW9v28rVmaebIbZgzahBrC6mOROg4RcMc3mQr1nTa+0nhl5AkaJ9XTCPp6YB6Burn0Seg/MNma8GWsxLjIqqnWe/I5Zqt34TzrzZHYt+wBXY9W9K/oW6u40hwW5C3IZxvto2Ru5i8UMd64/31p29kHoFsPdRpxlcrwLiK2dn6fIF2h5d1WX9fS1jOtW/OOGTMBm1HF8z/s4SJ53JVzyu0WzvPPOvqaUycH5lt4/mkaDNX5x6SBqc68ipjNdqa9Vbo15alAYtZU7Z/mCINOZS1nW0wbcrRR3jP+PEVvGdMxL4Gv8f4t/2Qf9txuF37GbORzxbaFvNm3fF60NfsvP+Acm2FOVvakQQ6cwr/FF2/mwwntg2L6jzOY82lylChRn7knrq8v1m3Ud7prXBmf9eG+TISSuWs1HinKE3W3jDr8Kswjq4snpMye/G+9pAoxKMtCgeQ3fmCWRQAGMzoB6ZvAYBEJAAwKrkEAJIAQCIBgN5+EABIJAAwMA/e+NiqAMD4uGqPHrMAQAGANkMEAAoAJAGA0RtCAKAAwIT3yI/5jAQAxjx2cfVKAYACAAUAOrtT3gAKABQAaDeEvAGMq4/u2B+XAMDYj3mge/QAIBleh2cTVkmjVlwnhRZGr0Q4mmoZMCU0ypxRol+Ri5LvFmrHHRuOvCRX302XZPyoRsyDi76H2FTRlkNmTnxIqB2X5o7RlrLH4uSWt1eR/gPn8ir0Z7uo0e8oU3tsi77AZdLvO2NHtykipDzRDzNRCPDxFCjylRZlt4gYt0tVctZjLIvZaWxLr8W+5oYye7C3ke9JY6ww3SKNvMeXNq6CSRetgvqRB3eiViKhFBnpTjjW+Y5z1mKNnlvL1XcY4OzovbfuNNrOhU7fgvVdnbrX8NS8IjiOuxr19Np2wrHMm4p8z5bLnbxs8C3br5lZGYXpZmjUoZtIr2NMCYUAFzRv6z9/gukX5mLcxK/SoxZfKYVWZbosCtX13THA33YtNRTGUZHQou64Rj5unuqYZw3WYszGKbQJzFPcuS+gXCRd/CYN9J3vDioWXn0jK5yvOm0llDe8U9dfVmUZp7IG8iRLauTW7W2JeURIBSZVYg70tYksyRANH4nCyGodmot0XdQ7VB1xbFNqI2G083K79zrVR8u0qTvfgnHotZjDoweiSOokllenq6PFoFo3wd/eIUIuY2HGwWTynnR0Ffad/wzaBp7M9qS/7Vw5kLvLNVB1Ka+ta3eJQrxQCweQ3UGCWRQAGMzoB6ZvAYBEJADQS67WAgBJACCRAMCom60AQBIAGJgHb3xsVQBgfFy1R49ZAKAAQH+GCAAkAYAkANC/IQQACgBMeM/8GM9IAGCMQxdnLxQAKABQAKCzPeUNoABAAYB2Q8gbwDj77I71gQkAjPWQB7zDKABoxLM8HUB9FJd5FNJFqLfDCdElGOfseca54bp0TMOO0HqTZmhrQvoZ1YLJLy+D3Kwzu9EfM3tNRoJy/C1983rIxrra6gTqRairpZIx7THFrq0/DMam6+Kfz6rt9vqalxyTVSJas7MRLmo5LOqG2FffTy03y9TMTKhbt5Ssbt0ThLqKCwpazpi59tJh9OnMtJNxGcuhvpse84J/cGokxiTLJfRPPq9Q+42YJB4xi1e9l/FHHf02tRpj8i2LUSFMDVKj2Xq9xdbrSXv+wCw89wxSXqniD+ug8y3tQ6HMJO1otDPu/swLmLYi5yynRpHH4swfmXMd9xDyxkqTnccMwnmkZ7eKJsQ4f11QJ/PrD/CCZ5yhPbd7A5zcrhJh5QaoK1dk6W44f5DV12Nw3qXCLEdz3yjUDqXeE6GtkroklPf9jdW/upPN3PEd7o03oMbv4nq8q9D0OJ+V9fO1qbqjtiVlb4/7/j92DXbkRj5z+Q3II+5aFTUE0xB66F6kTNB2VYdY3KwfagqqEQ9xzoyHN6MO5kb7LlhdbcD9UvCwZTAezo3xpi+wbrO8yINc2OlVjMlWBhMcCcgTSEul3CjlSpejJAava6Lc3hSFAxhwCPDHOxAA+MdjFV9qCgA04FAAoJevAgAFABKRAEBvOwgAJBIAGF8e5YEfpwDAwMc4tnsQACgA0OacAEABgAIA/ftBAKAAwNh+IMfl/gQAxuXVidnYBAAKABQA6Owd+QQsbwCj00EAoADAmD1WE+ZVAgAT3rr6AODnRJQqam4VaQ9yOhh/R/Ww3KJQ5ve6bhtqi+lMLGVuYgBHlcByb3L4V49Xg5Pcz7LmZmZkWxn5PW01+k6+TKhxN46sf2xd1Rj66kzIbxusp8H508z79E0aB+eLgJcqanitZuJio/QauHbzthpQ7vo8cofKKuZPqq3I3fGiRTCgVVnCMk3CWq1R2291GYxDqd2Wq9VToUZaI6ZPmPQz7Kvd85Pgh9k5UJtMr2c8vYIu12g4XHv3KnIsk27EvlQj5EQt0ui72nSu1Ypb2QqDskdhY5PuI1nxSpFsuB+Y9mX+rZbrdUwtZQFnfKrKOK62m5AUm4aQk9mZ+eL211YbriKh1mE3xQm3DhfO/COnbwcYmyqE3K51/7DrG6rQszv1DYzvjR4ZMSav4FqeQIog5UZ7X8o13I7tlELPaGLXpl51Cfq6vhC5conrIpdufWZ736jSYzuuxwos/nAUdTHzjEY9Q2LbSb3MuKad7bwV0zy9PMnTVY0+0le/jfF3tPfMiXVMfy+Xzu6vn7+hI5Jpfl2GPGAi9IxeptG7vP465LXuCEW+YrnMVp8104VTMM5LLBc6aIxBS4Vk3wpIW6VeA61m52iFnOT9ugr0VXxvlN7kjWtElX03GOEAsjtKMIsCAIMZ/cD0LQCQiAQAesklAJBIACCRAMCom60AQBIAGJgHb3xsVQBgfFy1R49ZAKAAQH+GCAAUAGiSQQCgAMDom4IAwIT30I/pjAQAxjRycfc6AYACAAUAOvtT3gAKAPSng7wBlDeAcffZHesjEwAY6yEPeIfeH4FUiCRK4ukADorAZR7yFOO9dLXn87+BWldH5yPJrG4L9D6tp9B79hk2Pa0tNyWpQt/gUkjDowkdkdPUfch0aK3gIHTnPLwT+Vgzytl5tM+BA6n1I+PGNUJuXPNPZ8MFC5X1BPWdyGXbrnICPXNfUdar1FdXo2dxB8apoSyloK/U3yMn6sYZy8eq87QjukVEW+4gb6968rXQ1scXGW8M6Z80tVYrf/27lByu7d4M403MY3dwJeQqDm44Cq7vsNT6j5oTM5Y4HqRIzaK7zK83Twh601YnnNfsUcg3pN5b/X3X1OhHuqYu6jKOZZpqYctY/jM9SVd6sVCXvTDH7y+jh/S9LN4e8x/MB5fYsMdOxr0YNt8ZSwvkKh7X6L2cpwzjs6GcJKmhbF6VHD5bXabn+RHbqNN+hR90x2gGcdTPTJpP7T8E9deR9e0ONVbkzqEHIrlUjcCxrLmHJMEaPTbD9codO+MT6nmMd9oSc5AYAfE8IVcuS+tHxKwi0+b7mT0ukaJMOiMbyyDk6e3XVryv2Dr0Q+4YioKFMxT69xKhJqoe/zjE6PM30LT9WyrkP//W/KkYz5bMxHsx6q92bYwc5cmbUdxPP2nnuS8386d+E72zt4/znh83rz2gF0N83GbhALKtF8yiAMBgRj8wfQsAJCIBgFHJJQCQBAASAYgyqSEA0LdBBAASkQDAwDyJ40GrAgDjwSL9ySEKABQAaFNGAKAAQCOALG8AfXtC3gASKXkD+CcfqQm3ugDAhLe2PgBoPjCkiZpbliTsM8dw9qlinnP+INYdr/E7YPc0+Jlwxg1sqzUqtVCxEPsJ7dvM+Onzt/IE+Pn5sH4dVueJB2iLlnbzPTgf7qiBLNQoe3GBMkPdAzWZF9lknPeUp9AqqzNt8l/fR6PMyLsKbbFoMUqDUBNMssGafUpVzD9pq/NJhn2t0SfZlmUudOoZttabWH33szv7yq3K4WfYJRo/QzVuj35uETPLwsQq9dqFn5pG25jp1taCzlRSg61tnynru2jdVzcfUg1WtkGqgUpn59l1HH6yej8dxjfZcoxJn0oDYZxvqKFQzvyjLaon2WdAMgJL9tBV0MNOlWSfWsewT6sX8NOqqm3rT9iDa/UG4WdWqmA/65kRDGIWXUNoHoytg7afDWcojD9VQLLGedZWliZsHotRlkQ3xE+pKrOtr5lt33P50IauFyF1oIF6D8Y9RaPMUi2yebeEbaYwZSkNvkZWYU7qB+xeNxXnVWkNrufmN61kU/1xC2FcnDKxujLSSNi06M2yI+D68aqPv6wLsHEdwbXTXdDSTqXkeYX6N8003igWKtfObSaMY4NG67fLhJ+AM7DPzZvYZ/Shvd71t5dmINIvlqdC2bCqFb/06t6/RrRDZGDiGtwQABjXVuT/fzwCAIlIAKCXSFoAIAkAJBIA6O0HJQCQBAD+/z9kE0oLAgATykraeQgAFABo3zQIABQAaP4gR94ACgCMuisIAEx4D/2YzkgAYEwjF3evEwAoAFAAoLM/5Q2gAMDodJA3gCRvAOPuszvWRyYAMNZDHvAOf+MFzK2YCJ2WaMpuKx3Suby1pvKNdAdaeOncaOG15ATOp0l3xlV5xZ7XzVi6MRreoQV5oLFfFNq3LdBj4fzUAW9h5y6FcBXyjIieh7q6L8qpqE9x3MuP4FjrhdrL1TtsjhVwGJpzLHshv4deQ5kYmoYWeBe1lZXJlButxI6eQH2b/AotpfJo5I39sNbKc/hGWcNqVxTUyCk73IbbnLFcTc3KzLlPMz6oCndkf4og52zeN0iMfJq+g8bLbLR2eOaE2sRi7kpwnEQuaB6NXMbjr6H4W9FpyFU8qDDvdmmrNZKLTsK4JlI3KM+jf0L51Gxmg4ZUVNLvY14Vz2etzQ4cwg2hd2Pdbq0xpyerOpjTPXGtIxxqZDN9HOr+m5A7V+2EldUxFXvltnZfpjy66CC4fuU3aL9Xguzmy1b1CtTduKE8lKu8g3ZuatAwOB95H73HQsItX/R8O4zJh7oTXBv24RSMSVasf4xZKeYf/9/38sPcjKeH6jak8syAvkZolEDpkgKlXU7czuev34I+hGuvUjooH7mDeXQnOXJkM2y7hZsxO+6Bebls/RbtsOrOWVgu53AsfWda1IQK/eeh798W+rv//Pp0WPdTFqNqOoWv7rVrmnKH3DH/KzIw7DYazKIAwGBGPzB9CwA0cRUA6MsuAYBEAgCJBAB6N1sBgEQCAAPz4I2PrQoAjI+r9ugxCwAUAOjPEAGAAgBNMggAFAAYfVMQAJjwHvoxnZEAwJhGLu5eJwBQAKAAQGd/yhtAAYDR6SBvAOUNYNx9dMf+yAQAxn7MA92jBwCXRBKl8myq9FLGZcnI+G7D7Pn6q5iOXA+8tuJhtDfaMtohxxmuVi/UdxulLU+P23sVT8m4WreyQmx2K7S+euUktl0hJ5LQtg6p5r9e/8LmPIHZaIWjLiDn7eU4imM7o7b5296iJ8E4N9CLUG6uUJcu/xGMacGnmaVdVsa9c7h2N8/hPB77lKVPP1augmXVGWOWPrvV7eqWJDtUZqZmFEaoLTaH0H6qNcqLETHRaXXcmTe3SItAzhKNTPrIfaHXsPXc7MZ0Ily7jlC/8BpruUlqluPZuSbbcv8VYwl1zRpo9LTLfAd10FJNRt1A1cO25Wu0AmpEZtxiRQcvTs8JI03cAMm6uzOjNVwaQn5oI8LkOKhu2vaKMA815gQypTBaCPa5MxLGUig58tuaKCTTdXP0P5MyizRiPGE11upD+u5Pc5hGIcpNklpv1yv8l5dhXK2Kol6kOog8YerOeMKMk1nkxG5oD2JWGWOWehVaNlZN9QVcu5zpgR6l/HA+fx07j4Mr88K5wqeR70w4LUrcAnPhbBYk5O7QeB9uoMb529/j2PSZH0sT8jmpMvI9S25CPujesciXrhVmbTVX90AtRDUW819n8vRUrz0kCvFuJ8IBfOSdLnZPCgCM3Xg/qjfDlDZ/cWHu8g+IyNxxzZ8XmB1lGPSTicgoKRuarWEfG6Y0YzD7mhcAaAIjANCXDAIAiQQAEpEAQO/eKwBQAGDceeYHfSQCAIO+BL4BGPC3hoiM9cViIjKvbQzYM3+uaP6pZ15HmT/PfYeIjBu9qWv+qWv/mWfnIQBQAKA/GwQACgD0JYMAQAGAUXcFeQMYNx76cWEUAgDjwioQbYkCe2G/Mxyj12C8kp4whjpR5803LgMW8TuCd1IAoABAAYDORpI3gAIA/ekgbwDlDWDceObHiVEIAAz+MjxG5CPzmDd6hnRiQJ0RHzNGkoZsYd7yGcG26s5QnyMiQ0r7PT6FDwB2ihxIydN6GkwVffjSHo2/YyQbxw5Tp2J8qPbIBaL56LPqyH/5OljyHnqjlnKIYbmGIF/q8qCUMK4MCjXX6EXk6dEX6KvaSbvGtkT9fF/QveOsDy/bYwz1gPKi5aiDNqo+6rv1/MR8cXcOn4SVd6xqgUS7ulnR65Tbr6mCyIvpr5G4N6w9eoaOndnZ39ccQsPeb9Y9C8MKd7MCR+wrhd0/A79eCc9my+2MY7Q9sjNCQWdCTbWn6Huo31ShZysVsDpnpqLe7OQSUke9f6Y4hxqHnbfYhATD+eofUL+ZtiS2hYdc31MifZXd1iawvt5DXuQcRzPN1GzjeOru1bg2JWsfxnFXwXEPDcM8678ZOWmqN+MfLrFjrf4EopNhhJqbxSNRGzEpLh+pm2wBc1mepU6JOnIqGxvHZyxm5luDuz7b8D6g1/bG84Nse3c/x7aSnWR9XcDz50N9HrH+4++0GcpHzxb3l7mQMw3DIOieyLvjb8BvFsY4PIYpS+RI96mRLJ6fY7mt/gDGOVt1ZfsJx3ZGOZ0h5ZI6zMEkfYzwXvcrmceEPRY/QB3NaYnRs/05ivLgJaLsCu/3OTXG+5R6EtrWfdGv+mvcAvSMS1dkWq7qInKtO0Tt07vXblN4iC9nhAOIWyuoJQGAQQ2/r3PDxDdqvgYdGWXXr4jIMMXNE64SERkZT/MZ2GU/F4ziCBpVYHzCR70BFAAoANAklwBAIhIASAIAvRu9AEAiAYDBf+jHlREIAAz+Sph/EZm/oTN/Ouq+XltL5Hu/Zv7J+qffAD7TpSwlTpbEN7va1e9QieoZ/TOVN4BE8gbQ/NNC3gCaTSFvAIm0vAH07o/yBpD+ujeAm6jom95Xmgd3H9C3H/j+uljeAAYfc9g36nFoLP/LQzHf1swff7jfVaIBoPlrYM4BNPw/wwP8rxxAeQMobwDlDWDULUXeAMobwKhUkDeA8gbwfxlo8LnLG8C4kQ0GzPUxTq1E9HXUp2CjBGU+ARsAaP4K+F9EZEwzDegzpA7zb1VGwvJNxscBnBFZj1Km9bTVnqCzMMsHCr04Q9NZbotm/B1VDvmDERr/TiUzXYC2Cyw8BWXtcNR2pi8G58qndM17icbestw3U/GthVOh/svN0KeY6wpmcsZS96fPcGWvenxI/7EDi+FtUV+stZoDFYppsyzesb8reptGIBWIJmv0/l3cviW0tYZ5cdb8Cceiztn12FDK0D3tMZ06QnnRTzjuedmRV9mSifPpHaX916thyGn6mWntPf4dcheJ+bDqtowvugHbC5tjPV7HVBiAk0SLaTpUCf14i2RE79otPzM9Sh9l1jtupsKcvOLI35nz2VHWjHY8j3lYbo/jWWwusJKPNLw7Dps5/VKTFozfdgXHeQ3poXT6NpunOuLvIPI+cq/eTmz+3WePGQq5W7oj8kPJ4al6iepcbGl0vh/VbRz3pIVoGNt10GzoW5Vk89yF83xzuCWKfe8TKrDHKpUcg3gGNetoJO7NhwtYXrlhMeQX5+i7FvPqXYVrG5kcuXJp2b6nZtieOmJ5ryV1UTi5Lx+aftc8hrqL3xDWP9OGEQzt1qOwLuh//CXhPt++E3nGG8ri+aqjLMfPDFJnw5j96lACn76BmqanuyNPktmkk2qKHFm9HHmTaxxpzKY3kNf9cqqPIWYvK49bbbZkQ++MvAHElAtqSQBgUMMPnRsAaBCQcQU33+aMzl+0iqzRATQww0jDmD9qNO/VH6kDKABQAKDJLgGAAgB9dxkBgL4wCAAkEgAYdx76wR6JAMBgr8Bf37+8ASQieQPoJZYAQAGAAgDtTVYAoADAv/6RG39bFAAYf9fuv41cAKAAQH9uCAAUACgAUACg+7CQN4AJ76Ef0xkJAIxp5OLudZ4QNP2bKEo7ag8hD6a0j0Joj/raGnkuW9ccZ4YSUaSaMW0s56/mfBdWXg/X67IO3wcpfKQKIvfqsi4L12aYfgvKw17DdO0/jY3F/RMaJuNHaKVJlzsiVy597dvQl1rNdM/62saTvWXc+OzxQYYuUO7wIXIAj7bAcc/RyFsa0X0olP1dcgAAIABJREFUXL9qvOX/XKW/wbmWH5q/FXIOlEKkKVuxr85MA5IqWB6TzoV1v2UerlU18vDOd0L+ml6L12vmBZyovl2fglvQ//jblobNYI9u80bh2ivUm2yv08P57DUv+8vd17wL58YvN2wKe4TWRz/eyaoBnOdC0aUce9jRpVHbredoTCz1HsvBn1fg+jDvX32D8dscX+LVbO1qMgpZ66OoyzjxAXoe/5oYteKyjLV5qnogr4vCmffyKhx2+CeME3sIuV1hhZHDNraao1mIVDmiwTuxccJc0GWR+0sOV85cGO5wbNucwXuCnoj7+PZA7Col0yB8+HcWf6ajWXmBMVnyjiHMM7eysh645rw+bFS47PFTAczRlEzLL/18e495swWK640/gDm7pBjqqTbKbMdlelTrWN4VR6JrqLb748ubyB/MkMqeM221V0is7N+DtT0GqeZrtM1xrlO6aAjqq0Z7eF+7TxSy1xcr4QCy3RDMogDAYEY/MH0LADRxFQDoyy4BgEQCAIkEAHo3WwGARAIAA/PgjY+tCgCMj6v26DELABQA6M8QAYACAH1vjOQNoADAqLuCAMCE99CP6YwEAMY0cnH3OgGAAgAFADr7U94ACgCMTgd5AyhvAOPuozv2RyYAMPZjHugefQDw+cjFlCStJ6D1NH0HfXZRKG5W0JEXG470NhrMPCsJqSl06CWua4aktJLacnTmqYowjjyMl5cyNXK1SjLe176aSC7SzzA+z7cOd2UVCs3pDeirqqoiD3KLxvMVPkCektrqtP0RE5Zrx0hPWXCJ9w41Ri724H6y11YgHyuknOVr6eU4x5lPtIC2ijMz5jLz0S82ZV3k+9xOZ4mYugvq522ejD7DXNcsq0JtuCaEOoH6cCKcuNN1g+cXwLnldVGATT+N8+w2BjmBk2ojJ/D9zzr521sarTAW9ct39DT0tU3lhHI+DCGpM4zzFGHdFUNue2460UfkLFzcFl3Qs3jlnbpQ/+rhrFBWc1lfDvfu3DGjAGWPKrQRyoc3lISyfh9jVv0z9BJeV9MKtumTbK8c2QRtLdPIo2yQw+jQ20OnxuvnHm4K51t9YGRLvWMv0iapFOOpJm6AG//Bl8bp0h7qR6Y5GGL7VjtZ/KZhnrTVqKU4azV6fPeqNRj6GngHTY8LJLe6jN+lRr28DD/hXno9ZBK0NVoZGVf3YFzHKg7XESUD6WsmVl7sRZzn+S8w/lmIcZTzMW/mOfb6Xc9jZ8+m+QZGGXEduddrwXae6N3NzBi6suWD6rBXcMrs+UBR9OhrD4hCPOMh4QCyLAlmUQBgMKMfmL4FAJq4CgD0ZZcAQCIBgEQCAL2brQBAIgGAgXnwxsdWBQDGx1V79JgFAAoA9GeIAEABgCYZBAAKAIy+KQgATHgP/ZjOSABgTCMXd6/zAcCpkQ39VnCtTtjPM75h38fBF89nreEOrC0HJ/VK9uloG/sEg25uRHQCG388ty0zGZh5dbDtzCymoUzCRBfAT8hqMftUNN62l27yOWjt6ifsU1xLayVmKj68jJ9DC6f3NAuij28zW9mSWhdQDmL19MZQV72GNnJ6Hlp2zW2Bn8+uUxq4vusH9lPrD13wk2NexXR3jqBch06GMX0/t/1Uajr5mGz9XQeM06A9dHK8NllG5AMsfxytyGqxT8AfEX4CfqW3YzF4nuURs1Db8SKeL9cV13bKJOQiZCZrQXVMoUTGSxpjdladh3ke1fj5ua3C9dOhVjbpwjpMyixJWP7jV1daWbsqXFBnAn7GVY7si69iu4n++qEaP1X3YXI1lRkdo+8cboPWAQebPbu/rP/J4j8CJ3Zc/xOuHUdvQnmywjKtQtrCw/K2/S/SIyWiWj1GmRiNw1R9MKanl+FYuzvWiku64fd7/RWjSGzF8x0Ufo8epVHr6DlCS7WKGe2+b3EJP+/PL9MeBn5xN+7bJyPRBvOjEMyzX8nSYZYx2sLH3XFxVSeMyaECOM98uBUpyQ8Y0x/TZ/T/kJxQAiirQkqQ/gb3S+cieG+cUhDvjWqVpX7oLbjnVSTbH9FN/3qN6FXfoOUTMHvOBbMoADCY0Q9M3wIAjZ+eAEBfdgkAJBIASCQA0LvZCgAkEgAYmAdvfGxVAGB8XLVHj1kAoABAf4YIABQAaJJBAKAAwOibggDAhPfQj+mMBADGNHJx9zoBgAIABQA6+1PeAAoAjE4HeQMobwDj7qM79kcmADD2Yx7oHj0dwLcjiZKb/yXSZRj/ZynyNAbPsRIbg0+hxdOMXMlgvF1+Rl5YugzWRs5UvLgaeUxv1rKWR0NS9IW2Qu4g1+QHQq7Jz7oI1C/zJEqcKEfqwDfPvXaeW3uiZMYgGgJtbfy4Dq6DpUt5v1dAyQcd9ritjwoZpO4z3ssR5KQ9TI/aCNdvYtcrbiMHraUyNn5Rxxdo73Wwal64mHO1ZtVG2YsVqHZDXfRR//VDFcpc9NTIYapOONF5BZFjpmowDuazmGeXmll5j0zqOoxbd2TcrWnI3cqlkKsVyviec5rY69uQnZPXyRfQ11iNshdhyvEWI6JKGufpWoBVWrgL2lIrcM4dFqJ+x/SxKLGkUrAYrcB5t15r7d3m/oRcUX0Abc4oE+aNKoPEL10AJZlUE4eDuQn7vc1yeCQqsdDbt5HblWoESv5kGoK5sole8A+uyGy0ECRmMUgRaL5XU+N6ranbCCY6b5Ude4tPMQZHGuL95gUmnXPuLO4XwqWnUejIRr3BJvMCdPbwMq5PogyHcDC5UO6Jy/SoDnY9qlxC772N6u/Q1l6NXOxSh76F8yMKIyez73fjcH9dtTHLVBbXqih9DXU3tEHpIhWOEkEdNFp2ZiIbl2HlWQCRbku6gjeOa3eJQjwqunAAMWuCWhIAGNTwB6RzAYBEJADQyy0BgEQCAIm0AEBvQwgAJAGAAXnuxstGBQDGy2V75KAFAAoA9CeIAEABgCYZBABGbQkBgAIAE94zP8YzEgAY49DF2QsFAAoAFADobE95AygA0J8OAgAFAMbZR3fsD0wAYOzHPNA9+gCgMTZLEdXTL3oo9Mm5XWnI8rNeI/Rt2r+5PFyrKv+M41+VAcpraleGco2Fm/3lM83x0issEsVoBvxyiJBzlpPxklKnQN4LkctlQV7RbI28lhOUC/pqSCjoVqogcm50bbtV7s3CgSc7gDpb+m3kTd5DOTFKakPia+hQPeRuFW5uuV2rFlSBzl6K/ATKt79PD2UdxvieLRkHLYc9PywUOZcrIX5EO0vgWhLKBlLiPszS6ySz9Dpi+27W6l8wzgU92mJejUVi5HiNHKd3HgyE+hsTW85ZcWV1LH2VimBOEnOr0vXZbQ+pqER3bFftFqDd12xVBuPdDrla61luhLbG+PeZg/MYsdHuzalVWkHbnbrPxRhN2ALldboPlEM/w/ORje08jzlzMhf11Zjva481wHmxECqm93mlSvTdxbssSYrb/utDmN3d6lcw3rVYTKg0uxGwW0z2QZ6HmDnOKGavVhcXd9RKbKsXsyZT+XE9yo9DnUb3XrhOVYPGDmq0VMt15yScTz34AcbwDNuLJ52+t67HgbbAvrRjf8ei4yuqDYx33A5rRXa396C0Be9hHi1k15ZGTibV8bjj/gNvlUSOtOIEpk/4xjTW9mvRtnG/EtGrpknhAP7eggbpNwGAQQp8ALsVAOgLrgBA34NCACAJACQSAOjdcQUAEikBgAF8/MavpgUAxq/1+iOjFQAoANCfJwIASQAgCQCM3hACAAUA/pGH6P9KHQGACW+lBQAKABQA6O5r+QQsbwCj8kEAoADAhPfIj/mMBADGPHZx9Urvj0AOXyBK43E5bj6NemJ5b6BO1/lOloM2dmpnmFcNNRXKhbjkGlpt0ui1+EPPepMtGFn5EcYsBfrYzrtlPVhNxZYK+VL6s2J4fSospitn/X8/So5P/RrHGPGuOl77NbMwLs30Du/VsLyYsXtw24R1R95LxLiy0Hjl4zugrN9GjbUBnyKXa2ied23MTqAGVz6NfR3bgDHRG3FsvYYPhr5HlxlkyyizSBSO+mATCNter9FTugvT1DivMMZtxtuxHnwD9diy0lkYV4bhtzBGa3Aey7eGwvkGKa2QnW7IuFZdMEb7n0e9w+KdWBJPQ91GPdMSx1RNNq6XmTbfk5hHvRaweKsSOK+v6kN5pnO6NfN3TZYb53HyKxQCzDn6ErR1wcp5+n7P7HBPi7dDnuQBxYQvU2NZf8hi2opxu66ycjmn/g7klOlvuHEtxkyNYm2Fo9e2rmLvC+p1Vvdzdhuehjm8X+M9pfgEtvbset3JzkOFYV+jjqHGZi/FCIZMqFG3RnLjqTnWn/c05YCBV/wbeo9H/ow84hOJkYjnchVNQ3kKogBf5cM2pyP61YS+vmbSfehoTJQVqb2Ukul9kmPtrB3/ddNJjzeQbz7mE8+v+tqvRCGe3bFwAFnKBrMoADCY0Q9M3wIAiUgAoJdcAgCJBAASCQD09oMAQCIBgIF58MbHVgUAxsdVe/SYBQAKAPRniABAAYA+4CNvAAUARt0VBAAmvId+TGckADCmkYu71wkAFAAoANDZn/IGUABgdDrIG0B5Axh3H92xPzIBgLEf80D36AOAxyNTUZq03vJmDEdSh2qDfr40zNF9MgKCzqHnYIp8jXaY9Az3xR2EvJmx2y2nsCXNg7YzzUV/2Cqt0B+zHaGo2nhCbbhdyiGjmJZP9rTt54rWn4r66STyDWlrUpzoGLYsSVi5ty2HNUa/5DHNPZ5L9HEZqXJ05n6+R6558fLIS5qxvaW/foeCGDPuq7qh1HPQdpWiyPW6ZiXUfPVSOvamESEV4NoMhP7HpbYxLcRIzIXitbCv/fVQMzLC0WR7IQnjbjHvWZdX5BtUkRUwtoIaOWqHJzhez0yjrucc9H0erV7CnP6pMK4H06dsGWH1KOeNYP7HjTkXju0Xpt+mpmP9TYwz5cZFF8f47ttdEBov+eRhKKtb2PaZSyjely3cKm2uYfu25hwc97WWuB/eSYz826fpO7igw1zMy4OtLMfzW0JP3KZLmDhfE8wz6s9EB7Pg2CJfczTtPmOadmw9Wt1DznL4B8hpVrnY+uEth8ZOs2vQLjmO48PbTKfxGOo0Er9noGQnqZxO30+xWwJaSFP2LbhxT29EHquqinzqvRpzvuQRmysqDeOxnkEea6+yj+AJm2GOZzk+1sZIM2r19YuYR2nzeet17SFRiGdJLBzARz4NYvekAMDYjXds9CYA0ERZAKB34xUASAIAiQQAerdeAYBEWgBgbDyH40UfAgDjxTL9qUEKABQA6E8YAYAkAJAEAEZvCAGAAgD/1NM0gVcWAJjwFlgAoABAAYDOvpY3gAIABQDaDSFvABPeQz+mMxIAGNPIxd3rfAAwcgtR2iielfqQ8V5QGovmORpeLVqwiTF9PPU2tpWoHHq43n4ayV3Jdtr6+jFMt445kFyyh0pB55wDOIocIh4RvU9vQf1G+6321b3cOI+1IeipW+cEeoAeys38eNdZP17fp6Pqi/0N6jEYQNWb+e0yXTpGrSO1D+tn/wW/0yYm6yl6MhvywNS/2FrWGA4TzafrQPkTQv5bsSO2L/UStpU0AvXb7k5n+m31MKbvF+kEP4QNn4IVathizlJH4FxFQt/a+dva47VITzReFnB+hn7HX24/fz5ey6ihhHQ2SpfB6kWaC1MmNz6l9jj/0xO20Bs9b8mZk69SC9RvO82MbYdqzPFeNBL6Oq6sftsXGrlYbQiJegUueiSq6ENlRo1IIsyVxprxYJ1ruQ7dRIW+zzsxovShjoBfhpCjJ0lEe5x5D1DoK0zTcDE3vYb3gcpOuH2duJbeRBQ+3XbdhlbDOPbrN6BcbBbmSa52yJs8ta0A1A8pjfp53VNk9Z9/kcWA0d3oGluvbArXry3zLt+U3Ma4bpkN0LpuzXQXb3OdRTaYCqhdSZQTKnTQ1mt4BQvoQLJ7x1y0k1C3dG5L3NfEvJkLrrF+zIcVehrvYPfoslHPk2t3iUI8brRwANlSBrMoADCY0Q9M3wIAiUgAoJdcAgCJBAD+9kYjANCLiQBAAYCBeQzHj1YFAMaPdfozoxQAKADQny8CAAUA/t7NQwCgAMDovJA3gH/m8Zqw6goATFjraWYjAFAAoABAd1/LJ+Df3OUEAAoAFACY8B7+f3ZGAgD/bMTifn0fADz3GFGUDCDduo2DzsAeiIMdOs/gZmyCSJkh9R5yU2ZfRxG1MdQDGvi2keX1qaV3WeNnsFyHEfdWMQ2TIqinp1dj+ubIYfX0zhxHoa1FeZHA1jQpapPpUGyr5WdWC84M8gnHu3bUTuT6bCyL+ndV+qE+Xt3hKAy44kpTmLcai2HoONzyxqZvYwJhzMeTHOlD04rag+tTJwzFyFYNcDiBjKpVs9SnMJDVsxpDuWM75LPN+BD5V6H/WA71c9FJf3k1oW/qmTdxLX/jn6wYC41prB29Z71U8ysUcRxJ6APdmxg3sQnjOKHNKulnbS7cY9TEZA8wvk2voxbcIpUYYjBDo1BmPYV8xcxOWN79DNe679pxmBic23gfT/d5Fzf2iP3Wl1VtZpwyNufQ+rh2a0uw5GA56vtnpntYyUF6PxTj+9Z01OZTryHvTvdF4b+Zw5GIPIva+XvaNbYSdFslDIX8/kWvwvmc/dAvWY1gAoilPYPa6EO3c+4Djmamb29twRimXoZt30j9H2irgsYgPUdf+s/PIRRmvPQCM5WOQD9kIuRRPkyPMVMLcTlahtr7V1FCf+TMdBHnrPD+1JqFSGXEebetbf3dVxDeVy8pnIf+yovntRtEIRV9/yscQLZ1glkUABjM6AembwGARCQA0EsuAYBEAgCJBAB6+0EAIJEAwMA8eONjqwIA4+OqPXrMAgAFAPozRACgAEAf8JE3gAIAo+4KAgAT3kM/pjMSABjTyMXd6zwv4EWRRI9FfYJgsi/EPgkbQZXoQ88Jw5kVx2Kh4ih7MUWhdMsLKdinph32+i3M6qoCfnE0f7IKx3z+WaMrtr1ukvdNIfoI3exIi6DaBtH32HbIQfwMFZkCJTZoPEoj6OftVllTBtuqiVXpyg6UDskwnVkx/Yjb7vxwlFu5TNYaq3B+lKNZz76KV3sex6JusvgzOZUOkyb4L8jLgrKXSZgsyojWV3o2k6poy/oKx7HonLa+asmkcrpgW+vb4UAr3sTvnVuYddwKPcrf2aSxvaDjXGFM+kOhzki4xu+6rRVa++la1nar7Gcof5KOrkJfLxNKrbRtuQDOh83DtjnhfuuSarY+25e6GMYoTW78dHc4dSboK0cNFuMa9vq+b6BdYRtlPw+bRr7QuNadFSb1Eo2UicbqWei7oLafAg9Xc2z6fI3jPUOvLQ3XTg5tC+Vuyq6t70Rrux/0ZozJkR9Q/qRgQ0s7MJdmWYr75+wVa1lnzh9mLnSF3Gkz2aOKfdfBOLeqZ6CcT+M95WhzdvN0bpXqINs76XDvcPu18hplq5IR0mk2K5wXzbcUC/0xxqzHClz7ovQNdP4YoSxS05SMLtPKtrdqGpPXaorjHLCoj6/tO9fu0HshvueMfAJmSx3MogDAYEY/MH0LADRxFQDoZZcAQDolAJAEAHrbQQAgkQDAwDx442OrAgDj46o9eswCAAUA2gwRACgAkEgAYNSOEAAoADDhPfJjPiMBgDGPXVy9UgCgAEABgM7ulDeAAgCj00EAoADAuPrgDsa4BAAGI+qB7dMHAItFfk6J06by9bTvBfYaiNtZ9V7hjOgejE4vRwJh63ooqRH+Tmeor75iPKTHHe7cLJx4zWlYPvYalvMxS6gzSEWhHCeZrEyTpP4G9G2W2kzGYl8o2mbtVMgba4dUL7ocYnl6WZOyk6iOQnoW48rtfwgTG0uJoPyWVTTx/a7etTE83wLbqscsub6OLApt9QtBnZgBo1AihXpbvmeoRt7Qutz1cQGYSg9Z9QdfvYIdrSWUKR/KgHxQ5chJHKqHVntF1FLsqwjyqep8g4TQ9gqlc7poR/JHocxFhB4NbVd+GyVl9N8wph374gJOP2HlWNSnj5ZPWdIY5W24DNJ29Qvup+HMRrCflV8ZSRj/3vQRXNtY495cUpD5NjJHPCp92e6H5Y/jPk3OLQVtXV/FI0iO03UxZlsZF3WWtveFuaNQBuZ4L2uvZprOq96DsezVmLOl6n6LMdvn9P0Vps3uTEXghzuUDMoVjmCOEiqeUJOB86B+H9XSXz6la8K5RvmZ/Rq6MFKDl5D/uawESmSp/dY2Uz/h3Zujj5Y/oezUfkL+ILcFXEvV4fq1TVG2Z/4iK+HUspq1sfTWFmNIZ9Dvc6zG9Xn7ApYf9nfGzi0bWzP+JkXva8Mr9OW+cABZ+INZFAAYzOgHpm8BgEQkANBLLgGARAIAibQAQG9DCAAUABiY5268bFUAYLxctkcOWgCgAEB/gggAFABokkEAYNSWEAAoADDhPfNjPCMBgDEOXZy9UACgAEABgM72lDeAAgD96SAAUABgnH10x/7ABADGfswD3aPnBdyVKG1yr6twxn9rM5/xf6zTEtFt5AI9vMy4Q4y3R0hlofeZc9mb6e10E11h/TJOILVDTbUdzNIrDYtcIW5bd9ZWUJs3sdrOQIiohUZe2LxsHR65Lu/+ZCfWV70AdfdrtL/rSh/A+a3bHK03c4bxZnQVtg27Opdzzcb9OMwBozydrejjKqGg2KTpqJGXo6PLnUM7toz6R2jr0sdo67TjFRxnucpsPSOQNDjW4Xa9tRHtwDZXQR25Skd2Qd/nC6A24mMPUJssJInlTOncaKvF5Ayp1CJHH5KIrhNm0tF3mF7bNjuUCyj9RlnIxs/U0i9ZzUBTbrIIOWWL81tOmTmvjmHMiujd/s4OqsK4uOGPQTm0Fdq1rduAnMHIysh/i0hiOYP1GF9N3WOamoNxbWdpFHWcQGj7t0hFwthed2iUH7N7QEq2sz51+IK++1NL5BHvZFzGdtrmxsESKMIZ/tXL0HpeZmtWkXA9Tuq3oH7OhWjnRv2c08wyU3XDmD1Mxri+SMelf0XgDaptUYcjeJAFBeUiifaw88vQGm62xvKrI1A0NVlHuz73djDfvjqMp30UOcmEUn5ESI+mCePtvfKNCchdpHI47oVlvRz99do9ahey2vyvcADZ0gazKAAwmNEPTN8CAH3OBwIATXoJACQBgEQkANC72QoANP6QAgAD8+iNf60KAIx/a/Z/jVgAoABAf44IABQAaJJBAKAAQP9NQQDg//UM/Z85LwAw4S21AEABgAIAnX0tn4AFAEang7wBlDeACe+RH/MZCQCMeezi6pWeEPTySKJUUdwPpuemL7Bld2kyjC9ISXCaqip+WtXjkQ+nRjJe2DLnepdraH4+yDxCd6BH6A9ls0Dnedufg/LgmchvG7Tf6r+ptWwcvdFblrojEe/nSRiT7x/gvMvlcto7iXw0eg25WoTDJn0O214+LRQab/D2WuxsjOXLTSHkR3VC2TPq9g3qbk2qgDEZ7vDZTCf9ujhdXWEp3JGt9UcYwznTcB4sNSiHRl5f5bGWZ9k97F1ofHx75C4SUk2JRqI2GXXPDdevHFfVX65bcQOc031wnOG1cV5t9jzal1jltud1abZXMmNbxVtshx/2dy+PFRhnU41ieVnOastV0thXxFLUoaPE2HS66rgfMiW/ABWOqVVOGTXpKBzjeeMVbDx1CuRkUnfUeOQ8ViruxKwJcsoqfoVEyi3tMf/VLPTQTX0Dr6+a6gv/PHoonAe62BJ1mslyGm8ptKo4etfWrYa5Qy7/tgjja+ZFYt7BnxjpL/sh6Pxheuw80RVXQxVNvHWRYnCtao19ZwxDfu40QtFU7t9b47XN/vbUdPRDHkSoyTmkAfZ1Nxzz8MsQ3NfjyJI8j9LTMO5v9zMt0BKDos7fifbnFA5gHEIOAgDj0GL8RUMRAGjeAAoA9KWTAEAiAYAmEwQAmigIACQSAPgXPWkTQDMCABPAIrIpCAAUAOhPCQGAAgC9ZBAAKADQywQBgAnvoR/TGQkAjGnk4u51AgAFAAoAdPanvAEUABidDvIGUABg3H10x/7IBADGfswD3aMPABq2SbT+VutPscudjbBcjiwHZBhhSvRz/FzNVb/5tPqR9ZY15/drFAqsRpa/c0mhrhzRYBjIYhoC5SYvIjcl3/oDcP5DQi/UxGSJe6X2Mj/RhSzVUc6NTjCf4TxcK7GF214htobrodxWfwflDITaiqMO4rx7FcHyqIK2XOgw8iQ/oZeg7f9QRSh3qj4XymodcjYjtOUIVlbdcB5bMZ66F8ZswlbUSqxM2HbxU8iB0u85unSMi6UU48JxHTSmN6mTMM01R4Pw58R4rvx9JN4dG4D8KuKeuScnQhz0Dqt5d4HpmmUh5Kvl1Oj1u5GQE5tnM9avWgkTbaKjr1f4SeRqnTmNy5ODWJCGuaJ1RA/fxzi8ctlq+X08vzXmRVGMf2gxpjF4iGkMlsK20+JQaeETtn6nO7h4/06BXsD1GHHvWJHsMLb8n+HEJ9W25OFuCrUrqTJyXikCY6YLMF4l88HldtctszhcxpIs51bvwDxZy5KD+SMf6ZIT6hfod8qWGTdXvcD2A9P/vMk4yqkasvrzkfx4Wb/u7+suRQnCRv2SpTtqOGYa74yLiC4pq01pLhnpefj6j97kaHBmwnvC4IsY/yE0MuoHMyHffU04gOzpEcyiAMBgRj8wfQsAJCIBgF5yCQAkEgBIJADQ2w8RAgBJAGBgHrzxsVUBgPFx1R49ZgGAAgD9GSIAUACgSQYBgAIAo28KAgAT3kM/pjMSABjTyMXd6wQACgAUAOjsT3kDKAAwOh3kDSDJG8C4++yO9ZEJAIz1kAe8Qx8AHBjZiVJEmQH3rTsOOq2z8hMor+ze1AKGCajZVVKjk+fe/cg5oydwPioz46Y4tLKM85gb+qx5AAAgAElEQVTX7IfICdTjWTqiVBmp7aztz1ksr9qyZlpWM5nvcIcK2NaGLc9BY7/6GZTez7UzWIPMRKPx2hRNUFBvcLoM0FZlNkyXc2lO6TA2b8e2WPVjc3Y8V33NRlNsovs4j3qHYRpJUWNL9PePRidnHKed2NdejVzHUgp5lZsYX7Qy44v+0NoKIi5TyIV7qxIG5VJEavghY7kbWIHpU6oKDt8wHedk4qUVfkGO5taG6M2sS2AcrgxM4W/gnkIyVmbGp1Xr2Pog1Y70cBbjp7F+9/esPuL4MqiNuGU3aqpVaLMPJqa+YH3fx3mHnrO8vnWKaVWy/B7GuKT9T96FxurnXAzlZeH4V8Wqkx3Llls47vsKx12Ze+zOYLqMKVnMFjrn2Sdc7j2rO+O1Z5ivbY4Cj+babTlpr0+uUXTzJcL75rHIghCTpIwDqMogl/GMtlzURoSJNEXhXaL0MhaTt1lMWrHz/8Hzx9ZaXuVixuHrqxpjooSjJqoegG1t/pH5dne3GpG1xqMn8ZpqSDCP5m0/uHaDfgjx9SMcwIBDgD/egQDAPx6r+FJTAKABVQIAffkqAJBIACCRAEDv9i0AkEgAYHx5lAd+nAIAAx/j2O5BAKAAQH/OCQAUAGiSQQCgAMDom4IAwNh+JMfd/gQAxt21ienIPC/gGURpo7/eMgspwi+UpKqv9vfVR6O11WnKAePIRWjRVY9Q1uJZhd9aw7T9/DbrDnrBXX0J5SF+Yy/FJAXWc5s6FqHQ/fazyI0COOknk+Dn5ysR2eBqfYdtheLYuDrsfHJ5EWVdiGlPZNEl4OJz3fNiY0wSpUeLoXC+OllruFD1GZy7mcp8QbHHE5fRDuzqCozpzXpoq5U6wkrlnKyeCdrKefESlPNnQjmVpwm1c1a9iZI0i9kn/Mbu5+pmbLGsU5V34iA7j8tFypF98dW0blTU/Re0mRu3py80psqzz36vsL64LAx97a+gn0AJmZTf4tr3DkErvtVUCxr//sFTUB6ZuDeUXemiHGohnKuGjmnEP3eqif8HPcC11/sZ51y+FX4b3d4NLdL0VfbJ8Sn2yfEZtl/CbPtqEtbtUHsCdD5DWYkSc2Kexjxq0Q8/K6oRroVaJ2irvsaYLevOBK9d60Nz5QqMwydhdeCHlGRtHssojFGW1MwyjckPJYtk64FNE7lfea06ltf/58zDrnJ7GNe6TUi9qXYRqR4q802c2FPOJ39kXxC39ySrFuRrQ+fEtV2CtzNq4lhE3q2BdeuH4NqtHuF9br52myjEu83JJ2B2+wlmUQBgMKMfmL4FABKRAEAvuQQAEgkAJCIBgN6GEAAoADAwz9142aoAwHi5bI8ctABAAYD+BBEAKADQlwwCAAUARt8VkrDnh7wBTHgo4A/OSADgHwxUPKomAFAAoABAZ8PKG0ABgP50kDeA8gYwHj3MAz1UAYCBjnDst+8DgElOnCaVxvwv0d32yBtTS+exUf3kL6e+8Sqcu5Ea657UqDtS8sFXUP9KEeTW0ZHh9vxraF2li2D67euCsgolPzgMbV/oisM+pkvCDy5fsblqgJWboD5H00/QMu0BIWdwiaqJ14+xxMmjYciLvKXQUKoYt5FDpzciVNT4zdsZ+AvmszgM9TryjHbVLwoVymRDMp36O+MluWFBih9tfxeJj28R2vztuYzkxXtFvPyKPtacQymLmkkdCZplOI81tbFujX5IClw1HDlpj9EtaKCwslzVLN05F87JOd9Vjq4OET1M3xnaUszRS+1y7MCyY47eRuoVpWBcRlV7D7QdrkdD+dUL/4Ly8sz1/OUXbyLn7G6KpFA37eR7OO7uqLtz92obOJ/U4TYO6dITznF7wm7KjsOriNJGWfTf4fpze5DXOqy0JQEO6DMG6uryj5bCGf90R6hfnDAxK622siOja+FNYAvhuFYutZJWptElzPZyKOM4N2GbccB0O/bIdo6VoSGvfYTSOOdb4Lwyb8AcJ0ut9p1QF2xePTsPE2eXwle0UzRyqzuPxdd0q3tg37WYRaEOsxJMKivuj1ZhU2Ggc4cjr/JAf2w7k8bnR9Ik1krucWbpqF/iEj7RUkSGW+kjAgsHkKVJMIsCAIMZ/cD0LQCQiAQAesklAFAAoImAAEBvPwgAJBIAGJgHb3xsVQBgfFy1R49ZAKAAQH+GCAAUACgA0N4wBQAKAEx4j/yYz0gAYMxjF1evFAAoAFAAIOxO+QQsbwDlDWD0lpA3gHH10R374xIAGPsxD3SPPgBIZHzRPI7WQY1aZEXUcRiD3mrTYNXzyL2qqxZB3ZIaeXlnmRfceYVEmPLacoW2K+TUECGHb6zuAX2FKdT06qmx7dEvDcJYpnOKzBbrN1pXMxlXZTnyZM6tdBsjyqpcYTrkvnENuzyFHZsyIjqeGS2liPPG3sa+w1YO809kTJkBMMfhSDGj/vQQzs8j1P1rWQTbXnzQzrvJKq5b9jHLTcsNNSdCnbU05R6MZxla47/bou15BePdja3l9vKYdxW2o31bc/oQxvbaFcvhVIxrRd+wtHgHtRKLJscKn6VAwb20jizdKKYR2Ivpyh2anAc6Kzz9Bygrxk+scmsVnN/YzIrF7V3IrfdQ+PKiRn7bBwrt8oa0Zlp9vWzM1Qdsbb5nS80sBrc/jXzQfmRz0ly5oXldaCDDPMuDvdzQ2pCZSlVXIJ9to0KBvAUa+bqFCC0Hi7v3gc+RUBtWHcc1ZiPuF5WYzZtZQup8jEs30OrYrdnGCISTMWaHPsJrf9JoqRY6YAtcsGxodX+Z82t/aFgY6nZditzRSWV6wfm97D7ArePIHesXVtfSNLKOUNtyqcY843zoGR+8gc+LT5y8epPFtwDLq9eiyvevEW31cQmFA8hCFMyiAMBgRt/2nZmIjGFvVSJKTkQGZRnF2GioYBjzhpFvttcFIjJ3B2Ty2rYEAJpYCAD0ZYQAQKJ0AgBJAGDUDVIAoADAuPHMjxOjEAAYJ5aBzD87jS2D+Sen+fM743Ng/qmbk4jSEPn+SWz+jM/IxZePkjM1f9a69HeGLwBQAKA/LQQACgA0ySAAUABg9E1B3gDGjYd+XBiFAMC4sApEB4jI6ENEeyalJqLr5Jk/1SAi843ENeQxbwufiXpjyGcgAFAAoABAZ1fIG0ABgP50kDeA8gYwbjzz48QoBADGiWUgQ3Yz5o/mv0YQ6q2oshF5W0BExhXXFcsy9QzLA9nt3lw8IeiRRGlTRE0uH06Sa2n1SjnJVjBw0zn0l4wrlx85H4Mc/qC5bAjjnAF1iJ97ymBce+gfUG/KN2vnUOVcT1Cio4R6bvnpI39t3Q4NX1U4jnvPfZxX6T2MP5WezfuKPT+jVEsYVw46DeU9hHp5swg9kHdTGaif8UnkcpFLK0MKJn1tyALOEW33HP1TPqRoEuuacmy1fr6nt+XH+Eb8v/auPc6m6m9/V65FRonSmIjySwgRykhRFMUvlNJ48dPNLUQUCuVeipJ7IXKLCkWUIiOXqIT0IyJ3Ga+ZyBDW+9nnnDlrP9/eX2/mbc45M59n/2XN2uv2rLX3fqz1nOer9DwogxTphFoiOw21REUeQj/ElBSfFkx77f2Kbe34BWMYly6NAUxH7XwM+to1z/hwepGay3zW2yR3V92KGN96sYo73FDUuH/wFcYhiX1RrYuNquyxDThBUhXTKI8TyXhGvRis9bDuluPehLJNTDtIV7BKf7hH6Q8b+/r2Lc7dSqUDG28nQN3TViHegiGP5RDK+uRyX9OmNGrfZFcNqLt6yS8hvc6gueLpY30hf0yc60uXtdhPU/NzuLe0LQrpnStQW2f7IMbTV+H0JPkfVa3V3Y4+gCLbobDtgm2ZS9Ta8C9p5Se5chOuk13ma6i7lazBjm5GTJeVvwXy663yYZy4FvtZAx9GswX7ecIiRieOe/sR7io227237a/qeXjU28vwXxlvKO8dF9B8UwOoEIpmkgQwmui7tr2j3nGh3b6zoWPg+0TEez15v3zwJL9+FbDnUuy9gnVQH69GEkDvY0oCGFxdyD1JAEWEBFCEBDD4eJAAipAAxgYJiEYvSACjgTq26f1s0/uv5Bci4tnpp4lIIxF5W0TqiIj3U9fz3gHsmCiSNxTcokE9kQa+/2ByB1CEO4Ai3AEMPojcARThDmBwLXAHUOTv2wH09i8yorh4UWwCv+TnDmD0OUe4BySA0Z8ML8aYd+zr7Y/746p5ZwCeL4d3SNQkY/881F3vF8He+Zv3q2F9cQeQO4BuTXAHUHgELCI8Ag48EzwCFrE8Ao7+Vz9GekACGBsT4f3K1xNteNo/TyzR0AtjGdoJ9HYHPWWXtzvoiYI88Yd3/OsF7X3vPxHAj0WkQChTW361VZq1JtZpdm4JdMNdOlZm6fWozTI3oS7GFkOvv9k+Hd90i4K2hVXQ18x8i/EwpZqLvxt4eWvvvhOoXZlTy3mT3T8Y/dYCP6fxX+mYXNMQ9WxzpTncMMK4E/jqVmuYtO5Lsa6P0TfQ/kvpkPY1g7Zel87h9PpDqCc8d4XSC9ZUosA1zsfMq+R4OmJccLOnMAheeUp5m83u+n2v8je8DEGqEI/+eZt6VYfyh9C6TK4QF6t2gvL9e+wmjDF97VeoHbojoHxw19hnvUfDXYuGOgwbKn3UNjXZZe/BdTLrQ8Qfoymjg9ANylPQ3K/1ghif147E9W+6YuzsvSo2cHxFX8xdF2I1ONCMn4RlDBtD/0rvBeh5N6TKC4DRlG9ahNMVlTnijWtRLGpqqnH5wjgHKsHQzXIkF2KYfsbJkacYjCNcR8XsvkbQh3Rt4JXmrn+awZC23d0zYFaofq5/De49YJ+HdPFBnh+qu+xa7HeK8pAs4kubV5UueAKW7ZCA/nnFjIuH7LV43L4Ibb/cz81XtwE4xpEjnsV+NlbausdUXw6q/MKYX2m10wx+IndC3V8o/8jmgf0H/+Wpkdy1zjpttffX6o/6HgoVT9wWwn69siwYZzg97bT0iQtoWrkDqNCOZpIEMJrou7a9n2m8JCKektfb8fN+VeC9/jMUz97r1/vlr98HEH8R4eoK7ACSAJIABj5CJIBCAihCAhh8QZIAipAAxsZHPxZ6QQIYC7Pw9/aBBFBEuAMYXFQkgEICKCSAGa9YEkASwL/3c5u9ayMBzN7z97/1ngSQBDC8LkgASQC9xcAdQO4AZrwUuAOY8z76mR0RCWBmkYvdcsEfgVwrUij0K2CzV+lHLsJpL/yzi5V67D30YzMXYdn2Tbzfn7hrzEzUvYjyHBS/PG6QAg3DjYo4eVrwRr/zoRcGpXESVPDYPNSRzWjmYoqeNfPh3g8s3lsVOiaySVAJ9k4R9Fy74LTDYcavGLu0pflADSwF0rbnZZBOVlq52iomb7tGLpBnDUEPr0dHqeC0mC3ar+2TBBWf9GKn92z/q5rLmmouVShUUd5lae/ngXHF5VY+aT4/PVtXvWoyBKqhGr7eVg7qunE6atS+SsJ4ytWNM3CzdZR/5H6cDlNDrf9UpZ9aiGtFpjcOVzDvYU+O665mZi5WvvkinGsV89hco9q+TOHgBXbMuJSc0xzBssvfR63cRfIbtH1TTTQ47LbG6cxebdkb1+BMHAaq9kQ+sWj8N9oorePP6NXXJsEpUqauDeq+Mi6boPDuh+NaPBEFhhsMGvB19oJjhq5CSl5bZBQaNR5dH49tj1ZtT0fRn62F8zsw2T0DfXugxu8nTEpppS1ttxCDBb9ZsRP2ZZmvLyqWr5zC+dirnr2bLOomvzQuxrpX8uoBWF7aurS5CvFuZvEdMncp+pqaaXj/sGlOk+zV2sv41yHqtEVQF2w7Bt99aadF4rw4VtQAqomKbpIEMLr4Z0XrJIAiQgIYXFokgCIkgCIkgMHnwZAACglgVnx2s2edJIDZc97+rNckgCSA4fVBAkgC6C0GEkASwIyXAglgzvvoZ3ZEJICZRS52y5EAkgCSAPqeT+4AkgBmLAfuAAp3AGP32x3xnpEARhzyLG8wSABfEykUCsNoUpV31qeqD774v/ZdXBK55qHv3LnKKN6yZdQS6oh1f/hQ3fAf7jXu38E/Xqw64nz8Ahlrrsb8miogaQl/dDwRQWkelLV3Ki1QGcRkWwXML2J9QVpFpK84AWMV5ff1WA+sK+UljNA71qCfnrWotStiUFxUxTpPwpsvRqOt1r+OhXFNvR31Vps/R21Q+XgVH3aC6+vdjdBGclEr9COUzxB+MwfHWa4WxivdemEg1mf4sqt9mCr9lLlLxWZOQvyrPaO0c+vU/H3p8keeRLFolz4YL7bIC6gTm5UL40TfuUqJG319bfge+iou2o8YbUfJmZRScsQlx3DN334KDfZeyOd864aN74+A+/WB3vHl5QoTpW9L+1ZpMvs6TaZtoZ5T9egEAlH6SfMt2NaNBxCjTSk3wP2/X+biidtaqA/cruLtllW+c/Zx1Miaq7Htc8Nd339OwVi/g6UP9ON7uR7Sye+gB548g+P8YE8D+MPF4uLc1h2PMaTNE6gV3Wt9QjsRKbFvH9S1LR4F0aUKu3X40DHUJOsf6fQ3qLuzFRKg7oRNLqa3l6G9/q57Y7e7X63J95K8SKLu2i9XQvpV6QbpLgb1t0/Wd9kDl+C7rK3P+9O7K75tUF0a0AB6Ue2pAcQFGOUUCWCUJyALmicB/F9AJQEMgmJIAIUEUEUW9xYGCWDg+SAB9AxnSQCz4Lsck1WSAMbktPy/OkUCSAIYRoA7gCLcARThDmDokeAOoHAH8P/1fc1RhUkAc9R0BgbzBx/A2qKOgJUFip3oQi0lP4LHeLUN/m9QxHe04IUFsmgz8tkpPPJKL3AujHARPPUQ6Yrgbz9UAv5wQyqGBzuZiJYDpgKO68RCt5wLdFbhv3yhw7xGHpQt0NYMizYZLW9Ga5e9q13buVWoq8tV2KyxdVpD3e0nTYX0xEdx3MUtYrZH3HFP++1Y1nyG40rtgo/w1SfUcWduxLS+uPlob73gMu5aKbUhfUQQ74P78KioXfwkuH9SPTy2mu07Qm6KEblkUxzavlR9zouG6K7Ul3BccQ+p488TLt+sxrzWe/CYvJpa7+ulKrS1S1Bq8JpxR2SVBP06JgiG5ntMlqo3CB452sk4jvltfOdnXpDv6a68Oaue0zYoeahuMZ7h2jfQPsXkxvL9nnBt90cHJUmYhkeIe29W/k0Y8VHUsEWGYlsPlHk7jMOCVJRypM91YeK8m87dh5hcUAfr2rgZ82/wQabX/9AzeO97Fh/GdTtuxfmZoj55ylVp5U9ubdyZ+gmUPTldWZ7cj1XvLHYF/GGhODshL+OYFA7n91uAXlDpKqp7/p+w7mQVr7C2Wnc7BdeVP4JhVYv4lzBoU6U/gba+klvsVOvS94opeOQXKH7mTMh7LPTXjnFBe6BTaekyOi4go2EoOA14FNMkgFEEP4uaJgH04iCTAAaW1ywSQCEBFCEBDL1tSQCFBDCLvrzZsFoSwGw4af9Hl0kASQDDS4QE0Nu88ruRi3AHULgDmPGEcAfwD58T7gDmPFLwn0ZEApjz5poEkASQBND3XJMAcgcwvBy4A8gdwJz3zc/0iEgAMw1dzBYMEEC5LVUkt/dP7xd+qOFYdM0F0Pkxdk44/eEKFLYsvQ2XyFC7EMou+wz1PqYehloaY2eH7+9glM5oFlo4aEQnqLBaQy2GutppPsQio523RZ2OH0Pe8jfQ+sDc5bRw3o3dy2CcukvMc1C+z2SX/AndH2Sd6niaSq+1ziLDy5rUGLVyZmEqlBgVkMkEry9UCLt5Hykx1z3fQdnq9r8hva5VHeyNX0am4JOPcTtkuer3DGkJdZWSXZA+K6j/uV6crk/rC0eaRlDWdnHWN16G6YZh5WzfvDiOF1zSLMD1nb8NBjY72VVpt1RIQvOw0hf6QiUO+KgntNu/Cury7LX4fDw351m4/xJB8WP3QS5kmnfj531deZxJka8t3jtlTweou0EC6lTzCmLWQ14O399XBkLZW+RLSA/f4exoAhkHcVxzEzHdvJPCrLhPk9nnCM5VKcTf+mxdAjf6Qr15yesb447t1o0+XXJlDF+4R9CGpIQKiTa9H3ZFBy5rmF/p29Ldmm1iUYP8wRO4/vuPx7r3quelqtKP3iHLwgUm+2O1iUifU7goCz6BcTGXTkZ9bn1zHz4/bRAHM8W93+LS0U+ocD5ck9PlYahrkmC8vdfy47p7O92Fyexs1PPwDVr6SMhSKWADE/zMUAOIyyaqKRLAqMKfJY2TAIoICWBwbZEAipAAej6WJIDe80ACKEICmCXf3WxZKQlgtpy2P+00CSAJYHiBkACSAHqLgQQw+EiQAJIA5rxPfuZHRAKYeexitSQJIAkgCaDv6eQOIAlgxnIgASQBjNUPdzT6RQIYDdSzts2gEfRqkUIFgw2ZFBV2S+n6/C5R6PIncntXpZEZ+Rr0vr/F8EevnX0S8o/m9oVU+1S9fmchECMnYkivrvejyMaqfpsSSof0tW85O7lNoJHvVTiqkumog7w6HxpvHW5QEjpnlo4Kp+2hLpC3+HIcx0qL+sHBk16EG/YqH8ASW7H8zOuahP+g9ThaUza3XisoPEWFb2vzFdbdvJozY5xnlJ5Qrct5tiH8RUcIeFJwLdz/LooKtz/giusQaXlTUYM5QnA+ul+j5raV8ib73OUv/hz98O7qsQL6fdvLiyG9vKnSg76PXn8iZ8L3jxH03uuwC3V2O0pe9adP8/3yLuRvaIRart+D4bECVx7l9fbxz6jfXCW3QF0PmSGQLi8nsC/LL3LjUM9Oe7SNE3lCDQPtDkVQ2itK7ilfP+J8HW+8XC3oBVh3yxpvwh9mdHKaMi8jbRSGtKuS65vw/TsfLQ9ll05U2rjiK7Ex5We4XnAdHVU+pvXfceWbPYya2OHyNNQ9RjDu5cvT8bm/8F7020v/1L1p5zRD7fQD+3CdfBuPofYqX4i+jXefxDCOi//dFPpW4h/bw+kzarIO3lsa7u26ENdRM4OeqIkoNxTzvvaVddUdVPjeZ4Mv4jNpJ+SruIAvIjWAf/rGiGwmCWBk8Y5EaySAHsokgIG1RgIoQgIoMoYEMPA8kACKkABG4jOcPdogAcwe83Q+vSQBJAEMrxcSQBJAbzGQAAYfCRJAEsDz+Zjm9HtJAHPeDJMAkgCSAPqea+4AkgBmLAcSQBLAnPfJz/yISAAzj12slgwSwAUihQqEulhBdVUdj5obfJoO5Yxv/1tpr8ajx1c7OxMqf3NQJ2yssi95HLOmtGgBf9B6t/2CsWfHGRzInW2wvkFTXDrJFoXMIwZjVsZb57Xn3eiP0+mltXZrqrj4vjd+qzROykKt2AJUUr5nUE+Y+BH228xETU3cJCdcOja4ONzca0B/SA83yudPikG+7YmaqXuHOc/HhdN9Ij0RGZCEnnfXGYxX+qDyNRM5DG2NENQM1rPO9/GAmsu7B6kAynepNaqypYcKjipfuwLTm2HhxN8hfUXJPZA+OAo1UDJStb3LOfLZ+uhP2HIJ6tdmGhXkWHA+lln0fDyk5uehfvPDjc/2eRt6f/zBKg/CfWhyZ/teCB3f61v/XkZfn4/g1M7t4d7Dr18M6S0GH869FjFtVXwu3D9K+QQ++bPLfi8BNZbNjM9EM3CbEgUKimLtaHznDOjocOj/jvKdu0S9nxqFjOdC3VmvfAKriTIGfASfp/oT3XzoWNjfp14PGLwS9xSke554CdLHx+E7qGT3H8L5/Q3Gwm6r4rU3Ue/V8QY9CK8Q5bUoqMVubZ3ouadBH78SyncxboXS9Dn7yEB/33wX227X1glX7VaF/1RVV4ZVZXqaSP/AO5caQPW6iWaSBDCa6GdN2ySAIkICGFxcJIAiJIAiJIDB54EEUIQEMGs+vNmxVhLA7Dhrf95nEkASwPAKIQEkAfQWAwkgCWDGS4EEMOd99DM7IhLAzCIXu+VIAEkASQB9zyd3AEkAM5YDdwC5Axi7n+7I94wEMPKYZ3WLQSNo8URUQSPAnYKmXrNsV+jDsxWdCMrux+51TEFNzVgTDzfY+Q9Cek1j1EzVbOXiaf4yLWRMGCpRzPwKZUcpD6lxFmOCft+rKtxvlqLeZPK3bjlPCPlPZRRYVaQeltX2bTXUtGDYYRGfpZeZpXQuledB4aXSHNJ9LQra1hnEwVbA+Un2tX2D0ussP4X9bKzkiKJ0lotvwvv/Ya8I/6GMQV8zEYxivE1QcxafoSkN1VAgAXFYvBX9+O4e4Ma9sj++apIsdnz3+Ougo4897nwXvYwJj6L3ojzj2rZfo4fgV/ejVnS94LrpUBTFcvYT9Rr0SU+bF3O+iV4/vhfUgemHeYXSABYzOPdjVLzYlXJruIoZT6Af3r5xfofOP7Zd3+D9otq205zWcRDaRUp11fE70ZZOdi9A/drnSkPbVj0DtqgPQwwlKyaXel5+xHi+djLGsS3eZgf0Lp8vxnFF2QR5H3bG2OUyWgV6FhSXTlbvwjZKR/ydb2koe0+5YgqOo2Rrp+nzOrV7Ba5he1Tp45r6TAk3q9oxdLlIDxdD3avbJuB7VhrgBBYZtxf+kFKuRDjdctuf+y6abujJ2bcMxmh/8Sf0CTQ7HQ5xiWi0mHqkMH4ffgvqVNOOi8QFQzpTA6hfGlFMkwBGEfwsapoE0CMMJICB5UUC6Fl/kACSAAbftiSAItp4mwQwi77E2aBaEsBsMEnn2UUSQBLA8JIhASQB9BYDCSAJYMZLgQTwPL+oOfh2EsCcN7kkgCSAJIC+55o7gCSAGcuBO4DcAcx5n/zMj4gEMPPYxWrJAAFsmDpJ8hQKxgL9YDz6OBV5BPUiRys7XV/7TajPGXMY9Tk63OjFxdAL7nhB1ICIuPrm2GTALJechXTTKhizVXIjxGb9BPiD3foY3uDzczMXo16n0ktr4N5ve90MaXMa7z/3ttLv+CRpDZNQ86d1Ybs3ohZoYSXUH3eT22IAAB+ASURBVK43GLB3gAzFcU1+Jpw2Tyv9FIbblcM10M9th5SBurSX2dWyK5y/2eyEe1seRAHhuTUo+rNbEJMhvVFL2lvFFq5knR/fKEEN30XyG7R9paD4NP79o5CfrmLXzi3gfOpaPYQedUr2JSmt0S/v0rLpuA5X4rjP+jSapgniP2P1P6HsrYKxZxcpL8Q2hdFY88Zj66D8plFOjdety2DIe3U6xmQtm/Qt5H+sBlp6LeqxTE1f35ISoezgad0gPU1QJPh9PB6biwvHGyin48Guf8KtjWqVEbPja3JBWwXz43Pf06LWdFhT9OYz1tX3+vsoMOzUFfVtSiIo5jcdyxxfGbYYruntPovIa9HWUoZ8hOu9gEEDyS4yECrv7uu3l/Gp3BHO32hQy2gn47ssTcVmLoRSbDGd0NvS9k6Attf6llJNwXdfokWtb3LxOxEU5QNoVyNGvUa7+RlulK/iPViVfJgRL9x75np5mdQAKoiimSQBjCb6WdM2CaD3gSIBDKwuEkAhAfQWAglg8G2rTL9JAEVIALPmQ5wdaiUBzA6zdH59JAEkAQyvGBJAEsDAYiABJAEMvRW4A3h+H9ScfDcJYM6bXRJAEkASQN9zzSNgEsDwcuAOoJAA5ryPfmZHRAKYWeRit1zQCPpzkUIhu7l91dBPbJCgz9OYN5zOr2xH1BltvxN9/WwLpY17FMUp9nnUDCYM2BZGqoasBdQel/GQrj8P9VTSHLV2tj766/Ve8hyU3y8ubu7USzD2qeTHCat/wMX89HKWGtTBbBTUv1Xyxd6sY7+CylbsQ/+7ZfF1IT/BrIZ02QdRl5Q48xPIXznTCd7MBLx36XLEf5FVurEVqBv7rA5qHQeJy1/WFs3ffpiMMYtTDcY0fte+CP38Um6BtD9espdxeX6nNY07hTqkZy0GRB6yBQPhbiuPmqaySq+4U/KG235bxcwdlILr+/R/Ydxn01LpwpRvXYWTbn71Gu08ahKMeWuXUpC+rjRiVmYnGkp2k1fh/k5tfRo2tIOUNR3x2bvZKCFeonp9J6tA3olJ4bZ2rMSY0mW2HIB+dC+P+rWXiuCzZd5TL7xFmDbDfTrMuzCO8LSPsZ+tZBYUHijocddXxcU9l+LKDy6C7dZS3dK2mO1RjiujlG54hqA+et0oF8s5pQtqR4sY9OYTOYmtl8DY5na6elfe5dZd+5OotR7bFuMKF53sC64cCGG3HtpaVBExLrVJ+Wqaf7j7e6h1otaZjMZh2OfU/ToMt09CaworveeDqPcs0D3oMZh2WiRuYuCf1ACqNRvNJAlgNNHPmrZJAL3QVySAgdVFAihCAihCAhh82ZIABtgkXiSAWfMlzga1kgBmg0k6zy6SAJIAhpcMCSAJoLcYSABJAMMvBRLA8/yk5tzbSQBz3twGCODs1FvlokJBH5V7n14Go1zzMk57DV+2qYdWEhUsHkX8Kmg7snu2Cn/0JNZd5pA7Atu5pDz0o1OD4ZAebSribIy8G9Kn+2HdeeerozwX5Uzsv/HetEZ5oK643HgEmecIxoL7/TI83rGTXeWftEFLjUYpWNfqy/DIsVp/7GfBHr9AX47/gGG37D7X988a4xFuPbMQMdqMZ2IPlJ8K+bNvw1hXZoU7flukjt7uPoRVm3iF75kFcENfi8e6lQ2GjGrmO2E2m7Cuoj/huvrlfozNN2suzt+DXVVffHYTTerNhH61FQz1VtUshfwEFdLLJih7m7rO7qOBLIGyN3bFozYzHvu1JR3r+so+AOVbr5oD6Ym4lCCvDS4j+TQV56dhNWzb/qxe58Xc/SnqbPTrM9iwtjLqMh4tl4YpW5JnlLWIZ3KScRU8jpYmLQrg0emkRp1hIGYRjmO9CglZ1Rft7bV3EYMnH1cv8IfUGr5CYfQVYpSQ5CQqXsk9Tcu6CgKuJb5LYVD2GyWXMT/C7XYYSlaSewZjoXlXHvM13Pu4RZnIxvE1IX/a41hXPsGYkPc/iv5QpoQvVOKbOOb3fsb3atN+aL9lvvg/rHMe9NWHbk2SjK5gktgzOIy0UyJxQSstHgGrZRXNJAlgNNHPmrZJAL3YmSSAgdVFAihCAihCAhh82VoSQCEBzJoPb3aslQQwO87an/eZBJAEMLxCSABJAL3FQAJIApjxUiABzHkf/cyOiAQws8jFbjkSQBJAEkDf88kdQBLAjOXAHUDhDmDsfrsj3jMSwIhDnuUNBgjgchEJucBIVZSoSauGqO85Kc7uQIdnmz1Kaci6HoEBnI67DNJ5lCbn4uedKOR4QWy3vUWbhYvlV6irnMGQUG0mI3bmWdSqfHvA6XcuUhYNZXeg5szuvgAr267qVrq9Bw44bd1rBjG5oiD2Y9txfKxuOJYClacXvgTS2yzq3+aK0/v8S4WbuvQY9nNPnE/4KCJlDIZUE6Wnsttc38w27Pfph5XGMlV5fdyD2qG6C1F31NygrUwHn92NtrpJzoO2O1vOYNtKSiS3P6F0ST4rimaT0f5k7mYMa3a0AnoAab1b7Tc3AKhj2rn57WDQ5sWOxLBlCV1QQzZT6SoTG6PWa/4CjGnXZLxPn6h+jSlKEvsHTSZKMKXCSrQnul6+d/8RKItrtsc2tPR5uRXavvyupKaDj4XEXKEa+xtMi7wTbstuxbB/phxaLolcDnjbZah3E2XL44/ecX1jnKuGgmt0RNG+UHfrX8ZCesqkDpAe9Cg+T30GufQn6CYk9UvhGqz/E45ryWYME2gq/meN5vUJOI79p66Ejvx2PBjGM+M6/RsKQo8m4JouMltZ0vj1isfQfivJfgd1DxUXetLLiE9EYZ+5U4XJfM09qxfMwbxO9VDX3cwEhZQnRCQk26UGMMspwF9vgATwr2OVXe4kARQREsCM5YqPOAmgCAmgCAlg8PkgARQhAcwun/a/v58kgH8/ptGukQSQBNC3BkkAuQMoMps7gIFngjuAItwBjPYnOnbaJwGMnbn4u3pCAkgCSALoQ4AEkAQwYzmQAJIA/l0f2pxQDwlgTphFHEPQCLqlSKGMaFlBO0B3oSRNBr3vsvqgZaCUrYteV9viK0NVU/ehz1kb8xrk22FOo6a94OwPuPwafPUBlF0yEzU1Gx+6FvJvOIrCvRsuXRfO32ywn13ty1B25O4ekL65JIahW5FaD/KvjXNGat/lL4f9TPeZ0onIemW1P3xVP8SkCI7bfIQ6mpu7fxa+/8tF2A8Zh1PZYwFquUYofaJNwpBqxh+GToXH81m5BRu5C9uyvbDfRVa5UG/enUdzK83TDNe2yYt5h5uhn2Qx8zo2loyatZK1foD8Xb3cHAwf1gnyelZBMd1aXMJSc5bq5zEcV/Ljzq+t9juo1bJD8d63NqHxXLuiM3CuW+P9YzFyonSAsGcYElAmoU5SUHIpI99HwW0p2QVt//Mj52G4txH6RZZ4U70EVN167vc+juXjFykDuKDHW+DagLaLUk3QwHBuwArOXc2URND8t9J7OltGkWNqPuagq7F5S+n0FmPljwiG8jtmcOBFrNO5Nt2P/ni1r8SBrayIek6z+XMYVznrvYrdtfVut67uWYyGhh/e6TM79H7E1ld599VB/W0zg+Oyy1xoRK/FFnWdF+acja2hH5UqoXh01ynUuXbOh+/wkSe6QfmjZ5zBZGKcpzZ31zqDmtgxEvSE9BSKoSCh1ADimy6qKRLAqMKfJY2TAIoICWBwbZEAipAAipAABp8HEkAREsAs+e5my0pJALPltP1pp0kASQDDC4QEkATQWwwkgCSAGS8FEsCc99HP7IhIADOLXOyWIwEkASQB9D2f3AEkAcxYDtwB5A5g7H66I98zEsDIY57VLQYJYLxIoZDVnTmpNDVHUONxUJxvV7Lq3XI7DP5yQNCvat6Oh7GE0q5Iki8bpSZij+Dym1oH9YRjBD27mslcaKtXcdSNbTzo6quUqMaMYTrFdlZLvyEOwxxSOrEvfP55dVXd2C2RcRgz90iuJlB5ERXPtN59aLr2mXFmf9MEPe1aCeqM5lnlu7XvPRxIMgr9bHk3jt9RHih5d6kxD0CMtvu0ol4j1+5Ti2UFpuc/5DRS/3wWY+ramxX+Ku6teUZhjPI22XygTLixCrV3QMNTVraAdJsRGItWeryiOq6N55w+roQ9A/fu7Yw6VEHZqtiS6lfXKgbvBbcqjDf47m+suqXs8Uwr9OC0PdGD07TEurtXGhiucMRG9MdrUgnjJ3/QqiU03mEaihXHGoXRB6hv8z+a9ixi8MgMfE6rynpoq308xq8ess8v+hPpveVV9x+aQVh3qxnoLfqk4LttkeCD3W8PPi9j0YJTrvH1LF5NR7pF7W/Vd5zPonfrtw/74giLSGWjggfLU74a0YvPXlkJWjOH1TqpoJ4XlAxKWi+MdV4tl/OEvF1QpzehM/o0qteq2JuURrm1ehab/+bmo24B7Pdnqt/zg3Wl/SYSF5TLUgOo1lU0kySA0UQ/a9omARQREsDQ4iIBFBJAERLA4PNAAihCApg1H97sWCsJYHactT/vMwkgCaBbISSAJIBCApjxQJAAkgDmvE9+5kdEAph57GK1JAkgCSAJoO/p5A4gCSAJoHsguAMYq5/uyPeLBDDymGd1iwEC2DB1kuQpFIwn2cOgvqfWpdiFRinzwn/oZ5pB5tcWPaQ6GAyQudeiUOl2cR52XkXbR/m0LSinEltaaU2+Q/3IvH6o32l2H8b9LDj9F+jrpwWdP1UNFSd1Zw2MmfuLOQhlf7fOo8vLSByOMVzN+65vm1c7/Zl3b/muOxHQOmqKfR5pgRwVrte0Uxobn0Rq6FzEqNfzqm41zo1LUKOW5IvR6pV81FQPV4ARWUUenI79WJOEbd+o4hDn/VDpfarj/cOvdf58K+VW6HgLg3rPJCVLqjxyNdz/zdGbIW18S8E8rfA7iNqs5bYtlL1InIbJy6j+3CYE9Q6XnFcH12DTB9AbLsPcLKPERKXby2txnL+ZOdBWLV+qkuBk2mmqMiU/NONw3KOmIP71bOlw7eVvwjU66qugP1vG1dW4+NPe3+wS5XHXAL387GgUbRp/7GztKVhTBdq+TA3kCMaqFUH13eljTqya2w0p0HWjfEtrV0avvuRVyktRyfIObCoMOJQ/uyWcTqlVAvK+V918z4ac7UJ3PbcBvUatigl+tI7T414n/4a6u4nTOXoZK6U25JcRFDGPNr9Dvh2EGk/wUkTpqJxboN67L+DyP9gR57Z4N3zwR7zqtNlP3YSxls1BXJNj9gT9PE+mnZbucQHdKTWACHdUUySAUYU/SxonARQREsDg2iIBFCEBFCEBDL1rSQBJALPks5s9KyUBzJ7z9me9JgEkAQyvDxJAEkBvMZAAkgBmvBS4A5jzPvqZHREJYGaRi91yJIAkgCSAvueTO4AkgOHlwB1A7gDG7rc74j0jAYw45FneYPBHIG1dLOAF47HNxjr2ZhO/SA2VYR/Yt6DwfoMamw7LlQ7sKC6pjfc5vU/lERgnckJ39LgrYaZDWw8cPwzpXw87jZ+XYSZg2z2HDAjfP9yoQLcje0FdnbqgH9jrCzC/RWMXS9MreEpcrM3572D8Vz2j9m2lsVmKgC+zQ6FIvSpfYhV+e7fbMMvmwbqnY7clqaPqjdJd+vWHZqHTO3mlThQoD4Uvmoh1/YRSUimtNGsiNbCA31Ttx0OQZ/ehJtPEIya24zNYF4b7lV+uKxjOLzrqONxruqI3nE1GvZsoP8M/aDJnOv88GY2a1/mdEP/G2j9yEWrtbDKK1kziHujrLHH6NiXNFeW0JzUwvLVsUDGOq/6hL6fDbdkKGCvWnFHP7Tj1KdAYqc51fh79QUdv6enGpbSi2xKx7svPoGddWm7Us8Wrti5Yd86NY2XI3DT0F9MWY3jbYqidM08pfegzgwD/gYLauT4+ja05qjCqpDDSesR6vnUTaAUHYuc77VznxojfYcH37uxJGAtb1FzvHl0UxlEwN+qhfzzrsjHq9h+/P9ffi38zBRRmSmcsvtjyI35ETP5tR0JlL519OpBOS7OScGngZUQN4B+nIGp/IQGMGvRZ1jAJoIiQAIbWFwmgkACKkACGngcSwD98eEgAs+xbHPMVkwDG/BSddwdJAEkA3aIhASQB9H7Vyx3A4DNBAkgCeN6f1JxbgAQw581tgAD+lJpPChUKTu+lfdJxlIoUmOH+WGYYr82OrAZlzXF1PNAXw2r1U74YW607Sp1jLsF+5MbYV7t+xyPekxK0scm4yhkMTyWC1i22lu9MRp3S7lVHiAl7T0Ld3ePRwmHEm3g0tLmds34pvweP+XokvAh1FRM87uw5fDTkD+mJoa6e3YPHJuaqE+H7D1s8GiqcisedeQu74zGvkB2mjsh6TUPMf3Cx+ewOfPw7NER8x9REm4t9a/BIq5q4cFNeIzrO6pPiQoAVXa+OaW9yx5OBfh9SR5SXo+XPGIvh3Nrvd+HDWl75JoxR27y8adTkY2QsubkOWhd9Wa6eq28Swpf3OrRDuaggWsoc21ocn5d56nkZuAHyB4p7vvrmx3snp+P8tN2FmG0ueR3UVaEzhsQTn/2HVUfXFWutg7Kbpjh7oECGCmE3cZg/pqNIx5Q3oPzvl/mep764Zm0LHEepClj5biUrGeELTek1Usw6a6qk/c6yKtABJYHIOxLn5/Qdyq5GhxhUJ632LddX85aaux9wLeTffBT+kF4Y7Yf2WgwBGb/U3Z/u9/8RkXynsO5rLt0Mf+goiPdTVyn7lT2T4f7N1r2TKozCdbGhy/Vw741NcT7M+3iUPUsdkz/oD7NZAfs9bGxn+EOvJaF3wIk0kWaBueARMEIW1RQJYFThz5LGSQA9WEkAA4vLkAAKCaAICWDwXfuHGNMkgEICmCXf4WxRKQlgtpim8+okCSAJYHjBkAAKCaC3w8odQBLA0FuBO4Dn9T3N0TeTAOa86SUBJAEkAfQ919wBJAHMWA7cARQhAcx5H/3MjogEMLPIxW654I9ABogUCjmhmF5oPTHCDobedzdOX9JVWZSMNBiCq7/FUFj1DNqp1O6hdDM+aV0li34C396EdctTCKpV0q0LGqu61fFN1zpDwhUUV94evQzebLujtlFQoiYDxvlsLUSkf3Fn25B44BPo6MqaGDarxhoUma17B2PDHX4YjRk2SFWo7+Gz74TT83JjOKq9at21UJYby+KwrUaHPoIS5674Ipy2k9E3pGobtNTYUBYtNV5REb32+3RGXqUjLkTdpKQ7Hxk7Da1YaiQhRiPU5E8RDN82NhW1RWvjnP6z9jLU1QnKOWXrYtS1lrt5F2BycI2yKfEvjVxqTSoMLjiHa3LRMazrbhUl0OxXazjRWR+1t2h7pMOBbd6tfGBKYbhCuQdteOxdri/91bM0oJSyOHlFWRctUv1UWkiZpXAp6sr3rvscZA7ZgLHGbIoKWVd/Idz/2cZ7IL25ktPfvmsQ0LusL9SkiNQ8vBHKNiyGmsFFTTHUpbEKh2Y+DWCrz6GuaRa1vBXlO8ivvAPDuzUpgyB9sMfno4RuNGKmKrzVVMua/tDWNou612sX4JvBNHF6XjsHtbxf318O6npN8Nma2rY95I9RIQbb+2xjzEJ8py+3T0LZjHdbetpp6RMX6DM1gDHEHUgAY2gy/qaukACKCAlgcDWRAAoJoPcfGBLAwPNAAihCAvg3fWlzQDUkgDlgEtUQSABJAMNLggSQBNBbDCSAwUeCBJAEMOd98jM/IhLAzGMXqyVJAEkASQB9TyePgEkAM5YDCSAJYKx+uKPRLxLAaKCetW0GCKAsSxXZtFqkZgOxudQ0P4AdmLjTeXxNkkcgc91U1JQVbI4hh9KuUuHZrlSD88mafjhUEjKrpKKGKb0w+gSWsD/C/Xtvd2HlvAz7T6Vbyu10NFvUrx7LV/jP2kSvruoNVgTaOrZknRRuUF2GC2oAq+R3vmlxp9Bbr59gSLv+ynqvP2bLgGTsyxoVKutC36grtcF784/U3mMqXtvLaIy2vgdidLV1IfLmGfSHfN+iXmrxJU1xMo+hcMlu7StLkkUaJAZva3gdlu8t7v7aBvVUm20VqPuI+OPfidx2+1rIt9vUXN/qcLF71PrGJSzis/ULVKo87nbXx7BaK41b40ldEIK3RqK/UDuDGjRpo4zpVCi/Oq0/lqNLNsilDYK6z+Xj7w43sPtx7EdNFWrvQA+nhfMKmTvVmm6OfV38q2v8QkHfy8v8JoEiUsHMQLzn1IR02fsxFtn2S9S4P3S3D1XruRc+SmLGqH4fR32b3KHSXtUpS0SKNBC/T1+gReymiPJ43HgtvjMqlUUR53PbnoVxDhzh00c3xxB1UmoVAtwJJ3fWaFyHD1bGcQ7+plu4/GRBTfIqCT1EoTuKlkVRcrFtu6Htw7fhu7T5cnzpjJX28tmSM1K3QW4pZhQo/VFz3K4fahsbCnpwlhLUzNZMcbq/I/HosxjXWb9nM94Jnl/mf3ljoAYQV1FUUySAUYU/Sxp3BHBif5Gur5AAishfJYC7n3pDSr7SkQRQRP4KAXxqqMgrobC9JIAif4UA/vjUBLnmleCPYkgAReSvEMBtT4mUfYUEMPTJ+CsE8LmnTsmLr+QjAcySz2zOqJQEMGfMo38UJIAiktkdQBJAt5RIAEWyYgeQBDATO4AkgOe9A0gCmPM+7n/3iEgA/25Eo19fkAAu2CMydahIh8GSegFu06vTB5nynTsTfltawwg2zMCjiQJNfPGlRGRfeXUsdYUCwHdivG1HAmQmpjpLEi/j1FV4BHxlKlo+7G+EbaXeo44fcrkwUGufxrwa5TBElGC0I6l6R3Kgb3t6T5SEwY/KC/I89PWGos5qJOH0BMh7RtDi5FnMliGYLUOXYF+WNcC+ukNakVot8d58Q/EI+NRVLiRaoFMD3TFTYIepL9ZdMjVfuO8L4jD+1MJUPEb69CoM1SepL8G4U78aKL1fFRkcarJZWSzfw+fHclec74xQRNakosVMihSBuhs1wvBsqT+qua7lcEndq9Y3LmERVDGIoFuH/FwP214dlxLuS4sncD1PG4bnrJ3iVCysloi/4DClVstP5KfeU+TqwcEjwEVvufp+/hf2o54sg8a390FvkLjb1ZoOnLC5a+5+Z/NzoeBxfxFxY/RK1AxadISv1Cl4bl7lvuDzkXHtvKoiNjbHJfur9dxNHaPHTVL9PuHsmwK13IbHsoG//dhb5JrBkvqGmmt9vI+nl7KpjC88pIhUrILvlIHfoPfUS6/3cwNpoo6AK6LliTyGk/vWBOzbvyriOJ9PDm2Vi8h0eRjw+0QaQPqyKi4cpJdR+hsMDbezIa67VovwpfOqdJNBvU9Jn8H5pEwcWkHJMyi/aPXseGi7viyF9FXyM6TrHXXr8qd/4Ds94XE1t6/PD5X1JAiPe//mETA+OVFNkQBGFf4saTxeRLRdXJY0xEqJABEgAkSACJwHAp6x6b7zuJ+3ZiECJIBZCG6Uqvbm1Pspxq9Rap/NEgEiQASIABHQCHgO+Pu93+8RmthAgAQwNuaBvSACRIAIEAEiQASIQMQQIAGMGNRsiAgQASJABIgAESACsYEACWBszAN7QQSIABEgAkSACBCBiCFAAhgxqNkQESACRIAIEAEiQARiAwESwNiYB/aCCBABIkAEiAARIAIRQ4AEMGJQsyEiQASIABEgAkSACMQGAiSAsTEP7AURIAJEgAgQASJABCKGAAlgxKBmQ0SACBABIkAEiAARiA0ESABjYx7YCyJABIgAESACRIAIRAwBEsCIQc2GiAARIAJEgAgQASIQGwiQAMbGPLAXRIAIEAEiQASIABGIGAIkgBGDmg0RASJABIgAESACRCA2ECABjI15YC+IABEgAkSACBABIhAxBEgAIwY1GyICRIAIEAEiQASIQGwgQAIYG/PAXhABIkAEiAARIAJEIGIIkABGDGo2RASIABEgAkSACBCB2ECABDA25oG9IAJEgAgQASJABIhAxBAgAYwY1GyICBABIkAEiAARIAKxgQAJYGzMA3tBBIgAESACRIAIEIGIIUACGDGo2RARIAJEgAgQASJABGIDARLA2JgH9oIIEAEiQASIABEgAhFDgAQwYlCzISJABIgAESACRIAIxAYCJICxMQ/sBREgAkSACBABIkAEIoYACWDEoGZDRIAIEAEiQASIABGIDQRIAGNjHtgLIkAEiAARIAJEgAhEDAESwIhBzYaIABEgAkSACBABIhAbCJAAxsY8sBdEgAgQASJABIgAEYgYAiSAEYOaDREBIkAEiAARIAJEIDYQIAGMjXlgL4gAESACRIAIEAEiEDEESAAjBjUbIgJEgAgQASJABIhAbCBAAhgb88BeEAEiQASIABEgAkQgYgiQAEYMajZEBIgAESACRIAIEIHYQIAEMDbmgb0gAkSACBABIkAEiEDEECABjBjUbIgIEAEiQASIABEgArGBAAlgbMwDe0EEiAARIAJEgAgQgYghQAIYMajZEBEgAkSACBABIkAEYgMBEsDYmAf2gggQASJABIgAESACEUOABDBiULMhIkAEiAARIAJEgAjEBgIkgLExD+wFESACRIAIEAEiQAQihgAJYMSgZkNEgAgQASJABIgAEYgNBEgAY2Me2AsiQASIABEgAkSACEQMARLAiEHNhogAESACRIAIEAEiEBsIkADGxjywF0SACBABIkAEiAARiBgCJIARg5oNEQEiQASIABEgAkQgNhAgAYyNeWAviAARIAJEgAgQASIQMQRIACMGNRsiAkSACBABIkAEiEBsIPA/wHLPmGfPGIwAAAAASUVORK5CYII=\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x10f83aeb8>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"fig, ax = plt.subplots(1,1)\n",
"ax.matshow(a)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" this.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1)\n",
"ax.hist(a.flat);"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "HomeBrew Python 3",
"language": "python",
"name": "homebrewpython3"
},
"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.5.0"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment