Show More
The requested changes are too big and content was truncated. Show full diff
1 | NO CONTENT: new file 100644 |
|
NO CONTENT: new file 100644 | ||
The requested commit or file is too big and content was truncated. Show full diff |
@@ -24,7 +24,7 b' import struct' | |||||
24 |
|
24 | |||
25 | from IPython.utils.py3compat import (string_types, cast_bytes_py2, cast_unicode, |
|
25 | from IPython.utils.py3compat import (string_types, cast_bytes_py2, cast_unicode, | |
26 | unicode_type) |
|
26 | unicode_type) | |
27 |
|
27 | from IPython.testing.skipdoctest import skip_doctest | ||
28 | from .displaypub import publish_display_data |
|
28 | from .displaypub import publish_display_data | |
29 |
|
29 | |||
30 | #----------------------------------------------------------------------------- |
|
30 | #----------------------------------------------------------------------------- | |
@@ -271,6 +271,24 b' def display_javascript(*objs, **kwargs):' | |||||
271 | """ |
|
271 | """ | |
272 | _display_mimetype('application/javascript', objs, **kwargs) |
|
272 | _display_mimetype('application/javascript', objs, **kwargs) | |
273 |
|
273 | |||
|
274 | ||||
|
275 | def display_pdf(*objs, **kwargs): | |||
|
276 | """Display the PDF representation of an object. | |||
|
277 | ||||
|
278 | Parameters | |||
|
279 | ---------- | |||
|
280 | objs : tuple of objects | |||
|
281 | The Python objects to display, or if raw=True raw javascript data to | |||
|
282 | display. | |||
|
283 | raw : bool | |||
|
284 | Are the data objects raw data or Python objects that need to be | |||
|
285 | formatted before display? [default: False] | |||
|
286 | metadata : dict (optional) | |||
|
287 | Metadata to be associated with the specific mimetype output. | |||
|
288 | """ | |||
|
289 | _display_mimetype('application/pdf', objs, **kwargs) | |||
|
290 | ||||
|
291 | ||||
274 | #----------------------------------------------------------------------------- |
|
292 | #----------------------------------------------------------------------------- | |
275 | # Smart classes |
|
293 | # Smart classes | |
276 | #----------------------------------------------------------------------------- |
|
294 | #----------------------------------------------------------------------------- | |
@@ -699,3 +717,56 b' def clear_output(wait=False):' | |||||
699 | io.stdout.flush() |
|
717 | io.stdout.flush() | |
700 | print('\033[2K\r', file=io.stderr, end='') |
|
718 | print('\033[2K\r', file=io.stderr, end='') | |
701 | io.stderr.flush() |
|
719 | io.stderr.flush() | |
|
720 | ||||
|
721 | ||||
|
722 | @skip_doctest | |||
|
723 | def set_matplotlib_formats(*formats, **kwargs): | |||
|
724 | """Select figure formats for the inline backend. Optionally pass quality for JPEG. | |||
|
725 | ||||
|
726 | For example, this enables PNG and JPEG output with a JPEG quality of 90%:: | |||
|
727 | ||||
|
728 | In [1]: set_matplotlib_formats('png', 'jpeg', quality=90) | |||
|
729 | ||||
|
730 | To set this in your config files use the following:: | |||
|
731 | ||||
|
732 | c.InlineBackend.figure_formats = {'pdf', 'png', 'svg'} | |||
|
733 | c.InlineBackend.quality = 90 | |||
|
734 | ||||
|
735 | Parameters | |||
|
736 | ---------- | |||
|
737 | *formats : list, tuple | |||
|
738 | One or a set of figure formats to enable: 'png', 'retina', 'jpeg', 'svg', 'pdf'. | |||
|
739 | quality : int | |||
|
740 | A percentage for the quality of JPEG figures. Defaults to 90. | |||
|
741 | """ | |||
|
742 | from IPython.core.interactiveshell import InteractiveShell | |||
|
743 | from IPython.core.pylabtools import select_figure_formats | |||
|
744 | shell = InteractiveShell.instance() | |||
|
745 | select_figure_formats(shell, formats, quality=90) | |||
|
746 | ||||
|
747 | @skip_doctest | |||
|
748 | def set_matplotlib_close(close): | |||
|
749 | """Set whether the inline backend closes all figures automatically or not. | |||
|
750 | ||||
|
751 | By default, the inline backend used in the IPython Notebook will close all | |||
|
752 | matplotlib figures automatically after each cell is run. This means that | |||
|
753 | plots in different cells won't interfere. Sometimes, you may want to make | |||
|
754 | a plot in one cell and then refine it in later cells. This can be accomplished | |||
|
755 | by:: | |||
|
756 | ||||
|
757 | In [1]: set_matplotlib_close(False) | |||
|
758 | ||||
|
759 | To set this in your config files use the following:: | |||
|
760 | ||||
|
761 | c.InlineBackend.close_figures = False | |||
|
762 | ||||
|
763 | Parameters | |||
|
764 | ---------- | |||
|
765 | close : bool | |||
|
766 | Should all matplotlib figures be automatically closed after each cell is | |||
|
767 | run? | |||
|
768 | """ | |||
|
769 | from IPython.kernel.zmq.pylab.backend_inline import InlineBackend | |||
|
770 | ilbe = InlineBackend.instance() | |||
|
771 | ilbe.close_figures = close | |||
|
772 |
@@ -93,6 +93,7 b' class DisplayFormatter(Configurable):' | |||||
93 | HTMLFormatter, |
|
93 | HTMLFormatter, | |
94 | SVGFormatter, |
|
94 | SVGFormatter, | |
95 | PNGFormatter, |
|
95 | PNGFormatter, | |
|
96 | PDFFormatter, | |||
96 | JPEGFormatter, |
|
97 | JPEGFormatter, | |
97 | LatexFormatter, |
|
98 | LatexFormatter, | |
98 | JSONFormatter, |
|
99 | JSONFormatter, | |
@@ -116,6 +117,7 b' class DisplayFormatter(Configurable):' | |||||
116 | * text/latex |
|
117 | * text/latex | |
117 | * application/json |
|
118 | * application/json | |
118 | * application/javascript |
|
119 | * application/javascript | |
|
120 | * application/pdf | |||
119 | * image/png |
|
121 | * image/png | |
120 | * image/jpeg |
|
122 | * image/jpeg | |
121 | * image/svg+xml |
|
123 | * image/svg+xml | |
@@ -766,11 +768,29 b' class JavascriptFormatter(BaseFormatter):' | |||||
766 |
|
768 | |||
767 | print_method = ObjectName('_repr_javascript_') |
|
769 | print_method = ObjectName('_repr_javascript_') | |
768 |
|
770 | |||
|
771 | ||||
|
772 | class PDFFormatter(BaseFormatter): | |||
|
773 | """A PDF formatter. | |||
|
774 | ||||
|
775 | To defined the callables that compute to PDF representation of your | |||
|
776 | objects, define a :meth:`_repr_pdf_` method or use the :meth:`for_type` | |||
|
777 | or :meth:`for_type_by_name` methods to register functions that handle | |||
|
778 | this. | |||
|
779 | ||||
|
780 | The return value of this formatter should be raw PDF data, *not* | |||
|
781 | base64 encoded. | |||
|
782 | """ | |||
|
783 | format_type = Unicode('application/pdf') | |||
|
784 | ||||
|
785 | print_method = ObjectName('_repr_pdf_') | |||
|
786 | ||||
|
787 | ||||
769 | FormatterABC.register(BaseFormatter) |
|
788 | FormatterABC.register(BaseFormatter) | |
770 | FormatterABC.register(PlainTextFormatter) |
|
789 | FormatterABC.register(PlainTextFormatter) | |
771 | FormatterABC.register(HTMLFormatter) |
|
790 | FormatterABC.register(HTMLFormatter) | |
772 | FormatterABC.register(SVGFormatter) |
|
791 | FormatterABC.register(SVGFormatter) | |
773 | FormatterABC.register(PNGFormatter) |
|
792 | FormatterABC.register(PNGFormatter) | |
|
793 | FormatterABC.register(PDFFormatter) | |||
774 | FormatterABC.register(JPEGFormatter) |
|
794 | FormatterABC.register(JPEGFormatter) | |
775 | FormatterABC.register(LatexFormatter) |
|
795 | FormatterABC.register(LatexFormatter) | |
776 | FormatterABC.register(JSONFormatter) |
|
796 | FormatterABC.register(JSONFormatter) | |
@@ -789,6 +809,7 b' def format_display_data(obj, include=None, exclude=None):' | |||||
789 | * text/latex |
|
809 | * text/latex | |
790 | * application/json |
|
810 | * application/json | |
791 | * application/javascript |
|
811 | * application/javascript | |
|
812 | * application/pdf | |||
792 | * image/png |
|
813 | * image/png | |
793 | * image/jpeg |
|
814 | * image/jpeg | |
794 | * image/svg+xml |
|
815 | * image/svg+xml |
@@ -47,28 +47,32 b' class PylabMagics(Magics):' | |||||
47 | """Set up matplotlib to work interactively. |
|
47 | """Set up matplotlib to work interactively. | |
48 |
|
48 | |||
49 | This function lets you activate matplotlib interactive support |
|
49 | This function lets you activate matplotlib interactive support | |
50 | at any point during an IPython session. |
|
50 | at any point during an IPython session. It does not import anything | |
51 |
|
|
51 | into the interactive namespace. | |
52 |
|
52 | |||
53 |
If you are using the inline matplotlib backend |
|
53 | If you are using the inline matplotlib backend in the IPython Notebook | |
54 | you can adjust its behavior via the %config magic:: |
|
54 | you can set which figure formats are enabled using the following:: | |
55 |
|
55 | |||
56 | # enable SVG figures, necessary for SVG+XHTML export in the qtconsole |
|
56 | In [1]: from IPython.display import set_matplotlib_formats | |
57 | In [1]: %config InlineBackend.figure_format = 'svg' |
|
57 | ||
|
58 | In [2]: set_matplotlib_formats('pdf', 'svg') | |||
58 |
|
59 | |||
59 | # change the behavior of closing all figures at the end of each |
|
60 | See the docstring of `IPython.display.set_matplotlib_formats` and | |
60 | # execution (cell), or allowing reuse of active figures across |
|
61 | `IPython.display.set_matplotlib_close` for more information on | |
61 | # cells: |
|
62 | changing the behavior of the inline backend. | |
62 | In [2]: %config InlineBackend.close_figures = False |
|
|||
63 |
|
63 | |||
64 | Examples |
|
64 | Examples | |
65 | -------- |
|
65 | -------- | |
66 | In this case, where the MPL default is TkAgg:: |
|
66 | To enable the inline backend for usage with the IPython Notebook:: | |
|
67 | ||||
|
68 | In [1]: %matplotlib inline | |||
|
69 | ||||
|
70 | In this case, where the matplotlib default is TkAgg:: | |||
67 |
|
71 | |||
68 | In [2]: %matplotlib |
|
72 | In [2]: %matplotlib | |
69 | Using matplotlib backend: TkAgg |
|
73 | Using matplotlib backend: TkAgg | |
70 |
|
74 | |||
71 | But you can explicitly request a different backend:: |
|
75 | But you can explicitly request a different GUI backend:: | |
72 |
|
76 | |||
73 | In [3]: %matplotlib qt |
|
77 | In [3]: %matplotlib qt | |
74 | """ |
|
78 | """ |
@@ -25,6 +25,7 b' from io import BytesIO' | |||||
25 |
|
25 | |||
26 | from IPython.core.display import _pngxy |
|
26 | from IPython.core.display import _pngxy | |
27 | from IPython.utils.decorators import flag_calls |
|
27 | from IPython.utils.decorators import flag_calls | |
|
28 | from IPython.utils import py3compat | |||
28 |
|
29 | |||
29 | # If user specifies a GUI, that dictates the backend, otherwise we read the |
|
30 | # If user specifies a GUI, that dictates the backend, otherwise we read the | |
30 | # user's mpl default from the mpl rc structure |
|
31 | # user's mpl default from the mpl rc structure | |
@@ -165,10 +166,17 b' def mpl_runner(safe_execfile):' | |||||
165 | return mpl_execfile |
|
166 | return mpl_execfile | |
166 |
|
167 | |||
167 |
|
168 | |||
168 | def select_figure_format(shell, fmt, quality=90): |
|
169 | def select_figure_formats(shell, formats, quality=90): | |
169 |
"""Select figure format for inline backend |
|
170 | """Select figure formats for the inline backend. | |
170 |
|
171 | |||
171 | Using this method ensures only one figure format is active at a time. |
|
172 | Parameters | |
|
173 | ========== | |||
|
174 | shell : InteractiveShell | |||
|
175 | The main IPython instance. | |||
|
176 | formats : list | |||
|
177 | One or a set of figure formats to enable: 'png', 'retina', 'jpeg', 'svg', 'pdf'. | |||
|
178 | quality : int | |||
|
179 | A percentage for the quality of JPEG figures. | |||
172 | """ |
|
180 | """ | |
173 | from matplotlib.figure import Figure |
|
181 | from matplotlib.figure import Figure | |
174 | from IPython.kernel.zmq.pylab import backend_inline |
|
182 | from IPython.kernel.zmq.pylab import backend_inline | |
@@ -176,22 +184,26 b' def select_figure_format(shell, fmt, quality=90):' | |||||
176 | svg_formatter = shell.display_formatter.formatters['image/svg+xml'] |
|
184 | svg_formatter = shell.display_formatter.formatters['image/svg+xml'] | |
177 | png_formatter = shell.display_formatter.formatters['image/png'] |
|
185 | png_formatter = shell.display_formatter.formatters['image/png'] | |
178 | jpg_formatter = shell.display_formatter.formatters['image/jpeg'] |
|
186 | jpg_formatter = shell.display_formatter.formatters['image/jpeg'] | |
|
187 | pdf_formatter = shell.display_formatter.formatters['application/pdf'] | |||
179 |
|
188 | |||
180 | [ f.type_printers.pop(Figure, None) for f in {svg_formatter, png_formatter, jpg_formatter} ] |
|
189 | if isinstance(formats, py3compat.string_types): | |
|
190 | formats = {formats} | |||
181 |
|
191 | |||
182 | if fmt == 'png': |
|
192 | [ f.type_printers.pop(Figure, None) for f in {svg_formatter, png_formatter, jpg_formatter} ] | |
183 | png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png')) |
|
|||
184 | elif fmt in ('png2x', 'retina'): |
|
|||
185 | png_formatter.for_type(Figure, retina_figure) |
|
|||
186 | elif fmt in ('jpg', 'jpeg'): |
|
|||
187 | jpg_formatter.for_type(Figure, lambda fig: print_figure(fig, 'jpg', quality)) |
|
|||
188 | elif fmt == 'svg': |
|
|||
189 | svg_formatter.for_type(Figure, lambda fig: print_figure(fig, 'svg')) |
|
|||
190 | else: |
|
|||
191 | raise ValueError("supported formats are: 'png', 'retina', 'svg', 'jpg', not %r" % fmt) |
|
|||
192 |
|
193 | |||
193 | # set the format to be used in the backend() |
|
194 | for fmt in formats: | |
194 | backend_inline._figure_format = fmt |
|
195 | if fmt == 'png': | |
|
196 | png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png')) | |||
|
197 | elif fmt in ('png2x', 'retina'): | |||
|
198 | png_formatter.for_type(Figure, retina_figure) | |||
|
199 | elif fmt in ('jpg', 'jpeg'): | |||
|
200 | jpg_formatter.for_type(Figure, lambda fig: print_figure(fig, 'jpg', quality)) | |||
|
201 | elif fmt == 'svg': | |||
|
202 | svg_formatter.for_type(Figure, lambda fig: print_figure(fig, 'svg')) | |||
|
203 | elif fmt == 'pdf': | |||
|
204 | pdf_formatter.for_type(Figure, lambda fig: print_figure(fig, 'pdf')) | |||
|
205 | else: | |||
|
206 | raise ValueError("supported formats are: 'png', 'retina', 'svg', 'jpg', 'pdf' not %r" % fmt) | |||
195 |
|
207 | |||
196 | #----------------------------------------------------------------------------- |
|
208 | #----------------------------------------------------------------------------- | |
197 | # Code for initializing matplotlib and importing pylab |
|
209 | # Code for initializing matplotlib and importing pylab | |
@@ -342,5 +354,5 b' def configure_inline_support(shell, backend):' | |||||
342 | del shell._saved_rcParams |
|
354 | del shell._saved_rcParams | |
343 |
|
355 | |||
344 | # Setup the default figure format |
|
356 | # Setup the default figure format | |
345 | select_figure_format(shell, cfg.figure_format, cfg.quality) |
|
357 | select_figure_formats(shell, cfg.figure_formats, cfg.quality) | |
346 |
|
358 |
@@ -8,7 +8,9 b' except:' | |||||
8 | numpy = None |
|
8 | numpy = None | |
9 | import nose.tools as nt |
|
9 | import nose.tools as nt | |
10 |
|
10 | |||
11 | from IPython.core.formatters import PlainTextFormatter, HTMLFormatter, _mod_name_key |
|
11 | from IPython.core.formatters import ( | |
|
12 | PlainTextFormatter, HTMLFormatter, PDFFormatter, _mod_name_key | |||
|
13 | ) | |||
12 | from IPython.utils.io import capture_output |
|
14 | from IPython.utils.io import capture_output | |
13 |
|
15 | |||
14 | class A(object): |
|
16 | class A(object): | |
@@ -279,4 +281,11 b' def test_warn_error_pretty_method():' | |||||
279 | nt.assert_in("text/plain", captured.stderr) |
|
281 | nt.assert_in("text/plain", captured.stderr) | |
280 | nt.assert_in("argument", captured.stderr) |
|
282 | nt.assert_in("argument", captured.stderr) | |
281 |
|
283 | |||
|
284 | class MakePDF(object): | |||
|
285 | def _repr_pdf_(self): | |||
|
286 | return 'PDF' | |||
282 |
|
287 | |||
|
288 | def test_pdf_formatter(): | |||
|
289 | pdf = MakePDF() | |||
|
290 | f = PDFFormatter() | |||
|
291 | nt.assert_equal(f(pdf), 'PDF') |
@@ -32,13 +32,13 b' class LoginHandler(IPythonHandler):' | |||||
32 |
|
32 | |||
33 | def _render(self, message=None): |
|
33 | def _render(self, message=None): | |
34 | self.write(self.render_template('login.html', |
|
34 | self.write(self.render_template('login.html', | |
35 |
next=url_escape(self.get_argument('next', default=self.base_ |
|
35 | next=url_escape(self.get_argument('next', default=self.base_url)), | |
36 | message=message, |
|
36 | message=message, | |
37 | )) |
|
37 | )) | |
38 |
|
38 | |||
39 | def get(self): |
|
39 | def get(self): | |
40 | if self.current_user: |
|
40 | if self.current_user: | |
41 |
self.redirect(self.get_argument('next', default=self.base_ |
|
41 | self.redirect(self.get_argument('next', default=self.base_url)) | |
42 | else: |
|
42 | else: | |
43 | self._render() |
|
43 | self._render() | |
44 |
|
44 | |||
@@ -51,7 +51,7 b' class LoginHandler(IPythonHandler):' | |||||
51 | self._render(message={'error': 'Invalid password'}) |
|
51 | self._render(message={'error': 'Invalid password'}) | |
52 | return |
|
52 | return | |
53 |
|
53 | |||
54 |
self.redirect(self.get_argument('next', default=self.base_ |
|
54 | self.redirect(self.get_argument('next', default=self.base_url)) | |
55 |
|
55 | |||
56 |
|
56 | |||
57 | #----------------------------------------------------------------------------- |
|
57 | #----------------------------------------------------------------------------- |
@@ -133,8 +133,8 b' class IPythonHandler(AuthenticatedHandler):' | |||||
133 | return self.settings.get('mathjax_url', '') |
|
133 | return self.settings.get('mathjax_url', '') | |
134 |
|
134 | |||
135 | @property |
|
135 | @property | |
136 |
def base_ |
|
136 | def base_url(self): | |
137 |
return self.settings.get('base_ |
|
137 | return self.settings.get('base_url', '/') | |
138 |
|
138 | |||
139 | @property |
|
139 | @property | |
140 | def base_kernel_url(self): |
|
140 | def base_kernel_url(self): | |
@@ -180,7 +180,7 b' class IPythonHandler(AuthenticatedHandler):' | |||||
180 | @property |
|
180 | @property | |
181 | def template_namespace(self): |
|
181 | def template_namespace(self): | |
182 | return dict( |
|
182 | return dict( | |
183 |
base_ |
|
183 | base_url=self.base_url, | |
184 | base_kernel_url=self.base_kernel_url, |
|
184 | base_kernel_url=self.base_kernel_url, | |
185 | logged_in=self.logged_in, |
|
185 | logged_in=self.logged_in, | |
186 | login_available=self.login_available, |
|
186 | login_available=self.login_available, |
@@ -58,7 +58,7 b' class NotebookRedirectHandler(IPythonHandler):' | |||||
58 | nbm = self.notebook_manager |
|
58 | nbm = self.notebook_manager | |
59 | if nbm.path_exists(path): |
|
59 | if nbm.path_exists(path): | |
60 | # it's a *directory*, redirect to /tree |
|
60 | # it's a *directory*, redirect to /tree | |
61 |
url = url_path_join(self.base_ |
|
61 | url = url_path_join(self.base_url, 'tree', path) | |
62 | else: |
|
62 | else: | |
63 | # otherwise, redirect to /files |
|
63 | # otherwise, redirect to /files | |
64 | if '/files/' in path: |
|
64 | if '/files/' in path: | |
@@ -73,7 +73,7 b' class NotebookRedirectHandler(IPythonHandler):' | |||||
73 | if not os.path.exists(files_path): |
|
73 | if not os.path.exists(files_path): | |
74 | path = path.replace('/files/', '/', 1) |
|
74 | path = path.replace('/files/', '/', 1) | |
75 |
|
75 | |||
76 |
url = url_path_join(self.base_ |
|
76 | url = url_path_join(self.base_url, 'files', path) | |
77 | url = url_escape(url) |
|
77 | url = url_escape(url) | |
78 | self.log.debug("Redirecting %s to %s", self.request.path, url) |
|
78 | self.log.debug("Redirecting %s to %s", self.request.path, url) | |
79 | self.redirect(url) |
|
79 | self.redirect(url) |
@@ -133,42 +133,42 b' def load_handlers(name):' | |||||
133 | class NotebookWebApplication(web.Application): |
|
133 | class NotebookWebApplication(web.Application): | |
134 |
|
134 | |||
135 | def __init__(self, ipython_app, kernel_manager, notebook_manager, |
|
135 | def __init__(self, ipython_app, kernel_manager, notebook_manager, | |
136 |
cluster_manager, session_manager, log, base_ |
|
136 | cluster_manager, session_manager, log, base_url, | |
137 | settings_overrides): |
|
137 | settings_overrides): | |
138 |
|
138 | |||
139 | settings = self.init_settings( |
|
139 | settings = self.init_settings( | |
140 | ipython_app, kernel_manager, notebook_manager, cluster_manager, |
|
140 | ipython_app, kernel_manager, notebook_manager, cluster_manager, | |
141 |
session_manager, log, base_ |
|
141 | session_manager, log, base_url, settings_overrides) | |
142 | handlers = self.init_handlers(settings) |
|
142 | handlers = self.init_handlers(settings) | |
143 |
|
143 | |||
144 | super(NotebookWebApplication, self).__init__(handlers, **settings) |
|
144 | super(NotebookWebApplication, self).__init__(handlers, **settings) | |
145 |
|
145 | |||
146 | def init_settings(self, ipython_app, kernel_manager, notebook_manager, |
|
146 | def init_settings(self, ipython_app, kernel_manager, notebook_manager, | |
147 |
cluster_manager, session_manager, log, base_ |
|
147 | cluster_manager, session_manager, log, base_url, | |
148 | settings_overrides): |
|
148 | settings_overrides): | |
149 | # Python < 2.6.5 doesn't accept unicode keys in f(**kwargs), and |
|
149 | # Python < 2.6.5 doesn't accept unicode keys in f(**kwargs), and | |
150 |
# base_ |
|
150 | # base_url will always be unicode, which will in turn | |
151 | # make the patterns unicode, and ultimately result in unicode |
|
151 | # make the patterns unicode, and ultimately result in unicode | |
152 | # keys in kwargs to handler._execute(**kwargs) in tornado. |
|
152 | # keys in kwargs to handler._execute(**kwargs) in tornado. | |
153 |
# This enforces that base_ |
|
153 | # This enforces that base_url be ascii in that situation. | |
154 | # |
|
154 | # | |
155 | # Note that the URLs these patterns check against are escaped, |
|
155 | # Note that the URLs these patterns check against are escaped, | |
156 | # and thus guaranteed to be ASCII: 'héllo' is really 'h%C3%A9llo'. |
|
156 | # and thus guaranteed to be ASCII: 'héllo' is really 'h%C3%A9llo'. | |
157 |
base_ |
|
157 | base_url = py3compat.unicode_to_str(base_url, 'ascii') | |
158 | template_path = settings_overrides.get("template_path", os.path.join(os.path.dirname(__file__), "templates")) |
|
158 | template_path = settings_overrides.get("template_path", os.path.join(os.path.dirname(__file__), "templates")) | |
159 | settings = dict( |
|
159 | settings = dict( | |
160 | # basics |
|
160 | # basics | |
161 | log_function=log_request, |
|
161 | log_function=log_request, | |
162 |
base_ |
|
162 | base_url=base_url, | |
163 | base_kernel_url=ipython_app.base_kernel_url, |
|
163 | base_kernel_url=ipython_app.base_kernel_url, | |
164 | template_path=template_path, |
|
164 | template_path=template_path, | |
165 | static_path=ipython_app.static_file_path, |
|
165 | static_path=ipython_app.static_file_path, | |
166 | static_handler_class = FileFindHandler, |
|
166 | static_handler_class = FileFindHandler, | |
167 |
static_url_prefix = url_path_join(base_ |
|
167 | static_url_prefix = url_path_join(base_url,'/static/'), | |
168 |
|
168 | |||
169 | # authentication |
|
169 | # authentication | |
170 | cookie_secret=ipython_app.cookie_secret, |
|
170 | cookie_secret=ipython_app.cookie_secret, | |
171 |
login_url=url_path_join(base_ |
|
171 | login_url=url_path_join(base_url,'/login'), | |
172 | password=ipython_app.password, |
|
172 | password=ipython_app.password, | |
173 |
|
173 | |||
174 | # managers |
|
174 | # managers | |
@@ -206,10 +206,10 b' class NotebookWebApplication(web.Application):' | |||||
206 | (r"/files/(.*)", AuthenticatedFileHandler, {'path' : settings['notebook_manager'].notebook_dir}), |
|
206 | (r"/files/(.*)", AuthenticatedFileHandler, {'path' : settings['notebook_manager'].notebook_dir}), | |
207 | (r"/nbextensions/(.*)", FileFindHandler, {'path' : settings['nbextensions_path']}), |
|
207 | (r"/nbextensions/(.*)", FileFindHandler, {'path' : settings['nbextensions_path']}), | |
208 | ]) |
|
208 | ]) | |
209 |
# prepend base_ |
|
209 | # prepend base_url onto the patterns that we match | |
210 | new_handlers = [] |
|
210 | new_handlers = [] | |
211 | for handler in handlers: |
|
211 | for handler in handlers: | |
212 |
pattern = url_path_join(settings['base_ |
|
212 | pattern = url_path_join(settings['base_url'], handler[0]) | |
213 | new_handler = tuple([pattern] + list(handler[1:])) |
|
213 | new_handler = tuple([pattern] + list(handler[1:])) | |
214 | new_handlers.append(new_handler) |
|
214 | new_handlers.append(new_handler) | |
215 | # add 404 on the end, which will catch everything that falls through |
|
215 | # add 404 on the end, which will catch everything that falls through | |
@@ -414,17 +414,22 b' class NotebookApp(BaseIPythonApplication):' | |||||
414 | if not new: |
|
414 | if not new: | |
415 | self.mathjax_url = u'' |
|
415 | self.mathjax_url = u'' | |
416 |
|
416 | |||
417 |
base_ |
|
417 | base_url = Unicode('/', config=True, | |
418 | help='''The base URL for the notebook server. |
|
418 | help='''The base URL for the notebook server. | |
419 |
|
419 | |||
420 | Leading and trailing slashes can be omitted, |
|
420 | Leading and trailing slashes can be omitted, | |
421 | and will automatically be added. |
|
421 | and will automatically be added. | |
422 | ''') |
|
422 | ''') | |
423 |
def _base_ |
|
423 | def _base_url_changed(self, name, old, new): | |
424 | if not new.startswith('/'): |
|
424 | if not new.startswith('/'): | |
425 |
self.base_ |
|
425 | self.base_url = '/'+new | |
426 | elif not new.endswith('/'): |
|
426 | elif not new.endswith('/'): | |
427 |
self.base_ |
|
427 | self.base_url = new+'/' | |
|
428 | ||||
|
429 | base_project_url = Unicode('/', config=True, help="""DEPRECATED use base_url""") | |||
|
430 | def _base_project_url_changed(self, name, old, new): | |||
|
431 | self.log.warn("base_project_url is deprecated, use base_url") | |||
|
432 | self.base_url = new | |||
428 |
|
433 | |||
429 | base_kernel_url = Unicode('/', config=True, |
|
434 | base_kernel_url = Unicode('/', config=True, | |
430 | help='''The base URL for the kernel server |
|
435 | help='''The base URL for the kernel server | |
@@ -473,12 +478,12 b' class NotebookApp(BaseIPythonApplication):' | |||||
473 | if not self.enable_mathjax: |
|
478 | if not self.enable_mathjax: | |
474 | return u'' |
|
479 | return u'' | |
475 | static_url_prefix = self.webapp_settings.get("static_url_prefix", |
|
480 | static_url_prefix = self.webapp_settings.get("static_url_prefix", | |
476 |
url_path_join(self.base_ |
|
481 | url_path_join(self.base_url, "static") | |
477 | ) |
|
482 | ) | |
478 |
|
483 | |||
479 | # try local mathjax, either in nbextensions/mathjax or static/mathjax |
|
484 | # try local mathjax, either in nbextensions/mathjax or static/mathjax | |
480 | for (url_prefix, search_path) in [ |
|
485 | for (url_prefix, search_path) in [ | |
481 |
(url_path_join(self.base_ |
|
486 | (url_path_join(self.base_url, "nbextensions"), self.nbextensions_path), | |
482 | (static_url_prefix, self.static_file_path), |
|
487 | (static_url_prefix, self.static_file_path), | |
483 | ]: |
|
488 | ]: | |
484 | self.log.debug("searching for local mathjax in %s", search_path) |
|
489 | self.log.debug("searching for local mathjax in %s", search_path) | |
@@ -586,7 +591,7 b' class NotebookApp(BaseIPythonApplication):' | |||||
586 | self.web_app = NotebookWebApplication( |
|
591 | self.web_app = NotebookWebApplication( | |
587 | self, self.kernel_manager, self.notebook_manager, |
|
592 | self, self.kernel_manager, self.notebook_manager, | |
588 | self.cluster_manager, self.session_manager, |
|
593 | self.cluster_manager, self.session_manager, | |
589 |
self.log, self.base_ |
|
594 | self.log, self.base_url, self.webapp_settings | |
590 | ) |
|
595 | ) | |
591 | if self.certfile: |
|
596 | if self.certfile: | |
592 | ssl_options = dict(certfile=self.certfile) |
|
597 | ssl_options = dict(certfile=self.certfile) | |
@@ -639,7 +644,7 b' class NotebookApp(BaseIPythonApplication):' | |||||
639 |
|
644 | |||
640 | def _url(self, ip): |
|
645 | def _url(self, ip): | |
641 | proto = 'https' if self.certfile else 'http' |
|
646 | proto = 'https' if self.certfile else 'http' | |
642 |
return "%s://%s:%i%s" % (proto, ip, self.port, self.base_ |
|
647 | return "%s://%s:%i%s" % (proto, ip, self.port, self.base_url) | |
643 |
|
648 | |||
644 | def init_signal(self): |
|
649 | def init_signal(self): | |
645 | if not sys.platform.startswith('win'): |
|
650 | if not sys.platform.startswith('win'): | |
@@ -745,7 +750,7 b' class NotebookApp(BaseIPythonApplication):' | |||||
745 | 'hostname': self.ip if self.ip else 'localhost', |
|
750 | 'hostname': self.ip if self.ip else 'localhost', | |
746 | 'port': self.port, |
|
751 | 'port': self.port, | |
747 | 'secure': bool(self.certfile), |
|
752 | 'secure': bool(self.certfile), | |
748 |
'base_ |
|
753 | 'base_url': self.base_url, | |
749 | 'notebook_dir': os.path.abspath(self.notebook_manager.notebook_dir), |
|
754 | 'notebook_dir': os.path.abspath(self.notebook_manager.notebook_dir), | |
750 | } |
|
755 | } | |
751 |
|
756 |
@@ -47,7 +47,7 b' class NotebookHandler(IPythonHandler):' | |||||
47 | The URL path of the notebook. |
|
47 | The URL path of the notebook. | |
48 | """ |
|
48 | """ | |
49 | return url_escape(url_path_join( |
|
49 | return url_escape(url_path_join( | |
50 |
self.base_ |
|
50 | self.base_url, 'api', 'notebooks', path, name | |
51 | )) |
|
51 | )) | |
52 |
|
52 | |||
53 | def _finish_model(self, model, location=True): |
|
53 | def _finish_model(self, model, location=True): | |
@@ -242,7 +242,7 b' class NotebookCheckpointsHandler(IPythonHandler):' | |||||
242 | nbm = self.notebook_manager |
|
242 | nbm = self.notebook_manager | |
243 | checkpoint = nbm.create_checkpoint(name, path) |
|
243 | checkpoint = nbm.create_checkpoint(name, path) | |
244 | data = json.dumps(checkpoint, default=date_default) |
|
244 | data = json.dumps(checkpoint, default=date_default) | |
245 |
location = url_path_join(self.base_ |
|
245 | location = url_path_join(self.base_url, 'api/notebooks', | |
246 | path, name, 'checkpoints', checkpoint['id']) |
|
246 | path, name, 'checkpoints', checkpoint['id']) | |
247 | self.set_header('Location', url_escape(location)) |
|
247 | self.set_header('Location', url_escape(location)) | |
248 | self.set_status(201) |
|
248 | self.set_status(201) |
@@ -10,10 +10,11 b'' | |||||
10 | //============================================================================ |
|
10 | //============================================================================ | |
11 |
|
11 | |||
12 | var IPython = (function (IPython) { |
|
12 | var IPython = (function (IPython) { | |
|
13 | "use strict"; | |||
13 |
|
14 | |||
14 | var LoginWidget = function (selector, options) { |
|
15 | var LoginWidget = function (selector, options) { | |
15 |
|
|
16 | options = options || {}; | |
16 |
this.base_url = options.base |
|
17 | this.base_url = options.base_url || IPython.utils.get_body_data("baseUrl"); | |
17 | this.selector = selector; |
|
18 | this.selector = selector; | |
18 | if (this.selector !== undefined) { |
|
19 | if (this.selector !== undefined) { | |
19 | this.element = $(selector); |
|
20 | this.element = $(selector); | |
@@ -30,10 +31,16 b' var IPython = (function (IPython) {' | |||||
30 | LoginWidget.prototype.bind_events = function () { |
|
31 | LoginWidget.prototype.bind_events = function () { | |
31 | var that = this; |
|
32 | var that = this; | |
32 | this.element.find("button#logout").click(function () { |
|
33 | this.element.find("button#logout").click(function () { | |
33 |
window.location = |
|
34 | window.location = IPythin.utils.url_join_encode( | |
|
35 | that.base_url, | |||
|
36 | "logout" | |||
|
37 | ); | |||
34 | }); |
|
38 | }); | |
35 | this.element.find("button#login").click(function () { |
|
39 | this.element.find("button#login").click(function () { | |
36 |
window.location = |
|
40 | window.location = IPythin.utils.url_join_encode( | |
|
41 | that.base_url, | |||
|
42 | "login" | |||
|
43 | ); | |||
37 | }); |
|
44 | }); | |
38 | }; |
|
45 | }; | |
39 |
|
46 |
@@ -417,15 +417,29 b' IPython.utils = (function (IPython) {' | |||||
417 | url = url + arguments[i]; |
|
417 | url = url + arguments[i]; | |
418 | } |
|
418 | } | |
419 | } |
|
419 | } | |
|
420 | url = url.replace(/\/\/+/, '/'); | |||
420 | return url; |
|
421 | return url; | |
421 | }; |
|
422 | }; | |
422 |
|
423 | |||
|
424 | var parse_url = function (url) { | |||
|
425 | // an `a` element with an href allows attr-access to the parsed segments of a URL | |||
|
426 | // a = parse_url("http://localhost:8888/path/name#hash") | |||
|
427 | // a.protocol = "http:" | |||
|
428 | // a.host = "localhost:8888" | |||
|
429 | // a.hostname = "localhost" | |||
|
430 | // a.port = 8888 | |||
|
431 | // a.pathname = "/path/name" | |||
|
432 | // a.hash = "#hash" | |||
|
433 | var a = document.createElement("a"); | |||
|
434 | a.href = url; | |||
|
435 | return a; | |||
|
436 | }; | |||
423 |
|
437 | |||
424 | var encode_uri_components = function (uri) { |
|
438 | var encode_uri_components = function (uri) { | |
425 | // encode just the components of a multi-segment uri, |
|
439 | // encode just the components of a multi-segment uri, | |
426 | // leaving '/' separators |
|
440 | // leaving '/' separators | |
427 | return uri.split('/').map(encodeURIComponent).join('/'); |
|
441 | return uri.split('/').map(encodeURIComponent).join('/'); | |
428 | } |
|
442 | }; | |
429 |
|
443 | |||
430 | var url_join_encode = function () { |
|
444 | var url_join_encode = function () { | |
431 | // join a sequence of url components with '/', |
|
445 | // join a sequence of url components with '/', | |
@@ -443,7 +457,15 b' IPython.utils = (function (IPython) {' | |||||
443 | } else { |
|
457 | } else { | |
444 | return [filename, '']; |
|
458 | return [filename, '']; | |
445 | } |
|
459 | } | |
446 | } |
|
460 | }; | |
|
461 | ||||
|
462 | ||||
|
463 | var get_body_data = function(key) { | |||
|
464 | // get a url-encoded item from body.data and decode it | |||
|
465 | // we should never have any encoded URLs anywhere else in code | |||
|
466 | // until we are building an actual request | |||
|
467 | return decodeURIComponent($('body').data(key)); | |||
|
468 | }; | |||
447 |
|
469 | |||
448 |
|
470 | |||
449 | // http://stackoverflow.com/questions/2400935/browser-detection-in-javascript |
|
471 | // http://stackoverflow.com/questions/2400935/browser-detection-in-javascript | |
@@ -508,6 +530,8 b' IPython.utils = (function (IPython) {' | |||||
508 | fixCarriageReturn : fixCarriageReturn, |
|
530 | fixCarriageReturn : fixCarriageReturn, | |
509 | autoLinkUrls : autoLinkUrls, |
|
531 | autoLinkUrls : autoLinkUrls, | |
510 | points_to_pixels : points_to_pixels, |
|
532 | points_to_pixels : points_to_pixels, | |
|
533 | get_body_data : get_body_data, | |||
|
534 | parse_url : parse_url, | |||
511 | url_path_join : url_path_join, |
|
535 | url_path_join : url_path_join, | |
512 | url_join_encode : url_join_encode, |
|
536 | url_join_encode : url_join_encode, | |
513 | encode_uri_components : encode_uri_components, |
|
537 | encode_uri_components : encode_uri_components, |
@@ -510,7 +510,7 b' var IPython = (function (IPython) {' | |||||
510 | }, |
|
510 | }, | |
511 | 'h' : { |
|
511 | 'h' : { | |
512 | help : 'keyboard shortcuts', |
|
512 | help : 'keyboard shortcuts', | |
513 |
help_index : 'g |
|
513 | help_index : 'ge', | |
514 | handler : function (event) { |
|
514 | handler : function (event) { | |
515 | IPython.quick_help.show_keyboard_shortcuts(); |
|
515 | IPython.quick_help.show_keyboard_shortcuts(); | |
516 | return false; |
|
516 | return false; | |
@@ -532,6 +532,14 b' var IPython = (function (IPython) {' | |||||
532 | return false; |
|
532 | return false; | |
533 | } |
|
533 | } | |
534 | }, |
|
534 | }, | |
|
535 | 'q' : { | |||
|
536 | help : 'close pager', | |||
|
537 | help_index : 'gd', | |||
|
538 | handler : function (event) { | |||
|
539 | IPython.pager.collapse(); | |||
|
540 | return false; | |||
|
541 | } | |||
|
542 | }, | |||
535 | } |
|
543 | } | |
536 |
|
544 | |||
537 |
|
545 |
@@ -8,7 +8,6 b'' | |||||
8 | //============================================================================ |
|
8 | //============================================================================ | |
9 | // On document ready |
|
9 | // On document ready | |
10 | //============================================================================ |
|
10 | //============================================================================ | |
11 | "use strict"; |
|
|||
12 |
|
11 | |||
13 | // for the time beeing, we have to pass marked as a parameter here, |
|
12 | // for the time beeing, we have to pass marked as a parameter here, | |
14 | // as injecting require.js make marked not to put itself in the globals, |
|
13 | // as injecting require.js make marked not to put itself in the globals, | |
@@ -18,28 +17,28 b" require(['components/marked/lib/marked'," | |||||
18 | 'notebook/js/widgets/init'], |
|
17 | 'notebook/js/widgets/init'], | |
19 |
|
18 | |||
20 | function (marked) { |
|
19 | function (marked) { | |
|
20 | "use strict"; | |||
21 |
|
21 | |||
22 | window.marked = marked |
|
22 | window.marked = marked; | |
23 |
|
23 | |||
24 | // monkey patch CM to be able to syntax highlight cell magics |
|
24 | // monkey patch CM to be able to syntax highlight cell magics | |
25 | // bug reported upstream, |
|
25 | // bug reported upstream, | |
26 | // see https://github.com/marijnh/CodeMirror2/issues/670 |
|
26 | // see https://github.com/marijnh/CodeMirror2/issues/670 | |
27 | if(CodeMirror.getMode(1,'text/plain').indent == undefined ){ |
|
27 | if(CodeMirror.getMode(1,'text/plain').indent === undefined ){ | |
28 | console.log('patching CM for undefined indent'); |
|
28 | console.log('patching CM for undefined indent'); | |
29 | CodeMirror.modes.null = function() { |
|
29 | CodeMirror.modes.null = function() { | |
30 | return {token: function(stream) {stream.skipToEnd();},indent : function(){return 0}} |
|
30 | return {token: function(stream) {stream.skipToEnd();},indent : function(){return 0;}}; | |
31 | } |
|
31 | }; | |
32 | } |
|
32 | } | |
33 |
|
33 | |||
34 | CodeMirror.patchedGetMode = function(config, mode){ |
|
34 | CodeMirror.patchedGetMode = function(config, mode){ | |
35 | var cmmode = CodeMirror.getMode(config, mode); |
|
35 | var cmmode = CodeMirror.getMode(config, mode); | |
36 | if(cmmode.indent == null) |
|
36 | if(cmmode.indent === null) { | |
37 | { |
|
|||
38 | console.log('patch mode "' , mode, '" on the fly'); |
|
37 | console.log('patch mode "' , mode, '" on the fly'); | |
39 | cmmode.indent = function(){return 0}; |
|
38 | cmmode.indent = function(){return 0;}; | |
40 | } |
|
39 | } | |
41 | return cmmode; |
|
40 | return cmmode; | |
42 | } |
|
41 | }; | |
43 | // end monkey patching CodeMirror |
|
42 | // end monkey patching CodeMirror | |
44 |
|
43 | |||
45 | IPython.mathjaxutils.init(); |
|
44 | IPython.mathjaxutils.init(); | |
@@ -47,35 +46,32 b' function (marked) {' | |||||
47 | $('#ipython-main-app').addClass('border-box-sizing'); |
|
46 | $('#ipython-main-app').addClass('border-box-sizing'); | |
48 | $('div#notebook_panel').addClass('border-box-sizing'); |
|
47 | $('div#notebook_panel').addClass('border-box-sizing'); | |
49 |
|
48 | |||
50 | var baseProjectUrl = $('body').data('baseProjectUrl'); |
|
49 | var opts = { | |
51 | var notebookPath = $('body').data('notebookPath'); |
|
50 | base_url : IPython.utils.get_body_data("baseUrl"), | |
52 | var notebookName = $('body').data('notebookName'); |
|
51 | base_kernel_url : IPython.utils.get_body_data("baseKernelUrl"), | |
53 | notebookName = decodeURIComponent(notebookName); |
|
52 | notebook_path : IPython.utils.get_body_data("notebookPath"), | |
54 | notebookPath = decodeURIComponent(notebookPath); |
|
53 | notebook_name : IPython.utils.get_body_data('notebookName') | |
55 | console.log(notebookName); |
|
54 | }; | |
56 | if (notebookPath == 'None'){ |
|
|||
57 | notebookPath = ""; |
|
|||
58 | } |
|
|||
59 |
|
55 | |||
60 | IPython.page = new IPython.Page(); |
|
56 | IPython.page = new IPython.Page(); | |
61 | IPython.layout_manager = new IPython.LayoutManager(); |
|
57 | IPython.layout_manager = new IPython.LayoutManager(); | |
62 | IPython.pager = new IPython.Pager('div#pager', 'div#pager_splitter'); |
|
58 | IPython.pager = new IPython.Pager('div#pager', 'div#pager_splitter'); | |
63 | IPython.quick_help = new IPython.QuickHelp(); |
|
59 | IPython.quick_help = new IPython.QuickHelp(); | |
64 |
IPython.login_widget = new IPython.LoginWidget('span#login_widget', |
|
60 | IPython.login_widget = new IPython.LoginWidget('span#login_widget', opts); | |
65 | IPython.notebook = new IPython.Notebook('div#notebook',{baseProjectUrl:baseProjectUrl, notebookPath:notebookPath, notebookName:notebookName}); |
|
61 | IPython.notebook = new IPython.Notebook('div#notebook', opts); | |
66 | IPython.keyboard_manager = new IPython.KeyboardManager(); |
|
62 | IPython.keyboard_manager = new IPython.KeyboardManager(); | |
67 | IPython.save_widget = new IPython.SaveWidget('span#save_widget'); |
|
63 | IPython.save_widget = new IPython.SaveWidget('span#save_widget'); | |
68 |
IPython.menubar = new IPython.MenuBar('#menubar', |
|
64 | IPython.menubar = new IPython.MenuBar('#menubar', opts); | |
69 | IPython.toolbar = new IPython.MainToolBar('#maintoolbar-container') |
|
65 | IPython.toolbar = new IPython.MainToolBar('#maintoolbar-container'); | |
70 | IPython.tooltip = new IPython.Tooltip() |
|
66 | IPython.tooltip = new IPython.Tooltip(); | |
71 | IPython.notification_area = new IPython.NotificationArea('#notification_area') |
|
67 | IPython.notification_area = new IPython.NotificationArea('#notification_area'); | |
72 | IPython.notification_area.init_notification_widgets(); |
|
68 | IPython.notification_area.init_notification_widgets(); | |
73 |
|
69 | |||
74 | IPython.layout_manager.do_resize(); |
|
70 | IPython.layout_manager.do_resize(); | |
75 |
|
71 | |||
76 | $('body').append('<div id="fonttest"><pre><span id="test1">x</span>'+ |
|
72 | $('body').append('<div id="fonttest"><pre><span id="test1">x</span>'+ | |
77 | '<span id="test2" style="font-weight: bold;">x</span>'+ |
|
73 | '<span id="test2" style="font-weight: bold;">x</span>'+ | |
78 | '<span id="test3" style="font-style: italic;">x</span></pre></div>') |
|
74 | '<span id="test3" style="font-style: italic;">x</span></pre></div>'); | |
79 | var nh = $('#test1').innerHeight(); |
|
75 | var nh = $('#test1').innerHeight(); | |
80 | var bh = $('#test2').innerHeight(); |
|
76 | var bh = $('#test2').innerHeight(); | |
81 | var ih = $('#test3').innerHeight(); |
|
77 | var ih = $('#test3').innerHeight(); | |
@@ -101,7 +97,7 b' function (marked) {' | |||||
101 |
|
97 | |||
102 | $([IPython.events]).on('notebook_loaded.Notebook', first_load); |
|
98 | $([IPython.events]).on('notebook_loaded.Notebook', first_load); | |
103 | $([IPython.events]).trigger('app_initialized.NotebookApp'); |
|
99 | $([IPython.events]).trigger('app_initialized.NotebookApp'); | |
104 |
IPython.notebook.load_notebook(notebook |
|
100 | IPython.notebook.load_notebook(opts.notebook_name, opts.notebook_path); | |
105 |
|
101 | |||
106 | if (marked) { |
|
102 | if (marked) { | |
107 | marked.setOptions({ |
|
103 | marked.setOptions({ | |
@@ -121,8 +117,6 b' function (marked) {' | |||||
121 | } |
|
117 | } | |
122 | return highlighted.value; |
|
118 | return highlighted.value; | |
123 | } |
|
119 | } | |
124 | }) |
|
120 | }); | |
125 | } |
|
121 | } | |
126 | } |
|
122 | }); | |
127 |
|
||||
128 | ); |
|
@@ -100,8 +100,9 b' var IPython = (function (IPython) {' | |||||
100 | label : 'Run Cell', |
|
100 | label : 'Run Cell', | |
101 | icon : 'icon-play', |
|
101 | icon : 'icon-play', | |
102 | callback : function () { |
|
102 | callback : function () { | |
103 | IPython.notebook.execute_cell(); |
|
103 | // emulate default shift-enter behavior | |
104 | } |
|
104 | IPython.notebook.execute_cell_and_select_below(); | |
|
105 | } | |||
105 | }, |
|
106 | }, | |
106 | { |
|
107 | { | |
107 | id : 'interrupt_b', |
|
108 | id : 'interrupt_b', |
@@ -30,16 +30,14 b' var IPython = (function (IPython) {' | |||||
30 | * |
|
30 | * | |
31 | * @param selector {string} selector for the menubar element in DOM |
|
31 | * @param selector {string} selector for the menubar element in DOM | |
32 | * @param {object} [options] |
|
32 | * @param {object} [options] | |
33 |
* @param [options.base |
|
33 | * @param [options.base_url] {String} String to use for the | |
34 |
* |
|
34 | * base project url. Default is to inspect | |
35 |
* $('body').data('base |
|
35 | * $('body').data('baseUrl'); | |
36 | * does not support change for now is set through this option |
|
36 | * does not support change for now is set through this option | |
37 | */ |
|
37 | */ | |
38 | var MenuBar = function (selector, options) { |
|
38 | var MenuBar = function (selector, options) { | |
39 | options = options || {}; |
|
39 | options = options || {}; | |
40 | if (options.baseProjectUrl !== undefined) { |
|
40 | this.base_url = options.base_url || IPython.utils.get_body_data("baseUrl"); | |
41 | this._baseProjectUrl = options.baseProjectUrl; |
|
|||
42 | } |
|
|||
43 | this.selector = selector; |
|
41 | this.selector = selector; | |
44 | if (this.selector !== undefined) { |
|
42 | if (this.selector !== undefined) { | |
45 | this.element = $(selector); |
|
43 | this.element = $(selector); | |
@@ -48,16 +46,6 b' var IPython = (function (IPython) {' | |||||
48 | } |
|
46 | } | |
49 | }; |
|
47 | }; | |
50 |
|
48 | |||
51 | MenuBar.prototype.baseProjectUrl = function(){ |
|
|||
52 | return this._baseProjectUrl || $('body').data('baseProjectUrl'); |
|
|||
53 | }; |
|
|||
54 |
|
||||
55 | MenuBar.prototype.notebookPath = function() { |
|
|||
56 | var path = $('body').data('notebookPath'); |
|
|||
57 | path = decodeURIComponent(path); |
|
|||
58 | return path; |
|
|||
59 | }; |
|
|||
60 |
|
||||
61 | MenuBar.prototype.style = function () { |
|
49 | MenuBar.prototype.style = function () { | |
62 | this.element.addClass('border-box-sizing'); |
|
50 | this.element.addClass('border-box-sizing'); | |
63 | this.element.find("li").click(function (event, ui) { |
|
51 | this.element.find("li").click(function (event, ui) { | |
@@ -71,20 +59,21 b' var IPython = (function (IPython) {' | |||||
71 |
|
59 | |||
72 | MenuBar.prototype._nbconvert = function (format, download) { |
|
60 | MenuBar.prototype._nbconvert = function (format, download) { | |
73 | download = download || false; |
|
61 | download = download || false; | |
74 |
var notebook_ |
|
62 | var notebook_path = IPython.notebook.notebook_path; | |
|
63 | var notebook_name = IPython.notebook.notebook_name; | |||
75 | if (IPython.notebook.dirty) { |
|
64 | if (IPython.notebook.dirty) { | |
76 | IPython.notebook.save_notebook({async : false}); |
|
65 | IPython.notebook.save_notebook({async : false}); | |
77 | } |
|
66 | } | |
78 |
var url = utils.url_ |
|
67 | var url = utils.url_join_encode( | |
79 |
this.base |
|
68 | this.base_url, | |
80 | 'nbconvert', |
|
69 | 'nbconvert', | |
81 | format, |
|
70 | format, | |
82 |
|
|
71 | notebook_path, | |
83 |
notebook_name |
|
72 | notebook_name | |
84 | ) + "?download=" + download.toString(); |
|
73 | ) + "?download=" + download.toString(); | |
85 |
|
74 | |||
86 | window.open(url); |
|
75 | window.open(url); | |
87 | } |
|
76 | }; | |
88 |
|
77 | |||
89 | MenuBar.prototype.bind_events = function () { |
|
78 | MenuBar.prototype.bind_events = function () { | |
90 | // File |
|
79 | // File | |
@@ -94,9 +83,9 b' var IPython = (function (IPython) {' | |||||
94 | }); |
|
83 | }); | |
95 | this.element.find('#open_notebook').click(function () { |
|
84 | this.element.find('#open_notebook').click(function () { | |
96 | window.open(utils.url_join_encode( |
|
85 | window.open(utils.url_join_encode( | |
97 |
|
|
86 | IPython.notebook.base_url, | |
98 | 'tree', |
|
87 | 'tree', | |
99 |
|
|
88 | IPython.notebook.notebook_path | |
100 | )); |
|
89 | )); | |
101 | }); |
|
90 | }); | |
102 | this.element.find('#copy_notebook').click(function () { |
|
91 | this.element.find('#copy_notebook').click(function () { | |
@@ -104,16 +93,18 b' var IPython = (function (IPython) {' | |||||
104 | return false; |
|
93 | return false; | |
105 | }); |
|
94 | }); | |
106 | this.element.find('#download_ipynb').click(function () { |
|
95 | this.element.find('#download_ipynb').click(function () { | |
107 |
var |
|
96 | var base_url = IPython.notebook.base_url; | |
|
97 | var notebook_path = IPython.notebook.notebook_path; | |||
|
98 | var notebook_name = IPython.notebook.notebook_name; | |||
108 | if (IPython.notebook.dirty) { |
|
99 | if (IPython.notebook.dirty) { | |
109 | IPython.notebook.save_notebook({async : false}); |
|
100 | IPython.notebook.save_notebook({async : false}); | |
110 | } |
|
101 | } | |
111 |
|
102 | |||
112 | var url = utils.url_join_encode( |
|
103 | var url = utils.url_join_encode( | |
113 |
|
|
104 | base_url, | |
114 | 'files', |
|
105 | 'files', | |
115 |
|
|
106 | notebook_path, | |
116 |
notebook_name |
|
107 | notebook_name | |
117 | ); |
|
108 | ); | |
118 | window.location.assign(url); |
|
109 | window.location.assign(url); | |
119 | }); |
|
110 | }); |
@@ -23,10 +23,10 b' var IPython = (function (IPython) {' | |||||
23 | * @param {Object} [options] A config object |
|
23 | * @param {Object} [options] A config object | |
24 | */ |
|
24 | */ | |
25 | var Notebook = function (selector, options) { |
|
25 | var Notebook = function (selector, options) { | |
26 |
|
|
26 | this.options = options = options || {}; | |
27 |
this. |
|
27 | this.base_url = options.base_url; | |
28 |
this.notebook_path = options.notebook |
|
28 | this.notebook_path = options.notebook_path; | |
29 |
this.notebook_name = options.notebook |
|
29 | this.notebook_name = options.notebook_name; | |
30 | this.element = $(selector); |
|
30 | this.element = $(selector); | |
31 | this.element.scroll(); |
|
31 | this.element.scroll(); | |
32 | this.element.data("notebook", this); |
|
32 | this.element.data("notebook", this); | |
@@ -53,8 +53,8 b' var IPython = (function (IPython) {' | |||||
53 | // single worksheet for now |
|
53 | // single worksheet for now | |
54 | this.worksheet_metadata = {}; |
|
54 | this.worksheet_metadata = {}; | |
55 | this.notebook_name_blacklist_re = /[\/\\:]/; |
|
55 | this.notebook_name_blacklist_re = /[\/\\:]/; | |
56 | this.nbformat = 3 // Increment this when changing the nbformat |
|
56 | this.nbformat = 3; // Increment this when changing the nbformat | |
57 | this.nbformat_minor = 0 // Increment this when changing the nbformat |
|
57 | this.nbformat_minor = 0; // Increment this when changing the nbformat | |
58 | this.style(); |
|
58 | this.style(); | |
59 | this.create_elements(); |
|
59 | this.create_elements(); | |
60 | this.bind_events(); |
|
60 | this.bind_events(); | |
@@ -70,24 +70,6 b' var IPython = (function (IPython) {' | |||||
70 | }; |
|
70 | }; | |
71 |
|
71 | |||
72 | /** |
|
72 | /** | |
73 | * Get the root URL of the notebook server. |
|
|||
74 | * |
|
|||
75 | * @method baseProjectUrl |
|
|||
76 | * @return {String} The base project URL |
|
|||
77 | */ |
|
|||
78 | Notebook.prototype.baseProjectUrl = function() { |
|
|||
79 | return this._baseProjectUrl || $('body').data('baseProjectUrl'); |
|
|||
80 | }; |
|
|||
81 |
|
||||
82 | Notebook.prototype.notebookName = function() { |
|
|||
83 | return $('body').data('notebookName'); |
|
|||
84 | }; |
|
|||
85 |
|
||||
86 | Notebook.prototype.notebookPath = function() { |
|
|||
87 | return $('body').data('notebookPath'); |
|
|||
88 | }; |
|
|||
89 |
|
||||
90 | /** |
|
|||
91 | * Create an HTML and CSS representation of the notebook. |
|
73 | * Create an HTML and CSS representation of the notebook. | |
92 | * |
|
74 | * | |
93 | * @method create_elements |
|
75 | * @method create_elements | |
@@ -163,7 +145,7 b' var IPython = (function (IPython) {' | |||||
163 | }; |
|
145 | }; | |
164 |
|
146 | |||
165 | this.element.bind('collapse_pager', function (event, extrap) { |
|
147 | this.element.bind('collapse_pager', function (event, extrap) { | |
166 | var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast'; |
|
148 | var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast'; | |
167 | collapse_time(time); |
|
149 | collapse_time(time); | |
168 | }); |
|
150 | }); | |
169 |
|
151 | |||
@@ -176,7 +158,7 b' var IPython = (function (IPython) {' | |||||
176 | }; |
|
158 | }; | |
177 |
|
159 | |||
178 | this.element.bind('expand_pager', function (event, extrap) { |
|
160 | this.element.bind('expand_pager', function (event, extrap) { | |
179 | var time = (extrap != undefined) ? ((extrap.duration != undefined ) ? extrap.duration : 'fast') : 'fast'; |
|
161 | var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast'; | |
180 | expand_time(time); |
|
162 | expand_time(time); | |
181 | }); |
|
163 | }); | |
182 |
|
164 | |||
@@ -205,7 +187,7 b' var IPython = (function (IPython) {' | |||||
205 | } else { |
|
187 | } else { | |
206 | return "Unsaved changes will be lost."; |
|
188 | return "Unsaved changes will be lost."; | |
207 | } |
|
189 | } | |
208 |
} |
|
190 | } | |
209 | // Null is the *only* return value that will make the browser not |
|
191 | // Null is the *only* return value that will make the browser not | |
210 | // pop up the "don't leave" dialog. |
|
192 | // pop up the "don't leave" dialog. | |
211 | return null; |
|
193 | return null; | |
@@ -237,7 +219,7 b' var IPython = (function (IPython) {' | |||||
237 | */ |
|
219 | */ | |
238 | Notebook.prototype.scroll_to_cell = function (cell_number, time) { |
|
220 | Notebook.prototype.scroll_to_cell = function (cell_number, time) { | |
239 | var cells = this.get_cells(); |
|
221 | var cells = this.get_cells(); | |
240 |
|
|
222 | time = time || 0; | |
241 | cell_number = Math.min(cells.length-1,cell_number); |
|
223 | cell_number = Math.min(cells.length-1,cell_number); | |
242 | cell_number = Math.max(0 ,cell_number); |
|
224 | cell_number = Math.max(0 ,cell_number); | |
243 | var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ; |
|
225 | var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ; | |
@@ -349,7 +331,7 b' var IPython = (function (IPython) {' | |||||
349 | result = ce.data('cell'); |
|
331 | result = ce.data('cell'); | |
350 | } |
|
332 | } | |
351 | return result; |
|
333 | return result; | |
352 | } |
|
334 | }; | |
353 |
|
335 | |||
354 | /** |
|
336 | /** | |
355 | * Get the cell below a given cell. |
|
337 | * Get the cell below a given cell. | |
@@ -365,7 +347,7 b' var IPython = (function (IPython) {' | |||||
365 | result = this.get_cell(index+1); |
|
347 | result = this.get_cell(index+1); | |
366 | } |
|
348 | } | |
367 | return result; |
|
349 | return result; | |
368 | } |
|
350 | }; | |
369 |
|
351 | |||
370 | /** |
|
352 | /** | |
371 | * Get the cell above a given cell. |
|
353 | * Get the cell above a given cell. | |
@@ -383,7 +365,7 b' var IPython = (function (IPython) {' | |||||
383 | result = this.get_cell(index-1); |
|
365 | result = this.get_cell(index-1); | |
384 | } |
|
366 | } | |
385 | return result; |
|
367 | return result; | |
386 | } |
|
368 | }; | |
387 |
|
369 | |||
388 | /** |
|
370 | /** | |
389 | * Get the numeric index of a given cell. |
|
371 | * Get the numeric index of a given cell. | |
@@ -397,7 +379,7 b' var IPython = (function (IPython) {' | |||||
397 | this.get_cell_elements().filter(function (index) { |
|
379 | this.get_cell_elements().filter(function (index) { | |
398 | if ($(this).data("cell") === cell) { |
|
380 | if ($(this).data("cell") === cell) { | |
399 | result = index; |
|
381 | result = index; | |
400 |
} |
|
382 | } | |
401 | }); |
|
383 | }); | |
402 | return result; |
|
384 | return result; | |
403 | }; |
|
385 | }; | |
@@ -444,8 +426,8 b' var IPython = (function (IPython) {' | |||||
444 | return true; |
|
426 | return true; | |
445 | } else { |
|
427 | } else { | |
446 | return false; |
|
428 | return false; | |
447 |
} |
|
429 | } | |
448 | } |
|
430 | }; | |
449 |
|
431 | |||
450 | /** |
|
432 | /** | |
451 | * Get the index of the currently selected cell. |
|
433 | * Get the index of the currently selected cell. | |
@@ -458,7 +440,7 b' var IPython = (function (IPython) {' | |||||
458 | this.get_cell_elements().filter(function (index) { |
|
440 | this.get_cell_elements().filter(function (index) { | |
459 | if ($(this).data("cell").selected === true) { |
|
441 | if ($(this).data("cell").selected === true) { | |
460 | result = index; |
|
442 | result = index; | |
461 |
} |
|
443 | } | |
462 | }); |
|
444 | }); | |
463 | return result; |
|
445 | return result; | |
464 | }; |
|
446 | }; | |
@@ -475,11 +457,11 b' var IPython = (function (IPython) {' | |||||
475 | */ |
|
457 | */ | |
476 | Notebook.prototype.select = function (index) { |
|
458 | Notebook.prototype.select = function (index) { | |
477 | if (this.is_valid_cell_index(index)) { |
|
459 | if (this.is_valid_cell_index(index)) { | |
478 | var sindex = this.get_selected_index() |
|
460 | var sindex = this.get_selected_index(); | |
479 | if (sindex !== null && index !== sindex) { |
|
461 | if (sindex !== null && index !== sindex) { | |
480 | this.command_mode(); |
|
462 | this.command_mode(); | |
481 | this.get_cell(sindex).unselect(); |
|
463 | this.get_cell(sindex).unselect(); | |
482 |
} |
|
464 | } | |
483 | var cell = this.get_cell(index); |
|
465 | var cell = this.get_cell(index); | |
484 | cell.select(); |
|
466 | cell.select(); | |
485 | if (cell.cell_type === 'heading') { |
|
467 | if (cell.cell_type === 'heading') { | |
@@ -490,8 +472,8 b' var IPython = (function (IPython) {' | |||||
490 | $([IPython.events]).trigger('selected_cell_type_changed.Notebook', |
|
472 | $([IPython.events]).trigger('selected_cell_type_changed.Notebook', | |
491 | {'cell_type':cell.cell_type} |
|
473 | {'cell_type':cell.cell_type} | |
492 | ); |
|
474 | ); | |
493 |
} |
|
475 | } | |
494 |
} |
|
476 | } | |
495 | return this; |
|
477 | return this; | |
496 | }; |
|
478 | }; | |
497 |
|
479 | |||
@@ -527,25 +509,27 b' var IPython = (function (IPython) {' | |||||
527 | this.get_cell_elements().filter(function (index) { |
|
509 | this.get_cell_elements().filter(function (index) { | |
528 | if ($(this).data("cell").mode === 'edit') { |
|
510 | if ($(this).data("cell").mode === 'edit') { | |
529 | result = index; |
|
511 | result = index; | |
530 |
} |
|
512 | } | |
531 | }); |
|
513 | }); | |
532 | return result; |
|
514 | return result; | |
533 | }; |
|
515 | }; | |
534 |
|
516 | |||
535 | Notebook.prototype.command_mode = function () { |
|
517 | Notebook.prototype.command_mode = function () { | |
536 | if (this.mode !== 'command') { |
|
518 | if (this.mode !== 'command') { | |
|
519 | $([IPython.events]).trigger('command_mode.Notebook'); | |||
537 | var index = this.get_edit_index(); |
|
520 | var index = this.get_edit_index(); | |
538 | var cell = this.get_cell(index); |
|
521 | var cell = this.get_cell(index); | |
539 | if (cell) { |
|
522 | if (cell) { | |
540 | cell.command_mode(); |
|
523 | cell.command_mode(); | |
541 |
} |
|
524 | } | |
542 | this.mode = 'command'; |
|
525 | this.mode = 'command'; | |
543 | IPython.keyboard_manager.command_mode(); |
|
526 | IPython.keyboard_manager.command_mode(); | |
544 |
} |
|
527 | } | |
545 | }; |
|
528 | }; | |
546 |
|
529 | |||
547 | Notebook.prototype.edit_mode = function () { |
|
530 | Notebook.prototype.edit_mode = function () { | |
548 | if (this.mode !== 'edit') { |
|
531 | if (this.mode !== 'edit') { | |
|
532 | $([IPython.events]).trigger('edit_mode.Notebook'); | |||
549 | var cell = this.get_selected_cell(); |
|
533 | var cell = this.get_selected_cell(); | |
550 | if (cell === null) {return;} // No cell is selected |
|
534 | if (cell === null) {return;} // No cell is selected | |
551 | // We need to set the mode to edit to prevent reentering this method |
|
535 | // We need to set the mode to edit to prevent reentering this method | |
@@ -553,7 +537,7 b' var IPython = (function (IPython) {' | |||||
553 | this.mode = 'edit'; |
|
537 | this.mode = 'edit'; | |
554 | IPython.keyboard_manager.edit_mode(); |
|
538 | IPython.keyboard_manager.edit_mode(); | |
555 | cell.edit_mode(); |
|
539 | cell.edit_mode(); | |
556 |
} |
|
540 | } | |
557 | }; |
|
541 | }; | |
558 |
|
542 | |||
559 | Notebook.prototype.focus_cell = function () { |
|
543 | Notebook.prototype.focus_cell = function () { | |
@@ -582,9 +566,9 b' var IPython = (function (IPython) {' | |||||
582 | this.select(i-1); |
|
566 | this.select(i-1); | |
583 | var cell = this.get_selected_cell(); |
|
567 | var cell = this.get_selected_cell(); | |
584 | cell.focus_cell(); |
|
568 | cell.focus_cell(); | |
585 |
} |
|
569 | } | |
586 | this.set_dirty(true); |
|
570 | this.set_dirty(true); | |
587 |
} |
|
571 | } | |
588 | return this; |
|
572 | return this; | |
589 | }; |
|
573 | }; | |
590 |
|
574 | |||
@@ -607,8 +591,8 b' var IPython = (function (IPython) {' | |||||
607 | this.select(i+1); |
|
591 | this.select(i+1); | |
608 | var cell = this.get_selected_cell(); |
|
592 | var cell = this.get_selected_cell(); | |
609 | cell.focus_cell(); |
|
593 | cell.focus_cell(); | |
610 |
} |
|
594 | } | |
611 |
} |
|
595 | } | |
612 | this.set_dirty(); |
|
596 | this.set_dirty(); | |
613 | return this; |
|
597 | return this; | |
614 | }; |
|
598 | }; | |
@@ -648,10 +632,10 b' var IPython = (function (IPython) {' | |||||
648 | this.select(i); |
|
632 | this.select(i); | |
649 | this.undelete_index = i; |
|
633 | this.undelete_index = i; | |
650 | this.undelete_below = false; |
|
634 | this.undelete_below = false; | |
651 |
} |
|
635 | } | |
652 | $([IPython.events]).trigger('delete.Cell', {'cell': cell, 'index': i}); |
|
636 | $([IPython.events]).trigger('delete.Cell', {'cell': cell, 'index': i}); | |
653 | this.set_dirty(true); |
|
637 | this.set_dirty(true); | |
654 |
} |
|
638 | } | |
655 | return this; |
|
639 | return this; | |
656 | }; |
|
640 | }; | |
657 |
|
641 | |||
@@ -689,7 +673,7 b' var IPython = (function (IPython) {' | |||||
689 | this.undelete_index = null; |
|
673 | this.undelete_index = null; | |
690 | } |
|
674 | } | |
691 | $('#undelete_cell').addClass('disabled'); |
|
675 | $('#undelete_cell').addClass('disabled'); | |
692 | } |
|
676 | }; | |
693 |
|
677 | |||
694 | /** |
|
678 | /** | |
695 | * Insert a cell so that after insertion the cell is at given index. |
|
679 | * Insert a cell so that after insertion the cell is at given index. | |
@@ -707,8 +691,8 b' var IPython = (function (IPython) {' | |||||
707 | Notebook.prototype.insert_cell_at_index = function(type, index){ |
|
691 | Notebook.prototype.insert_cell_at_index = function(type, index){ | |
708 |
|
692 | |||
709 | var ncells = this.ncells(); |
|
693 | var ncells = this.ncells(); | |
710 |
|
|
694 | index = Math.min(index,ncells); | |
711 |
|
|
695 | index = Math.max(index,0); | |
712 | var cell = null; |
|
696 | var cell = null; | |
713 |
|
697 | |||
714 | if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) { |
|
698 | if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) { | |
@@ -848,8 +832,8 b' var IPython = (function (IPython) {' | |||||
848 | source_element.remove(); |
|
832 | source_element.remove(); | |
849 | this.select(i); |
|
833 | this.select(i); | |
850 | this.set_dirty(true); |
|
834 | this.set_dirty(true); | |
851 |
} |
|
835 | } | |
852 |
} |
|
836 | } | |
853 | }; |
|
837 | }; | |
854 |
|
838 | |||
855 | /** |
|
839 | /** | |
@@ -868,7 +852,7 b' var IPython = (function (IPython) {' | |||||
868 | var text = source_cell.get_text(); |
|
852 | var text = source_cell.get_text(); | |
869 | if (text === source_cell.placeholder) { |
|
853 | if (text === source_cell.placeholder) { | |
870 | text = ''; |
|
854 | text = ''; | |
871 |
} |
|
855 | } | |
872 | // We must show the editor before setting its contents |
|
856 | // We must show the editor before setting its contents | |
873 | target_cell.unrender(); |
|
857 | target_cell.unrender(); | |
874 | target_cell.set_text(text); |
|
858 | target_cell.set_text(text); | |
@@ -881,8 +865,8 b' var IPython = (function (IPython) {' | |||||
881 | target_cell.render(); |
|
865 | target_cell.render(); | |
882 | } |
|
866 | } | |
883 | this.set_dirty(true); |
|
867 | this.set_dirty(true); | |
884 |
} |
|
868 | } | |
885 |
} |
|
869 | } | |
886 | }; |
|
870 | }; | |
887 |
|
871 | |||
888 | /** |
|
872 | /** | |
@@ -902,7 +886,7 b' var IPython = (function (IPython) {' | |||||
902 | var text = source_cell.get_text(); |
|
886 | var text = source_cell.get_text(); | |
903 | if (text === source_cell.placeholder) { |
|
887 | if (text === source_cell.placeholder) { | |
904 | text = ''; |
|
888 | text = ''; | |
905 |
} |
|
889 | } | |
906 | // We must show the editor before setting its contents |
|
890 | // We must show the editor before setting its contents | |
907 | target_cell.unrender(); |
|
891 | target_cell.unrender(); | |
908 | target_cell.set_text(text); |
|
892 | target_cell.set_text(text); | |
@@ -912,8 +896,8 b' var IPython = (function (IPython) {' | |||||
912 | source_element.remove(); |
|
896 | source_element.remove(); | |
913 | this.select(i); |
|
897 | this.select(i); | |
914 | this.set_dirty(true); |
|
898 | this.set_dirty(true); | |
915 |
} |
|
899 | } | |
916 |
} |
|
900 | } | |
917 | }; |
|
901 | }; | |
918 |
|
902 | |||
919 | /** |
|
903 | /** | |
@@ -937,7 +921,7 b' var IPython = (function (IPython) {' | |||||
937 | var text = source_cell.get_text(); |
|
921 | var text = source_cell.get_text(); | |
938 | if (text === source_cell.placeholder) { |
|
922 | if (text === source_cell.placeholder) { | |
939 | text = ''; |
|
923 | text = ''; | |
940 |
} |
|
924 | } | |
941 | // We must show the editor before setting its contents |
|
925 | // We must show the editor before setting its contents | |
942 | target_cell.set_level(level); |
|
926 | target_cell.set_level(level); | |
943 | target_cell.unrender(); |
|
927 | target_cell.unrender(); | |
@@ -950,12 +934,12 b' var IPython = (function (IPython) {' | |||||
950 | if ((source_cell instanceof IPython.TextCell) && source_cell.rendered) { |
|
934 | if ((source_cell instanceof IPython.TextCell) && source_cell.rendered) { | |
951 | target_cell.render(); |
|
935 | target_cell.render(); | |
952 | } |
|
936 | } | |
953 |
} |
|
937 | } | |
954 | this.set_dirty(true); |
|
938 | this.set_dirty(true); | |
955 | $([IPython.events]).trigger('selected_cell_type_changed.Notebook', |
|
939 | $([IPython.events]).trigger('selected_cell_type_changed.Notebook', | |
956 | {'cell_type':'heading',level:level} |
|
940 | {'cell_type':'heading',level:level} | |
957 | ); |
|
941 | ); | |
958 |
} |
|
942 | } | |
959 | }; |
|
943 | }; | |
960 |
|
944 | |||
961 |
|
945 | |||
@@ -976,7 +960,7 b' var IPython = (function (IPython) {' | |||||
976 | $('#paste_cell_below').removeClass('disabled') |
|
960 | $('#paste_cell_below').removeClass('disabled') | |
977 | .on('click', function () {that.paste_cell_below();}); |
|
961 | .on('click', function () {that.paste_cell_below();}); | |
978 | this.paste_enabled = true; |
|
962 | this.paste_enabled = true; | |
979 |
} |
|
963 | } | |
980 | }; |
|
964 | }; | |
981 |
|
965 | |||
982 | /** |
|
966 | /** | |
@@ -990,7 +974,7 b' var IPython = (function (IPython) {' | |||||
990 | $('#paste_cell_above').addClass('disabled').off('click'); |
|
974 | $('#paste_cell_above').addClass('disabled').off('click'); | |
991 | $('#paste_cell_below').addClass('disabled').off('click'); |
|
975 | $('#paste_cell_below').addClass('disabled').off('click'); | |
992 | this.paste_enabled = false; |
|
976 | this.paste_enabled = false; | |
993 |
} |
|
977 | } | |
994 | }; |
|
978 | }; | |
995 |
|
979 | |||
996 | /** |
|
980 | /** | |
@@ -1001,7 +985,7 b' var IPython = (function (IPython) {' | |||||
1001 | Notebook.prototype.cut_cell = function () { |
|
985 | Notebook.prototype.cut_cell = function () { | |
1002 | this.copy_cell(); |
|
986 | this.copy_cell(); | |
1003 | this.delete_cell(); |
|
987 | this.delete_cell(); | |
1004 | } |
|
988 | }; | |
1005 |
|
989 | |||
1006 | /** |
|
990 | /** | |
1007 | * Copy a cell. |
|
991 | * Copy a cell. | |
@@ -1027,7 +1011,7 b' var IPython = (function (IPython) {' | |||||
1027 | var old_cell = this.get_next_cell(new_cell); |
|
1011 | var old_cell = this.get_next_cell(new_cell); | |
1028 | this.delete_cell(this.find_cell_index(old_cell)); |
|
1012 | this.delete_cell(this.find_cell_index(old_cell)); | |
1029 | this.select(this.find_cell_index(new_cell)); |
|
1013 | this.select(this.find_cell_index(new_cell)); | |
1030 |
} |
|
1014 | } | |
1031 | }; |
|
1015 | }; | |
1032 |
|
1016 | |||
1033 | /** |
|
1017 | /** | |
@@ -1041,7 +1025,7 b' var IPython = (function (IPython) {' | |||||
1041 | var new_cell = this.insert_cell_above(cell_data.cell_type); |
|
1025 | var new_cell = this.insert_cell_above(cell_data.cell_type); | |
1042 | new_cell.fromJSON(cell_data); |
|
1026 | new_cell.fromJSON(cell_data); | |
1043 | new_cell.focus_cell(); |
|
1027 | new_cell.focus_cell(); | |
1044 |
} |
|
1028 | } | |
1045 | }; |
|
1029 | }; | |
1046 |
|
1030 | |||
1047 | /** |
|
1031 | /** | |
@@ -1055,7 +1039,7 b' var IPython = (function (IPython) {' | |||||
1055 | var new_cell = this.insert_cell_below(cell_data.cell_type); |
|
1039 | var new_cell = this.insert_cell_below(cell_data.cell_type); | |
1056 | new_cell.fromJSON(cell_data); |
|
1040 | new_cell.fromJSON(cell_data); | |
1057 | new_cell.focus_cell(); |
|
1041 | new_cell.focus_cell(); | |
1058 |
} |
|
1042 | } | |
1059 | }; |
|
1043 | }; | |
1060 |
|
1044 | |||
1061 | // Split/merge |
|
1045 | // Split/merge | |
@@ -1086,7 +1070,7 b' var IPython = (function (IPython) {' | |||||
1086 | new_cell.unrender(); |
|
1070 | new_cell.unrender(); | |
1087 | new_cell.set_text(texta); |
|
1071 | new_cell.set_text(texta); | |
1088 | } |
|
1072 | } | |
1089 |
} |
|
1073 | } | |
1090 | }; |
|
1074 | }; | |
1091 |
|
1075 | |||
1092 | /** |
|
1076 | /** | |
@@ -1120,10 +1104,10 b' var IPython = (function (IPython) {' | |||||
1120 | // that of the original selected cell; |
|
1104 | // that of the original selected cell; | |
1121 | cell.render(); |
|
1105 | cell.render(); | |
1122 | } |
|
1106 | } | |
1123 |
} |
|
1107 | } | |
1124 | this.delete_cell(index-1); |
|
1108 | this.delete_cell(index-1); | |
1125 | this.select(this.find_cell_index(cell)); |
|
1109 | this.select(this.find_cell_index(cell)); | |
1126 |
} |
|
1110 | } | |
1127 | }; |
|
1111 | }; | |
1128 |
|
1112 | |||
1129 | /** |
|
1113 | /** | |
@@ -1157,10 +1141,10 b' var IPython = (function (IPython) {' | |||||
1157 | // that of the original selected cell; |
|
1141 | // that of the original selected cell; | |
1158 | cell.render(); |
|
1142 | cell.render(); | |
1159 | } |
|
1143 | } | |
1160 |
} |
|
1144 | } | |
1161 | this.delete_cell(index+1); |
|
1145 | this.delete_cell(index+1); | |
1162 | this.select(this.find_cell_index(cell)); |
|
1146 | this.select(this.find_cell_index(cell)); | |
1163 |
} |
|
1147 | } | |
1164 | }; |
|
1148 | }; | |
1165 |
|
1149 | |||
1166 |
|
1150 | |||
@@ -1363,7 +1347,7 b' var IPython = (function (IPython) {' | |||||
1363 | * @method start_session |
|
1347 | * @method start_session | |
1364 | */ |
|
1348 | */ | |
1365 | Notebook.prototype.start_session = function () { |
|
1349 | Notebook.prototype.start_session = function () { | |
1366 |
this.session = new IPython.Session(this |
|
1350 | this.session = new IPython.Session(this, this.options); | |
1367 | this.session.start($.proxy(this._session_started, this)); |
|
1351 | this.session.start($.proxy(this._session_started, this)); | |
1368 | }; |
|
1352 | }; | |
1369 |
|
1353 | |||
@@ -1380,8 +1364,8 b' var IPython = (function (IPython) {' | |||||
1380 | var cell = this.get_cell(i); |
|
1364 | var cell = this.get_cell(i); | |
1381 | if (cell instanceof IPython.CodeCell) { |
|
1365 | if (cell instanceof IPython.CodeCell) { | |
1382 | cell.set_kernel(this.session.kernel); |
|
1366 | cell.set_kernel(this.session.kernel); | |
1383 |
} |
|
1367 | } | |
1384 |
} |
|
1368 | } | |
1385 | }; |
|
1369 | }; | |
1386 |
|
1370 | |||
1387 | /** |
|
1371 | /** | |
@@ -1422,7 +1406,7 b' var IPython = (function (IPython) {' | |||||
1422 | this.command_mode(); |
|
1406 | this.command_mode(); | |
1423 | cell.focus_cell(); |
|
1407 | cell.focus_cell(); | |
1424 | this.set_dirty(true); |
|
1408 | this.set_dirty(true); | |
1425 | } |
|
1409 | }; | |
1426 |
|
1410 | |||
1427 | /** |
|
1411 | /** | |
1428 | * Execute or render cell outputs and insert a new cell below. |
|
1412 | * Execute or render cell outputs and insert a new cell below. | |
@@ -1518,7 +1502,7 b' var IPython = (function (IPython) {' | |||||
1518 | for (var i=start; i<end; i++) { |
|
1502 | for (var i=start; i<end; i++) { | |
1519 | this.select(i); |
|
1503 | this.select(i); | |
1520 | this.execute_cell(); |
|
1504 | this.execute_cell(); | |
1521 |
} |
|
1505 | } | |
1522 | }; |
|
1506 | }; | |
1523 |
|
1507 | |||
1524 | // Persistance and loading |
|
1508 | // Persistance and loading | |
@@ -1527,7 +1511,7 b' var IPython = (function (IPython) {' | |||||
1527 | * Getter method for this notebook's name. |
|
1511 | * Getter method for this notebook's name. | |
1528 | * |
|
1512 | * | |
1529 | * @method get_notebook_name |
|
1513 | * @method get_notebook_name | |
1530 | * @return {String} This notebook's name |
|
1514 | * @return {String} This notebook's name (excluding file extension) | |
1531 | */ |
|
1515 | */ | |
1532 | Notebook.prototype.get_notebook_name = function () { |
|
1516 | Notebook.prototype.get_notebook_name = function () { | |
1533 | var nbname = this.notebook_name.substring(0,this.notebook_name.length-6); |
|
1517 | var nbname = this.notebook_name.substring(0,this.notebook_name.length-6); | |
@@ -1553,11 +1537,11 b' var IPython = (function (IPython) {' | |||||
1553 | */ |
|
1537 | */ | |
1554 | Notebook.prototype.test_notebook_name = function (nbname) { |
|
1538 | Notebook.prototype.test_notebook_name = function (nbname) { | |
1555 | nbname = nbname || ''; |
|
1539 | nbname = nbname || ''; | |
1556 |
if (this.notebook_name_blacklist_re.test(nbname) |
|
1540 | if (nbname.length>0 && !this.notebook_name_blacklist_re.test(nbname)) { | |
1557 | return true; |
|
1541 | return true; | |
1558 | } else { |
|
1542 | } else { | |
1559 | return false; |
|
1543 | return false; | |
1560 |
} |
|
1544 | } | |
1561 | }; |
|
1545 | }; | |
1562 |
|
1546 | |||
1563 | /** |
|
1547 | /** | |
@@ -1575,7 +1559,7 b' var IPython = (function (IPython) {' | |||||
1575 | for (i=0; i<ncells; i++) { |
|
1559 | for (i=0; i<ncells; i++) { | |
1576 | // Always delete cell 0 as they get renumbered as they are deleted. |
|
1560 | // Always delete cell 0 as they get renumbered as they are deleted. | |
1577 | this.delete_cell(0); |
|
1561 | this.delete_cell(0); | |
1578 |
} |
|
1562 | } | |
1579 | // Save the metadata and name. |
|
1563 | // Save the metadata and name. | |
1580 | this.metadata = content.metadata; |
|
1564 | this.metadata = content.metadata; | |
1581 | this.notebook_name = data.name; |
|
1565 | this.notebook_name = data.name; | |
@@ -1599,8 +1583,8 b' var IPython = (function (IPython) {' | |||||
1599 |
|
1583 | |||
1600 | new_cell = this.insert_cell_at_index(cell_data.cell_type, i); |
|
1584 | new_cell = this.insert_cell_at_index(cell_data.cell_type, i); | |
1601 | new_cell.fromJSON(cell_data); |
|
1585 | new_cell.fromJSON(cell_data); | |
1602 |
} |
|
1586 | } | |
1603 |
} |
|
1587 | } | |
1604 | if (content.worksheets.length > 1) { |
|
1588 | if (content.worksheets.length > 1) { | |
1605 | IPython.dialog.modal({ |
|
1589 | IPython.dialog.modal({ | |
1606 | title : "Multiple worksheets", |
|
1590 | title : "Multiple worksheets", | |
@@ -1628,7 +1612,7 b' var IPython = (function (IPython) {' | |||||
1628 | var cell_array = new Array(ncells); |
|
1612 | var cell_array = new Array(ncells); | |
1629 | for (var i=0; i<ncells; i++) { |
|
1613 | for (var i=0; i<ncells; i++) { | |
1630 | cell_array[i] = cells[i].toJSON(); |
|
1614 | cell_array[i] = cells[i].toJSON(); | |
1631 |
} |
|
1615 | } | |
1632 | var data = { |
|
1616 | var data = { | |
1633 | // Only handle 1 worksheet for now. |
|
1617 | // Only handle 1 worksheet for now. | |
1634 | worksheets : [{ |
|
1618 | worksheets : [{ | |
@@ -1664,7 +1648,7 b' var IPython = (function (IPython) {' | |||||
1664 | } else { |
|
1648 | } else { | |
1665 | this.autosave_timer = null; |
|
1649 | this.autosave_timer = null; | |
1666 | $([IPython.events]).trigger("autosave_disabled.Notebook"); |
|
1650 | $([IPython.events]).trigger("autosave_disabled.Notebook"); | |
1667 |
} |
|
1651 | } | |
1668 | }; |
|
1652 | }; | |
1669 |
|
1653 | |||
1670 | /** |
|
1654 | /** | |
@@ -1699,7 +1683,7 b' var IPython = (function (IPython) {' | |||||
1699 | } |
|
1683 | } | |
1700 | $([IPython.events]).trigger('notebook_saving.Notebook'); |
|
1684 | $([IPython.events]).trigger('notebook_saving.Notebook'); | |
1701 | var url = utils.url_join_encode( |
|
1685 | var url = utils.url_join_encode( | |
1702 |
this. |
|
1686 | this.base_url, | |
1703 | 'api/notebooks', |
|
1687 | 'api/notebooks', | |
1704 | this.notebook_path, |
|
1688 | this.notebook_path, | |
1705 | this.notebook_name |
|
1689 | this.notebook_name | |
@@ -1723,7 +1707,7 b' var IPython = (function (IPython) {' | |||||
1723 | if (this._checkpoint_after_save) { |
|
1707 | if (this._checkpoint_after_save) { | |
1724 | this.create_checkpoint(); |
|
1708 | this.create_checkpoint(); | |
1725 | this._checkpoint_after_save = false; |
|
1709 | this._checkpoint_after_save = false; | |
1726 |
} |
|
1710 | } | |
1727 | }; |
|
1711 | }; | |
1728 |
|
1712 | |||
1729 | /** |
|
1713 | /** | |
@@ -1760,7 +1744,7 b' var IPython = (function (IPython) {' | |||||
1760 |
|
1744 | |||
1761 | Notebook.prototype.new_notebook = function(){ |
|
1745 | Notebook.prototype.new_notebook = function(){ | |
1762 | var path = this.notebook_path; |
|
1746 | var path = this.notebook_path; | |
1763 |
var base_ |
|
1747 | var base_url = this.base_url; | |
1764 | var settings = { |
|
1748 | var settings = { | |
1765 | processData : false, |
|
1749 | processData : false, | |
1766 | cache : false, |
|
1750 | cache : false, | |
@@ -1771,7 +1755,7 b' var IPython = (function (IPython) {' | |||||
1771 | var notebook_name = data.name; |
|
1755 | var notebook_name = data.name; | |
1772 | window.open( |
|
1756 | window.open( | |
1773 | utils.url_join_encode( |
|
1757 | utils.url_join_encode( | |
1774 |
base_ |
|
1758 | base_url, | |
1775 | 'notebooks', |
|
1759 | 'notebooks', | |
1776 | path, |
|
1760 | path, | |
1777 | notebook_name |
|
1761 | notebook_name | |
@@ -1781,7 +1765,7 b' var IPython = (function (IPython) {' | |||||
1781 | } |
|
1765 | } | |
1782 | }; |
|
1766 | }; | |
1783 | var url = utils.url_join_encode( |
|
1767 | var url = utils.url_join_encode( | |
1784 |
base_ |
|
1768 | base_url, | |
1785 | 'api/notebooks', |
|
1769 | 'api/notebooks', | |
1786 | path |
|
1770 | path | |
1787 | ); |
|
1771 | ); | |
@@ -1791,7 +1775,7 b' var IPython = (function (IPython) {' | |||||
1791 |
|
1775 | |||
1792 | Notebook.prototype.copy_notebook = function(){ |
|
1776 | Notebook.prototype.copy_notebook = function(){ | |
1793 | var path = this.notebook_path; |
|
1777 | var path = this.notebook_path; | |
1794 |
var base_ |
|
1778 | var base_url = this.base_url; | |
1795 | var settings = { |
|
1779 | var settings = { | |
1796 | processData : false, |
|
1780 | processData : false, | |
1797 | cache : false, |
|
1781 | cache : false, | |
@@ -1801,7 +1785,7 b' var IPython = (function (IPython) {' | |||||
1801 | async : false, |
|
1785 | async : false, | |
1802 | success : function (data, status, xhr) { |
|
1786 | success : function (data, status, xhr) { | |
1803 | window.open(utils.url_join_encode( |
|
1787 | window.open(utils.url_join_encode( | |
1804 |
base_ |
|
1788 | base_url, | |
1805 | 'notebooks', |
|
1789 | 'notebooks', | |
1806 | data.path, |
|
1790 | data.path, | |
1807 | data.name |
|
1791 | data.name | |
@@ -1809,7 +1793,7 b' var IPython = (function (IPython) {' | |||||
1809 | } |
|
1793 | } | |
1810 | }; |
|
1794 | }; | |
1811 | var url = utils.url_join_encode( |
|
1795 | var url = utils.url_join_encode( | |
1812 |
base_ |
|
1796 | base_url, | |
1813 | 'api/notebooks', |
|
1797 | 'api/notebooks', | |
1814 | path |
|
1798 | path | |
1815 | ); |
|
1799 | ); | |
@@ -1818,7 +1802,10 b' var IPython = (function (IPython) {' | |||||
1818 |
|
1802 | |||
1819 | Notebook.prototype.rename = function (nbname) { |
|
1803 | Notebook.prototype.rename = function (nbname) { | |
1820 | var that = this; |
|
1804 | var that = this; | |
1821 | var data = {name: nbname + '.ipynb'}; |
|
1805 | if (!nbname.match(/\.ipynb$/)) { | |
|
1806 | nbname = nbname + ".ipynb"; | |||
|
1807 | } | |||
|
1808 | var data = {name: nbname}; | |||
1822 | var settings = { |
|
1809 | var settings = { | |
1823 | processData : false, |
|
1810 | processData : false, | |
1824 | cache : false, |
|
1811 | cache : false, | |
@@ -1831,7 +1818,7 b' var IPython = (function (IPython) {' | |||||
1831 | }; |
|
1818 | }; | |
1832 | $([IPython.events]).trigger('rename_notebook.Notebook', data); |
|
1819 | $([IPython.events]).trigger('rename_notebook.Notebook', data); | |
1833 | var url = utils.url_join_encode( |
|
1820 | var url = utils.url_join_encode( | |
1834 |
this. |
|
1821 | this.base_url, | |
1835 | 'api/notebooks', |
|
1822 | 'api/notebooks', | |
1836 | this.notebook_path, |
|
1823 | this.notebook_path, | |
1837 | this.notebook_name |
|
1824 | this.notebook_name | |
@@ -1848,7 +1835,7 b' var IPython = (function (IPython) {' | |||||
1848 | dataType: "json", |
|
1835 | dataType: "json", | |
1849 | }; |
|
1836 | }; | |
1850 | var url = utils.url_join_encode( |
|
1837 | var url = utils.url_join_encode( | |
1851 |
this. |
|
1838 | this.base_url, | |
1852 | 'api/notebooks', |
|
1839 | 'api/notebooks', | |
1853 | this.notebook_path, |
|
1840 | this.notebook_path, | |
1854 | this.notebook_name |
|
1841 | this.notebook_name | |
@@ -1858,19 +1845,18 b' var IPython = (function (IPython) {' | |||||
1858 |
|
1845 | |||
1859 |
|
1846 | |||
1860 | Notebook.prototype.rename_success = function (json, status, xhr) { |
|
1847 | Notebook.prototype.rename_success = function (json, status, xhr) { | |
1861 | this.notebook_name = json.name; |
|
1848 | var name = this.notebook_name = json.name; | |
1862 | var name = this.notebook_name; |
|
|||
1863 | var path = json.path; |
|
1849 | var path = json.path; | |
1864 | this.session.rename_notebook(name, path); |
|
1850 | this.session.rename_notebook(name, path); | |
1865 | $([IPython.events]).trigger('notebook_renamed.Notebook', json); |
|
1851 | $([IPython.events]).trigger('notebook_renamed.Notebook', json); | |
1866 | } |
|
1852 | }; | |
1867 |
|
1853 | |||
1868 | Notebook.prototype.rename_error = function (xhr, status, error) { |
|
1854 | Notebook.prototype.rename_error = function (xhr, status, error) { | |
1869 | var that = this; |
|
1855 | var that = this; | |
1870 | var dialog = $('<div/>').append( |
|
1856 | var dialog = $('<div/>').append( | |
1871 | $("<p/>").addClass("rename-message") |
|
1857 | $("<p/>").addClass("rename-message") | |
1872 | .text('This notebook name already exists.') |
|
1858 | .text('This notebook name already exists.') | |
1873 | ) |
|
1859 | ); | |
1874 | $([IPython.events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]); |
|
1860 | $([IPython.events]).trigger('notebook_rename_failed.Notebook', [xhr, status, error]); | |
1875 | IPython.dialog.modal({ |
|
1861 | IPython.dialog.modal({ | |
1876 | title: "Notebook Rename Error!", |
|
1862 | title: "Notebook Rename Error!", | |
@@ -1894,7 +1880,7 b' var IPython = (function (IPython) {' | |||||
1894 | that.find('input[type="text"]').focus(); |
|
1880 | that.find('input[type="text"]').focus(); | |
1895 | } |
|
1881 | } | |
1896 | }); |
|
1882 | }); | |
1897 | } |
|
1883 | }; | |
1898 |
|
1884 | |||
1899 | /** |
|
1885 | /** | |
1900 | * Request a notebook's data from the server. |
|
1886 | * Request a notebook's data from the server. | |
@@ -1917,7 +1903,7 b' var IPython = (function (IPython) {' | |||||
1917 | }; |
|
1903 | }; | |
1918 | $([IPython.events]).trigger('notebook_loading.Notebook'); |
|
1904 | $([IPython.events]).trigger('notebook_loading.Notebook'); | |
1919 | var url = utils.url_join_encode( |
|
1905 | var url = utils.url_join_encode( | |
1920 |
this. |
|
1906 | this.base_url, | |
1921 | 'api/notebooks', |
|
1907 | 'api/notebooks', | |
1922 | this.notebook_path, |
|
1908 | this.notebook_path, | |
1923 | this.notebook_name |
|
1909 | this.notebook_name | |
@@ -1944,7 +1930,7 b' var IPython = (function (IPython) {' | |||||
1944 | } else { |
|
1930 | } else { | |
1945 | this.select(0); |
|
1931 | this.select(0); | |
1946 | this.command_mode(); |
|
1932 | this.command_mode(); | |
1947 |
} |
|
1933 | } | |
1948 | this.set_dirty(false); |
|
1934 | this.set_dirty(false); | |
1949 | this.scroll_to_top(); |
|
1935 | this.scroll_to_top(); | |
1950 | if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) { |
|
1936 | if (data.orig_nbformat !== undefined && data.nbformat !== data.orig_nbformat) { | |
@@ -1969,7 +1955,7 b' var IPython = (function (IPython) {' | |||||
1969 | var this_vs = 'v' + data.nbformat + '.' + this.nbformat_minor; |
|
1955 | var this_vs = 'v' + data.nbformat + '.' + this.nbformat_minor; | |
1970 | var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " + |
|
1956 | var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " + | |
1971 | this_vs + ". You can still work with this notebook, but some features " + |
|
1957 | this_vs + ". You can still work with this notebook, but some features " + | |
1972 | "introduced in later notebook versions may not be available." |
|
1958 | "introduced in later notebook versions may not be available."; | |
1973 |
|
1959 | |||
1974 | IPython.dialog.modal({ |
|
1960 | IPython.dialog.modal({ | |
1975 | title : "Newer Notebook", |
|
1961 | title : "Newer Notebook", | |
@@ -1985,7 +1971,7 b' var IPython = (function (IPython) {' | |||||
1985 |
|
1971 | |||
1986 | // Create the session after the notebook is completely loaded to prevent |
|
1972 | // Create the session after the notebook is completely loaded to prevent | |
1987 | // code execution upon loading, which is a security risk. |
|
1973 | // code execution upon loading, which is a security risk. | |
1988 | if (this.session == null) { |
|
1974 | if (this.session === null) { | |
1989 | this.start_session(); |
|
1975 | this.start_session(); | |
1990 | } |
|
1976 | } | |
1991 | // load our checkpoint list |
|
1977 | // load our checkpoint list | |
@@ -2010,10 +1996,11 b' var IPython = (function (IPython) {' | |||||
2010 | */ |
|
1996 | */ | |
2011 | Notebook.prototype.load_notebook_error = function (xhr, status, error) { |
|
1997 | Notebook.prototype.load_notebook_error = function (xhr, status, error) { | |
2012 | $([IPython.events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]); |
|
1998 | $([IPython.events]).trigger('notebook_load_failed.Notebook', [xhr, status, error]); | |
|
1999 | var msg; | |||
2013 | if (xhr.status === 400) { |
|
2000 | if (xhr.status === 400) { | |
2014 |
|
|
2001 | msg = error; | |
2015 | } else if (xhr.status === 500) { |
|
2002 | } else if (xhr.status === 500) { | |
2016 |
|
|
2003 | msg = "An unknown error occurred while loading this notebook. " + | |
2017 | "This version can load notebook formats " + |
|
2004 | "This version can load notebook formats " + | |
2018 | "v" + this.nbformat + " or earlier."; |
|
2005 | "v" + this.nbformat + " or earlier."; | |
2019 | } |
|
2006 | } | |
@@ -2024,7 +2011,7 b' var IPython = (function (IPython) {' | |||||
2024 | "OK": {} |
|
2011 | "OK": {} | |
2025 | } |
|
2012 | } | |
2026 | }); |
|
2013 | }); | |
2027 | } |
|
2014 | }; | |
2028 |
|
2015 | |||
2029 | /********************* checkpoint-related *********************/ |
|
2016 | /********************* checkpoint-related *********************/ | |
2030 |
|
2017 | |||
@@ -2067,7 +2054,7 b' var IPython = (function (IPython) {' | |||||
2067 | */ |
|
2054 | */ | |
2068 | Notebook.prototype.list_checkpoints = function () { |
|
2055 | Notebook.prototype.list_checkpoints = function () { | |
2069 | var url = utils.url_join_encode( |
|
2056 | var url = utils.url_join_encode( | |
2070 |
this. |
|
2057 | this.base_url, | |
2071 | 'api/notebooks', |
|
2058 | 'api/notebooks', | |
2072 | this.notebook_path, |
|
2059 | this.notebook_path, | |
2073 | this.notebook_name, |
|
2060 | this.notebook_name, | |
@@ -2089,7 +2076,7 b' var IPython = (function (IPython) {' | |||||
2089 | * @param {jqXHR} xhr jQuery Ajax object |
|
2076 | * @param {jqXHR} xhr jQuery Ajax object | |
2090 | */ |
|
2077 | */ | |
2091 | Notebook.prototype.list_checkpoints_success = function (data, status, xhr) { |
|
2078 | Notebook.prototype.list_checkpoints_success = function (data, status, xhr) { | |
2092 |
|
|
2079 | data = $.parseJSON(data); | |
2093 | this.checkpoints = data; |
|
2080 | this.checkpoints = data; | |
2094 | if (data.length) { |
|
2081 | if (data.length) { | |
2095 | this.last_checkpoint = data[data.length - 1]; |
|
2082 | this.last_checkpoint = data[data.length - 1]; | |
@@ -2118,9 +2105,9 b' var IPython = (function (IPython) {' | |||||
2118 | */ |
|
2105 | */ | |
2119 | Notebook.prototype.create_checkpoint = function () { |
|
2106 | Notebook.prototype.create_checkpoint = function () { | |
2120 | var url = utils.url_join_encode( |
|
2107 | var url = utils.url_join_encode( | |
2121 |
this. |
|
2108 | this.base_url, | |
2122 | 'api/notebooks', |
|
2109 | 'api/notebooks', | |
2123 |
this.notebook |
|
2110 | this.notebook_path, | |
2124 | this.notebook_name, |
|
2111 | this.notebook_name, | |
2125 | 'checkpoints' |
|
2112 | 'checkpoints' | |
2126 | ); |
|
2113 | ); | |
@@ -2140,7 +2127,7 b' var IPython = (function (IPython) {' | |||||
2140 | * @param {jqXHR} xhr jQuery Ajax object |
|
2127 | * @param {jqXHR} xhr jQuery Ajax object | |
2141 | */ |
|
2128 | */ | |
2142 | Notebook.prototype.create_checkpoint_success = function (data, status, xhr) { |
|
2129 | Notebook.prototype.create_checkpoint_success = function (data, status, xhr) { | |
2143 |
|
|
2130 | data = $.parseJSON(data); | |
2144 | this.add_checkpoint(data); |
|
2131 | this.add_checkpoint(data); | |
2145 | $([IPython.events]).trigger('checkpoint_created.Notebook', data); |
|
2132 | $([IPython.events]).trigger('checkpoint_created.Notebook', data); | |
2146 | }; |
|
2133 | }; | |
@@ -2159,7 +2146,7 b' var IPython = (function (IPython) {' | |||||
2159 |
|
2146 | |||
2160 | Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) { |
|
2147 | Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) { | |
2161 | var that = this; |
|
2148 | var that = this; | |
2162 |
|
|
2149 | checkpoint = checkpoint || this.last_checkpoint; | |
2163 | if ( ! checkpoint ) { |
|
2150 | if ( ! checkpoint ) { | |
2164 | console.log("restore dialog, but no checkpoint to restore to!"); |
|
2151 | console.log("restore dialog, but no checkpoint to restore to!"); | |
2165 | return; |
|
2152 | return; | |
@@ -2194,7 +2181,7 b' var IPython = (function (IPython) {' | |||||
2194 | Cancel : {} |
|
2181 | Cancel : {} | |
2195 | } |
|
2182 | } | |
2196 | }); |
|
2183 | }); | |
2197 | } |
|
2184 | }; | |
2198 |
|
2185 | |||
2199 | /** |
|
2186 | /** | |
2200 | * Restore the notebook to a checkpoint state. |
|
2187 | * Restore the notebook to a checkpoint state. | |
@@ -2205,9 +2192,9 b' var IPython = (function (IPython) {' | |||||
2205 | Notebook.prototype.restore_checkpoint = function (checkpoint) { |
|
2192 | Notebook.prototype.restore_checkpoint = function (checkpoint) { | |
2206 | $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint); |
|
2193 | $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint); | |
2207 | var url = utils.url_join_encode( |
|
2194 | var url = utils.url_join_encode( | |
2208 |
this. |
|
2195 | this.base_url, | |
2209 | 'api/notebooks', |
|
2196 | 'api/notebooks', | |
2210 |
this.notebook |
|
2197 | this.notebook_path, | |
2211 | this.notebook_name, |
|
2198 | this.notebook_name, | |
2212 | 'checkpoints', |
|
2199 | 'checkpoints', | |
2213 | checkpoint |
|
2200 | checkpoint | |
@@ -2253,9 +2240,9 b' var IPython = (function (IPython) {' | |||||
2253 | Notebook.prototype.delete_checkpoint = function (checkpoint) { |
|
2240 | Notebook.prototype.delete_checkpoint = function (checkpoint) { | |
2254 | $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint); |
|
2241 | $([IPython.events]).trigger('notebook_restoring.Notebook', checkpoint); | |
2255 | var url = utils.url_join_encode( |
|
2242 | var url = utils.url_join_encode( | |
2256 |
this. |
|
2243 | this.base_url, | |
2257 | 'api/notebooks', |
|
2244 | 'api/notebooks', | |
2258 |
this.notebook |
|
2245 | this.notebook_path, | |
2259 | this.notebook_name, |
|
2246 | this.notebook_name, | |
2260 | 'checkpoints', |
|
2247 | 'checkpoints', | |
2261 | checkpoint |
|
2248 | checkpoint |
@@ -69,17 +69,29 b' var IPython = (function (IPython) {' | |||||
69 |
|
69 | |||
70 | NotificationArea.prototype.init_notification_widgets = function() { |
|
70 | NotificationArea.prototype.init_notification_widgets = function() { | |
71 | var knw = this.new_notification_widget('kernel'); |
|
71 | var knw = this.new_notification_widget('kernel'); | |
72 | var $kernel_indic = $("#kernel_indicator"); |
|
72 | var $kernel_ind_icon = $("#kernel_indicator_icon"); | |
|
73 | var $modal_ind_icon = $("#modal_indicator_icon"); | |||
|
74 | ||||
|
75 | // Command/Edit mode | |||
|
76 | $([IPython.events]).on('edit_mode.Notebook',function () { | |||
|
77 | IPython.save_widget.update_document_title(); | |||
|
78 | $modal_ind_icon.attr('class','icon-pencil').attr('title','Edit Mode'); | |||
|
79 | }); | |||
|
80 | ||||
|
81 | $([IPython.events]).on('command_mode.Notebook',function () { | |||
|
82 | IPython.save_widget.update_document_title(); | |||
|
83 | $modal_ind_icon.attr('class','').attr('title','Command Mode'); | |||
|
84 | }); | |||
73 |
|
85 | |||
74 | // Kernel events |
|
86 | // Kernel events | |
75 | $([IPython.events]).on('status_idle.Kernel',function () { |
|
87 | $([IPython.events]).on('status_idle.Kernel',function () { | |
76 | IPython.save_widget.update_document_title(); |
|
88 | IPython.save_widget.update_document_title(); | |
77 | $kernel_indic.attr('class','icon-circle-blank').attr('title','Kernel Idle'); |
|
89 | $kernel_ind_icon.attr('class','icon-circle-blank').attr('title','Kernel Idle'); | |
78 | }); |
|
90 | }); | |
79 |
|
91 | |||
80 | $([IPython.events]).on('status_busy.Kernel',function () { |
|
92 | $([IPython.events]).on('status_busy.Kernel',function () { | |
81 | window.document.title='(Busy) '+window.document.title; |
|
93 | window.document.title='(Busy) '+window.document.title; | |
82 | $kernel_indic.attr('class','icon-circle').attr('title','Kernel Busy'); |
|
94 | $kernel_ind_icon.attr('class','icon-circle').attr('title','Kernel Busy'); | |
83 | }); |
|
95 | }); | |
84 |
|
96 | |||
85 | $([IPython.events]).on('status_restarting.Kernel',function () { |
|
97 | $([IPython.events]).on('status_restarting.Kernel',function () { |
@@ -252,6 +252,7 b' var IPython = (function (IPython) {' | |||||
252 | 'image/svg+xml', |
|
252 | 'image/svg+xml', | |
253 | 'image/png', |
|
253 | 'image/png', | |
254 | 'image/jpeg', |
|
254 | 'image/jpeg', | |
|
255 | 'application/pdf', | |||
255 | 'text/plain' |
|
256 | 'text/plain' | |
256 | ]; |
|
257 | ]; | |
257 |
|
258 | |||
@@ -620,6 +621,17 b' var IPython = (function (IPython) {' | |||||
620 | }; |
|
621 | }; | |
621 |
|
622 | |||
622 |
|
623 | |||
|
624 | OutputArea.prototype.append_pdf = function (pdf, md, element) { | |||
|
625 | var type = 'application/pdf'; | |||
|
626 | var toinsert = this.create_output_subarea(md, "output_pdf", type); | |||
|
627 | var a = $('<a/>').attr('href', 'data:application/pdf;base64,'+pdf); | |||
|
628 | a.attr('target', '_blank'); | |||
|
629 | a.text('View PDF') | |||
|
630 | toinsert.append(a); | |||
|
631 | element.append(toinsert); | |||
|
632 | return toinsert; | |||
|
633 | } | |||
|
634 | ||||
623 | OutputArea.prototype.append_latex = function (latex, md, element) { |
|
635 | OutputArea.prototype.append_latex = function (latex, md, element) { | |
624 | // This method cannot do the typesetting because the latex first has to |
|
636 | // This method cannot do the typesetting because the latex first has to | |
625 | // be on the page. |
|
637 | // be on the page. | |
@@ -807,6 +819,7 b' var IPython = (function (IPython) {' | |||||
807 | "image/svg+xml" : "svg", |
|
819 | "image/svg+xml" : "svg", | |
808 | "image/png" : "png", |
|
820 | "image/png" : "png", | |
809 | "image/jpeg" : "jpeg", |
|
821 | "image/jpeg" : "jpeg", | |
|
822 | "application/pdf" : "pdf", | |||
810 | "text/latex" : "latex", |
|
823 | "text/latex" : "latex", | |
811 | "application/json" : "json", |
|
824 | "application/json" : "json", | |
812 | "application/javascript" : "javascript", |
|
825 | "application/javascript" : "javascript", | |
@@ -818,6 +831,7 b' var IPython = (function (IPython) {' | |||||
818 | "svg" : "image/svg+xml", |
|
831 | "svg" : "image/svg+xml", | |
819 | "png" : "image/png", |
|
832 | "png" : "image/png", | |
820 | "jpeg" : "image/jpeg", |
|
833 | "jpeg" : "image/jpeg", | |
|
834 | "pdf" : "application/pdf", | |||
821 | "latex" : "text/latex", |
|
835 | "latex" : "text/latex", | |
822 | "json" : "application/json", |
|
836 | "json" : "application/json", | |
823 | "javascript" : "application/javascript", |
|
837 | "javascript" : "application/javascript", | |
@@ -830,6 +844,7 b' var IPython = (function (IPython) {' | |||||
830 | 'image/svg+xml', |
|
844 | 'image/svg+xml', | |
831 | 'image/png', |
|
845 | 'image/png', | |
832 | 'image/jpeg', |
|
846 | 'image/jpeg', | |
|
847 | 'application/pdf', | |||
833 | 'text/plain' |
|
848 | 'text/plain' | |
834 | ]; |
|
849 | ]; | |
835 |
|
850 | |||
@@ -842,6 +857,7 b' var IPython = (function (IPython) {' | |||||
842 | "text/latex" : OutputArea.prototype.append_latex, |
|
857 | "text/latex" : OutputArea.prototype.append_latex, | |
843 | "application/json" : OutputArea.prototype.append_json, |
|
858 | "application/json" : OutputArea.prototype.append_json, | |
844 | "application/javascript" : OutputArea.prototype.append_javascript, |
|
859 | "application/javascript" : OutputArea.prototype.append_javascript, | |
|
860 | "application/pdf" : OutputArea.prototype.append_pdf | |||
845 | }; |
|
861 | }; | |
846 |
|
862 | |||
847 | IPython.OutputArea = OutputArea; |
|
863 | IPython.OutputArea = OutputArea; |
@@ -127,7 +127,7 b' var IPython = (function (IPython) {' | |||||
127 |
|
127 | |||
128 | SaveWidget.prototype.update_address_bar = function(){ |
|
128 | SaveWidget.prototype.update_address_bar = function(){ | |
129 | var nbname = IPython.notebook.notebook_name; |
|
129 | var nbname = IPython.notebook.notebook_name; | |
130 |
var path = IPython.notebook.notebook |
|
130 | var path = IPython.notebook.notebook_path; | |
131 | var state = {path : utils.url_join_encode(path, nbname)}; |
|
131 | var state = {path : utils.url_join_encode(path, nbname)}; | |
132 | window.history.replaceState(state, "", utils.url_join_encode( |
|
132 | window.history.replaceState(state, "", utils.url_join_encode( | |
133 | "/notebooks", |
|
133 | "/notebooks", |
@@ -1,3 +1,18 b'' | |||||
1 | #notification_area { |
|
1 | #notification_area { | |
2 | z-index: 10; |
|
2 | z-index: 10; | |
3 | } |
|
3 | } | |
|
4 | ||||
|
5 | .indicator_area { | |||
|
6 | color: @navbarLinkColor; | |||
|
7 | padding: 4px 3px; | |||
|
8 | margin: 0px; | |||
|
9 | width: 11px; | |||
|
10 | z-index: 10; | |||
|
11 | text-align: center; | |||
|
12 | } | |||
|
13 | ||||
|
14 | #kernel_indicator { | |||
|
15 | // Pull it to the right, outside the container boundary | |||
|
16 | margin-right: -16px; | |||
|
17 | } | |||
|
18 |
@@ -1,4 +1,4 b'' | |||||
1 | .notification_widget{ |
|
1 | .notification_widget { | |
2 | color: @navbarLinkColor; |
|
2 | color: @navbarLinkColor; | |
3 | padding: 1px 12px; |
|
3 | padding: 1px 12px; | |
4 | margin: 2px 4px; |
|
4 | margin: 2px 4px; | |
@@ -10,13 +10,4 b'' | |||||
10 | &.span { |
|
10 | &.span { | |
11 | padding-right:2px; |
|
11 | padding-right:2px; | |
12 | } |
|
12 | } | |
13 |
|
||||
14 | } |
|
|||
15 |
|
||||
16 | #indicator_area{ |
|
|||
17 | color: @navbarLinkColor; |
|
|||
18 | padding: 2px 2px; |
|
|||
19 | margin: 2px -9px 2px 4px; |
|
|||
20 | z-index: 10; |
|
|||
21 |
|
||||
22 | } |
|
13 | } |
@@ -25,12 +25,12 b' var IPython = (function (IPython) {' | |||||
25 | * A Kernel Class to communicate with the Python kernel |
|
25 | * A Kernel Class to communicate with the Python kernel | |
26 | * @Class Kernel |
|
26 | * @Class Kernel | |
27 | */ |
|
27 | */ | |
28 |
var Kernel = function ( |
|
28 | var Kernel = function (kernel_service_url) { | |
29 | this.kernel_id = null; |
|
29 | this.kernel_id = null; | |
30 | this.shell_channel = null; |
|
30 | this.shell_channel = null; | |
31 | this.iopub_channel = null; |
|
31 | this.iopub_channel = null; | |
32 | this.stdin_channel = null; |
|
32 | this.stdin_channel = null; | |
33 |
this. |
|
33 | this.kernel_service_url = kernel_service_url; | |
34 | this.running = false; |
|
34 | this.running = false; | |
35 | this.username = "username"; |
|
35 | this.username = "username"; | |
36 | this.session_id = utils.uuid(); |
|
36 | this.session_id = utils.uuid(); | |
@@ -94,8 +94,7 b' var IPython = (function (IPython) {' | |||||
94 | params = params || {}; |
|
94 | params = params || {}; | |
95 | if (!this.running) { |
|
95 | if (!this.running) { | |
96 | var qs = $.param(params); |
|
96 | var qs = $.param(params); | |
97 | var url = this.base_url + '?' + qs; |
|
97 | $.post(utils.url_join_encode(this.kernel_service_url) + '?' + qs, | |
98 | $.post(url, |
|
|||
99 | $.proxy(this._kernel_started, this), |
|
98 | $.proxy(this._kernel_started, this), | |
100 | 'json' |
|
99 | 'json' | |
101 | ); |
|
100 | ); | |
@@ -114,8 +113,7 b' var IPython = (function (IPython) {' | |||||
114 | $([IPython.events]).trigger('status_restarting.Kernel', {kernel: this}); |
|
113 | $([IPython.events]).trigger('status_restarting.Kernel', {kernel: this}); | |
115 | if (this.running) { |
|
114 | if (this.running) { | |
116 | this.stop_channels(); |
|
115 | this.stop_channels(); | |
117 |
|
|
116 | $.post(utils.url_join_encode(this.kernel_url, "restart"), | |
118 | $.post(url, |
|
|||
119 | $.proxy(this._kernel_started, this), |
|
117 | $.proxy(this._kernel_started, this), | |
120 | 'json' |
|
118 | 'json' | |
121 | ); |
|
119 | ); | |
@@ -133,8 +131,10 b' var IPython = (function (IPython) {' | |||||
133 | var prot = location.protocol.replace('http', 'ws') + "//"; |
|
131 | var prot = location.protocol.replace('http', 'ws') + "//"; | |
134 | ws_url = prot + location.host + ws_url; |
|
132 | ws_url = prot + location.host + ws_url; | |
135 | } |
|
133 | } | |
136 | this.ws_url = ws_url; |
|
134 | var parsed = utils.parse_url(ws_url); | |
137 | this.kernel_url = utils.url_join_encode(this.base_url, this.kernel_id); |
|
135 | this.ws_host = parsed.protocol + "//" + parsed.host; | |
|
136 | this.kernel_url = utils.url_path_join(this.kernel_service_url, this.kernel_id); | |||
|
137 | this.ws_url = utils.url_path_join(parsed.pathname, this.kernel_url); | |||
138 | this.start_channels(); |
|
138 | this.start_channels(); | |
139 | }; |
|
139 | }; | |
140 |
|
140 | |||
@@ -155,12 +155,18 b' var IPython = (function (IPython) {' | |||||
155 | Kernel.prototype.start_channels = function () { |
|
155 | Kernel.prototype.start_channels = function () { | |
156 | var that = this; |
|
156 | var that = this; | |
157 | this.stop_channels(); |
|
157 | this.stop_channels(); | |
158 | var ws_url = this.ws_url + this.kernel_url; |
|
158 | console.log("Starting WebSockets:", this.ws_host + this.ws_url); | |
159 | console.log("Starting WebSockets:", ws_url); |
|
159 | this.shell_channel = new this.WebSocket( | |
160 | this.shell_channel = new this.WebSocket(ws_url + "/shell"); |
|
160 | this.ws_host + utils.url_join_encode(this.ws_url, "shell") | |
161 | this.stdin_channel = new this.WebSocket(ws_url + "/stdin"); |
|
161 | ); | |
162 |
this. |
|
162 | this.stdin_channel = new this.WebSocket( | |
|
163 | this.ws_host + utils.url_join_encode(this.ws_url, "stdin") | |||
|
164 | ); | |||
|
165 | this.iopub_channel = new this.WebSocket( | |||
|
166 | this.ws_host + utils.url_join_encode(this.ws_url, "iopub") | |||
|
167 | ); | |||
163 |
|
168 | |||
|
169 | var ws_host_url = this.ws_host + this.ws_url; | |||
164 | var already_called_onclose = false; // only alert once |
|
170 | var already_called_onclose = false; // only alert once | |
165 | var ws_closed_early = function(evt){ |
|
171 | var ws_closed_early = function(evt){ | |
166 | if (already_called_onclose){ |
|
172 | if (already_called_onclose){ | |
@@ -168,7 +174,7 b' var IPython = (function (IPython) {' | |||||
168 | } |
|
174 | } | |
169 | already_called_onclose = true; |
|
175 | already_called_onclose = true; | |
170 | if ( ! evt.wasClean ){ |
|
176 | if ( ! evt.wasClean ){ | |
171 | that._websocket_closed(ws_url, true); |
|
177 | that._websocket_closed(ws_host_url, true); | |
172 | } |
|
178 | } | |
173 | }; |
|
179 | }; | |
174 | var ws_closed_late = function(evt){ |
|
180 | var ws_closed_late = function(evt){ | |
@@ -177,7 +183,7 b' var IPython = (function (IPython) {' | |||||
177 | } |
|
183 | } | |
178 | already_called_onclose = true; |
|
184 | already_called_onclose = true; | |
179 | if ( ! evt.wasClean ){ |
|
185 | if ( ! evt.wasClean ){ | |
180 | that._websocket_closed(ws_url, false); |
|
186 | that._websocket_closed(ws_host_url, false); | |
181 | } |
|
187 | } | |
182 | }; |
|
188 | }; | |
183 | var channels = [this.shell_channel, this.iopub_channel, this.stdin_channel]; |
|
189 | var channels = [this.shell_channel, this.iopub_channel, this.stdin_channel]; | |
@@ -387,7 +393,7 b' var IPython = (function (IPython) {' | |||||
387 | Kernel.prototype.interrupt = function () { |
|
393 | Kernel.prototype.interrupt = function () { | |
388 | if (this.running) { |
|
394 | if (this.running) { | |
389 | $([IPython.events]).trigger('status_interrupting.Kernel', {kernel: this}); |
|
395 | $([IPython.events]).trigger('status_interrupting.Kernel', {kernel: this}); | |
390 |
$.post(this.kernel_url |
|
396 | $.post(utils.url_join_encode(this.kernel_url, "interrupt")); | |
391 | } |
|
397 | } | |
392 | }; |
|
398 | }; | |
393 |
|
399 | |||
@@ -399,7 +405,7 b' var IPython = (function (IPython) {' | |||||
399 | cache : false, |
|
405 | cache : false, | |
400 | type : "DELETE" |
|
406 | type : "DELETE" | |
401 | }; |
|
407 | }; | |
402 | $.ajax(this.kernel_url, settings); |
|
408 | $.ajax(utils.url_join_encode(this.kernel_url), settings); | |
403 | } |
|
409 | } | |
404 | }; |
|
410 | }; | |
405 |
|
411 |
@@ -14,13 +14,14 b' var IPython = (function (IPython) {' | |||||
14 |
|
14 | |||
15 | var utils = IPython.utils; |
|
15 | var utils = IPython.utils; | |
16 |
|
16 | |||
17 |
var Session = function(notebook |
|
17 | var Session = function(notebook, options){ | |
18 | this.kernel = null; |
|
18 | this.kernel = null; | |
19 | this.id = null; |
|
19 | this.id = null; | |
20 | this.name = notebook_name; |
|
|||
21 | this.path = notebook_path; |
|
|||
22 | this.notebook = notebook; |
|
20 | this.notebook = notebook; | |
23 |
this. |
|
21 | this.name = notebook.notebook_name; | |
|
22 | this.path = notebook.notebook_path; | |||
|
23 | this.base_url = notebook.base_url; | |||
|
24 | this.base_kernel_url = options.base_kernel_url || utils.get_body_data("baseKernelUrl"); | |||
24 | }; |
|
25 | }; | |
25 |
|
26 | |||
26 | Session.prototype.start = function(callback) { |
|
27 | Session.prototype.start = function(callback) { | |
@@ -44,7 +45,7 b' var IPython = (function (IPython) {' | |||||
44 | } |
|
45 | } | |
45 | }, |
|
46 | }, | |
46 | }; |
|
47 | }; | |
47 |
var url = utils.url_join_encode(this. |
|
48 | var url = utils.url_join_encode(this.base_url, 'api/sessions'); | |
48 | $.ajax(url, settings); |
|
49 | $.ajax(url, settings); | |
49 | }; |
|
50 | }; | |
50 |
|
51 | |||
@@ -64,7 +65,7 b' var IPython = (function (IPython) {' | |||||
64 | data: JSON.stringify(model), |
|
65 | data: JSON.stringify(model), | |
65 | dataType : "json", |
|
66 | dataType : "json", | |
66 | }; |
|
67 | }; | |
67 |
var url = utils.url_join_encode(this. |
|
68 | var url = utils.url_join_encode(this.base_url, 'api/sessions', this.id); | |
68 | $.ajax(url, settings); |
|
69 | $.ajax(url, settings); | |
69 | }; |
|
70 | }; | |
70 |
|
71 | |||
@@ -76,7 +77,7 b' var IPython = (function (IPython) {' | |||||
76 | dataType : "json", |
|
77 | dataType : "json", | |
77 | }; |
|
78 | }; | |
78 | this.kernel.running = false; |
|
79 | this.kernel.running = false; | |
79 |
var url = utils.url_join_encode(this. |
|
80 | var url = utils.url_join_encode(this.base_url, 'api/sessions', this.id); | |
80 | $.ajax(url, settings); |
|
81 | $.ajax(url, settings); | |
81 | }; |
|
82 | }; | |
82 |
|
83 | |||
@@ -88,8 +89,8 b' var IPython = (function (IPython) {' | |||||
88 | */ |
|
89 | */ | |
89 | Session.prototype._handle_start_success = function (data, status, xhr) { |
|
90 | Session.prototype._handle_start_success = function (data, status, xhr) { | |
90 | this.id = data.id; |
|
91 | this.id = data.id; | |
91 |
var |
|
92 | var kernel_service_url = utils.url_path_join(this.base_kernel_url, "api/kernels"); | |
92 |
this.kernel = new IPython.Kernel( |
|
93 | this.kernel = new IPython.Kernel(kernel_service_url); | |
93 | this.kernel._kernel_started(data.kernel); |
|
94 | this.kernel._kernel_started(data.kernel); | |
94 | }; |
|
95 | }; | |
95 |
|
96 |
@@ -1502,8 +1502,9 b' p{margin-bottom:0}' | |||||
1502 | i.menu-icon{padding-top:4px} |
|
1502 | i.menu-icon{padding-top:4px} | |
1503 | ul#help_menu li a{overflow:hidden;padding-right:2.2em}ul#help_menu li a i{margin-right:-1.2em} |
|
1503 | ul#help_menu li a{overflow:hidden;padding-right:2.2em}ul#help_menu li a i{margin-right:-1.2em} | |
1504 | #notification_area{z-index:10} |
|
1504 | #notification_area{z-index:10} | |
|
1505 | .indicator_area{color:#777;padding:4px 3px;margin:0;width:11px;z-index:10;text-align:center} | |||
|
1506 | #kernel_indicator{margin-right:-16px} | |||
1505 | .notification_widget{color:#777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240,240,240,0.5)}.notification_widget.span{padding-right:2px} |
|
1507 | .notification_widget{color:#777;padding:1px 12px;margin:2px 4px;z-index:10;border:1px solid #ccc;border-radius:4px;background:rgba(240,240,240,0.5)}.notification_widget.span{padding-right:2px} | |
1506 | #indicator_area{color:#777;padding:2px 2px;margin:2px -9px 2px 4px;z-index:10} |
|
|||
1507 | div#pager_splitter{height:8px} |
|
1508 | div#pager_splitter{height:8px} | |
1508 | #pager-container{position:relative;padding:15px 0} |
|
1509 | #pager-container{position:relative;padding:15px 0} | |
1509 | div#pager{overflow:auto;display:none}div#pager pre{font-size:13px;line-height:1.231em;color:#000;background-color:#f7f7f7;padding:.4em} |
|
1510 | div#pager{overflow:auto;display:none}div#pager pre{font-size:13px;line-height:1.231em;color:#000;background-color:#f7f7f7;padding:.4em} |
@@ -14,17 +14,17 b' var IPython = (function (IPython) {' | |||||
14 |
|
14 | |||
15 | var utils = IPython.utils; |
|
15 | var utils = IPython.utils; | |
16 |
|
16 | |||
17 | var ClusterList = function (selector) { |
|
17 | var ClusterList = function (selector, options) { | |
18 | this.selector = selector; |
|
18 | this.selector = selector; | |
19 | if (this.selector !== undefined) { |
|
19 | if (this.selector !== undefined) { | |
20 | this.element = $(selector); |
|
20 | this.element = $(selector); | |
21 | this.style(); |
|
21 | this.style(); | |
22 | this.bind_events(); |
|
22 | this.bind_events(); | |
23 | } |
|
23 | } | |
24 | }; |
|
24 | options = options || {}; | |
25 |
|
25 | this.options = options; | ||
26 | ClusterList.prototype.baseProjectUrl = function(){ |
|
26 | this.base_url = options.base_url || utils.get_body_data("baseUrl"); | |
27 | return this._baseProjectUrl || $('body').data('baseProjectUrl'); |
|
27 | this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath"); | |
28 | }; |
|
28 | }; | |
29 |
|
29 | |||
30 | ClusterList.prototype.style = function () { |
|
30 | ClusterList.prototype.style = function () { | |
@@ -51,7 +51,7 b' var IPython = (function (IPython) {' | |||||
51 | dataType : "json", |
|
51 | dataType : "json", | |
52 | success : $.proxy(this.load_list_success, this) |
|
52 | success : $.proxy(this.load_list_success, this) | |
53 | }; |
|
53 | }; | |
54 |
var url = utils.url_join_encode(this.base |
|
54 | var url = utils.url_join_encode(this.base_url, 'clusters'); | |
55 | $.ajax(url, settings); |
|
55 | $.ajax(url, settings); | |
56 | }; |
|
56 | }; | |
57 |
|
57 | |||
@@ -65,7 +65,7 b' var IPython = (function (IPython) {' | |||||
65 | var len = data.length; |
|
65 | var len = data.length; | |
66 | for (var i=0; i<len; i++) { |
|
66 | for (var i=0; i<len; i++) { | |
67 | var element = $('<div/>'); |
|
67 | var element = $('<div/>'); | |
68 | var item = new ClusterItem(element); |
|
68 | var item = new ClusterItem(element, this.options); | |
69 | item.update_state(data[i]); |
|
69 | item.update_state(data[i]); | |
70 | element.data('item', item); |
|
70 | element.data('item', item); | |
71 | this.element.append(element); |
|
71 | this.element.append(element); | |
@@ -73,17 +73,14 b' var IPython = (function (IPython) {' | |||||
73 | }; |
|
73 | }; | |
74 |
|
74 | |||
75 |
|
75 | |||
76 | var ClusterItem = function (element) { |
|
76 | var ClusterItem = function (element, options) { | |
77 | this.element = $(element); |
|
77 | this.element = $(element); | |
|
78 | this.base_url = options.base_url || utils.get_body_data("baseUrl"); | |||
|
79 | this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath"); | |||
78 | this.data = null; |
|
80 | this.data = null; | |
79 | this.style(); |
|
81 | this.style(); | |
80 | }; |
|
82 | }; | |
81 |
|
83 | |||
82 | ClusterItem.prototype.baseProjectUrl = function(){ |
|
|||
83 | return this._baseProjectUrl || $('body').data('baseProjectUrl'); |
|
|||
84 | }; |
|
|||
85 |
|
||||
86 |
|
||||
87 | ClusterItem.prototype.style = function () { |
|
84 | ClusterItem.prototype.style = function () { | |
88 | this.element.addClass('list_item').addClass("row-fluid"); |
|
85 | this.element.addClass('list_item').addClass("row-fluid"); | |
89 | }; |
|
86 | }; | |
@@ -138,7 +135,7 b' var IPython = (function (IPython) {' | |||||
138 | }; |
|
135 | }; | |
139 | status_col.text('starting'); |
|
136 | status_col.text('starting'); | |
140 | var url = utils.url_join_encode( |
|
137 | var url = utils.url_join_encode( | |
141 |
that.base |
|
138 | that.base_url, | |
142 | 'clusters', |
|
139 | 'clusters', | |
143 | that.data.profile, |
|
140 | that.data.profile, | |
144 | 'start' |
|
141 | 'start' | |
@@ -180,7 +177,7 b' var IPython = (function (IPython) {' | |||||
180 | }; |
|
177 | }; | |
181 | status_col.text('stopping'); |
|
178 | status_col.text('stopping'); | |
182 | var url = utils.url_join_encode( |
|
179 | var url = utils.url_join_encode( | |
183 |
that.base |
|
180 | that.base_url, | |
184 | 'clusters', |
|
181 | 'clusters', | |
185 | that.data.profile, |
|
182 | that.data.profile, | |
186 | 'stop' |
|
183 | 'stop' |
@@ -15,12 +15,16 b' $(document).ready(function () {' | |||||
15 | IPython.page = new IPython.Page(); |
|
15 | IPython.page = new IPython.Page(); | |
16 |
|
16 | |||
17 | $('#new_notebook').button().click(function (e) { |
|
17 | $('#new_notebook').button().click(function (e) { | |
18 |
IPython.notebook_list.new_notebook( |
|
18 | IPython.notebook_list.new_notebook() | |
19 | }); |
|
19 | }); | |
20 |
|
20 | |||
21 | IPython.notebook_list = new IPython.NotebookList('#notebook_list'); |
|
21 | var opts = { | |
22 | IPython.cluster_list = new IPython.ClusterList('#cluster_list'); |
|
22 | base_url : IPython.utils.get_body_data("baseUrl"), | |
23 | IPython.login_widget = new IPython.LoginWidget('#login_widget'); |
|
23 | notebook_path : IPython.utils.get_body_data("notebookPath"), | |
|
24 | }; | |||
|
25 | IPython.notebook_list = new IPython.NotebookList('#notebook_list', opts); | |||
|
26 | IPython.cluster_list = new IPython.ClusterList('#cluster_list', opts); | |||
|
27 | IPython.login_widget = new IPython.LoginWidget('#login_widget', opts); | |||
24 |
|
28 | |||
25 | var interval_id=0; |
|
29 | var interval_id=0; | |
26 | // auto refresh every xx secondes, no need to be fast, |
|
30 | // auto refresh every xx secondes, no need to be fast, |
@@ -14,7 +14,7 b' var IPython = (function (IPython) {' | |||||
14 |
|
14 | |||
15 | var utils = IPython.utils; |
|
15 | var utils = IPython.utils; | |
16 |
|
16 | |||
17 | var NotebookList = function (selector) { |
|
17 | var NotebookList = function (selector, options) { | |
18 | this.selector = selector; |
|
18 | this.selector = selector; | |
19 | if (this.selector !== undefined) { |
|
19 | if (this.selector !== undefined) { | |
20 | this.element = $(selector); |
|
20 | this.element = $(selector); | |
@@ -23,16 +23,10 b' var IPython = (function (IPython) {' | |||||
23 | } |
|
23 | } | |
24 | this.notebooks_list = []; |
|
24 | this.notebooks_list = []; | |
25 | this.sessions = {}; |
|
25 | this.sessions = {}; | |
|
26 | this.base_url = options.base_url || utils.get_body_data("baseUrl"); | |||
|
27 | this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath"); | |||
26 | }; |
|
28 | }; | |
27 |
|
29 | |||
28 | NotebookList.prototype.baseProjectUrl = function () { |
|
|||
29 | return $('body').data('baseProjectUrl'); |
|
|||
30 | }; |
|
|||
31 |
|
||||
32 | NotebookList.prototype.notebookPath = function() { |
|
|||
33 | return $('body').data('notebookPath'); |
|
|||
34 | }; |
|
|||
35 |
|
||||
36 | NotebookList.prototype.style = function () { |
|
30 | NotebookList.prototype.style = function () { | |
37 | $('#notebook_toolbar').addClass('list_toolbar'); |
|
31 | $('#notebook_toolbar').addClass('list_toolbar'); | |
38 | $('#drag_info').addClass('toolbar_info'); |
|
32 | $('#drag_info').addClass('toolbar_info'); | |
@@ -112,7 +106,7 b' var IPython = (function (IPython) {' | |||||
112 | dataType : "json", |
|
106 | dataType : "json", | |
113 | success : $.proxy(that.sessions_loaded, this) |
|
107 | success : $.proxy(that.sessions_loaded, this) | |
114 | }; |
|
108 | }; | |
115 |
var url = this.base |
|
109 | var url = utils.url_join_encode(this.base_url, 'api/sessions'); | |
116 | $.ajax(url,settings); |
|
110 | $.ajax(url,settings); | |
117 | }; |
|
111 | }; | |
118 |
|
112 | |||
@@ -152,10 +146,10 b' var IPython = (function (IPython) {' | |||||
152 | }; |
|
146 | }; | |
153 |
|
147 | |||
154 | var url = utils.url_join_encode( |
|
148 | var url = utils.url_join_encode( | |
155 |
this.base |
|
149 | this.base_url, | |
156 | 'api', |
|
150 | 'api', | |
157 | 'notebooks', |
|
151 | 'notebooks', | |
158 |
this.notebook |
|
152 | this.notebook_path | |
159 | ); |
|
153 | ); | |
160 | $.ajax(url, settings); |
|
154 | $.ajax(url, settings); | |
161 | }; |
|
155 | }; | |
@@ -175,7 +169,7 b' var IPython = (function (IPython) {' | |||||
175 | span12.empty(); |
|
169 | span12.empty(); | |
176 | span12.append($('<div style="margin:auto;text-align:center;color:grey"/>').text(message)); |
|
170 | span12.append($('<div style="margin:auto;text-align:center;color:grey"/>').text(message)); | |
177 | } |
|
171 | } | |
178 |
var path = this.notebook |
|
172 | var path = this.notebook_path; | |
179 | var offset = 0; |
|
173 | var offset = 0; | |
180 | if (path !== '') { |
|
174 | if (path !== '') { | |
181 | item = this.new_notebook_item(0); |
|
175 | item = this.new_notebook_item(0); | |
@@ -233,7 +227,7 b' var IPython = (function (IPython) {' | |||||
233 | item.find("a.item_link") |
|
227 | item.find("a.item_link") | |
234 | .attr('href', |
|
228 | .attr('href', | |
235 | utils.url_join_encode( |
|
229 | utils.url_join_encode( | |
236 |
this.base |
|
230 | this.base_url, | |
237 | "tree", |
|
231 | "tree", | |
238 | path, |
|
232 | path, | |
239 | name |
|
233 | name | |
@@ -250,7 +244,7 b' var IPython = (function (IPython) {' | |||||
250 | item.find("a.item_link") |
|
244 | item.find("a.item_link") | |
251 | .attr('href', |
|
245 | .attr('href', | |
252 | utils.url_join_encode( |
|
246 | utils.url_join_encode( | |
253 |
this.base |
|
247 | this.base_url, | |
254 | "notebooks", |
|
248 | "notebooks", | |
255 | path, |
|
249 | path, | |
256 | nbname |
|
250 | nbname | |
@@ -291,7 +285,7 b' var IPython = (function (IPython) {' | |||||
291 | } |
|
285 | } | |
292 | }; |
|
286 | }; | |
293 | var url = utils.url_join_encode( |
|
287 | var url = utils.url_join_encode( | |
294 |
that.base |
|
288 | that.base_url, | |
295 | 'api/sessions', |
|
289 | 'api/sessions', | |
296 | session |
|
290 | session | |
297 | ); |
|
291 | ); | |
@@ -331,9 +325,9 b' var IPython = (function (IPython) {' | |||||
331 | } |
|
325 | } | |
332 | }; |
|
326 | }; | |
333 | var url = utils.url_join_encode( |
|
327 | var url = utils.url_join_encode( | |
334 |
notebooklist.base |
|
328 | notebooklist.base_url, | |
335 | 'api/notebooks', |
|
329 | 'api/notebooks', | |
336 |
notebooklist.notebook |
|
330 | notebooklist.notebook_path, | |
337 | nbname |
|
331 | nbname | |
338 | ); |
|
332 | ); | |
339 | $.ajax(url, settings); |
|
333 | $.ajax(url, settings); | |
@@ -357,7 +351,7 b' var IPython = (function (IPython) {' | |||||
357 | if (nbname.slice(nbname.length-6, nbname.length) != ".ipynb") { |
|
351 | if (nbname.slice(nbname.length-6, nbname.length) != ".ipynb") { | |
358 | nbname = nbname + ".ipynb"; |
|
352 | nbname = nbname + ".ipynb"; | |
359 | } |
|
353 | } | |
360 |
var path = that.notebook |
|
354 | var path = that.notebook_path; | |
361 | var nbdata = item.data('nbdata'); |
|
355 | var nbdata = item.data('nbdata'); | |
362 | var content_type = 'application/json'; |
|
356 | var content_type = 'application/json'; | |
363 | var model = { |
|
357 | var model = { | |
@@ -380,9 +374,9 b' var IPython = (function (IPython) {' | |||||
380 | }; |
|
374 | }; | |
381 |
|
375 | |||
382 | var url = utils.url_join_encode( |
|
376 | var url = utils.url_join_encode( | |
383 |
that.base |
|
377 | that.base_url, | |
384 | 'api/notebooks', |
|
378 | 'api/notebooks', | |
385 |
that.notebook |
|
379 | that.notebook_path, | |
386 | nbname |
|
380 | nbname | |
387 | ); |
|
381 | ); | |
388 | $.ajax(url, settings); |
|
382 | $.ajax(url, settings); | |
@@ -402,8 +396,8 b' var IPython = (function (IPython) {' | |||||
402 |
|
396 | |||
403 |
|
397 | |||
404 | NotebookList.prototype.new_notebook = function(){ |
|
398 | NotebookList.prototype.new_notebook = function(){ | |
405 |
var path = this.notebook |
|
399 | var path = this.notebook_path; | |
406 |
var base_ |
|
400 | var base_url = this.base_url; | |
407 | var settings = { |
|
401 | var settings = { | |
408 | processData : false, |
|
402 | processData : false, | |
409 | cache : false, |
|
403 | cache : false, | |
@@ -414,7 +408,7 b' var IPython = (function (IPython) {' | |||||
414 | var notebook_name = data.name; |
|
408 | var notebook_name = data.name; | |
415 | window.open( |
|
409 | window.open( | |
416 | utils.url_join_encode( |
|
410 | utils.url_join_encode( | |
417 |
base_ |
|
411 | base_url, | |
418 | 'notebooks', |
|
412 | 'notebooks', | |
419 | path, |
|
413 | path, | |
420 | notebook_name), |
|
414 | notebook_name), | |
@@ -423,7 +417,7 b' var IPython = (function (IPython) {' | |||||
423 | } |
|
417 | } | |
424 | }; |
|
418 | }; | |
425 | var url = utils.url_join_encode( |
|
419 | var url = utils.url_join_encode( | |
426 |
base_ |
|
420 | base_url, | |
427 | 'api/notebooks', |
|
421 | 'api/notebooks', | |
428 | path |
|
422 | path | |
429 | ); |
|
423 | ); |
@@ -20,7 +20,7 b'' | |||||
20 | <div class="container"> |
|
20 | <div class="container"> | |
21 | <div class="center-nav"> |
|
21 | <div class="center-nav"> | |
22 | <p class="navbar-text nav">Password:</p> |
|
22 | <p class="navbar-text nav">Password:</p> | |
23 |
<form action="{{base_ |
|
23 | <form action="{{base_url}}login?next={{next}}" method="post" class="navbar-form pull-left"> | |
24 | <input type="password" name="password" id="password_input"> |
|
24 | <input type="password" name="password" id="password_input"> | |
25 | <button type="submit" id="login_submit">Log in</button> |
|
25 | <button type="submit" id="login_submit">Log in</button> | |
26 | </form> |
|
26 | </form> |
@@ -21,9 +21,9 b'' | |||||
21 | {% endif %} |
|
21 | {% endif %} | |
22 |
|
22 | |||
23 | {% if not login_available %} |
|
23 | {% if not login_available %} | |
24 |
Proceed to the <a href="{{base_ |
|
24 | Proceed to the <a href="{{base_url}}">dashboard</a>. | |
25 | {% else %} |
|
25 | {% else %} | |
26 |
Proceed to the <a href="{{base_ |
|
26 | Proceed to the <a href="{{base_url}}login">login page</a>. | |
27 | {% endif %} |
|
27 | {% endif %} | |
28 |
|
28 | |||
29 |
|
29 |
@@ -22,7 +22,7 b' window.mathjax_url = "{{mathjax_url}}";' | |||||
22 | {% block params %} |
|
22 | {% block params %} | |
23 |
|
23 | |||
24 | data-project="{{project}}" |
|
24 | data-project="{{project}}" | |
25 |
data-base- |
|
25 | data-base-url="{{base_url}}" | |
26 | data-base-kernel-url="{{base_kernel_url}}" |
|
26 | data-base-kernel-url="{{base_kernel_url}}" | |
27 | data-notebook-name="{{notebook_name}}" |
|
27 | data-notebook-name="{{notebook_name}}" | |
28 | data-notebook-path="{{notebook_path}}" |
|
28 | data-notebook-path="{{notebook_path}}" | |
@@ -251,8 +251,11 b' class="notebook_app"' | |||||
251 | </ul> |
|
251 | </ul> | |
252 | </li> |
|
252 | </li> | |
253 | </ul> |
|
253 | </ul> | |
254 | <div class='pull-right' id="indicator_area"> |
|
254 | <div id="kernel_indicator" class="indicator_area pull-right"> | |
255 |
|
|
255 | <i id="kernel_indicator_icon"></i> | |
|
256 | </div> | |||
|
257 | <div id="modal_indicator" class="indicator_area pull-right"> | |||
|
258 | <i id="modal_indicator_icon"></i> | |||
256 | </div> |
|
259 | </div> | |
257 | <div id="notification_area"></div> |
|
260 | <div id="notification_area"></div> | |
258 | </div> |
|
261 | </div> |
@@ -21,7 +21,7 b'' | |||||
21 | require.config({ |
|
21 | require.config({ | |
22 | baseUrl: '{{static_url("")}}', |
|
22 | baseUrl: '{{static_url("")}}', | |
23 | paths: { |
|
23 | paths: { | |
24 |
nbextensions : '{{ base_ |
|
24 | nbextensions : '{{ base_url }}nbextensions', | |
25 | underscore : '{{static_url("components/underscore/underscore-min")}}', |
|
25 | underscore : '{{static_url("components/underscore/underscore-min")}}', | |
26 | backbone : '{{static_url("components/backbone/backbone-min")}}', |
|
26 | backbone : '{{static_url("components/backbone/backbone-min")}}', | |
27 | }, |
|
27 | }, | |
@@ -54,7 +54,7 b'' | |||||
54 | <div id="header" class="navbar navbar-static-top"> |
|
54 | <div id="header" class="navbar navbar-static-top"> | |
55 | <div class="navbar-inner navbar-nobg"> |
|
55 | <div class="navbar-inner navbar-nobg"> | |
56 | <div class="container"> |
|
56 | <div class="container"> | |
57 |
<div id="ipython_notebook" class="nav brand pull-left"><a href="{{base_ |
|
57 | <div id="ipython_notebook" class="nav brand pull-left"><a href="{{base_url}}tree/{{notebook_path}}" alt='dashboard'><img src='{{static_url("base/images/ipynblogo.png") }}' alt='IPython Notebook'/></a></div> | |
58 |
|
58 | |||
59 | {% block login_widget %} |
|
59 | {% block login_widget %} | |
60 |
|
60 |
@@ -11,7 +11,7 b'' | |||||
11 | {% block params %} |
|
11 | {% block params %} | |
12 |
|
12 | |||
13 | data-project="{{project}}" |
|
13 | data-project="{{project}}" | |
14 |
data-base- |
|
14 | data-base-url="{{base_url}}" | |
15 | data-notebook-path="{{notebook_path}}" |
|
15 | data-notebook-path="{{notebook_path}}" | |
16 | data-base-kernel-url="{{base_kernel_url}}" |
|
16 | data-base-kernel-url="{{base_kernel_url}}" | |
17 |
|
17 |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/README.md to IPython/html/tests/README.md |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/README.md to IPython/html/tests/README.md |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/misc_tests.js to IPython/html/tests/base/misc.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/misc_tests.js to IPython/html/tests/base/misc.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/nb_arrow_keys.js to IPython/html/tests/notebook/arrow_keys.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/nb_arrow_keys.js to IPython/html/tests/notebook/arrow_keys.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/display_image.js to IPython/html/tests/notebook/display_image.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/display_image.js to IPython/html/tests/notebook/display_image.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/empty_nb_arrow_keys.js to IPython/html/tests/notebook/empty_arrow_keys.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/empty_nb_arrow_keys.js to IPython/html/tests/notebook/empty_arrow_keys.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/execute_code_cell.js to IPython/html/tests/notebook/execute_code.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/execute_code_cell.js to IPython/html/tests/notebook/execute_code.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/inject_js.js to IPython/html/tests/notebook/inject_js.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/inject_js.js to IPython/html/tests/notebook/inject_js.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/check_interrupt.js to IPython/html/tests/notebook/interrupt.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/check_interrupt.js to IPython/html/tests/notebook/interrupt.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/isolated_svg.js to IPython/html/tests/notebook/isolated_svg.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/isolated_svg.js to IPython/html/tests/notebook/isolated_svg.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/render_markdown.js to IPython/html/tests/notebook/markdown.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/render_markdown.js to IPython/html/tests/notebook/markdown.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/merge_cells.js to IPython/html/tests/notebook/merge_cells.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/merge_cells.js to IPython/html/tests/notebook/merge_cells.js |
@@ -64,9 +64,12 b' function clear_and_execute(that, code) {' | |||||
64 | IPython.notebook.get_cell(0).clear_output(); |
|
64 | IPython.notebook.get_cell(0).clear_output(); | |
65 | IPython.notebook.get_cell(1).clear_output(); |
|
65 | IPython.notebook.get_cell(1).clear_output(); | |
66 | }); |
|
66 | }); | |
67 | that.set_cell_text(0, code); |
|
67 | that.then(function () { | |
68 |
that. |
|
68 | that.set_cell_text(0, code); | |
69 | } |
|
69 | that.execute_cell(0); | |
|
70 | that.wait_for_idle(); | |||
|
71 | }); | |||
|
72 | }; | |||
70 |
|
73 | |||
71 | casper.notebook_test(function () { |
|
74 | casper.notebook_test(function () { | |
72 | this.evaluate(function () { |
|
75 | this.evaluate(function () { | |
@@ -77,13 +80,9 b' casper.notebook_test(function () {' | |||||
77 | "IPython.notebook.insert_cell_below('code')" |
|
80 | "IPython.notebook.insert_cell_below('code')" | |
78 | ].join('\n') |
|
81 | ].join('\n') | |
79 | ); |
|
82 | ); | |
80 |
|
||||
81 | cell.execute(); |
|
|||
82 | }); |
|
83 | }); | |
83 |
|
84 | |||
84 | this.wait_for_output(0); |
|
85 | this.execute_cell_then(0, function () { | |
85 |
|
||||
86 | this.then(function ( ) { |
|
|||
87 | var result = this.get_output_cell(0); |
|
86 | var result = this.get_output_cell(0); | |
88 | var num_cells = this.get_cells_length(); |
|
87 | var num_cells = this.get_cells_length(); | |
89 | this.test.assertEquals(num_cells, 2, '%%javascript magic works'); |
|
88 | this.test.assertEquals(num_cells, 2, '%%javascript magic works'); |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/safe_append_output.js to IPython/html/tests/notebook/safe_append_output.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/safe_append_output.js to IPython/html/tests/notebook/safe_append_output.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/save_notebook.js to IPython/html/tests/notebook/save.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/save_notebook.js to IPython/html/tests/notebook/save.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/shutdown_notebook.js to IPython/html/tests/notebook/shutdown.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/shutdown_notebook.js to IPython/html/tests/notebook/shutdown.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/tooltip.js to IPython/html/tests/notebook/tooltip.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/tooltip.js to IPython/html/tests/notebook/tooltip.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/kernel_test.js to IPython/html/tests/services/kernel.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/kernel_test.js to IPython/html/tests/services/kernel.js |
@@ -18,9 +18,12 b' casper.test_items = function (baseUrl) {' | |||||
18 | if (!item.label.match('.ipynb$')) { |
|
18 | if (!item.label.match('.ipynb$')) { | |
19 | var followed_url = baseUrl+item.link; |
|
19 | var followed_url = baseUrl+item.link; | |
20 | if (!followed_url.match('/\.\.$')) { |
|
20 | if (!followed_url.match('/\.\.$')) { | |
21 |
casper.thenOpen( |
|
21 | casper.thenOpen(followed_url, function () { | |
22 | casper.wait_for_dashboard(); |
|
22 | casper.wait_for_dashboard(); | |
23 | this.test.assertEquals(this.getCurrentUrl(), followed_url, 'Testing dashboard link: '+followed_url); |
|
23 | // getCurrentUrl is with host, and url-decoded, | |
|
24 | // but item.link is without host, and url-encoded | |||
|
25 | var expected = baseUrl + decodeURIComponent(item.link); | |||
|
26 | this.test.assertEquals(this.getCurrentUrl(), expected, 'Testing dashboard link: ' + expected); | |||
24 | casper.test_items(baseUrl); |
|
27 | casper.test_items(baseUrl); | |
25 | this.back(); |
|
28 | this.back(); | |
26 | }); |
|
29 | }); | |
@@ -31,7 +34,7 b' casper.test_items = function (baseUrl) {' | |||||
31 | } |
|
34 | } | |
32 |
|
35 | |||
33 | casper.dashboard_test(function () { |
|
36 | casper.dashboard_test(function () { | |
34 | baseUrl = this.get_notebook_server() |
|
37 | baseUrl = this.get_notebook_server(); | |
35 | casper.test_items(baseUrl); |
|
38 | casper.test_items(baseUrl); | |
36 | }) |
|
39 | }) | |
37 |
|
40 |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/util.js to IPython/html/tests/util.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/util.js to IPython/html/tests/util.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets.js to IPython/html/tests/widgets/widget.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets.js to IPython/html/tests/widgets/widget.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_bool.js to IPython/html/tests/widgets/widget_bool.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_bool.js to IPython/html/tests/widgets/widget_bool.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_button.js to IPython/html/tests/widgets/widget_button.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_button.js to IPython/html/tests/widgets/widget_button.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_container.js to IPython/html/tests/widgets/widget_container.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_container.js to IPython/html/tests/widgets/widget_container.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_float.js to IPython/html/tests/widgets/widget_float.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_float.js to IPython/html/tests/widgets/widget_float.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_image.js to IPython/html/tests/widgets/widget_image.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_image.js to IPython/html/tests/widgets/widget_image.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_int.js to IPython/html/tests/widgets/widget_int.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_int.js to IPython/html/tests/widgets/widget_int.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_multicontainer.js to IPython/html/tests/widgets/widget_multicontainer.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_multicontainer.js to IPython/html/tests/widgets/widget_multicontainer.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_selection.js to IPython/html/tests/widgets/widget_selection.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_selection.js to IPython/html/tests/widgets/widget_selection.js |
1 | NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_string.js to IPython/html/tests/widgets/widget_string.js |
|
NO CONTENT: file renamed from IPython/html/tests/casperjs/test_cases/widgets_string.js to IPython/html/tests/widgets/widget_string.js |
@@ -30,12 +30,12 b' class TreeHandler(IPythonHandler):' | |||||
30 | """Render the tree view, listing notebooks, clusters, etc.""" |
|
30 | """Render the tree view, listing notebooks, clusters, etc.""" | |
31 |
|
31 | |||
32 | def generate_breadcrumbs(self, path): |
|
32 | def generate_breadcrumbs(self, path): | |
33 |
breadcrumbs = [(url_escape(url_path_join(self.base_ |
|
33 | breadcrumbs = [(url_escape(url_path_join(self.base_url, 'tree')), '')] | |
34 | comps = path.split('/') |
|
34 | comps = path.split('/') | |
35 | ncomps = len(comps) |
|
35 | ncomps = len(comps) | |
36 | for i in range(ncomps): |
|
36 | for i in range(ncomps): | |
37 | if comps[i]: |
|
37 | if comps[i]: | |
38 |
link = url_escape(url_path_join(self.base_ |
|
38 | link = url_escape(url_path_join(self.base_url, 'tree', *comps[0:i+1])) | |
39 | breadcrumbs.append((link, comps[i])) |
|
39 | breadcrumbs.append((link, comps[i])) | |
40 | return breadcrumbs |
|
40 | return breadcrumbs | |
41 |
|
41 | |||
@@ -57,7 +57,7 b' class TreeHandler(IPythonHandler):' | |||||
57 | if name is not None: |
|
57 | if name is not None: | |
58 | # is a notebook, redirect to notebook handler |
|
58 | # is a notebook, redirect to notebook handler | |
59 | url = url_escape(url_path_join( |
|
59 | url = url_escape(url_path_join( | |
60 |
self.base_ |
|
60 | self.base_url, 'notebooks', path, name | |
61 | )) |
|
61 | )) | |
62 | self.log.debug("Redirecting %s to %s", self.request.path, url) |
|
62 | self.log.debug("Redirecting %s to %s", self.request.path, url) | |
63 | self.redirect(url) |
|
63 | self.redirect(url) | |
@@ -81,7 +81,7 b' class TreeRedirectHandler(IPythonHandler):' | |||||
81 | @web.authenticated |
|
81 | @web.authenticated | |
82 | def get(self, path=''): |
|
82 | def get(self, path=''): | |
83 | url = url_escape(url_path_join( |
|
83 | url = url_escape(url_path_join( | |
84 |
self.base_ |
|
84 | self.base_url, 'tree', path.strip('/') | |
85 | )) |
|
85 | )) | |
86 | self.log.debug("Redirecting %s to %s", self.request.path, url) |
|
86 | self.log.debug("Redirecting %s to %s", self.request.path, url) | |
87 | self.redirect(url) |
|
87 | self.redirect(url) |
@@ -20,6 +20,7 b' except ImportError:' | |||||
20 | from IPython.utils.signatures import signature, Parameter |
|
20 | from IPython.utils.signatures import signature, Parameter | |
21 | from inspect import getcallargs |
|
21 | from inspect import getcallargs | |
22 |
|
22 | |||
|
23 | from IPython.core.getipython import get_ipython | |||
23 | from IPython.html.widgets import (Widget, TextWidget, |
|
24 | from IPython.html.widgets import (Widget, TextWidget, | |
24 | FloatSliderWidget, IntSliderWidget, CheckboxWidget, DropdownWidget, |
|
25 | FloatSliderWidget, IntSliderWidget, CheckboxWidget, DropdownWidget, | |
25 | ContainerWidget, DOMWidget) |
|
26 | ContainerWidget, DOMWidget) | |
@@ -205,7 +206,14 b' def interactive(__interact_f, **kwargs):' | |||||
205 | container.kwargs[widget.description] = value |
|
206 | container.kwargs[widget.description] = value | |
206 | if co: |
|
207 | if co: | |
207 | clear_output(wait=True) |
|
208 | clear_output(wait=True) | |
208 | container.result = f(**container.kwargs) |
|
209 | try: | |
|
210 | container.result = f(**container.kwargs) | |||
|
211 | except Exception as e: | |||
|
212 | ip = get_ipython() | |||
|
213 | if ip is None: | |||
|
214 | container.log.warn("Exception in interact callback: %s", e, exc_info=True) | |||
|
215 | else: | |||
|
216 | ip.showtraceback() | |||
209 |
|
217 | |||
210 | # Wire up the widgets |
|
218 | # Wire up the widgets | |
211 | for widget in kwargs_widgets: |
|
219 | for widget in kwargs_widgets: |
@@ -14,6 +14,7 b' in the IPython notebook front-end.' | |||||
14 | #----------------------------------------------------------------------------- |
|
14 | #----------------------------------------------------------------------------- | |
15 | from contextlib import contextmanager |
|
15 | from contextlib import contextmanager | |
16 |
|
16 | |||
|
17 | from IPython.core.getipython import get_ipython | |||
17 | from IPython.kernel.comm import Comm |
|
18 | from IPython.kernel.comm import Comm | |
18 | from IPython.config import LoggingConfigurable |
|
19 | from IPython.config import LoggingConfigurable | |
19 | from IPython.utils.traitlets import Unicode, Dict, Instance, Bool, List, Tuple |
|
20 | from IPython.utils.traitlets import Unicode, Dict, Instance, Bool, List, Tuple | |
@@ -33,7 +34,11 b' class CallbackDispatcher(LoggingConfigurable):' | |||||
33 | try: |
|
34 | try: | |
34 | local_value = callback(*args, **kwargs) |
|
35 | local_value = callback(*args, **kwargs) | |
35 | except Exception as e: |
|
36 | except Exception as e: | |
36 | self.log.warn("Exception in callback %s: %s", callback, e) |
|
37 | ip = get_ipython() | |
|
38 | if ip is None: | |||
|
39 | self.log.warn("Exception in callback %s: %s", callback, e, exc_info=True) | |||
|
40 | else: | |||
|
41 | ip.showtraceback() | |||
37 | else: |
|
42 | else: | |
38 | value = local_value if local_value is not None else value |
|
43 | value = local_value if local_value is not None else value | |
39 | return value |
|
44 | return value | |
@@ -54,6 +59,18 b' class CallbackDispatcher(LoggingConfigurable):' | |||||
54 | elif not remove and callback not in self.callbacks: |
|
59 | elif not remove and callback not in self.callbacks: | |
55 | self.callbacks.append(callback) |
|
60 | self.callbacks.append(callback) | |
56 |
|
61 | |||
|
62 | def _show_traceback(method): | |||
|
63 | """decorator for showing tracebacks in IPython""" | |||
|
64 | def m(self, *args, **kwargs): | |||
|
65 | try: | |||
|
66 | return(method(self, *args, **kwargs)) | |||
|
67 | except Exception as e: | |||
|
68 | ip = get_ipython() | |||
|
69 | if ip is None: | |||
|
70 | self.log.warn("Exception in widget method %s: %s", method, e, exc_info=True) | |||
|
71 | else: | |||
|
72 | ip.showtraceback() | |||
|
73 | return m | |||
57 |
|
74 | |||
58 | class Widget(LoggingConfigurable): |
|
75 | class Widget(LoggingConfigurable): | |
59 | #------------------------------------------------------------------------- |
|
76 | #------------------------------------------------------------------------- | |
@@ -241,6 +258,7 b' class Widget(LoggingConfigurable):' | |||||
241 | value != self._property_lock[1] |
|
258 | value != self._property_lock[1] | |
242 |
|
259 | |||
243 | # Event handlers |
|
260 | # Event handlers | |
|
261 | @_show_traceback | |||
244 | def _handle_msg(self, msg): |
|
262 | def _handle_msg(self, msg): | |
245 | """Called when a msg is received from the front-end""" |
|
263 | """Called when a msg is received from the front-end""" | |
246 | data = msg['content']['data'] |
|
264 | data = msg['content']['data'] |
@@ -14,7 +14,9 b' This module does not import anything from matplotlib.' | |||||
14 | #----------------------------------------------------------------------------- |
|
14 | #----------------------------------------------------------------------------- | |
15 |
|
15 | |||
16 | from IPython.config.configurable import SingletonConfigurable |
|
16 | from IPython.config.configurable import SingletonConfigurable | |
17 | from IPython.utils.traitlets import Dict, Instance, CaselessStrEnum, Bool, Int, TraitError |
|
17 | from IPython.utils.traitlets import ( | |
|
18 | Dict, Instance, CaselessStrEnum, Set, Bool, Int, TraitError, Unicode | |||
|
19 | ) | |||
18 | from IPython.utils.warn import warn |
|
20 | from IPython.utils.warn import warn | |
19 |
|
21 | |||
20 | #----------------------------------------------------------------------------- |
|
22 | #----------------------------------------------------------------------------- | |
@@ -63,21 +65,26 b' class InlineBackend(InlineBackendConfig):' | |||||
63 | inline backend.""" |
|
65 | inline backend.""" | |
64 | ) |
|
66 | ) | |
65 |
|
67 | |||
|
68 | figure_formats = Set({'png'}, config=True, | |||
|
69 | help="""A set of figure formats to enable: 'png', | |||
|
70 | 'retina', 'jpeg', 'svg', 'pdf'.""") | |||
66 |
|
71 | |||
67 | figure_format = CaselessStrEnum(['svg', 'png', 'retina', 'jpg'], |
|
72 | def _figure_formats_changed(self, name, old, new): | |
68 | default_value='png', config=True, |
|
73 | from IPython.core.pylabtools import select_figure_formats | |
69 | help="""The image format for figures with the inline |
|
74 | if 'jpg' in new or 'jpeg' in new: | |
70 | backend. JPEG requires the PIL/Pillow library.""") |
|
|||
71 |
|
||||
72 | def _figure_format_changed(self, name, old, new): |
|
|||
73 | from IPython.core.pylabtools import select_figure_format |
|
|||
74 | if new in {"jpg", "jpeg"}: |
|
|||
75 | if not pil_available(): |
|
75 | if not pil_available(): | |
76 | raise TraitError("Requires PIL/Pillow for JPG figures") |
|
76 | raise TraitError("Requires PIL/Pillow for JPG figures") | |
77 | if self.shell is None: |
|
77 | if self.shell is None: | |
78 | return |
|
78 | return | |
79 | else: |
|
79 | else: | |
80 | select_figure_format(self.shell, new) |
|
80 | select_figure_formats(self.shell, new) | |
|
81 | ||||
|
82 | figure_format = Unicode(config=True, help="""The figure format to enable (deprecated | |||
|
83 | use `figure_formats` instead)""") | |||
|
84 | ||||
|
85 | def _figure_format_changed(self, name, old, new): | |||
|
86 | if new: | |||
|
87 | self.figure_formats = {new} | |||
81 |
|
88 | |||
82 | quality = Int(default_value=90, config=True, |
|
89 | quality = Int(default_value=90, config=True, | |
83 | help="Quality of compression [10-100], currently for lossy JPEG only.") |
|
90 | help="Quality of compression [10-100], currently for lossy JPEG only.") |
@@ -600,6 +600,11 b' class SSHLauncher(LocalProcessLauncher):' | |||||
600 | time.sleep(1) |
|
600 | time.sleep(1) | |
601 | else: |
|
601 | else: | |
602 | break |
|
602 | break | |
|
603 | remote_dir = os.path.dirname(remote) | |||
|
604 | self.log.info("ensuring remote %s:%s/ exists", self.location, remote_dir) | |||
|
605 | check_output(self.ssh_cmd + self.ssh_args + \ | |||
|
606 | [self.location, 'mkdir', '-p', '--', remote_dir] | |||
|
607 | ) | |||
603 | self.log.info("sending %s to %s", local, remote) |
|
608 | self.log.info("sending %s to %s", local, remote) | |
604 | check_output(self.scp_cmd + [local, remote]) |
|
609 | check_output(self.scp_cmd + [local, remote]) | |
605 |
|
610 | |||
@@ -623,6 +628,9 b' class SSHLauncher(LocalProcessLauncher):' | |||||
623 | time.sleep(1) |
|
628 | time.sleep(1) | |
624 | elif check == u'yes': |
|
629 | elif check == u'yes': | |
625 | break |
|
630 | break | |
|
631 | local_dir = os.path.dirname(local) | |||
|
632 | if not os.path.exists(local_dir): | |||
|
633 | os.makedirs(local_dir, 775) | |||
626 | check_output(self.scp_cmd + [full_remote, local]) |
|
634 | check_output(self.scp_cmd + [full_remote, local]) | |
627 |
|
635 | |||
628 | def fetch_files(self): |
|
636 | def fetch_files(self): |
@@ -159,6 +159,18 b' class PyTestController(TestController):' | |||||
159 | self.cmd[2] = self.pycmd |
|
159 | self.cmd[2] = self.pycmd | |
160 | super(PyTestController, self).launch() |
|
160 | super(PyTestController, self).launch() | |
161 |
|
161 | |||
|
162 | js_prefix = 'js/' | |||
|
163 | ||||
|
164 | def get_js_test_dir(): | |||
|
165 | import IPython.html.tests as t | |||
|
166 | return os.path.join(os.path.dirname(t.__file__), '') | |||
|
167 | ||||
|
168 | def all_js_groups(): | |||
|
169 | import glob | |||
|
170 | test_dir = get_js_test_dir() | |||
|
171 | all_subdirs = glob.glob(test_dir + '*/') | |||
|
172 | return [js_prefix+os.path.relpath(x, test_dir) for x in all_subdirs if os.path.relpath(x, test_dir) != '__pycache__'] | |||
|
173 | ||||
162 | class JSController(TestController): |
|
174 | class JSController(TestController): | |
163 | """Run CasperJS tests """ |
|
175 | """Run CasperJS tests """ | |
164 | def __init__(self, section): |
|
176 | def __init__(self, section): | |
@@ -169,22 +181,19 b' class JSController(TestController):' | |||||
169 | self.ipydir = TemporaryDirectory() |
|
181 | self.ipydir = TemporaryDirectory() | |
170 | self.nbdir = TemporaryDirectory() |
|
182 | self.nbdir = TemporaryDirectory() | |
171 | print("Running notebook tests in directory: %r" % self.nbdir.name) |
|
183 | print("Running notebook tests in directory: %r" % self.nbdir.name) | |
172 |
os.makedirs(os.path.join(self.nbdir.name, os.path.join('sub |
|
184 | os.makedirs(os.path.join(self.nbdir.name, os.path.join(u'sub ∂ir1', u'sub ∂ir 1a'))) | |
173 |
os.makedirs(os.path.join(self.nbdir.name, os.path.join('sub |
|
185 | os.makedirs(os.path.join(self.nbdir.name, os.path.join(u'sub ∂ir2', u'sub ∂ir 1b'))) | |
174 | self.dirs.append(self.ipydir) |
|
186 | self.dirs.append(self.ipydir) | |
175 | self.dirs.append(self.nbdir) |
|
187 | self.dirs.append(self.nbdir) | |
176 |
|
188 | |||
177 | def launch(self): |
|
189 | def launch(self): | |
178 | # start the ipython notebook, so we get the port number |
|
190 | # start the ipython notebook, so we get the port number | |
179 | self._init_server() |
|
191 | self._init_server() | |
180 |
|
192 | js_test_dir = get_js_test_dir() | ||
181 | import IPython.html.tests as t |
|
193 | includes = '--includes=' + os.path.join(js_test_dir,'util.js') | |
182 | test_dir = os.path.join(os.path.dirname(t.__file__), 'casperjs') |
|
194 | test_cases = os.path.join(js_test_dir, self.section[len(js_prefix):]) | |
183 | includes = '--includes=' + os.path.join(test_dir,'util.js') |
|
|||
184 | test_cases = os.path.join(test_dir, 'test_cases') |
|
|||
185 | port = '--port=' + str(self.server_port) |
|
195 | port = '--port=' + str(self.server_port) | |
186 | self.cmd = ['casperjs', 'test', port, includes, test_cases] |
|
196 | self.cmd = ['casperjs', 'test', port, includes, test_cases] | |
187 |
|
||||
188 | super(JSController, self).launch() |
|
197 | super(JSController, self).launch() | |
189 |
|
198 | |||
190 | @property |
|
199 | @property | |
@@ -203,8 +212,6 b' class JSController(TestController):' | |||||
203 | self.server.join() |
|
212 | self.server.join() | |
204 | TestController.cleanup(self) |
|
213 | TestController.cleanup(self) | |
205 |
|
214 | |||
206 | js_test_group_names = {'js'} |
|
|||
207 |
|
||||
208 | def run_webapp(q, ipydir, nbdir, loglevel=0): |
|
215 | def run_webapp(q, ipydir, nbdir, loglevel=0): | |
209 | """start the IPython Notebook, and pass port back to the queue""" |
|
216 | """start the IPython Notebook, and pass port back to the queue""" | |
210 | import os |
|
217 | import os | |
@@ -229,10 +236,13 b' def prepare_controllers(options):' | |||||
229 | if testgroups: |
|
236 | if testgroups: | |
230 | py_testgroups = [g for g in testgroups if (g in py_test_group_names) \ |
|
237 | py_testgroups = [g for g in testgroups if (g in py_test_group_names) \ | |
231 | or g.startswith('IPython.')] |
|
238 | or g.startswith('IPython.')] | |
232 | js_testgroups = [g for g in testgroups if g in js_test_group_names] |
|
239 | if 'js' in testgroups: | |
|
240 | js_testgroups = all_js_groups() | |||
|
241 | else: | |||
|
242 | js_testgroups = [g for g in testgroups if g not in py_testgroups] | |||
233 | else: |
|
243 | else: | |
234 | py_testgroups = py_test_group_names |
|
244 | py_testgroups = py_test_group_names | |
235 |
js_testgroups = js_ |
|
245 | js_testgroups = all_js_groups() | |
236 | if not options.all: |
|
246 | if not options.all: | |
237 | test_sections['parallel'].enabled = False |
|
247 | test_sections['parallel'].enabled = False | |
238 |
|
248 |
@@ -119,6 +119,8 b" PNG64 = b'iVBORw0KG'" | |||||
119 | JPEG = b'\xff\xd8' |
|
119 | JPEG = b'\xff\xd8' | |
120 | # front of JPEG base64-encoded |
|
120 | # front of JPEG base64-encoded | |
121 | JPEG64 = b'/9' |
|
121 | JPEG64 = b'/9' | |
|
122 | # front of PDF base64-encoded | |||
|
123 | PDF64 = b'JVBER' | |||
122 |
|
124 | |||
123 | def encode_images(format_dict): |
|
125 | def encode_images(format_dict): | |
124 | """b64-encodes images in a displaypub format dict |
|
126 | """b64-encodes images in a displaypub format dict | |
@@ -136,7 +138,7 b' def encode_images(format_dict):' | |||||
136 |
|
138 | |||
137 | format_dict : dict |
|
139 | format_dict : dict | |
138 | A copy of the same dictionary, |
|
140 | A copy of the same dictionary, | |
139 |
but binary image data ('image/png' |
|
141 | but binary image data ('image/png', 'image/jpeg' or 'application/pdf') | |
140 | is base64-encoded. |
|
142 | is base64-encoded. | |
141 |
|
143 | |||
142 | """ |
|
144 | """ | |
@@ -156,6 +158,13 b' def encode_images(format_dict):' | |||||
156 | jpegdata = encodebytes(jpegdata) |
|
158 | jpegdata = encodebytes(jpegdata) | |
157 | encoded['image/jpeg'] = jpegdata.decode('ascii') |
|
159 | encoded['image/jpeg'] = jpegdata.decode('ascii') | |
158 |
|
160 | |||
|
161 | pdfdata = format_dict.get('application/pdf') | |||
|
162 | if isinstance(pdfdata, bytes): | |||
|
163 | # make sure we don't double-encode | |||
|
164 | if not pdfdata.startswith(PDF64): | |||
|
165 | pdfdata = encodebytes(pdfdata) | |||
|
166 | encoded['application/pdf'] = pdfdata.decode('ascii') | |||
|
167 | ||||
159 | return encoded |
|
168 | return encoded | |
160 |
|
169 | |||
161 |
|
170 |
@@ -69,10 +69,12 b' def test_encode_images():' | |||||
69 | # invalid data, but the header and footer are from real files |
|
69 | # invalid data, but the header and footer are from real files | |
70 | pngdata = b'\x89PNG\r\n\x1a\nblahblahnotactuallyvalidIEND\xaeB`\x82' |
|
70 | pngdata = b'\x89PNG\r\n\x1a\nblahblahnotactuallyvalidIEND\xaeB`\x82' | |
71 | jpegdata = b'\xff\xd8\xff\xe0\x00\x10JFIFblahblahjpeg(\xa0\x0f\xff\xd9' |
|
71 | jpegdata = b'\xff\xd8\xff\xe0\x00\x10JFIFblahblahjpeg(\xa0\x0f\xff\xd9' | |
|
72 | pdfdata = b'%PDF-1.\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>' | |||
72 |
|
73 | |||
73 | fmt = { |
|
74 | fmt = { | |
74 | 'image/png' : pngdata, |
|
75 | 'image/png' : pngdata, | |
75 | 'image/jpeg' : jpegdata, |
|
76 | 'image/jpeg' : jpegdata, | |
|
77 | 'application/pdf' : pdfdata | |||
76 | } |
|
78 | } | |
77 | encoded = encode_images(fmt) |
|
79 | encoded = encode_images(fmt) | |
78 | for key, value in iteritems(fmt): |
|
80 | for key, value in iteritems(fmt): |
@@ -13,9 +13,9 b' _ipython_get_flags()' | |||||
13 | opts=$__ipython_complete_last_res |
|
13 | opts=$__ipython_complete_last_res | |
14 | return |
|
14 | return | |
15 | fi |
|
15 | fi | |
16 |
# |
|
16 | # matplotlib and profile don't need the = and the | |
17 | # version without simplifies the special cased completion |
|
17 | # version without simplifies the special cased completion | |
18 |
opts=$(ipython ${url} --help-all | grep -E "^-{1,2}[^-]" | sed -e "s/<.*//" -e "s/[^=]$/& /" -e "s/^-- |
|
18 | opts=$(ipython ${url} --help-all | grep -E "^-{1,2}[^-]" | sed -e "s/<.*//" -e "s/[^=]$/& /" -e "s/^--matplotlib=$//" -e "s/^--profile=$/--profile /") | |
19 | __ipython_complete_last="$url $var" |
|
19 | __ipython_complete_last="$url $var" | |
20 | __ipython_complete_last_res="$opts" |
|
20 | __ipython_complete_last_res="$opts" | |
21 | } |
|
21 | } | |
@@ -86,12 +86,12 b' _ipython()' | |||||
86 | elif [[ $mode == "locate" ]]; then |
|
86 | elif [[ $mode == "locate" ]]; then | |
87 | opts="profile" |
|
87 | opts="profile" | |
88 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) |
|
88 | COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) | |
89 |
elif [[ ${prev} == "-- |
|
89 | elif [[ ${prev} == "--matplotlib"* ]] || [[ ${prev} == "--gui"* ]]; then | |
90 |
if [ -z "$__ipython_complete_ |
|
90 | if [ -z "$__ipython_complete_matplotlib" ]; then | |
91 |
__ipython_complete_ |
|
91 | __ipython_complete_matplotlib=`cat <<EOF | python - | |
92 | try: |
|
92 | try: | |
93 | import IPython.core.shellapp as mod; |
|
93 | import IPython.core.shellapp as mod; | |
94 |
for k in mod.InteractiveShellApp. |
|
94 | for k in mod.InteractiveShellApp.matplotlib.values: | |
95 | print "%s " % k |
|
95 | print "%s " % k | |
96 | except: |
|
96 | except: | |
97 | pass |
|
97 | pass | |
@@ -99,7 +99,7 b' EOF' | |||||
99 | ` |
|
99 | ` | |
100 | fi |
|
100 | fi | |
101 | local IFS=$'\t\n' |
|
101 | local IFS=$'\t\n' | |
102 |
COMPREPLY=( $(compgen -W "${__ipython_complete_ |
|
102 | COMPREPLY=( $(compgen -W "${__ipython_complete_matplotlib}" -- ${cur}) ) | |
103 | elif [[ ${prev} == "--profile"* ]]; then |
|
103 | elif [[ ${prev} == "--profile"* ]]; then | |
104 | if [ -z "$__ipython_complete_profiles" ]; then |
|
104 | if [ -z "$__ipython_complete_profiles" ]; then | |
105 | __ipython_complete_profiles=`cat <<EOF | python - |
|
105 | __ipython_complete_profiles=`cat <<EOF | python - |
@@ -13,12 +13,12 b' Categories=Development;Utility;' | |||||
13 | StartupNotify=false |
|
13 | StartupNotify=false | |
14 | Terminal=false |
|
14 | Terminal=false | |
15 | Type=Application |
|
15 | Type=Application | |
16 |
Actions= |
|
16 | Actions=Matplotlib;Matplotlibinline; | |
17 |
|
17 | |||
18 |
[Desktop Action |
|
18 | [Desktop Action Matplotlib] | |
19 | Name=Pylab |
|
19 | Name=Matplotlib | |
20 |
Exec=ipython qtconsole -- |
|
20 | Exec=ipython qtconsole --matplotlib | |
21 |
|
21 | |||
22 |
[Desktop Action |
|
22 | [Desktop Action Matplotlibinline] | |
23 |
Name= |
|
23 | Name=Matplotlib (inline plots) | |
24 |
Exec=ipython qtconsole -- |
|
24 | Exec=ipython qtconsole --matplotlib=inline |
@@ -10,11 +10,11 b' from IPython.kernel.zmq.kernelapp import IPKernelApp' | |||||
10 | #----------------------------------------------------------------------------- |
|
10 | #----------------------------------------------------------------------------- | |
11 | # Functions and classes |
|
11 | # Functions and classes | |
12 | #----------------------------------------------------------------------------- |
|
12 | #----------------------------------------------------------------------------- | |
13 |
def p |
|
13 | def mpl_kernel(gui): | |
14 |
"""Launch and return an IPython kernel with |
|
14 | """Launch and return an IPython kernel with matplotlib support for the desired gui | |
15 | """ |
|
15 | """ | |
16 | kernel = IPKernelApp.instance() |
|
16 | kernel = IPKernelApp.instance() | |
17 |
kernel.initialize(['python', '-- |
|
17 | kernel.initialize(['python', '--matplotlib=%s' % gui, | |
18 | #'--log-level=10' |
|
18 | #'--log-level=10' | |
19 | ]) |
|
19 | ]) | |
20 | return kernel |
|
20 | return kernel | |
@@ -23,16 +23,13 b' def pylab_kernel(gui):' | |||||
23 | class InternalIPKernel(object): |
|
23 | class InternalIPKernel(object): | |
24 |
|
24 | |||
25 | def init_ipkernel(self, backend): |
|
25 | def init_ipkernel(self, backend): | |
26 |
# Start IPython kernel with GUI event loop and p |
|
26 | # Start IPython kernel with GUI event loop and mpl support | |
27 |
self.ipkernel = p |
|
27 | self.ipkernel = mpl_kernel(backend) | |
28 | # To create and track active qt consoles |
|
28 | # To create and track active qt consoles | |
29 | self.consoles = [] |
|
29 | self.consoles = [] | |
30 |
|
30 | |||
31 | # This application will also act on the shell user namespace |
|
31 | # This application will also act on the shell user namespace | |
32 | self.namespace = self.ipkernel.shell.user_ns |
|
32 | self.namespace = self.ipkernel.shell.user_ns | |
33 | # Keys present at startup so we don't print the entire pylab/numpy |
|
|||
34 | # namespace when the user clicks the 'namespace' button |
|
|||
35 | self._init_keys = set(self.namespace.keys()) |
|
|||
36 |
|
33 | |||
37 | # Example: a variable that will be seen by the user in the shell, and |
|
34 | # Example: a variable that will be seen by the user in the shell, and | |
38 | # that the GUI modifies (the 'Counter++' button increments it): |
|
35 | # that the GUI modifies (the 'Counter++' button increments it): | |
@@ -42,7 +39,7 b' class InternalIPKernel(object):' | |||||
42 | def print_namespace(self, evt=None): |
|
39 | def print_namespace(self, evt=None): | |
43 | print("\n***Variables in User namespace***") |
|
40 | print("\n***Variables in User namespace***") | |
44 | for k, v in self.namespace.items(): |
|
41 | for k, v in self.namespace.items(): | |
45 |
if |
|
42 | if not k.startswith('_'): | |
46 | print('%s -> %r' % (k, v)) |
|
43 | print('%s -> %r' % (k, v)) | |
47 | sys.stdout.flush() |
|
44 | sys.stdout.flush() | |
48 |
|
45 |
@@ -975,7 +975,7 b'' | |||||
975 | "cell_type": "markdown", |
|
975 | "cell_type": "markdown", | |
976 | "metadata": {}, |
|
976 | "metadata": {}, | |
977 | "source": [ |
|
977 | "source": [ | |
978 |
"R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files like |
|
978 | "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files like `%matplotlib inline`. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None." | |
979 | ] |
|
979 | ] | |
980 | }, |
|
980 | }, | |
981 | { |
|
981 | { |
@@ -126,8 +126,7 b'' | |||||
126 | ], |
|
126 | ], | |
127 | "language": "python", |
|
127 | "language": "python", | |
128 | "metadata": {}, |
|
128 | "metadata": {}, | |
129 |
"outputs": [] |
|
129 | "outputs": [] | |
130 | "prompt_number": "*" |
|
|||
131 | }, |
|
130 | }, | |
132 | { |
|
131 | { | |
133 | "cell_type": "heading", |
|
132 | "cell_type": "heading", | |
@@ -154,6 +153,7 b'' | |||||
154 | "metadata": {}, |
|
153 | "metadata": {}, | |
155 | "outputs": [ |
|
154 | "outputs": [ | |
156 | { |
|
155 | { | |
|
156 | "metadata": {}, | |||
157 | "output_type": "pyout", |
|
157 | "output_type": "pyout", | |
158 | "prompt_number": 4, |
|
158 | "prompt_number": 4, | |
159 | "text": [ |
|
159 | "text": [ | |
@@ -372,7 +372,7 b'' | |||||
372 | "cell_type": "code", |
|
372 | "cell_type": "code", | |
373 | "collapsed": false, |
|
373 | "collapsed": false, | |
374 | "input": [ |
|
374 | "input": [ | |
375 |
"%load http://matplotlib. |
|
375 | "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py" | |
376 | ], |
|
376 | ], | |
377 | "language": "python", |
|
377 | "language": "python", | |
378 | "metadata": {}, |
|
378 | "metadata": {}, | |
@@ -383,50 +383,72 b'' | |||||
383 | "cell_type": "code", |
|
383 | "cell_type": "code", | |
384 | "collapsed": false, |
|
384 | "collapsed": false, | |
385 | "input": [ |
|
385 | "input": [ | |
386 | "#!/usr/bin/env python\n", |
|
386 | "\"\"\"\n", | |
|
387 | "Plot demonstrating the integral as the area under a curve.\n", | |||
387 | "\n", |
|
388 | "\n", | |
388 | "# implement the example graphs/integral from pyx\n", |
|
389 | "Although this is a simple example, it demonstrates some important tweaks:\n", | |
389 | "from pylab import *\n", |
|
390 | "\n", | |
|
391 | " * A simple line plot with custom color and line width.\n", | |||
|
392 | " * A shaded region created using a Polygon patch.\n", | |||
|
393 | " * A text label with mathtext rendering.\n", | |||
|
394 | " * figtext calls to label the x- and y-axes.\n", | |||
|
395 | " * Use of axis spines to hide the top and right spines.\n", | |||
|
396 | " * Custom tick placement and labels.\n", | |||
|
397 | "\"\"\"\n", | |||
|
398 | "import numpy as np\n", | |||
|
399 | "import matplotlib.pyplot as plt\n", | |||
390 | "from matplotlib.patches import Polygon\n", |
|
400 | "from matplotlib.patches import Polygon\n", | |
391 | "\n", |
|
401 | "\n", | |
|
402 | "\n", | |||
392 | "def func(x):\n", |
|
403 | "def func(x):\n", | |
393 | " return (x-3)*(x-5)*(x-7)+85\n", |
|
404 | " return (x - 3) * (x - 5) * (x - 7) + 85\n", | |
394 | "\n", |
|
405 | "\n", | |
395 | "ax = subplot(111)\n", |
|
|||
396 | "\n", |
|
406 | "\n", | |
397 |
"a, b = 2, 9 # integral |
|
407 | "a, b = 2, 9 # integral limits\n", | |
398 |
"x = |
|
408 | "x = np.linspace(0, 10)\n", | |
399 | "y = func(x)\n", |
|
409 | "y = func(x)\n", | |
400 | "plot(x, y, linewidth=1)\n", |
|
|||
401 | "\n", |
|
410 | "\n", | |
402 | "# make the shaded region\n", |
|
411 | "fig, ax = plt.subplots()\n", | |
403 | "ix = arange(a, b, 0.01)\n", |
|
412 | "plt.plot(x, y, 'r', linewidth=2)\n", | |
|
413 | "plt.ylim(ymin=0)\n", | |||
|
414 | "\n", | |||
|
415 | "# Make the shaded region\n", | |||
|
416 | "ix = np.linspace(a, b)\n", | |||
404 | "iy = func(ix)\n", |
|
417 | "iy = func(ix)\n", | |
405 | "verts = [(a,0)] + list(zip(ix,iy)) + [(b,0)]\n", |
|
418 | "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", | |
406 |
"poly = Polygon(verts, facecolor='0. |
|
419 | "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", | |
407 | "ax.add_patch(poly)\n", |
|
420 | "ax.add_patch(poly)\n", | |
408 | "\n", |
|
421 | "\n", | |
409 | "text(0.5 * (a + b), 30,\n", |
|
422 | "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", | |
410 |
" |
|
423 | " horizontalalignment='center', fontsize=20)\n", | |
411 | " fontsize=20)\n", |
|
424 | "\n", | |
|
425 | "plt.figtext(0.9, 0.05, '$x$')\n", | |||
|
426 | "plt.figtext(0.1, 0.9, '$y$')\n", | |||
|
427 | "\n", | |||
|
428 | "ax.spines['right'].set_visible(False)\n", | |||
|
429 | "ax.spines['top'].set_visible(False)\n", | |||
|
430 | "ax.xaxis.set_ticks_position('bottom')\n", | |||
412 | "\n", |
|
431 | "\n", | |
413 |
"ax |
|
432 | "ax.set_xticks((a, b))\n", | |
414 | "figtext(0.9, 0.05, 'x')\n", |
|
433 | "ax.set_xticklabels(('$a$', '$b$'))\n", | |
415 | "figtext(0.1, 0.9, 'y')\n", |
|
|||
416 | "ax.set_xticks((a,b))\n", |
|
|||
417 | "ax.set_xticklabels(('a','b'))\n", |
|
|||
418 | "ax.set_yticks([])\n", |
|
434 | "ax.set_yticks([])\n", | |
419 |
" |
|
435 | "\n", | |
|
436 | "plt.show()\n" | |||
420 | ], |
|
437 | ], | |
421 | "language": "python", |
|
438 | "language": "python", | |
422 | "metadata": {}, |
|
439 | "metadata": {}, | |
423 | "outputs": [ |
|
440 | "outputs": [ | |
424 | { |
|
441 | { | |
425 |
"metadata": { |
|
442 | "metadata": { | |
|
443 | "png": { | |||
|
444 | "height": 401, | |||
|
445 | "width": 596 | |||
|
446 | } | |||
|
447 | }, | |||
426 | "output_type": "display_data", |
|
448 | "output_type": "display_data", | |
427 | "png": "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\nAAAAQvD/AKh2fy0Nfo/2AAAAAElFTkSuQmCC\n", |
|
449 | "png": "iVBORw0KGgoAAAANSUhEUgAABKkAAAMiCAYAAAClk5ArAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAWJQAAFiUBSVIk8AAAIABJREFUeJzs3XmUXHWZN/DnVlV3Vy8JYQuEfVEUiTLqATcc9QUcZXTg\n5YhsoiIoiEAIgkpQNiEECZuKhE3UDKOCggKuMKMgCjgCI0Ec4UVQiATI2kl6rar7/tGkySUJZOnu\nW931+ZxTp+r33FtV34Qm3fnm3lsRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsuB0i4qsRcVtE\nHPqSbZ+JiNtHOhAAAAAAjefyiChFxJSI+ONLtt0XEf8x4okAAAAAGFUKG/j8d0TEbyKiEhHvi4i/\nrLStPSLeGBF3buB7AAAAAMDL2iIimiNi6xgoqvZfadu+EVGLiF1zyAUAAABAA5oaEYsiomml2TkR\n8Ww+cQAAAAAYTTb0dL8V/iUifhUR/SvN/jkGTgUEAAAAgJc1VCXVdpG9HlVLROwZEXcN0esDAAAA\nMIYNVUn1t4jYdKX1jIgoh4umAwAAALAWkiF6nddExDUR8T8R0RURb4+I3SJikyF6/Zd1xx13pBER\n++yzz1D9egAAAAAYQaUhep2/RMQ7X3icRMQzEXHLEL32Wlu4cGE60u8JAAAAMFZtsskmI3ZA0FCc\n7vfdiPjjSusDImLjiDh/CF4bAAAAgAYwFCXV3hHx6xcebxURMyPi45G9kDoAAAAArNFQnO53bETs\nEREXRsSWEXFIRPz3ELwuAAAAAA1iKEqqm164AQAAAMB6GYrT/QAAAABggyipAAAAAMidkgoAAACA\n3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoA\nAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMid\nkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAAAMidkgoAAACA3CmpAAAA\nAMidkgoAAACAVaXpiL6dkgoAAACArDSNcfvtN6JvqaQCAAAAIKN0xx1Ruu++EX1PJRUAAAAAL0rT\naL3oohF/WyUVAAAAAINK99wTpd//fsTfV0kFAAAAwKDyxRfn8r5KKgAAAAAiIqL4xz9G03/9Vy7v\nraQCAAAAICIiypdcktt7K6kAAAAAiMKjj0bTrbfm9/65vTMAAAAAdaN82WWRpOnguvL614/o+yup\nAAAAABpc4amnovnGGzOznpNOGtkMI/puAAAAANSdlq9/PZJKZXBd3Xnn6P+3fxvRDEoqAAAAgAaW\nPP98tMyenZn1TJkSUSyOaA4lFQAAAEADa5k1K5KensF1bautou/DHx7xHEoqAAAAgAaVLFkS5Wuu\nycx6Tjghorl5xLMoqQAAAAAaVMu110aydOngurbpptF7xBG5ZFFSAQAAADSirq5oueKKzKj305+O\naGvLJY6SCgAAAKABtcyeHYUFCwbXaUdH9B51VG55lFQAAAAAjaavL8pf+1pm1HP00ZFutFFOgZRU\nAAAAAA2n+cYbo/CPfwyu03I5eo89NsdESioAAACAxlKtRvmyyzKj3iOOiHTixJwCDVBSAQAAADSQ\npltvjeL/+3+D67RUit7jj88x0QAlFQAAAECjSNMoX3JJZtR30EFR23bbnAK9SEkFAAAA0CBKd9wR\npTlzBtdpkkTPlCk5JnqRkgoAAACgQbz0KKr+D3wgarvsklOaLCUVAAAAQAMo3XNPNN17b2bWM3Vq\nTmlWpaQCAAAAaACrHEX1f/5PVP/pn3JKsyolFQAAAMAYV3zooWi6447MrOfkk3NKs3pKKgAAAIAx\n7qVHUVXe8paovO1tOaVZPSUVAAAAwBhWeOyxaLrllsys++STI5Ikp0Srp6QCAAAAGMPKl10WSZoO\nriuTJ0dln31yTLR6SioAAACAMSp5+ulovuGGzKznpJPq7iiqCCUVAAAAwJhV/vrXI6lUBtfVnXaK\n/v33zzHRmimpAAAAAMag5Pnno2X27MysZ8qUiGIxp0QvT0kFAAAAMAa1XHllJN3dg+vaVltF38EH\n55jo5SmpAAAAAMaazs4oX311ZtRz/PERzc05BXplSioAAACAMaZ87bWRLF06uK5tumn0HnFEjole\nmZIKAAAAYCzp6oqWK67IjHqPPTaivT2nQGtHSQUAAAAwhrRcf30U5s8fXKcdHdF79NE5Jlo7SioA\nAACAsaKvL8pf/Wpm1HvUUZFutFFOgdaekgoAAABgjGj+wQ+iMHfu4Dotl6Pn05/OMdHaU1IBAAAA\njAXVapQvuywz6v3IRyKdODGnQOtGSQUAAAAwBjTddlsUH3tscJ2WStF7wgk5Jlo3SioAAACA0S5N\no3zJJZlR30EHRW3bbXMKtO6UVAAAAACjXOm//itKDz00uE6TJHpOPDHHROtOSQUAAAAwyr30KKr+\nf/3XqL3mNTmlWT9KKgAAAIBRrHjvvdH0u99lZj1Tp+aUZv0pqQAAAABGsdaXHkX1nvdE9Y1vzCnN\n+lNSAQAAAIxSxTlzoun22zOznpNPzinNhlFSAQAAAIxSL70WVWXPPaPy9rfnlGbDKKkAAAAARqHC\nY49F049/nJl1n3xyRJLklGjDKKkAAAAARqHWCy6IJE0H15XddovKvvvmmGjDKKkAAAAARpniww9H\n8003ZWY9o/goqgglFQAAAMCoU54+PbOuTJ4c/fvvn1OaoaGkAgAAABhFiv/939H8859nZt1f/GJE\nYXTXPKM7PQAAAECDaT3vvMy6ssceo/paVCsoqQAAAABGidKdd0bTXXdlZt1f+tKovhbVCkoqAAAA\ngNEgTaP13HMzo/53vSsqe+2VU6ChpaQCAAAAGAWafvGLKN1/f2bW/cUv5pRm6CmpAAAAAOpdrRbl\nl1yLqm+//aL65jfnFGjoKakAAAAA6lzTzTdH6U9/GlynSRLd06blmGjoKakAAAAA6lmlEq0zZmRG\n/QceGLXXvS6nQMNDSQUAAABQx5q/+90oPv744DotFqP7C1/IMdHwUFIBAAAA1Kve3ihfeGFm1HfY\nYVHbeeecAg0fJRUAAABAnWr59rej+PTTg+u0uTm6Tz01x0TDR0kFAAAAUI+WL4/yRRdlRr1HHhnp\nNtvkFGh4KakAAAAA6lDL1VdH4fnnB9dpW1v0TJ2aY6LhpaQCAAAAqDPJkiVRvuyyzKzn2GMjnTgx\np0TDT0kFAAAAUGdavv71KCxZMriujR8fvccfn2Oi4aekAgAAAKgjyfPPR3nWrMys94QTIp0wIadE\nI0NJBQAAAFBHypdeGsny5YPr2mabRc8xx+SYaGQoqQAAAADqRDJ3brR885uZWc/UqREdHTklGjlK\nKgAAAIA60TpzZiS9vYPr2lZbRe+RR+aYaOQoqQAAAADqQOGJJ6L5+uszs+5TT40ol3NKNLKUVAAA\nAAB1oHzBBZFUKoPr6o47Rt9hh+WYaGQpqQAAAAByVnjkkWi+8cbMrPu00yKamnJKNPKUVAAAAAA5\na50xI5I0HVxXd901+g88MMdEI09JBQAAAJCj4gMPRPNtt2Vm3dOmRRQaq7ZprF8tAAAAQJ1pPe+8\nzLrypjdF/3775ZQmP0oqAAAAgJyUfvvbaPrVrzKz7tNPj0iSnBLlR0kFAAAAkIc0jdZzz82M+vfa\nKyrvfnc+eXKmpAIAAADIQemOO6J0332ZWaMeRRWhpAIAAAAYebXaKtei6t9336i+5S05BcqfkgoA\nAABghDXdemuUHnooM+s+/fSc0tQHJRUAAADASKpWo3X69Myob//9o/qGN+QUqD4oqQAAAABGUPMN\nN0TxsccG12mhEN2nnZZjovqgpAIAAAAYKX19Ub7gguzo4IOjtssuOQWqH0oqAAAAgBHSMnt2FP/+\n98F12tQUPZ//fI6J6oeSCgAAAGAkdHVF+aKLMqPej30satttl1Og+qKkAgAAABgBLddeG4V58wbX\naWtr9Jx8co6J6ouSCgAAAGC4dXZG+dJLM6Peo4+OdMstcwpUf5RUAAAAAMOsfMUVUVi0aHCddnRE\nz5QpOSaqP0oqAAAAgGGULFwY5csvz8x6PvOZSDfZJKdE9UlJBQAAADCMypddFsmyZYPr2iabRM+n\nP51jovqkpAIAAAAYJsnTT0fL1VdnZj1TpkSMH59TovqlpAIAAAAYJm1nnx1JT8/gurblltF79NE5\nJqpfSioAAACAYVC8775o/uEPM7Puz38+orU1p0T1TUkFAAAAMNRqtWg7/fTMqDJ5cvR95CM5Bap/\nSioAAACAIdZ8ww1ReuCBzKz7/PMjisWcEtU/JRUAAADAUFq2LFrPOScz6vvgB6PyjnfkFGh0UFIB\nAAAADKHyZZdFYd68wXXa3BzdZ5+dY6LRQUkFAAAAMEQKTz0V5csvz8x6jjsuajvskE+gUURJBQAA\nADBEWs88M5KensF1beLE6Jk6NcdEo4eSCgAAAGAIFO+9N5p/9KPMrPuLX4wYNy6nRKOLkgoAAABg\nQ9Vq0TZtWmZU2X336DvssJwCjT5KKgAAAIAN1Pzd70bpf/4nM+uePj2ioHpZW36nAAAAADbE0qXR\neu65mVHf/vtH5W1vyynQ6KSkAgAAANgA5UsvjcKzzw6u05aW6D777BwTjU5KKgAAAID1VPjb36L8\njW9kZj3HHx+17bbLKdHopaQCAAAAWE+tZ54ZSW/v4Lq25ZbRM2VKjolGLyUVAAAAwHoo/fa30XzL\nLZlZ95e+FNHRkVOi0U1JBQAAALCuqtVonTYtM6q88Y3Rd/DBOQUa/ZRUAAAAAOuo+T/+I0pz5mRm\nXeedF1FQtawvv3MAAAAA66KzM1rPPTcz6jvwwKi+9a05BRoblFQAAAAA66D14ouj8Pzzg+u0tTW6\nzjorv0BjhJIKAAAAYC0VnngiWmbNysx6jj8+0m22ySnR2KGkAgAAAFhLrWeeGUlf3+C6NmlS9Jx4\nYo6Jxg4lFQAAAMBaKP3mN9F8222ZWfeZZ0a0t+eUaGxRUgEAAAC8kmo1WqdNy4wqb35z9H3oQzkF\nGnuUVAAAAACvoHn27Cj96U+ZWdf06REF1cpQ8TsJAAAA8HI6O6N1+vTMqPegg6K6xx45BRqblFQA\nAAAAL6N15swozJ8/uE5bW6P7jDNyTDQ2KakAAAAA1qDw+OPRcuWVmVnPiSdGuvXWOSUau5RUAAAA\nAGvQesYZkfT3D65rW28dPSeckGOisUtJBQAAALAapV//Opp/9rPMrOussyLa2vIJNMYpqQAAAABe\nqlKJttNPz4722CP6Dzwwp0Bjn5IKAAAA4CWav/OdKP75z5lZ1/nnRyRJTonGPiUVAAAAwEqSJUui\ndfr0zKz3kEOi+qY35ZSoMSipAAAAAFZS/spXorBw4eA6bWuL7i9+McdEjUFJBQAAAPCCwmOPRcvV\nV2dmPSedFOlWW+WUqHEoqQAAAABe0PqlL0VSqQyuq9tsEz2f+UyOiRqHkgoAAAAgIkr/+Z/R/Mtf\nZmbdZ50V0dqaT6AGo6QCAAAAqFSi7SXXnep/61uj///+35wCNR4lFQAAANDwWq67Lop/+cvgOk2S\n6J4+PSJJckzVWJRUAAAAQENL5s2L8nnnZWZ9hxwS1X/6p5wSNSYlFQAAANDQ2qZNi0Jn5+A6bW+P\n7i99KcdEjUlJBQAAADSspl/8Ipp/9KPMrPu00yLdcsucEjUuJRUAAADQmJYujbZTTsmMKm98Y/Qe\nc0xOgRqbkgoAAABoSK3Tp0dh7tzBdVosRtcll0QUizmmalxKKgAAAKDhFO+/P1quuioz6z3uuKi+\n4Q05JUJJBQAAADSW/v5omzo1kjQdHFW33z66P/e5HEOhpAIAAAAaSssVV0Tp4Yczs66ZMyPa23NK\nRISSCgAAAGgghSeeiNYLLsjMeg86KCp7751TIlZQUgEAAACNIU2j7bOfjaS7e3BU23jj6D733BxD\nsYKSCgAAAGgIzTfeGE2//nVm1v3lL0e6+eb5BCJDSQUAAACMecmCBdF6+umZWf873xl9hx6aUyJe\nSkkFAAAAjHmtZ5wRhQULBtdpS0t0XXxxRJLkmIqVKakAAACAMa10553R8t3vZmY9p54atZ13zikR\nq6OkAgAAAMau7u5oO/nkzKi6667Rc/zxOQViTZRUAAAAwJhVvvDCKD7xxOA6TZJYfumlEc3NOaZi\ndZRUAAAAwJhU/NOfovy1r2VmvUcfHdU99sgpES9HSQUAAACMPdVqtE2ZEkm1OjiqTZoU3S/5hD/q\nh5IKAAAAGHNarr02Sg88kJl1XXhhxPjxOSXilSipAAAAgDElefrpaD333Mys7wMfiP799sspEWtD\nSQUAAACMHWkabZ/7XCTLlr04GjcuumbMyDEUa0NJBQAAAIwZTbfeGs0//3lm1nXmmZFutVVOiVhb\nSioAAABgTEiWLIm2L3whM6vsuWf0ffzj+QRinSipAAAAgDGh9ZxzojBv3uA6bWqK5ZdcElFQf4wG\n/isBAAAAo17x3nuj5brrMrOeE0+M2q675pSIdaWkAgAAAEa33t5oP+mkzKi6887R89nP5hSI9aGk\nAgAAAEa18mWXRfHRRzOzrksuiSiXc0rE+lBSAQAAAKNW4dFHo3zxxZlZ7+GHR2WvvXJKxPpSUgEA\nAACjU60WbVOnRtLX9+Jo882j+5xzcgzF+lJSAQAAAKNS87//ezTdc09m1jV9eqQbb5xTIjaEkgoA\nAAAYdZJnn43WM8/MzPr32Sf6Dzwwp0RsKCUVAAAAMOq0TZsWhSVLBtdpW1t0zZwZkSQ5pmJDKKkA\nAACAUaX0y19G8803Z2bdp50Wte22yykRQ0FJBQAAAIwey5ZF2ymnZEaV3XeP3mOOySkQQ0VJBQAA\nAIwareefH8Wnnx5cp4VCdF16aUSplGMqhoKSCgAAABgVig8+GC1XXpmZ9X7601HdffecEjGUlFQA\nAABA/evqivZjj42kVhscVbfdNrq/8IUcQzGUlFQAAABA3Ws9++woPvZYZtY1c2ZEe3tOiRhqSioA\nAACgrpVuvz3KV1+dmfUedlhU9t03p0QMByUVAAAAULeS+fOj/YQTMrPqDjtE1/nn55SI4aKkAgAA\nAOpTmkbbSSdF4bnnXhwVCrF81qyIceNyDMZwUFIBAAAAdal59uxo/ulPM7Oez342qnvumVMihpOS\nCgAAAKg7hccfj7Zp0zKzypvfHD2nnJJTIoabkgoAAACoL/390X7MMZF0dQ2O0vb2gdP8mppyDMZw\nUlIBAAAAdaV80UVReuCBzKzrvPOitvPOOSViJCipAAAAgLpR/P3vo3zRRZlZ3377Rd8RR+SUiJGi\npAIAAADqw9Kl0f7pT0dSrQ6OahMnRtell0YkSY7BGAlKKgAAAKAutE2bFsUnnsjMln/ta5FutllO\niRhJSioAAAAgd0233hot11+fmfUcfXRU9t03p0SMNCUVAAAAkKvkmWei7aSTMrPqq18d3WedlU8g\ncqGkAgAAAPJTq0X78cdHYdGiwVHa1BTLr7oqoq0tx2CMNCUVAAAAkJuWa66Jpl/9KjPrnjYtqrvv\nnlMi8qKkAgAAAHJR+POfo/Ulp/T1v/3t0Xv88fkEIldKKgAAAGDk9fZG+7HHRtLTMzhKx42Lriuu\niCgWcwxGXpRUAAAAwIhrPf/8KM2Zk5l1zZwZtW23zSkReVNSAQAAACOqdPfd0fK1r2VmfQceGH0f\n+lBOiagHSioAAABgxCSLF0f7pz8dSZoOzmpbbx1dM2dGJEmOycibkgoAAAAYMW2nnhqFuXMH12mS\nxPJvfCPSCRNyTEU9UFIBAAAAI6LpBz+I5h/+MDPrPf74qLzznTklop4oqQAAAIBhV3jqqWg75ZTM\nrDJ5cnRPm5ZTIuqNkgoAAAAYXtVqtB13XBQ6OwdHaUtLLL/yyoiWlhyDUU+UVAAAAMCwarn88mj6\n7W8zs+6zzorarrvmlIh6pKQCAAAAhk3xoYei9bzzMrP+97wnej/5yZwSUa+UVAAAAMDw6O6O9k99\nKpL+/sFRbeONY/nXvx5RUEmQ5SsCAAAAGBatZ58dxUcfzcy6Lr000kmTckpEPVNSAQAAAEOudMcd\nUb7qqsys9/DDo/+DH8wpEfVOSQUAAAAMqWT+/Gg/4YTMrLrDDtE1fXpOiRgNlFQAAADA0EnTaJs6\nNQrPPvviqFCI5bNmRYwbl2Mw6p2SCgAAABgyLddcE80/+Ulm9sxRR0V1zz1zSsRooaQCAAAAhkTx\n3nuj9fTTM7Pnd9wxnjnqqJwSMZooqQAAAIANlsybFx1HHhlJpTI4q3V0xF2f+lREqZRjMkYLXyUA\nAADAhunri44jj8xchyoiYvFll0VnkuQUitHGkVQAAADABmk944wo3XdfZrbsxBOj9/3vzykRo5GS\nCgAAAFhvzTfcEOWrrsrMet/1rlh66qk5JWK0UlIBAAAA66U4Z060TZ2amVW22SYWXX55RLGYUypG\nKyUVAAAAsM6SRYui/aMfjaS7e3CWlsux6JprIt1kkxyTMVopqQAAAIB1U61G+6c+FcW//S0zXjJj\nRlTe8IacQjHaKakAAACAdVK+4IJo+s//zMyWf+xj0f3hD+eUiLFASQUAAACstaaf/zxaZ87MzPre\n/OboPPvsnBIxViipAAAAgLVSePzxaD/mmMysutlmseiqqyKam3NKxVihpAIAAABe2bJl0fHRj0ay\ndOngKC0WY/FVV0Vt0qQcgzFWKKkAAACAl5em0T5lShT//OfMuPOMM6LvrW/NKRRjjZIKAAAAeFkt\nV1wRzTffnJl1H3BAdB19dE6JGIuUVAAAAMAale6+O1rPPDMz699111gyc2ZEkuSUirFISQUAAACs\nVjJ3brQfdVQk1ergrDZ+fCy65ppI29pyTMZYpKQCAAAAVtXbGx0f/3gUnn8+M178ta9FdccdcwrF\nWKakAgAAAFbRNm1alO6/PzNbevLJ0bvvvjklYqxTUgEAAAAZzddfHy3XXZeZ9ey9dyw7+eScEtEI\nlFQAAADAoOL//E+0nXJKZlbZfvtY/LWvRRTUCAwfX10AAABAREQkCxZE+0c/Gklv7+AsLZdj0bXX\nRjphQo7JaARKKgAAACCiWo32o4+O4tNPZ8aLZ86Myutel1MoGomSCgAAAIjyeedF0513ZmbLjzoq\neg48MKdENBolFQAAADS4pltvjdZLL83Met/ylug844ycEtGIlFQAAADQwAqPPhrtn/lMZlbdYotY\nfOWVEU1NOaWiESmpAAAAoFEtXRodRxwRybJlg6O0qSkWXXVV1CZOzDEYjUhJBQAAAI0oTaP9M5+J\n4mOPZcadZ50V/XvskVMoGpmSCgAAABpQy1e/Gs233ZaZdR10UHR9/OP5BKLhKakAAACgwTTdemu0\nnnNOZta/226xZMaMiCTJKRWNTkkFAAAADaR4773RfswxkaTp4Kw2YUIsuvbaiNbWHJPR6JRUAAAA\n0CAKjz4aHYcdFklPz+AsLRZj0Te+EdXttssxGSipAAAAoCEk8+ZFx0EHRWHx4sx8yYUXRt+7351P\nKFiJkgoAAADGuqVLo+OQQ6L41FPZ8SmnRPchh+QUCrKUVAAAADCW9fdHx8c/HqWHHsqMuw47LJZN\nnZpTKFiVkgoAAADGqjSNtilToulXv8qMe/be2yf5UXeUVAAAADBGladPj5bvfS8z69t991g8a1ZE\nqZRTKlg9JRUAAACMQc3f+la0XnRRZlbZfvtYNHt2pO3tOaWCNVNSAQAAwBjT9LOfRdspp2Rm1U02\niYXXXx+1zTbLKRW8PCUVAAAAjCHF//7vaD/66EhqtcFZWi7Hou98J6o77ZRjMnh5SioAAAAYIwqP\nPx4dhx0WSXf34CwtFGLRrFnR/6Y35ZgMXpmSCgAAAMaA5LnnouOgg6KwYEFm3nn++dH73vfmlArW\nnpIKAAAARrtly6Lj0EOj+OSTmfHSKVOi64gj8skE60hJBQAAAKNZpRIdRx0VpQcfzIy7PvzhWPa5\nz+UUCtadkgoAAABGqzSNtpNPjqbbb8+Me9/1rlhy4YURSZJTMFh3SioAAAAYpcpf+Uq0/Pu/Z2b9\nkyfHoquvjmhqyikVrB8lFQAAAIxCzbNnR+sFF2RmlW22iYWzZ0fa0ZFTKlh/SioAAAAYZUq33x5t\nJ5+cmdU23jgWXn991LbYIqdUsGGUVAAAADCKFB98MDqOPDKSanVwlpbLsfC666L66lfnmAw2jJIK\nAAAARonCk09GxyGHRNLVNThLkyQWXX559O+5Z47JYMMpqQAAAGAUSObPj46DDorC889n5p1f/nL0\nvv/9OaWCoaOkAgAAgHrX1RUdhx4axccfz4yXHXdcdH3iEzmFgqGlpAIAAIB6VqlE+yc/GaX778+M\nuw88MJZOm5ZTKBh6SioAAACoV2kabZ//fDT/7GeZce9ee8Xiiy+OKPhrPWOHr2YAAACoU+ULL4yW\n667LzPpf97pYdM01Ec3NOaWC4aGkAgAAgDpUnjkzWmfMyMyqW20VC2fPjnT8+JxSwfAp5R0AAAAA\nyCp/5SurFFS1jTaKhddfH7VJk3JKBcNLSQUAAAB1pDxjRrR+5SuZWa29PRZ+61tRec1rckoFw09J\nBQAAAPUgTQcKqgsvzIxr7e2x8Prro3/PPXMKBiNDSQUAAAB5S9MoT58erRddlBnXOjoGCqo99sgp\nGIwcJRUAAADkKU2jfN550XrxxZlxbdy4WPgf/xH9b35zTsFgZCmpAAAAIC9pGuUvfzlaL700M66N\nGxcLv/vd6H/Tm3IKBiNPSQUAAAB5SNNoPfvsKH/1q5lxbfz4gYLqjW/MKRjkQ0kFAAAAIy1No/XM\nM6P89a9nxrWNNoqF3/te9O++e07BID9KKgAAABhJaRqtX/pSlL/xjcy4ttFGseD734/KG96QUzDI\nl5IKAACVkIiNAAAgAElEQVQARkqaRuvpp0d51qzMuDZhQiz43vcUVDQ0JRUAAACMhDSN1mnTonzl\nlZlxbeONBwqq178+p2BQH5RUAAAAMNzSNFpPOy3KV12VGdc23njgFL/Jk3MKBvVDSQUAAADDKU2j\n9fOfj/I112TGtY03jgU33BCV3XbLKRjUFyUVAAAADJdaLVo/97kof/ObmXF1k01i4Q03ROV1r8sp\nGNQfJRUAAAAMh1ot2k49NVquuy4zrm66aSy88caovPa1OQWD+qSkAgAAgKFWq0XbZz8bLd/+dmZc\n3WyzgYLqNa/JKRjULyUVAAAADKVaLdqmTo2W2bMz4+rmmw8UVLvsklMwqG9KKgAAABgqtVq0TZkS\nLddfnxlXN988Fv7gB1F59atzCgb1T0kFAAAAQ6FajbYTT4yW7343O544MRbceGNUFVTwsgp5BwAA\nAIBRb00F1RZbxIIf/EBBBWvBkVQAAACwIarVaDv++Gj5/vez4y23HDiCauedcwoGo4uSCgAAANZX\nV1e0H3tsNN92W2ZcnTRpoKDaaaecgsHoo6QCAACA9ZA891x0HHZYlB54IDOvTpo0cIrfjjvmlAxG\nJyUVAAAArKPCX/4SHQcfHMW//z0zr2611UBBtcMO+QSDUcyF0wEAAGAdlH7zmxj3vvetUlD177pr\nzP/xjxVUsJ6UVAAAALCWmr/3vej40IeisGRJZt7z7nfHgh/9KGpbb51TMhj9lFQAAADwStI0yjNm\nRPtxx0XS35/Z1HX44bHo29+OdNy4nMLB2OCaVAAAAPBy+vqibcqUaPn+91fZ1DltWiz/zGcikiSH\nYDC2KKkAAABgDZLFi6P9ox+NprvvzszTlpZYfOml0bP//jklg7FHSQUAAACrUfjb36Ljwx+O4mOP\nZea1jTeOhdddF/177plTMhiblFQAAADwEsX774+Oww6LwvPPZ+aVHXeMhbNnR3WnnXJKBmOXC6cD\nAADASppuuy3G/du/rVJQ9e2xR8y/5RYFFQwTJRUAAABERKRptHzjG9H+sY9F0t2d2dS9//6x4Pvf\nj3TTTXMKB2Of0/0AAACgUonWadOifM01q2xadsIJsfTzn48oOM4DhpOSCgAAgMa2bFm0f/KT0fyL\nX2TGabEYS2bMiO7DD88pGDQWJRUAAAANK3nmmeg49NAoPfRQZl7r6IhFV10Vfe9+dz7BoAEpqQAA\nAGhIhUceiXEHHxyFuXMz8+qkSbFw9uyovO51OSWDxuSEWgAAABpO6Ve/ivHve98qBVX/5Mkx/yc/\nUVBBDpRUAAAANJTm2bOj4+CDI1m2LDPv2WefWHDzzVHbcsuckkFjU1IBAADQGGq1KJ97brRPmRJJ\npZLZtPxjH4tF3/xmpO3tOYUDXJMKAACAsa+rK9pPPDGab7opM06TJJaecUYs/9SnIpIkp3BAhJIK\nAACAMa7w5z9Hxyc+EcW//CUzT8vlWPz1r0fPfvvllAxYmdP9AAAAGJvSNJqvvz7G77PPKgVVddNN\nY8GNNyqooI44kgoAAICxZ9myaDv11Gj5/vdX2VR51ati4ezZUd1++xyCAWviSCoAAADGlOKf/hTj\n9957tQVV14c+FPN/9jMFFdQhR1IBAAAwNqRpNH/729E2bVokPT3ZTeVyLJk+PboPPtgF0qFOKakA\nAAAY/To7o/3kk1f59L6IiP5ddonFV10VlV12ySEYsLaUVAAAAIxqxYceivZPfCKKf/3rKtu6Djkk\nlpx7bkRbWw7JgHWhpAIAAGB0StNo+eY3o/X00yPp68tsqrW1ReeMGdH9oQ/lFA5YV0oqAAAARp/O\nzmg/8cRovuWWVTb177prLJo1K6qvfnUOwYD15dP9AAAAGFWKDz4Y49/1rtUWVMuPOCLm33abggpG\nIUdSAQAAMDqkabRceWW0nnlmJP39mU21jo5Y8pWvRM8BB+QUDthQSioAAADqXrJ4cbSdcEI0/+Qn\nq2zrnzx54PS+nXbKIRkwVJzuBwAAQF0r/uEPMe5d71ptQbX84x+P+bfcoqCCMcCRVAAAANSnWi1a\nvvGNaD3nnEgqleymceNiyUUXRc8HPpBTOGCoKakAAACoO8nChdF23HHR/MtfrrKtb/fdY/GsWVHd\nfvsckgHDxel+AAAA1JXivffG+H/+59UWVMs++clY8OMfK6hgDHIkFQAAAPWhvz/KX/1qlGfMiKRa\nzWyqbbRRLL7kkuh93/tyCgcMNyUVAAAAuSv+4Q/RdtJJUXrkkVW29b35zbH4iiuius02OSQDRoqS\nCgAAgPwsXRqt550XLVdfHUmarrJ52bHHxtLTTotoasohHDCSlFQAAADkounnP4+2U06Jwj/+scq2\n2sYbx+LLLoveffbJIRmQByUVAAAAIyqZNy/avvCFaL7lltVu7/rQh2LpmWdGbdNNRzgZkCclFQAA\nACOjVovm73wnWs86Kwqdnatsrmy/fSyZMSP63vWuHMIBeVNSAQAAMOwK//u/0T51apTuu2+VbWmx\nGMuPPTaWTp0a0daWQzqgHiipAAAAGD69vVG++OIoX3ppJP39q2zu2333WHLhhVGZPDmHcEA9UVIB\nAAAwLEq/+120TZ0axcceW2Vbra0tln7hC9F15JERxWIO6YB6o6QCAABgSCWLF0frWWdFy3e+s9rt\nPfvsE0umT4/aNtuMcDKgnimpAAAAGBppGk0/+lG0nXZaFJ57bpXN1c03j84vfzl6PvjBiCTJISBQ\nz5RUAAAAbLDk6aej7ZRTovmXv1zt9q7DD4/O00+PdMKEEU4GjBZKKgAAANZftRotV18dreedF8ny\n5atsruy8cyy58MLoe+tbcwgHjCZKKgAAANZLcc6caDvppCg9+OAq29Kmplh2/PGx7IQTIsrlHNIB\no42SCgAAgHWzfHm0XnhhtFx+eSTV6iqb+/bYI5ZceGFUdtklh3DAaKWkAgAAYO309UXL7NlRnjkz\nCs8+u8rm2rhxsfSLX4yuww+PKBRyCAiMZkoqAAAAXl6tFk033RSt06dH8cknV7tL9wc+EJ3nnBO1\nLbcc2WzAmKGkAgAAYPXSNEq33x6tX/5ylP70p9XuUp00KZZMnx69//IvIxwOGGuUVAAAAKyidM89\n0XrOOVG6777Vbk/L5Vj+iU/EsilTIh03boTTAWORkgoAAIBBxYcfjtYvfzmabr99tdvTUim6Djss\nlp10klP7gCGlpAIAACAKf/1rtJ5/fjT/8Idr3Kf7gANi6amnRnXHHUcwGdAolFQAAAANLHnmmWid\nOTOaZ8+OpFJZ7T49e+8dSz//+ahMnjzC6YBGoqQCAABoQMnixVG+7LJoueqqSLq7V7tP3x57ROe0\nadH/lreMcDqgESmpAAAAGsny5VG+6qpo+epXo7BkyWp36X/d62LpF74QvXvvHZEkIxwQaFRKKgAA\ngEbQ1xcts2dHeebMKDz77Gp3qWy/fSw99dToOeCAiEJhhAMCjU5JBQAAMJbVatH8wx9G+fzzo/jk\nk6vdpTpxYiybOjW6Dj00orl5ZPMBvEBJBQAAMBalaTT94hdRPvfcKD3yyGp3qW20USw77rjoOuqo\nSNvaRjggQJaSCgAAYCxZvjyab7ghyldeGcVHH13tLmm5HMuPPjqWHXdcpBMmjHBAgNVTUgEAAIwB\nhaeeipZrronm73xnjRdET0ul6Dr88Fh20klR22KLEU4I8PKUVAAAAKNVmkbpnnuiZdasaPrpTyOp\n1Va/W5JEzwEHxNJTT43qDjuMbEaAtaSkAgAAGG16eqL5ppui5corozRnzhp3S4vF6Nlvv1h24olR\n2W23EQwIsO6UVAAAAKNE8swz0fLNb0bLt78dhfnz17hfbeONo+sjH4nlH/1o1LbeegQTAqw/JRUA\nAECdK/7hD1G+8spo+vGPI6lU1rhf/2tfG8uPOiq6DzwworV1BBMCbDglFQAAQD3q74+mW26J8qxZ\nUbr//jXuliZJ9L73vbH8qKOi7x3viEiSEQwJMHSUVAAAAHUkmT8/Wr71rWi57rooPPPMGverjRsX\nXYceGl1HHhnV7bcfwYQAw0NJBQAAUAeKDz8cLbNmRfMPfxhJb+8a96vstNPAKX0f/nCk7e0jmBBg\neCmpAAAA8tLdHU2/+EW0XHttNP32ty+7a8+73x1dRx8dve9+d0ShMDL5AEaQkgoAAGAk9fVF6de/\njuabbormn/40kmXL1rhrrbU1uj/84Vj+iU9E9dWvHsGQACNPSQUAERH9/ZEsXhzJkiUD9y88Lqx4\nvGxZRKUycKtWI+nvH3wclcrAJy2t2LbS45duG1y/8DhWfEJTc3NEc3OkLS0v3jc1ZdcrzaOlJdLm\n5lXvX7pvW1ukG2304m3cOP/6DpCHajVKd98dzTfdFE233hqFxYtfdvfKtttG15FHRtehh0a60UYj\nFBIgX0oqAMaO3t5IFi16sWhauWRaqXhauYgqrJgtX553+hGTjhsXtRWl1fjxq5RYmfVL9xk/fqAk\nA+CV1WpR/P3vo/nmm6P5xz+OwnPPveJTet/+9lh+1FHR+973RhSLIxASoH4oqQAYPZYti8JTT0Xh\nqaei+Pe/Dzxecf/UU1F4/vm8E44KydKlUVy6NOLpp9fr+ekLR2fVNtkk0s03j9rEiZFuttnA/eab\nR22zzSKdODFqm28e6WabDRwlBtAo0jSKf/zjwKl8N98chblzX/Ep1S22iJ4PfjC6Dj44KrvtNgIh\nAeqTkgqA+tHZGcWVi6e//33g9vTTA/cLF+adkIhIuroi6ep62Y9FX1ltwoSB8mrzzdd8P3Fi1Dbb\nLKKjY5jTAwyPwp//PFhMFf/611fcv7bxxtH9gQ9Ez/77R99b3uKoKYBQUgEwkvr6ovjYY1F48slV\nC6i//z0KS5bkFi0tFAaODnrhlo4fH7UJEwZPi6u9cJpbWioN/EWiVIp0xf0GzKJUikjTiL6+SF64\nRW/vwOP+/hcfv9y8ry+S3t6B+YrHK+bLl0ehszMKS5ZE0tkZhZe5OO9wKSxeHLF4cRQfe+wV903b\n2qK2+eZRmzQp0kmTorbVVgO3lR6nW2zhlEOgLhSeeCKab745mm66KUqPPPKK+9c6OqLn/e+PngMO\niN699vJnGcBLKKkAGB6dnVF6+OEoPvRQFOfMGbj95S8DRcowSQuFgaN2XiiXBgumCROyBdTKj1cU\nUR0djXFB8Wo1kqVLo9DZOXDNrqVLB+47OwdKrBX3q5u9cJ/UasMWL+nqiuLf/hbFv/1tjfukSRLp\nFltkiqvapEmRrlxmTZoU0dY2bDmBxpXMnRvNP/pRNN98c5QeeOAV90/L5ejZd9/oPuCA6H3PeyLK\n5RFICTA6KakA2DBpGskzz0Tx4Yej9NBDA6XUww9H8cknh/6tSqWobr11VLfd9sX7bbeN6jbbDNxv\nueXAkUmsWbEY6YQJUZ0wYf2en6aRLF8eyeLFUVywIArz50fh+ecHbgsWRHGlx4Xnn4/CwoVDXmol\naRrJvHlRmDcv4sEH17hfbcKEgSOvXnIkVm2bbaK27bZR23rriNbWIc0GjEG12sD3uDvvjKaf/zya\n7rnnFZ+SNjVF73veE9377x+9731vpO3tIxAUYPTzkzwAa69ajcLjj0dxzpwozZkzWEgV5s8fkpdP\nm5sHyqcVpdML95UX7mtbbOGaHXlLkkg7OiLt6IjaNtu88v7VahQWLXqxyJo/P4oriq358wdLruIL\nj5O+viGLWnjh0xvjZU7BqW2++UBpteK27baZ+3STTSKSZMgyAaNAmkbhiSeidNdd0XTnnVH6zW/W\n6pqIabEYfXvtFd377x8973tfpOv7jwEADUxJBcDqdXdH8ZFHXiyk5syJ4iOPRNLVtUEvW500KSq7\n7BKVlY+CWlFCTZzYGKfcNZJiMWqbbTZwUfRdd335fdN04FTEZ5+N4rx5UZw3LwrPPBPFlW6FefOi\nOISf4riiPFvTEVlpW1vUtt56oLR6SYFV23bbgdMKHb0Ho17y3HMvllJ33RXFp55a6+f2vvWt0bP/\n/tHzr/868GcdAOvNT1UADOjsjKZ77onSr38dpbvvjuL//m8k1ep6v1xaKETlVa+KyuTJ0b/bboO3\ndNNNhzA0Y0qSRDp+fFTHj4/qq1+95v36+qL47LOZAqswb96Lj595JorPPhtJpbLhkbq6ovjYY2u8\n6HtaKAxc4H1F0brddgMF1nbbDZZZTimEOtTZGU2/+93AKXx33RXFP/95nZ7e98Y3Rs/++0f3Bz4Q\nta22GqaQAI1HSQXQqHp7o/SHP0Tp178e+AH9gQfWu5RKy+UXi6jJk6Oy227R/9rX+ss5w6O5efB6\nZGu8DH+tNnBq4YrSasXtH/+Iwty5UXz66SjOm7dBRWxERFKrRTJ3bhTmzo3SffetPsoWW2SKq+qK\nAuuFW7hWDQy/DfyeVxs/Pvre9rbo3Wuv6N1776jusMPwZQVoYEoqgEZRrQ6curfidIZ7742ku3vd\nX2aTTQaOjlpxhNTkyVHdaSfXiqK+FApRmzhx4BTS3Xdf/T6VysARWHPnDtyefvrF+xduhfX4f2SV\nKM8+G4Vnn424//7Vbq9tuumqR2Btt91AmbXNNhHjx29wBmg4tdrA97w771yv73lpS0v07bFH9O61\nV/TttVf0v+ENTu0FGAH+pAUYq9I0Cn/964s/oN99dxQWLVqnl6hsv/2LR0a9UErVttzShaQZG0ql\nwQumr/aIrDSNZNGibIH10jJrCD40oLBgQRQWLFjjdbFqEyZkr4P1kmtkpZtv7lpuNLzkuecGrp04\nZ06UHnxwnb/npUkS/bvvHn177TVQTO2xh6OBAXKgpAIYQ5J586LprrsGr7FRmDt3nZ5fedWroved\n7xz4Af1tb/PJRDS2JIl0k02isskmUXn961e/T3d3FP/xjxePvpo7N4pPPRWlp54aOBJr3rxIarUN\nijH4KYVz5qx2e9rS8mJxtbqLvG+1VURLywZlgLpRq0XhyScHP122tOJTZufNW+eXqrzqVQOn773z\nnb7nAdQJJRXAaNbZGU133z14Cl/xL39Zp6dXJ00a+OF8r72i9x3vGPikMmDttbZGdeedo7rzzqvf\n3t8/cC2sF0qrwfsVj//xjw2/LlZvbxT/+tco/vWvq92eJkmkK66L9dJPJ9xmm6htvfXAX84dIUm9\n6e2N4v/+7/9n787jbKz7P46/r7PMPvatG7ctRFHkTqKQpO1Od0Wpm0I/tBdlKRWy3AopUWSLW7Zu\nWqVbm0pJkmRJ3Ckp+zb7OWfOuX5/jDnmMoMZZs51zpnX8/HwmOv6XNec8z7u+xHec13fK3iFlPPH\nH+XauFFGWtoZvZy/WrXjf+a1acOfeQAQhiipACDCGHv3Kuadd+ReulSuNWuKdJVGoGxZeS+7LHi1\nlL9ePf5hCpQkt1v+Y+tLFSjPuliu33+3llnHbik0fCddHr5QDNOUsWdPzpUma9cWeI4ZH6/AOeco\n8Je/KHDOOTL/8pfgdnBWpQprz6HEGEePyrlxY/AKKeeGDXJu3XpWT+kM/pl3rJTyn3suf+YBQJij\npAKACGAcPiz3u+8qZulSub74otDFlBkXl7Pw6+WXy3v55fJdcAH/yATCSd51sVq2zH88EJBj717r\nelh518f64w85UlLOOoaRmXnKq7EkyXQ6ZVardry4ylNiBUutatW4tRCnZBw9KsfOnXL89pucW7Yc\nv0rqt9/O6nXNmBj5zjvv+BqKzZrJ16QJf+YBQIShpAKAcJWaqpgPPpB7yRK5P/mkUD9NNh0O+S66\nKOdWhssvl/fii6W4uBCEBVAiHI6cIuicc+Rr0aLAU4yUlPwLuuf56ti7V4ZpnnUUw++X8ccfp13r\nLlCp0vGrrypXVqBKFZmVKilQubLMKlUUqFRJZpUqMsuXZ8H3aHPsYQOOnTvl+P3341+PbTt37pSR\nmnrWbxMoWzb4MI/s3K/nniu53cXwIQAAdqKkAoBwkpkp93//q5glS+ResUJGVtZpv8XXoMHxUqpV\nK5k8rh4oVcwyZZRdpoyyGzUq+ASvN2ddrJMUWY49e+TIyCi2PI4DB+Q4cEDasOHUuZ3O4+VV5coF\nf80ttSpXpoAIB6Yp4+DBnPIp99euXcECyrFr1xmvF3Uy2dWrW54wm92kifzVq3PbHgBEKUoqALCb\n1yv3p5/KvWSJYj74oFB/wfedf74yO3dW1o03nnytGwCQpJgY+WvVkr9WrYKPm2bO1Vh79sixe3dO\noXXsl2PPnuPbhw8XayzD75exd68ce/cW6vxA+fI5pVaVKjIrVpRZtmzOrzJljm8f2w/kmSspiULj\nVDIzZRw5kvPr6FE5jh49vn/kiBz79lmuijIyM0skhul0Kvvcc+W74ILjpVTjxjIrVCiR9wMAhCdK\nKgCwg98v15df5lwx9e67OY+XP43sevWUedNNyrzxRvnr1w9BSAClgmHILFtW2WXLSg0bnvy8zEw5\n9+w5Xmb9+WfOfp4yy7FvX5Ee5lAUjsOHpcOH5dy2rUjfZzocBRZZllne7YQEKSZGZkyMFBtr/RoT\nIzM2Vjq2bfvtiqYpZWdLHo+Mo0dzSqY8BVPe8sk4Vj458s6OHJHh8YQ2cmys/NWry1+zprJr1z5+\ny17DhlJ8fEizAADCDyUVAIRKICDnmjWKWbpUMW+/Lce+faf9luyaNZXVubMyO3dWduPGXA0AwD7x\n8fLXqSN/nTonPyc7W459+3Kuvtq7V479+4O3/zn275czz7ajGNYmKgwjEJBx5IhUiB8GFJXpducU\nWLlfTyi25HYHSy0zJibnqrXs7Jxiye+XsrML3j+2rexsGXm3TzxWQoXg2TDj4pRds6b8NWvKX6NG\nzq/c7Zo1FahUyf5yDwAQtiipAKAkmaacP/ygmCVLFLN06WkXHJYkf9WqyrzxRmXdeKN8zZtTTAGI\nHC5X8Ml/vtOdm5Ulx4EDch48mFNa5Sm0nCeUW45Dh4pl8ffiZvh8ks+n0vRf6UBi4kkLKH/NmgpU\nqMCfWwCAM0ZJBQAlISNDMYsWKW7aNDl/+um0pwfKl1fmDTcoq3NneVu25JHZAKJfXJwCNWooUKPG\n6c/1++U4dOh4mXXkiBwpKTm3t6WmykhJyVlLKSUlZ5779ehROUpoDaVoYbrdwTW8AuXK5WyXLatA\n2bIKlCsns3x5+WvUUPaxUsosX54SCgBQYiipAKAYGbt2KW76dMXMmXPadaYCycnKuvZaZXXuLE+b\nNjy5CgBOxulU4NgT/4rM5wuWVpZi6+hRa6GVW3RlZsrwenO+z+PJ2fZ6LV9zf4UD0+XKuYKtbFkF\njq2tVWDZlHv82LFA2bIyy5WTGR9P6QQACBuUVABwtkxTrtWrFfvqq3K///4p1wgx4+KUdfXVyuzc\nWZ727aW4uBAGBYBSyO2WWbGi/BUryl+cr2uaJy+vcsutPEWX4fXKdDgklyunWHI6c7ZzvxYwsxwv\nYCaHg4IJABBVKKkA4Ex5PIpZskSxU6fKtWHDSU8znU55OnRQ5k03ydOxo8zExBCGBACUCMPIWSQ9\nNlaSFH4rZgEAEHkoqQCgiIw9exQ7c6ZiX39djv37T3peoHx5Zdx5p9LvukuB6tVDmBAAAAAAIg8l\nFQAUknPdOsVOnaqYt97KeaLTSfgaNlT6Pfco8x//kBISQpgQAAAAACIXJRUAnIrPJ/c77yhu2jS5\nvv32pKeZhiFPx45Kv+ceeVu3Zo0QAAAAACgiSioAKIBx8KBiX39dsTNmyLF790nPCyQnK+P225XR\ns6f8tWuHLiAAAAAARBlKKgDIw7lpk2JffVUxb74pw+M56XnZdesqvVcvZXbtKjMpKYQJAQAAACA6\nUVIBgN8v9/Llip06Ve4vvzzlqZ62bZV+zz3ytG+f8+hvAAAAAECxoKQCUHqZptzvvaf4UaPk/Pnn\nk54WiI9XZteuyujVS9n164cwIAAAAACUHpRUAEol1+efK37ECLnWrTvpOdk1aiijZ09ldOsms1y5\nEKYDAAAAgNKHkgpAqeJct07xzz4r98qVJz3H06qVMnr3VtbVV0su/jMJAAAAAKHAv74AlAqOn39W\n/KhRinn33QKPmw6HMm++Wel9+ij7ggtCnA4AAAAAQEkFIKoZu3YpfuxYxcyfLyMQKPCcrGuvVeqg\nQcpu0CDE6QAAAAAAuSipAEQl48ABxU2YoNiZM2V4vQWe42ndWqlDhsjXvHmI0wEAAAAATkRJBSC6\npKYqbsoUxU2eLCMtrcBTvE2bKnXIEHmvuEIyjBAHBAAAAAAUhJIKQHTIylLsrFmKmzBBjoMHCzwl\nu149pQ4apKzrr6ecAgAAAIAwQ0kFILJlZytmwQLFjx0rxx9/FHiK/5xzlDpggDK7duVpfQAAAAAQ\npvjXGoDIZJpyv/uu4keNknPbtgJPCZQvr7SHHlL6XXdJcXEhDggAAAAAKApKKgARx/XZZ4ofOVKu\ndesKPB5ITFR6375K79tXZnJyiNMBAAAAAM4EJRWAiOFct07xzz4r98qVBR43Y2KU0aOH0h56SIFK\nlUKcDgAAAABwNiipAIQ948ABxT/1lGIXLizwuOlwKLNLF6UNGCB/jRohTgcAAAAAKA6UVADCl2kq\nZuFCxQ8dKsehQwWeknnddUobOFDZDRqEOBwAAAAAoDhRUgEIS44dO5TQv/9Jb+3ztGmj1CFD5GvW\nLMTJAAAAAAAlgZIKQHjx+RQ7ZYrix46VkZWV//B55yll2DB5r7jChnAAAAAAgJJCSQUgbDi/+04J\njzwi16ZN+Y6ZsbFK7d9f6f36SW63DekAAAAAACWJkgqA/VJTFT96tGKnTZNhmvkOe9q00dF//Uv+\nunVtCAcAAAAACAVKKgC2cn/4oRIee0yOP/7IdyxQvrxSnnlGmV26SIZhQzoAAAAAQKhQUgGwhbFn\njxKGDFHM228XeDzz5puVMmyYApUqhTgZAAAAAMAOlFQAQisQUMzcuYp/5hk5UlLyHc6uWVNHx46V\nt6HRuskAACAASURBVF270GcDAAAAANiGkgpAyDh+/lkJjz4q99df5ztmOp1K79NHaQMGyExIsCEd\nAAAAAMBOlFQASp7Ho7iJExX3wgsyvN58h71Nm+ro888ru0kTG8IBAAAAAMIBJRWAEuX6+mslPPKI\nnNu25TsWSEhQ6qBByujZU3LxnyMAAAAAKM34VyGAEmEcPar4YcMU+/rrBR7PuvJKpfzrX/LXqBHi\nZAAAAACAcERJBaB4mabc77yjhMGD5di7N99hf6VKSnn2WWXdeKNkGDYEBAAAAACEI0oqAMXG2LtX\nCY8+qpjlyws8nnHHHUp58kmZ5cuHOBkAAAAAINxRUgEoFq7PPlNi375y7N+f71h23bo6+vzz8rZq\nZUMyAAAAAEAkoKQCcHaysxU3dqziJkyQYZqWQ6bbrbT771faQw9JcXE2BQQAAAAARAJKKgBnzPjz\nTyX26SP3V1/lO+a9+GIdHTdO2Q0b2pAMAAAAABBpKKkAnBHXRx8p8d575Th40DI3DUNp/fsr7ZFH\nJKfTpnQAAAAAgEhDSQWgaHw+xY8erbgXX8x3yF+lio5Mnixv69Y2BAMAAAAARDJKKgCFZuzapaR7\n7pFrzZp8xzxXXKEjkyYpULmyDckAAAAAAJHOYXcAAJHBvXy5yrRtm6+gChiGDvbvr0NvvEFBBQAA\nAAA4Y1xJBeDUvF7FjxihuClT8h0KnHOOFnburL/de68SHXTeAAAAAIAzx78qAZyUY+dOJV93XYEF\nle+qq5SycqV21a1rQzIAAAAAQLShpAJQIPd77ym5bVu51q2zzE2nUxnDhiltwQKZlSrZlA4AAAAA\nEG243Q+Alcej+GeeUdy0afkOBapXV9r06fK3bGlDMAAAAABANKOkAhDk2LFDib17y7V+fb5j3muu\nUcbLL8usUMGGZAAAAACAaMftfgAkSe633lKZdu3yFVSmy6WMkSOVPm8eBRUAAAAAoMRwJRVQ2mVl\nKX7oUMXNnJnvkP+vf1X6jBnyX3yxDcEAAAAAAKUJJRVQijm2b1dir15ybdyY75j3hhuUMWmSzLJl\nbUgGAAAAAChtuN0PKKXcb76pMldema+gMmNilPGvfyn99dcpqAAAAAAAIcOVVEBp4/EoYdAgxc6Z\nk++Qv3Ztpc+cKf9FF9kQDAAAAABQmlFSAaWIceiQErt3l/vrr/Md8950k9InTpTKlLEhGQAAAACg\ntKOkAkoJx44dSrrtNjm3b7fMzdhYZYweLe/dd0uGYU84AAAAAECpR0kFlALONWuUdOedchw8aJn7\n69ZV+qxZ8jdpYlMyAAAAAABysHA6EOXcb72l5M6d8xVUvlatlLpiBQUVAAAAACAsUFIB0co0FfvS\nS0rq1UuGx2M55Ln1VqUtWSKzfHmbwgEAAAAAYMXtfkA0ys5WwsCBip09O9+hzMceU9aQIaw/BQAA\nAAAIK5RUQLRJTVVSr15yf/yxZWy6XMp44QV577zTpmAAAAAAAJwcJRUQRYw//lBSt25ybdxomZvJ\nyUqbM0fZbdvalAwAAAAAgFOjpAKihPPHH5V0++1y7N5tmftr1FDawoUKNGpkUzIAAAAAAE6PhdOB\nKOBasULJ11+fr6DKbtZMqStWUFABAAAAAMIeJRUQ4WJmz1bSHXfISEuzzL3XXqvUd96RWbWqTckA\nAAAAACg8SiogUgUCih82TIn9+8vw+y2Hsvr0UfqcOVJiok3hAAAAAAAoGtakAiJRZqYS77tPMW+/\nbRmbhqHMUaPk6dfPpmAAAAAAAJwZSiogwhgHDijpzjvl+vZby9yMj1f6a6/Jd911NiUDAAAAAODM\nUVIBEcSxbZuSbrtNzl9/tcwDVaoo7Y035G/e3J5gAAAAAACcJUoqIEK4vvpKif/8pxxHjljm/oYN\nlbZwoQJ//atNyQAAAAAAOHssnA5EAPebbyrp5pvzFVS+K65Q6vLlFFQAAAAAgIhHSQWEM9NU3Lhx\nSurTR4bXaznk6dZNaYsWySxb1qZwAAAAAAAUH273A8KVz6eE/v0VO29evkOZQ4Yo67HHJMOwIRgA\nAAAAAMWPkgoIR+npSureXe7PPrOMTbdbGZMmydu1qz25AAAAAAAoIZRUQLhJT1fS7bfLvWqVZRwo\nV07pc+cqu3Vrm4IBAAAAAFByKKmAcJKWllNQffWVZeyvVSvnCX4NGtgUDAAAAACAkkVJBYSL1FQl\n3Xab3KtXW8bZTZoo7c03ZVaubFMwAAAAAABKHiUVEA5SU5Xctatc33xjGWdfeKHSliyRWb68TcEA\nAAAAAAgNh90BgFIvJUXJXbrkL6guukhpS5dSUAEAAAAASgWupALslJKi5FtvlWvtWss4u3lzpf3n\nPzLLlrUpGAAAAAAAoUVJBdglJUXJt9wi13ffWcYUVAAAAACA0oiSCrCBcfSokm65Ra516yzz7Isv\nVup//iOVKWNTMgAAAAAA7MGaVECIGUeOKOnmm/MXVC1aUFABAAAAAEotSioghIIF1fffW+bZf/ub\nUt98k4IKAAAAAFBqUVIBIWIcPqykf/xDrvXrLfPsli0pqAAAAAAApR5rUgEhECyoNmywzH2XXqq0\nhQul5GSbkgEAAAAAEB64kgooYcahQ0q66ab8BVWrVkpbtIiCCgAAAAAAUVIBJco4eDCnoPrxR8vc\n17p1zhVUSUk2JQMAAAAAILxwux9QQowDB3IKqs2bLXNfmzZKmz9fSky0KRkAAAAAAOGHK6mAEmDs\n36/kzp3zF1RXXKG0BQsoqAAAAAAAOAElFVDMcgsq55YtlrmvbVulvfGGlJBgUzIAAAAAAMIXJRVQ\njIx9+5R8441y/vSTZe5r146CCgAAAACAU6CkAoqJsXdvTkG1datl7mvfXmnz5knx8TYlAwAAAAAg\n/FFSAcXA2LMnp6D6+WfL3NehAwUVAAAAAACFQEkFnCVjz56cNai2bbPMfVddpbS5c6W4OJuSAQAA\nAAAQOSipgLNg7N6dcwXVCQWV9+qrKagAAAAAACgCSirgDBmHDin5ppvk3L7dMvd26qT011+XYmNt\nSgYAAAAAQOShpALORGamkrp1y38F1bXXKn32bAoqAAAAAACKiJIKKCq/X4l9+sj17beWsfe665Q+\naxYFFQAAAAAAZ4CSCigK01T8kCGKef99y9jXpo3SZ8yQYmJsCgYAAAAAQGSjpAKKIPallxQ3fbpl\n5m/USOlz53IFFQAAAAAAZ4GSCiikmMWLlTB8uGUWOOccpS5cKLNsWZtSAQAAAAAQHSipgEJwrVyp\nhAcesMzM5GSlLl4ss0YNm1IBAAAAABA9KKmA03Bu2qSkHj1k+HzBmRkTo7R//1uBxo1tTAYAAAAA\nQPSgpAJOwdi1S0ldu8pITbXM0ydPVvbll9uUCgAAAACA6ENJBZyEceSIkrt0kWP3bss8Y/hw+W65\nxaZUAAAAAABEJ0oqoCBZWUr85z/l3LrVOu7TR54T1qYCAAAAAABnj5IKOFEgoMT77pP7q68sY+/f\n/67MUaMkw7ApGAAAAAAA0YuSCjhB/FNPKeattywz36WXKn3qVMnptCkVAAAAAADRjZIKyCN2yhTF\nvfKKZeZv0EDp8+ZJcXE2pQIAAAAAIPpRUgHHuJcuVcLQoZZZoFo1pS1eLLN8eZtSAQAAAABQOlBS\nAZJcq1Yp8d57LTMzKUlpCxcqULOmTakAAAAAACg9KKlQ6jm2bFHiP/8pw+sNzkyXS2mvvy5/kyY2\nJgMAlEbjxo1Tu3btVL16dVWvXl39+/e3OxIAAEBIUFKhVDP+/FPJXbrIcfSoZZ4xaZKy27e3KRUA\noDR77LHH9Nlnn+nSSy+VpOBXAACAaEdJhdIrJUVJXbvK8eeflnHmU0/Je9ttNoUCACDH1q1bZRgG\nJRUAACg1KKlQOnm9SurRQ67Nmy3jrF69lPXIIzaFAgAgx7Zt23T48GFVq1ZNf/3rX+2OAwAAEBKU\nVCh9AgElPPCA3J9/bhl7r7tOmWPHSoZhUzAAAHKsWbNGktSyZUubkwAAAIQOJRVKnfgRIxT75puW\nWXaLFkqfNk1yOm1KBQDAcbklFbf6AQCA0oSSCqVK7GuvKe6llywzf716Sps/X0pIsCkVAABWa9as\nYT0qAABQ6rjsDgCEivvddxU/eLBlFqhcWWmLF8usWNGmVAAAWO3du1c7d+5UxYoV5XQ61bdvX/35\n5586evSorrzySg0ePFhxcXF2xwQAACh2lFQoFZyrVyuxb18ZphmcmYmJSlu4UIHate0LBgDACb75\n5htJUmxsrAYNGqSxY8eqbt262r9/v9q3b6+dO3dq5syZNqcEAAAoftzuh6jn+PlnJd15p4ysrODM\ndDqVNnOm/BddZGMyAEBps3DhQrVp00b16tXTVVddpVmzZsnM8wMU6fh6VGXLltWsWbNUt25dSVLl\nypV1zTXX6MMPP9R3330X8uwAAAAljZIKUc04elRJd9whx+HDlnnGxInK7tjRplQAgNJo0qRJ6t+/\nv5o2bar169dr5MiRWrRokXr27KlAIBA8L7ekev7555WUlGR5jQoVKkiSPv3009AFBwAACBFKKkSv\nQEAJ994r5y+/WMaZgwfLe+edNoUCAJRG3333ncaOHauEhASNGjVKycnJ+uqrr7Rjxw6tWLFCCxcu\nlCSlpaVpy5YtKlu2rJo1a5bvdQ4ePChJOnDgQEjzAwAAhAIlFaJW3Pjxilm+3DLz3HGHsh5/3KZE\nAIDSyOfzacCAATJNU//4xz9Uvnx57dixQ+PHj1dqaqqk41dGrV27VoFAQC1atCjwtX766SdJUpky\nZUITHgAAIIQoqRCVXCtWKO5f/7LMsps3V8a4cZJh2JQKAFAaLVmyRNu2bZNhGLr11lslSX6/33KO\ny5XzLJvvv/9ektSyZct8r5OVlaXNmzdLkho3blySkQEAAGxBSYWo4/j1VyX26WN5kl+gYkWlzZ4t\n8chuAEAImaapKVOmSJKqV6+uSy65RJJ07rnn6uGHH1ZycrIaNWqk/v37S5J27NghSWrevHm+11q9\nerW8Xq9iY2PVtm3bEH0CAACA0HHZHQAoVhkZSuzRQ46jR4Mj0+FQ+owZMmvUsDEYAKA0WrlypbZv\n3y5J6tChg+XYwIEDNXDgQMssd62pBg0a5HutDz74QJL097//XeXLly+JuAAAALbiSipED9NUQv/+\ncm3caBlnPv20sq+4wqZQAIDSbMGCBcHtE0uqgpxzzjmSpLJly1rmKSkpeuutt5SYmKjHWVsRAABE\nKUoqRI3Y6dMVu2iRZea98UZ5HnzQpkQAgNIsNTVV//3vfyVJMTExuuyyy077Pa1bt5Yk7dy50zIf\nMWKE0tLSNHr0aNXgymAAABClKKkQFZyrVyv+ySctM3+DBkqfNImF0gEAtvjoo4/k8XgkSU2bNlV8\nfPxpv6dz586qV6+eXnvtNUlSIBDQ888/r8WLF2v06NHBhdcBAACiEWtSIeIZe/YoqWdPGdnZwZmZ\nlKS0uXOl5GQbkwEASrPcq6gkFeoqKklyOp164403NGTIEHXo0EEOh0P16tXTsmXLdP7555dUVAAA\ngLBASYXI5vUqqWdPOfbutYzTX3lFgfr1bQoFACjtTNPU559/HtzPfapfYdSoUUNz584tiVgAAABh\njdv9ENHin35arm++scwy+/eX7/rrbUoEAIC0ceNGHTlyRJLkcDh08cUX25wIAAAg/FFSIWLFLFqk\nuGnTLDNf+/bKGjLEpkQAAOT44osvgtt16tRRmTJlbEwDAAAQGSipEJGcP/6ohEcftcz8NWsq/bXX\nJKfTplQAAOT48ssvg9sXXnihjUkAAAAiByUVIo5x+LASe/SQkZkZnJlxcUqfM0dmhQo2JgMAQPJ6\nvfomz63oTZs2tTENAABA5KCkQmTx+5XYp4+cv/1mGWeMHy8/P6kGAISBdevWKSsrK7hPSQUAAFA4\nlFSIKHFjx8r98ceWWVavXvJ262ZTIgAArFatWhXcdjgcuuCCC2xMAwAAEDkoqRAx3MuXK37cOMss\nu0ULZY4ebVMiAADy+/rrr4PbtWrVUmJioo1pAAAAIgclFSKC43//U2LfvpZZoHJlpc2eLcXE2BMK\nAIATeL1erVu3LrjfpEkTG9MAAABEFkoqhL+0NCX16CEjNTU4Mp1Opc+aJfMvf7ExGAAAVt9//708\nHk9wn5IKAACg8CipEN5MU4kPPyznli2WceaIEcq+7DKbQgEAULC8T/WTKKkAAACKgpIKYS32lVcU\ns3SpZea95RZ5+vWzKREAACe3evXq4LZhGDr//PNtTAMAABBZKKkQtlxffqn4Z56xzLIbN1b6xImS\nYdiUCgCAgvn9fq1duza4X7VqVVWoUMHGRAAAAJGFkgphyfjjDyX27i3D7w/OAmXKKH3OHImnJAEA\nwtDGjRuVnp4e3G/cuLGNaQAAACIPJRXCj8ejpLvvlmP/fss4Y+pUBerWtSkUAACn9u2331r2zzvv\nPJuSAAAARCZKKoSdhCeekOu77yyzzIED5evUyaZEAACc3po1ayz7jRo1sikJAABAZKKkQliJmTdP\nsbNmWWa+jh2VNXCgTYkAACic7074AQtXUgEAABQNJRXChnP9eiU89phl5q9dW+lTp0oO/q8KAAhf\nu3bt0p49e4L7LpdL5557ro2JwsfWrVt16aWXavv27SF7z0ceeUTDhw8P2fsBAIDiwb/8ERaMgweV\n2KOHDI8nODPj45U+d67McuVsTAYAwOmdeKtf7dq1FRMTY1Oa8LFmzRrdfPPNuv/++0Na2o0YMUKf\nf/65Bg4cKNM0S/S9AoGADh8+rB07duj777/Xp59+qszMzBJ9TwAAopXL7gCATFMJDz4o565dlnHG\nxInyn3++TaEAACi8aL/Vz+PxaMaMGVq4cKF+//13Va5cWddff70GDBigxJM8dffnn39W9+7d1bNn\nT3Xv3j2kecuUKaN58+apU6dO8ng8evHFF0vkfa677jr9+OOPCgQClvk333yjGjVqlMh7AgAQzbiS\nCraLef11xSxfbpll9e0rb5cuNiUCAKBoTnyyXzQtmp6amqquXbtq1KhR6tKli7799ls9+OCDmj17\n9knLp0OHDunuu+9WgwYNNGjQoBAnzlGtWjVNmDBBb775pl5//fUSeY9bbrlFvXv3tlwlZhhGibwX\nAAClASUVbOXYvl0JQ4daZtktWihzxAibEgEAUDQZGRnasmWLZRZNV1INGjRIa9euVfv27fXAAw9o\n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\nACFkA6eYdyQ3AAAAAElFTkSuQmCC\n", | |
428 | "text": [ |
|
450 | "text": [ | |
429 |
"<matplotlib.figure.Figure at 0x1 |
|
451 | "<matplotlib.figure.Figure at 0x1078d7e10>" | |
430 | ] |
|
452 | ] | |
431 | } |
|
453 | } | |
432 | ], |
|
454 | ], | |
@@ -436,4 +458,4 b'' | |||||
436 | "metadata": {} |
|
458 | "metadata": {} | |
437 | } |
|
459 | } | |
438 | ] |
|
460 | ] | |
439 | } |
|
461 | } No newline at end of file |
@@ -141,7 +141,7 b'' | |||||
141 | "cell_type": "code", |
|
141 | "cell_type": "code", | |
142 | "collapsed": false, |
|
142 | "collapsed": false, | |
143 | "input": [ |
|
143 | "input": [ | |
144 |
"%load http://matplotlib. |
|
144 | "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py" | |
145 | ], |
|
145 | ], | |
146 | "language": "python", |
|
146 | "language": "python", | |
147 | "metadata": {}, |
|
147 | "metadata": {}, | |
@@ -152,50 +152,72 b'' | |||||
152 | "cell_type": "code", |
|
152 | "cell_type": "code", | |
153 | "collapsed": false, |
|
153 | "collapsed": false, | |
154 | "input": [ |
|
154 | "input": [ | |
155 | "#!/usr/bin/env python\n", |
|
155 | "\"\"\"\n", | |
|
156 | "Plot demonstrating the integral as the area under a curve.\n", | |||
156 | "\n", |
|
157 | "\n", | |
157 | "# implement the example graphs/integral from pyx\n", |
|
158 | "Although this is a simple example, it demonstrates some important tweaks:\n", | |
158 | "from pylab import *\n", |
|
159 | "\n", | |
|
160 | " * A simple line plot with custom color and line width.\n", | |||
|
161 | " * A shaded region created using a Polygon patch.\n", | |||
|
162 | " * A text label with mathtext rendering.\n", | |||
|
163 | " * figtext calls to label the x- and y-axes.\n", | |||
|
164 | " * Use of axis spines to hide the top and right spines.\n", | |||
|
165 | " * Custom tick placement and labels.\n", | |||
|
166 | "\"\"\"\n", | |||
|
167 | "import numpy as np\n", | |||
|
168 | "import matplotlib.pyplot as plt\n", | |||
159 | "from matplotlib.patches import Polygon\n", |
|
169 | "from matplotlib.patches import Polygon\n", | |
160 | "\n", |
|
170 | "\n", | |
|
171 | "\n", | |||
161 | "def func(x):\n", |
|
172 | "def func(x):\n", | |
162 | " return (x-3)*(x-5)*(x-7)+85\n", |
|
173 | " return (x - 3) * (x - 5) * (x - 7) + 85\n", | |
163 | "\n", |
|
174 | "\n", | |
164 | "ax = subplot(111)\n", |
|
|||
165 | "\n", |
|
175 | "\n", | |
166 |
"a, b = 2, 9 # integral |
|
176 | "a, b = 2, 9 # integral limits\n", | |
167 |
"x = |
|
177 | "x = np.linspace(0, 10)\n", | |
168 | "y = func(x)\n", |
|
178 | "y = func(x)\n", | |
169 | "plot(x, y, linewidth=1)\n", |
|
|||
170 | "\n", |
|
179 | "\n", | |
171 | "# make the shaded region\n", |
|
180 | "fig, ax = plt.subplots()\n", | |
172 | "ix = arange(a, b, 0.01)\n", |
|
181 | "plt.plot(x, y, 'r', linewidth=2)\n", | |
|
182 | "plt.ylim(ymin=0)\n", | |||
|
183 | "\n", | |||
|
184 | "# Make the shaded region\n", | |||
|
185 | "ix = np.linspace(a, b)\n", | |||
173 | "iy = func(ix)\n", |
|
186 | "iy = func(ix)\n", | |
174 | "verts = [(a,0)] + list(zip(ix,iy)) + [(b,0)]\n", |
|
187 | "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", | |
175 |
"poly = Polygon(verts, facecolor='0. |
|
188 | "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", | |
176 | "ax.add_patch(poly)\n", |
|
189 | "ax.add_patch(poly)\n", | |
177 | "\n", |
|
190 | "\n", | |
178 | "text(0.5 * (a + b), 30,\n", |
|
191 | "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", | |
179 |
" |
|
192 | " horizontalalignment='center', fontsize=20)\n", | |
180 | " fontsize=20)\n", |
|
|||
181 | "\n", |
|
193 | "\n", | |
182 | "axis([0,10, 0, 180])\n", |
|
194 | "plt.figtext(0.9, 0.05, '$x$')\n", | |
183 |
"figtext(0. |
|
195 | "plt.figtext(0.1, 0.9, '$y$')\n", | |
184 | "figtext(0.1, 0.9, 'y')\n", |
|
196 | "\n", | |
185 | "ax.set_xticks((a,b))\n", |
|
197 | "ax.spines['right'].set_visible(False)\n", | |
186 | "ax.set_xticklabels(('a','b'))\n", |
|
198 | "ax.spines['top'].set_visible(False)\n", | |
|
199 | "ax.xaxis.set_ticks_position('bottom')\n", | |||
|
200 | "\n", | |||
|
201 | "ax.set_xticks((a, b))\n", | |||
|
202 | "ax.set_xticklabels(('$a$', '$b$'))\n", | |||
187 | "ax.set_yticks([])\n", |
|
203 | "ax.set_yticks([])\n", | |
188 |
" |
|
204 | "\n", | |
|
205 | "plt.show()\n" | |||
189 | ], |
|
206 | ], | |
190 | "language": "python", |
|
207 | "language": "python", | |
191 | "metadata": {}, |
|
208 | "metadata": {}, | |
192 | "outputs": [ |
|
209 | "outputs": [ | |
193 | { |
|
210 | { | |
194 |
"metadata": { |
|
211 | "metadata": { | |
|
212 | "png": { | |||
|
213 | "height": 401, | |||
|
214 | "width": 596 | |||
|
215 | } | |||
|
216 | }, | |||
195 | "output_type": "display_data", |
|
217 | "output_type": "display_data", | |
196 | "png": "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\nAAAAQvD/AKh2fy0Nfo/2AAAAAElFTkSuQmCC\n", |
|
218 | "png": "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\nu0ULZY4ebVMiAADy+/rrr4PbtWrVUmJioo1pAAAAIgclFSKC43//U2LfvpZZoHJlpc2eLcXE2BMK\nAIATeL1erVu3LrjfpEkTG9MAAABEFkoqhL+0NCX16CEjNTU4Mp1Opc+aJfMvf7ExGAAAVt9//708\nHk9wn5IKAACg8CipEN5MU4kPPyznli2WceaIEcq+7DKbQgEAULC8T/WTKKkAAACKgpIKYS32lVcU\ns3SpZea95RZ5+vWzKREAACe3evXq4LZhGDr//PNtTAMAABBZKKkQtlxffqn4Z56xzLIbN1b6xImS\nYdiUCgCAgvn9fq1duza4X7VqVVWoUMHGRAAAAJGFkgphyfjjDyX27i3D7w/OAmXKKH3OHImnJAEA\nwtDGjRuVnp4e3G/cuLGNaQAAACIPJRXCj8ejpLvvlmP/fss4Y+pUBerWtSkUAACn9u2331r2zzvv\nPJuSAAAARCZKKoSdhCeekOu77yyzzIED5evUyaZEAACc3po1ayz7jRo1sikJAABAZKKkQliJmTdP\nsbNmWWa+jh2VNXCgTYkAACic7074AQtXUgEAABQNJRXChnP9eiU89phl5q9dW+lTp0oO/q8KAAhf\nu3bt0p49e4L7LpdL5557ro2JwsfWrVt16aWXavv27SF7z0ceeUTDhw8P2fsBAIDiwb/8ERaMgweV\n2KOHDI8nODPj45U+d67McuVsTAYAwOmdeKtf7dq1FRMTY1Oa8LFmzRrdfPPNuv/++0Na2o0YMUKf\nf/65Bg4cKNM0S/S9AoGADh8+rB07duj777/Xp59+qszMzBJ9TwAAopXL7gCATFMJDz4o565dlnHG\nxInyn3++TaEAACi8aL/Vz+PxaMaMGVq4cKF+//13Va5cWddff70GDBigxJM8dffnn39W9+7d1bNn\nT3Xv3j2kecuUKaN58+apU6dO8ng8evHFF0vkfa677jr9+OOPCgQClvk333yjGjVqlMh7AgAQzbiS\nCraLef11xSxfbpll9e0rb5cuNiUCAKBoTnyyXzQtmp6amqquXbtq1KhR6tKli7799ls9+OCDmj17\n9knLp0OHDunuu+9WgwYNNGjQoBAnzlGtWjVNmDBBb775pl5//fUSeY9bbrlFvXv3tlwlZhhGibwX\nAAClASUVbOXYvl0JQ4daZtktWihzxAibEgEAUDQZGRnasmWLZRZNV1INGjRIa9euVfv27fXAAw9o\n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\nACFkA6eYdyQ3AAAAAElFTkSuQmCC\n", | |
197 | "text": [ |
|
219 | "text": [ | |
198 |
"<matplotlib.figure.Figure at 0x106 |
|
220 | "<matplotlib.figure.Figure at 0x106ef1190>" | |
199 | ] |
|
221 | ] | |
200 | } |
|
222 | } | |
201 | ], |
|
223 | ], |
@@ -323,7 +323,7 b'' | |||||
323 | "cell_type": "markdown", |
|
323 | "cell_type": "markdown", | |
324 | "metadata": {}, |
|
324 | "metadata": {}, | |
325 | "source": [ |
|
325 | "source": [ | |
326 |
"R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files |
|
326 | "R's console (i.e. its stdout() connection) is captured by ipython, as are any plots which are published as PNG files, as with `%matplotlib inline`. As a call to %R may produce a return value (see above) we must ask what happens to a magic like the one below. The R code specifies that something is published to the notebook. If anything is published to the notebook, that call to %R returns None." | |
327 | ] |
|
327 | ] | |
328 | }, |
|
328 | }, | |
329 | { |
|
329 | { |
@@ -1,6 +1,7 b'' | |||||
1 | { |
|
1 | { | |
2 | "metadata": { |
|
2 | "metadata": { | |
3 | "name": "Parallel MC Options" |
|
3 | "name": "", | |
|
4 | "signature": "sha256:1b19dedc6473d4e886e549020c6710f2d14c17296168a02e7e7fa9673912b893" | |||
4 | }, |
|
5 | }, | |
5 | "nbformat": 3, |
|
6 | "nbformat": 3, | |
6 | "nbformat_minor": 0, |
|
7 | "nbformat_minor": 0, | |
@@ -34,22 +35,13 b'' | |||||
34 | "cell_type": "code", |
|
35 | "cell_type": "code", | |
35 | "collapsed": false, |
|
36 | "collapsed": false, | |
36 | "input": [ |
|
37 | "input": [ | |
37 |
"% |
|
38 | "%matplotlib inline\n", | |
|
39 | "import matplotlib.pyplot as plt" | |||
38 | ], |
|
40 | ], | |
39 | "language": "python", |
|
41 | "language": "python", | |
40 | "metadata": {}, |
|
42 | "metadata": {}, | |
41 | "outputs": [ |
|
43 | "outputs": [], | |
42 | { |
|
44 | "prompt_number": 1 | |
43 | "output_type": "stream", |
|
|||
44 | "stream": "stdout", |
|
|||
45 | "text": [ |
|
|||
46 | "\n", |
|
|||
47 | "Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.kernel.zmq.pylab.backend_inline].\n", |
|
|||
48 | "For more information, type 'help(pylab)'.\n" |
|
|||
49 | ] |
|
|||
50 | } |
|
|||
51 | ], |
|
|||
52 | "prompt_number": 4 |
|
|||
53 | }, |
|
45 | }, | |
54 | { |
|
46 | { | |
55 | "cell_type": "code", |
|
47 | "cell_type": "code", | |
@@ -63,7 +55,7 b'' | |||||
63 | "language": "python", |
|
55 | "language": "python", | |
64 | "metadata": {}, |
|
56 | "metadata": {}, | |
65 | "outputs": [], |
|
57 | "outputs": [], | |
66 |
"prompt_number": |
|
58 | "prompt_number": 2 | |
67 | }, |
|
59 | }, | |
68 | { |
|
60 | { | |
69 | "cell_type": "markdown", |
|
61 | "cell_type": "markdown", | |
@@ -90,7 +82,7 b'' | |||||
90 | "language": "python", |
|
82 | "language": "python", | |
91 | "metadata": {}, |
|
83 | "metadata": {}, | |
92 | "outputs": [], |
|
84 | "outputs": [], | |
93 |
"prompt_number": |
|
85 | "prompt_number": 3 | |
94 | }, |
|
86 | }, | |
95 | { |
|
87 | { | |
96 | "cell_type": "code", |
|
88 | "cell_type": "code", | |
@@ -102,7 +94,7 b'' | |||||
102 | "language": "python", |
|
94 | "language": "python", | |
103 | "metadata": {}, |
|
95 | "metadata": {}, | |
104 | "outputs": [], |
|
96 | "outputs": [], | |
105 |
"prompt_number": |
|
97 | "prompt_number": 4 | |
106 | }, |
|
98 | }, | |
107 | { |
|
99 | { | |
108 | "cell_type": "code", |
|
100 | "cell_type": "code", | |
@@ -123,7 +115,7 b'' | |||||
123 | ] |
|
115 | ] | |
124 | } |
|
116 | } | |
125 | ], |
|
117 | ], | |
126 |
"prompt_number": |
|
118 | "prompt_number": 5 | |
127 | }, |
|
119 | }, | |
128 | { |
|
120 | { | |
129 | "cell_type": "heading", |
|
121 | "cell_type": "heading", | |
@@ -191,7 +183,7 b'' | |||||
191 | "language": "python", |
|
183 | "language": "python", | |
192 | "metadata": {}, |
|
184 | "metadata": {}, | |
193 | "outputs": [], |
|
185 | "outputs": [], | |
194 |
"prompt_number": |
|
186 | "prompt_number": 6 | |
195 | }, |
|
187 | }, | |
196 | { |
|
188 | { | |
197 | "cell_type": "markdown", |
|
189 | "cell_type": "markdown", | |
@@ -213,12 +205,12 b'' | |||||
213 | "output_type": "stream", |
|
205 | "output_type": "stream", | |
214 | "stream": "stdout", |
|
206 | "stream": "stdout", | |
215 | "text": [ |
|
207 | "text": [ | |
216 | "(12.217720657772686, 7.4170971244322672, 6.8120985432589185, 4.3727039632512152)\n", |
|
208 | "(12.478072469211625, 7.5692079226372924, 6.9498346596114704, 4.5592719279729934)\n", | |
217 |
"1 loops, best of 1: |
|
209 | "1 loops, best of 1: 111 ms per loop\n" | |
218 | ] |
|
210 | ] | |
219 | } |
|
211 | } | |
220 | ], |
|
212 | ], | |
221 |
"prompt_number": |
|
213 | "prompt_number": 7 | |
222 | }, |
|
214 | }, | |
223 | { |
|
215 | { | |
224 | "cell_type": "markdown", |
|
216 | "cell_type": "markdown", | |
@@ -238,12 +230,12 b'' | |||||
238 | "cell_type": "code", |
|
230 | "cell_type": "code", | |
239 | "collapsed": true, |
|
231 | "collapsed": true, | |
240 | "input": [ |
|
232 | "input": [ | |
241 |
"c = Client( |
|
233 | "rc = Client()" | |
242 | ], |
|
234 | ], | |
243 | "language": "python", |
|
235 | "language": "python", | |
244 | "metadata": {}, |
|
236 | "metadata": {}, | |
245 | "outputs": [], |
|
237 | "outputs": [], | |
246 |
"prompt_number": |
|
238 | "prompt_number": 8 | |
247 | }, |
|
239 | }, | |
248 | { |
|
240 | { | |
249 | "cell_type": "markdown", |
|
241 | "cell_type": "markdown", | |
@@ -257,12 +249,12 b'' | |||||
257 | "cell_type": "code", |
|
249 | "cell_type": "code", | |
258 | "collapsed": true, |
|
250 | "collapsed": true, | |
259 | "input": [ |
|
251 | "input": [ | |
260 | "view = c.load_balanced_view()" |
|
252 | "view = rc.load_balanced_view()" | |
261 | ], |
|
253 | ], | |
262 | "language": "python", |
|
254 | "language": "python", | |
263 | "metadata": {}, |
|
255 | "metadata": {}, | |
264 | "outputs": [], |
|
256 | "outputs": [], | |
265 |
"prompt_number": |
|
257 | "prompt_number": 9 | |
266 | }, |
|
258 | }, | |
267 | { |
|
259 | { | |
268 | "cell_type": "markdown", |
|
260 | "cell_type": "markdown", | |
@@ -273,18 +265,28 b'' | |||||
273 | }, |
|
265 | }, | |
274 | { |
|
266 | { | |
275 | "cell_type": "code", |
|
267 | "cell_type": "code", | |
|
268 | "collapsed": false, | |||
|
269 | "input": [ | |||
|
270 | "async_results = []" | |||
|
271 | ], | |||
|
272 | "language": "python", | |||
|
273 | "metadata": {}, | |||
|
274 | "outputs": [], | |||
|
275 | "prompt_number": 16 | |||
|
276 | }, | |||
|
277 | { | |||
|
278 | "cell_type": "code", | |||
276 | "collapsed": true, |
|
279 | "collapsed": true, | |
277 | "input": [ |
|
280 | "input": [ | |
278 | "%%timeit -n1 -r1\n", |
|
281 | "%%timeit -n1 -r1\n", | |
279 | "\n", |
|
282 | "\n", | |
280 | "async_results = []\n", |
|
|||
281 | "for strike in strike_vals:\n", |
|
283 | "for strike in strike_vals:\n", | |
282 | " for sigma in sigma_vals:\n", |
|
284 | " for sigma in sigma_vals:\n", | |
283 | " # This line submits the tasks for parallel computation.\n", |
|
285 | " # This line submits the tasks for parallel computation.\n", | |
284 | " ar = view.apply_async(price_option, price, strike, sigma, rate, days, paths)\n", |
|
286 | " ar = view.apply_async(price_option, price, strike, sigma, rate, days, paths)\n", | |
285 | " async_results.append(ar)\n", |
|
287 | " async_results.append(ar)\n", | |
286 | "\n", |
|
288 | "\n", | |
287 | "c.wait(async_results) # Wait until all tasks are done." |
|
289 | "rc.wait(async_results) # Wait until all tasks are done." | |
288 | ], |
|
290 | ], | |
289 | "language": "python", |
|
291 | "language": "python", | |
290 | "metadata": {}, |
|
292 | "metadata": {}, | |
@@ -293,11 +295,11 b'' | |||||
293 | "output_type": "stream", |
|
295 | "output_type": "stream", | |
294 | "stream": "stdout", |
|
296 | "stream": "stdout", | |
295 | "text": [ |
|
297 | "text": [ | |
296 |
"1 loops, best of 1: |
|
298 | "1 loops, best of 1: 810 ms per loop\n" | |
297 | ] |
|
299 | ] | |
298 | } |
|
300 | } | |
299 | ], |
|
301 | ], | |
300 |
"prompt_number": 1 |
|
302 | "prompt_number": 17 | |
301 | }, |
|
303 | }, | |
302 | { |
|
304 | { | |
303 | "cell_type": "code", |
|
305 | "cell_type": "code", | |
@@ -309,6 +311,7 b'' | |||||
309 | "metadata": {}, |
|
311 | "metadata": {}, | |
310 | "outputs": [ |
|
312 | "outputs": [ | |
311 | { |
|
313 | { | |
|
314 | "metadata": {}, | |||
312 | "output_type": "pyout", |
|
315 | "output_type": "pyout", | |
313 | "prompt_number": 18, |
|
316 | "prompt_number": 18, | |
314 | "text": [ |
|
317 | "text": [ | |
@@ -391,15 +394,25 b'' | |||||
391 | "metadata": {}, |
|
394 | "metadata": {}, | |
392 | "outputs": [ |
|
395 | "outputs": [ | |
393 | { |
|
396 | { | |
|
397 | "metadata": {}, | |||
394 | "output_type": "pyout", |
|
398 | "output_type": "pyout", | |
395 | "prompt_number": 21, |
|
399 | "prompt_number": 21, | |
396 | "text": [ |
|
400 | "text": [ | |
397 |
"<matplotlib.text.Text at 0x1 |
|
401 | "<matplotlib.text.Text at 0x1100a3290>" | |
398 | ] |
|
402 | ] | |
399 | }, |
|
403 | }, | |
400 | { |
|
404 | { | |
|
405 | "metadata": { | |||
|
406 | "png": { | |||
|
407 | "height": 407, | |||
|
408 | "width": 563 | |||
|
409 | } | |||
|
410 | }, | |||
401 | "output_type": "display_data", |
|
411 | "output_type": "display_data", | |
402 | "png": "iVBORw0KGgoAAAANSUhEUgAAAWcAAAEXCAYAAABxmoVMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtYVPW+x/HPIAqpHMFUpMPFW4kiyqAgRwMBzbyEl0fb\ngkdNYJeCGy277J5t52nhKct2HW8bb5V29vGg3bZCqWSY4MkLaKAi4R22pj4hXhAVK3WdPyYGRmaY\nNczMWmtmPq/n4Xmcy1rry9Tz9ueam0YURRFERKQqbkoPQEREzTHOREQqxDgTEakQ40xEpEKMMxGR\nCjHOREQqxDgT2VCPHj3w3XffAQAEQcDMmTMVnogcFeNMJvXo0QPt27eHl5eX/mf+/PlKj2V3RUVF\nePrpp+Hn54euXbsiNjYWX331laRtNRqN0T8TWYpxJpM0Gg2+/vpr1NXV6X9Wrlxp8X5EUYSjvNcp\nLy8PTz31FHr37o28vDycP38ef/nLX/Dpp59avC9H+Z1JnRhnapWH/8leVVUFNzc3PHjwAAAQGxuL\nJUuWYPTo0ejUqRMqKytx6tQpzJ8/H4GBgViwYAFOnz6t3z42NhZvv/024uPj4e/vj3fffRe3b9/W\n33727Fm89tprCAoKwvPPP48ff/xRf9vGjRvRv39/eHt7Y9KkSQar3IKCAvj7+2P9+vXo1asXhg8f\njp07d5r8vTIyMpCUlITVq1dj0KBBeOSRRzB69Ghs2rRJP0d8fDy6dOmCgQMHYunSpbh165b1DyjR\nQxhnapGp1Z+Uf7JnZWVhwYIFuHbtGgICAjB69Gj4+vqitLQUfn5+GD16tMH9//a3v+Gll15CYWEh\n8vPz8dZbbwEA7t+/j2HDhqF///44fvw4oqOj8fTTT+u38/X1xfbt23HlyhUkJiZi2rRpuHPnjv72\n6upqHDlyBEVFRUhOTsYLL7xgdN7Lly/j7NmzmDBhQou/16JFi3D58mVs2rQJn332GbZs2WL2sSCy\nFONMJomiiEmTJsHHx0f/8/HHH+tva4lGo8GYMWMwfvx4uLu74/jx4/j111+xaNEiPProo3j99dfx\n22+/obS0VL/NU089hYSEBPTu3RuvvfYavv76awDAd999h0GDBmH27Nnw8vLCrFmz0KVLFxw6dAgA\nMG7cOPTs2RNt27ZFYmIiBg8ebLA6fvDgARYvXoyuXbti9uzZuHHjBk6ePNls5gsXLgAAhg0bZvL3\n6t27N0aOHIm2bdti4MCBSEtLQ05OjsRHlEg6xplM0mg0yMnJwfXr1/U/qamp+tvMGTp0qP7P+/bt\nQ3h4uMHtQ4YMwffff6/fX1hYmP42rVaL8vJy3Lp1C/n5+fi///s/g78kzpw5g7179wIAvv/+eyQl\nJSEoKAje3t4oLi7GsWPH9Pvy8/NDly5dAADu7u7o0qULLl682GzegIAAAMD+/ftN/k63bt3CggUL\nEBERgU6dOuGll14yOBaRrTDO1Cr/+q//ip9//ll/uekKuIG7u7v+z08++SRKSkoMbv/hhx8QHR0N\nQLcSb7qPkpIShISEoGPHjoiPj0dsbKzBXxJ1dXV4+eWXIYoi5syZgxEjRqCkpAQ3btxAZGRkq56M\n8/PzQ58+fZCbm2vyPllZWTh58iQ+++wz3LhxA8uWLdOfZyeyJcaZWmQqcvHx8Th48CBKSkpw8uRJ\nZGVltbhtWFgY2rVrh3feeQc1NTV477334O7ubrBa3r17N7Zv345z587h/fffR0JCAgBg1KhRKCsr\nw9///ndcv34dd+/eRUFBAS5evIhff/0VV65cga+vLzw9PbFx40YUFRW1+vddtWoVtmzZgoyMDBw7\ndgz19fXYvXu3/snPS5cuwcfHB926dcOhQ4fwt7/9rdXHImoJ40wtSkhIMHid85QpUwAAvXr1giAI\n+MMf/oCkpCT88Y9/bHaq4+HLeXl5uHjxIrRaLS5cuIC8vDyD+86bNw//9V//hejoaMTFxWHRokUA\ngDZt2qCgoAAnT57E4MGDERgYiA8++ACiKMLDwwMrVqzA4sWL0adPHxw+fBiJiYktztGSp59+Gt9+\n+y1OnTqF0aNHIyAgAG+//TamT58OAHjppZdQX1+PoKAgvPzyy0hPTze5f41Gw9c6U6tp+GH7pAZx\ncXGYOXMmUlJSlB6FSBVsvnJOSUmBr68vQkND9dd9/vnnCAkJQZs2bZqdd1y5ciUef/xx9O/fX//k\nELkmrhPIGVy4cAFxcXEICQlBbGwssrOzDW7/4IMP4ObmhmvXrrW4H5vHOTk52eCfqwAQGhqKrVu3\nIiYmxuD66upqrF69Grt378aaNWtc4q3BZBpPAZAzaNu2LZYtW4by8nJ88cUXeOONN1BXVwdAF+5v\nv/0WQUFBZvfjbvYeFoqOjkZVVZXBdcHBwUbvW1RUhDFjxiAwMBCBgYEQRRF1dXXw8vKy9Vikcnv2\n7FF6BCKb6N69O7p37w4A6NKlC0JCQnD48GHExcVh4cKFeO+99zBx4kSz+1H0CcHi4mL069dPf7lv\n374oLi5WcCIiIts5c+YMysvLERkZiZycHPj7+2PgwIGStrX5ytkSxs4xGvunLf+5S0SWsPb5i3/R\naFAn8b4dO3bUn7Zoqq6uDtOmTcOyZcug0WiwZMkSfPvtt5JnVDTOQ4cORX5+vv7yiRMnEBERYeLe\nB21z0Lih5u9jC5UC0FOQ51jWEJr8eaMAJAvG76dGNpp3bMw/rN6HVKeFT/G4ME2247XGXKwzuLxZ\nOIskobdC01huomaX1fuoAyD15QlPGvngq99++w1TpkzBzJkzMXHiRJSVlaGqqgqDBg0CAPz0008Y\nPHgwiouL0a1bN6P7lT3OTf+2iIyMxKuvvorz58/j3LlzcHNzs+/5ZrnCTA5DzjA7gofDTJYTRRGp\nqakYMGAAXnzxRQC6F0U0fUdtz5498cMPP6Bz584m92PzOCclJaGwsBA1NTUICAhAZmYmOnfujIyM\nDNTU1GD8+PHQarXYuXMnfH19kZaWhvj4eLRr1w7r1vF/DFkJSg+gLIbZEMNsG/v27cOmTZswcOBA\naLVaAMCSJUswduxY/X2knKp1iDeh6H4RK09ryL1qvl4A+MTKe0xLCEauKy0AtLHyzmENK+ZVKsxX\nC47j0dgBihzbHFNxLiu4htBY0ys8tZmo2WX1OWeNRiP9tAbs8xp914gzT2cYEpQeQHlcNRtyplWz\ns8TZ+T9bg2GmhzDMhpwpzM7EuePMMDcnKD2AshhmQwyzejlvnBnm5gSlB1AWw2yIYVY3540zGRKU\nHoCILOGcceaqmR7CVbMhrprVz/nizDA3Jyg9gLIYZkMMs2NwrjgzzM0JSg+gLIbZEMPsOJwnzgxz\nc4LSA5CaMMyOxXniTPQQrprJkTlHnLlqbk5QegBlMcyGuGp2PI4fZ4a5OUHpAZTFMBtimB2TY8eZ\nYW5OUHoAUhOG2XE5bpwZZjKCq+ZGDLNjc9w4U3OC0gMoi2FuxDA7PseMM1fNzQlKD6AshpmcjePF\nmWFuTlB6AFITrpqdg2PFmWEmI7hqbsQwOw/HiTPDbJyg9ADKYpgbMczOxXHiTM0JSg+gLIa5EcOs\nM+HoLqVHwIULFxAXF4eQkBDExsYiOzsbAPD5558jJCQEbdq0QUlJidn92Pzbt0kmgtIDEJExbdu2\nxbJlyxAWFoaamhpERkYiISEBoaGh2Lp1K+bMmSNpP4wzOSSumhtx1ayjhlUzAHTv3h3du3cHAHTp\n0gUhISE4fPgw4uLiLNoPT2s4IkHpAZTFMDdimHXUEuaHnTlzBuXl5YiMjLR4W66cHY2g9ADKYpgb\nMcw69grz8CTj1xf8DBRUN7niuPH71dXVYdq0aVi2bBk6dOhg8fEZZ0ciKD0AqQXDrKPEijnWV/fT\nINNInH/77TdMmTIFM2fOxMSJE1t1HJ7WcBSC0gMoj6tmakqtpzJEUURqaioGDBiAF1980eR9zGGc\nySEwzI24ala3ffv2YdOmTfjuu++g1Wqh1Wqxc+dObNu2DQEBATh48CDGjx+PsWPHtrgfntZwBILS\nA5BaMMw6al01A8CTTz6JBw8eGL1t0qRJkvfDlbPaCUoPoDyumnUYZh01h9mWGGc1E5QeQHkMsw7D\nrOMqYQYYZ/USlB6ASF1cKcwA46xOgtIDqANXzTpcNbsmxplUiWHWYZh1XG3VDDDO6iMoPYDyGGYd\nhlnHFcMMMM7qIig9AKkFw6zjqmEGGGf1EJQeQB24aqYGrhxmgHFWB0HpAdSBYdbhqpkAxll5gtID\nkJowzDquvmoGGGdSCa6aGeYGDLMO46wkQekB1IFhZpgbMMyNGGelCEoPoA4MMzVgmA0xzkoQlB5A\nHRhmHa6ayRjGWW6C0gOoA8OswzDrcNXcHOMsJ0HpAdSBYdZhmHUYZuMYZ7kISg9AasIw6zDMpjHO\nchCUHkA9uGomksbmcU5JSYGvry9CQ0P119XV1WHixIkIDAzEpEmTcOvWLQBAVVUVHnnkEf33bKWn\np9t6HOUJSg+gHgyzDlfNOlw1t8zmcU5OTkZeXp7BdWvWrEFgYCBOnz4Nf39/rF27Vn9bnz59UFpa\nitLSUqxevdrW4yhLUHoA9WCYdRhmHWcOs7EF6o8//ohnnnkGYWFhSEhIQEVFhdn92DzO0dHR8PHx\nMbiuuLgYqamp8PDwQEpKCoqKimx9WPURlB5APRhmHYZZx5nDDBhfoC5evBizZs3CkSNHMH36dCxe\nvNjsfmQ553zo0CEEBwcDAIKDg1FcXKy/rbKyEmFhYZgzZw6OHj0qxzj2Jyg9gHowzDoMs+swtkDt\n1KkTrl69igcPHuDq1avNbjfG3V4DNiWKotHrH3vsMVy4cAE+Pj7YuXMnZs6ciWPHjhnfSaXQ+Gfv\nWMAn1tZj2oag9ADqwTDTw+yxai44rPuRS8HPQEG1Zdv89a9/RWRkJF5//XU89thjBgtUU2SJc0RE\nBCoqKqDValFRUYGIiAgAQLt27dCuXTsAwNixY7Fo0SKcOXMGffr0ab6TnoIco1pHUHoA9WCYG3HV\nrGOv0xmxQ3Q/DTLXmr6vRf5s4ni//+iPF2Z+VykpKcjIyMCcOXOQlZWF1NRUfPbZZy1uI8tpjaFD\nh2LDhg2or6/Hhg0bEBUVBQCoqanB/fv3AQAlJSWor683HmZHICg9gHowzI0YZh1nP89szvfff4+U\nlBS4u7sjNTUVe/fuNbuNzeOclJSEYcOG4dSpUwgICMDGjRuRlpaG8+fPo2/fvrh48SLmzp0LANi7\ndy8GDRqEsLAwLFmyBOvWOej/yILSA6gHw9yIYaYGcXFxyM3NBQDk5OTgqaeeMruNRjR1QlhFNBoN\nEKfSMQWlB1AXxlmHYW4k96pZE2b6eS7J+9BoIB5p3fGSkpJQWFiImpoa+Pr6YvHixYiMjMRbb72F\nH3/8EQMGDMB//Md/6F8kYXK/jLMVBKUHUBeGuRHjrKPE6Qyl42wrfPt2awlKD6AuDHMjhlnH1c8z\nW4txbg1B6QHUhWFuxDCTrTDOlhKUHkBdGOZGDHMjrpqtxzhbQlB6AHVhmBsxzI0YZttgnKUSlB5A\nXRhmMoZhth3GWQpB6QHUhWE2xFUz2QPjbI6g9ADqwjAbYpgbcdVsW4xzSwSlB1AXhtkQw9yIYbY9\nxtkUQekBSM0Y5kYMs30wzsYISg+gPlw1E8mLcX6YoPQA6sMwG+KquRFXzfbDODclKD2A+jDMhhjm\nRgyzfTHODQSlB1AfhtkQw9yIYbY/xhlgmI1gmA0xzCQ3xllQegD1YZipJVw1y8O14ywoPYD6MMzN\ncdXciGGWj+vGWVB6APVhmJtjmBsxzPJyzTgLSg+gPgxzcwwzKcn14iwoPQA5AobZEFfN0qWkpMDX\n1xehoaH66wRBgL+/P7RaLbRaLfLy8szux7XiLCg9gDpx1UwtYZgtk5yc3Cy+Go0GCxcuRGlpKUpL\nSzFmzBiz+3GdOAtKD6BODHNzXDU3YpgtFx0dDR8fn2bXW/olsK4RZ0HpAdSJYW6OYSZ7WbVqFaKi\norB06VLU1dWZvb/zx1lQegB1YpibY5gNcdVsXMFhQFjb+CNFWloaKisr8c033+Ds2bNYt878/2vu\n5u7wyy+/YNu2bdi7dy+ysrJw+vRpnDx5Es8884y0qZQkKD2AOjHMZA7DDOQOGm38hkFAeGqTy2vN\nP1bdunUDAHTq1Anz5s1Deno6XnnllRa3MbtyfvPNN1FSUoKCggIAwGOPPYZFixaZHUZxgtIDqBPD\nbBxXzY0YZtu7fPkyAODevXvIzs7GuHHjzG5jduW8Z88eFBUVYdcu3X+wDh06WHxiW3aC0gOoE8Ns\nHMNMtpSUlITCwkLU1NQgICAAmZmZKCgowJEjR9CuXTvExMQgLS3N7H7Mxrlv376ora3VXz548CC0\nWq1109uToPQA6sQwG8cwG+Kq2XqbN29udl1KSorF+zEb54yMDEyaNAk//fQT4uLi8PPPP+N//ud/\nLD6QLASlB1Anhtk4htkQw6wuZuMcERGBPXv24IcffsCDBw8QEREhx1yWE5QeQJ0YZuMYZkMMs/qY\nfULwH//4B27cuIHBgwcjIiICN27cwLZt2+SYTTpB6QHUiWE2jmE2xDCrk9k4Z2ZmwtvbW3/Z29sb\ngiDYcybpBDDMJjDMxjHM5CjMxtnT0xN37tzRX75z5w7atGlj16EkEZQeQL0YZuMY5ua4alYvs+ec\nn332WaSlpSEtLQ2iKGLt2rVITEyUYzbTBGUPr2YMs3EMc3MMs7qZjXN6ejo+++wzvPXWWxBFEVOn\nTlUuzoIyh3UUDLNxDHNzDLP6aUTVv6NE93F7KFT9mIpimI1jmI1z5jhrwiz/BLhm+9BokCOaePv2\nQyZqdtnljXkmV84LFizAihUrkJCQ0Ow2jUaD3Nxcmw9DrcMwG8cwG+fMYXYmJuM8a9YsAMArr7zS\n7G8FjUZj36lIMobZOIbZOIbZcZiM8+DBg3Hv3j2sX78e//u//yvnTCQRw2wcw2wcw+xYWnwpnbu7\nO6qqqnDlyhW55iGJGGbjGGbjGGbHY/bVGiEhIYiOjsYzzzwDPz8/AI3fh0XKYJiNY5jJmZiN82OP\nPYbExERoNBrcunVLjpmoBQyzcQyzaVw1O6YW43z9+nVERUUhJiYG7du3l2smMoFhNo5hNo1hdlwm\nzzl/+OGHGDhwILKysvDEE0+o78OOXAzDbBzDbBrD7NhMxvm///u/cfToUXz11VfYu3cvPv74Yznn\noiYYZuMYZnJmJk9r3L59G507dwYA9OrVCxcvXpRtKNJhlE1jmFvGVbPjMxnnc+fOGbw7sOllvkPQ\n/hhm0xjmljHMzsFknHNycgwuv/zyy/o/t/QOwZSUFGzfvh3dunVDWVkZAKCurg4zZsxAaWkpwsPD\nsWnTJnTs2BEAsHLlSqxatQpt27bF+vXr8eSTT1r1CzkDhtk0hrllLh/mpUoPYLyBr776Kr7++ms8\n8sgjiImJwTvvvINHHnmkxf2YPOccGxtr8mfEiBEmd5icnIy8vDyD69asWYPAwECcPn0a/v7+WLt2\nLQCguroaq1evxu7du7FmzRrMnz9f8gPgrBhm0xjmlrl8mFXCWANHjx6N8vJyHD58GLdv30Z2drbZ\n/Zj9sH1LRUdHw8fHx+C64uJipKamwsPDAykpKSgqKgIAFBUVYcyYMQgMDMSIESMgiiLq6upsPZJD\nGBvzD4a5BQwzmaWCVTNgvIFPPfUU3Nzc4ObmhqeffhqFhYVm92PzOBtz6NAhBAcHAwCCg4NRXFwM\nQBfnfv366e/Xt29f/W2uhFFuGcNsnsuvmlUSZik+/PBDo5/2+TCz7xBscPfuXXh6erZqGEs+69Tk\n+eyNQuOfw2IBbWyrZlEbhrllDLN5rh7mgoVAQbV8xysruIbjBddbte3ixYvh5eWFZ5991ux9zcb5\nyJEjWLRoEX788UdUVlbiyJEjWL9+PVavXi15oIiICFRUVECr1aKiogIREREAgKFDhyI/P19/vxMn\nTuhvayZZkHw8R8Ewt4xhNs/VwwwAsb66nwaZx22z37WYY+KAv//oDzhF0v4++eQTfPPNN9i9e7ek\n+5s9rfH2229j6dKl+m/gDgsLk3S+pKmhQ4diw4YNqK+vx4YNGxAVFQUAiIyMxDfffIPz58+joKAA\nbm5u8PLysmjfjojnl1s2F+sYZgkYZjjM6Yy8vDz89a9/RW5uruQzEGbjfOnSJQwYMEB/+Zdffmnx\nczaSkpIwbNgwnDp1CgEBAdi4cSPS0tJw/vx59O3bFxcvXsTcuXMBAL6+vkhLS0N8fDzS09OxYsUK\nSUM7Mka5ZYyyNAwzVBvmhgaePHkSAQEB2LBhAzIyMnDr1i2MGjUKWq0W6enpZvdj9jsEMzMzERYW\nBkEQkJOTg1WrVqFTp0544403bPbLmOMs3yHIMLeMYZaGYf6diThrNtvmOwTHil9Kuu9OzRS7fIeg\n2ZXzggULUFpaivv372Ps2LHw9vZGRkaGzQdxZjyNYR7DLA3D/DuVrpptyWycDxw4AEEQcOzYMZSX\nl2PRokXYvHmzHLM5BUbZPIZZGob5dy4QZkBCnP/zP//T4NnF9957jx8fKhHDbB7DLA3D/DsXCTMg\n4aV0ubm5eOaZZ9CuXTvk5eXhxIkT/NAjCRhm8xhmaRhm12Q2zl26dEFubi5GjhyJIUOG4Isvvmjx\ng49cHaMsDcMsDcPchAutmoEW4tyxY0eDCP/666+orKzUx/nmzZuyDOhIGGZpGGZpGOYmXCzMQAtx\n5pe5WoZhloZhloZhJpNxPnHiBIKDg1FSUmL09vDwcLsN5WgYZmkYZmkY5oe44KoZaCHOH3zwAT78\n8EMsXLjQ6DnmPXv22HUwR8AoS8cwS8MwP8RFwwyYeYfggwcPcODAAQwfPlzOmZpR4zsEGWbpGGZp\nGOaHtDLMLvEOQTc3N8ybN8/mB3V0DLN0DLM0DDM9zOybUBISErBy5Uq+OuN3DLN0DLM0DLMRLnw6\no4HZDz7q2LEj7ty5Azc3N/0XEsr9Ujo1nNZglC3DMEvDMBthZZid5bSG2Teh8CV1DLOlGGZpGGZq\nidnTGiNHjpR0nbNimC3DMEvDMJvA0xl6JlfO9fX1uHPnDq5cuYJr167pr6+urnaJb8hmlC3HMEvD\nMJvAMBswGed169ZhxYoVuHTpEgYPHqy/PigoCC+++KIswymFYbYcwywNw2wCw9yM2ScEV65cifnz\n58s1j1FyPiHIMFuOYZaGYW6BDePs9E8IHjp0CP7+/vow79ixA5s3b8awYcPw3HPPtfg9go6IUW4d\nhlkahtkErphNMvmE4AsvvIB27doBAM6cOYPk5GSMHDkSR48exV/+8hfZBrQ3foVU6/AbsqWZcHQX\nw2yKE4c5OzsbI0aMQEhICD766KNW7cPkyvn+/ft49NFHAehObcyePRuzZ8/GjBkzFH87ty0wyK3H\nKEvDKLfAicNcW1uLzMxMHDx4EG3btkV8fDyeffZZdOrUyaL9mIyzj48P7ty5g/bt2yMnJwdffPGF\nbgN3d4d+7TOjbB2GWRqGuQVOHGYA2L9/P8LDw+Hj4wMAiIuLw4EDBzBmzBiL9mMyzjNmzEBUVBS6\ndeuG3r17IyIiAgBw+vRpeHt7WzG6Mhhl6zDK0jDKZjh5mAEgJiYGf/rTn1BZWQlPT0/s2LEDHh4e\ntovz888/j/Hjx+PUqVMYMWKE/npRFLFq1arWTy4zRtl6DLM0DLMZThLmqwXHca2g3OTtHTp0wPLl\nyzFv3jzU1tYiNDQUnp6eFh/H7Evp1KA1L6VjlK3HKEvHMJshY5ht9VI6yc0ZoWnxeImJiXjttdcs\n/oISs5+t4WgYZdtgmKVhlCVwkhWzJaqrq9GtWzfk5+ejrKysVd8c5TRxZpRth2GWhmE2wwWj3GDq\n1Kmorq6Gl5cXNm7c2Kp9OHycGWXbYZSlY5jNcOEwA8DevXut3ofDxplRti2GWTqG2QwXD7OtOFyc\nGWXbY5ilYZQlYJhtxmHizCjbHqMsHcMsAcNsU2Y/bJ+cE8MsHcMsAcNscw6zcibbYJSlY5QlYpjt\ngitnF8IwS8cwS8Qw2w1Xzi6CYZaOYZaAUbY7xtnJMcrSMcoSMcyy4GkNJ8YwS8cwS8Qwy4ZxdlIM\ns3QMs0QMs6x4WsPJMMrSMcoWYJhlx5WzE2GYpWOYLcAwK4JxdhIMs3QMswUYZsXwtIaDY5SlY5Qt\nxDArinF2YAyzdAyzBRhlVWCcHRCjbBmG2QIMs2owzg6GYZaOUbYQw6wqjLODYJQtwzBbiGFWHcZZ\n5RhlyzHMFmKYVUnWl9JlZ2djxIgRCAkJwUcffQQAEAQB/v7+0Gq10Gq1yMvLk3Mk1ZqLdQyzhSYc\n3cUwW4phtovbt2/jueeewxNPPIH+/fvj4MGDFu9DtpVzbW0tMjMzcfDgQbRt2xbx8fF49tlnodFo\nsHDhQixcuFCuUVSNQW4dRrkVGGa7efPNNxEYGIh169bB3d0dt2/ftngfssV5//79CA8Ph4+PDwAg\nLi4OBw4cAACIoijXGKrFKLcew9wKDLNd5efn48CBA/D09AQAdOrUyeJ9yHZaIyYmBsXFxaisrMTl\ny5exY8cO7N+/HwCwatUqREVFYenSpairq5NrJFXg6QvrMMwWWgqG2c5++ukn3L17F2lpaRg6dCiW\nLl2Ku3fvWrwfjSjjsvWrr77CmjVrUFtbi6CgIAwYMADPP/88unTpgps3b+LVV1/FE088gVdeecVw\nSI0Gfd78g/5y59gQPBo7QK6x7YJBtg6j3ApOGuWCn4GC6sbLmcet/9e4RqMB4kzs43oBcKOg8XJV\npsHxzpw5gyeeeAI5OTkYNWoU5syZg1GjRmHWrFmWzSBnnJtKTEzEa6+9hvDwcP11R48eRXp6Ovbt\n22dwX41Gg7Hil3KPaBeMsvUY5lZw0jAbo9ls5zg/bI+m2fH69euHiooKAMDOnTvx97//HZs3b7Zo\nBllfSlddXY1u3bohPz8fZWVlCA8Px+XLl+Hn54d79+4hOzsb48aNk3Mk2TDK1mOUW8mFwqwWjz/+\nOIqKihCxSZ+LAAAMyElEQVQREYHt27dj1KhRFu9D1jhPnToV1dXV8PLywsaNGwEAf/7zn3HkyBG0\na9cOMTExSEtLk3Mku2OUbYNhbiWGWRHvv/8+Zs2ahbt372LUqFFITEy0eB+KndawhKOd1mCQbYth\nbiUXDbMaTmvYAt8haEOMsm0xylZw0TA7E8bZBhhl22OYrcAwOwXG2QqMsn0wzK3EKDsVxrkVGGX7\nYJStwDA7HcbZAoyy/TDMVmCYnRLjLAGjbF8MsxUYZqfFOJvAINsfo2wFRtnpMc4PYZTtj1G2EsPs\nEhhnMMhyYZStxCi7FJeNM4MsH0bZSoyyS3K5ODPK8mKYrcQwuyyXiDODLD9G2UqMsstz2jgzyMpg\nlG2AYSY4YZwZZWUwyjbAKFMTThFnBlk5jLINMMpkhMPGmUFWFqNsIwwzmeBQcWaQ1YFhtgFGmcxw\nmDgzzMpjlG2EYSYJHCbOpBxG2UYYZbIA40wmMco2wii7lLt372LEiBH45Zdf4OnpiWnTpuGll16y\neD+MMzXDKNsQw+xyPD09sWfPHrRv3x6//PILBg8ejISEBPTp08ei/TDOpMco2xCj7NLat28PALh1\n6xbu3bsHDw8Pi/fBOBOjbGsMs8t78OABtFotysvLsXz5cgQEBFi8D8bZxTHMNsQoK27fZhvubE+R\niRtKfv8xzc3NDUePHkVVVRXGjRuH4cOHQ6vVWnR4xtlFMco2xCgrzqZRNiv8958GH5m8Z48ePTBu\n3DgUFRUxztQyRtnGGGZFyRtlaWpqauDu7g5vb29cvXoVu3btwssvv2zxfhhnF8Eo2xijrCg1RrnB\n5cuX8dxzz+H+/fvo3r07XnnlFfj5+Vm8H8bZyTHKdsAwK0bNUW4QGhqKkpKWz0lLwTg7KUbZDhhl\nxThClG2NcXZCDLONMcqKccUoN2CcnQijbAcMsyJcOcoNGGcnwCjbAaOsCEa5EePswBhlO2GYZcco\nN8c4OyBG2U4YZdkxyqYxzg6EUbYTRll2jLJ5jLPKMch2xjDLilGWjnFWIQZZBoyyrBhlyzHOKsEg\ny4hhlg2j3HqMs4IYZJkxyrJhlK3HOMuMQVYAoywbRtl2GGcZMMgKYphlwSjbHuNsJwyywhhlWTDK\n9sM42xCDrBIMs90xyvbHOFuBMVYZRtnuGGX5MM4WYpBViFG2O0ZZfoyzBAyyijHMdsUoK4dxNoFB\nVjlG2a4YZeW5yXmw7OxsjBgxAiEhIfjoI93XidfV1WHixIkIDAzEpEmTcOvWLTlHMjDh6C79j7UK\nDttgIJk5xMxLoQ9zwc+KTtIqap953+bmYS5VZhSHtnfvXvTr1w+PP/44Vq1a1ap9yBbn2tpaZGZm\nYtu2bSgqKsL69etRW1uLNWvWIDAwEKdPn4a/vz/Wrl0r10gAbBvkphwidA9R9cxNotygoFqRSayi\n1pmNRbkB42y5BQsWYN26dcjPz0dWVhZqamos3odspzX279+P8PBw+Pj4AADi4uJw4MABFBcX4403\n3oCHhwdSUlLwzjvv2H0WnrJwIDx9YVc8fWF7tbW1AICYmBgAwOjRo1FUVITx48dbtB/Z4hwTE4M/\n/elPqKyshKenJ3bs2AEPDw8cOnQIwcHBAIDg4GAUFxfbbQZG2cEwzHbFMNtH06YBQP/+/XHw4EH1\nxrlDhw5Yvnw55s2bh9raWoSGhsLDwwOiKErafqLG8cKaKe8ZGptwtJkzjys9geUcceYNSg+giChJ\n9+rYsaNdji7rqzUSEhKQkJAAAEhMTMSYMWNQUlKCiooKaLVaVFRUICIiotl2UgNORGQL1jQnIiIC\nr776qv5yeXk5xowZY/F+ZH21RnW17tmQ/Px8HD9+HOHh4Rg6dCg2bNiA+vp6bNiwAVFR0v62IiJS\no06dOgHQvWKjqqoK3377LYYOHWrxfjSijMvSmJgYVFdXw8vLC1lZWYiMjERdXR1mzJiB0tJShIeH\nY9OmTXb7ZwIRkRwKCwsxd+5c/Pbbb5g/fz7mz59v+U5EBRUWForBwcFinz59xJUrVza7vaKiQoyK\nihI9PDzE999/36Jt7cWamYOCgsTQ0FAxLCxMjIiIkGtkszNv2rRJHDhwoDhw4EAxKSlJPHnypORt\n1TavWh/jbdu2iQMHDhQHDRokjhs3TiwuLpa8rRpnVuJxlvo4FRcXi23atBG/+OILi7dVE0XjHBYW\nJhYWFopVVVVi3759xStXrhjcXl1dLR46dEhctGhRs9CZ21aNM/fo0UO8evWqLHM2ZW7m/fv3izdu\n3BBFURQ/+eQTccaMGZK3Vdu8an2Mb926pf9zQUGBGB0dLXlbNc6sxOMs5XG6d++eGBcXJ44fP94g\nzko9xtaQ9ZxzU01fCxgUFKR/LWBTXbt2xZAhQ9C2bVuLt1XbzA1EmZ/clDLzv/3bv+nPk40fPx6F\nhYWSt1XTvA3U+Bh36NDB4P6enp6St1XbzA3kfJylPk6rVq3C1KlT0bVrV4u3VRvF4mzqtYD23tYa\n1h5Xo9EgPj4ekyZNQm5urj1GbMbSmdevX69/RY0Sj7M18wLqfoy3bt2KHj16ICUlBR9++KFF26ph\n5vXr1+uvl/txljLvxYsXkZOTg7S0NP2MUrdVI37wkYz27dsHPz8/VFRUICEhAZGRkejevbvSY+nl\n5+dj06ZN2L9/v9KjSGJsXjU/xpMnT8bkyZPx6aefYtKkSSgtVf8bo5vOPHnyZP3ManycX3zxRbz7\n7rvQaDQQdadsFZ3HWoqtnCMiInDixAn95fLycskvo7NmW2tYe1w/Pz8AQL9+/TBhwgR89dVXNp/x\nYVJnPnbsGObOnYvc3Fx4e3tbtK1a5gXU/Rg3mDZtGi5duoT6+noMGTLEIf5fbjozIP/jLGXeH374\nAYmJiejZsye+/PJLpKenIzc3V7FeWE3JE94NJ+krKytbPEn/5ptvmnxC0Ny2ttbamW/fvi3evHlT\nFEXdk4b9+/cXz58/r4qZ//nPf4p9+vQRDx48aPG2appXzY/xmTNnxAcPHoiiKIrbt28Xx44dK3lb\ntc2s1ONsyeM0e/Zs8csvv2zVtmqhaJwLCgrE4OBgsXfv3uKKFStEURTFtWvXimvXrhVFURQvX74s\n+vv7i//yL/8ient7iwEBAWJdXZ3JbdU889mzZ8VBgwaJgwYNEuPj48WPP/5YNTOnpqaKnTt3FsPC\nwpq9NEqJx7m186r5MV66dKkYEhIihoWFicnJyWJZWVmL26p5ZqUeZ3PzNvVwnJV6jK0h65tQiIhI\nGsXOORMRkWmMMxGRCjHOREQqxDgTEakQ40x2Fx8fj127DL8sYfny5UhPTzd6/x49euDatWst7nPJ\nkiUGl4cPHw4AqKqqQmhoKADg8OHDWLBgAQDdp4QdOHCgVfMTKYFxJrtLSkrCli1bDK779NNPMX36\ndKP3b3jbbUse/q7Jffv2NbvPkCFDsGLFCgDAnj17HOadj0QA40wymDJlCrZv34579+4B0K1uL126\nhF9//RXjxo3D8OHD8dFHHxnddvLkyRg8eDDi4+OxdetWAMDrr7+O+vp6aLVazJw5E4DxrwoqKChA\nQkIC/vnPf2LdunVYtmwZwsPD8f3336NXr176eW7evIlevXrh/v379vj1iVqFn61Bdte5c2dERkZi\nx44dmDBhArZs2YKpU6fihRdeQF5eHh599FGMGTMGw4cPR79+/Qy23bBhA3x8fHDz5k3ExsZi8uTJ\nePfdd5GVlWXw2RQtrbaDgoIwd+5ceHl5YeHChQCA2NhYbN++HRMnTsSWLVswZcoUtGnTxj4PAFEr\ncOVMsmh6auPTTz/FlClT0K9fP/Tp0wc+Pj6YOnWq0U8327JlC0aOHInhw4fj3LlzKCsra9XxxYc+\nCOePf/wjNm7cCAD45JNPkJyc3Kr9EtkL40yymDBhAnbv3o3S0lLcuXOn2UpXFMVm1507dw5r1qzB\n559/jrKyMvTs2RPXr19v1fEf3vewYcNQVVWFgoIC3L9/H/3792/VfonshXEmWXTs2BFxcXFITk7G\n9OnTERUVhRMnTuDs2bO4fv06tm7digkTJhhsc+nSJXTt2hWdO3fGvn37cPToUf1tXbt2xZ07dyQf\nPygoCFeuXDG4btasWfj3f/93pKSkWPfLEdkB40yySUpKQllZGZKSkqDRaLBu3TpkZGRg/PjxSE1N\n1X8gesMq98knn0RQUBD69euH5cuXY9SoUfp9ZWRkIDo6Wv+EYNOVsbE/jx49GocPH4ZWq9W/smP6\n9Om4fv06kpKS7PuLE7UCP/iIXFZ2djb27Nmj/1YSIjXhqzXIJWVkZGDfvn34+uuvlR6FyCiunImI\nVIjnnImIVIhxJiJSIcaZiEiFGGciIhVinImIVIhxJiJSof8HI/tEwouvtyIAAAAASUVORK5CYII=\n" |
|
412 | "png": "iVBORw0KGgoAAAANSUhEUgAABGcAAAMvCAYAAAB/e73nAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAWJQAAFiUBSVIk8AAAIABJREFUeJzs3Xm4LGdd7+3vzkAgzCAgMhgIiIKCYQyRIYYAMijTeQwc\nDRAEQXyRQURBD5GjoExCZJR5UDE8ckBAICSQGGRUmafDwQwMBhPAQCIh097vH9WL3VlZQ6/u6q6q\n7vu+rn3V6tXVVbVWcmH2x189lQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCi7R79ef0G7x009v6xC7wmAGAC+3R9AQCwIIdn719O\nd/LHX2SZxO2S/GmSDyf5epIfJvlBkm8kef/ovTst6Fr2zPg+ALBg+3V9AQDQke3+grprtI+/yLKV\nn0lyXJIj131/T5p/h35i9OfIJM9I8pUkf5nk5Qu8RgCg58QZAFbRa5L83YT7nj7PC2HQfjnJ3ya5\n8uj1fyR5W5JPJPlOkqsmuWGSX0xyRJIDk/xUkmdHnAEAAGAFHZ69tyo9rdtLYQncPskFaf59ujRN\ncDlgi/2vmeRZSc5L8t05XdPav9+v2+C9g8bef+aczg8ATMmaMwAAO7N/kuOzN8Y8OckfJrlwi8/8\nV5r1iw5J8rG5Xh0AMDjiDADszCOzdwLh7tvse8Zov5M3eX/903VukuQvknwxzWKylyQ5cYPPXTHJ\nE5J8MMl/JrlotD0xyW+liQebOSiXXex4V5IHJXlrmoVsL0xydpJ/SHM7ziQOSvK8JJ9KEyEuTHOL\nzzuS/I9tPntUklckOTXN4rkXpPm5v5fks0leneSu2xzjlNHPs3YL2o+n+dk+keTcNIvzfnl0jdea\n8GfayiPS/LNKknenWUNmUl9Nct913zsgyZOSvDnJvyQ5J83v8KIk307y0SR/luSm018yAAAAdO/w\ntHNb0yOz91aWu22z7xmjfT+4yftr13N8mnBw8dj3Lh1tP7nuMz+XJkLs3mDftT//N8nNNznnQWP7\nvS3JZ9Z9dv2fp2/zMz41TUjY6npOSLP+yka+usE5139+d5JXpglJGzlltM/Xk/xxmhiz2c/z1STX\n2+Zn2s6Hx67zDjMeK2nWpdnoWtf/Hn6Y5JgtjuO2JgAYKAsCA0D3ymj7/TQLzJ6aZl2Saya52th+\nP5nkn5JcI83TgN6ZZjrlP5NcP82Uyn3ShJkPJfn5JN/a4rwPGm2/nOQtaSZVkiZkPS7NRMezk3w6\nyXs3+PwfZ+9f9L+S5A1JvpAmMt0kyf9M8gtJ7jl67yEbHOPS0WdOHV3Ht9JMzVw9yW3S/G5unuQ3\nk3w+yUu3+HluMLqeS9L8Xt6V5KzR9x+T5I5ppk9enORhWxxnK1cZHSdpJn3+ZcrjrHdRkn9N88/t\njDS/h4uSXDvJoWmu95pJXpUm2H2mpfMCAADAwhyevZMDr05yjzSPN97uz03WHeeRaX9yZneSv07y\nY9sc74Sxcz98k30eP3bMv9/g/YPG3v/2Fse5W/ZO8nx2g/d/IZf9fW72//B5ydh+h23w/oGbfG7N\nFZN8bvT5L22yzylj5zgxyS022OcKY8e5KE3gmsahY+ea9Ilf29knWy8mnCQHZ+8CxK/YZB+TMwAA\nAPTa4dn69p3N/hy77jiPTPtx5m0TXP/Pju3/lm32fdfYNR687r2DMvlf0v9mbN9br3vvvaPvfzpb\nr2F3YJLzR/set835NvNn2fvzbBRzThm9/7VtjvP7Y8c5YspruX/2/k5eNOUxpvXR0Xk/scn74gwA\nDJTbmgBYVXta3m8W35tgn/uMfb3RX77HvTbJ/dKs0XLvJC+f8rrekb23/xyavRM0V00zVZQkb0rz\nF/7N/CDNAse3T/Okos38TJJfTnMr082TXDfNbTwHpJl6WXOt0TE3cskWx0+SM0fbXUmus82+m7n6\n2NfnTXmMzeyTZvHjI9OsLXRQmuu8Wprfw9p/t7WxqDEA0CPiDACr6A/SLMA7JLcZbfekWZtkK+Pv\n32bTvbb35bGvxydwbptk39HXLxj9mcR1N/jeLZO8LJs/+Wp9HJvlSZP/Nfb1drcRbeb7Y19vtsjx\nNO6fZrJo/W10a8Z/D562CQBLRpwBgGG49mi7O5eNDBs5Z4PPTWP8POMTI+sjy3bTRWtPWbrCuu/f\nOs1CwGuLHv9w9PozaW5R+naa6ZSHJvn1yS55Sxe2cIzx3+1PtHC8pLlVbnwa6ttpbtX6UppFh7+T\nZlroz3P528sAgCUgzgAAm9l/7OvxsLHv2NfPS/L+CY93wbrXL8neMPM3SZ6UJkSsd8cNvteVL6cJ\nZPukWRR5VldL8pejry9J8ow0EzQXb7DvH7RwPgCgh8QZAJjeIm8v+fbYOX9s7PVGrjf29UaxY1LX\nH/v6P8e+Hp8e+U42X/B4K9dNs75K0tyGdfQUx+jCuUk+leR2aSZn7pxmod5p/VKax3MnTaya9BYx\nAGCJuGcZAHZmbYJkV9pdc2Q7nxk773aTJHcY+/rTM5zz0LGvx58QNP5o7SMznZ8c+3rSyZu+GH9a\n1h/PeKzx38N7ZzwWADBQ4gwA7MzZY1/fYov9dqXdCdXxv7g/ept9HzPa7k5ywpTn22/sPN9J8qGx\n987J3lhzZJLDJjzm+G1S409W2i5yXXHC4y/KK7L334N7pnlE96RumOYpWGt28nuYdhFjAKDnxBkA\n2Jl/y96/UD8ilw0Oa26R5MS0t2BsknwheydMHpi9AWa9Jya51+jrdyQ5bYtjbnTtSROWjkvy06PX\nf5nLL6b7p2P7vi1bT/NcJ8mzxz6TNI/XXnsk9gOy99aecVdJ8uIkv7fFsbtwQZLfyN5HiP9Zkhcm\nufIWn7lykqemmYAafzLV+JO1Nru16yZpItudprlYAKD/rDkDwCq6eZJ7ZO9ThLby70lOH3t9bpK/\nT/MEoVulWW/lNWkmKX4iyf2S/Erm8/8AeWySTya5ZpK/Gp3nbWnWg7l+kpLk3qN9/zPJb29zvGek\niSrvS/LNJOeneWT2I5McMtrnX9LEh/XenWaNlCekWePmI0nelSYifD3NlMeN0/yejxy9fvHY5y8c\n/QxPHu33b2kmUk5LMylzuzRPaBpf96ZP/jHN7/claf576slp4srfJ/lYmjWBrpzm+u+aZsJmbfHj\nc8eO86E0P/vt0kS3k9LcNvWtNE/aOjzJUUmuNM8fBgAAABbh8DSTDjv9c+wGx7pukq9s8Zn/TvJH\naSLF7my+YO7a/q/b5P2N/FyaWLTVNf/fNAFqIwdt89nxPx9Ico1trudpaSZJtjvWRWkCxrgD0kwY\nbfaZS9PEnjeNfe/GG1zDKaP3tpoSSi7778DDt9l3UndJswbPJL/PS9NMzjxq3TFukuSMLT53YZoI\n9K/Z+ufc6t+ng8bef+YOf0YAYM5MzgCwKvas2+70c+POTjNx8rQkD0qzqOtFaaZs3p3kZaN9fmOC\n8+30ej6X5najxyR5cJrpnWukmcb4bJpJmtfksmuZbOa5af6iX5LcOs1EzrlpJjlen6ROcIznJXlj\nmp/1iCQ/k+RaaSLAOaNres/oWOufHHVhmqcV/XaSY9LcDrYryTfSBK03Jflw9gayzX5Xe7Z4b/1+\nWx1nGv+c5nd37zRTU4emWVfmmmn+nfh2mlj2z2nWDfrUBsc4Pc3kzNPT/DO9QZrfzb+nmdB5XZp/\nTidPcO1t//sGAAAAtOygmKAAAOgVCwIDAAAAdGipbmsqpdwizdMs3lJr3eyJB+P7PzrJq5I8ptb6\n2i322z/NgocPT3MP/yVpnjLxylrrG9u4dgAAAGAxSim/luQ+SW6fZk27fdKsF/i+JM+ptZ61zeev\nluTUNLc3b9kUJjH4OFNKOTjJU9I8DeFeaX6hm95PXUq5d5r1AW6W5t74bLX/yPFpnqBwWpr76vdP\ncv8kry+l3KrW+rRZfgYAAABgMUop+yV5c5KLk3w0zUMQ9kvzhMXfbnYpd661nr7J5w9I8o40YSZp\nYU23wceZJDdK8luZ/JdxaJLfnHT/UspD0oSZU5Pcq9Z60ej710jy8SS/W0r561rrZ3d64QAAAMDC\n7U7ynCQvqrX+6IEFpZRdSV6d5smKz8oGT3cspeyTJuwcluYBBkes32cag19zptZ6Sq11n1rrvpng\nl1JrfdbY/s+a4BSPGG2ftRZmRsc5N81TLnaN7QMAQ+GpPQDASqq17q61/tF4mBl9f0+Sl45e3m6T\nj784yUOSHJ3kQ21d0+DjzDq75rD/ndP8B+zHNnjvI6PtYTs8LwB05Yw0//d/3yT/u9tLAQDonQNH\n2++sf6OU8vQk/1+SJ9daa3beIDa1bHGmVaWUqya5dpL/rrVesMEu3xxtb7q4qwIAAADm5KjR9tTx\nb5ZSHpnk2UmeV2v9y7ZPKs5s7aqj7fc3ef8Ho+3VFnAtAAAAwJyUUu6U5HFJvpvkuLHv3zfNk57f\nXGv9g3mcexkWBF6ESzb5/tQjTCeddJJ7/QEAAJbYkUce2dptL33Sx7/Pzvq7LqXcMsm70yxr8tBa\n6zmj7x+S5K1pnuj0qFmvczPizNbOG22vtMn7B67bDwAAABiQUsptk7wvzd0zR9VaTxp7++5pmsAZ\nSZ5bShn/6Nr6s786ijv/VGt91zTXIM5sodZ6Xinlu0muVUq5cq31v9ftcoPR9rRpz3GbQ+8y9fUN\nxTfOWf9rA/rs9G/pzbBIZ515bteXAEzhgi+f0/Ul0GM/f5elHJi5nOPv97ddX0KO+sf/OdPnR7cs\nHZ/k4iT3qbWevG6XPWnumnnsFoe5V5J7plk6RpyZk48kuX+aWvaede+tlZWNnuREhBkYGmEGFkuY\ngWESZmA5lFKekORFSb6e5H611i+u36fWelzG1p9Z9/ljkxyb5NG11tfNci0WBN7em0fbp5ZS9l/7\nZinlGkl+L01Fe1MXFwbQJmEGFkuYgWESZmD4SikHlFJemya6fCjJ7TcKMxNobURq8JMzpZQbJnno\n6OXBo+0tSylPHX39uVrrCWP7H5a994Wtbe9dSrnW6Ov3jP9DqbXWUsrRaaZnPl9K+WCS/ZPcN8mP\nJzmu1vrJtn+uZWBqBoZDmIHFEmZgmIQZWBpHJTkmyflJPpPk6evWkllzQq31xEVc0ODjTJKbJXne\n2Os9SQ5JctvR6zckOWHs/XumGTta23dPkjL6syfJ2UnWF7OHJHlikqOTPDzJpUm+kOQZtdY3tPNj\nLBdhBoZDmIHFEmZgeEQZWDprEy9XTvI7m+yzJ8n3k2wVZ9aaQmsXxIKtPXpsGRcEFmZgOIQZWDxx\nBoZFmGEaawsCL/ujtPu0IPDQf9fWnKFVwgwMhzADiyfMwLAIM8CiiDMAAAsgzMCwCDPAIokztMbU\nDAyHqRlYLGEGhkWYARZNnKEVwgwMhzADiyXMwLAIM0AXxBlmJszAcAgzsFjCDAyLMAN0ZRkepU2H\nhBkYDmEGFkuYgeEQZYCumZwBWAHCDABsTJgB+kCcYWqmZmAYhBlYPFMzMAzCDNAX4gxTEWZgGIQZ\nWDxhBoZBmAH6RJxhx4QZANiYMAPDIMwAfSPOsCPCDAyHqRlYLGEGhkGYAfpInAFYQsIMLJYwA8Mg\nzAB95VHaTMzUDAyDMAMAlyXKAH1ncoaJCDMwDMIMLJ6pGeg3YQYYAnGGbQkzMAzCDCyeMAP9JswA\nQyHOsCVhBoZBmIHFE2ag34QZYEjEGQCAHRJmoN+EGWBoxBk2ZWoGhsHUDCyWMAP9JswAQyTOsCFh\nBoZBmIHFEmag34QZYKjEGS5HmIFhEGYAYC9hBhiy/bq+APpFmIFhEGZg8UzNQD+JMsAyMDkDMDDC\nDCyeMAP9JMwAy0Kc4UdMzUD/CTOweMIM9JMwAywTcYYkwgwMgTADiyfMQD8JM8CyEWcQZgBgA8IM\n9JMwAywjcWbFCTMwDKZmAECYAZaXOLPChBkYBmEGFs/UDPSPMAMsM4/SBugxYQYWT5iBfhFlgFVg\ncmZFmZqB/hNmYPGEGegXYQZYFeLMChJmoP+EGVg8YQb6RZgBVok4s2KEGeg/YQYWT5iBfhFmgFUj\nzqwQYQb6T5gBYNUJM8AqEmcAgJVmagb6Q5gBVpU4syJMzUD/mZqBxRNmoD+EGWCVeZT2ChBmoP+E\nGVg8YQb6QZQBMDmz9IQZ6D9hBhZPmIF+EGYAGuLMEhNmoP+EGVg8YQb6QZgB2EucAeiIMAOLJ8xA\nPwgzAJclziwpUzPQb8IMAKtKmAG4PHFmCQkzAHB5pmage8IMwMbEmSUjzED/mZqBxRNmoHvCDMDm\nPEp7iQgz0H/CDCyeMAPdEmUAtmdyBmBBhBlYPGEGuiXMAExGnFkSpmag34QZWDxhBrolzABMTpxZ\nAsIM9JswA8CqEWYAdkacGThhBvpNmIFumJqB7ggzADsnzgyYMAP9JsxAN4QZ6I4wAzAdcQYAWBrC\nDHRHmAGYnkdpD5SpGeg3UzOweMIMdEOUAZidyZkBEmag34QZWDxhBrohzAC0Q5wZGGEG+k2YgcUT\nZqAbwgxAe8SZARFmoN+EGQBWhTAD0C5xBqAFwgx0w9QMLJ4wA9A+cWYgTM1Afwkz0A1hBhZPmAGY\nD3FmAIQZALgsYQYWT5gBmB9xpueEGeg3UzOweMIMLJ4wAzBf+3V9AWxOmIF+E2Zg8YQZWCxRBmAx\nTM4ATEGYAWDZCTMAiyPO9JSpGegvYQa6YWoGFkeYAVgscaaHhBnoL2EGuiHMwOIIMwCLJ870jDAD\n/SXMQDeEGVgcYQagG+JMjwgz0F/CDHRDmIHFEWYAuiPOAAC9JMzA4ggzAN3yKO2eMDUD/WVqBoBl\nJcoA9IPJmR4QZqC/hBnohqkZmD9hBqA/xJmOCTPQX8IMdEOYgfkTZgD6RZwB2IAwA90QZmD+hBmY\nr91f+HbXl8AAiTMA6wgz0A1hBuZPmIH5EmaYljgDMEaYgW4IMzB/wgzMlzDDLMQZAKBTwgzMnzAD\n8yXMMCuP0gYYMTUDwLIRZWC+RBnaIs4ARJiBrpiaAWCohJlhK6X8WpL7JLl9khunubPo60nel+Q5\ntdaztvjso5O8Ksljaq2vbeN6xBlg5Qkz0A1hBubL1AzMjzAzbKWU/ZK8OcnFST6a5ANp+shdk/x2\ns0u5c6319LHP3DvJg5LcLMkRo2/vaeuaxBlgpQkz0A1hBuZLmIH5EWaWwu4kz0nyolrrd9a+WUrZ\nleTVSR6V5FlJHj72mUOT/GZaDDLjxBlgZQkz0A1hBuZLmIH5EWaWQ611d5I/2uD7e0opL00TZ263\n7r1npQk2KaUcm+TYNq9JnAFWkjAD3RBmYL6EGZgPUWalHDjafmeLfXa1fVKP0gZWjjADwDISZmA+\nhJmVc9Roe+oiTyrOAAALYWoG5keYgfkQZlZLKeVOSR6X5LtJjlvkucUZYKWYmoFuCDMwP8IMzIcw\ns1pKKbdM8u40C/4+tNa60P9xteYMsDKEGeiGMAPzI8xA+0SZ1VNKuW2S9yW5apKjaq0nLfoaxBlg\nJQgz0A1hBuZHmIH2CTM785MH3bLrS5hZKeW+SY5PcnGS+9RaT+7iOtzWBCw9YQa6IczA/Agz0D5h\nZvWUUp6Q5J1Jvp3kLl2FmcTkDLDkhBkAlo0wA+0TZlZLKeWAJC9PckySf0ryP2qtWz06e+7EGWBp\nCTPQHVMzMB/CDLRPmFlJR6UJM+cn+UySp5dSNtrvhFrriUlSSjksyWGj769t711Kudbo6/fUWr84\n7QWJM8BSEmagO8IMzIcwA+0SZVbartH2ykl+Z5N99iT5fpITR6/vmeTYsff2JCmjP3uSnJ1EnAFY\nI8xAd4QZmA9hBtolzKy2Wusbk7xxh595VpJnzeeKLAgMALREmIH5EGagXcIMfSTOAEvF1AwAy0SY\ngXYJM/SVOAMsDWEGumNqBtonzEC7hBn6zJozwFIQZqA7wgy0T5iB9ogyDIHJGWDwhBnojjAD7RNm\noD3CDEMhzgCDJsxAd4QZaJ8wA+0RZhgScQYYLGEGgGUizEB7hBmGxpozwCAJM9AtUzPQLmEG2iHK\nMFQmZ4DBEWagW8IMtEuYgXYIMwyZOAMMijAD3RJmoF3CDLRDmGHoxBkAYCLCDLRLmIF2CDMsA3EG\nGAxTMwAsC2EG2iHMsCwsCAwMgjAD3TI1A+0RZmB2ogzLxuQM0HvCDHRLmIH2CDMwO2GGZSTOAL0m\nzEC3hBlojzADsxNmWFbiDNBbwgx0S5gBoE+EGZaZOAP0kjADwDIxNQOzEWZYdhYEBnpHmIHumZqB\n9ggzMD1RhlVhcgboFWEGuifMQHuEGZieMMMqEWeA3hBmoHvCDLRHmIHpCTOsGnEGAEgizECbhBmY\nnjDDKhJngF4wNQPdEmagPcIMTE+YYVVZEBjonDADwLIQZmA6ogyrzuQM0ClhBrpnagbaIczAdIQZ\nEGeADgkz0D1hBtohzMB0hBloiDNAJ4QZ6J4wA+0QZmA6wgzsZc0ZYOGEGeieMAPtEGZg50QZuDyT\nM8BCCTMALAthBnZOmIGNiTPAwggz0A+mZmB2wgzsnDADmxNngIUQZqAfhBmYnTADOyfMwNbEGQBY\nEcIMzE6YgZ0TZmB7FgQG5s7UDHRPmIHZCTOwM6IMTM7kDDBXwgwAy0CYgZ0RZmBnxBlgboQZ6AdT\nMzAbYQZ2RpiBnRNngLkQZqAfhBmYjTADOyPMwHTEGaB1wgz0gzADsxFmYGeEGZieBYGBVgkz0A/C\nDMxGmIHJiTIwO5MzQGuEGQCWgTADkxNmoB3iDNAKYQb6w9QMTE+YgckJM9AecQaYmTAD/SHMwPSE\nGZicMAPtsuYMACwJYQamJ8zAZEQZmA+TM8BMTM1APwgzMD1hBiYjzMD8iDPA1IQZAIZOmIHJCDMw\nX+IMMBVhBvrD1AxMR5iByQgzMH/iDLBjwgz0hzAD0xFmYDLCDCyGOAPsiDAD/SHMADBPwgwsjjgD\nTEyYgf4QZmB6pmZge8IMLJY4A0xEmIH+EGZgesIMbE+YgcUTZ4BtCTPQH8IMTE+Yge0JM9ANcQbY\nkjAD/SHMwPSEGQD6bL+uLwDoJ1EG+kWYgekJMzAZUzPQHZMzwOUIM9AvwgxMT5iByQgz0C2TM8Bl\nCDPQH6IMzEaYgckIM9A9kzPAjwgz0B/CDMxGmIHJCDPQD+IMkESYgT4RZmA2wgwAQyPOAMIM9Igw\nA7MRZmBypmagP8QZWHHCDPSHMAOzEWZgcsIM9Is4AytMmIH+EGZgNsIMTE6Ygf4RZ2BFCTPQH8IM\nAIsizEA/iTOwgoQZ6A9hBmZnagYmI8xAf4kzsGKEGegPYQZmJ8wAsAzEGVghwgz0hzADsxNmYHKm\nZqDf9uv6AoD5E2WgX4QZmJ0wA5MTZqD/TM7AkhNmoF+EGZidMAOTE2ZgGMQZWGLCDPSLMAOzE2Zg\ncsIMDIc4A0tKmIF+EWZgdsIMAMtKnIElJMxAvwgzMDthBnbG1AwMizgDS0aYgX4RZmB2wgzsjDAD\nwyPOwBIRZqBfhBmYnTADOyPMwDB5lDYsCWEG+kOUgXYIM7AzwgwMl8kZWALCDPSHMAPtEGZgZ4QZ\nGLalm5wppdwiyReSvKXWevQW+z0gyZOS/HySA5KcmeT4JM+ttV6wwf67tzn1x2utd576wmFKwgz0\nhzADADAskzSEUsr+SX4rydFJfibJ7jQN4f1JXlBrPWvW61iKOFNKOTjJU5JcP8m90kwE7dli/ycm\neVGSc5O8M8n3k9w9yTOT3KOUckSt9eINPnpekr/a5LBnTv0DwJSEGegPYQbaY2oGdsbUDOzMThpC\nKeUKSU5I0wz+PcnfJbkoyR2TPDnJMaWUw2utn53lmpYiziS5UZqKtWmQWVNKuUGSP09yTpLb11q/\nPvr+riRvSfKrSR6b5KUbfPx7tdantXXRMAthBvpDmIH2CDOwM8IMTGXihpDk0WnCzFtrrQ8df6OU\n8tQkz0vTGO47ywUtxZoztdZTaq371Fr3TXLENrsfleY2pleuhZnRMfYkecbo5THzuVKY3enfOk+Y\ngR4RZqA9wgzsjDAD09lhQ7j1aPuWDd575Wh701mvaSnizDq7tnl/bV2Yj65/o9Z6WpKzk9ymlHLF\nti8MZiXKQL8IM9AeYQZ2RpiB1mzXEL4w2h5TSll/99HBo+3l+sJOLcttTTuxVrTO3uT9bya5TpKb\nJPnSuvduUEq5MM3v7fwk/y/J25McV2s9fw7XCj8izEC/CDPQHmEGgB57dZKHJPmVJJ8rpRyXpKYZ\ndnl1kq8l+aNZT7KMkzPbuWqa+8q+v8n7P0hTzq627vufSvM0p1elGV36UJJbJfmTJB8vpVx9LlcL\nEWagb4QZaI8wAztnagYWp9b6wyRHJjklyS2SvDzJt5J8NU1fuGOt9ZuznmcVJ2fWXLLJ9zccaaq1\n3m7990op10mzavPPJ3l6kj9o7epgRJiBfhFmoD3CDOycMAOLVUq5SpJ/SHLLNE9o+mGSByb5tTSx\n5p9KKaXW+vlZzrOKkzPnpQkwV9rk/QPH9ttSrfWcJE8avdxuESHYMWEG+kWYgfYIM7Bzwgx04nlJ\nfjHJ42qt/1pr/Xyt9U/TxJrfTHLzJCeUUq46y0lWcXLm9CSHJPnJXH5NmSS5QZLdo/0m8d3R9iqz\nXxrsJcxAvwgz0B5hBnZOmKGPrnDrG3R9CYtQ0iyN8v7xb46e+PyaUspDktw7yV2TvGfak6zi5MxH\nRtvLTbqUUm6eZjHgz9daL5jweIeMthuFHpiKMAP9IsxAe4QZ2DlhBjp1wGh7403e33fddiqrGGfe\nmuSiJI8opfwo85VS9kmzuG+SvHH8A6WUx5ZS7rb+QKWUGyZ5dpqK9pq5XTErRZiBfhFmoD3CDAAD\n9N40S6O8ZP2tS6WUI5McnuS/0iwYPLWluK1pFEkeOnq59pzxW5ZSnjr6+nO11hOSpNb6jVLKHyZ5\n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\neWCSH0xy/STfSvLpJH+c5Pha65WbvM85amKWeUw5R01TF38/X/fZRyc5OslHt/p7uvPU6rr2sgcw\nFqWUByT5cJL9kvx5krOS/HCSpyf5T6WU+9daz5zxsw5M8tIkN0tyeJr/6a/xF4gN7/mpJDXJJUne\nm+SrSe6T5LlJfqzd/zd2/ytjWZZ9TK3zziRnb7HOHwAjsshjKskbk9wiyd8neUuSK9Kcc56a5LGl\nlIfXWk/esH/nqYlZ9jG1jvPUBCz4eHplkgck+XiSdyS5MMl/THJEkocneViSp23Yv3PUxCz7mFrH\nOWoiFnxMbfzsZ6YJM8kWf093nlpt4szs3pTkOkkeU2t9/9qLpZSjkvzPJK9K8tgZP+vAJEdlxm+e\nSynXT/J7SS5Nclit9dPr1r0yyS8n+Y12yXgs7Zja4Nha61/N8T6GZ5HH1LFJ/mjjvxCVUl6U5MVJ\nXp3mX5TWXneemqalHVMb3+s8NQmLPJ5ek+TjtdZz1r9YSrljklOSPKWU8txa6zfb152jpmlpx9QG\nzlHTschj6t+VUn4iyeuTvD/Jj2+xjfPUitu37AGMQSnlnknunGb62fvXr6u1vj7Jl5I8ppRy41k+\nr9Z6Zq11X611vyS3m+Etj0py0+atV/1P2jomTVl9cinF7+dIDOCYYmI6OKZessXU3de2y3tteN15\namIGcEwxIR0cT3+y8Zvo1hlpzjcXJvnOutedoyZmAMcUE7PoY2rd5z4oyduTvC/JL26zqfPUivMb\nO5sHtMuTtlh/YppZSPeb47Nnue/PlvuvtV6Y5LNp/ke+wxz7ZzmWfUztZXuGqctjar3rt8uvz7p/\n56nRWvYxtZ7z1Ph1ejyVUm7Y3jPkf6f5++2RtdbLZ9m/c9RoLfuYWs85ahoWfkyVUu6U5vKkTyZ5\nXJpLene9f+ep1eCyptmszUT42hbr1yr7IQPY/2kdjYHFWvYxtd77SinXSTOF8itJPpLk1bXWz/Ww\nbxanr2Pqce3yI3vYv/PUOCz7mFrPeWr8OjueSimfSXLX9ssPJbnrJjeYdo6anmUfU+s5R03DQo+p\nUsqtk3wgzTHx6FrrpaWURe3feWqCzJyZzQ3a5be2WH9Ru7zhRPfP4g3h9/ScNCX/zUl+N8mfpLn5\n2VOSnNw+WYXx6PyYKqXcLskL0/zl83/0vX96t+xjKnGempIuj6fjkrwhyV+luSn+O9p/re5r/yzH\nso+pxDlqahZ2TLWXPn0gzayqR854E1/nqRVn5szufG+L1/uayrjs/bN4S/s9rbW+YONr7TWsICTM\nhQAADBlJREFUR6f5ZumNpZTb1Fq3m37J8HRyTJVSbpXkg0lulORnaq2n9Ll/lmppx5Tz1CQt/Hiq\ntf7O2s9LKfdJ8ndJ3l1KuWut9ZKu98/SLe2Yco6arD0dU+0x8J4kt0rykFrrl/rcP+Nl5sxsvt0u\nr7fF+utv2G5q+2fxBvl7Wmu9otZ6dJIzk9wyzaMDGYfOjqlSysFJ/ibNNNrn1Frf3Of+WZplH1Ob\ncp4arV7OEe3j2P86yQ/m6k//co6anmUfU1tt7xw1Xos6pm6Y5EFJPpfkaaWUV639SPLr7TaHtK+9\npIP9M1JmzszmjHZ52y3WH9QuT5/o/lm8of+enp/k4CTft6T9s3udHFPtvxi+N83shifXWt/W5/5Z\nqmUfUztxnhqXPs8R57fL9U9UcY6anmUfU7O85+A4R43Joo+pw5I8eJvPen6SbyR5UUf7Z2TEmdmc\n2C4fvnFFO23tgUkuT3Jyh/t/frv/N27Y/w3T3LDs/CT/3NH+WbxlH1NbKqVcP8kPpZlSud3N7xiW\nhR9TpZTHprmO/uIkR9Ra/3aH/TtPTcuyj6ntPsd5anx6+XOvlHKtXHUj1zPWrXKOmp5lH1Pbvcc5\napwWcky195fZ9AqVUspt0xxHf1dr3TgTy3lqxbmsaQa11k8lOTXJvUopR2xYfWSaivn+Wuu/Pwa0\nlHJ8KeW0UspvLmAIH0hyXpJHl1LusmHdC5MckOStrmcdj2UfU6WUu5VSntP+5WH96/vS3NDu+5L8\naa31gr3ui34s+pgqpbw0yTuTfCHJfWb4Jtp5amKWfUw5T03LIo+nUsoPl1JeU0q5xSa7+o0kd0py\nSq31E+ted46amGUfU85R09PT38+3u2+M89SKM3Nmds9K8pdJ3ltKeV+SL6Up4ocnOTdN5VzvNmme\nQX+Nk3wp5Qbt5yVXTY+8dSnll9ufn11rfefa9rXWi0opRyV5e5ITSynvTfL1JPdM8oA0f9E9Zs+/\nQvq2tGOq3eZ3k7yslPK3aQr+DdMcT/9Pks8n+YU9/epYhoUcU6WUhyR5QZp/8TsxyVFbPPrxE2vH\nlfPUZC3tmIrz1BQt6s+9A5I8L8kvlFI+nuSUJNdJcv8kd2w/67+uf4Nz1GQt7ZiKc9RULezv57vl\n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\n12+rtX6ng3EBACQxcwYARqfWelKSM9svH9IuT9hi2/cl+ZU0AebnkpxRSrk8yZdzVZj57VrrsbsY\nwi8muSjJndJcAnRp+/VfJ3lYkvdv8973JvnH9uevTfKNNDNb/jzNU5L26hr3u6m1fi1XXYL1lDS/\n9m+2Y7/fJttflKv+e7oRMADQOXEGAMZpfTz4apK/3GrDWuurkzwgzeVQX07y3TQ3/31PkiNqrb+8\nxVuvzFWPx17/eSe3n/feNJdTfTfJGUl+L8ldkvzWNmP5bpKHp4klX2nf+9UkH06yNmvmGvvcaUwb\n1m/mqDSXdn0hyWVJLkjyiSSnb7H92uufqrV+apv9AQDs2ZifpgAAsHDtE6k+n+QHkzyz1voHSx4S\nADBxZs4AAFzdI9OEmW9li8vFAAAWSZwBALi6o9rlCe39ZwAAOiXOAAC0SimHJPnxuBEwANAjcQYA\n4CpHprkn39/XWv9h2YMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAYnv8LTrFLgrpADnoAAAAASUVORK5CYII=\n", | |
|
413 | "text": [ | |||
|
414 | "<matplotlib.figure.Figure at 0x10ffc7c10>" | |||
|
415 | ] | |||
403 | } |
|
416 | } | |
404 | ], |
|
417 | ], | |
405 | "prompt_number": 21 |
|
418 | "prompt_number": 21 | |
@@ -427,15 +440,25 b'' | |||||
427 | "metadata": {}, |
|
440 | "metadata": {}, | |
428 | "outputs": [ |
|
441 | "outputs": [ | |
429 | { |
|
442 | { | |
|
443 | "metadata": {}, | |||
430 | "output_type": "pyout", |
|
444 | "output_type": "pyout", | |
431 | "prompt_number": 22, |
|
445 | "prompt_number": 22, | |
432 | "text": [ |
|
446 | "text": [ | |
433 |
"<matplotlib.text.Text at 0x1 |
|
447 | "<matplotlib.text.Text at 0x11009b3d0>" | |
434 | ] |
|
448 | ] | |
435 | }, |
|
449 | }, | |
436 | { |
|
450 | { | |
|
451 | "metadata": { | |||
|
452 | "png": { | |||
|
453 | "height": 407, | |||
|
454 | "width": 562 | |||
|
455 | } | |||
|
456 | }, | |||
437 | "output_type": "display_data", |
|
457 | "output_type": "display_data", | |
438 | "png": "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\ntm7dioMHDyI6OhpxcXHIyspCVVUVsrKyEB9v379WRERGdPfddwO4dcVGSUkJvvzyS8TFxTm8jknW\n8LA0MTERpaWl8PHxwVtvvYXY2FhxL6UjIrIiLy8PEydOxG+//YapU6di6tSpji8i6ygvL08ODQ2V\nQ0JC5CVLltS6vbi4WI6Pj5ebNGkiL1iwwKF9XUXJzO3atZMjIiLkyMhIOSYmRquRbc68atUquXPn\nznLnzp3l1NRU+T//+Y/d+xptXqM+x59++qncuXNnuUuXLvLjjz8uFxYW2r2vEWfW43m293kqLCyU\nGzRoIH/00UcO72skusY5MjJSzsvLk0tKSuSOHTvK586dq3F7aWmpvHv3bnn27Nm1QmdrXyPO3L59\ne/n8+fOazFmdrZm//fZb+ZdffpFlWZbfffddedSoUXbva7R5jfocX7582fK92WyWExIS7N7XiDPr\n8Tzb8zxdv35dTkpKkvv3718jzno9x0poes65uurXArZr185yLWB1/v7+6NatGxo1auTwvkab+TZZ\n4xc37Zm5e/fulvNk/fv3R15ent37Gmne24z4HDdr1qzG/b29ve3e12gz36bl82zv8/Tmm29i2LBh\n8Pf3d3hfo9EtztauBXT1vkoofVyTyYTk5GQMHjwYOTk5rhixFkdnXr58ueWKGj2eZyXzAsZ+jtev\nX4/27dsjLS0NK1ascGhfI8y8fPlyy3atn2d75j19+jQ2bNiA9PR0y4z27mtE/OAjDeXn56Nt27Yo\nLi7GgAEDEBsbizZt2ug9lsXWrVuxatUqfPvtt3qPYpe65jXyczxkyBAMGTIE69atw+DBg7Fv3z69\nR7Kp+sxDhgyxzGzE53n69Ol49dVXYTKZIN86ZavrPErpduQcExODw4cPW34+dOiQ3ZfRKdlXCaWP\n27ZtWwBAWFgYBg4ciM8++0z1Ge9k78zff/89Jk6ciJycHLRs2dKhfY0yL2Ds5/i2p556CmfOnEFV\nVRW6desmxH/L1WcGtH+e7Zn3u+++w4gRI9ChQwd8/PHHmDRpEnJycnTrhWJ6nvC+fZL+xIkT9Z6k\nf/nll62+IGhrX7U5O/OVK1fkS5cuybJ860XDTp06yT/99JMhZv7vf/8rh4SEyLt27XJ4XyPNa+Tn\n+OjRo/LNmzdlWZbljRs3yv369bN7X6PNrNfz7Mjz9Oyzz8off/yxU/saha5xNpvNcmhoqPzAAw/I\nixcvlmVZlpctWyYvW7ZMlmVZ/vnnn+XAwEC5RYsWcsuWLeWgoCC5oqLC6r5GnvnYsWNyly5d5C5d\nusjJycnyv/71L8PMPG7cONnPz0+OjIysdWmUHs+zs/Ma+TnOyMiQw8PD5cjISHns2LHygQMH6t3X\nyDPr9Tzbmre6O+Os13OshKZvQiEiIvvods6ZiIisY5yJiAyIcSYiMiDGmYjIgBhncrnk5GRs2bKl\nxrZFixZh0qRJdd6/ffv2uHDhQr1rvvLKKzV+7tmzJwCgpKQEERERAIA9e/Zg2rRpAG59StjOnTud\nmp9ID4wzuVxqairWrl1bY9u6deswcuTIOu9/+2239bnzb03m5+fXuk+3bt2wePFiAMC2bduEeecj\nEcA4kwaGDh2KjRs34vr16wBuHd2eOXMG165dw+OPP46ePXvinXfeqXPfIUOGoGvXrkhOTsb69esB\nAH/6059QVVWFqKgojB49GkDdfyrIbDZjwIAB+O9//4vMzEy88cYbiI6Oxo4dO3D//fdb5rl06RLu\nv/9+3LhxwxW/PpFT+Nka5HJ+fn6IjY3Fpk2bMHDgQKxduxbDhg3DH//4R2zevBmtWrVCSkoKevbs\nibCwsBr7ZmVlwdfXF5cuXULv3r0xZMgQvPrqq3jrrbdqfDZFfUfb7dq1w8SJE+Hj44OZM2cCAHr3\n7o2NGzdi0KBBWLt2LYYOHYoGDRq45gkgcgKPnEkT1U9trFu3DkOHDkVYWBhCQkLg6+uLYcOG1fnp\nZmvXrsWjjz6Knj174vjx4zhw4IBTjy/f8UE448ePx8qVKwEA7777LsaOHevUukSuwjiTJgYOHIiv\nvvoK+/btQ2VlZa0jXVmWa207fvw4li5dig8//BAHDhxAhw4dcPHiRace/861e/TogZKSEpjNZty4\ncQOdOnVyal0iV2GcSRPNmzdHUlISxo4di5EjRyI+Ph6HDx/GsWPHcPHiRaxfvx4DBw6ssc+ZM2fg\n7+8PPz8/5Ofno6ioyHKbv78/Kisr7X78du3a4dy5czW2jRkzBk8//TTS0tKU/XJELsA4k2ZSU1Nx\n4MABpKamwmQyITMzE1OmTEH//v0xbtw4ywei3z7K7dWrF9q1a4ewsDAsWrQIffr0saw1ZcoUJCQk\nWF4QrH5kXNf3ffv2xZ49exAVFWW5smPkyJG4ePEiUlNTXfuLEzmBH3xEHmv16tXYtm2b5a+SEBkJ\nr9YgjzRlyhTk5+fj888/13sUojrxyJmIyIB4zpmIyIAYZyIiA2KciYgMiHEmIjIgxpmIyIAYZyIi\nA/p/fJgkSzip6OsAAAAASUVORK5CYII=\n" |
|
458 | "png": "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\nPY495r2BPjrggAPulOTIJD+f5MZJvpjkj5I8s9b6o5Xrn3rqqScdcMABX05zL/MHJDkoza2z/irJ\nb9VaL1n5GgAAAKCfTj311G8ccMABH0zTBO6f5H5pLvD7/5L8Wq31zA6HBwAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAEt263oAQ1JKuVOSFyU5OMk+Sc5J8pEkL6m1fmOL77lvkq8mOaXWev9d\nrHu/JM9Lcs8kP57k7CTvT/KyWut5W9k+3epyTpVSjknyhF283e1rrf+xlXHQjVnNqVLKI5P8UpKf\nT7J/kusm+XaSjyd5ea31P9d4nf3UyHQ5p+ynxmeG8+k+SR6X5D5JbpNkryQXJPlCkrcleWut9epV\nXmcfNTJdzin7qHGax8/ny977xUlenOSTa/2cbj81PdfpegBDUUq5d5KPJdkjyd8nOSvJHZIcnuQR\npZR71VrP3OB77ZPkZUl+Oskhaf6y7/SDw4rX/HKSmuSSJB9I8p0kByX57SQPa7d//ua/MrrS9Zxa\n5t1Jvr7Gc3b8AzLLOZXkDUlukuSzSd6e5Ko0+5wnJnlMKeVBtdaTV2zffmpkup5Ty9hPjcCM59Mr\nktw7yaeTHJfkwiQ/k+TQJA9K8sAkT1qxffuokel6Ti1jHzUSM55TK9/7t9IEmWSNn9Ptp6ZJlNm4\nNya5XpJH1VqPX3qwlHJkkr9M8qokj9nge+2T5Mhs8JfmUspeSf4qyaVJ7ldr/cKy516R5LlJXtAu\nGY7O5tQKR9da/3ELr6N/Zjmnjk7yNyv/RaiU8qIkL0nyZ2n+BWnpcfupcepsTq18rf3UKMxyPr06\nyadrrWcvf7CUcvskpyR5Qinlt2utP2gft48ap87m1Ar2UeMxyzl1jVLKo5O8PsnxSR6+xjr2UxO1\ne9cDGIJSyj2S3CnNYWbHL3+u1vr6JN9M8qhSyk9u5P1qrWfWWnevte6R5NYbeMlDk+zbvHTHX87W\nS9OU1F8vpfh+DkQP5hQjM4c59YdrHKL7F+3ywBWP20+NTA/mFCMyh/n0tyt/eW6dkWZ/c2GSHy17\n3D5qZHowpxiZWc+pZe973yTvSvKhJM9aZ1X7qYnyDd2Ye7fLk9Z4/sQ0Rx3dcwvvvZHr+qy5/Vrr\nhUm+nOYv8O22sH260fWc2s769NM859Rye7XLcze6ffupwep6Ti1nPzV8c51PpZS922uC/F2an2+P\nqLVeuZHt20cNVtdzajn7qHGY+ZwqpdwxzWlIn0tyWJpTdze9ffupcXP60sYsHXnw3TWeX6rq+/dg\n+6fNaQzMVtdzarkPlVKul+ZQyW8n+USSP6u1fmUB22Z2FjWnDmuXn9jG9u2nhqHrObWc/dTwzW0+\nlVK+mOQu7acfSXKXVS4cbR81Pl3PqeXso8ZhpnOqlHKLJCekmROPrLVeWkqZ1fbtp0bEkTIbc8N2\necEaz1/ULvce6faZvT58T89OU+7fkuTPk/xtmouaPSHJye2dUhiOuc+pUsqtk7wwzQ+df7zo7bNw\nXc+pxH5qTOY5n45JclSSf0xzsfvj2n+dXtT26UbXcyqxjxqbmc2p9hSnE9IcRfWQDV6c135qohwp\nszlXrPH4og5Z7Hr7zF5n39Na6/NXPtaeo/riNL8kvaGUcsta63qHWdI/c5lTpZSbJflwkp9I8uRa\n6ymL3D6d6mxO2U+N0sznU631tUt/LqUclORfk7yvlHKXWusl894+netsTtlHjda25lQ7B96f5GZJ\nDq61fnOR22d4HCmzMT9slz+2xvN7rVhvbNtn9nr5Pa21XlVrfXGSM5PcNM0tABmGuc2pUsp+Sf45\nzeGyz6y1vmWR26czXc+pVdlPDdZC9hHtbdU/nuQ2ufbdvOyjxqfrObXW+vZRwzWrObV3kvsm+UqS\nJ5VSXrX0keQP2nX2bx/7wzlsn4FxpMzGnNEub7XG8zdvl6ePdPvMXt+/p+cl2S/JDTraPps3lznV\n/gvhB9IczfDrtdZ3LnL7dKrrObUr9lPDssh9xHntcvkdUuyjxqfrObWR1+wX+6ghmfWcul+S+6/z\nXs9Jcn6SF81p+wyEKLMxJ7bLB618oj087T5Jrkxy8hy3/5x2+29Ysf2901yI7Lwk/zGn7TN7Xc+p\nNZVS9krys2kOnVzvonb0y8znVCnlMWnOk784yaG11n/Zxfbtp8al6zm13vvYTw3PQv6/V0rZLTsu\n0HrGsqfso8an6zm13mvso4ZpJnOqvX7MqmeklFJulWYe/WutdeWRV/ZTE+X0pQ2otX4+yalJDiyl\nHLri6SPSVMvja63X3M6zlPLWUspppZSXz2AIJyT5XpJHllLuvOK5FybZM8k7nK86HF3PqVLKXUsp\nz2x/aFj++O5pLlR3gyTvrbV+f7vbYjFmPadKKS9L8u4kX0ty0AZ+ebafGpmu55T91LjMcj6VUu5Q\nSnl1KeUmq2zqBUnumOSUWutnlj1uHzUyXc8p+6jxWdDP5+tdF8Z+aqIcKbNxT03yD0k+UEr5UJJv\npinghyQ5J03VXO6Wae4hv9POvZRyw/b9kh2HQd6ilPLc9s9fr7W+e2n9WutFpZQjk7wryYmllA8k\nOTfJPdLcz/5rSV667a+QRetsTrXr/HmSPyql/EuaYr93mvn0P5N8NckztvXV0YWZzKlSysFJnp/m\nX/hOTHLkGrdw/MzSvLKfGq3O5lTsp8ZoVv/f2zPJs5M8o5Ty6SSnJLleknsluX37Xr+6/AX2UaPV\n2ZyKfdRYzezn882yn5ouR8psUK31k2l2zO9Pc+Gmp6ap5sek+Re//1rxkqvbj9X8VJJXtB/Pa9e7\n1bLHnrbK9muaQ9n+JclDkvxmmr/8f57kXrXW81a+hn7reE59Ic0vSJ9O88PGk5L8cpIL09wx4Odq\nreds+YujEzOcU0v/irNH+x7PWeXjfyd56Irt20+NTMdzyn5qZGY4n05Ls395X5oLqT4xyWPT/Fz7\n2iR3rbV+ZZXt20eNTMdzyj5qhGb88/lWtm8/BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAm7db1AACAfiqlnJnklkmOqLW+sePhJElK\nKcckeUKS42qtj+t4OAAA23KdrgcAAKytlPKyJM9P8oMkN661XraB1zw7yauTnJPkprXWq7Y5jKu3\n+fprlFLenuRXk7yl1nr4Gus8Kcmb20/3q7V+fVdjKqXsl+T09tPDa61vWfbcU5IcneSsWuv+2/oC\nAABmaPeuBwAArOsd7XLvJA/b4GuWjiA5bgZBZl7WCz1XJLk0ySW7WG/l+y295ootbBMAYOEcKQMA\nPVZrPa2U8sUkd0vy2CR/t976pZRbJzkoTYB4x3rr9lWt9e1J3r7J15yV5MfmMyIAgPlwpAwA9N+x\n7fKRpZS9drHuY9vlGbXWT89xTNvlunYAwOQ5UgYA+u+dSV6R5AZJHpXkXeusuxRljl3+YCnloCTP\nSXJwkhslOT/JiUleV2v92GYHVEp5YZJ7Jtk/yU3SnF71wyT/nuT97fteuGz9/bLjmi9J8sRSyhNX\nvO1+tdavl1IOSfKRJKm1bugfkEop10mydL2dB9Za/7l9/Mw0FytOkv1KKStP5zo8yYVJ3t2+/ma1\n1vPW2MaDk3w0zSlSN621/mAjYwMAWIsjZQCg52qtZyf55/bTx661XinljknulObUpWOXPf7sX1fY\nrwAABfRJREFUJJ9OcliagLJ7mjDz6CQfLaX86RaG9fwkD09yhyT7tNv8iST3TvLHSU4upfzUsvWX\nrvmyFEWuShM3ln+svObLVq4Bc/WK1628xszKbV6R5pSwc5JcL82dndbym+3yOEEGAJgFUQYAhmEp\nsjyklPITa6yzdIHfL9ZaT0uSUsrD09yJ6eokr0tzNMp1k9wsyR+2j/9ue4eizTg5yQuS3CPJ9Wut\n10uyb5KnpDli5vZJXri0cq31rFrrj6U56idJ3lpr3WvFxzc2OYZdqrXePskR7adnrrLNd9RaL0+y\ndLem31jtfUopN0ryS2n+e/Xi9uAAwPA5fQkAhuE9SV6fZM8kv5zkb1ZZ57B2ufzUpVe0y6Nrrc9a\nerDW+p0kLymlXJEmzvxRKeWtG7nldvv6+6/y2HlJ3tweIfOnSX4xybNXrNbFtWQ2ss2/TvLcJHcs\npdyr1vqpFc8/Icl1k3xllecAALbEkTIAMAC11u8nOb79dKdTmEopBya5TZrTgt7ZPnbnJHdMc3TH\nn6zx1q9JcnGa05n+14yG+4V2efMZvd/c1Vr/I8kn0gSc1Y4aWnrMUTIAwMw4UgYAhuPYNBf6fWAp\nZd9a6znLnls6dekTtdZvtX8+qF1+q71l9E5qrReWUr6Q5D5JDkzyoY0OppRy2yS/kuTnk9w6zcV+\nb9h+JM2RJUPypjQXQv6VUspvL12ouJRyvzSnY12Y5G0djg8AGBlRBgCG4/1JfpTkx5OUJEclSSll\ntzRxJLn2qUs/3S6/s4v3/Xa7vPFGBlFK2SPJa5M8Pdc+NWjpArtXJNljI+/VM+9J8hdJfjLN0Uj/\nt318+QV+f9jFwACAcXL6EgAMRK31kiTvaz9dfgrTfZPcIs3djeoChvKHSY5ME2Q+nuSJSe6a5Ea1\n1j2SHLqAMcxcrfXS7DgS5ilJUkrZJ00Ac4FfAGDmHCkDAMNybJLHJ7lPKeUWtdZvZsepSyesuFXz\n0hEyN9vFe960XX53Vxtvj8o5sv30DbXWp6+yWhcX852VNyV5VpKfL6UckOQBSa6f5o5WJ3c5MABg\nfBwpAwDD8tEk56T5f/hhpZTdkzymfe4dK9b9bLu8cXv9l52UUm6Y5rbWy9dfz75prh1zdXac3rMZ\nV7TLPbfw2q3a8DZrrack+VR2XPB36dQlR8kAADMnygDAgNRar0zy7vbTxyU5JE0ouSDJB1as+5Uk\np6YJDC9c4y1/J82RIOekCT67cumyP//0GuvcfZ3Xn7OBdWZtaZs3LqVs5Lo5b2qXT01ylzTX8VkZ\nvAAAts3pSwAwPMemOYXoHkn+oH3sve01UVb6P2lizeNLKRcneXmt9axSyk3SXKj3BWmOenlhrfWy\nXW241vqDUsqnk9wzyStLKeemuQX2Hu1jz8v615Q5qV3evpTyjCRvTXOXpp9LcuKcLqR7cpIr2zH+\naSnl99PcSekOSX5Qa/3qivWPS3Or8L3bz99Za/3RHMYFAEycI2UAYGBqrSclObP99OB2eewa634o\nye+mCS+/meSMUsqVSb6VHUHmNbXWozcxhGcluSjJHdOc6nNp+/nHkzwwyfHrvPYDSf6t/fNfJDk/\nzZEsf5/mrkfbtdP1bGqt382OU62ekOZr/0E79nuusv5F2fHf0wV+AYC5EWUAYJiWR4PvJPmHtVas\ntf5ZknunOe3pW0kuT3NR3/cnObTW+tw1Xnp1dtzmevn7ndy+3wfSnDZ1eZIzkvxVkjsneeU6Y7k8\nyYPSRJJvt6/9TpKPJVk6Smanbe5qTCueX82RaU7h+lqSy5J8P8lnkpy+xvpLj3++1vr5dbYHALBl\nQ747AgDAzLV3mPpqktsk+a1a6193PCQAYKQcKQMAcG0PSRNkLsgap4UBAMyCKAMAcG1Htstj2+vL\nAADMhSgDANAqpeyf5OFxgV8AYAFEGQCAHY5Ic829z9Zav9T1YAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANb2/wG6ZaKxl4EkNQAA\nAABJRU5ErkJggg==\n", | |
|
459 | "text": [ | |||
|
460 | "<matplotlib.figure.Figure at 0x10ffc7210>" | |||
|
461 | ] | |||
439 | } |
|
462 | } | |
440 | ], |
|
463 | ], | |
441 | "prompt_number": 22 |
|
464 | "prompt_number": 22 | |
@@ -463,18 +486,28 b'' | |||||
463 | "metadata": {}, |
|
486 | "metadata": {}, | |
464 | "outputs": [ |
|
487 | "outputs": [ | |
465 | { |
|
488 | { | |
|
489 | "metadata": {}, | |||
466 | "output_type": "pyout", |
|
490 | "output_type": "pyout", | |
467 |
"prompt_number": |
|
491 | "prompt_number": 23, | |
468 | "text": [ |
|
492 | "text": [ | |
469 |
" |
|
493 | "<matplotlib.text.Text at 0x1109ef450>" | |
470 | ] |
|
494 | ] | |
471 | }, |
|
495 | }, | |
472 | { |
|
496 | { | |
|
497 | "metadata": { | |||
|
498 | "png": { | |||
|
499 | "height": 407, | |||
|
500 | "width": 573 | |||
|
501 | } | |||
|
502 | }, | |||
473 | "output_type": "display_data", |
|
503 | "output_type": "display_data", | |
474 | "png": "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\nQmCC\n" |
|
504 | "png": "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\neZ2V5HmL/RMAAAAAM3hEkjOTvLGU8qYkFyT5uSQnJNmb5LEbtj86yfWTHLnJvn43ya2TvLCUcu8k\n/9luf1KaT916xDz+AFsZ60TPxUl+KcnD04xqfTTJg5Pcqtb65Y0b11qfleS/J/n3JP93kt9IcsU0\nEz2/tD4MAQAAAP1Wa31vktskOSPJ7dPEmBskeVmSW9ZaP73hKfvaX5vt6z+S3CLJ6WkGQh7R7vt1\nSW5Ta13YZVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3TAsg9glZRSbpjkKUnumOSI\nJHuTvC3JU2utn5tyn3uSfDLJ2bXWO+yw7fFJHp/k1kl+Isnnk5yR5I9qrRdO8/os1zLPqVLKy5I8\naIfdHVdr/Y9pjoPl6OqcKqXcM8mvJLlVkmOTXDHJF5O8M8nTaq3/ucXzvE8NzDLPKe9Tw9Ph+XS7\nJA9Icrsk10tyaJJvJflIklckOb3Wum+T53mPGphlnlPeo4ZpHt+fr9v3qUlOTfLerb5P9z5FFw5a\n9gGsilLKbZO8I8kVkvxDkvOT/HyShyY5qZRym1rreRPu64gkf5Tkp5KckOYNZL9vRjY8595JapLv\nJXljki8nuWWS30ly9/b1v7H7PxnLsuxzap3XJPnsFo/5j8kK6fKcSvLCJEcm+XCSv0nyozTvOQ9O\ncp9Syl1qrR/a8PrepwZm2efUOt6nBqDj8+kZSW6b5Kwkr05yUZKfTnJikrskuXOSh2x4fe9RA7Ps\nc2od71ED0fE5tXHfD08TeZItvk/3PkVXhJ7JvSjJlZLcq9b65rU7SymnJPnfSZ6Z5D4T7uuIJKdk\nwh/ESymHJnlBkkuSHF9r/ci6x56R5PeSPKm9ZXUs7Zza4MW11n+c4nn0T5fn1IuT/PXGf7kqpTwl\nyVOTPCvNv3St3e99apiWdk5tfK73qUHo8nx6dpKzaq2fX39nKeW4JGcneVAp5Xdqrd9s7/ceNUxL\nO6c28B41HF2eUz9WSvnlJM9L8uYk99hiG+9TdObAZR/AKiil3CzJDdOM2L15/WO11ucluSDJvUop\nPznJ/mqt59VaD6y1XiHJdSd4yt2S7Gmeetn/4VunpSm+v1ZK8fe5InpwTjEwczin/nCL8eTntrc3\n33C/96mB6cE5xYDM4Xx63cYfyFvnpnm/uSjJd9bd7z1qYHpwTjEwXZ9T6/Z7+yR/l+RNSR69zabe\np+iMk2Qyt21v37/F4+9LMx116yn2Pck6SVu+fq31oiT/X5o3hetP8fosx7LPqVm2p5/meU6td2h7\n+7VJX9/71Mpa9jm1nvep1TfX86mUcni7xsr/SfP97cm11ksneX3vUStr2efUet6jhqHzc6qUcoM0\nl2D9S5L7pblsedev732K3XLp1mTWJiS+ssXja/X/2B68/jlzOga6texzar03lVKulGZM9ItJ3p3k\nWbXWjy3gtenOos6p+7W3757h9b1PrYZln1PreZ9afXM7n0opH01y4/bLtyW58SaLe3uPGp5ln1Pr\neY8ahk7PqVLKtZO8Jc05cc9a6yWllK5e3/sU2zLRM5mrtLff2uLx77a3hw/09eleH/5OP5/mXxhe\nnuTPk7wuzcJzD0ryofYTclgdcz+nSinXTfLkNN/I/q9Fvz4Lt+xzKvE+NSTzPJ9eluT5Sf4xzQcS\nvLr9V/RFvT7LsexzKvEeNTSdnVPt5V1vSTPtddcJF1D2PkVnTPTszg+3uH9R45rLfn26t7S/01rr\nEzfe117ze2qaH7xeWEo5uta63Ygp/TOXc6qUcs0kb01y1SS/Xms9e5Gvz1It7ZzyPjVInZ9PtdY/\nW/t9KeWWSd6T5A2llBvXWr8379dn6ZZ2TnmPGqyZzqn2HDgjyTWT3LHWesEiXx8SEz2T+nZ7e8gW\njx+6YbuhvT7d6+Xfaa31R7XWU5Ocl+SoNB8nyWqY2zlVSrlOknelGRV+VK315Yt8fZZm2efUprxP\nrayFvEfUWj+U5J1JrpfLf4qb96jhWfY5tdX23qNWV1fn1OFJbp/kY0keUkp55tqvJE9otzm2ve8P\n5/D6YKJnQue2t8ds8fi12tvPDPT16V7f/04vTHKdJIct6fXZvbmcU+2/ZL4xzdTFr9Va/3aRr89S\nLfuc2on3qdWyyPeIC9vb9Z+M4z1qeJZ9Tk3ynOvEe9Qq6fqcOj7JHbbZ12OTfCPJU+b0+oyY0DOZ\n97W3d9n4QDuad7sklyb50Bxf/7Ht679ww+sfnmaxuAuT/MecXp/uLfuc2lIp5dAkP5dmbHS7hQfp\nl87PqVLKfdKsO3BxkhNrrf+8w+t7nxqWZZ9T2+3H+9TqWch/90opB+SyRXTPXfeQ96jhWfY5td1z\nvEetpk7OqXY9nk2vnCmlHJPmPHpPrXXjhJj3KTrj0q0J1Fr/NcnHk9y8lHLihodPTlNX31xr/fFH\nw5ZSTi+lnFNKeVoHh/CWJF9Ncs9Syo02PPbkJAcneaXrf1fHss+pUspNSimPar8RWX//gWkWEzws\nyetrrV+f9bVYjK7PqVLKHyV5TZJPJbnlBD+Qe58amGWfU96nhqXL86mU8vOllGeXUo7c5KWelOQG\nSc6utX5w3f3eowZm2eeU96jhWdD359uts+N9is6Y6JncI5KcmeSNpZQ3JbkgTak/IcneNPV1vaOT\nXD/Jfv/BKKVcpd1fctkI6LVLKb/X/v6ztdbXrG1fa/1uKeWUJH+X5H2llDcm+VqSmyW5bZpvmk+b\n+U/Ioi3tnGq3+fMkf1xK+ec0/7JweJrz6WeSfDLJb8/0p2MZOjmnSil3TPLENP8S+b4kp2zxcaAf\nXDuvvE8N1tLOqXifGqKu/rt3cJLHJPntUspZSc5OcqUkt0lyXLuv/7H+Cd6jBmtp51S8Rw1VZ9+f\n75b3KbpkomdCtdb3pnmzPyPN4lqPSFP3X5bmXyY/veEp+9pfm7lakme0vx7fbnfMuvseucnr1zRj\nfP+c5K5JHpbmDeXPk9ym1nrhxufQb0s+pz6S5oeus9J8A/OQJPdOclGaT4q4Ra1179R/OJaiw3Nq\n7V+brtDu47Gb/PrdJHfb8PrepwZmyeeU96mB6fB8OifN+8sb0ix2++Ak90/zfe2fJblJrfVjm7y+\n96iBWfI55T1qgDr+/nya1/c+BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+zlg2QcAAPRTKeW8JEcnObnW+qIlH06SpJTysiQPSvLq\nWusDlnw4AAC9c9CyDwAA2Fop5Y+SPDHJN5Nco9b6/Qme85gkz06yN8lRtdYfzXgY+2Z8/o+VUv4m\nyf9I8vJa60O32OYhSV7afnmdWutndzqmUsp1knym/fKhtdaXr3vsN5O8OMn5tdZjZ/oDAAD03IHL\nPgAAYFuvbG8PT3L3CZ+zNuny6g4iz7xsF49+mOSSJN/bYbuN+1t7zg+neE0AgEEw0QMAPVZrPaeU\n8tEkv5Dk/kn+z3bbl1Kum+SWaaLGK7fbtq9qrX+T5G92+ZzzkxwynyMCAFgdJnoAoP9e1d7es5Ry\n6A7b3r+9PbfWetYcj2lW1gkEAJgDEz0A0H9/m+QZSQ5Lcq8kf7fNtmuh51Xr7yyl3DLJY5PcMcnV\nk3wjyfuS/EWt9R27PaBSypOT3DrJsUmOTHNp2beTfCLJGe1+L1q3/XVy2Ro6SfLgUsqDN+z2OrXW\nz5ZSTkjytiSptU70j1KllIOSrK1fdOda67va+89Ls6B0klynlLLxUraHJrkoyWva51+z1nrhFq/x\nS0nenubysKNqrd+c5NgAABbJRA8A9Fyt9fNJ3tV+ef+ttiul3CDJDdNctvWqdfc/JslZSe6XJsoc\nmCb2/HKSt5dSnj7FYT0xyT2S/HySI9rXvGqS2yb5X0k+VEq52rrt19bQWQstP0oTTNb/2riGzjRr\n6uzb8LyNa/ZsfM0fprkcbm+SK6X5RK+tPKy9fbXIAwD0ldADAKthLdzctZRy1S22WVuE+aO11nOS\npJRyjzSfwLUvyV+kmZq5YpJrJvnD9v7fbz+Zajc+lORJSW6W5Mq11isl2ZPkN9NM9hyX5MlrG9da\nz6+1HpJmOilJTq+1Hrrh1+d2eQw7qrUel+Tk9svzNnnNV9Zaf5Bk7VO6fmOz/ZRSrp7kV9L879WL\nj5oHANiMS7cAYDW8Nsnzkhyc5N5J/nqTbe7X3q6/bOsZ7e2La62PXruz1vrlJE8tpfwwTfD541LK\n6ZN8fHv7/Dtsct+FSV7aTvI8Pcn/leQxGzZbxto8k7zmXyb5vSQ3KKXcptb6gQ2PPyjJFZN8bJPH\nAAB6w0QPAKyAWuvXk7y5/XK/y7dKKTdPcr00l0T9bXvfjZLcIM0Uyp9ssevnJLk4zaVc/62jw/1I\ne3utjvY3d7XW/0jy7jRRaLPpprX7TPMAAL1mogcAVser0izGfOdSyp5a6951j61dtvXuWusX2t/f\nsr39Qvvx4/uptV5USvlIktsluXmSN016MKWUn01y3yS3SnLdNAsyX6X9lTQTMKvkJWkWq75vKeV3\n1haTLqUcn+ZStIuSvGKJxwcAsCOhBwBWxxlJvpPkJ5KUJM9PklLKAWmCS3L5y7Z+qr398g77/WJ7\ne41JDqKUcoUkf5bkt3L5y6LWFkH+YZIrTLKvnnltkucm+ck0U1N/1d6/fhHmby/jwAAAJuXSLQBY\nEbXW7yV5Q/vl+su3bp/k2mk+1aou4FD+MMkpaSLPO5M8OMlNkly91nqFJCcu4Bg6V2u9JJdN7Pxm\nkpRSjkgT1SzCDACsBBM9ALBaXpXkgUluV0q5dq31glx22dZbNnzs99okzzV32OdR7e1Xdnrxdnro\nlPbLF9Zaf2uTzZax4HJXXpLk0UluVUr5r0nulOTKaT7J7EPLPDAAgEmY6AGA1fL2JHvT/Df8fqWU\nA5Pcp33slRu2/XB7e412PZ39lFKukuYj0tdvv509adbi2ZfLLm3ajR+2twdP8dxpTfyatdazk3wg\nly3KvHbZlmkeAGAlCD0AsEJqrZcmeU375QOSnJAmvnwryRs3bPuxJB9PEy2evMUu/580Eyt700Sk\nnVyy7vc/tcU2N93m+Xsn2KZra695jVLKJOsQvaS9fUSSG6dZF2ljRAMA6CWXbgHA6nlVmsunbpbk\nCe19r2/XmNnoD9IEoAeWUi5O8rRa6/mllCPTLKb8pDTTOU+utX5/pxeutX6zlHJWklsn+dNSytfS\nfJz6Fdr7Hp/t1+h5f3t7XCnlt5OcnubTuW6R5H1zWuz4Q0kubY/x6aWU/5nmE7R+Psk3a62f3LD9\nq9N87Pzh7dd/W2v9zhyOCwCgcyZ6AGDF1Frfn+S89ss7trev2mLbNyX5/TQx52FJzi2lXJrkC7ks\n8jyn1vriXRzCo5N8N8kN0lzmdEn79TuT3DnJm7d57huT/Hv7++cm+UaaiZt/SPNpV7Pab32gWutX\nctllZg9K82f/Znvst95k++/msv89LcIMAKwUoQcAVtP6EPHlJGdutWGt9VlJbpvmkq8vJPlBmoWX\nz0hyYq3197Z46r5c9pHp6/f3oXZ/b0xzydgPkpyb5AVJbpTkT7c5lh8kuUua8PLF9rlfTvKOJGvT\nPPu95k7HtOHxzZyS5vK1TyX5fpKvJ/lgks9ssf3a/f9aa/3XbV4PAKBXVvlTMQAAOtd+stgnk1wv\nycNrrX+55EMCAJiYiR4AgMu7a5rI861scUkcAEBfCT0AAJd3Snv7qna9HgCAlSH0AAC0SinHJrlH\nLMIMAKwooQcA4DInp1nD8MO11n9b9sEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjNv/D946C4GGg8YDAAAAAElFTkSuQmCC\n", | |
|
505 | "text": [ | |||
|
506 | "<matplotlib.figure.Figure at 0x1109e0310>" | |||
|
507 | ] | |||
475 | } |
|
508 | } | |
476 | ], |
|
509 | ], | |
477 |
"prompt_number": |
|
510 | "prompt_number": 23 | |
478 | }, |
|
511 | }, | |
479 | { |
|
512 | { | |
480 | "cell_type": "markdown", |
|
513 | "cell_type": "markdown", | |
@@ -499,11 +532,28 b'' | |||||
499 | "metadata": {}, |
|
532 | "metadata": {}, | |
500 | "outputs": [ |
|
533 | "outputs": [ | |
501 | { |
|
534 | { | |
|
535 | "metadata": {}, | |||
|
536 | "output_type": "pyout", | |||
|
537 | "prompt_number": 24, | |||
|
538 | "text": [ | |||
|
539 | "<matplotlib.text.Text at 0x1109e3b10>" | |||
|
540 | ] | |||
|
541 | }, | |||
|
542 | { | |||
|
543 | "metadata": { | |||
|
544 | "png": { | |||
|
545 | "height": 407, | |||
|
546 | "width": 562 | |||
|
547 | } | |||
|
548 | }, | |||
502 | "output_type": "display_data", |
|
549 | "output_type": "display_data", | |
503 | "png": "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\nAeyS/5wqC8i5AAAAAElFTkSuQmCC\n" |
|
550 | "png": "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\nTCll91LKiUnenOTmSd6Z5MQkV01yTJKPlVKuteY1T0ryjiS3T/KuJH+T5Kdp/vDeX0q5yvx+BwAA\n/WBqBoBFKaXcLcnHkzwkyceSvC7JfyY5MskZpZT957EfQ5yU+b0kj0hyWpL7rUzFlFL2SPKyJE9I\n8sIkR7X336j9+vwkd1qpZaWU3ZK8JclvJ3lsklfN97cBANB9B+y7w8QMAIvwujTDGQ+utZ6ycmcp\n5egkf5nkpUkOm/VODG5SJsnD29tjVy9TqrVenuRPknwvyaNKKXu1Dx2eZrnSa1ePL9Var0jy9PbL\nI2e+1wAAPeUiwADMUynljkluk+TfVgeZJKm1vjrJeUkeXEr5xVnvyxCjzA2SXJHk7LUP1FovSTO2\ntFeSg9q779benrbO87+c5NtJbl9KudpM9hYAYCCEGQDmZOTP+a1T06wsususd2SIUeZrSXZLcrsR\nj1/Q3l6/vb1pe/vtDd7vgKnsHQDAgJmaAWAOJvk5P5nDz/lDvKbM8UnuneQ17QV635fk4iQ3THLf\nJPdon7eyfOmaaSZrRi12vjhNlPHdAwDAlLjWDAAzdM32dtzP+ckcfs4fXJSptZ5YSjkgyTOSnLTm\n4e8l+cmqf17tshFvudt29uezp//rdl4OAAAAC9GDn2dn8nP+Zgxx+VJqrcem+TjsxyU5NsnT0lxV\n+cZJvpNmMubz7dN/mOYP5Ooj3m7vVc8DAAAAltvKz+8L/zl/cJMyK2qt5yY5bvV97cdf3zbJOe3j\nSXNB4DskuUmazyxf60ZJfpZ1Lhw8zqGHHjq38gYAAADT0oOfZ1d+fr/JiMdv1N5+edY7MshJmTGO\naW9Xx5pT29v7rn1yKeXmSa6b5D9qrT+e8b4BAAAA2zfu5/zdk9w9yeVJzpj1jogySUope5ZSnp3k\nMUnOTPKyVQ+/LcmlSR7ZTtKsvGb3JM9rvzxhXvsKAAAAbF2t9VNJzkpyUCnlfmsePirNpMwptdbv\nznpfuj5ytCWllKOS3D/JV5Lsk+Q+af6lfzLJg2qt31rz/D9K8pI0H5f9niQ/SnKvNEudTk/yq7XW\nS+f2GwAAAAC2rJRyjyQfTDOs8t4k5yX55SSHprnW7N1rrf896/3YY9YbWEYHHnjgbZIcneTOSa6f\n5DNJnp/kCbXWH619/llnnXXagQce+Nk0n2V+7yQHp/norL9K8ge11p+sfQ0AAACwnM4666yvHnjg\nge9J0wTuleSeaS7w+/+SPLzWes4Cdw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABW7Lbo\nHeiSUsptkjw7ySFJ9klyfpL3J3lOrfWrW3zP6yb5QpIza6332uC590zytCR3SfILSb6W5F1Jnldr\nvWAr22exFnlMlVKOT3LEBm93y1rrF7eyHyzGtI6pUsqDkvxmkjsnOSDJVZJ8I8mHkryg1vpfI17n\nPNUzizymnKf6Z4rH092TPCzJ3ZPcLMneSS5M8ukkb0xyYq31inVe5xzVM4s8ppyj+mkW35+veu9j\nkhyT5N9GfZ/uPDU8ey56B7qilHK3JP+UZI8k/5Dk3CS3SnJkkt8opdy11nrOhO+1T5LnJblekkPT\n/Me+yzcOa17zW0lqkp8keXeSbyU5OMmTkjyg3f73N/87Y1EWfUyt8rYkXxnxmBN/h0zzmEry2iT7\nJvlEkjcl+Vmac84jkxxWSrlvrfWMNdt3nuqZRR9TqzhP9cCUj6cXJ7lbktOTnJzkoiS/lOR+Se6b\n5D5JHrVm+85RPbPoY2oV56iemPIxtfa9/yBNkElGfJ/uPDVMoszkXpfkqkkeXGs9ZeXOUsrRSf4y\nyUuTHDbhe+2T5OhM+ENzKWXvJH+V5JIk96y1fnrVYy9O8tQkz2xv6Y6FHVNrHFdr/ectvI7lM81j\n6rgkf7v2b4RKKc9O8pwkf57mb5BW7nee6qeFHVNrX+s81QvTPJ5eluT0WuvXVt9ZSrllkjOTHFFK\neVKt9Qft/c5R/bSwY2oN56j+mOYx9XOllIckeXWSU5I8cMRznKcGavdF70AXlFLumOQ2acbMTln9\nWK311UnOS/LgUsovTvJ+tdZzaq2711r3SHLTCV7y60mu27x053+crWPTlNTfLaX48+yIJTim6JkZ\nHFPPHTGi+xft7UFr7nee6pklOKbokRkcT3+39ofn1tlpzjcXJfnRqvudo3pmCY4pembax9Sq971H\nkrcmeW+SJ455qvPUQPkDnczd2tvTRjx+apqpo7ts4b0nua7PyO3XWi9K8tk0/wHfYgvbZzEWfUxt\n5/ksp1keU6vt3d5+d9LtO0911qKPqdWcp7pvpsdTKWVHe02Qv0/z/e1RtdbLJ9m+c1RnLfqYWs05\nqh+mfkyVUm6dZhnSJ5Mcnmbp7qa37zzVb5YvTWZl8uDbIx5fqeoHLMH2Pz+jfWC6Fn1MrfbeUspV\n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\nST5QSnnRFnbrGUkemORWSfZpt3mtJHdL8mdJziilXHvV81eu+bISRX6WJm6s/rX2mi9buQbM+V5h\nAAAABa1JREFUFWtet/YaM2u3eVmaJWHnJ7lqmk92GuX329uTBRkAYBpEGQDohpXIcv9SyrVGPGfl\nAr+fqbV+PklKKQ9M80lMVyR5VZpplKskuWGS57b3/3H7CUWbcUaSZya5Y5Kr1VqvmuS6SR6TZmLm\nlkmetfLkWuu5tdarp5n6SZITa617r/n11U3uw4ZqrbdMclT75TnrbPPNtdafJln5tKbfW+99SinX\nSfKbaf59LcXHgwMA3Wf5EgB0w9uTvDrJXkl+K8nfrvOcw9vb1UuXXtzeHldrfeLKnbXWbyV5Tinl\nsjRx5vmllBMn+cjt9vX3Wue+C5K8oZ2QeVGS/53kyWuetohryUyyzb9O8tQkty6l3LXW+rE1jx+R\n5CpJPrfOYwAAW2JSBgA6oNb6vSSntF/usoSplHJQkpulWRb0lva+2ya5dZrpjheOeOuXJ/lxmuVM\n/2tKu/vp9vZGU3q/mau1fjHJR9IEnPWmhlbuMyUDAEyNSRkA6I6T0lzo9z6llOvWWs9f9djK0qWP\n1Fq/3v7zwe3t19uPjN5FrfWiUsqnk9w9yUFJ3jvpzpRSbp7kt5PcOclN01zs95rtr6SZLOmS16e5\nEPJvl1KetHKh4lLKPdMsx7ooyRsXuH8AQM+IMgDQHe9K8qMkv5CkJHlNkpRSdksTR5IrL126Xnv7\nrQ3e9xvt7fUn2YlSyh5JXpHkD3PlpUErF9i9LMkek7zXknl7kr9I8otpppH+pr1/9QV+f7iIHQMA\n+snyJQDoiFrrT5K8s/1y9RKmeyTZL82nG9U57MpzkxydJsh8KMkjk9w+yXVqrXskud8c9mHqaq2X\nZOckzGOSpJSyT5oA5gK/AMDUmZQBgG45Kckjkty9lLJfrfW87Fy69L41H9W8MiFzww3e8wbt7bc3\n2ng7lXN0++Vra61/uM7TFnEx32l5fZInJrlzKeXAJPdOcrU0n2h1xiJ3DADoH5MyANAtH0hyfpr/\nhx9eStk9yWHtY29e89xPtLfXb6//sotSyjXTfKz16uePc9001465IjuX92zGZe3tXlt47VZNvM1a\n65lJPpadF/xdWbpkSgYAmDpRBgA6pNZ6eZK3tV8+LMmhaULJhUnevea5n0tyVprA8KwRb/lHaSZB\nzk8TfDZyyap/vt6I59xhzOvPn+A507ayzeuXUia5bs7r29vHJrldmuv4rA1eAADbZvkSAHTPSWmW\nEN0xydPb+97RXhNlrf+bJtY8opTy4yQvqLWeW0rZN82Fep+ZZurlWbXWSzfacK31B6WU05PcJclL\nSinfTfMR2Hu09z0t468pc1p7e8tSyuOTnJjmU5rulOTUGV1I94wkl7f7+KJSyp+m+SSlWyX5Qa31\nC2uef3Kajwrf0X79llrrj2awXwDAwJmUAYCOqbWeluSc9stD2tuTRjz3vUn+OE14+f0kZ5dSLk/y\n9ewMMi+vtR63iV14YpKLk9w6zVKfS9qvP5TkPklOGfPadyf5j/af/yLJ99NMsvxDmk892q5drmdT\na/12di61OiLN7/0H7b7fZZ3nX5yd/z5d4BcAmBlRBgC6aXU0+FaSD456Yq31z5PcLc2yp68n+Wma\ni/q+K8n9aq1PHfHSK7LzY65Xv98Z7fu9O82yqZ8mOTvJXyW5bZKXjNmXnya5b5pI8o32td9K8k9J\nVqZkdtnmRvu05vH1HJ1mCdeXklya5HtJPp7kyyOev3L/p2qtnxqzPQCALevypyMAAExd+wlTX0hy\nsyR/UGv96wXvEgDQUyZlAACu7P5pgsyFGbEsDABgGkQZAIArO7q9Pam9vgwAwEyIMgAArVLKAUke\nGBf4BQDmQJQBANjpqDTX3PtErfXfF70zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo/1/MrL3Cbz9qMUAAAAASUVORK5CYII=\n", | |
|
551 | "text": [ | |||
|
552 | "<matplotlib.figure.Figure at 0x110dd2c50>" | |||
|
553 | ] | |||
504 | } |
|
554 | } | |
505 | ], |
|
555 | ], | |
506 |
"prompt_number": |
|
556 | "prompt_number": 24 | |
507 | } |
|
557 | } | |
508 | ], |
|
558 | ], | |
509 | "metadata": {} |
|
559 | "metadata": {} |
@@ -1,42 +1,37 b'' | |||||
1 |
"""Example of how to use |
|
1 | """Example of how to use matplotlib to plot parallel data. | |
2 |
|
2 | |||
3 | The idea here is to run matplotlib is the same IPython session |
|
3 | The idea here is to run matplotlib is the same IPython session | |
4 | as an ipython parallel Client. That way matplotlib |
|
4 | as an ipython parallel Client. That way matplotlib | |
5 | can be used to plot parallel data that is gathered using |
|
5 | can be used to plot parallel data that is gathered using | |
6 |
a DirectView. |
|
6 | a DirectView. | |
7 |
|
7 | |||
8 | To run this example, first start the IPython controller and 4 |
|
8 | To run this example, first start the IPython controller and 4 | |
9 | engines:: |
|
9 | engines:: | |
10 |
|
10 | |||
11 | ipcluster -n 4 |
|
11 | ipcluster -n 4 | |
12 |
|
12 | |||
13 |
Then start ipython |
|
13 | Then start ipython with matplotlib integration mode:: | |
14 |
|
14 | |||
15 |
ipython - |
|
15 | ipython --matplotlib | |
16 |
|
16 | |||
17 |
Then a simple "run parallel_p |
|
17 | Then a simple "%run parallel_plot.ipy" in IPython will run the | |
18 | example. |
|
18 | example. | |
19 | """ |
|
19 | """ | |
20 |
|
20 | |||
21 | import numpy as N |
|
21 | import matplotlib.pyplot as plt | |
22 | from pylab import * |
|
|||
23 | from IPython.parallel import Client |
|
22 | from IPython.parallel import Client | |
24 |
|
23 | |||
25 | # load the parallel magic |
|
|||
26 | %load_ext parallelmagic |
|
|||
27 |
|
||||
28 | # Get an IPython Client |
|
24 | # Get an IPython Client | |
29 | rc = Client() |
|
25 | rc = Client() | |
30 | v = rc[:] |
|
26 | v = rc[:] | |
31 | v.activate() |
|
|||
32 |
|
27 | |||
33 | # Create random arrays on the engines |
|
28 | # Create random arrays on the engines | |
34 | # This is to simulate arrays that you have calculated in parallel |
|
29 | # This is to simulate arrays that you have calculated in parallel | |
35 | # on the engines. |
|
30 | # on the engines. | |
36 | # Anymore that length 10000 arrays, matplotlib starts to be slow |
|
31 | # Anymore that length 10000 arrays, matplotlib starts to be slow | |
37 |
%px import numpy as |
|
32 | %px import numpy as np | |
38 |
%px x = |
|
33 | %px x = np.random.standard_normal(10000) | |
39 |
%px y = |
|
34 | %px y = np.random.standard_normal(10000) | |
40 |
|
35 | |||
41 | print v.apply_async(lambda : x[0:10]).get_dict() |
|
36 | print v.apply_async(lambda : x[0:10]).get_dict() | |
42 | print v.apply_async(lambda : y[0:10]).get_dict() |
|
37 | print v.apply_async(lambda : y[0:10]).get_dict() | |
@@ -46,4 +41,4 b" x_local = v.gather('x', block=True)" | |||||
46 | y_local = v.gather('y', block=True) |
|
41 | y_local = v.gather('y', block=True) | |
47 |
|
42 | |||
48 | # Make a scatter plot of the gathered data |
|
43 | # Make a scatter plot of the gathered data | |
49 | plot(x_local, y_local,'ro') |
|
44 | plt.plot(x_local, y_local,'ro') |
@@ -7,9 +7,9 b' engines::' | |||||
7 |
|
7 | |||
8 | ipcluster start -n 4 |
|
8 | ipcluster start -n 4 | |
9 |
|
9 | |||
10 |
Then start ipython |
|
10 | Then start ipython with matplotlib integration:: | |
11 |
|
11 | |||
12 |
ipython - |
|
12 | ipython --matplotlib | |
13 |
|
13 | |||
14 | Then a simple "run plotting_frontend.py" in IPython will run the |
|
14 | Then a simple "run plotting_frontend.py" in IPython will run the | |
15 | example. When this is done, all the variables (such as number, downx, etc.) |
|
15 | example. When this is done, all the variables (such as number, downx, etc.) | |
@@ -17,8 +17,7 b' are available in IPython, so for example you can make additional plots.' | |||||
17 | """ |
|
17 | """ | |
18 | from __future__ import print_function |
|
18 | from __future__ import print_function | |
19 |
|
19 | |||
20 | import numpy as N |
|
20 | import matplotlib.pyplot as plt | |
21 | from pylab import * |
|
|||
22 | from IPython.parallel import Client |
|
21 | from IPython.parallel import Client | |
23 |
|
22 | |||
24 | # Connect to the cluster |
|
23 | # Connect to the cluster | |
@@ -44,18 +43,18 b' print("downsampled number: ", sum(d_number))' | |||||
44 | # Make a scatter plot of the gathered data |
|
43 | # Make a scatter plot of the gathered data | |
45 | # These calls to matplotlib could be replaced by calls to pygist or |
|
44 | # These calls to matplotlib could be replaced by calls to pygist or | |
46 | # another plotting package. |
|
45 | # another plotting package. | |
47 | figure(1) |
|
46 | plt.figure(1) | |
48 | # wait for downx/y |
|
47 | # wait for downx/y | |
49 | downx = downx.get() |
|
48 | downx = downx.get() | |
50 | downy = downy.get() |
|
49 | downy = downy.get() | |
51 | scatter(downx, downy) |
|
50 | plt.scatter(downx, downy) | |
52 | xlabel('x') |
|
51 | plt.xlabel('x') | |
53 | ylabel('y') |
|
52 | plt.ylabel('y') | |
54 | figure(2) |
|
53 | plt.figure(2) | |
55 | # wait for downpx/y |
|
54 | # wait for downpx/y | |
56 | downpx = downpx.get() |
|
55 | downpx = downpx.get() | |
57 | downpy = downpy.get() |
|
56 | downpy = downpy.get() | |
58 | scatter(downpx, downpy) |
|
57 | plt.scatter(downpx, downpy) | |
59 | xlabel('px') |
|
58 | plt.xlabel('px') | |
60 | ylabel('py') |
|
59 | plt.ylabel('py') | |
61 | show() |
|
60 | plt.show() |
@@ -193,7 +193,7 b" if __name__ == '__main__':" | |||||
193 | # if ns.save is True, then u_hist stores the history of u as a list |
|
193 | # if ns.save is True, then u_hist stores the history of u as a list | |
194 | # If the partion scheme is Nx1, then u can be reconstructed via 'gather': |
|
194 | # If the partion scheme is Nx1, then u can be reconstructed via 'gather': | |
195 | if ns.save and partition[-1] == 1: |
|
195 | if ns.save and partition[-1] == 1: | |
196 |
import |
|
196 | import matplotlib.pyplot as plt | |
197 | view.execute('u_last=u_hist[-1]') |
|
197 | view.execute('u_last=u_hist[-1]') | |
198 | # map mpi IDs to IPython IDs, which may not match |
|
198 | # map mpi IDs to IPython IDs, which may not match | |
199 | ranks = view['my_id'] |
|
199 | ranks = view['my_id'] | |
@@ -201,5 +201,5 b" if __name__ == '__main__':" | |||||
201 | for idx in range(len(ranks)): |
|
201 | for idx in range(len(ranks)): | |
202 | targets[idx] = ranks.index(idx) |
|
202 | targets[idx] = ranks.index(idx) | |
203 | u_last = rc[targets].gather('u_last', block=True) |
|
203 | u_last = rc[targets].gather('u_last', block=True) | |
204 |
p |
|
204 | plt.pcolor(u_last) | |
205 |
p |
|
205 | plt.show() |
@@ -202,8 +202,8 b" if __name__ == '__main__':" | |||||
202 | # if ns.save is True, then u_hist stores the history of u as a list |
|
202 | # if ns.save is True, then u_hist stores the history of u as a list | |
203 | # If the partion scheme is Nx1, then u can be reconstructed via 'gather': |
|
203 | # If the partion scheme is Nx1, then u can be reconstructed via 'gather': | |
204 | if ns.save and partition[-1] == 1: |
|
204 | if ns.save and partition[-1] == 1: | |
205 |
import |
|
205 | import matplotlib.pyplot as plt | |
206 | view.execute('u_last=u_hist[-1]') |
|
206 | view.execute('u_last=u_hist[-1]') | |
207 | u_last = view.gather('u_last', block=True) |
|
207 | u_last = view.gather('u_last', block=True) | |
208 |
p |
|
208 | plt.pcolor(u_last) | |
209 |
p |
|
209 | plt.show() |
@@ -1,7 +1,7 b'' | |||||
1 | """Manual test for figure.show() in the inline matplotlib backend. |
|
1 | """Manual test for figure.show() in the inline matplotlib backend. | |
2 |
|
2 | |||
3 | This script should be loaded for interactive use (via %load) into a qtconsole |
|
3 | This script should be loaded for interactive use (via %load) into a qtconsole | |
4 |
or notebook initialized with the |
|
4 | or notebook initialized with the inline backend. | |
5 |
|
5 | |||
6 | Expected behavior: only *one* copy of the figure is shown. |
|
6 | Expected behavior: only *one* copy of the figure is shown. | |
7 |
|
7 | |||
@@ -14,7 +14,7 b' https://github.com/matplotlib/matplotlib/issues/835' | |||||
14 | import numpy as np |
|
14 | import numpy as np | |
15 | import matplotlib.pyplot as plt |
|
15 | import matplotlib.pyplot as plt | |
16 |
|
16 | |||
17 | plt.ioff() |
|
17 | plt.ioff() | |
18 | x = np.random.uniform(-5, 5, size=(100)) |
|
18 | x = np.random.uniform(-5, 5, size=(100)) | |
19 | y = np.random.uniform(-5, 5, size=(100)) |
|
19 | y = np.random.uniform(-5, 5, size=(100)) | |
20 | f = plt.figure() |
|
20 | f = plt.figure() |
1 | NO CONTENT: modified file |
|
NO CONTENT: modified file | ||
The requested commit or file is too big and content was truncated. Show full diff |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed | ||
The requested commit or file is too big and content was truncated. Show full diff |
General Comments 0
You need to be logged in to leave comments.
Login now